IBus/IBus-Anthyのその後(2009/6/25現在)
「IBus/IBus-Anthyのその後(2009/6/24現在)」でIBus-Anthyの開発者あべ氏からxevの結果がこちら(id:kakurasan)と異なるため、前回貼り付けたーキーのキーコード(133)をibus-anthy-1.2.0.20090617/engine/engine.pyの該当部分に用いて修正してテストしてみてはというコメントを頂いたので、試してみた。
修正部分
コードの修正
ファイル名: ibus-anthy-1.2.0.20090617-keycode.patch
diff -ur ibus-anthy-1.2.0.20090617.orig/engine/engine.py ibus-anthy-1.2.0.20090617/engine/engine.py --- ibus-anthy-1.2.0.20090617.orig/engine/engine.py +++ ibus-anthy-1.2.0.20090617/engine/engine.py @@ -1023,7 +1023,7 @@ if self.__typing_mode == jastring.TYPING_MODE_KANA: if keyval == keysyms._0 and state == modifier.SHIFT_MASK: keyval = keysyms.asciitilde - elif keyval == keysyms.backslash and keycode == 132 - 8: + elif keyval == keysyms.backslash and keycode == 133 - 8: keyval = keysyms.yen ret = self.__on_key_common(keyval) if (unichr(keyval) in u',.' and
.specファイルの修正
--- ibus-anthy-1.1.0.20090603-1mdv2010.0/ibus-anthy.spec +++ ibus-anthy-1.2.0.20090617-2kkr2010.0/ibus-anthy.spec @@ -1,5 +1,5 @@ -%define version 1.1.0.20090603 -%define release %mkrel 1 +%define version 1.2.0.20090617 +%define release %mkrel 2 Name: ibus-anthy Summary: ibus - Japanese Anthy engine @@ -9,6 +9,7 @@ License: GPLv2+ URL: http://code.google.com/p/ibus/ Source0: http://ibus.googlecode.com/files/%{name}-%{version}.tar.gz +Patch0: %{name}-%{version}-keycode.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot BuildRequires: anthy-devel BuildRequires: python-devel @@ -21,6 +22,7 @@ %prep %setup -q -n %{name}-%{version} +%patch -p1 %build %configure2_5x
テスト
「Use system keyboard layout setting」のチェックがオフのとき
「IBus/IBus-Anthyのその後(2009/6/24現在)」のときと同じとなった。
- 未確定文字列がないときにーキーを押す: 半角バックスラッシュ/円記号の文字が出る
- 未確定文字列に続いてーキーを押す: 何も出ない
全角英数モードにしたときにろキーを押すと全角バックスラッシュ、ーキーを押すと半角バックスラッシュ/円記号が出ている。
(2009/6/26)このチェックはかな入力時にはオンにする必要があるようだ。
「Use system keyboard layout setting」のチェックがオンのとき
「ろ」と「ー」の両方とも正常に入力されることを確認した。
キーコード値に依存しないキー区別をするのが良い?
[引用]ファイル名: ibus-anthy-1.2.0.20090617/engine/engine.py より
elif keyval == keysyms.backslash and keycode == 132 - 8:
システムによって異なることのあるキーコード値を直接用いるのは問題があるということが分かった。ただし、uimでは正常に動作していることが確認できているので、uimの方式を参考にすると改善できるのではないかという気がしたのでuimのuim/uim-x-kana-input-hack.cを開いてみたところ、キーコード値に依存しない方法で2つのキーを区別していることが分かった。
- ろもーも単独で押すと「XK_backslash」というキーシンボル値*1を返す
- ろキーはShiftキーを押しながら押すとキーシンボル「XK_underscore」を返す
- ーキーはShiftキーを押しながら押すとキーシンボル「XK_bar」を返す
下はShiftキー付きでxevを用いて各キーを押しているところ。「keysym」の部分がキーシンボル。
Shift+ろキー
KeyPress event, serial 35, synthetic NO, window 0x6200001, root 0x1a6, subw 0x0, time ttttttt, (xxx,yyy), root:(xxx,yyy), state 0x11, keycode 211 (keysym 0x5f, underscore), same_screen YES, XLookupString gives 1 bytes: (5f) "_" XmbLookupString gives 1 bytes: (5f) "_" XFilterEvent returns: False
Shift+ーキー
KeyPress event, serial 35, synthetic NO, window 0x6200001, root 0x1a6, subw 0x0, time ttttttt, (xxx,yyy), root:(xxx,yyy), state 0x11, keycode 133 (keysym 0x7c, bar), same_screen YES, XLookupString gives 1 bytes: (7c) "|" XmbLookupString gives 1 bytes: (7c) "|" XFilterEvent returns: False
これを利用して、単独で押したときに「XK_backslash」を返す場合、Shift付きのキーシンボルが「XK_underscore」と「XK_bar」のどちらになるかで判別しているようだ。
関連:キーコード定義の抜粋
(2009/6/26)ーキーとろキーに関するキーコード定義の抜粋を貼り付ける。
ーキー
(Mandriva Linux 2009.0上) $ grep Yen /usr/share/X11/xkb/keycodes -r /usr/share/X11/xkb/keycodes/xfree86: <AE13> = 133; // Yen /usr/share/X11/xkb/keycodes/evdev: <AE13> = 132; // Yen (Mandriva Linux 2009.1上) $ grep Yen [2009.1環境のマウントポイント]/usr/share/X11/xkb/keycodes -r [2009.1環境のマウントポイント]/usr/share/X11/xkb/keycodes/xfree86: <AE13> = 133; // Yen [2009.1環境のマウントポイント]/usr/share/X11/xkb/keycodes/evdev: <AE13> = 132; // Yen
いずれもkbdドライバでは133番、evdevドライバでは132番が使用されるようだ。
ろキー
(2009.0) $ grep backslash /usr/share/X11/xkb/keycodes -r /usr/share/X11/xkb/keycodes/xfree86: <AB11> = 211; // backslash/underscore /usr/share/X11/xkb/keycodes/evdev: <AB11> = 211; // backslash/underscore (2009.1) $ grep backslash [2009.1環境のマウントポイント]/usr/share/X11/xkb/keycodes -r [2009.1環境のマウントポイント]/usr/share/X11/xkb/keycodes/xfree86: <AB11> = 211; // backslash/underscore [2009.1環境のマウントポイント]/usr/share/X11/xkb/keycodes/evdev: <AB11> = 97; // backslash/underscore
evdev使用時の値が211から97に変わっている。
関連記事:
使用したバージョン: