LoginSignup
0
0

英語キーボードが接続されたWindowsからxrdpが動作するLinux環境へRDP接続する際、日本語キーボードとして誤って認識される問題へのとりあえずの対応方法

Last updated at Posted at 2024-05-05

はじめに

英語キーボード(USキーボード)が接続されたPC上のWindowsの「リモートデスクトップ接続」(mstsc.exe)からxrdpが動作するLinux環境へRDP接続する際、なぜか日本語キーボードとして誤って認識されることがあります。(Windows以外のMacやLinuxからRDP接続する場合は問題なく端末のキーボードと同じキーマップで認識される)

原因

RDP接続する際に、日本語キーボードのキーマップを参照していることが原因となります。Windowsからxrdpのログレベルをinfoにすることで、原因を確認することができます。

以下のログを見てみると、 km-e0010411.ini あるは km-00000411.ini がキーマップファイルとして参照されています。

[20240505-14:38:50] [INFO ] xrdp_load_keyboard_layout: model [] variant [] layout [us] options []
[20240505-14:38:50] [INFO ] Non-TLS connection established from ::ffff:192.168.1.46 port 52798: with security level : high
[20240505-14:38:50] [INFO ] xrdp_caps_process_pointer: client supports new(color) cursor
[20240505-14:38:50] [INFO ] xrdp_process_offscreen_bmpcache: support level 1 cache size 7864320 MB cache entries 100
[20240505-14:38:50] [INFO ] xrdp_caps_process_codecs: nscodec, codec id 1, properties len 3
[20240505-14:38:50] [WARN ] xrdp_caps_process_codecs: unknown codec id 5
[20240505-14:38:50] [WARN ] Cannot find keymap file /etc/xrdp/km-e0010411.ini
[20240505-14:38:50] [INFO ] Loading keymap file /etc/xrdp/km-00000411.ini

/etc/xrdp/xrdp_keyboard.ini を参照すると、当該キーマップファイルは日本語キーボードに対応するものであることがわかります。

; A list of supported RDP keyboard layouts
rdp_layouts=default_rdp_layouts
; The map from RDP keyboard layout to X11 keyboard layout
layouts_map=default_layouts_map

[default_rdp_layouts]
rdp_layout_us=0x00000409
rdp_layout_us_dvorak=0x00010409
rdp_layout_us_dvp=0x19360409
rdp_layout_dk=0x00000406
rdp_layout_de=0x00000407
rdp_layout_es=0x0000040A
rdp_layout_fi=0x0000040B
rdp_layout_fr=0x0000040C
rdp_layout_it=0x00000410
rdp_layout_jp=0x00000411
rdp_layout_jp=0xe0010411
rdp_layout_jp=0xe0200411
rdp_layout_jp=0xe0210411
rdp_layout_kr=0x00000412
rdp_layout_no=0x00000414
rdp_layout_pl=0x00000415
rdp_layout_br=0x00000416
rdp_layout_ru=0x00000419
rdp_layout_se=0x0000041D
rdp_layout_ch=0x00000807
rdp_layout_ch_fr=0x0000100C
rdp_layout_gb=0x00000809
rdp_layout_latam=0x0000080A
rdp_layout_be=0x00000813
rdp_layout_pt=0x00000816

; <rdp layout name> = <X11 keyboard layout value>
[default_layouts_map]
rdp_layout_us=us
rdp_layout_us_dvorak=dvorak
rdp_layout_us_dvp=us(dvp)
rdp_layout_dk=dk
rdp_layout_de=de
rdp_layout_es=es
rdp_layout_fi=fi
rdp_layout_fr=fr
rdp_layout_it=it
rdp_layout_jp=jp
rdp_layout_kr=kr
rdp_layout_no=no
rdp_layout_pl=pl
rdp_layout_br=br(abnt2)
rdp_layout_ru=ru
rdp_layout_se=se
rdp_layout_ch=ch
rdp_layout_ch_fr=ch(fr)
rdp_layout_gb=gb
rdp_layout_latam=latam
rdp_layout_be=be
rdp_layout_pt=pt

手順

あまり適切な手順ではありませんが、とりあえず当該環境へ接続時にUSキーボードとして認識させたい(強制的にUSキーボードとして認識させたい)場合は、次の方法で対応が可能です。例えば、常にUSキーボードしか使わないといった場合は、この方法でも困ることはないでしょう。

なお、本設定を行うと、日本語キーボードが接続された端末の場合も、当該環境に対するRDP接続時のキーマップはUSキーボードになります。このため、日本語キーボードで当該環境へRDP接続する際は設定を元に戻す必要があります。

USキーボードとして強制的に認識させる

# cd /etc/xrdp
# mv km-00000411.ini km-00000411-org.ini
# ln -s km-00000409.ini km-00000411.ini

日本語キーボードを利用する(元に戻す)

# cd /etc/xrdp
# rm km-00000411.ini
# mv km-00000411-org.ini km-00000411.ini
0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0