Closed4

skhd チートシート

HansyHansy

https://github.com/koekeishiya/skhd
の統括的なマニュアルがぱっと見で見つからない(特に日本語情報)のでまとめてみたいと思います。
初めは自分の使う部分からまとめていくことになると思うので、随時更新していきたいと思います。

HansyHansy

KeySym キーワード

ソース : https://github.com/koekeishiya/skhd/issues/1
skhd --observeskhd -o で確認可能

Modifiers (<mod>)

WindowsやLinuxからMacに切り替えた人は、ctrlcmdが分かれていることに注意。

キーワード 補足
fn 地球儀(🌐)キー
cmd command(⌘)キー
二つある場合は両方のキーで反応する
lcmd commandキー
rcmd commandキー
shift
lshift
rshift
alt option(⌥)キー。
lalt
ralt
ctrl control(^)キー。
lctrl
rctrl
hyper cmd + shift + alt + ctrl の短縮系
これらを同時に押した状態と同義
meh shift + alt + ctrl の短縮系
これらを同時に押した状態と同義

キーリテラル

キーワード 対応するキー
return kVK_Return
tab kVK_Tab
space kVK_Space
backspace kVK_Delete
escape kVK_Escape

fnキーと同時に使うことの出来ないキー

キーワード 対応するキー
delete kVK_ForwardDelete
home kVK_Home
end kVK_End
pageup kVK_PageUp
pagedown kVK_PageDown
insert kVK_Help
left kVK_LeftArrow
right kVK_RightArrow
up kVK_UpArrow
down kVK_DownArrow
f1 kVK_F1
f2 kVK_F2
f3 kVK_F3
f4 kVK_F4
f5 kVK_F5
f6 kVK_F6
f7 kVK_F7
f8 kVK_F8
f9 kVK_F9
f10 kVK_F10
f11 kVK_F11
f12 kVK_F12
f13 kVK_F13
f14 kVK_F14
f15 kVK_F15
f16 kVK_F16
f17 kVK_F17
f18 kVK_F18
f19 kVK_F19
f20 kVK_F20
キーワード 対応するキー
sound_up NX_KEYTYPE_SOUND_UP
sound_down NX_KEYTYPE_SOUND_DOWN
mute NX_KEYTYPE_MUTE
play NX_KEYTYPE_PLAY
previous NX_KEYTYPE_PREVIOUS
next NX_KEYTYPE_NEXT
rewind NX_KEYTYPE_REWIND
fast NX_KEYTYPE_FAST
brightness_up NX_KEYTYPE_BRIGHTNESS_UP
brightness_down NX_KEYTYPE_BRIGHTNESS_DOWN
illumination_up NX_KEYTYPE_ILLUMINATION_UP
illumination_down NX_KEYTYPE_ILLUMINATION_DOWN

その他キー

キーワード 対応するキー 備考
0x32 ~ 筆者環境のキーコード(M2;JIS)では0x18でした

キーコード

キーコード画像

HansyHansy

ドラフトですが、一旦上げておきます。

設定ファイル

デフォルトの設定ファイルは次のいずれかの場所にあり、数字の優先順に確認されます。

  1. $XDG_CONFIG_HOME/skhd/skhdrc
  2. $HOME/.config/skhd/skhdrc
  3. $HOME/.skhdrc

異なる場所に設定ファイルを配置したい場合は、--config-cのオプションを使用してください。
サンプルの設定ファイルはこちらにあります
すべての組み込み修飾子とリテラル キーワードのリストは、こちらにあります

ホットキーの記述

hotkey       = <mode> '<' <action> | <action>

mode         = 'モード名' | <mode> ',' <mode>

action       = <keysym> '[' <proc_map_lst> ']' | <keysym> '->' '[' <proc_map_lst> ']'
               <keysym> ':' <command>          | <keysym> '->' ':' <command>
               <keysym> ';' <mode>             | <keysym> '->' ';' <mode>

