Xbindkeys

提供: ArchWiki
2015年7月6日 (月) 00:26時点におけるKusakata (トーク | 投稿記録)による版
ナビゲーションに移動 検索に移動

関連記事

Xbindkeys はコマンドをキーボードの特定のキーやキーの組み合わせに結びつけることができるプログラムです。Xbindkeys はマルチメディアキーを処理できます。ウィンドウマネージャやデスクトップ環境に依存しないので手軽に使うことが可能です。

インストール

Xbindkeys は公式リポジトリxbindkeys パッケージでインストールできます。

GUI を使いたい場合は、AURxbindkeys_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
ヒント: xbindkeys -mk を使うことで複数のキーを押してもプロンプトが閉じないようにすることができます。終了するときは q を押して下さい。

GUI による設定

xbindkeys_configAUR パッケージをインストールしたら、次を実行:

$ xbindkeys_config

使用方法

キーの設定ができたら、xprofilexinitrc ファイルを編集して以下を記述してください (どちらのファイルを使用するかはウィンドウマネージャによって変わります):

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 パッケージの xmacroxmodmap を使ってこれに対応するスクリプトです [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 のエラーが表示されます (例: コマンドやキーコードが間違っている、など)。