xremap を使い始めた
前回 linux desktop 環境を構築したときには、xkeysnail を linux 用のキーリマッパとして利用していたのだが、いつのまにか xremap が rust で書き直されていたので xremap に移行することにした。 yaml で設定できるのも良い。
基本方針として、Mac のような 2 つのモディファイアをを駆使したキーマッピングにしたい。 つまり、ctrl+n, ctrl+f などの emacs binding と、Cmd+w, Cmd+f などのメニュー操作の両立ができるという Mac みたいな入力スタイルを実現したい。 Mac でこれになれてしまったので、このスタイルが楽なのである。
幸い、Ultimate hacking keyboard を使っているのでかなり自由にキーマッピングを変更可能なので、Ultimate hacking keyboard 側のマッピングをいじりつつ xremap でもマッピングしていい感じに変更していく。
とはいえやっていることはシンプルで、Mac でいう cmd の位置を alt にして、a のとなりは ctrl とするというだけ。
あとは、terminal 上以外では Emacs like なキーバインディングを設定するというのと、chrome は win/linux と mac でキーバインディングに差異があるので、mac のキーバインディングで操作できるように調整する。最後に Alt+〇〇 を Ctrl+〇〇にリマップすれば完成。割とシンプルな構成で実現できた。xremap 便利。
# Mac でいう Cmd の位置に alt key をアサインしている。
# ctrl キーは小指の位置。
keymap:
- name: Emacs
application:
not: wezterm
remap:
C-b: { with_mark: left }
C-f: { with_mark: right }
C-p: { with_mark: up }
C-n: { with_mark: down }
C-a: { with_mark: home }
C-e: { with_mark: end }
C-h: { with_mark: backspace }
C-m: enter
C-j: enter
C-d: [delete, { set_mark: false }]
C-k: [Shift-end, C-x, { set_mark: false }]
C-leftbrace: esc
# Chrome tab switching
- name: Chrome
application:
only: Google-chrome
remap:
Shift-Alt-rightbrace: C-tab
Shift-Alt-leftbrace: Shift-C-tab
Alt-leftbrace: Alt-Left
# remap alt-key to control
- name: Cmd key mapping
remap:
Alt-a: C-a
Alt-b: C-b
Alt-c: C-c
Alt-d: C-d
Alt-e: C-e
Alt-f: C-f
Alt-g: C-g
Alt-h: C-h
Alt-i: C-i
Alt-j: C-j
Alt-k: C-k
Alt-l: C-l
Alt-m: C-m
Alt-n: C-n
Alt-o: C-o
Alt-p: C-p
Alt-q: C-q
Alt-r: C-r
Alt-s: C-s
Alt-t: C-t
Alt-u: C-u
Alt-v: C-v
Alt-w: C-w
Alt-x: C-x
Alt-y: C-y
Alt-z: C-z
# find the app name by `wmctrl -x -l` on X
Published: 2022-12-21(Wed) 19:57