Sceneries through the lenses

その場の気分でもやっと投稿していくブログ。内容はころころ変わります…(汗。

xrdp 4.1/JA for CentOS 5.3

2009-04-26 21:38:34 | OSS/Programming
http://xrdp.sourceforge.net/ で開発されている xrdp というアプリケーションがあります。
これは linuxサーバ上 rdp 接続用サーバソフトです。
これをインストールしておけば、Windowsからリモート デスクトップ接続を
利用することで linux サーバに接続できるようになります。
通常、TeraTermをよく利用しますが、xrdpを入れておけば、
複数の端末エミュレータを利用したい場合や、GUIツールを触りたい場合に便利です。

xrdp は日本語キーボードに対応していません。
そのため、日本語キーボード対応パッチを作成していました。
某所では 0.4.0用のパッチのみを公開していたので、
0.4.1用のパッチを再作成しました。
まぁ、中身は一緒なんですが。^-^;

下記にパッチ、および、CentOS 5.3用 x86-64用の rpm、src.rpm をおいています。
rpm は結構大雑把(というか適当)に作っていますので抜けがあるかもしれませんが、
普通に使う分には問題ないと。

http://www.mediafire.com/?sharekey=81f31e2ea42c9417896b8bcfb63f39f8c15ab4d43a831976b8eada0a1ae8665a

変更箇所は lang.c のみで済みます。
パッチは下記のように diff コマンドを利用して作成します。
# diff -c xrdp-0.4.1/xrdp/lang.c xrdp-0.4.1.new/xrdp/lang.c

パッチを含めたインストール方法は下記のような感じ。

# tar xzvf xrdp-0.4.1.tar.gz
# patch -p0 <xrdp-0.4.1-ja.diff

KDEを利用したい場合など、必要に応じて /usr/local/xrdp/startwm.sh を
書き換えます。
私は、先頭あたりに下記の行を追加し、gnomeを日本語で起動するように変更しています。

export LANG=ja_JP.UTF-8

次回は xrdp を rpm 化したので、その辺について少しだけ。
(素人に毛が生えたレベルなので、適当ですけど。^-^;)

xrdp-0.4.1-ja.diff は下記の通り。

*** xrdp-0.4.1/xrdp/lang.c      2007-07-01 14:11:08.000000000 +0900
--- xrdp-0.4.1.new/xrdp/lang.c  2008-11-23 20:32:14.000000000 +0900
***************
*** 485,490 ****
--- 485,556 ----
  };

  /*****************************************************************************/
+ /* Japanese */
+
+ /* non shift chars */
+ char ja_noshift[] =
+ {
+   0,    0,   '1',  '2',  '3',  '4',  '5',  '6',
+  '7',  '8',  '9',  '0',  '-',  '^',   0,    0,
+  'q',  'w',  'e',  'r',  't',  'y',  'u',  'i',
+  'o',  'p',  '@',  '[',   0,    0,   'a',  's',
+  'd',  'f',  'g',  'h',  'j',  'k',  'l',  ';',
+  ':', 0,   0,   ']', 'z',  'x',  'c',  'v',
+  'b',  'n',  'm',  ',',  '.',  '/',   0,   0,
+   0,   ' ',   0,    0,    0,    0,    0,    0,
+   0,    0,    0,    0,    0,    0,    0,   '7',
+  '8',  '9',  '-',  '4',  '5',  '6',  '+',  '1',
+  '2',  '3',  '0',  '.',   0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,
+   0,    0,    0,    0,    0,    0,    0,    0,
+   0,    0,    0,    0,    0,    0,    0,    0,
+   0,    0,    0,    '',    0,    0,    0,    0,
+   0,    0,    0,    0,    0,    0,    0,    0
+ };
+
+ /* shift chars */
+ char ja_shift[] =
+ {
+   0,    0,   '!',  '"',  '#',  '$',  '%',  '&',
+  ''',  '(',  ')',  0,  '=',  '~',   0,    0,
+  'Q',  'W',  'E',  'R',  'T',  'Y',  'U',  'I',
+  'O',  'P',  '`',  '{',   0,    0,   'A',  'S',
+  'D',  'F',  'G',  'H',  'J',  'K',  'L',  '+',
+  '*',  0,   0,   '}',  'Z',  'X',  'C',  'V',
+  'B',  'N',  'M',  '<',  '>',  '?',   0,   '*',
+   0,   ' ',   0,    0,    0,    0,    0,    0,
+   0,    0,    0,    0,    0,    0,    0,   '7',
+  '8',  '9',  '-',  '4',  '5',  '6',  '+',  '1',
+  '2',  '3',  '0',  '.',   0,    0,    0,    0,
+   0,    0,    0,    0,    0,    0,    0,    0,
+   0,    0,    0,    0,    0,    0,    0,    0,
+   0,    0,    0,    0,    0,    0,    0,    0,
+   0,    0,    0,    '_',    0,    0,    0,    0,
+   0,    0,    0,    0,    0,    '|',    0,    0,
+ };
+
+ /* right alt chars */
+ char ja_altgr[] =
+ {
+   0,    0,    0,    0,    0,    0,    0,    0,
+   0,    0,    0,    0,    0,    0,    0,    0,
+   0,    0,    0,    0,    0,    0,    0,    0,
+   0,    0,    0,    0,    0,    0,    0,    0,
+   0,    0,    0,    0,    0,    0,    0,    0,
+   0,    0,    0,    0,    0,    0,    0,    0,
+   0,    0,    0,    0,    0,    0,    0,    0,
+   0,    0,    0,    0,    0,    0,    0,    0,
+   0,    0,    0,    0,    0,    0,    0,    0,
+   0,    0,    0,    0,    0,    0,    0,    0,
+   0,    0,    0,    0,    0,    0,    0,    0,
+   0,    0,    0,    0,    0,    0,    0,    0,
+   0,    0,    0,    0,    0,    0,    0,    0,
+   0,    0,    0,    0,    0,    0,    0,    0,
+   0,    0,    0,    0,    0,    0,    0,    0,
+   0,    0,    0,    0,    0,    0,    0,    0
+ };
+
+ /*****************************************************************************/
  char APP_CC
  get_char_from_scan_code(int device_flags, int scan_code, int* keys,
                          int caps_lock, int num_lock, int scroll_lock,
***************
*** 534,539 ****
--- 600,611 ----
      keys_shift = se_shift;
      keys_altgr = se_altgr;
    }
+   else if (keylayout == 0x411 || keylayout == 0x0e0010411) /* Japanese(ja-JP & ja-JP.unicode */
+   {
+     keys_noshift = ja_noshift;
+     keys_shift = ja_shift;
+     keys_altgr = ja_altgr;
+   }
    else /* english us 0x409 */
    {
      keys_noshift = en_us_noshift;


最新の画像もっと見る

コメントを投稿