「Sxhkd」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(→‎設定: 同期)
(→‎例: キーの1回押しでコマンドをバインドするを翻訳して追加)
46行目: 46行目:
 
xte "sleep 3" "keydown Alt_R" "keydown F2" "keyup Alt_R" "keyup F2"
 
xte "sleep 3" "keydown Alt_R" "keydown F2" "keyup Alt_R" "keyup F2"
 
}}
 
}}
  +
  +
==== キーの1回押しでコマンドをバインドする ====
  +
  +
Windows で {{ic|Super}} キーでスタートメニューを開くように、1回のキー入力にコマンドをバインドしたいユーザがいるかもしれません。sxhkd では、次のように、1つの keysym のキープレスとキーリリースイベントからなるコードチェーンにバインドすることでこれを実現します。
  +
  +
{{hc|$XDG_CONFIG_HOME/sxhkd/sxhkdrc|
  +
# Program launcher
  +
Super_L; @Super_L
  +
rofi -show drun
  +
}}
  +
  +
この複雑なパターンが必要なのは、明示的なコードチェーン (すなわち、単一の {{ic|@Super_L}}) がなければ、sxhkd はキーを ''どんな'' リリースでも、たとえそのキーが他のコードで使われていてもバインドをトリガしてしまうからです。さらに、sxhkd は修飾子のための {{ic|@}} シンボル (キーの解放を表す) の使用をサポートしていないので、修飾子の代わりに keysyms を使う必要があります
  +
({{ic|Super_L}} は {{ic|super}} とは違います。)
   
 
== 使用方法 ==
 
== 使用方法 ==

2023年3月1日 (水) 21:05時点における版

関連記事

sxhkd は、bspwm の開発者による単純な X ホットキーデーモンであり、コマンドを実行して入力イベントに反応します。

インストール

sxhkd または sxhkd-gitAURインストールしてください。

設定

sxhkd のデフォルトの設定ファイルは $XDG_CONFIG_HOME/sxhkd/sxhkdrc です。-c オプションを使うことで他のファイルを設定ファイルとして指定することもできます。

設定ファイルの各行は以下のように処理されます:

  • 行頭が # の場合、無視されます。
  • 1つ以上の空白コマンドから始まっている場合、コマンドとして読み取られます。
  • それ以外の場合、ホットキーとして解釈されます: キーの名前は空白か + 文字で区切ります。

構文:

[MODIFIER + ]*[@|!]KEYSYM
    COMMAND

MODIFIER は次の名前のどれかになります: super, hyper, meta, alt, control, ctrl, shift, mode_switch, lock, mod1, mod2, mod3, mod4, mod5@ がキーシムの最初に追加されている場合、キーのリリース時にコマンドが実行されます。付いていない場合はキーを押した時に実行されます。! がキーシムの先頭に付いている場合、コマンドはマウスを動かした時に実行されます。コマンドには2つの整数値変換仕様を含める必要があり、ルートウィンドウからのポインタの相対座標に置き換わります (このタイプのホットキーで使えるボタンキーシムは: button1, ..., button5)。KEYSYM の名前は xev で取得できます。

特殊なキーシム名を使用することでマウスのホットキーを定義することができます: button1, button2, button3, ..., button24。ホットキーはシーケンスの形で記述することができ (STRING_1,...,STRING_N)、この場合、コマンドも N 個の要素からなるシーケンスを記述する必要があります: 2つのシーケンスを合わせて N 個のホットキーが出来ます。さらに、シーケンスには A-Z という形で範囲を指定できます。AZ は英数字です。

実際に実行されるのは SHELL -c COMMAND なので、COMMAND に環境変数を設定することができます。SHELL は次のリストで定義された最初の環境変数になります: SXHKD_SHELL, SHELL。sxhkd が SIGUSR1 シグナルを受け取った場合、設定ファイルがリロードされます。

$XDG_CONFIG_HOME/sxhkd/sxhkdrc
# On mouse button 1 press Alt_R+F1
button1
    xte "keydown Alt_R" "keydown F1" "keyup Alt_R" "keyup F1"

# On mouse button 2 pause 3 seconds then press Alt_R+F2
button2
    xte "sleep 3" "keydown Alt_R" "keydown F2" "keyup Alt_R" "keyup F2"

キーの1回押しでコマンドをバインドする

Windows で Super キーでスタートメニューを開くように、1回のキー入力にコマンドをバインドしたいユーザがいるかもしれません。sxhkd では、次のように、1つの keysym のキープレスとキーリリースイベントからなるコードチェーンにバインドすることでこれを実現します。

$XDG_CONFIG_HOME/sxhkd/sxhkdrc
# Program launcher
Super_L; @Super_L
    rofi -show drun

この複雑なパターンが必要なのは、明示的なコードチェーン (すなわち、単一の @Super_L) がなければ、sxhkd はキーを どんな リリースでも、たとえそのキーが他のコードで使われていてもバインドをトリガしてしまうからです。さらに、sxhkd は修飾子のための @ シンボル (キーの解放を表す) の使用をサポートしていないので、修飾子の代わりに keysyms を使う必要があります (Super_Lsuper とは違います。)

使用方法

設定後、sxhkd を 自動起動 に設定したい場合、詳細については、デスクトップ環境またはウィンドウマネージャーに対応する記事を参照してください。

デスクトップ環境が Desktop Application Autostart Specification をサポートしている場合は、sxhkd.desktop ファイルを作成して sxhkd を起動できます。適切なディレクトリで:

~/.config/autostart/sxhkd.desktop
[Desktop Entry]
Name=sxhkd
Comment=Simple X hotkey daemon
Exec=/usr/bin/sxhkd
Terminal=false
Type=Application

参照