これまで、ラズパイPico で BASIC が動く「MachiKania type PU」のケースばかり作ってたのですが(そして時々ゲームで遊んでた)、インベーダーゲームのソースを修正してUSBキーボードで操作できるように修正してみようと思いました。
あ、ちなみにタクトスイッチでゲームしかやってたので気が付きませんでしたが、USBキーボードを接続してBASIC のプログラミングするだけならタクトスイッチの操作は不要なのですね。(今更知ったw)
なので、ゲームもキーボードで操作できるようにしておけばタクトスイッチでの操作はまったく不要になるのです。
このインベーダーゲームのプログラム、ALL BASIC で書かれてるので(ALL BASIC でこの再現度はすごい!)、押されたキー情報を取得している部分だけを探してUSBキーボードでも操作できるように修正してみます。

KM-BASIC のマニュアルをみると、INKEY() というコマンドでUSBキーボードのキーの値が取得できるようです。
http://www.ze.em-net.ne.jp/~kenken/machikania/machikania-guide.pdf
まずは、キーボードのキーを押したらどんな値になるか、下のようなプログラムを作って実行。
KEYTEST.BAS
インベーダーゲームの砲台(自機)の移動は、カーソルキーの左右で、FIREはスペースキーにしたいと思い、上のプログラムを実行して調べると各キーを押したときの値はそれぞれ下のようになりました。
カーソルキー左: 37
カーソルキー右: 39
スペースキー: 32
INVADE.BAS のソースコードを見てみると、 BUTTON というサブルーチンがあり、ここにUSBキーボードを押したときの処理を書けばよいようですので、BUTTON サブルーチンを下のように修正しました。
INVADE.BAS (LABEL BUTTON)
MachiKania のタクトスイッチでも動作するように元の記述も残して共存できるようにしておきました。
そして無事(あっさりw)キーボードで操作できるようになりました。
やはりタクトスイッチよりはキーボードでの操作の方が操作しやすいですね!

ついでに、ゲーム開始時に STARTボタン を押さなくてもUSBキーボードのなにかキーを押せばゲーム開始するように INITGM サブルーチンを下記のように修正しました。
NVADE.BAS (LABEL INITGM)
5行目に AND INKEY()=0 を追加しただけです。
これでタクトスイッチをまったく使わないでインベーダーゲームができるようになりました。
他のゲームもUSBキーボード操作に変更したくなりましたw