「Sxhkd」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(序文の情報を更新)
(校正(でき・出来))
 
(他の1人の利用者による、間の6版が非表示)
3行目: 3行目:
 
[[Category:X サーバー]]
 
[[Category:X サーバー]]
 
[[en:Sxhkd]]
 
[[en:Sxhkd]]
  +
[[es:Sxhkd]]
  +
[[ru:Sxhkd]]
 
{{Related articles start}}
 
{{Related articles start}}
 
{{Related|Xbindkeys}}
 
{{Related|Xbindkeys}}
13行目: 15行目:
   
 
==設定==
 
==設定==
 
===Sxhkd 設定ファイル===
 
   
 
sxhkd のデフォルトの設定ファイルは {{ic|$XDG_CONFIG_HOME/sxhkd/sxhkdrc}} です。{{ic|-c}} オプションを使うことで他のファイルを設定ファイルとして指定することもできます。
 
sxhkd のデフォルトの設定ファイルは {{ic|$XDG_CONFIG_HOME/sxhkd/sxhkdrc}} です。{{ic|-c}} オプションを使うことで他のファイルを設定ファイルとして指定することもできます。
31行目: 31行目:
 
{{ic|MODIFIER}} は次の名前のどれかになります: {{ic|super}}, {{ic|hyper}}, {{ic|meta}}, {{ic|alt}}, {{ic|control}}, {{ic|ctrl}}, {{ic|shift}}, {{ic|mode_switch}}, {{ic|lock}}, {{ic|mod1}}, {{ic|mod2}}, {{ic|mod3}}, {{ic|mod4}}, {{ic|mod5}}。{{ic|@}} がキーシムの最初に追加されている場合、キーのリリース時にコマンドが実行されます。付いていない場合はキーを押した時に実行されます。{{ic|!}} がキーシムの先頭に付いている場合、コマンドはマウスを動かした時に実行されます。コマンドには2つの整数値変換仕様を含める必要があり、ルートウィンドウからのポインタの相対座標に置き換わります (このタイプのホットキーで使えるボタンキーシムは: {{ic|button1}}, ..., {{ic|button5}})。{{ic|KEYSYM}} の名前は {{ic|xev}} で取得できます。
 
{{ic|MODIFIER}} は次の名前のどれかになります: {{ic|super}}, {{ic|hyper}}, {{ic|meta}}, {{ic|alt}}, {{ic|control}}, {{ic|ctrl}}, {{ic|shift}}, {{ic|mode_switch}}, {{ic|lock}}, {{ic|mod1}}, {{ic|mod2}}, {{ic|mod3}}, {{ic|mod4}}, {{ic|mod5}}。{{ic|@}} がキーシムの最初に追加されている場合、キーのリリース時にコマンドが実行されます。付いていない場合はキーを押した時に実行されます。{{ic|!}} がキーシムの先頭に付いている場合、コマンドはマウスを動かした時に実行されます。コマンドには2つの整数値変換仕様を含める必要があり、ルートウィンドウからのポインタの相対座標に置き換わります (このタイプのホットキーで使えるボタンキーシムは: {{ic|button1}}, ..., {{ic|button5}})。{{ic|KEYSYM}} の名前は {{ic|xev}} で取得できます。
   
特殊なキーシム名を使用することでマウスのホットキーを定義することができます: {{ic|button1}}, {{ic|button2}}, {{ic|button3}}, ..., {{ic|button24}}。ホットキーはシーケンスの形で記述することができ ({{ic|STRING_1}},...,{{ic|STRING_N}})、この場合、コマンドも ''N'' 個の要素からなるシーケンスを記述する必要があります: 2つのシーケンスを合わせて ''N'' 個のホットキーが出来ます。さらに、シーケンスには {{ic|A-Z}} という形で範囲を指定できます。''A'' や ''Z'' は英数字です。
+
特殊なキーシム名を使用することでマウスのホットキーを定義することができます: {{ic|button1}}, {{ic|button2}}, {{ic|button3}}, ..., {{ic|button24}}。ホットキーはシーケンスの形で記述することができ ({{ic|STRING_1}},...,{{ic|STRING_N}})、この場合、コマンドも ''N'' 個の要素からなるシーケンスを記述する必要があります: 2つのシーケンスを合わせて ''N'' 個のホットキーができます。さらに、シーケンスには {{ic|A-Z}} という形で範囲を指定できます。''A'' や ''Z'' は英数字です。
   
 
実際に実行されるのは {{ic|SHELL -c COMMAND}} なので、{{ic|COMMAND}} に環境変数を設定することができます。{{ic|SHELL}} は次のリストで定義された最初の環境変数になります: {{ic|SXHKD_SHELL}}, {{ic|SHELL}}。sxhkd が {{ic|SIGUSR1}} シグナルを受け取った場合、設定ファイルがリロードされます。
 
