「Sxhkd」の版間の差分
(同期) |
Kusanaginoturugi (トーク | 投稿記録) (校正(でき・出来)) |
||
(3人の利用者による、間の9版が非表示) | |||
1行目: | 1行目: | ||
+ | {{Lowercase title}} |
||
− | [[Category:キーボード]] |
||
+ | [[Category:キーボード設定]] |
||
[[Category:X サーバー]] |
[[Category:X サーバー]] |
||
[[en:Sxhkd]] |
[[en:Sxhkd]] |
||
+ | [[es:Sxhkd]] |
||
+ | [[ru:Sxhkd]] |
||
{{Related articles start}} |
{{Related articles start}} |
||
{{Related|Xbindkeys}} |
{{Related|Xbindkeys}} |
||
{{Related|Xmodmap}} |
{{Related|Xmodmap}} |
||
{{Related articles end}} |
{{Related articles end}} |
||
− | [https://github.com/baskerville/sxhkd sxhkd の |
+ | [https://github.com/baskerville/sxhkd sxhkd] は、[[bspwm]] の開発者による単純な [[X]] ホットキーデーモンであり、コマンドを実行して入力イベントに反応します。 |
− | :'' sxhkd は強力でコンパクトな設定構文を備えたシンプルな X ホットキーデーモンです。'' |
||
==インストール== |
==インストール== |
||
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|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
という形で範囲を指定できます。A や Z は英数字です。
実際に実行されるのは 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_L
は super
とは違います。)
使用方法
設定後、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
参照
- 公式ウェブサイト - includes configuration options, example bindings, and source code.
- ArchLinux forum thread