keydでキーマップ変更

 xubuntu上でキーボードの配置を変えて

  • ¥キーそのままでBackspace
  • shift+¥キーで|

 を実現したいと思っていた。
 以前の試行錯誤。
doroyamada.hatenablog.jp
 xmodmapで一通りはできるんだが、Chromeだけは独自の仕様で、これが効かない。ちなみに同じエンジンを積んでいるBraveやChromiumでは起きないので、エンジン部分の仕様ではなさそう。

 大西配列の記事に興味を持って、やり方を探しているうちにkeydというアプリ(?)があるのを知り、ちょっと調べた。ここが役に立った。将来Waylandに移行しても使えるらしい。
qiita.com

 やってみた。

[ids]
*

[main]
yen	=	backspace

[shift]
yen	= macro(|)

 Shiftなしの状態ではBSの働きをしたが、Shiftを押した状態では}が入力されてしまう。いろいろ試行錯誤したが、記号の大半で違う文字が入力されてしまう。|が入力される記号を虱潰しで調べてもわからんかった。USキーボードとJPキーボードの比較でも、キーコードや文字コードの見比べても法則性は見つからんかった。

 かなり長く悩んだが、方法発見。

[ids]
*

[main]
yen	=	backspace

[shift]
yen	= macro(S-yen)

 ¥を押した時はBS、Shift+¥ではShift+¥を押した時と同じく(= |)と。

 記号のmacro仕様は謎のままだけど、とりあえず解決。Google Chromeでも期待通りの挙動をする。
 /etc/default/keyboardをいじって変更している分と統合できるかな。