rdesktop on MacOSX X11

技術メモ
最近、快適なことがわかったRemoteDesktopだが
クライアントはWindowsしかないのか???と思って探してみると
解析してオープンソースでX11上に作っちゃった人がいました。

rdesktop

で、これなんですが、X11があれば動いちゃうのでMacOSXのX11環境で
動かすことができそうです。
インストールは単純。

> ./configure
> make
> sudo make install

これだけで完了。/usr/local/下にインストールされる。
使い方は

> /usr/local/bin/rdesktop [-a 色深度] [-g 解像度] [-k キーレイアウト] [-K] [-D] [-f] 接続先のIP

こんな感じで、一番簡単なのはIPだけを引数にすればいい
まぁ、最低でも-a 16をつけてdepthは16bitにしておいた方がいいかな?
うちでは

> /usr/local/bin/rdesktop -a 16 -k ja -K -D -f …..

として使っている。これでフルスクリーンで接続される。
最近、会社のディスプレイが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マッピングを見る。
すると、

Katakana 0x70
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読み込まれるタイミングがないらしい。
仕方がないので手で読ませる。

> xmodmap ~/.Xmodmap

ちなみに中身はこんな感じ。

keycode 110 = Muhenkan
keycode 112 = Katakana

それぞれのキーコードに対してspaceではなく本来のkeysymを割り当ててる。
と、ここまでしてrdesktop経由でApple純正キーボードの「かな」「英数」キーが送られるようになった。
ネットで苦労しているLinuxユーザも同じような問題なんじゃないんかね?
なんか、rdesktopのキーマップをen-us使ったりとか変則的なことしてるけど
基本はkeysymがちゃんと取れてないのが問題じゃないか、と。
まぁ、昔のバージョンはrdesktopのキーマップもおかしかったんかもしれんけど。


投稿日

カテゴリー:

投稿者:

タグ:

コメント

“rdesktop on MacOSX X11” への2件のフィードバック

  1. ぎゃぐのアバター
    ぎゃぐ

    ご無沙汰です。rdesktopってRDPを実装したものですが、これLINUXベースのシンクライアントでそのまま使われていたりします。どこぞのメーカーのものもこれそのものを使っていました(表向きは隠れているけど)。

  2. きとらのアバター
    きとら

    お久しぶりです。それはもしや・・・
    http://blogs.sun.com/roller/page/thaniwa/20050317
    でしょうかねぇ・・・blogって何でもオープンにしちゃうんですねぇ
    ググってる途中で発見しました、最近Java関係はググるとblogs.sun.comにたどり着くことが多いです。
    今までは、IBMにたどり着いてたりすることを考えるとだいぶ企業イメージアップに貢献してますねblogって。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください