X11RDP のキーマップについて

916 views
Skip to first unread message

Akira Taniguchi

unread,
Dec 19, 2014, 2:21:25 PM12/19/14
to xrd...@googlegroups.com
はじめまして。谷口と申します。

ログイン後のキーマップが正しくならないのでご相談をお願いいたします。


経過は以下の通りです。

1. Xubuntu 12.04.5 amd64
2. X11RDP-o-Matic を使わせてもらいインストール
3. km-0411.ini を適用

4. Windows 8 の RDP クライアントで接続
5. ログイン画面ではjp レイアウトで正しくキー入力ができた

6. ログイン後(Xfce4)は us レイアウトとなった
7. 設定「キーボード」「システムデフォルトを使用」のチェックを外すと、次回ログイン後よりデスクトップがクラッシュしてRDPクライアントが終了
8. ローカルでログインして、設定「キーボード」「システムデフォルトを使用」のチェックをして復旧

9. コマンド "$ setxkbmap -layout jp" で jp レイアウトになった
10. jp レイアウトになったが以下の不具合
11. Yen / Henkan /muhenkan キーが入力できない
12. /opt/X11rdp/share/X11/xkb/keycodes/evdev と xev で確認したキーコードが異なっていた。


<HENK> = 100; // Henkan; xev 129
<MUHE> = 102; // Muhenkan; xev 131
<AE13> = 132; // Yen; xev 133

13. /opt/X11rdp/share/X11/xkb/keycodes/evdev を修正したらとりあえず入力できるようになった

//<HENK> = 100; // Henkan; xev 129
//<MUHE> = 102; // Muhenkan; xev 131
//<AE13> = 132; // Yen; xev 133
<HENK> = 129; // Henkan
<MUHE> = 131; // Muhenkan
<AE13> = 133; // Yen

//<HJCV> = 131; // Hung...

14. しかし、左Winキーを押しても 131 が返されるため、Yen が入力されてしまう
15. やはり根本的な対応が必要
16. X11RDP で キーレイアウトが jp の場合のマッピングを行う必要があるはず


以上の経過なのですが、修正箇所を調べるご協力をして頂けないでしょうか?
X11RDP は素晴らしいので、なんとかしたいと思っています。

Akira Taniguchi

unread,
Dec 21, 2014, 3:22:01 PM12/21/14
to xrd...@googlegroups.com
km-0411.ini を適用し、以下のファイルを修正してビルド・インストールしたところ、正しく入力できました。
xrdp/xorg/X11R7.6/rdp/rdpkeyboard.h
xrdp/xorg/X11R7.6/rdp/rdpkeyboardevdev.c

Akira Taniguchi

unread,
Dec 21, 2014, 3:35:16 PM12/21/14
to xrd...@googlegroups.com
git 自体を使い慣れていないため、まだ github に投稿出来ていません。
とりあえず現時点での master 用の差し替えファイルをアップロードしておきますので、興味のある方はご確認をお願いします。
rdpkeyboard.h
rdpkeyboardevdev.c

Koichiro IWAO

unread,
Dec 21, 2014, 7:46:21 PM12/21/14
to xrd...@googlegroups.com
ありがとうございます。

実は先日日本語キーボード対応の変更がマージされたところです。km-0411.ini を
手でインストールする必要がなくなったのと、km-0411.ini が使われた場合は RDP
クライアントから接続したタイミングで、X 側のキーマップが自動的に変更される
ようになりました。まだいくつか確認しなければならない点はありますが、いちど
devel ブランチで確認して頂けますか?
https://github.com/neutrinolabs/xrdp/pull/194

これによりユーザ会のキー配列のページの情報が古くなったのですが、書き換えが
追いついていません。まだ rdpkeyboardevdev.c の内容は詳しく確認していないの
ですが、いずれ本家にマージすることも考えると devel ブランチに対して書き換え
と動作確認を行った方がいいと思います。

それと git を使い慣れていないとのことなので、
$ git clone -b devel https://github.com/neutrinolabs/xrdp
(ファイル書き換え)
$ git diff | tee hogehoge.patch
で出力したパッチ形式のファイルを添付して頂くと、こちらでも動作確認しやすい
ので助かります。

2014-12-22 05:35 に Akira Taniguchi さんは書きました:
> git 自体を使い慣れていないため、まだ github に投稿出来ていません。
> とりあえず現時点での master 用の差し替えファイルをアップロードしておきますので、興味のある方はご確認をお願いします。

