Xbindkeys

提供: ArchWiki
2020年5月28日 (木) 16:51時点におけるKusanaginoturugi (トーク | 投稿記録)による版 (→‎キーコードの確認: 複数のキーを入力する方法を 英語版 2020-05-02T20:00:06‎ より訳出)
ナビゲーションに移動 検索に移動

関連記事

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

インストール

xbindkeysAUR パッケージをインストールしてください。

設定

ホームディレクトリに .xbindkeysrc という名前のファイルを作成してください:

$ touch ~/.xbindkeysrc

また、次を実行することでサンプルファイルを作成することができます:

$ xbindkeys -d > ~/.xbindkeysrc
ノート: サンプルファイルには Ctrl+f などのバインディングが含まれています。

~/.xbindkeysrc を編集してキーバインドを設定するか、GUI を使って設定を行えます。

ヒント: 変更を加えた後は xbindkeys -p を実行して設定ファイルをリロードすることで変更が適用されます。

ボリューム操作

以下はノートパソコンで Fn キーを使って、pactl コマンドを実行して音量を調整する設定例です。シャープ記号 (#) はコメントとして使えます。

# Increase volume
"pactl set-sink-volume @DEFAULT_SINK@ +1000"
   XF86AudioRaiseVolume
# Decrease volume
"pactl set-sink-volume @DEFAULT_SINK@ -1000"
   XF86AudioLowerVolume
# Mute volume
"pactl set-sink-mute @DEFAULT_SINK@ toggle"
   XF86AudioMute

上記以外の音量操作コマンドは PulseAudio#キーボードのボリュームコントロールALSA#キーボードのボリュームコントロールを見てください。

バックライト操作

画面の明るさを制御するために、キーバインドを定義することもできます。

# Increase backlight
"xbacklight -inc 10"
   XF86MonBrightnessUp
# Decrease backlight
"xbacklight -dec 10"
   XF86MonBrightnessDown

GUI による設定

グラフィカルに設定したい場合 xbindkeys_config-gtk2AUR パッケージをインストールして次のコマンドを実行してください:

$ xbindkeys_config

キーコードの確認

特定のキーのキーコードを確認するには、以下のコマンドを実行:

$ xbindkeys --keys

または、複数のキーを取得するには、次のようにします:

$ xbindkeys --multikey

空のウィンドウが開きます。コマンドを割り当てたいキーを押すと xbindkeys~/.xbindkeysrc に記述することが出来るスニペットを出力します。例えば、空のウィンドウが開いた時に、Alt+o を押すと以下のように出力されます (出力結果は異なることがあります):

"(Scheme function)"
    m:0x8 + c:32
    Alt + o

最初の行がコマンドです。2番目の行には xev による状態 (0x8) とキーコード (32) が含まれます。3番目の行はそのキーコードと関連付けられているキーシムです。上記の出力を使う場合、後ろの2行のうち、どちらかを ~/.xbindkeysrc にコピーして "(Scheme function)" を実行したいコマンドに置き換えます。

ヒント: xbindkeys -mk を使うことで複数のキーを押してもプロンプトが閉じないようにすることができます。終了するときは q を押して下さい。

マウスのボタンを確認したい場合は xev を使います。[1] を見てください。

変更の永続化

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

xbindkeys

ウィンドウマネージャや DE を起動する行の前に書いて下さい。

マルチメディアキーのシミュレート

XF86Audio* などのマルチメディアキー [2] は主要な 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 を使ってこれに対応するスクリプトです [3]

#!/bin/sh
echo 'KeyStrRelease Super_L KeyStrRelease minus' 

上記の設定で XF86AudioLowerVolume を使うことができますが (Super+minus を使用)、Super キーを話さずに (ボリュームボタンを叩くように) 何度も呼び出すことはできません。その場合、以下の行をスクリプトの末尾に追加してください:

echo 'KeyStrPress Super_L' | xmacroplay :0

スクリプトを修正した場合、キーを素早く押すことで Super_L キーがオンのままになることがあります。それによって面白い副作用が発生することがあります。状態を解除するにはもう一度キーを入力するか、ボリュームアップ・ダウンのマルチタップを気にしない場合は元のスクリプトを使ってください。

上記の設定は全ての XF86 マルチメディアキーに適用できます (例: XF86AudioRaiseVolume, XF86AudioLowerVolume, XF86AudioPlay, XF86AudioPrev, XF86AudioNext)。

トラブルシューティング

何らかの理由で、~/.xbindkeysrc に設定したホットキーが使えない場合、ターミナルを開いて次を入力してください:

$ xbindkeys -n

動作しないキーを押すと、xbindkeys のエラーが表示されます (例: コマンドやキーコードが間違っている、など)。

コマンドラインの xdotool でキーバインドのコマンドが動作するのにホットキーでは有効にならない場合、ホットキーに "+ Release" を追加してみてください (特に GNOME でこの問題が発生します):

"xdotool key --clearmodifiers XF86AudioPlay"
    Mod2 + F7 + Release

上記の設定では F7 キーで音楽を再生・停止します。"xdotool" コマンドはコマンドラインで動作しますが "+ Release" を取ると xbindkeys では機能しなくなります。