使用しているOSは, Fedora release 25である.
キーコードの変更手順
キーの入れ替えには,setxkbmap
を使用する.
このコマンドは, どのディバイスに対して適用するかを指定できる.
まず, キーを入れ替えるための設定ファイルを用意する.
$ cat /usr/share/X11/xkb/keycodes/swapctrlcaps default xkb_keycodes "swapctrlcaps" { <LCTL> = 66; <CAPS> = 37; }; $ cat /usr/share/X11/xkb/keycodes/swapbacks default xkb_keycodes "swapbacks" { <BKSL> = 22; <BKSP> = 51; };これで, 以下のコマンドにより, qwerty配列に対して上記のキー入れ替えができる.
$ setxkbmap -keycodes 'evdev+aliases(qwerty)+swapbacks+swapctrlcaps'次に,
xinput
を使用して, 接続されたディバイスの一覧を取得する. (空白などを改変した)
$ xinput Virtual core pointer id=2 [master pointer (3)] Virtual core XTEST pointer id=4 [slave pointer (2)] TPPS/2 IBM TrackPoint id=10 [slave pointer (2)] Virtual core keyboard id=3 [master keyboard (2)] Virtual core XTEST keyboard id=5 [slave keyboard (3)] Power Button id=6 [slave keyboard (3)] Video Bus id=7 [slave keyboard (3)] Sleep Button id=8 [slave keyboard (3)] AT Translated Set 2 keyboard id=9 [slave keyboard (3)] ThinkPad Extra Buttons id=11 [slave keyboard (3)] Topre Corporation HHKB Professional id=13 [slave keyboard (3)]このうち,
AT Translated Set 2 keyboard
だけに, キーコードの変更を行う.
setxkbmap -device 9 -keycodes 'evdev+aliases(qwerty)+swapbacks+swapctrlcaps'これをスクリプトにすると, 以下のようになる.
for id in $(xinput | awk '/AT Translated Set.*id=[1-9]/{print gensub(/.*id=([0-9]*).*/,"\\1",1)}'); do setxkbmap -device $id -keycodes 'evdev+aliases(qwerty)+swapbacks+swapctrlcaps' done
補足: キーマップの異なるキーボードが混在する環境の設定
もし, 日本語キーボード・英語キーボード混在の場合は, シンボルを設定するオプション-symbols
を使用する.
以下の例では, id=9 に日本語, id=13 に英語の配列を割り当てる.
setxkbmap -device 9 -symbols 'pc+jp+inet(evdev)' setxkbmap -device 13 -symbols 'pc+us+inet(evdev)'
0 件のコメント:
コメントを投稿