技術的ひとりごと(備忘録)

いろいろな備忘録的な何か

Remmina で RDP 接続した際、キーボードが英語キーボードとして認識される問題の回避策 @ ubuntu

 表題の件について力技で何とか出来たので、メモ書き。

 

背景

 

発生した問題

  • 相手がWindowsということで、RDP接続で済ませようと思ったが問題発生。
  • ubuntu に初期インストールされていた XfreeRDP や Remmina を使って接続すると、キーボードが英語キーボードとして認識される現象が100%の確率で起こる状態になっていた。
  • 例えば、半角/全角を押すと ` が出たり、" を押すと @が出たり…。

 

回避方法

  • 下記のページを見ると、xfreerdpについては、git に上がってるソースからビルドすれば問題起きないと書いていた。

【なんとなく】

http://takeshich.hatenablog.com/entry/2013/10/19/152845

  •  上記を参考にいろいろ試したところ、Remmina 含めてキーボードがちゃんと認識されるようになった。
  • 対応手順を以下に殴り書き。

※作業ディレクトリを /home/hoge とする。

 

 1. XfreeRD をソースからビルド

(1) ソースの入手

# cd /home/hoge

# git clone git://github.com/FreeRDP/FreeRDP.git

# cd FreeRDP

 

(2) 関連モジュールのインストール

# sudo apt-get install build-essential git-core cmake libssl-dev libx11-dev libxext-dev libxinerama-dev  libxcursor-dev libxdamage-dev libxv-dev libxkbfile-dev libasound2-dev libcups2-dev libxml2 libxml2-dev  libxrandr-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev

 

※パッケージ情報のネタ元

https://github.com/FreeRDP/FreeRDP/wiki/Compilation#linux-specifics

 

(3) ビルド&インストール

# cmake .

# make

# make install

 

2. XfreeRDPのモジュールを配置

以下のファイルは手動でコピーする必要がありそう。

(1) libfreerdp-core.so

# cp -pi /home/hoge/FreeRDP/libfreerdp/core/libfreerdp-core.so.1.2.0 /usr/local/lib/libfreerdp-core.so.1.2.0

# ln -s /usr/local/lib/libfreerdp-core.so.1.2.0 /usr/local/lib/libfreerdp-core.so.1.2

# ln -s /usr/local/lib/libfreerdp-core.so.1.2.0 /usr/local/lib/libfreerdp-core.so

 

(2) libfreerdp-gdi.so

# cp -pi /home/hoge/FreeRDP/libfreerdp/gdi/libfreerdp-gdi.so.1.2.0 /usr/local/lib/libfreerdp-gdi.so.1.2.0

# ln -s /usr/local/lib/libfreerdp-gdi.so.1.2.0 /usr/local/lib/libfreerdp-gdi.so.1.2

# ln -s /usr/local/lib/libfreerdp-gdi.so.1.2.0 /usr/local/lib/libfreerdp-gdi.so

 

(3) libfreerdp-locale.so

# cp -pi /home/hoge/FreeRDP/libfreerdp/locale/libfreerdp-locale.so.1.2.0 /usr/local/lib/libfreerdp-locale.so.1.2.0

# ln -s /usr/local/lib/libfreerdp-locale.so.1.2.0 /usr/local/lib/libfreerdp-locale.so.1.2

# ln -s /usr/local/lib/libfreerdp-locale.so.1.2.0 /usr/local/lib/libfreerdp-locale.so

 

(4) libfreerdp-codec.so

# cp -pi /home/hoge/FreeRDP/libfreerdp/codec/libfreerdp-codec.so.1.2.0 /usr/local/lib/libfreerdp-codec.so.1.2.0

# ln -s /usr/local/lib/libfreerdp-codec.so.1.2.0 /usr/local/lib/libfreerdp-codec.so.1.2

# ln -s /usr/local/lib/libfreerdp-codec.so.1.2.0 /usr/local/lib/libfreerdp-codec.so

 

(5) libfreerdp-client.so

# cp -pi /home/hoge/FreeRDP/client/common/libfreerdp-client.so.1.2.0 /usr/local/lib/libfreerdp-client.so.1.2.0

# ln -s /usr/local/lib/libfreerdp-client.so.1.2.0 /usr/local/lib/libfreerdp-client.so.1.2

# ln -s /usr/local/lib/libfreerdp-client.so.1.2.0 /usr/local/lib/libfreerdp-client.so

 

3.  XfreeRDPのモジュールのパスを通す

(1) 定義ファイル作成

 # vi /etc/ld.so.conf.d/xfreerdp.conf

 -------- 以下のテキストを追加 --------

/usr/local/lib/libfreerdp-core.so.1.2

/usr/local/lib/libfreerdp-gdi.so.1.2

/usr/local/lib/libfreerdp-locale.so.1.2

/usr/local/lib/libfreerdp-codec.so.1.2

/usr/local/lib/libfreerdp-client.so.1.2

----------------------------------------

 (2) 反映

# ldconfig

 

4. remmina をソースからビルド

 (1) ソースの入手

# cd /home/hoge

# git clone git://github.com/FreeRDP/Remmina.git

# cd Remmina

 

(2) 関連モジュールのインストール

# sudo apt-get install "Remmina の READMEで指定されているモジュール全て"

 

(3) ビルド&インストール

# cmake .

# make

# make install

 

5. ubuntuをリブートする。

- 念のための対応。

 

6. RDP接続側のマシンにて、RDP接続に使用するユーザをログオフ状態にしておく。

- RDP接続時のキーマップはログオン時に決定される仕様らしい。

- このため、プリインストールされているReminnaでRDP接続した際のセッションが残っていると、該当ユーザのキーマップは英語キーボードのままとなる。

- というか、再起動したほうが確実。

 

7. 「/usr/local/bin/remmina」を起動し、キーボードが日本語キーボード(jp106キーボード)として認識されていることを確認する。