HOME / コンピュータTips / Solaris / キーカスタマイズ
Date: 2009/01/06 | | Tags: Solaris, Key Customize, OpenSolaris, キーカスタマイズ, キーリマップ
InputDeviceが2種類ほどあるが、その中でKeyboardをしてする方を見つけ出し、XkbOptionsの行を入れる。
Section "InputDevice" Option "XkbOptions" "ctrl:nocaps" # generated from default Identifier "Keyboard0" Driver "keyboard" EndSection
OpenSolarisの場合、xorg.confが存在しない。
そのため、テキストモードでOpenSolarisを起動し、下記の手順でxorg.confを作成すると良い。
その1. シングルユーザに落ちる。
pfexec init S
その2. grubメニューからテキストモードで起動する。
もし途中、ctrl^Dが要求されたら、ctrl^Dし、ユーザでログインするとテキストログインになる。
コマンドラインに落ちたことを確認し、
/usr/X/bin/Xorg -configure
これで、/rootあたりにxorg.conf.newが作成されているので、/etc/X11/にコピーする。あとは、上記の設定を入れておけばよい。
参考資料
上記をみると、loadkeys、dumpkeysという処理があるらしい。manを探すキーワードとして、
keytablesをみてみると、2つあるので悩む。
# ls -l /usr/share/lib/keytables 合計 8 drwxr-xr-x 2 root bin 1536 8月 7日 10:49 type_101 drwxr-xr-x 2 root bin 2048 8月 7日 10:49 type_6
man loadkeysすると、こんなことが書いてある。
/usr/share/lib/keytables/type_tt/layout_dd, where tt is the value returned by the KIOCTYPE ioctl, and dd is the value returned by the KIOCLAYOUT ioctl (see kb(7M)). These
わからんので、こんな風にしてみる・・・
# dumpkeys | grep -i lock key 57 all shiftkeys+capslock
key 57を別にアサインすればよさそう
左コントロールは・・・?
# dumpkeys | grep -i leftctrl key 224 all shiftkeys+leftctrl up shiftkeys+leftctrl
そこで、57を224と同じにしてしまいたいということになる。
cd /usr/share/lib/keytables grep 57 */* | less
このようにやると、key 57がshift+capslockに設定されている環境は、type_101にはなく、type_6にしかない。
そんなわけで、type_6から重点的に探す。
関係なさそうなものばかりだがusが一番怪しい(やまかん)
cd type_6 cp us us.org
57に224の設定を上書きしたがうまくいかず・・・
いったい何のために・・・と思うかも知れないが、まず、ASCII配列のキーボードの中で、機種依存ではなくかつ無くてもかまわないキーがInsertだと考えてほしい。
次に、WindowsをVirtualBoxで動かしている前提で、この中のWindowsのATOKでIMEのON/OFFに設定できる設定キーはいくつかある。が、ASCII配列で設定できる範囲で一番どうでも良いキーが実はInsertなのである。
そこで、
これで、良い感じでどちらでも日本語のON/OFFができるのだ。
さて、Insertは遠い所にあるので、右下あたりにあるキーを押すだけでON/OFFをしたい。そこでInsertとApplicationキーを切り替えるという考えにいたるわけだ。
じゃあ、最初からAppキーをトリガーキーに指定すれば・・・という話があるが、実は、EmacsでAppキーを押すとUNICODEの入力モードになるのだ。面白いことに、システム-設定-入力方式のトリガキーで、Appキーを日本語のON/OFFとして潰しても、Emacsと一部のアプリに限っては、unicodeのON/OFFに中途半端に取られてしまう。
そこで、
キーはなにか?というとInsertキーなのである(笑
xevを実行(無い場合は pkg search -r xevで検索)
目的のキーを押すと、キーコードがわかる。
KeyPress event, serial 245, synthetic NO, window 0x5800001, root 0x13a, subw 0x0, time 89893018, (262,-220), root:(1710,619), state 0x0, keycode 106 (keysym 0xff63, Insert), same_screen YES, XLookupString gives 0 bytes: XmbLookupString gives 0 bytes: XFilterEvent returns: False
このプログラムは、タイトルバーのXをマウスでクリックして閉じる。
ここのkeycode 106が目的のキー。
最後に、.xmodmaprcに次のように設定した。
keycode 117 = Insert keycode 106 = Multi_key
意味は
あとは、
xmodmap ~/.xmodmaprc
を実行すれば読み込む。
マップ表は
xmodmap -pke
で出力可能。