パスワードを忘れた? アカウント作成
275308 journal

kawa-tの日記: ibus-anthyで月配列 8

日記 by kawa-t

DebianでもsqueezeからはインプットメソッドがiBusになります。SCIMと比べるとインターフェイスはシンプルになりましたが、カスタマイズがしにくくなりました。例えば、ローマ字入力の変換テーブルを変更する場合は、/usr/share/ibus-anthy/engine/にあるtables.pyというpythonのスクリプトを書き換えることになります。

pythonを知らない人でも、インデントを正確に合わせて、定数文字列は「u"hoge"」であることが分かれば、書き換え自体は難しい話ではありません。

私の場合は、ローマ字入力ではなく、月配列なので、同じファイル内のかな入力に該当する部分を書き換えることになりました。シフト側の文字は、濁点のところに追加していきます。ところが、これだけではシフト側の文字が打てません。中指シフトが正しく動作するようにするためには、kana.pyの_UNFINISHED_HIRAGANAに「dk」を追加します。ここまでやれば、月配列での入力が可能になります。

ただ、もう1つ問題があり、iBus-anthyのかな入力では、濁点や半濁点を1文字として扱うようになっており、中指シフト側の文字を1つ消すのにバックスペースを2回、濁音や半濁音の場合はさらにもう1回押す必要が出てきて、不便です。そのあたりは、romaji.pyをながめつつ、kana.pyの最後の

        enchars = list(self._enchars)
        del enchars[index]
        self._enchars = u"".join(enchars)
        self._jachars = kana_typing_rule.get(self._enchars, u"")

        if self.is_finished():
            self._enchars = u""
            self._jachars = u""
        else:
            enchars = list(self._enchars)
            del enchars[index]
            self._enchars = u"".join(enchars)
            self._jachars = kana_typing_rule.get(self._enchars, u"")

とすれば、濁音や半濁音は1回で消えますし、シフト側の文字も、濁点や半濁点が追加可能な文字以外は1回で消せます。

