自分は日本語入力効率化のためにずっと昔からSandSを利用している。SandSとはSpace and Shiftの略で、以下のようなキー入力のカスタマイズのこと。
- スペースキーの役割をシフトキーにする
- ただし、スペースキーを単発で押して離したときはスペースキーとして扱う
これが日本語入力システムのSKKと非常に相性が良いので、SKKerはだいたいこの拡張を使っている。
この記事では、SandSを実現するxremap
を紹介し、インストール方法や他ツールとの比較を行います。
SandSを実現する方法
さて、このSandSはWindowsやLinux、macOSでは標準で提供されていないので、なんらかのユーティリティをインストールして実現するのが一般的な手法になる。
とりわけLinuxにおけるこの分野はxmodmap
とxcape
のコンビネーションが長らく使われてきたし、これを利用している人も多いことと思う。
Waylandに対応していない
さて、LinuxデスクトップのディスプレイサーバにX11が使われていた時代は少しずつ終わりはじめ、Waylandの時代になりつつある。最近のディストリビューションでは Ubuntu 22.04 LTSからWaylandが採用されていたりと、新規にX11が使われることはあまり無さそう。
しかしながらxmodmap
はもともとX11のツールだし、xcape
もX11のAPIを呼び出すツールなので、Waylandに切り替えるとぜんぜんこのへんのツールが動かなくなってしまうのだ。これでは困る。
xremap
とは
そんな中、同僚がxremap
というのを使っていると教えてくれた。これはキーカスタマイズツールで、キーボードの入力をいい感じに組替えるツールだ(CapslockをCtrlにしたりもできる)。
なんと嬉しいことに、xremap
はWaylandにも対応しており、しかもアプリケーションごとの設定が可能とのこと。記述言語はRustで、ビルドするとバイナリが1つだけ出てくるというシンプルさも良い。設定をYAMLに書いて渡すだけ、という潔い仕様も魅力だ。
調べてみるとSandSにもちゃんと対応しているとのことなので、早速インストールしてみることにした。
xremap
のビルド
xremap
はRust製であり、cargo
を使ってビルドする。(昔はRubyだったがRustで書き直されたようだ)
% git clone git@github.com:k0kubun/xremap.git % cd xremap % cargo build --release # パスが通る場所に移動する % cp target/release/xremap ~/bin/
ちなみにバイナリリリースもあるので、こちらを使っても良い。
設定と起動
xremap
はYAMLで記述された設定ファイルを引数に渡すだけでフォアグラウンド起動し続けてくれる、というごくシンプルなセマンティクスで動作する。
SandSを設定するためのYAMLは以下の通り。これを適当な場所に保存しておく:
modmap: - name: SandS remap: Space: [Shift_L, Space]
入力デバイスを触る権限が必要なので、sudo
やdoas
などで起動する。
% sudo xremap config.yaml
これだけでSandSが有効化される。非常にシンプルだし、一切つまづく場所はなかった。
systemdに設定する
毎回手動で起動するのは大変なので、xmodmap
でやっていたときと同様にsystemdで自動起動するようにする。
設定ファイルを/etc/systemd/system/sands.service
に作成する:
% sudo vim /etc/systemd/system/sands.service
[Unit] Description=Sands service [Service] # restart periodically Restart=always ExecStart=/home/windymelt/bin/xremap /home/windymelt/src/github.com/windymelt/dotfiles/xremap.yaml User=root Group=root [Install] WantedBy=default.target
より厳密に権限を制御したい場合は、以下の記事を参考にしよう:
次にSystemdの設定を反映させる:
% sudo systemctl daemon-reload
あとはサービスを起動するだけでSandSを利用可能になる。
% sudo systemctl start sands
これ以外にもxremap
は様々な機能を持っているので気になる人は公式ページを調べてみると良いだろう。
他ツールとの比較
xremap
は他のツールと比べても優位な点が多い良いソフトウェアだ。
xmodmap
+xcape
の場合、同時に2プロセスを扱うので整合性が失われて奇妙な動作をするという問題点があったが、xremap
は単一のプロセスが入力を監視し続けるので非常に扱いやすい。そしてWayland環境ではxmodmap
などは使えない。xkeysnail
という類似ソフトウェアがあるが、Pythonで記述されておりインストールに多少不安がある。また現在のところWayland環境では動作しない様子。設定をPythonで書かされるのも大変そうと思う。
Cons for xremap
今のところ自分は欠点に思っている部分はないが、firefoxでうまく動作しないケースがある?という話をネットで軽く見た。FFを使っている人は少し調べる必要があるかもしれない。
xremap
はRustでいちど書き直されているので、古い記事は過去の実装の欠点を上げているケースがあるかもしれないことに注意。
また、このツールは管理者権限を要求する(udevなどを使って縮小することもできる)。