web-dev-qa-db-ja.com

グローバルキー押下を検出する方法

私は、任意のソフトウェアを起動するように構成できる特別なキーを持つAsusラップトップを持っています(少なくともWindowsでは)。

一般的な質問は次のとおりです。キーの押下を(グローバルに)検出するにはどうすればよいですか?

次に、ユーザーがこのキーを押したことをどのように検出できますか?

5
Ionică Bizău

私は通常、xevを使用してキーのスキャンコードを決定し、 xdotool または XBindKeys のいずれかを使用して必要なアクションにマップします。

xev

$ xev | grep -A2 --line-buffered '^KeyRelease' \
    | sed -n '/keycode /s/^.*keycode \([0-9]*\).* (.*, \(.*\)).*$/\1 \2/p'

上記のxevコマンドを実行すると、小さな白いウィンドウがポップアップ表示されます。このウィンドウの上にマウスを置いて、問題のキーを押します。さまざまなキーを押すと、キーの名前がターミナルに表示されます。

スクリーンショット

ss of xev dialog

キーを何か便利なものにマッピングする

たとえば、xbindkeysを使用してコマンドを起動するショートカットキーの組み合わせを作成できます。私はこの目的のためにGNOME3.8.4で XBindKeys を正常に使用しています。

私の使用は控えめですが、特定のディレクトリを開いた状態でNautilusを起動するためのキーボードショートカットを作成するのが好きです。

まず、パッケージxbindkeysがインストールされていることを確認する必要があります。

次に、次のコマンドを1回だけ実行して、テンプレートxbindkeys構成ファイルを作成する必要があります。

$ xbindkeys --defaults > /home/saml/.xbindkeysrc

作成したファイルを使用して、テキストエディターで開き、次のようなルールを追加できます。

"nautilus --browser /home/saml/projects/path/to/some/dir"
  Mod4+shift + q

上記の変更が行われたので、すでに実行されている場合はxbindkeysを強制終了してから、再起動する必要があります。

$ killall xbindkeys
$ xbindkeys

これを実行すると、いつでも入力できます Mod+Shift+Q Nautilusが開き、対応するフォルダーが開きます。

GNOMEのキーボードアプレットの使用

設定(システム設定Keyboard)を実行する場合は、Shortcutsタブをクリックし、ブラウザの新しいカスタムショートカットを追加します。

ss #1

図のように手順1〜5を使用して、コマンドを特殊キーにマッピングすることもできます。

11
slm