xrdpでカーソルキーがエンターと誤入力される件

なにやら、Linux端末からxrdpサーバーへ接続してみるとキーの反応がおかしい。

アプリケーションによってはカーソルキーの「↓」を押すとEnterキーが押されたことになってしまう様子。使用するアプリによってはかなりメンドクサイかもしれない。
※正確にはNumericEnterでテンキー側のエンターキーと認識されてる

key-event-viewerの出力結果

https://w3c.github.io/uievents/tools/key-event-viewer.html

■develop版のxrdpに変えて解決

現象を確認したのは xrdp v0.10.1でしたが、どうやらその先のv0.10.2でも解消されていないようで急遽develop版に差し替えてみることに。

サーバーにはv0.10.1をインストールした時の名残があるので

git switch –

でdevelopになっていることを確認してから

git pull

けっこう激しく変更があったようで、ダウンロードに少し時間がかかっていた。

pull後は

./bootstrap
./configure –enable-fuse –enable-mp3lame –enable-pixman
make
sudo make install

と、いつも通りの手順でインストール完了。xrdpxorgも忘れずに同じ要領で。

念のためにバージョンを確認すると v0.10.80 となっていた。

サーバーをrebootし、再起動後は無事に「↓」がArrowDownと認識されるようになりメデタシメデタシ。なんのことはない単純なバグが残っていたのだね。

key-event-viewerで正常に戻った結果

■しかしMacBookでは「_」が入らない

ここで新たな罠が。

Windows端末からログインする分にはなんの問題もなくなったのだけれど、MacOS端末からログインするとアンダースコア「_」が入らない

そのほかにも記号が刻印とずいぶんズレてしまう。

いったい誰が悪いんだろう?RDPに使っているWindowsAppが悪さしているのか?

■なぜかusキー判定

なかなか深みにはまっていってる予感。

ひとまず自分の端末がどんな値を送ってきているのか調べてみる。

sudo cat /var/log/xrdp.log

すると、直近の接続では keyboard_type=4, keyboard_subtype=0, keylayout=0x00000000 と!

私のはそんなこだわりもなく日本市場のMacBookで日本語キーボード。それなのに0x00000000が送信されていることで、受信した側のxrdpではusキー端末がログインしてきたと判定されているっぽい。

■キーボードレイアウト設定が変?

xrdpの設定なんか触れたことないぞ、とブツブツつぶやきながら設定を覗いてみると /etc/xrdp/xrdp_keyboard.ini なんてファイルがある。

でもこのファイル、中身をみても何を定義したいのだか理解しがたい構造。

あれこれ試してみてようやく、キーボードタイプやレイアウトの値を受け取って、最終的にキー配列が 「jp」 とか 「us」 とかいった値を導きだす目的のものなのかとひとまず理解した。

■本来はkm-00000406?

超絶詳しい方に聞いてみたところ、本来はMacOS(日本語キー)では0x00000406が送られてくるものらしい。でも私のはなぜか0x00000000しか出してこない。
※たまにそういうMacOS機がいるらしいとか。

そして、0x00000000を受け取ったxrdp側は、xrdp_keyboard.iniの設定に書かれている通り0x00000000に合致するものはusキーだと値を返してくるし、異なったキーマップなので日本語キーボードの刻印とはちがった記号が入力されてしまうということらしい。

ならば多少強引だけれども、/etc/xrdp/km-00000406.ini をコピーして km-00000000.iniとして置き換えてみたらどうかと試行すると、ある程度はちゃんと動作する。

でも、アンダースコアが”=”になったり、まったくなにも出なかったり。わりと困る。

■キーマップを作り直す

もういちどxrdp.logを見てみると、こんどはkm-00000000.tomlが存在しないという記録が残っていた。たしかにそんなファイルは存在しない。

キーマップってkm-????????.iniじゃないのか?と思って調べてみると確かにkm-????????.tomlも在るようで、ちょっと書式が違って人間がわかりやすい書き方である、という説明もあるものの大差ない気もするなあ。

特に今回はkm-00000000.iniを用意していたにもかかわらずログにはkm-00000000.tomlが無いと要求されているので、やむなく手探り状態でキーマップを作ってみることに。

キーマップを作製するコマンドがあるようなので以下を試してみる。

xrdp-genkeymap km-00000000.toml

これで作成されたkm-00000000.tomi を /etc/xrdp/以下に配置し、rdp接続しなおすことでキーマップが見つからないよ!っていうログは出なくなった。

しかも、ちゃんとアンダースコアが入力できるようになっているではないか(^^)素晴らしい

■とりあえずはOKとして…

当面はこれで問題なしとして、まだちょっとこだわらないといけないポイントがありそう。

と思っていたら「¥」はどこに行ったのだろうとか「\」(←環境によっては¥表示かな)はどうやって出すんだ?とかいった問題があることに気づいてしまった。