--
`whois vmeta.jp | nkf -w`
meta <me...@vmeta.jp>

Akira Taniguchi

unread,
Dec 22, 2014, 4:49:42 AM12/22/14
to xrd...@googlegroups.com
返信ありがとうございます。

> それと git を使い慣れていないとのことなので、
> $ git clone -b devel https://github.com/neutrinolabs/xrdp
> (ファイル書き換え)
> $ git diff | tee hogehoge.patch
> で出力したパッチ形式のファイルを添付して頂くと、こちらでも動作確認しやすい
> ので助かります。

お教え頂いた手順でパッチファイルを作成いたしましたので、可能であれば検証をお願い致します。

github にブランチを作成すれば X11rdp-o-matic.sh の XRDPGIT, XRDPBRANCH を修正して検証出来そうですのでやってみます。

rdpkeyboard_jp_20141222.patch

Akira Taniguchi

unread,
Dec 22, 2014, 7:45:00 AM12/22/14
to xrd...@googlegroups.com
> github にブランチを作成すれば X11rdp-o-matic.sh の XRDPGIT, XRDPBRANCH を修正して検証出来そうですのでやってみます。

devel ブランチでテストしてみましたが、以下の問題がありました。

・ログイン画面で "\ |" キーが入力できない
・ログイン後、自動的に rule: base, model: pc105, jp となった
・ログイン後、"\ _" キー、変換キーが入力できない

対応

・master ブランチで適用していた km-0411.ini に差し換えると、ログイン画面で "\ |" キーが入力できるようになる
・キーボードのルールが master ブランチでは evdev だったのが base になっていたため、全く別の修正が必要になる

Akira Taniguchi

unread,
Dec 22, 2014, 10:04:30 AM12/22/14
to xrd...@googlegroups.com
安定版を使用したい方がほとんどだと思いますので、動作検証ができた master 用のブランチを公開します。
最新版に修正が反映されるまでの繋ぎとして、自己責任でご利用ください。


1. X11RDP-o-Matic を取得してください。

$ git clone --depth 1 -b v3.10 https://github.com/scarygliders/X11RDP-o-Matic.git

2. X11RDP-o-Matic/X11rdp-o-matic.sh の該当部分を修正します。

XRDPGIT=https://github.com/AkiraPenguin/xrdp.git
XRDPBRANCH=master_rdpkeyboard_jp_20141222

3. 今まで通りにビルド・インストールしてください。

$ cd X11RDP-o-Matic
$ sudo ./X11rdp-o-matic.sh --justdoit

4. km-0411.ini を適用してください。

$ cd /etc/xrdp
$ sudo wget http://w.vmeta.jp/temp/km-0411.ini
$ sudo ln -s km-0411.ini km-e0200411.ini
$ sudo ln -s km-0411.ini km-e0010411.ini

5. デスクトップへログインします。

6. 日本語キーボード配列にします。

(ターミナルなどで) $ setxkbmap -model pc105 -layout jp

7. デスクトップの自動起動するアプリに以下を追加してください。

setxkbmap -model pc105 -layout jp

Koichiro IWAO

unread,
Dec 23, 2014, 1:09:54 AM12/23/14
to xrd...@googlegroups.com, Akira Taniguchi
検証ありがとうございます。

不定期に devel → master へのマージが行われているので、いずれ master ブランチも devel ブランチに追いついて
evdev から base に変わります。

> ・ログイン後、自動的に rule: base, model: pc105, jp となった

これが先日マージされた修正によるものです。RDP接続時にクライアント側のキー配列を、サーバ側のXにも同時に
適用します。
https://github.com/neutrinolabs/xrdp/pull/194

> ・ログイン画面で "\ |" キーが入力できない
> ・ログイン後、"\ _" キー、変換キーが入力できない

こちらでも検証してみましたが、何も変更を加えない状態の devel ブランチで入力できないのはログイン後の
"\ _" キーのみでした。先日マージされた版の km-0411.ini はログイン画面で "\ _" が入力できることを確認
して作ったのですが、クライアント側の環境によって xrdp に渡されるキーコードが少し違うのかもしれません。

