1. xkeyboard-config-1.0でかなキー
どんどん悪くなるxorg。かなキーの設定を更新しなければいけない日がやってきた。グループ2にかなのキーマップを追加しなければならない。
1.1. ISO_Next_Groupをかなキーにする
この方法はxorg.confとxkbのシステムファイルを直接書き換えてグループ2にかなのキーマップを追加し、さらにかなキーにしたいキーにISO_Next_Groupを割り当てます。
- /usr
/local /share /X11 /xkb /rules /baseに次の行を追加します(パッチ)。
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)
- 次のように/etc/X11/xorg.confの入力デバイスセクションにXkbOptionsを追加します。
Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"
Option "XkbRules" "xorg"
Option "XkbModel" "jp106"
Option "XkbLayout" "jp"
Option "XkbOptions" "japan:kana,grp_led:scroll"
EndSection
-
Xサーバを再起動します。
-
左の旗マークキー(キーコード115)をかなキーにするには、次のようにします(~/.xinitrcや~/.xsessionで実行するようにした方が便利です)。
% xmodmap -e "keycode 115 = ISO_Next_Group"
- 「かなキーを押すと、キーボードの第3LED(もともとScrollLockキー用だったもの)が点灯する」ことを確認してください。なお、ScrollLockキーを押しても、そのLEDはもはや点灯しません。
1.2. xkbcompで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でコンパイルしてXサーバに設定し、左の旗マークキー(キーコード115)をかなキーに割り当てます(実際には~/.xinitrcや~/.xsessionで実行することになります)。
% xkbcomp -I/usr/local/share/X11/xkb 用意したファイル $DISPLAY
% xmodmap -e "keycode 115 = ISO_Next_Group"
1.3. バーチャルなKana_Lockキーを追加する
ISO_Next_Groupではなく、Kana_Lockキーを使用する方法を説明します。ただし、Kana_Lockのキーシムを無視しないXクライアントを使用する場合、この方法は適さないでしょう。
- /usr/local/share/X11/xkb/rules/baseに次の行を追加します(パッチ)。
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)
- 次のように/etc/X11/xorg.confの入力デバイスセクションにXkbOptionsを追加します。
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
-
Xサーバを再起動します。
-
次のように左の旗マークキー(キーコード115)をかなキーにします(実際には~/.xinitrcや~/.xsessionで実行します)。
% xmodmap -e "keycode 115 = Kana_Lock"
1.4. xkbcompでバーチャルな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でコンパイルしてXサーバに設定し、左の旗マークキー(キーコード115)をかなキーに割り当てます(実際には~/.xinitrcや~/.xsessionで実行することになります)。
% xkbcomp -I/usr/local/share/X11/xkb 用意したファイル $DISPLAY
% xmodmap -e "keycode 115 = Kana_Lock"
1.5. 特定のキーをかなキーにする
最初に左の旗マークキーをかなキーにする例を説明します。
- /usr
/local /share /X11 /xkb /rules /baseに次の行を追加します(パッチ)。
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)
- 次のように/etc/X11/xorg.confの入力デバイスセクションにXkbOptionsを追加します。
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
- Xサーバを再起動します。
下線部を次のいずれかに変更することで、かなキーの割り当てを変更できます。
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
1.6. xkbcompで特定のキーをかなキーにする
上記の方法でシステムファイルを書き換えられない場合は、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でコンパイルしてXサーバに設定します(実際には~/.xinitrcや~/.xsessionで実行することになります)。
% 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
2. xkeyboard-config-0.9(またはそれ以前)でかなキー
2.1. ISO_Next_Groupをかなキーにする
この方法はかなキーにしたいキーにISO_Next_Groupを割り当てます。
- 次のように/etc/X11/xorg.confの入力デバイスセクションにXkbOptionsを追加します。
Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"
Option "XkbRules" "xorg"
Option "XkbModel" "jp106"
Option "XkbLayout" "jp"
Option "XkbOptions" "grp_led:scroll"
EndSection
-
Xサーバを再起動します。
-
左の旗マークキー(キーコード115)をかなキーにするには、次のようにします(~/.xinitrcや~/.xsessionで実行するようにした方が便利です)。
% xmodmap -e "keycode 115 = ISO_Next_Group"
- 「かなキーを押すと、キーボードの第3LED(もともとScrollLockキー用だったもの)が点灯する」ことを確認してください。なお、ScrollLockキーを押しても、そのLEDはもはや点灯しません。
2.2. xkbcompで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でコンパイルしてXサーバに設定し、左の旗マークキー(キーコード115)をかなキーに割り当てます(実際には~/.xinitrcや~/.xsessionで実行することになります)。
% xkbcomp -I/usr/local/share/X11/xkb 用意したファイル $DISPLAY
% xmodmap -e "keycode 115 = ISO_Next_Group"
3. さらに昔の話
- /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"