xrdpへの再接続時にキーボードが英語になってしまう xrdp:Version 0.9.4 on MateDesktop @ ubuntu16.04 from windows7

1,867 views
Skip to first unread message

kii tosu

unread,
Oct 17, 2017, 8:23:15 PM10/17/17
to 日本xrdpユーザ会 (The "xrdp" Users' Group Japan)
●環境
接続元:windows7 professional service pack 1
接続先:ubuntu16.04 64bit mate-desktop
XRDP:version0.94

●インストール手順
こちらのページを参考にしてインストールしました。
〔備忘録〕 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を再起動、再度接続すると日本語キーボードになります。


なにかわかることや、調査のためにできることがありましたら教えてください。
よろしくお願いいたします。

meta

unread,
Oct 17, 2017, 8:58:13 PM10/17/17
to 日本xrdpユーザ会 (The "xrdp" Users' Group Japan)
こんにちは。

まず、インストール方法としては妥当だと思います。

> 一度サービスセッションを終了し、再度接続します。

というのは、どういう状態でしょうか。ただ単にクライアントを✗ボタンで終了した状態ですか?
原因はいくつか考えられますが、まず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:

kii tosu

unread,
Oct 17, 2017, 9:15:38 PM10/17/17
to 日本xrdpユーザ会 (The "xrdp" Users' Group Japan)
>というのは、どういう状態でしょうか。ただ単にクライアントを✗ボタンで終了した状態ですか?

ご想像いただいたとおりです。

> [20171018-08:58:48] [INFO ] Loading keymap file /usr/local/etc/xrdp/km-00000409.ini
>
>というようなログと、前後5行程度をみせてください。

以下に御連絡いたします。
------------------------------------------------
[20171018-10:06:40] [DEBUG] Security layer: requested 3, selected 1
[20171018-10:06:40] [INFO ] connected client computer name: XXXXXXXX
[20171018-10:06:40] [INFO ] TLS connection established from XXX.XX.XX.XXX port 55467: TLSv1.2 with cipher AES256-GCM-SHA384
[20171018-10:06:40] [DEBUG] xrdp_00001a70_wm_login_mode_event_00000001
[20171018-10:06:40] [INFO ] Cannot find keymap file /etc/xrdp/km-e0220411.ini
[20171018-10:06:41] [INFO ] Loading keymap file /etc/xrdp/km-00000411.ini
[20171018-10:06:41] [WARN ] local keymap file for 0xe0220411 found and doesn't match built in keymap, using local keymap file
[20171018-10:06:45] [DEBUG] xrdp_wm_log_msg: connecting to sesman ip 127.0.0.1 port 3350
[20171018-10:06:45] [INFO ] xrdp_wm_log_msg: sesman connect ok
[20171018-10:06:45] [DEBUG] xrdp_wm_log_msg: sending login info to session manager, please wait...
[20171018-10:06:45] [DEBUG] return value from xrdp_mm_connect 0
------------------------------------------------

> [308732.694] rdpClientConProcessMsgClientInfo:
>
>行から20行程度を見せてください。

以下に御連絡いたします
------------------------------------------------
[ 2931.454] rdpClientConProcessMsgClientInfo:
[ 2931.454] got client info bytes 5744
[ 2931.454] jpeg support 0
[ 2931.454] offscreen support 1
[ 2931.454] offscreen size 10485760
[ 2931.454] offscreen entries 100
[ 2931.454] rdpClientConProcessMsgClientInfo: got RFX capture
[ 2931.454] cap_width 1920 cap_height 1088
[ 2931.454] rdpClientConProcessMsgClientInfo: shmemid 8814623 shmemptr 0x7f673f9e1000 bytes 8355840
[ 2931.454] client can not do offscreen to offscreen blits
[ 2931.454] client can do new(color) cursor
[ 2931.454] client can not do multimon
[ 2931.454] rdpRRSetRdpOutputs: numCrtcs 1 monitorCount 0
[ 2931.454] rdpRRSetRdpOutputs: update output 0 left 0 top 0 width 1920 height 1080
[ 2931.454] rdpLoadLayout: keylayout 0xe0220411 variant display 10
[ 2931.455] rdpkeybChangeKeyboardControl:
[ 2931.455] rdpkeybChangeKeyboardControl: autoRepeat on
[ 2931.455] rdpkeybChangeKeyboardControl:
[ 2931.455] rdpkeybChangeKeyboardControl: autoRepeat off
[ 2931.455] rdpkeybChangeKeyboardControl:
------------------------------------------------

以上です。
よろしくお願いいたします。

meta

unread,
Oct 17, 2017, 9:46:53 PM10/17/17
to 日本xrdpユーザ会 (The "xrdp" Users' Group Japan)
見たところ、直接の原因は

> [ 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回目もインプットメソッドがキー配列を上書きしているのには変わりないのですが、
日本語から日本語へ上書きしているので、見かけ上はうまく動くようになります。

kii tosu

unread,
Oct 17, 2017, 9:55:16 PM10/17/17
to 日本xrdpユーザ会 (The "xrdp" Users' Group Japan)
> /etc/xrdp/xrdp_keyboard.ini の中に
>
> > rdp_layout_jp=0xe0210411
>
> という行があるので、その下に
>
> > rdp_layout_jp=0xe0220411
>
> という行を追加してみてください。xrdpの再起動は必要ないと思います。

ご指示頂いた通りの作業で、2回目以降の接続でも日本語キーボードとすることができました。

> もしかして、WindowsにIMEを3つ以上インストールしていますか?

windowsにはIMEは2つしかインストールされていません。

> ただ、ログに残されたkeylayoutの値がxrdp_keyboard.iniの中に見つからない場合、
> 本来なら英語キーボードになるはずでした。今回の環境の場合は、
> 「2回目以降の接続で日本語キーボードのはずが英語キーボードになる」
> のではなく、実は
> 「英語キーボードになるはずが、1回目だけ日本語キーボードになってしまう」
> という現象なのです。これは、本来1回目から英語キーボードになるべきところを
> 1回目の接続時だけiBusなどのインプットメソッドがキー配列を上書きしているために発生します。
>
> xrdp_keyboard.ini を編集することで、「本来」が日本語キーボードに変わるので、
> 1回目の接続時だけインプットメソッドが日本語キーボードを日本語キーボードに上書き、
> 2回目以降はxrdp側の日本語キーボードの設定が適用されるという状態になります。
> 1回目もインプットメソッドがキー配列を上書きしているのには変わりないのですが、
> 日本語から日本語へ上書きしているので、見かけ上はうまく動くようになります。

そういう動きをしているのですね。
大変勉強になりました。

早急にご回答を頂きまして大変助かりました。
ありがとうございました。

Reply all
Reply to author
Forward
0 new messages