ATOKの日本語入力 on/off の切り替えキーを変更する (Synergy, VNC, IMEで入 力)

Synergy を使って2つのPCを一つのキーボードで操作


一つのPCについているキーボード+マウスで複数のパソコンを操作する Synergyというのがある。 久しぶりに新しいパソコンも来たことなので、まじめにセットアップしていた。 最近は Synergy + とかいうのが出たらしい。


Synergy を使うと、SynergyサーバとなっているPCに接続されたキーボード・マウスで、SynergyクライアントとなっているPCの操作ができるようになる。 たとえば、「Synergyサーバの画面の左側にマウスカーソルを動かしたら、Synergyクライアントのマシンをサーバ側のキーボード+マウスで操作できる。」といった設定ができる。 複数PCを使った擬似的なマルチディスプレイになっている。 しかもクリップボードの共有までできちゃうからすばらしい。


この写真は私のお仕事場の写真ですが、左のノートパソコンを、写真右側のデスクトップPCに設置したキーボード+トラックボールで操作できるようにした。


今日使っていて困ったことに、Synergyサーバは Windows Vista 32bit 日本語版の入ったデスクトップPC、Synergyクライアントは Windows 7 64bit 日本語版が入ったノートパソコン、両方ともUS英語キーボードで両方ともATOK2008がインストールされている。 で、Synergyクライアントをサーバのキーボードを使って操作するときに、Alt + Grave [`] のキー操作で日本語入力の on/off ができないと来た。(笑) 毎度おなじみのknaka氏によると、リモートの画面をさわるVNCでも同じ問題が起きているんだとか。 


いろいろと調べていたところ、サーバ→クライアントには Alt + Grave のキー操作で、Alt+ [全角/半角] のキーイベントを送っている。 クライアント側では英語キーボードの状態で[全角/半角]キーを押されても、それに対応するイベントとして日本語入力の on/off が対応付けされていないのだろう、たぶん。 日本語キーボード同士ならば特に問題なさそうなんだが。


で、ふと思ったのだが、Alt+Graveがダメってことなら、ほかのキーの組み合わせなら大丈夫なんじゃないかと思い、Control+スペースでの切り替えができるようにしてみた。 Control+スペースって、昔のSolarisやLinuxみたいw


今回はATOK2008で設定してみた。



ATOKプロパティ


まずはATOKプロパティの「キー・ローマ字・色」のタブで、キーカスタマイズ のボタンを押す。


ATOKキーカスタマイズ ウィンドウ 設定前


「ATOKキーカスタマイズ」のウィンドウが表示されるので、ウィンドウ下の方の「キー」のラジオボタンを選択し、次に「キーを検索」のボタンを押します。


ボタンを押した後に検索するキーを入力するウィンドウが出てきます。 ここで変換のon/offに利用したいキーのControl + スペースや Control + のキーを入力します。


キーの変更 ウィンドウ


Control + Space のキーに対する機能を設定できるので、ここで「日本語入力ON/OFF」を選択して、OK了。


ATOKキーカスタマイズ ウィンドウ 変更後


「ATOKキーカスタマイズ」のウィンドウで「Ctrl+スペース」や「Ctrl+」に対して設定がされていることを確認してください。


っと、一通り設定したところで思い出したのですが、Emacsだと Ctrl+Space がリージョン指定開始になっているので、キーバインディングがかぶるかもしれません。 Emacs使いな方は、Shift+Spaceとかに設定してもよいかも。 今回は昔のWnn風に Ctrl + でもOn/Offが出来るようにしてみました。


んで、いろいろ操作していたら、MS-IME に切り替わったときに、こいつにもg設定しなきゃいけない。 MS-IME を使えないようにしてしまえw


Google日本語IMEにも同じ設定をしようとしたが、IMEのon/offのキーを切り替える機能がどこにあるか分からず。 できないかもしれない。


雑感なのだが、キーボードからの入力とIME周りの抽象化があまりにもできていないのが問題なのだろう。 キーボードから押されたキーの番号がPS2やらUSBの中を通ってパソコンに伝えられる。 USキーボードの Grave と日本語キーボードの「全角/半角」ボタンには同じ番号が振られている。 この割り振られている番号がキーコード(Key Code)と呼ばれている。


んで、OSのほうで、キーの番号とユーザが設定したキーボードの種類から一応のキーの名前を表すシンボルが渡される。 ただ日本語の切り替えとかの対応は面倒で、接続されているキーボードが英語ならば Alt+Grave で on/off、日本語ならば全角/半角でon/offとかいう具合動かなければならない。 んで、上記のUSキーボードのGraveと日本語キーボードの全角/半角キーのキーコードが同じところを利用して、なんとかホゲホゲしているんだろう、と推測。 いまどきのWindowsとかだと、手元に繋がったキーボードは一つで1種類しか設定でいないようになっているみたいなので、手元と外のキーボードの種類が違う、みたいな対応まではできていないだろう。 そんな環境で、そもそも日本語キーボードに対応させるのすら面倒くさい状態なのを、キーコード・シンボルのマッピングで何とかがんばった形跡が、Synergyのソースコードから読み取れた。


最初はSynergyを改造してがんばるか、とか思ったのだが、このへんのモノシリックな実装やら、英語キーボードで日本語キーボード設定されたリモートをさわる場合、とか、その辺のことを考えていたら、OS改造しないとダメな空気が漂ってきたので、とりあえずキーを買えることで逃げた。(笑)


ここに書いている文章は、昔 Linux 上のX Window Systemのキー入力周りを追いかけた知識と、Windowsの挙動を端から見た上での感想。 僕の理解と実際はちょっと違うかもしれない。

コメント

  1. Google日本語入力の場合、Google日本語入力のプロパティの一般タブのキー設定から、編集→エントリーを追加として、「モード:直接入力、コマンド:IME有効化」なキー設定と、「モード:入力文字なし、コマンド:IME無効化」なキー設定を追加すればいけます。
    VNC経由で効くかどうかは調べてないです。
    Microsoft IMEはうちの7のだと編集操作タブのキー設定から、キーを追加して、機能にIMEのON/OFFを指定でしたが……MS IMEは結構バージョンに依存しそうな気がするからどこでも使えるかは不安ですね。

    返信削除

コメントを投稿

このブログの人気の投稿

パスワードを覚えるのも無理があるから、パスワードマネージャ使いましょう。

大型特殊自動車免許を取った時の話。

車両系建設機械運転者(整地) の講習