2010-06-21
普通のキーボードと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
このへんを参考に
- Page not found | IKW Network Documentation
- 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で調べた結果。
- エスケープ keycode 9
- バッククオート(チルダ) keycode 49
- バックスラッシュ keycode 51
- デリート keycode 119
エスケープをバッククオート(チルダ)に、デリートをバックスラッシュに、バッククオートをエスケープに、バックスラッシュをデリートに。
// HHKPro(Custom)
xkb_keycodes "hhkprocustom" {
include "evdev(evdev)"
<CAPS> = 66;
<LCTL> = 37;
<TLDE> = 9;
<BKSL> = 119;
<ESC> = 49;
<DELE> = 51;
};
- 64 http://www.google.co.jp/search?q=git+rebase&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&hl=ja&client=firefox-a
- 50 http://www.google.co.jp/search?sourceid=chrome&ie=UTF-8&q=git+rebase+-i
- 27 http://www.google.co.jp/search?q=git+rerere&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&hl=ja&client=firefox-a
- 19 http://www.google.co.jp/search?sourceid=chrome&ie=UTF-8&q=git-rebase
- 18 http://d.hatena.ne.jp/
- 18 http://www.google.co.jp/search?aq=f&sourceid=chrome&ie=UTF-8&q=git+rebase+onto
- 16 http://www.google.co.jp/search?q=Unable+to+determine+upstream+SVN+information+from+working+tree+history&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&hl=ja&client=firefox-a
- 12 http://www.google.co.jp/search?hl=ja&lr=lang_ja&tbs=lr:lang_1ja&q=xorg+keyboard+evdev&aq=f&aqi=&aql=&oq=&gs_rfai=
- 11 http://www.google.co.jp/search?hl=ja&client=firefox-a&rls=org.mozilla:ja-JP-mac:official&q=ubuntu10.04+Caps&aq=f&aqi=&aql=&oq=&gs_rfai=
- 10 http://www.unpush.net/



