●インストール手順
こちらのページを参考にしてインストールしました。
〔備忘録〕 XRDP 0.9.4 in LXDE on Ubuntu 16.04 LTS のインストール - grasso0210の日記 http://d.hatena.ne.jp/grasso0210/20171004/1507082822
その後MateDesktopをインストールし.xsessionにmate-sessionを記載しました。
最後に/etc/X11/Xwrapper.config を編集してallowed_users=anybody としています。
●不具合症状
ubuntu起動後にXRDPで接続します。
最初は日本語キーボードが認識されます。(shift+2で"が表示されます)
一度サービスセッションを終了し、再度接続します。
キーボ―ドが英語になっています。(shift+2で@が表示されます)
この時、GUIで確認すると、キーボードの設定のレイアウトは日本語のままです。
サービスを繋いだ状態で一旦ログアウト、再度接続すると日本語キーボードになります。
xrdpを再起動、再度接続すると日本語キーボードになります。
なにかわかることや、調査のためにできることがありましたら教えてください。
よろしくお願いいたします。
まず、インストール方法としては妥当だと思います。
> 一度サービスセッションを終了し、再度接続します。
というのは、どういう状態でしょうか。ただ単にクライアントを✗ボタンで終了した状態ですか?
原因はいくつか考えられますが、まずtail -f /var/log/xrdp.log コマンド等でログを追いかけながら接続し、英語キーボードになったときのログの
> [20171018-08:58:48] [INFO ] Loading keymap file /usr/local/etc/xrdp/km-00000409.ini
というようなログと、前後5行程度をみせてください。
また同様に、 tail -f ~/.xorgxrdp.10.log (数字はディスプレイ番号) として接続し、英語キーボードになったときのログの
> [308732.694] rdpClientConProcessMsgClientInfo:
行から20行程度を見せてください。
2017年10月18日水曜日 9時23分15秒 UTC+9 kii tosu:
> [ 2931.454] rdpLoadLayout: keylayout 0xe0220411 variant display 10
これです。
/etc/xrdp/xrdp_keyboard.ini の中に
> rdp_layout_jp=0xe0210411
という行があるので、その下に
> rdp_layout_jp=0xe0220411
という行を追加してみてください。xrdpの再起動は必要ないと思います。
英語キーボードになってしまう状態で、xrdp_keyboard.ini を書き換えて
再接続すればOKだと思いますが、xrdpやOSの再起動はしたければして構いません。
もしかして、WindowsにIMEを3つ以上インストールしていますか?
今のところ xrdp_keyboard.ini はIMEが2つまでをサポートしていて、
3つ目以降のIMEが選ばれたときにその現象が発生します。サポート
していないといっても、設定ファイルを書き換えるだけで対応可能なのですが。
ただ、ログに残されたkeylayoutの値がxrdp_keyboard.iniの中に見つからない場合、
本来なら英語キーボードになるはずでした。今回の環境の場合は、
「2回目以降の接続で日本語キーボードのはずが英語キーボードになる」
のではなく、実は
「英語キーボードになるはずが、1回目だけ日本語キーボードになってしまう」
という現象なのです。これは、本来1回目から英語キーボードになるべきところを
1回目の接続時だけiBusなどのインプットメソッドがキー配列を上書きしているために発生します。
xrdp_keyboard.ini を編集することで、「本来」が日本語キーボードに変わるので、
1回目の接続時だけインプットメソッドが日本語キーボードを日本語キーボードに上書き、
2回目以降はxrdp側の日本語キーボードの設定が適用されるという状態になります。
1回目もインプットメソッドがキー配列を上書きしているのには変わりないのですが、
日本語から日本語へ上書きしているので、見かけ上はうまく動くようになります。
ご指示頂いた通りの作業で、2回目以降の接続でも日本語キーボードとすることができました。
> もしかして、WindowsにIMEを3つ以上インストールしていますか?
windowsにはIMEは2つしかインストールされていません。
> ただ、ログに残されたkeylayoutの値がxrdp_keyboard.iniの中に見つからない場合、
> 本来なら英語キーボードになるはずでした。今回の環境の場合は、
> 「2回目以降の接続で日本語キーボードのはずが英語キーボードになる」
> のではなく、実は
> 「英語キーボードになるはずが、1回目だけ日本語キーボードになってしまう」
> という現象なのです。これは、本来1回目から英語キーボードになるべきところを
> 1回目の接続時だけiBusなどのインプットメソッドがキー配列を上書きしているために発生します。
>
> xrdp_keyboard.ini を編集することで、「本来」が日本語キーボードに変わるので、
> 1回目の接続時だけインプットメソッドが日本語キーボードを日本語キーボードに上書き、
> 2回目以降はxrdp側の日本語キーボードの設定が適用されるという状態になります。
> 1回目もインプットメソッドがキー配列を上書きしているのには変わりないのですが、
> 日本語から日本語へ上書きしているので、見かけ上はうまく動くようになります。
そういう動きをしているのですね。
大変勉強になりました。
早急にご回答を頂きまして大変助かりました。
ありがとうございました。