|
|
どんどん悪くなる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"