Linuxでキーボードをリマップする

TL;DR

以下の記事がやっていることの焼き直し。

Linux で X よりも低レイヤでキーマップを変更する

本文

US配列キーボードへ換装したThinkpad X390にDebianをインストールして使っている。JIS配列とは異なり、主要なキーがすべて同じサイズのキートップなので使いやすい。一方で私は最近JISキーボードを用いて変換/無変換でIMEを切り替える設定を推進している。コマンドを打ったり、Web検索する程度であれば問題は感じないが、長文を打つ際には、この切り替えが使えるほうがありがたい。そこで外付けキーボードの出番であるが、今までLinuxにおけるキーボードリマップに関する知見を蓄積してこなかったため、今回その技術開発を行った。

とはいえ、上のzennの内容をなぞるだけである。

xinputとevtestを使えるようにした上で/etc/udev/hwdb.dにファイルを作れば良い。左辺の値はevtestを用いて調べる。右辺の値は/usr/include/linux/input-event-codes.hを参照して決定する。

evdev:name:Chicony PFU-68 USB Keyboard:dmi:bvn*:bvr*:bd*:svn*:pn*
  KEYBOARD_KEY_70035=leftalt
  KEYBOARD_KEY_700E2=leftmeta
  KEYBOARD_KEY_70089=grave
  KEYBOARD_KEY_70087=capslock

この設定では、HHKB Lite2 JIS配列のキーボードを以下の通りリマップしている。

基本的には私がMacbookで行っているのと同じものだ。

ちなみに、上の記事で解説されている通りに、いちいち再接続しなくても以下のコマンドでキーボード設定の再読込が可能だ。

% sudo udevadm hwdb --update
% sudo udevadm trigger