master ブランチでは対象のキーが複数ありましたが devel ブランチの base ルールで入力できないのは
こちらでは "\ _" キーだけでした。谷口さんの環境ではどうでしょうか? "\ _" キーだけ rdpkeyboardevdev.c
などを修正してすり替えてやれば、日本語キー配列が完全に使えるようになるのではないかと目論んでいます。
対象のキーが少ない分 master ブランチに比べて楽だと思います。


2014-12-22 21:45 に Akira Taniguchi さんは書きました:

Akira Taniguchi

unread,
Dec 23, 2014, 5:40:17 AM12/23/14
to xrd...@googlegroups.com, akira....@gmail.com
> こちらでも検証してみましたが、何も変更を加えない状態の devel ブランチで入力できないのはログイン後の
> "\ _" キーのみでした。先日マージされた版の km-0411.ini はログイン画面で "\ _" が入力できることを確認
> して作ったのですが、クライアント側の環境によって xrdp に渡されるキーコードが少し違うのかもしれません。


こちらでも Xubuntu 14.04 amd64 で再度検証致しました。


[ 検証用のブランチ ]

XRDPGIT=https://github.com/AkiraPenguin/xrdp.git
XRDPBRANCH=devel_rdpkeyboard_jp_20141222


[ ログイン画面について ]

km-0411.ini を確認したところ、以下の差異がありました。

master: Key133=92:92
devel: Key133=165:165

devel では Yen と Backslash を明確に別のキーとして扱う方針となったようです。
このため、ログイン画面で Yen キーを押してもなにも入力されなくなったようです。
"|"(Shift+Yen)は正常に入力されました。


[ デスクトップ画面について ]

"\ _" キーが入力出来ない原因を調査したところ、該当スキャンコード(115)が Home キーに誤変換されておりました。
明確なバグと思われますので、修正・検証したところ、正常に入力が出来るようになりました。
添付のパッチファイルをご確認ください。

また、Henkan キーが XF86AudioMedia へ割り当てられてしまうため認識されませんでした。
原因はよく分からないのですが、デスクトップのキーボード設定を

・「システムでフォルトを使用する」のチェックを外す
・標準 104 キー PC (標準 105 キー(国際) PC)
・日本語/日本語(OADG 109A)

と設定することにより回避できました。

自動実行するアプリで以下を実行してもよいと思われます。
/usr/bin/setxkbmap -model jp106 -layout jp

devel_rdpkeyboard_jp_20141222.patch

Akira Taniguchi

unread,
Dec 25, 2014, 11:27:40 AM12/25/14
to xrd...@googlegroups.com, akira....@gmail.com
コメントに誤りがあったり、修正前をコメントにしたりと、とりあえずの修正でしたので、ブランチを作成しなおして pull request しておきました。

あとはメンテナの判断に任せます。

Akira Taniguchi

unread,
Dec 25, 2014, 1:23:55 PM12/25/14
to xrd...@googlegroups.com, akira....@gmail.com
セッションを中断して再開した時に、また Henkan キーが XF86AudioMedia キーとされてしまいました。

$ setxkbmap -query
rules: base
model: pc105
layout: jp

このため、やはり、キーボード設定で「システムデフォルトを使用する」にチェックをした状態で、正しく入力できるように解決する必要がありました。

設定で回避できないかと /opt/X11rdp/share/X11/xkb/ 以下を"pc105" で検索を行っい、rules/base の 75 行目をコメントアウトしたところ、"pc105" を "inet" と判断しないようになり、正常に変換キーを入力できるようになりました。


しかし、以下の疑問があります。

このファイルは勝手に編集しても良いものかどうか?
jp 以外のレイアウトで pc105 は inet としなくてはならないのでは?

Akira Taniguchi

unread,
Dec 25, 2014, 1:42:42 PM12/25/14
to xrd...@googlegroups.com, akira....@gmail.com
以下のファイルの 75 行目をコメントアウトしないと、ログイン直後については inet と判断されてしまいます。

/opt/X11rdp/share/X11/xkb/rules/evdev

base のはずなのになぜか evdev の設定を読み込んでいるようです。

