Akira's Commentary

Windows VNC の日本語対応

Windows用VNCのインストールガイドで 述べたように、AT&T版のWindows用VNCは、 NLSキーを扱うことができないため、 キーでの日本語入力制御ができない、という問題があります。

IMEのGUIで操作できないわけではありませんが、 まあ、これでは使い難いですね。

しかし、最近になって、 ソフトウェア開発チーム"UnderDone"さんが 漢字パッチを 作成されて公開されました。(1)

AT&T版のWinVNCだけでなく、 TightVNCへのパッチもあります。 vdacc-vnc(ビデオドライバ版) についてのパッチも公開予定だそうです。ソースも入手できます。

WinVNCへの日本語パッチは、 最新版のWinVNC 3.3.3R9へのパッチになっています。 WinVNCをインストールしたディレクトリで、 更新用のバイナリを実行するだけで適用されるようになっています。

WinVNCをサービスとして起動されている方は、 パッチ適用後、古いWinVNCサービスを終了/削除して、 新しいものをサービス登録、起動し直す必要があります。 ご注意の程を。

使ってみました

実際にパッチを当てて使ってみました。 Windows側はNT4SP6aとMeです。

Windowsクライアントから
日本語パッチを当てたvncviewerからですと、 ローカルマシンを使うのと同じ感覚で使えます。 フォーカスがvncviewerに入っている場合には、 日本語キーはローカルマシンのIMEではなく、 きちんとリモートマシンのIMEに渡されていて、 リモート側のIMEが制御されるようになっています。 何の違和感もなく使えますね。
OS/2クライアントから
OS/2クライアントでは、 日本語キーはすべてローカルマシンのIME制御になってしまうので、 そのままでは使えません。 ただ、PM版では特殊キーに対するマッピングが定義できますので、 他のキーを割り当てて使うことができます。

日本語パッチのソースをみたところ、

WindowsキーX keysym実際の値
VK_KANA XK_KANA FF16
VK_KANJI XK_KANJIFF19

となっていましたので、PM側では

キーコード通知コード
F23CFF19
F33DFF16

と割り付けて使ってみました。こうすると、F2で漢字モードになり、 ちゃんと日本語が入力できました。 難点は、英数モードに戻るのに ALT-A、F2、ALT-A、と入力しなければならない点ですね (PM版vncviewerはALTキーを通知しないので)。 ちなみに、キーマップファイルは

#
# Key Map for PM-VNC Viewer
#
# 3C 'F2' -> XK_KANJI
# 3D 'F3' -> XK_KANA
#
3C FF19
3D FF16
といったもので、
vncview -keymap kanji.map

として指示します。

UNIXクライアントから
うーん、これは駄目みたいです。 まあ、キーマップの設定次第、なのかもしれませんが。 私の環境(RH7.1J)では、漢字キーでXK_Zenkaku_Hankakuが通知され、 SHIFT+漢字でXK_Kanjiが通知されるようになっています。 このあたりを調整すれば、なんとかなるのかも知れません。