|
どんどん悪くなるxorg。かなキーの設定を更新しなければいけない日がやってきた。グループ2にかなのキーマップを追加しなければならない。
この方法はxorg.confとxkbのシステムファイルを直接書き換えてグループ2にかなのキーマップを追加し、さらにかなキーにしたいキーにISO_Next_Groupを割り当てます。
diff -cr xkb.orig/rules/base xkb/rules/base *** xkb.orig/rules/base Sun Aug 19 09:28:10 2007 --- xkb/rules/base Sun Aug 19 09:34:14 2007 *************** *** 835,840 **** --- 835,841 ---- nbsp:level4 = +nbsp(level4) nbsp:level4n = +nbsp(level4n) japan:nicola_f_bs = +jp(nicola_f_bs) + japan:kana = +jp(kana):2 ! option = compat grp_led:num = +lednum(group_lock)
Section "InputDevice" Identifier "Keyboard0" Driver "kbd" Option "XkbRules" "xorg" Option "XkbModel" "jp106" Option "XkbLayout" "jp" Option "XkbOptions" "japan:kana,grp_led:scroll" EndSection
% xmodmap -e "keycode 115 = ISO_Next_Group"
上記の方法でシステムファイルを書き換えられない場合は、xkbcompで同様なことを実現できます。
xkb_keymap { xkb_keycodes { include "xfree86(jp106)+aliases(qwerty)" }; xkb_types { include "complete" }; xkb_compat { include "complete+japan+ledscroll(group_lock)" }; xkb_symbols { include "pc+jp(106)+jp(kana):2" }; xkb_geometry { include "pc(jp106)" }; };
% xkbcomp -I/usr/local/share/X11/xkb 用意したファイル $DISPLAY % xmodmap -e "keycode 115 = ISO_Next_Group"
ISO_Next_Groupではなく、Kana_Lockキーを使用する方法を説明します。ただし、Kana_Lockのキーシムを無視しないXクライアントを使用する場合、この方法は適さないでしょう。
diff -cr xkb.orig/rules/base xkb/rules/base *** xkb.orig/rules/base Sun Aug 19 09:28:10 2007 --- xkb/rules/base Sun Aug 19 09:34:14 2007 *************** *** 835,840 **** --- 835,841 ---- nbsp:level4 = +nbsp(level4) nbsp:level4n = +nbsp(level4n) japan:nicola_f_bs = +jp(nicola_f_bs) + japan:kana = +jp(kana):2 ! option = compat grp_led:num = +lednum(group_lock)
Section "InputDevice" Identifier "Keyboard0" Driver "kbd" Option "XkbRules" "xorg" Option "XkbModel" "jp106" Option "XkbLayout" "jp" Option "XkbOptions" "japan:kana,japan:kana_lock,grp_led:scroll" EndSection
% xmodmap -e "keycode 115 = Kana_Lock"
上記の方法でシステムファイルを書き換えられない場合は、xkbcompで同様なことを実現できます。
xkb_keymap { xkb_keycodes { include "xfree86(jp106)+aliases(qwerty)" }; xkb_types { include "complete" }; xkb_compat { include "complete+japan+japan(kana_lock)+ledscroll(group_lock)" }; xkb_symbols { include "pc+jp(106)+jp(kana):2" }; xkb_geometry { include "pc(jp106)" }; };
% xkbcomp -I/usr/local/share/X11/xkb 用意したファイル $DISPLAY % xmodmap -e "keycode 115 = Kana_Lock"
最初に左の旗マークキーをかなキーにする例を説明します。
diff -cr xkb.orig/rules/base xkb/rules/base *** xkb.orig/rules/base Sun Aug 19 09:28:10 2007 --- xkb/rules/base Sun Aug 19 09:34:14 2007 *************** *** 835,840 **** --- 835,841 ---- nbsp:level4 = +nbsp(level4) nbsp:level4n = +nbsp(level4n) japan:nicola_f_bs = +jp(nicola_f_bs) + japan:kana = +jp(kana):2 ! option = compat grp_led:num = +lednum(group_lock)
Section "InputDevice" Identifier "Keyboard0" Driver "kbd" Option "XkbRules" "xorg" Option "XkbModel" "jp106" Option "XkbLayout" "jp" Option "XkbOptions" "japan:kana,grp:lwin_toggle,grp_led:scroll" EndSection
下線部を次のいずれかに変更することで、かなキーの割り当てを変更できます。
grp:toggle grp:shifts_toggle grp:ctrls_toggle grp:alts_toggle grp:ctrl_shift_toggle grp:caps_toggle grp:shift_caps_toggle grp:alt_caps_toggle grp:ctrl_alt_toggle grp:alt_shift_toggle grp:menu_toggle grp:lwin_toggle grp:rwin_toggle grp:lshift_toggle grp:rshift_toggle grp:lctrl_toggle grp:rctrl_toggle grp:lalt_toggle
それぞれの意味は/usr/local/share/X11/xkb/symbols/groupを参照してください。
上記の方法でシステムファイルを書き換えられない場合は、xkbcompで同様なことを実現できます。
xkb_keymap { xkb_keycodes { include "xfree86(jp106)+aliases(qwerty)" }; xkb_types { include "complete" }; xkb_compat { include "complete+japan+ledscroll(group_lock)" }; xkb_symbols { include "pc+jp(106)+jp(kana):2+group(lwin_toggle)" }; xkb_geometry { include "pc(jp106)" }; };
% xkbcomp -I/usr/local/share/X11/xkb 用意したファイル $DISPLAY
下線部を次のいずれかに変更することで、かなキーの割り当てを変更できます。
toggle shifts_toggle ctrls_toggle alts_toggle ctrl_shift_toggle caps_toggle shift_caps_toggle alt_caps_toggle ctrl_alt_toggle alt_shift_toggle menu_toggle lwin_toggle rwin_toggle lshift_toggle rshift_toggle lctrl_toggle rctrl_toggle lalt_toggle
それぞれの意味は/usr/local/share/X11/xkb/symbols/groupを参照してください。
この方法はかなキーにしたいキーにISO_Next_Groupを割り当てます。
Section "InputDevice" Identifier "Keyboard0" Driver "kbd" Option "XkbRules" "xorg" Option "XkbModel" "jp106" Option "XkbLayout" "jp" Option "XkbOptions" "grp_led:scroll" EndSection
% xmodmap -e "keycode 115 = ISO_Next_Group"
上記の方法でシステムファイルを書き換えられない場合は、xkbcompで同様なことを実現できます。
xkb_keymap { xkb_keycodes { include "xfree86(jp106)+aliases(qwerty)" }; xkb_types { include "complete" }; xkb_compat { include "complete+japan+ledscroll(group_lock)" }; xkb_symbols { include "pc+jp(latin)+jp:2" }; xkb_geometry { include "pc(jp106)" }; };
% xkbcomp -I/usr/local/share/X11/xkb 用意したファイル $DISPLAY % xmodmap -e "keycode 115 = ISO_Next_Group"
/usr/X11R6/lib/X11/XF86Configのキーボードセクションが次のようになっているか確認します。ただし、XkbOptionsの行はなくてもいいです。
Section "Keyboard" ... XkbOptions "ctrl:swapcaps" XkbRules "xfree86" XkbModel "jp106" XkbLayout "jp" ... EndSection
ルートになります。
/usr/X11R6/lib/X11/xkb/compat/basicのバックアップを取ります。
ファイルbasic.gzを展開してできるファイルbasicを/usr/X11R6/lib/X11/xkb/compat/におきます。
ルートの作業はこれで終わりです。
Xサーバを再起動します。
「Shiftキーと変換キーを同時に押すと、キーボードの第3LED(もともとScrollLockキー用だったもの)が点灯する」ことを確認してください。なお、ScrollLockキーを押しても、そのLEDはもはや点灯しません。
この段階でも、Shift+変換キーでかなキーの代用になりますが、左の旗マークキーをかなキーにするには、次のようにします(~/.xinitrcや~/.xsessionで実行するようにした方が便利です)。
% xmodmap -e "keycode 115 = Mode_switch"