SHARP X1 turbo/Z キーボード USB変換アダプタ

モードAしか使っていませんが、現状ではturbo系にしか対応していません。非turbo系では動作確認出来ていないのと、非turbo系キーボードでは「SHIFT/CTRL/GRPH/カナ/CAPS」を単独で打鍵した場合に打鍵が通知されないためです(SHIFT を押下しても通知されず、続けて A を押下した際に初めて SHIFT + A が通知される)もしかしたら特に手を入れなくても現在の処理でも非turbo系でそのまま動くかもしれませんが。

なお今のところモードBに対応する予定はありません。

 

X1S1

X1S2

 

もっとも重要な仕様。

SHIFT, CTRL, CAPS, カナ, GRAPH キーを除いて、他のキーは押しっぱなし動作が出来ません。キーを押した瞬間に、アダプタがPCにむけて「キーON&キーOFF」を通知します1。これはキーボード自体の仕様からくる制約です。

X1のキーボードは (5つのmodキーを除いて) キーを押した際に信号が来ても、キーを離した際は何の信号も来ないのです2 。なので、キーOFFの信号はアダプタ自身が内部で生成しています。

カーソルキーなんかはカーソルを移動させたい分だけキーを連打して下さい。

CAPS LOCKとカナは例によってメカニカルロッキングキーです。アダプタの設定で対応可能 (キーを押下した際にON&OFFを通知、キーを開放した際にもON&OFFを通知)ですが、当然ながら押しっぱなし動作が出来なくなります。
X1で使う予定がないのであれば、キーを分解してロックピンを取り外してしまうことをお勧めします。

 

x1TURBO

 

Scancode

x1turbo_code

上記のスキャンコードはアダプタが内部で定義しているもので、キーボードが実際に発生させている信号とは無関係です。

前述のとおり、同時押し判定が出来るキーは 「CTRL, SHIFT, GRAPH, CAPS, カナ」の5つに限られます。他のキーは同時押しの判定が出来ません。同時押し判定が出来ないキーを複数同時に押しても、単に順番に打鍵したように処理されます。

例えば「SHIFT + CTRL + ESC」は正しく処理出来ますが、「ESC + A」は「ESCのON&OFF→AのON&OFF」 という風に処理されます。

XFERが同時押し判定可能なキーじゃないのが痛い・・・

 

CTRL同時押しの例外

ScanCode input1 input2
68h Ctrl + C Ctrl + BREAK
69h Ctrl + H Ctrl + INS/DEL
6Ah Ctrl + I Ctrl + HTAB
6Bh Ctrl + M Ctrl + ENTER
6Ch Ctrl + [ Ctrl + ESC

上記の5パターンについて、input1とinput2をアダプタは判別出来ません。例えば Ctrl+CとCtrl+BREAKはキーボードから全く同じ信号が返ってくるため、アダプタはどちらの入力だったのか判断出来ません。

そこでこの5パターンに限り、元のスキャンコードとは別のスキャンコード(68h~6Ch)を割り当てています。例えば、

ScanCode: 68h → KeyCode: 06h

と定義すると Ctrl + C/Ctrl + BREAKは「C」のキーに変換されて、結果として「Ctrl + C」がPCに通知されます。一方、

ScanCode: 68h → KeyCode: 2Ah

と定義すると Ctrl + C/Ctrl + BREAK は「BackSpace」のキーに変換されて、「Ctrl + Bs」がPCに通知されます。

デフォルトの定義は太字側の設定にしていますので、「よく利用するアプリで Ctrl + I を多用する」ような場合は設定を変更して下さい。

 

 

 

  1. 厳密にはキーOFFは数ms遅れてだけど []
  2. モードAの場合。これをわずかに改良したのがモードB []

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です