シフト側の濁点や半濁点が追加可能な文字については、そのうち。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by sokuban (41844) on 2011年02月24日 4時54分 (#1907566)

    どうも、私は最近ibusを使い始めた月配列使いです。(以前はscim使ってました)

    kawa-t氏の指示に従い、tables.pyとkana.pyを編集してみましたが、編集は効果されていなくて、まだJISカナ配列のままです。

    python使いの友達に訊いたら、効果されないのは.pyのソースコードだけを編集しましたからだそうです。.pycと.pyoのファイルを消したら、プログラム発動時に再生して、編集が効果されるであろうと。

    妙なことに、tables.pycとtables.pyoを消してみましたが、再生されない上にまだ何故かJISカナ配列になってます。

    Archlinux使っておりますので、scriptがうまく発動しないのはシステムのpythonが3.1.3-2版になってることが原因かもしれません。(python3でscriptを発動するとsyntax errorが出ます。)

    どうやって月配列できる様になれますか?

    お願いします。

    • by sokuban (41844) on 2011年02月24日 6時37分 (#1907572)

      いろいろやってみました。

      ソースコードでのtables.pyのほうを編集して、recompileしてみましたが、プログラムを発動できませんでした。(.py、.pyc、.pyoのファイルはちゃんとできてますのに。)

      (そのできた.py、.pyc、.pyoを標準buildに書き換えても効果がでません。)

      ためしに、tables.pyに月配列全体ではなく、カナを二つほど編集してみただけでしたら、recompile後にはプログラムを発動できましたが、編集は効果されなくて、何故かデフォルトのカナが出てしまいました。

      親コメント
      • by kawa-t (37052) on 2011年02月25日 21時04分 (#1908469) 日記
        コメントありがとうございます。

        書き忘れていましたが、KDEの場合だとシステムトレーにあるIBusのアイコンを右クリックして、restartを選択する必要があります。おそらく、他のウィンドウマネージャやデスクトップ環境でも同じだとは思います。
        親コメント
        • by sokuban (41844) on 2011年02月26日 9時39分 (#1908645)

          いや、さすがにそれはないでしょうね。上のコメントにはプログラムの再起動とか再コンパイルしてたって言ってたから…

          一応やってみたが、当然結果が出ない。

          問題の原因の可能性は多分:

          pythonのバージョンの問題か

          編集仕方が間違ってる

          旧pythonで再コンパイルしてたら、元の.py使った場合はちゃんと出来上がるけど、編集してあった.py使うと壊れるので、後者である可能性はある。

          メール・アドレスを公開しましたので、それにkawa-t氏が編集した.py等を送ってくれないでしょうか?

          ありがとうございます。

          親コメント
          • by kawa-t (37052) on 2011年02月26日 15時50分 (#1908808) 日記

            個人同士でのやりとりをすると、何かの間違いで第三者に漏れて、コードが一人歩きするのも嫌なので、基本は公開サーバ上でのやり取りでお願いします。

            メールアドレスは公開したくないですが、メールアドレスを公開しないと、ライセンスも書けないので、とりあえず、ライセンスを明記する必要がない範囲と言うことで、tables.pyの差分です。Downloads/tables.pyはオリジナルのソースからコピーしたものです。書き換えは自己責任で。

            なお、python3は入れてません。python2.6.6が入っています。

            *** Downloads/tables.py    2010-04-23 03:49:24.000000000 +0200
            --- /usr/share/ibus-anthy/engine/tables.py    2010-11-21 08:47:31.000000000 +0100
            ***************
            *** 365,526 ****
              # a port of 101kana.sty from scim-anthy
              kana_typing_rule = {
                  # no modifiers keys
            !     u"1" : u"ぬ",
            !     u"2" : u"ふ",
            !     u"3" : u"あ",
            !     u"4" : u"う",
            !     u"5" : u"え",
            !     u"6" : u"お",
            !     u"7" : u"や",
            !     u"8" : u"ゆ",
            !     u"9" : u"よ",
            !     u"0" : u"わ",
            !     u"-" : u"ほ",
            !     u"^" : u"へ",
            !
            !     u"q" : u"た",
            !     u"w" : u"て",
            !     u"e" : u"い",
            !     u"r" : u"す",
            !     u"t" : u"か",
            !     u"y" : u"ん",
            !     u"u" : u"な",
            !     u"i" : u"に",
            !     u"o" : u"ら",
            !     u"p" : u"せ",
            !     u"@" : u"゛",
            !     u"[" : u"゜",
            !
            !     u"a" : u"ち",
            !     u"s" : u"と",
            !     u"d" : u"し",
            !     u"f" : u"は",
            !     u"g" : u"き",
                  u"h" : u"く",
            !     u"j" : u"ま",
            !     u"k" : u"の",
            !     u"l" : u"り",
            !     u";" : u"れ",
            !     u":" : u"け",
            !     u"]" : u"む",
            !
            !     u"z" : u"つ",
            !     u"x" : u"さ",
            !     u"c" : u"そ",
            !     u"v" : u"ひ",
            !     u"b" : u"こ",
            !     u"n" : u"み",
            !     u"m" : u"も",
            !     u"," : u"ね",
            !     u"." : u"る",
            !     u"/" : u"め",
            !     # u"\\" : u"ー",
            !     u"\\" : u"ろ",
             
                  # shift modifiered keys
            !     u"!" : u"ぬ",
            !     u"\"" : u"ふ",
            !     u"#" : u"ぁ",
            !     u"$" : u"ぅ",
            !     u"%" : u"ぇ",
            !     u"&" : u"ぉ",
            !     u"'" : u"ゃ",
            !     u"(" : u"ゅ",
            !     u")" : u"ょ",
            !     u"~" : u"を",
            !     u"=" : u"ほ",
            !     u"|" : u"ー",
            !
            !     u"Q" : u"た",
            !     u"W" : u"て",
            !     u"E" : u"ぃ",
            !     u"R" : u"す",
            !     u"T" : u"ヵ",
            !     u"Y" : u"ん",
            !     u"U" : u"な",
            !     u"I" : u"に",
            !     u"O" : u"ら",
            !     u"P" : u"せ",
            !     u"`" : u"゛",
            !
            !     u"{" : u"「",
            !
            !     u"A" : u"ち",
            !     u"S" : u"と",
            !     u"D" : u"し",
            !     u"F" : u"ゎ",
            !     u"G" : u"き",
                  u"H" : u"く",
            !     u"J" : u"ま",
            !     u"K" : u"の",
            !     u"L" : u"り",
            !     u"+" : u"れ",
            !     u"*" : u"ヶ",
            !
            !

            親コメント
            • by sokuban (41844) on 2011年02月27日 10時33分 (#1909104)

              すみませんでした。登録番号の通りの初心者なのでこう言うのはよくわかりません。

              tablesありがとうございます。

              親コメント
              • by kawa-t (37052) on 2011年02月27日 15時02分 (#1909218) 日記

                基本的には、tables.pyの変更箇所が先に書いた通りであることを示したかっただけですので、気にしないでください。

                Debianの場合だと、Ubuntuの情報に埋もれていても、Debian系なので、Ubuntuの情報がそのまま使えたりしますが、Arch Linuxだと辛いですよね。

                Arch Linuxの場合だと、英語で、しかも、中国語入力の関連も含めて探さないと、辛いかもしれません。私が調べた所ですと、Arch Linuxでは、python3にアップグレードした後は、明示的にpython2を指定することを必要とする場合がある様です。

                参考:https://bugs.archlinux.org/task/21591 [archlinux.org]

                親コメント
              • by kawa-t (37052) on 2011年02月27日 15時27分 (#1909227) 日記
                anthyの場合だと、/usr/lib/ibus-anthy/ibus-setup-anthyの最終行が臭いですね。
                親コメント
typodupeerror

目玉の数さえ十分あれば、どんなバグも深刻ではない -- Eric Raymond

読み込み中...