使用している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 件のコメント:
コメントを投稿