Diary?

2007-09-11
Tue

(00:11)

scribes で日本語の括弧や引用符が入力できなくなってしまった。前に田辺さんが同じ現象にあっていたけど、俺は環境変数を設定して端末から起動してるんだよな。

まあ検討は大体付いていて、今回俺は gnome 系パッケージは最低限しか入れてなくて、 gnome 関連の処理は殆ど走っていない。多分、キー入力のフックのところで何か問題があるんだろ。もう眠いので今日はここまで。

(20:04)

scribes の問題について少し調べたところ、ちょっと面白い解決方法が見つかった。

scribes は全ての機能をプラグインとして実装していて、括弧の自動挿入もやはりプラグインで実現されている。で、このプラグインがキー入力イベントを scim よりも早く拾ってしまうから問題となるわけだ。だったら scim の日本語モードだったらキー入力イベントを拾わせなければ良いわけだ。そう思って書いたのが次のパッチ。

56a57
>     self.__is_imemode = False
493a495,496
>     from gtk.gdk import CONTROL_MASK
>     from gtk import keysyms
495a499,500
>     if event.state & CONTROL_MASK and event.keyval == keysyms.space:
>       self.__is_imemode = not self.__is_imemode
500d504
<       from gtk import keysyms
516,517c520,522
<       self.__insert_closing_pair_character(event.keyval)
<       return True
---
>       if not self.__is_imemode:
>         self.__insert_closing_pair_character(event.keyval)
>         return True

これを /usr/share/scribes/plugins/BracketCompletion/Manager.py に適用するか、 .gnome2/scribes/plugins/ 以下に先のディレクトリから PluginBracketCompletion.py と BracketCompletion ディレクトリをコピーしてそこで適用するかすれば良い。

これが一体何をやっているかというと、 scim の入力モード切替キーの入力イベント (デフォルトでは Ctrl + Space) をフックして括弧の自動挿入処理を抑制しているだけ。これはかなり乱暴な処理で scim の「全てのアプリケーションで同一入力メソッドを使用」をオフにしているのが条件などちと酷い。本来なら scim の状態を取得して処理を切り替えるのだろうが、多分これは現在の scim では無理。やるんだったら scim にパッチを当ててどこかしら適当なところ (あるいは D-Bus) に現在の入力メソッドの状態を出力して、それを読み取るって処理を付け加える必要がある。

で、俺はそこまでやる気力と時間が今のところ無いので、とりあえずはこれでよしとしておこう。ってか、普通に Gnome 使ってりゃ起きない問題っぽいからな、これ。

(23:14)

今月の Young Guitar は「あの」ギター変態、 Steve Vai のプレイとインタビューが DVD に収録されてるぞ。これはギター弾かない奴でもギターミュージックのファンなら「買い」だろう。

Creative Commons
この怪文書はクリエイティブ・コモンズ・ライセンスの元でライセンスされています。引用した文章など Kuwata Chikara に著作権のないものについては、それらの著作権保持者に帰属します。