macOSでもctrl + hでBackspaceにしている macOSでctrl+hでbackspaceにする - 人生シーケンスブレイク が、UbuntuでもBackspaceにしたくなった。
xkbでの実現方法
現在のxkbmapの設定を確認
$ setxkbmap -print xkb_keymap { xkb_keycodes { include "evdev+aliases(qwerty)" }; xkb_types { include "complete" }; xkb_compat { include "complete" }; xkb_symbols { include "pc+us(dvorak)+us:2+inet(evdev)" }; xkb_geometry { include "pc(pc105)" }; };
今のxkb設定を書き出す
# 既存の設定をエクスポート $ xkbcomp $DISPLAY default.xkb # 変更用にファイルをコピー $ cp default.xkb ctrlh2backspace.xkb
xkbファイル内の編集
先程コピーしたctrlh2backspace.xkbファイルを編集する。
グループの確認
xkb_symbols "pc+us(dvorak)+us:2+inet(evdev)" { name[group1]="English (Dvorak)"; name[group2]="English (US)";
複数の配列を利用している場合には、groupも複数記述されている。
自分はDvorakユーザーなのでgroup1のみ編集する。
型の追加
既存の ALPHABETIC
にctrl時のlevelを追加した型を追加する。
type "ALPHABETIC" { modifiers= Shift+Lock; map[Shift]= Level2; map[Lock]= Level2; level_name[Level1]= "Base"; level_name[Level2]= "Caps"; }; type "ALPHABETIC_LEVEL3" { modifiers= Shift+Lock+Control; map[Shift]= Level2; map[Lock]= Level2; map[Control]= Level3; level_name[Level1]= "Base"; level_name[Level2]= "Caps"; level_name[Level3]= "Control"; };
LControl
とすると、各アプリデフォルトのctrl+h(Chromeでいうとctrl+hで履歴画面表示など)をオーバーライドできないので Control
にした方が良かった。
ctrl + h時にBackspaceにする
各キーのlevelごとに、出力するキーを記述している箇所があるのでlevel3としてBackspaceをマッピングする。
key <AC06> { type= "ALPHABETIC", symbols[Group1]= [ d, D ], symbols[Group2]= [ h, H ] }; key <AC07> { type= "ALPHABETIC_LEVEL3", symbols[Group1]= [ h, H, BackSpace ], symbols[Group2]= [ j, J ] };
デフォルトのxkbとの差分
❯ diff ./default.xkb ctrlh2backspace.xkb 320a321,329 > type "ALPHABETIC_LEVEL3" { > modifiers= Shift+Lock+Control; > map[Shift]= Level2; > map[Lock]= Level2; > map[Control]= Level3; > level_name[Level1]= "Base"; > level_name[Level2]= "Caps"; > level_name[Level3]= "Control"; > }; 1309,1310c1318,1319 < type= "ALPHABETIC", < symbols[Group1]= [ h, H ], --- > type= "ALPHABETIC_LEVEL3", > symbols[Group1]= [ h, H, BackSpace ],
適用する
$ xkbcomp ctrlh2backspace.xkb $DISPLAY
をすると即時反映される。
参考情報
丁寧に書いてあって非常に助かりました 🙏🏻
新たな悩みごと
ctrl+hをBackspaseとしたことで、Japanese(mozc)で日本語入力中にctrl+hしても後退してくれなくなった。
Backspace
した際には従来通り動作してくれるが、上手く認識しない様子。
こちらの解決方法も模索中。。。

ぺリックス PERIPRO-303 34 mm交換用トラックボール 光沢仕上げ PERIMICEまたはロジクール/エレコムトラックボールマウスと互換性有り【正規保証品】 (グリーン)
- メディア: Personal Computers