xremapでSandS
ちょっと前にSandSという記事を書いたが,Linux系のシステム用にもうちょっと良い感じの方法を見つけたのでメモしておく。
ここではxremapというOSSを使うが,動作させる為に予めカーネルでuinput (CONFIG_INPUT_UINPUT
)を有効化する必要がある。
𝑋𝑟𝑒𝑚𝑎𝑝 ⌨️ - https://github.com/k0kubun/xremap
まずはxremapを手元のPCにインストールするところから。
僕はGentoo使いなのでpycargoebuild
にebuildを書いてもらった。
xremapには動作するプラットフォームを選択するための相互に排他的なビルドオプションがある。
AURではこれをオプションごとに別名のパッケージで扱っているようだ。
modmap:
- remap:
CapsLock: Ctrl_L
- name: SandS
remap:
Space: [Shift_L, Space]
上記の設定によりSandSを実現できる。 適当なファイルに保存した後,下記のコマンドにより起動する。
% xremap --watch=device /path/to/config.yml
コマンド実行時に権限で怒られるときは,自分をinput
グループに追加した後,以下のようなudevルールを作成すると良い。
KERNEL=="uinput", GROUP="input", TAG+="uaccess"
これだけ。
あとはお好みで自動起動を設定する。 ここではOpenRCの例を示す。
/etc/init.d/xremap
#!/sbin/openrc-run
command="/usr/bin/xremap"
command_args="--watch=device,config ${config}"
command_background="true"
pidfile="/run/xremap.pid"
depend() {
need localmount # implicitly, modules
}
/etc/conf.d/xremap
config="/path/to/xremap.yml"
こんな感じ。
それでは良いSandSライフを!