いろいろやってみるにっき

てきとーに生きている奴の日記

古いエントリのサムネイル画像がリンク切れになってたりするけど、チマチマ修正中


【Windows XPサポート終了対策】キーボード誤認識対策

よく見掛けるんだけど、低いサドルの自転車(ママチャリとか)に乗ってて、ずーっと立ちこぎで3~4回漕いで、少し休んでまた3~4回漕ぐのを繰り返す乗り方。何かのおまじないか?(挨拶)。サドル低いのは盗んだからなのか?警官はこういう乗り方のやつを見たら、すぐに防犯登録番号を照会すべき。

 

リモートデスクトップにおけるキーボード誤認識対策

Android-x86については「【Windows XPサポート終了対策】Android-x86を試してみる(ThinkPad X200編) - 今のところ起業準備中」で、

Android-x86のバージョン4.3では日本語109キーボードがデバイスリストに無いので101キーボードとして設定されてしまうのが難点。101キーボードと109キーボードでは記号のキーアサインが違う。よく使う記号だと、@が[Shift]+[2]とか:が[Shift]+[;]とか、=が[^]とか。

と書いた。デスクトップPCなら101キーボードに付け替える手も使えるが、ノートPCだと交換が大変というか交換できない機種もある。ということで、サーバ側で対応してみた。

 

なぜ勝手に101キーボードだと判断するのかだが、リモートデスクトップでログインした際に、クライアント側を英語モードだと判断している。切断→再接続ではこの判断は行われない。

  1. リモートデスクトップクライアントが実行されているクライアントの規定のIME(キーボート配列)がRDSで利用可能な場合は、クライアントの規定のIMEと同じIME(キーボード配列)。
  2. リモートデスクトップクライアントが実行されているクライアントの規定のIME(キーボート配列)がRDSで利用できない場合は、サーバの規定のIME(キーボード配列)。

つまり#1で動くと、今のところ英語配列キーボードでしか設定できないAndroid-x86はRDSに対して「英語だよ」と教えているので、101キーボードになってしまう。

この事象は、前職で商用のタブレット用RDSを作ったときにも起きた。その時はiPadではiPad側の日本語変換ではなくMS-IMEを使いたかったのだが、MS-IMEが表示されないか、されても[EN]モードになってしまう。同じユーザでWindowsから接続した場合は普通に[JP]モードでMS-IMEが使える。そこで探し当てたのが以下のレジストリ値。これは「How the "Regional and Language Options" settings in Windows Server 2003 are applied」(KB924852)に書いてある。このKBの日本語訳はひどいので英語のままのほうが意味が分かると思う。

キー : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout
名前 : IgnoreRemoteKeyboardLayout
種類 : REG_DWORD
データ : 1

このレジストリを設定しておけばクライアントの種類によってキーボード配列が英語になったりという事は無い。

実際にAndroid-x86を動かしているThinkPad X200から動作確認してみた。スクリーンショットでは分からないけどこれは[Shift]─[2]を押したところ。キートップに刻印されている通り、「"」が打たれる。

Screenshot_2013-11-03-13-20-49 

 

▼USBキーボード接続時のキーボード誤認識対策

日本語キーボード対策として、ついでにSurface RTにUSBトラックポイントキーボードを付けた時にも英語配列になってしまう件も対策した。

ツイートしたときは気付いて無かったが、リモートデスクトップ接続をするために記号をタイプしたら英語配列だった。 英語配列だと微妙に困る。そこでぐぐってみた。「コンピューターに USB キーボードを接続したときに Windows で正しいキーボード レイアウトが使用されないことがある」(KB927824)に書いてあった。

キー : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters
名前 : LayerDriver JPN
種類 : REG_SZ
データ : kbd106.dll
名前 : OverrideKeyboardIdentifier
種類 : REG_SZ
データ : PCAT_106KEY
名前 : OverrideKeyboardSubtype
種類 : DWORD
データ : 2
名前 : OverrideKeyboardType
種類 : DWORD
データ : 7

オレは手が2つしかないので、キーボードを両手で使うとマウスを使う手が足りない。タッチパッドは操作に対してリニアに動かないので苦手。というかイラっとする。トラックポイント最高!

 

というわけでキーボード絡みの小ネタを2つ。 ほな。

 

お時間あったら、他のエントリもクリックして頂ければ幸いです。