SHIROのIchigoJam日記

マイコン「IchigoJam」(イチゴジャム)の電子工作とプログラミングをメインに

IchigoJam RでUSBテンキーを使う

IchigoJam RでUSBキーボードが使えるようになって、試してみたかったのがUSBテンキーです。
いくつか試した中では、いち推しがエレコムのTK-TCM011BKです。
www.elecom.co.jp
NumLockスイッチがONの時に数字が入力できて、NumLockをOFFにするとカーソルキーがちゃんと入力できます!
ゲームのコントローラーや、カムロボのリモコンなどに使えそうです。

かわくだりゲームをテンキーで操作してみました。

【IchigoJam】IchigoJam RでUSBテンキーを使う

IchigoJam R起動時はNumLock ONになるので、OFFにしてから左右カーソルキー(4と6)で操作します。ゲームオーバー時はEnterキー(文字コード10)でリプレイするように改造しました。

10 CLS:CLT:X=16
20 X=X-BTN(28)+BTN(29)
30 IF SCR(X,5) GOTO 80
40 LC X,5:?"O"
50 LC RND(32),23:?"*"
60 WAIT 3
70 GOTO 20
80 ?TICK()/60
90 IF INKEY()=10 RUN ELSE CONT

なおNumLock OFFの時、通常文字以外のキーは以下の文字コードが入力されます。

BS=8
Tab=9
Enter=10
Ins=17
Home=18
PageUp=19
PageDown=20
End=23
←=28
→=29
↑=30
↓=31
Del=127
00=NumLock OFF時は無入力、ON時は「0」(文字コード48)が2回入力

なお、手持ちの他のUSBテンキーも試したのですが、
www.elecom.co.jp
上記のTK-TCM011BKと似た、無線タイプのテンキー。NumLockの制御がおかしいらしく、数字キーが数字・機能キーとも入力できません。他のBS、Tab、Enterなどは入力できるので、NumLock周りの問題と思われます。無線のコントローラーにできたら面白いのですが…


www.ohm-electric.co.jp
だいぶ古いUSBテンキー。NumLock ONで数字が入力できますが、NumLock OFFにしても数字になってしまいます(NumLockが効いたまま)。

(追記)USBテンキーのNumLock問題

USBテンキーでよく言われる点に「NumLock問題」があります。
USBテンキーにあるNumLockキーを押すと、つないでいるPCのNumLockが連動する(=NumLockのキーコードをそのままPCへ送る)のが「同期タイプ」、連動しないのが「非同期タイプ」です。
ノートPCにUSBテンキーをつないで数字入力に使う場合、同期タイプだとUSBテンキーのNumLockをONにするとノートPC側もNumLock ONになってしまい、キーボード右半分のアルファベットが数字になってしまいます。非同期タイプではそういった現象は起きません。
では非同期タイプのUSBテンキーが、PC側がNumLock OFFなのにどうやって数字キーを入力するか?と言うと、以下のように解決しているようです。

  • テンキー内部は基本的にNumLock OFFモードになっている。
  • テンキーのNumLock ONランプが点いている時、数字キーを押すと、「NumLockキー」「数字キー」「NumLockキー」の3つのキーコードをPCへ送る。

今回成功したエレコム・TK-TCM011BKは、公式サイトによると、

●「NumLock」問題を解決
「NumLock」問題をハードウェアで解決しており、対策ソフトのインストールは不要です。

と書かれていて、こうした処理がされているようです。なので、今回試してみました。
恐らくIchigoJam Rでは、NumLockキーのキーコードは無視されてNumLock OFFモードのまま、数字キーのキーコードを受信するので、カーソルキーとして認識するのでしょう。
(同様に「NumLock非同期タイプ」となっている他のUSBテンキーも、IchigoJam Rでコントローラーとして使える可能性があります)
無線タイプのTK-TDM017BKも、同様に「ハードウェアで解決」してほしいですが…。