ログイン直後の rules/* を読み込む部分にバグが存在するように思われますので、どなたかデバッグして頂けないでしょうか?

Akira Taniguchi

unread,
Dec 25, 2014, 2:33:06 PM12/25/14
to xrd...@googlegroups.com, akira....@gmail.com
追試をしたところ、下記は誤りであることが判明しましたので取り消します。
Fcitx の設定が関係していたようです。


2014年12月26日金曜日 3時42分42秒 UTC+9 Akira Taniguchi:

Akira Taniguchi

unread,
Dec 26, 2014, 9:23:33 AM12/26/14
to xrd...@googlegroups.com, akira....@gmail.com
Henkan キーを XF86AudioMedia と判断してしまう現象について、以下の方法で対策できるようです。

・/opt/X11rdp/share/X11/xkb/rules/base の $inetkbds = で指定している pc105 (75 行目)をコメントにする(先頭に // を挿入する)。
・/usr/share/X11/xkb/rules/base の $inetkbds = で指定している pc105 (72 行目)をコメントにする(先頭に // を挿入する)。

私は PC キーボードで Mac ライクに「変換」「無変換」で入力モードをコントロールしているので、この問題が解決できないとかなり不便でした。


もし可能であれば、00000411 のキーボードを pc105 とするところを pc104 と修正できれば、上記の問題は発生しません。

Akira Taniguchi

unread,
Dec 28, 2014, 1:33:33 PM12/28/14
to xrd...@googlegroups.com, akira....@gmail.com
よく見るとコメントに書いてあったのですが、以下の方法での対応が想定されているようです。

・/etc/xrdp/xrdp_keyboard.ini の [rdp_keyboard_jp] セクションに model=pc104 と追加する。


上記を行えば、以下の設定は必要ありません。

2014年12月26日金曜日 23時23分33秒 UTC+9 Akira Taniguchi:

devel_jp_20141228.patch

kiwao

unread,
Dec 28, 2014, 10:15:24 PM12/28/14
to xrd...@googlegroups.com
はい、これはクライアントからの接続時に自動的に走るX側のキー配列を設定するもので、
暫定的に特にキーボードのモデルを指定せずに先日マージされていたものです。
基本的には xrdp_keyboard.ini などで全て設定し、ユーザ側でキー配列の設定や setxkbmap を
叩いたりせずとも、全て xrdp 側に任せてキー配列を正しく設定するのが最終目標です。


私が日本語キーボードをほとんど使わないため、どういう設定にするのが良いか
決めかねていたところだったので
、色々情報を頂き助かりました。

これは私の方で再度プルリクエストを送って処理しておきます。


2014/12/29 3:33、Akira Taniguchi <akira....@gmail.com> のメッセージ:
> --
> 日本xrdpユーザ会: http://xrdp.vmeta.jp/
> ---
> このメールは Google グループのグループ「日本xrdpユーザ会」の登録者に送られています。
> このグループから退会し、グループからのメールの配信を停止するには xrdp-jp+u...@googlegroups.com にメールを送信してください。
> このディスカッションをウェブ上で閲覧するには、https://groups.google.com/d/msgid/xrdp-jp/5329256a-ab44-4c4c-9fd7-710abe9566c4%40googlegroups.com にアクセスしてください。
> その他のオプションについては、https://groups.google.com/d/optout にアクセスしてください。
> <devel_jp_20141228.patch>

kiwao

unread,
Dec 28, 2014, 10:16:41 PM12/28/14
to xrd...@googlegroups.com
入れ違いでしたが、谷口さんの方で既にPRされていたようなのでお任せします。


2014/12/29 3:33、Akira Taniguchi <akira....@gmail.com> のメッセージ:

Akira Taniguchi

unread,
Dec 28, 2014, 10:28:05 PM12/28/14
to xrd...@googlegroups.com
今回はちょっとした修正であったため、勉強がてら PR いたしました。
デフォルトの"pc105"でなければ問題ないようなので"jp106"としています。

複雑な修正についてはお手上げですので、今後もよろしくお願いいたします。


2014年12月29日月曜日 12時16分41秒 UTC+9 meta:
> 入れ違いでしたが、谷口さんの方で既にPRされていたようなのでお任せします。

Akira Taniguchi

unread,
Dec 28, 2014, 10:29:35 PM12/28/14
to xrd...@googlegroups.com
"\ _" キーについての PR(#205)は、無事にdevelブランチへマージされました。

Akira Taniguchi

unread,
Dec 29, 2014, 7:06:52 AM12/29/14
to xrd...@googlegroups.com
変換キーについての PR(#206)は、無事にdevelブランチへマージされました。

ありがとうございました。

Reply all
Reply to author
Forward
0 new messages