グローバルショートカットを無視するアプリケーション固有のショートカットを定義する方法は?

グローバルショートカットを無視するアプリケーション固有のショートカットを定義する方法は?

Windowsには、すべてのアプリケーションのアプリケーション固有のショートカットを定義できるAutoHotkeyというツールがあります。私はLinuxでも同じことをしたいと思います。言語切り替え用のグローバルショートカット(CapsLockであり、システム設定で定義されています)があり、特定のアプリケーションでこのショートカットを無視したいと思います。

私はGNOMEでUbuntu 14.04を使用しています。私はいくつかのグローバルショートカットを実装するためにxbindkeysを使用しています。

ベストアンサー1

十分に進化したウィンドウマネージャ(Sawfish、Awesome、Fvwmなど)を使用すると、各ウィンドウのキーバインディングを定義できます。これは、MetacityやMutter(Gnomeのデフォルト)などのデフォルトのウィンドウマネージャの場合には該当しません。いくつかのデフォルト設定に固執するのではなく、必要に応じてウィンドウ環境を構成するには、高度なウィンドウマネージャを使用することをお勧めします。 SawfishやFvwmを含む多くのウィンドウマネージャでは、Gnomeを引き続き使用できます。

ウィンドウマネージャとは無関係にキーバインディングを設定するには、この目的のために設計されたプログラムを使用できます。xbindkeys。アクティブウィンドウによって異なる動作をするシェルスクリプトをキーバインディングとして呼び出すようにします。あなたはそれを使用することができますxdotoolアクティブなウィンドウID(およびタイトル)を検索し、次のような他のツールを使用します。xpropウィンドウに関する詳細情報を入手してください。

#!/bin/sh
wid="$(xdotool getactivewindow)"
class="$(xprop -id "$wid" '$1' WM_CLASS)"; class="${class#*\"}"; class="${class%\"}"
case "$class" in
  Myapp) do something;;
  *) do something else;;
esac

おすすめ記事