普通のキーボードとHHKを同時に使う
なぜそんなことをするのかというと。卓上の据置型キーボードはきちんと座る用、HHK Proは膝上とか(腹上とか)に置いてダラっとした姿勢用。
両方とも同じようなレイアウトなら普通にいける(Ubuntu10.04)んだけど、HHKはA横がCtrl、もう1台のキーボードはA横がCapsLock…。単純にctrl:swapcapsだとHHKのA横がCapsLockになってしまう…。
卓上キーボードはCtrlとCapsLockを入れ替え、HHKはそのままにしたい。
xorg.confで個別に設定
とりあえずこんな風にして卓上キーボードだけ設定できたものの(gdm上ではうまくいってるのが分かる)
Section "InputClass" Identifier "Desktop Keyboard" Option "XkbOptions" "ctrl:swapcaps" MatchDevicePath "/dev/input/event4" EndSection
gnomeがこういうの上書きしちゃうみたいで、ログインすると2台のうちどちらかの設定に固定されてしまう。これはボツ。
xkbをいじくってsetxkbmap
このへんを参考に
- https://doc.ikw.uni-osnabrueck.de/node/3172
- linux - Two keyboards on one computer. When I write with A I want a US keyboard layout, when I use B I want Swedish. Possible? - Super User
hhkprocustomというmodelを追加
--- /usr/share/X11/xkb/rules/evdev.orig 2010-06-21 05:12:56.553111799 +0900 +++ /usr/share/X11/xkb/rules/evdev 2010-06-21 05:48:43.165580374 +0900 @@ -114,6 +114,7 @@ ! model = keycodes pc98 = evdev(pc98) + hhkprocustom = evdev(hhkprocustom) * = evdev ! layout[1] = keycodes
evdevのkeycodeをいじって、CAPSとLCTLを取り替える。そして用意したHHKのほうはさらにそれを元に戻す。
--- /usr/share/X11/xkb/keycodes/evdev.orig 2010-06-21 05:52:06.697112342 +0900 +++ /usr/share/X11/xkb/keycodes/evdev 2010-06-21 06:17:42.235261204 +0900 @@ -39,7 +39,8 @@ alias <AC12> = <BKSL>; <RTRN> = 36; - <CAPS> = 66; +// <CAPS> = 66; + <CAPS> = 37; <AC01> = 38; <AC02> = 39; <AC03> = 40; @@ -66,7 +67,8 @@ <RTSH> = 62; <LALT> = 64; - <LCTL> = 37; +// <LCTL> = 37; + <LCTL> = 66; <SPCE> = 65; <RCTL> = 105; <RALT> = 108; @@ -313,3 +315,10 @@ include "evdev(evdev)" }; +// HHKPro(Custom) +xkb_keycodes "hhkprocustom" { + include "evdev(evdev)" + <CAPS> = 66; + <LCTL> = 37; +};
xorg.confでMatchProductを使用してHHKのmodelをhhkprocustomに。
Section "InputClass" Identifier "HHKB Professional(Custom)" MatchProduct "Topre Corporation HHKB Professional" Option "XkbModel" "hhkprocustom" EndSection
これで一見うまくいくけれども、やはりgnome上ではどちらかのレイアウトになってしまう。
それぞれのキーボードのdevice番号を見つける
setxkbmap -device 1 -layout jp
のようにして-deviceを1から順に変えて調べていき(jp配列になったのがそのキーボードの番号、という感じで)2つのキーボードの番号を調査する。
ウチでは卓上キーボードが device 8、HHK が device 12 だった。この番号が分かれば以下のようにして個別に設定ができる。
卓上キーボードをUS evdevに設定(evdevはCTRLとCaps取り替え済み)
setxkbmap -device 8 -layout us -model evdev
HHKProをUS hhkprocustomに設定(hhkprocustomはCTRLとCapsを元に戻してある)
setxkbmap -device 12 -layout us -model hhkprocustom
これを~/.xsession に書いておく。
これでやっと2つのキーボードを同時に接続して使えるようになりました。
その気になればJIS配列のキーボードとUS配列のキーボードを同時に使うとかも可能なんだなぁ(やりませんが)
HHKを普通のUSっぽい配列にしてみる
ついでにちょっとHHKのレイアウトもいじってみることになった。
xevで調べた結果。
エスケープをバッククオート(チルダ)に、デリートをバックスラッシュに、バッククオートをエスケープに、バックスラッシュをデリートに。
// HHKPro(Custom) xkb_keycodes "hhkprocustom" { include "evdev(evdev)" <CAPS> = 66; <LCTL> = 37; <TLDE> = 9; <BKSL> = 119; <ESC> = 49; <DELE> = 51; };
HHKの配列も嫌いじゃないんだけど、普通のUSと混ぜて使うとやはり脳が混乱するので、同じにしたほうが気が楽なようです。