SCIM 協調モード

始めにSCIM 協調モードって何か?というと、Vimで入力モードからEscで抜ける時にSCIMもOFFにすること。


http://pastorale.jpn.org/2009-05-12-1.html」を見てSCIMでも出来ないかなとググってみた所、ほぼ同じのが2つ出てきた。
http://idak604.blog39.fc2.com/blog-entry-2.html
http://d.hatena.ne.jp/wal-neko/20090425/1240615444


早速試してみる。
まずはSCIMの終了キーコマンドを設定する。
取り合えず「Ctrl + Shift + Space」に設定した。


次に.vimrcの設定。

"EscをremapしてIME(SCIMをOFF)
inoremap   :call ForceImeOff()
function! ForceImeOff()
	let imeoff = system('xvkbd -text "\[Control]\[Shift]\[space]" > /dev/null 2>&1')
endfunction


ところがEscすると「^@」と意味の分からない表示がでる。
テキストの内容その物には影響がないので、どうもVimの表示処理に影響を与えているっぽい。
あと、自分のキーボードはHHK Proなんだけど「↑」を入力するためには「Fn + {」と入力する必要が有る。
これを行うと改行して「A」と入力される。
どうもアローキー等の「Fn」が必要な入力はダメらしい。


適当に色々試した結果これで対応できた。

"EscをremapしてIME(SCIMをOFF)
imap   :call ForceImeOff()
function! ForceImeOff()
	let imeoff = system('xvkbd -text "\[Control]\[Shift]\[space]" > /dev/null 2>&1')
endfunction


追記:2009-05-13
Fnキー関係でタスクバーに勝手に移動するのをちょこっと修正。
どうもFnキーでescと判断されるっぽい。
これでFnキー関係でタスクバーに勝手に移動するのは防げたけど、Escと判断するので入力モードから抜けるバグがあります。