Ubuntu 22.04 LTS が来ていたので 21.10 から早速アップグレードした。
Ubuntu 21.04 で Wayland セッションがデフォルトになったが、キーリマップのために使っていた xkeysnail が 当時は Wayland をサポートしていなかったこともあり、引き続き Xorg (GNOME) セッションを使っていた。
22.04 へのアップグレードの機会に Wayland への切り替えを試みたものの、xkeysnail は依然として Wayland をサポートしていない。 xkeysnail の Wayland 対応方法を調べていたところ、Wayland もサポートする xremap を見つけたので、早速使ってみることにした。
xremap の詳細は GitHub リポジトリ にまとまっている。 また、作者の方のブログエントリー では、目的や背景、Wayland サポートについても丁寧に説明されているので、目を通しておくと良いと思う。
使い方は非常にわかりやすい。Alt キーによる IME の切り替えも簡単で、YAML での設定の書き心地も非常に良かった。
以下、一部設定内容をまとめておく。基本的に xkeysnail での構成をベースにしている。
関連ファイルとディレクトリ構造
$HOME/.config/
|- xremap/
| |- config.yml
| |- start.sh
| `- stop.sh
|
|- autostart/
: |- keymapper.desktop
config.yml
modmap:
- name: Global
remap:
Capslock: Ctrl_L
- name: IME
remap:
Alt_L:
held: Alt_L
alone: Muhenkan
Alt_R:
held: Alt_R
alone: Henkan
keymap:
- name: Global
remap:
# File
M-s: C-s
M-o: C-o
# ...
start.sh
#!/usr/bin/env bash
exec 1> /dev/null 2>> $HOME/.config/xremap/error.log
xhost +SI:localuser:root
sudo xremap --watch=device $HOME/.config/xremap/config.yml &
stop.sh
#!/usr/bin/env bash
PID=`ps --no-heading -C xremap -o pid | tr -d ' '`
if [ -n "$PID" ]; then
sudo kill $PID
echo "Stopped xremap to kill $PID"
fi
sudoers(参考: Man page of SUDOERS)
# /etc/sudoers.d/xremap
hidakatsuya ALL = NOPASSWD: /usr/local/bin/xremap
Startup Applications
[Desktop Entry]
Type=Application
Version=1.0
Name=xremap
GenericName=Keymapper
Exec=/home/hidakatsuya/.config/xremap/start.sh
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Comment=Enable custom keymapping with xremap
Name[en_US]=xremap
Comment[en_US]=Enable custom keymapping with xremap
あっさり移行できてしまい、今の所動作も問題なく快適。本当に素晴らしい。感謝。
ただ、肝心の Wayland への切り替えはまだなので、気持ちが高まってきたらやろうと思う。