ちょっと前にSandSという記事を書いたが,Linux系のシステム用にもうちょっと良い感じの方法を見つけたのでメモしておく。
ここではxremapというソフトウェアを使うが,動作させる為に予めカーネルでuinput (CONFIG_INPUT_UINPUT
)を有効化する必要がある。
𝑋𝑟𝑒𝑚𝑎𝑝 ⌨️ - https://github.com/k0kubun/xremap
まずはxremapを手元のPCにインストールするところから。
GentooはGURUのgui-apps/xremap
を使うとよい。
ArchならAUR。
それ以外はcargoで入れるのが確実かもしれない。
現状,xremapには動作するプラットフォームを選択するための排他的なビルドオプションがある。 AURではオプションごとに別名のパッケージを用意しているようだ。 でも大概どれを選んでも問題は無い(はず)。
modmap:
- remap:
CapsLock: Ctrl_L
- name: SandS
remap:
Space: [Shift_L, Space]
上記の設定によりSandSを実現できる。 適当なファイルに保存した後,下記のコマンドにより起動する。
% xremap --watch=config,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ライフを!