切腹のイラスト

xremapでSandS

{
  date: "",
}

ちょっと前にSandSという記事を書いたが,Linux系のシステム用にもうちょっと良い感じの方法を見つけたのでメモしておく。

ここではxremapというソフトウェアを使うが,動作させる為に予めカーネルでuinput (CONFIG_INPUT_UINPUT)を有効化する必要がある。

𝑋𝑟𝑒𝑚𝑎𝑝 ⌨️ - https://github.com/k0kubun/xremap

まずはxremapを手元のPCにインストールするところから。 GentooはGURUgui-apps/xremapを使うとよい。 ArchならAUR。 それ以外はcargoで入れるのが確実かもしれない。

現状,xremapには動作するプラットフォームを選択するための排他的なビルドオプションがある。 AURではオプションごとに別名のパッケージを用意しているようだ。 でも大概どれを選んでも問題は無い(はず)。

また,xremapではYAMLが設定を記述する!

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ライフを!