<!-- 注: このサイトはまだ工事中です -->

xremapでSandS

{
  date: "",
}

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

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

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

まずはxremapを手元のPCにインストールするところから。 僕はGentoo使いなのでpycargoebuildebuildを書いてもらった。 xremapには動作するプラットフォームを選択するための相互に排他的なビルドオプションがある。 AURではこれをオプションごとに別名のパッケージで扱っているようだ。

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

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の例を示す。

#!/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
}
config="/path/to/xremap.yml"

こんな感じ。

それでは良いSandSライフを!