Ubuntu14.10用Apple USB Keyboard MB110J/Bのカスタマイズ

ボクは普段MacBook ProでUbuntu使っているが、指の感覚を惑わせたり、鈍らせないためにDesktop PC(MacではなくWindowsマシン)のUbuntuにApple USB Keyboard MB110J/BやApple Wirelessを使っている。

以下がMB110J/Bをカスタマイズしている図である。これとMacBook用もほぼ同じ感じにしている。そのため、迷いがなく使うことが可能である。

K-Off, K-Onはそれぞれ漢字入力Offと漢字入力Offである。尚、この2つのキーはfcitxのAdvance optionで設定可能でこの記事では説明しない。

 これらを設定するのは、従来のxmodmapやgnome-tweak-toolでは難しい。 細かな設定が必要なためで,gnome-tweak-tool>typingのプリセットでは足りないのである。しかも、Ubuntu13.10?以降のキーボードカスタマイズはxmodmapではなくxkbを使って設定するようになっている。

以下はその資料である。時間がなく綺麗にまとめていない。申し訳ない。
---------------------------------------------------------------------------------------------------------------------
Ubuntu 14(正確には13.10?)以降はxmodmap(下部で利用はされている)を使わずxkbでキーカスタマイズをすることになる、xmodmapを扱っているカスタマイズ情報は古いため無視すること、時間の無駄である。


キーをカスタマイズするにはgnome-tweak-tool内typingを使えば良いが、実際は細かなことが設定できない。優先順位も直感的にわからない。また、テキストも途中で切れて何を意味しているのか不明な項目もある。このテキストはman xkeyboard-configによって表示されるので参考せよ。
gnome-tweak-toolは所詮元々あるプリセット(参照:/usr/share/X11/xkb/symbols/)を設定できるようにしているだけであり、キーカスタマイズが特殊だと対応できない。特に日本語環境用のキーボードは英語圏のキーボードと比較すると複雑なため、かゆいところに手が届きにくい。
そのため、自分でカスタマイズをする必要がある。
注意:LinuxではWin(Command)キーはSuper(ところによってはHyper)キーとして表記されている。


そこでxkbを直接カスタマイズすることになる。


参考:
xkbを拡張する
細かな設定方法


元々あるプリセット設定は/usr/share/X11/xkb/symbols/を参照にすること。
capslock
altwin
あたりが参考になる。
尚、繰り返すが元々あるプリセットの意味は
$ man xkeyboard-config
にて参照可能。


カスタマイズするには上のsymbolsを自作して、起動時に自動実行すればいい、という流れになる。

カスタマイズの大筋の流れは...
~/.xkb/keymap
~/.xkb/symbols
を作成して、起動時に以下のコマンドを実行する。
xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY
細かくみていくと...
まずフォルダを作成
$ mkdir -p ~/.xkb/keymap ~/.xkb/symbols
keymapは以下のコマンドで作成出来る。
$ setxkbmap -print > ~/.xkb/keymap/mykbd

~/.xkb/symbolsでは以下のように好きなファイルを作成
/usr/share/X11/xkb/symbols/altwinの内容を参考にして作ると。。。
上にある図のようにApple Japanese usb keyboardではCommand(Win or Super)をAlt, Option(Alt)をCtrlし, CapsはWin(Super)としている。
ここに好きなファイル名で作成する。今回はnakasya_key。
// Command(Win) is mapped to the Alt keys, Alt to the Ctrol keys.
partial modifier_keys
xkb_symbols "macken" {
   key <LALT> { [ Control_L, Control_L  ] };
   key <RALT> { type[Group1] = "TWO_LEVEL",
                symbols[Group1] = [ Control_R, Control_R ] };
   key <LWIN> { [ Alt_L, Meta_L ] };
   key <RWIN> { [ Alt_R, Meta_R ] };
   key <CAPS> { [ Hyper_L ] };
   modifier_map Control { <RALT>, <LALT> };
   modifier_map Mod1 { <LWIN>, <RWIN> };
   modifier_map Mod4 { <CAPS> };
};
で、この設定を以下の赤文字として追加する。注意:CpasのところをSuper_LにするとうまくWinキーにならなかった。
~/.xkb/keymap/mykbd
xkb_keymap {
xkb_keycodes  { include "evdev+aliases(qwerty)" };
xkb_types     { include "complete+numpad(pc)" };
xkb_compat    { include "complete" };
xkb_symbols   { include "pc+jp+us:2+inet(evdev)+capslock(hyper)+nakasya_key(macken)" };
xkb_geometry  { include "pc(pc105)" };
};
あとはいいタイミングで以下のコマンドを実行するだけである(*)
$ xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY
WARNINGは無視すること。表示したくない場合は2> /dev/nullでリダイレクトする。
$ xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY 2> /dev/null


