今更ながらskkに google-ime-skkを導入したときに、色々気付きがあったのでメモ。碌に検証もせず行き当たりばったりでやってるので、参考にはならない。
gem install google-ime-skk
これだけでインストール完了するのはありがたい。google-ime-skk
で起動。しかし、初め何故かうまく動かなかった…
arimasou16@Lemur:~$ google-ime-skk
server is on 55100:0.0.0.0:0.0.0.0
cache keep time 3600sec
#<Thread:0x0000558dc013f300@/home/arimasou16/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/google-ime-skk-1.4.0/lib/socialskk.rb:40 run> terminated with exception (report_on_exception is true):
Traceback (most recent call last):
1: from /home/arimasou16/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/google-ime-skk-1.4.0/lib/socialskk.rb:41:in `block (2 levels) in mainloop
しかも、SKKサーバーとしてlocalhost:55100
として追加すると入力時に固まって数十秒後に動きだしたりししたので1、一度アンインストールgem uninstall google-ime-skk
する。
すると、 RustでGoogle IME skkserv を作った - TSUGULOGというRust製google-ime-serverがあることを知るので、こちらに乗り替え。
sudo apt install cargo
git clone https://github.com/yoshitsugu/google-ime-skkserv-rs.git
cd google-ime-skkserv-rs
cargo install
で、~/.cargo/bin/gskkserv
で起動できる。google-skk-server
である程度変換できるならば、辞書をUTF-8で保存できるfcitx-skk
に拘る必要ないと思い、uim
に変えようかと…
しかし、 ~/.pam_environmentを
XMODIFIERS DEFAULT=@im=uim
GTK_IM_MODULE DEFAULT=uim
QT_IM_MODULE DEFAULT=uim
として、im-config
でuim
にコマンド、もしくはGUIで変更しても、うまく行かない…もうメンドウになり、だったらibus
に。
で、
以前はskk
にしたらキーボードも日本語キーボード配列になってしまったのだけど、ならない…あれ、勘違いだったのかな…
ならよし、でもそれと別に、“ひむろきょうすけ"と打ったときに"氷室”、“ふかだきょうこ"だと"深田"と姓しか変換されない。
Rust製でないRuby製再度チャレンジ、今度は上手く行く(Why?)。結局、“ひむろきょうすけ"と打ったときに"氷室"となるのを一度X
で削除したら、“氷室京介"と出るように…もはや、姓だけ変換されたのはRust製だからなのか、辞書設定のせいなのか分からない。
ともあれ、自動起動するアプリケーションの設定しておく。
名前 | コマンド |
---|---|
google-ime-skk | /home/arimasou16/.rbenv/versions/2.5.0/bin/google-ime-skk |
これでめでたしめでたしと行きたいが、vim
で日本語モードのskk
しかないので、コマンドモードにしても英数入力状態にならない…ではと、入力ソースに 英語(US) を追加する。そして、
fuenor/im_control.vimで制御しようとする。
let IM_CtrlMode = 1
"「日本語入力固定モード」切替キー
inoremap <silent> <C-j> <C-r>=IMState('FixMode')<CR>
function! IMCtrl(cmd)
let cmd = a:cmd
if cmd == 'On'
let res = system('ibus engine "xkb:us::eng"')
elseif cmd == 'Off'
let res = system('ibus engine "xkb:jp::jpn"')
endif
return ''
endfunction
とすると、キーボード配列が日本語となる上にCtrl+j
までが上書きされる(そりゃ、そうだ)。入力ソースから 英語(US) を削除する。Ctrl+j
は上書きしないようにして、
function! IMCtrl(cmd)
let cmd = a:cmd
if cmd == 'On'
let res = system('ibus engine "xkb:us::eng"')
elseif cmd == 'Off'
let res = system('ibus engine "skk"')
endif
return ''
endfunction
とだけする。すると、コマンドモードの時、英数入力モードになってキーボード配列もそのまま。eskk.vim
を使わなくなっちゃうけど、これでいいや。
-
一度ログアウトすると直る? ↩︎