keysym       = <mod> '-' <key> | <key>
mod          = 'modifier keyword' | <mod> '+' <mod>
key          = <literal> | <keycode>
literal      = '単一文字または組み込みキーワード'
keycode      = 'apple keyboard kVK_<Key> values (0x3C)'

proc_map_lst = * <proc_map>
proc_map     = <string> ':' <command> | <string>     '~' |
               '*'      ':' <command> | '*'          '~'

string       = '"' '文字列' '"'
command      = コマンドは「$SHELL -c」を通じて実行され、有効なシェル構文に従う。
               $SHELL 環境変数が設定されていない場合は、デフォルトで「/bin/bash」になる。
               bash を使用する場合、";"区切り文字を指定してコマンドを連鎖させることができる。
               コマンドを複数行に渡って記述するには、末尾に"\"を追加します。
               EOL はバインドの終了を示す。

->           = キープレスは skhd によって消費されない (訳註: よく意味がわかってないです)
*            = <proc_map_lst> で指定されていないすべてのアプリケーションに一致する
~            = <proc_map> で指定されている場合、アプリケーションはバインドされておらず、
               キー入力は通常どおり転送されます。

モードの設定

mode_decl = '::' <name> '@' ':' <command> | '::' <name> ':' <command> |
            '::' <name> '@'               | '::' <name>

name      = このモードの名前

@         = アクションにバインドされているかどうかに関係なくキー入力をキャプチャする

command   = コマンドは「$SHELL -c」を通じて実行され、有効なシェル構文に従う。
            $SHELL 環境変数が設定されていない場合は、デフォルトで「/bin/bash」になる。
            bash を使用する場合、";"区切り文字を指定してコマンドを連鎖させることができる。
            コマンドを複数行に渡って記述するには、末尾に"\"を追加します。
            EOL はバインドの終了を示す。

その他オプション

# 追加の設定ファイルとして含めるファイルを指定する。
# ファイル名が"/"で始まる場合は絶対パスとして扱われる。
# それ以外の場合、ファイルはロード元の設定ファイルのパスを基準とする。
.load "/Users/Koe/.config/partial_skhdrc"
.load "partial_skhdrc"

# 列挙されたプロセスのイベントを監視しないようにする。
.blacklist [
    "terminal"
    "qutebrowser"
    "kitty"
    "google chrome"
]
HansyHansy

コマンドライン

ソース : https://github.com/koekeishiya/skhd#usage

skhd option [args]で色々行える。

Options
-V | --verbose: デバッグ情報を出力
-P | --profile: プロファイル情報を出力
-v | --version: バージョン情報を標準出力
-c | --config: 設定ファイルの場所を指定
    skhd -c ~/.skhdrc
-o | --observe: キーコードと修飾キーのイベントを表示。Ctrl+C で停止。(補足: 自身がプロセスを所有していなくても実行できます。)
-r | --reload: 起動中のskhdに設定の再読み込みを要求。(補足: 自身がプロセスを所有していなくても実行できます。)
-h | --no-hotload: 設定ファイルのホットリロードを停止
-k | --key: キー押下をエミュレート。(ホットキーを指定するのと同じ形式で記述)
    skhd -k "shift + alt - 7"
-t | --text: 1行のテキストを合成。(補足: 利用シーンがよくわからない...)
    skhd -t "hello, worldシ"
エラーが出た場合

skhd: could not lock pid-file! abort..というエラーは、skhdがすでに起動しており、自身がプロセスを確保できていないために出るそうです。
一度skhdを停止し、手動で実行することでオプションを使うことができます。
ソース : https://github.com/koekeishiya/skhd/issues/243

独り言

どうやら、この辺のオプションは実行時に指定してエラーが出た時とか開発をする際のログを取るためにあるっぽい?
詳しいところはskhdの開発をしていないのでわからないが、複数プロセスを起動できないように制限している実装があるみたいなので、おそらくあってるんじゃないかなと。

このスクラップは2024/02/16にクローズされました