便利Tools:
ディフォルトのキー設定を表示する。
$> setxkbmap -print
xkb_keymap {
xkb_keycodes  { include "evdev+aliases(qwerty)" };
xkb_types     { include "complete+numpad(pc)" };
xkb_compat    { include "complete" };
xkb_symbols   { include "pc+jp+us:2+inet(evdev)+capslock(hyper)" };
xkb_geometry  { include "pc(pc105)" };
};


Mod1とかMod4などの意味は以下のxmodmapで確認可能である。modとはmodifierの意味だと思う。
$ xmodmap
xmodmap:  up to 4 keys per modifier, (keycodes in parentheses):


shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Hyper_L (0x42)
control     Control_L (0x25),  Control_L (0x40),  Control_R (0x69),  Control_R (0x6c)
mod1        Alt_L (0x85),  Alt_R (0x86),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3      
mod4        Hyper_L (0x42),  Super_L (0xce),  Hyper_L (0xcf)
mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)


重要なのはcontrol, mod1(Alt(option)キー), mod4(Win(command)キー)である。


*Unityバグ情報(gnome-shellは正常)
このカスタマイズ自動実行のタイミングが難しく、私のDesktopのUbuntu14.10+Unity(default)ではうまく行かない。.bashrcや.config/autostartを利用しても実行はされるが肝心のキーカスタマイズがクリアされている。 仕方がないのでTerminalまたはキーショットカットや手動で一度起動して、.bashrcに入れたxkbcompを動かしている。バグはUnity起動時にどこかで再設定されてしまっているのだろう。ハマりそうなので、暇なときに調査予定である。尚、私のPCはUbuntu12ぐらいからUpdateを繰り返しているのでクリーンインストールすれば解決できるかもしれない...が仕事で使っているので故障がおきない限り機会がない。
注意:Ubuntu14.10ではCaps lockキーにトグル機能が残って、押しっぱなしになってしまう不都合がある。これはgnome_tweak_toolでCpas lockをHyperにしても同じ。

PS. ついでなのでWindowsでは以下でカスタマイズできる。
以下を参考にApple Keyboardのドライバのインストールをする。でなければ「かな」、「英数」キーが認識されない(USB Keyboard)。私はboot champ 5.1を使った。
  1. BootChampをDL
  2. zipを解答、2つのファイルをゲットし、
  3. root権限でmsiをコマンドラインで実行、エラーが出ても無視して進める。
Fn keyの動きのカスタマイズ、Boot Champコントロール(おそらくMacOS HDDを探しに行くところで)はエラーが出て動かないので、RegeditでRegstoryを編集。
Windowsのバージョンによって異なる(7や8,HomeやProfessionalなど)
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\KeyMagicSoft内
または,
HEKY_CURRENT_USER\Software\Apple Inc.Apple Keyboard Support内
OSXFnBehaviorを1から0へ

カスタマイズはSharpKeysを使え(http://sharpkeys.codeplex.com/)
Apple usb keyboard+ten keys
Special: Caps Lock->Special:Left Windows
Special:Left Alt->Special:Left Ctrl
Special:Left Windows->Special:Left Alt
Special:Right Alt->Special:Right Ctrl
Special:Right Windows->Special:Right Alt

コメント

このブログの人気の投稿

日本でコンピュータサイエンスを学ぶ難しさ

How to preview nif file on the ubuntu.