技術メモ
最近、快適なことがわかったRemoteDesktopだが
クライアントはWindowsしかないのか???と思って探してみると
解析してオープンソースでX11上に作っちゃった人がいました。
“rdesktop“
で、これなんですが、X11があれば動いちゃうのでMacOSXのX11環境で
動かすことができそうです。
インストールは単純。
> make
> sudo make install
これだけで完了。/usr/local/下にインストールされる。
使い方は
こんな感じで、一番簡単なのはIPだけを引数にすればいい
まぁ、最低でも-a 16をつけてdepthは16bitにしておいた方がいいかな?
うちでは
として使っている。これでフルスクリーンで接続される。
最近、会社のディスプレイが1920×1200になったのでリモートデスクトップでつなぐにしても
ある程度解像度が高くないと快適でない。
今まで広いと思っていたiMacの1680×1050が狭く感じるとは時代は変わりました。
で、ここまでは導入。
rdesktopを使っていて困るのが漢字関連のキー。
Apple純正キーボードにある、かなキーや英数キーは
そのままだとrdesktop経由でWindowsに届かない。
ネット上の情報はほとんどが、Linuxの情報なんでPCキーボードを前提にしてるし・・・。
んで、仕方がないので自分で調べてみた。
Windows側では、MacOSXの挙動に合わせて「ひらがなキー」とIME-ON、
「無変換キー」をIME-OFFに割り当ててるのでこれを送り出せるようにしたいわけだ。
# トグルで漢字モード切り替えるのって目的のモードになってるか分かりにくいですよねぇ
キーがリモートのWindowsに届くまでには、
MacOSXの層、X11の層、rdesktopの層、リモートデスクトップサーバの層が考えられる。
で、何処で漢字キーの情報が落ちているかの推測だが
1.MacOSXの層
ローカルアプリでは漢字切り替えが問題なくできているので問題なし
2.X11の層
同じX11アプリのOpenOffice.orgで日本語入力ができていないので怪しい
3.rdesktopの層
キーマップの設定がありjaを指定している
ただしLinux等のX11用に特化している可能性が怪しい
4.リモートデスクトップサーバの層
Windowsクライアントからは正しくキーが送られているので問題ないだろう
で、2.3.のレイヤーだが調べてみると、
2.では、USB経由で入ってきたキー入力をX11の流儀のイベントに起こす層だ。
X11では、一旦スキャンコードをkeysymという「キーの名前」に変換する。
そして、このkeysymと装飾キーの組み合わせを改めてアプリケーションごとで
論理的なキーコードにマップする。
【※ここの部分、かなり独自感性解釈です。ドキュメント読んでません。】
3.ではkeysymと装飾キーの組み合わせをwindowsのスキャンコードに
マップする設定を持っていた。それが、/usr/local/share/rdesktop/keymaps/*
-k オプションで指定したマッピングが使われるようだ。
この場合は、jaマッピングを見る。
すると、
Muhenkan 0x7b
というマッピングが入っていた。これは、
Katakanaというkeysymを0x70というコードとしてリモートに飛ばすことを意味する。
調べてみると、0x70は「ひらがな」のスキャンコードなのでこれでいいはず。
(無変換も正しいスキャンコードになっている)
これで問題は、2のX11で正しく「かなキー」のkeysymが作られていない
らしいという所まで絞れてきた。
で、X11上でxevコマンドを使ってキーイベントを調べてみると
「かな」も「英数」もどちらも”space”というkeysymが返ってきていた。
ただ、キーコードはそれぞれ112,110と明らかにspaceではないものが入っている。
次に、X11のターミナル上でxmodmap -pkeを打って
キーコードとkeysymとのマッピングを確認する。
keycode 110 = space
keycode 111 = F11
keycode 112 = space
…
ない。
これで直すべき所は分かった。
このキーマップは、X11では、xmodmapを使って直すので
~/.Xmodmapファイルにでも修正マッピングを書き込んでおく。
本当は、これを自動で読み込んでほしいがMacOSXのX11はアプリケーションとして
Xサーバが起動するのでログインが行われない。
つまり~/.Xmodmap読み込まれるタイミングがないらしい。
仕方がないので手で読ませる。
ちなみに中身はこんな感じ。
keycode 112 = Katakana
それぞれのキーコードに対してspaceではなく本来のkeysymを割り当ててる。
と、ここまでしてrdesktop経由でApple純正キーボードの「かな」「英数」キーが送られるようになった。
ネットで苦労しているLinuxユーザも同じような問題なんじゃないんかね?
なんか、rdesktopのキーマップをen-us使ったりとか変則的なことしてるけど
基本はkeysymがちゃんと取れてないのが問題じゃないか、と。
まぁ、昔のバージョンはrdesktopのキーマップもおかしかったんかもしれんけど。
コメントを残す