もともと私のMacBookのキーボードでは右下「ろ」にあたる位置にはバックスラッシュの割り当てがないので見逃していて、シフトキーを押しても押さなくても「_」が出るじゃないかサービス満点なキーマップだな、などと呑気なことを考えていた。

しかし本当に世の中にはキーボードの種類が多すぎる。言語がいくつもあるのだから仕方ないにしても、同じ言語圏でいくつもあるのは勘弁してほしい。
※以前ロシア語を学んでいた時もキリル文字のキーボード多いなと思ったものだが

■なんだかんだでキーマップを複製

あれこれと設定を試してみていると、どうも jp レイアウトと判定されることにこだわる必要性は低そうで、us 判定のままでも問題ない感じ。

ならば、レイアウトはwindows端末が送信してくるものを複製しちゃおう、と
km-00000411.toml を km-00000000.toml として複製

なんとなくそれだけで大丈夫そうではあるけれど、念のために xrdp_keybboard.ini にも追記。内容はMacではなくWindowsにあわせちゃう。

[rdp_layout_mac_jp]
keyboard_type=4
keyboard_subtype=0
rdp_layouts=default_rdp_layouts
layouts_map=default_layouts_map

いざ、接続してみるとちゃんと「¥」が出る!「_」も出る。そのほかの記号もちゃんと刻印通りに出ている、素晴らしい(^^)

あとはこれで、他のキー配列の端末が同じ0x00000000を送ってこないことを祈るばかり。


安心安全安価なSDカードデータ復元・HDDデータ復元は
長年の信頼と実績の『株式会社パソコントラブル救助隊』へ。
https://hqsecure.net/

ミスタイプを減らすために一工夫

キーボードでの文字入力でミスタイプを連続してしまうとちょっとモヤモヤすることがありますよね、あるいはまだ気づいた時は良いのですが気づかずにメール送信ボタンを押してしまってから「あっ!!」って小恥ずかしい気持ちに陥ることもしばしば。

なんとなくそんな状況に対策を打つことができたらなあ、などと普段から考えたりするわけなのですが…

■ビジネス用からゲーミングキーボードへ

いま現在、わたしは仕事用にゲーミングキーボードとやらを使わせてもらっているので、ちゃんとそれなりの活用をしたらもっと状態を改善できるのではないかな?と模索してみることにしました。あれこれ設定できるキーボードですから活用してみないともったいないですし。

LogicoolのG512というゲーミングキーボードなのですが、ゲーミングとは言っても実際にはキーの打鍵感が良いので手っ取り早く(しかも割と安価に)入手できるメカニカルキーボードを仕事用として活用されている方も多いと聞きます。

かくいう私もその一人で、外観の良さに惚れたMX KEYSからわざわざG512という、静音薄型キーボードから重厚でウルサイメカニカルキーボードへの180度方針転換した乗り換えはちょっといかがなもんかと思いましたが・・・使ってみると癖になります。
※しかもMX KEYSと比較しておよそ半額ですし

■キーの色を個別に変えてみることに

実使用上はとくになにも設定しなくても良いのですが、ゲーミングキーボードってばキー1つ1つにLEDが仕込まれていて、設定しだいでそれぞれのキーを別々の色に設定したり、タッチすると波打つように光が流れていったりいろんなライティングアクションが楽しめます。

Logicoolの場合は専用のツールが配布されており、Logi Options+をインストールすることで手軽に細かな設定ができるようになります。

■ピカピカ光るのって要る??

ピカピカ光るのってまったく無意味だと個人的には思っていたのですが、

あるときふと、あまり間違って押したくないキー(で、なおかつ無効にはしたくないキー)は別の色で光らせておけば注意喚起になるんじゃないか?と試してみたわけです。

すると、案外自分でも意識しないうちにキーを見る習慣がついていたのか、間違えて押す機会が激減したのですね。

そこで、さらにホームポジション「F」と「J」のキーも他とは別の色にしてしまえーと弄ってしまいました(といっても本当に簡単に画面上で個別の色を指定するだけなのですが)

私の場合、キーボードの基本色はライトブルーで、ファンクションキーと「Win」「Menu」はオレンジ、ホームポジションの「F」「J」の2コはレッドに設定しました。
※テンキーの「5」と「BS」「DEL」も色分けしても良さそうですが。

するとやはり、それなりにミスタイプが減ったような・・・ただの気のせいかもしれませんが。

これは案外初級者用のパソコン教室なんかで使えるネタなのではないかと思ったりします。ちょっとどこかのスクールでこの方法を採用して実測データ取ってみてほしいなあ。


消えちゃった動画や写真データの復元は
安心安全な『株式会社パソコントラブル救助隊』へ。
https://hqsecure.net/