実際に実行されるのは {{ic|SHELL -c COMMAND}} なので、{{ic|COMMAND}} に環境変数を設定することができます。{{ic|SHELL}} は次のリストで定義された最初の環境変数になります: {{ic|SXHKD_SHELL}}, {{ic|SHELL}}。sxhkd が {{ic|SIGUSR1}} シグナルを受け取った場合、設定ファイルがリロードされます。
   
  +
=== 例 ===
===Systemd サービスファイル===
 
   
  +
{{hc|$XDG_CONFIG_HOME/sxhkd/sxhkdrc|
使用するユーザーで systemd サービスファイルを作成:
 
  +
# 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
{{hc|%HOME/.config/systemd/user/sxhkd.service|2=
 
  +
button2
[Unit]
 
  +
xte "sleep 3" "keydown Alt_R" "keydown F2" "keyup Alt_R" "keyup F2"
Description=Simple X Hotkey Daemon
 
  +
}}
Documentation=man:sxhkd(1)
 
BindsTo=xorg.service
 
After=xorg.service
 
   
  +
==== キー1回押しコマンドをバインドする ====
[Service]
 
ExecStart=/usr/bin/sxhkd
 
ExecReload=/usr/bin/kill -SIGUSR1 $MAINPID
 
   
  +
Windows で {{ic|Super}} キーでスタートメニューを開くように、1回のキー入力にコマンドをバインドしたいユーザがいるかもしれません。sxhkd では、次のように、1つの keysym のキープレスとキーリリースイベントからなるコードチェーンにバインドすることでこれを実現します。
[Install]
 
  +
WantedBy=graphical.target
 
  +
{{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}} とは違います。)
 
# systemctl --user enable sxhkd.service
 
# systemctl --user start sxhkd.service
 
   
 
== 使用方法 ==
 
== 使用方法 ==
sxhkd を設定したら[[自動起動]]するようにしてください。
 
{{Tip|[[systemd]] サービスファイルが [https://github.com/baskerville/sxhkd/blob/master/contrib/systemd/sxhkd.service こちら] にあります。}}
 
 
=== 例 ===
 
 
{{ic|$XDG_CONFIG_HOME/sxhkd/sxhkdrc}} を編集:
 
   
  +
設定後、sxhkd を [[自動起動]] に設定したい場合、詳細については、デスクトップ環境またはウィンドウマネージャーに対応する記事を参照してください。
# On mouse button 1 press Alt_R+F1
 
button1
 
xte "keydown Alt_R" "keydown F1" "keyup Alt_R" "keyup F1"
 
# On mosue button 2 pause 3 seconds then press Alt_R+F2
 
button2
 
xte "sleep 3" "keydown Alt_R" "keydown F2" "keyup Alt_R" "keyup F2"
 
   
  +
デスクトップ環境が [https://specifications.freedesktop.org/autostart-spec/autostart-spec-latest.html Desktop Application Autostart Specification] をサポートしている場合は、{{ic|sxhkd.desktop}} ファイルを作成して sxhkd を起動できます。適切なディレクトリで:
ユーザーの sxhkd サービスを再起動:
 
   
  +
{{hc|head=~/.config/autostart/sxhkd.desktop|output=[Desktop Entry]
# systemctl --user restart sxhkd.service
 
  +
Name=sxhkd
  +
Comment=Simple X hotkey daemon
  +
Exec=/usr/bin/sxhkd
  +
Terminal=false
  +
Type=Application}}
   
 
== 参照 ==
 
== 参照 ==

2024年7月10日 (水) 20:34時点における最新版

関連記事

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

参照