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

kawa-tの日記: 重い腰を上げた 1

日記 by kawa-t

Macを使わなくなって久しいけど、日本語入力のときの感覚はMacを使っていたときとあまり変わっておらず、WindowsやLinuxでは何となく不便に思っていた。Macなら主に文字入力のために使えるOptionキーがあったのだが、WindowsだとMacのCommandキー相当のCtrlキーでこなさないといけないから、ショートカットに使えるキーが少ない。特に非JISキーボードの場合は、日本語専用のキーがないので、ファンクションキーを多用しないといけないが、文書の入力中にホームポジションから頻繁に手を離すというのはうれしくない。

職場も自宅も非JISキーボードなので、何とかしようと以前から目をつけていたのが右Altキー。欧州の言語のレイアウトで使うときはAltGrとして機能するのだが、その機能はMacのOptionキーに近い。ただ、日本語入力の場合だと、右AltキーはただのAltキーとしてしか機能しないから使い物にならず、何かしらいじる必要があったのだが、面倒なので手をつけてこなかった。

今回、まず試したのは右AltキーをAltGrとして機能させること。WindowsでもLinuxでも英語配列でAltGrが有効になるものがある。それを使うことで特殊な文字を打つことができるから、それを利用すればいいのではないかと考えてみた。まず、Windowsで試したが、日本語入力では英語配列がどうであろうと、右AltはAltGrとして機能させることはできない。管理者権限もないので、諦めることにした。Linuxではibusに関してはうまく行った。でも、ibus-anthyもibus-mozcも文字種に制限があり、うまく行かなかったので、この方法は諦めた。

次に試したのが、setxkbmapの設定をいじり、AltGrと同時に特定のキーを押すことで、カーソルキーやJISキーボードにしかないキーとして機能させること。これのためには/usr/share/X11/xkb/symbols/にあるusのファイルをいじれば良い。ShiftとAltGrの同時押しの場合の設定や追加するキーの名前がわからなくて、手こずったが、最終的にはうまく行った。また、日本語入力に限らず、カーソルキーとして汎用的に使うこともできるようになった。最早、AltGrと言うよりはFnキー。

ただ、前々から我慢して使ってきたので日本語と英字を混ぜるような書き方をしていなかったのが、今回の設定で混ぜて書けるようになるかと思ったら、ibus-anthyではそういう入力はできなかった。ibus-mozcのカスタマイズが容易ではなく、月配列はローマ字入力をカスタマイズして不完全な形でしか使えないからibus-mozcを諦めて、ibus-anthyを我慢しながら使ってきたけど、もうibus-anthyを使わないことを決意した。

なお、ibus-mozcはソースコードに変更を加えることで月配列を完全に使えるようになった模様。詳細は次回。/usr/share/X11/xkb/symbols/usの変更点は、xkb_symbols "altgr-intl"の定義の最後に以下のものを追加したこと。まだ、試用段階。リダイレクトに指定するキーの値は/usr/share/ibus/component/mozc.xml/usr/share/X11/xkb/keycodes/evdevを参照。

   type "THREE_LEVEL" {
      modifiers = Shift+Mod5;
      map[Shift] = Level2;
      map[Mod5] = Level3;
      map[Shift+Mod5] = Level3;
      level_name[Level1] = "Base";
      level_name[Level2] = "Shift";
      level_name[Level3] = "Level3";
   };
 
   key.type="THREE_LEVEL";
   key <AC07> { [ j, J, Left ],
                actions[Group1] = [ NoAction(), NoAction(),
                                    RedirectKey(key=<LEFT>, clearmods=Mod5)] };
   key <AC08> { [ k, K, Down ],
                actions[Group1] = [ NoAction(), NoAction(),
                                    RedirectKey(key=<DOWN>, clearmods=Mod5)] };
   key <AC09> { [ l, L, Right ],
                actions[Group1] = [ NoAction(), NoAction(),
                                    RedirectKey(key=<RGHT>, clearmods=Mod5)] };
   key <AD08> { [ i, I, Up ],
                actions[Group1] = [ NoAction(), NoAction(),
                                    RedirectKey(key=<UP>, clearmods=Mod5)] };
   key <AB01> { [ z, Z, Hiragana ],
                actions[Group1] = [ NoAction(), NoAction(),
                                    RedirectKey(key=<HIRA>, clearmods=Mod5)] };
   key <AB02> { [ x, X, Katakana ],
                actions[Group1] = [ NoAction(), NoAction(),
                                    RedirectKey(key=<KATA>, clearmods=Mod5)] };
   key <AC01> { [ a, A, Romaji ],
                actions[Group1] = [ NoAction(), NoAction(),
                                    RedirectKey(key=<AB11>, clearmods=Mod5)] };

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by kawa-t (37052) on 2014年02月08日 6時44分 (#2541672) 日記

    最終的には、

    QWERTY前上次P[]\
    ひカ変無ハ頭左下右尾;’
    ZXCVBNM,./

    とした。US配列でも日本語キーボードにしかないキーが使える。

       type "THREE_LEVEL" {
          modifiers = Shift+Mod5;
          map[Shift] = Level2;
          map[Mod5] = Level3;
          map[Shift+Mod5] = Level3;
          level_name[Level1] = "Base";
          level_name[Level2] = "Shift";
          level_name[Level3] = "Level3";
       };
     
       key <AC06> { type="THREE_LEVEL",
                    [        h, H,           Home ],
                    actions[Group1] = [ NoAction(), NoAction(),
                                        RedirectKey(key=<HOME>, clearmods=Mod5) ] };
       key <AC07> { type="THREE_LEVEL",
                    [        j, J,           Left ],
                    actions[Group1] = [ NoAction(), NoAction(),
                                        RedirectKey(key=<LEFT>, clearmods=Mod5) ] };
       key <AC08> { type="THREE_LEVEL",
                    [        k, K,           Down ],
                    actions[Group1] = [ NoAction(), NoAction(),
                                        RedirectKey(key=<DOWN>, clearmods=Mod5) ] };
       key <AC09> { type="THREE_LEVEL",
                    [        l, L,           Right ],
                    actions[Group1] = [ NoAction(), NoAction(),
                                        RedirectKey(key=<RGHT>, clearmods=Mod5) ] };
       key <AC10> { type="THREE_LEVEL",
                    [ semicolon, colon,           End ],
                    actions[Group1] = [ NoAction(), NoAction(),
                                        RedirectKey(key=<END>, clearmods=Mod5) ] };
       key <AD07> { type="THREE_LEVEL",
                    [        u, U,           PageUp ],
                    actions[Group1] = [ NoAction(), NoAction(),
                                        RedirectKey(key=<PGUP>,   clearmods=Mod5) ] };
       key <AD08> { type="THREE_LEVEL",
                    [        i, I,           Up ],
                    actions[Group1] = [ NoAction(), NoAction(),
                                        RedirectKey(key=<UP>,   clearmods=Mod5) ] };
       key <AD09> { type="THREE_LEVEL",
           

typodupeerror

犯人は巨人ファンでA型で眼鏡をかけている -- あるハッカー

読み込み中...