Xbindkeys
Xbindkeys はコマンドをキーボードの特定のキーやキーの組み合わせに結びつけることができるプログラムです。Xbindkeys はマルチメディアキーを処理できます。ウィンドウマネージャやデスクトップ環境に依存しないので手軽に使うことが可能です。
インストール
Xbindkeys は公式リポジトリの xbindkeys パッケージでインストールできます。
GUI を使いたい場合は、AUR に xbindkeys_configAUR パッケージがあります。
設定
ホームディレクトリに .xbindkeysrc
という名前のファイルを作成してください:
$ touch ~/.xbindkeysrc
また、次を実行することでサンプルファイルを作成することができます:
$ xbindkeys -d > ~/.xbindkeysrc
~/.xbindkeysrc
を編集してキーバインドを設定するか、GUI を使って設定を行えます。
Xbindkeysrc
設定ファイルのエントリの形式を見るには、次のコマンドを実行:
$ xbindkeys -k
空のウィンドウがポップアップします。コマンドに割り当てたいキーを押すと xbindkeys は ~/.xbindkeysrc
に記述することが出来るスニペットを出力します。例えば、空のウィンドウが開いた時に、Alt+o
を押すと以下のように出力されます (出力結果は異なることがあります):
"(Scheme function)" m:0x8 + c:32 Alt + o
最初の行がコマンドです。2番目の行には xev
による状態 (0x8) とキーコード (32) が含まれます。3番目の行はそのキーコードと関連付けられているキーシムです。上記の出力を使う場合、後ろの2行のうち、どちらかを ~/.xbindkeysrc
にコピーして "(Scheme function)" を実行したいコマンドに置き換えます。以下はノートパソコンで Fn キーを使って pamixerAUR コマンドを実行して音量を調整する設定例です。シャープ記号 (#) はコメントとして使えます。
# Increase volume "pamixer --increase 5" XF86AudioRaiseVolume
# Decrease volume "pamixer --decrease 5" m:0x0 + c:122
または:
"pamixer --decrease 5" XF86AudioLowerVolume
また、pamixerAUR の代わりに pactl を使って PulseAudio を制御しボリュームレベルを変更することも可能です (上記の pamixer コマンドを以下のコマンドで置き換え):
pactl set-sink-volume 0 +2% pactl set-sink-volume 0 -2% pactl set-sink-mute 0 toggle
sink の番号を固定して設定する代わりに @DEFAULT_SINK@
を使うこともできます:
pactl set-sink-volume @DEFAULT_SINK@ +2% pactl set-sink-volume @DEFAULT_SINK@ -2% pactl set-sink-mute @DEFAULT_SINK@ toggle
(alsa-utils パッケージに入っている) amixer を使う方法もあります:
amixer -c 1 set Master 5+ amixer -c 1 set Master 5- amixer -c 1 set Master toggle
GUI による設定
xbindkeys_configAUR パッケージをインストールしたら、次を実行:
$ xbindkeys_config
使用方法
キーの設定ができたら、xprofile や xinitrc ファイルを編集して以下を記述してください (どちらのファイルを使用するかはウィンドウマネージャによって変わります):
xbindkeys
ウィンドウマネージャや DE を起動する行の前に書いて下さい。
マルチメディアキーのシミュレート
XF86Audio* などのマルチメディアキー [1] は主要な DE なら大抵は認識されます。マルチメディアキーが存在しないキーボードを使っている場合、他のキーで同じような動作をするようにシミュレートできます:
# Decrease volume on pressing Super-minus "amixer set Master playback 1-" m:0x50 + c:20 Mod2+Mod4 + minus
実際にキーを呼び出すために xdotool (公式リポジトリ) や xmacroAUR (AUR) などのツールを使うことができます。残念ながら、修飾キー (Super や Shift など) を押している場合、X には Super-XF86AudioLowerVolume
のように認識されるため動作しません。以下は xorg-server-utils パッケージの xmacro と xmodmap を使ってこれに対応するスクリプトです [2]。
#!/bin/sh echo 'KeyStrRelease Super_L KeyStrRelease minus'
This works for calling XF86AudioLowerVolume once (assuming you are using Super+minus
), but repeatedly calling it without releasing the Super key (like tapping on a volume button) does not work. If you would like it to work that way, add the following line to the bottom of the script.
echo 'KeyStrPress Super_L' | xmacroplay :0
With this modified script, if you press the key combination fast enough your Super_L key will remain 'on' till the next time you hit it, which may result in some interesting side-effects. Just tap it again to remove that state, or use the original script if you want things to 'just work' and do not mind not multi-tapping on volume up/down.
These instructions are valid for pretty much any one of the XF86 multimedia keys (important ones would be XF86AudioRaiseVolume, XF86AudioLowerVolume, XF86AudioPlay, XF86AudioPrev, XF86AudioNext).
トラブルシューティング
何らかの理由で、~/.xbindkeysrc
に設定したホットキーが使えない場合、ターミナルを開いて次を入力してください:
$ xbindkeys -n
動作しないキーを押すと、xbindkeys のエラーが表示されます (例: コマンドやキーコードが間違っている、など)。