fcitx-mozc とoyainputでNicola F型

これまでLinuxでの日本語入力はibus-anthyを使っていたが変換効率がアレなのでちと困っていた。でも親指シフトに対応しているのはAnthy系だけだし…

と思っていた所、oyainputというソフトを使えばmozcなどでも親指シフトが使えるとのことで試してみる。インストール方法はリンク先に記載の通り。fcitx-mozc一式も事前にインストール済み。

試してみたところ二点ほど問題が。

まず第一に、oyainputを起動すると設定したxmodmapの設定がキャンセルされてしまうこと。これはoyainput起動後に改めてxmodmapを実行すればよい。(Futurismoの記事を参考にさせていただいた)

第二に、これまでibus-anthyで入力できていた文字が入力できないこと。具体的には以下の通り。

  • zで全角ピリオドを打ちたいが句点になってしまう

  • pで全角カンマを打ちたいが読点になってしまう

  • 親指シフト+2、6、7で/、[、]を打ちたいが*、{、}になってしまう

  • xmodmapでコロンにバックスペースを、バックスペースに別の文字を割り当てているが、日本語入力モードでコロンを押すとバックスペースに割り当てた文字が入力されてしまう

基本的にoyainputはキーコードを差し替えるソフトのようだ。そのため、ローマ字変換テーブルで定義されていない文字は入力できないし、xmodmapでキーとシンボルの対応をいじってしまうと想定外の文字が出力されてしまう。ちなみにxmodmap設定は以下の通り。

clear lock
clear control
keycode 9 = Zenkaku_Hankaku
keycode 19 = 0 underscore
keycode 22 = yen overline
keycode 34 = colon asterisk
keycode 37 = Eisu_toggle Caps_Lock
keycode 48 = BackSpace
keycode 49 = Escape
keycode 51 = at grave
keycode 66 = Control_L
keycode 97 = backslash bar
keycode 132 = bracketright braceright
add lock = Caps_Lock
add control = Control_L Control_R

pointer = 1 7 3 4 5 6 9 8 2

この設定の意味は以下の通り

  • 全角/半角とエスケープの入れ替え

  • 左Ctrlと英数入れ替え

  • シフト+0でアンダースコアを入力

  • バックスペースで円記号、シフト+バックスペースでオーバーラインを入力

  • コロンでバックスペース入力

  • @でコロン、シフト+@でアスタリスク入力

  • ]で@、シフト+]でバッククォート入力

  • シフト+バックスラッシュ(右シフトの左隣)で|入力

  • 円記号(バックスペースの左隣)で]、シフト+円記号で}入力

このxmodmap設定と整合性をとれるよう、下記のようにソースを変更した。

common.h

#define MOJI_ATMARK 120
//#define MOJI_MAX 119 // last index
#define MOJI_MAX 120 // last index

oyastate.c

//    {KEY_Q, MOJI_PERIOD},
      {KEY_Q, MOJI_KUTEN},
//    {KEY_LEFTBRACE, MOJI_COMMA},
      {KEY_LEFTBRACE, MOJI_KUTOUTEN},
      {KEY_BACKSLASH, MOJI_ATMARK},


//    [MOJI_BS] = {KEY_BACKSPACE,0,0}, /* MOJI_BS 90 */
      [MOJI_BS] = {KEY_APOSTROPHE,0,0}, /* MOJI_BS 90 */
//    [MOJI_SLASH] = {KEY_LEFTSHIFT,KEY_APOSTROPHE,0}, /* MOJI_SLASH 92 */
      [MOJI_SLASH] = {KEY_Z,KEY_SLASH,0}, /* MOJI_SLASH 92 */
//    [MOJI_PERIOD] = {KEY_DOT,0,0}, /* MOJI_PERIOD 111 */
      [MOJI_PERIOD] = {KEY_Z,KEY_DOT,0}, /* MOJI_PERIOD 111 */
//    [MOJI_COMMA] = {KEY_COMMA,0,0}, /* MOJI_COMMA 112 */
      [MOJI_COMMA] = {KEY_Z,KEY_COMMA,0}, /* MOJI_COMMA 112 */
//    [MOJI_LBRACKET] = {KEY_LEFTSHIFT, KEY_RIGHTBRACE,0}, /* MOJI_LBRACKET 96 */
      [MOJI_LBRACKET] = {KEY_Z,KEY_LEFTSHIFT, KEY_8}, /* MOJI_LBRACKET 96 */
//    [MOJI_RBRACKET] = {KEY_LEFTSHIFT,KEY_BACKSLASH,0}, /* MOJI_RBRACKET 97 */
      [MOJI_RBRACKET] = {KEY_Z,KEY_LEFTSHIFT,KEY_9}, /* MOJI_RBRACKET 97 */

KEY_なんちゃらという定数は/usr/include/linux/input-event-codes.hで定義されている。USキーボードが基準なので例えばKEY_RIGHTBRACEはJISキーボードでは]ではなく[である。sudo showkey -kで押したキーのキーコード(数字)を得ることができるので、得られた数字とinput-event-codes.hの内容を突き合わせて、入力するキーに対応するKEY_なんちゃら定数を調べることができる。

最後に、fcitx-mozcのローマ字変換テーブルを編集した。

  • z,: 全角カンマ

  • z.: 全角ピリオド

  • z/: 全角スラッシュ

  • z(: [

  • z): ]

コメント(0)



Note

本サイトのハイパーリンクの一部は、オリジナルのサイトが閉鎖してしまったため"Internet archive Wayback Machine"へのリンクとなっています。そのようなリンクにはアイコン[archive]を付与しています。

本サイトはCookieを使用しています。本サイトにおけるCookieは以下の三種類のみであり、Cookieの内容に基づいてサイトの表示を変更する以外の用途には用いておりません。