
キーボードを隠蔽したい
パソコンで作るゲームはキーボード・マウスで操作するのが基本なのですが、操作性の点ではゲームパッドなど外付けの専用コントローラーの方が優れています。
自分で使う分にはコントローラーとキーボードが共存して問題ありませんが、イベントなどで他人にプレイしてもらうとき、キーボードが有効だと誤操作やいたずらを招くことがあり、できればキーボードは外したり隠したりしておきたいものです。
ゲームパッドのように複数のボタンが使えるものなら、そのうちの一つにスタート機能を割り当てられますが、特殊な自作のコントローラーの場合、スタートやリプレイの方法に工夫が必要になります。
私の「ネコリンピック」プロジェクトも、スペースキーをスタートボタンにしているためキーボードの隠蔽ができませんでした。

アーケードボタンを使いたい
外付けのボタンをスペースキーなどとして認識させる方法はあるのですが、どうせならゲーム感があり、子どもにも分かりやすくしたいので、ゲームセンターのアーケードゲーム機などに使われているアーケードボタンを使うことにしました。
アーケードボタンは大型のプラスチックのカラフルなボタンで、内蔵のLEDが点灯するエフェクトも使えます。国内だと結構高いのですがAliexpressだと260円程度で入手できます。

ボタンをPCにスペースキーと認識させる方法
外付けのアーケードボタンを、パソコン上のソフトがキーボードのスペースキーと同じものと認識してくれないと、スタートボタンにはなりません。
キーボードの状態をシリアルに変換する専用のチップもありますが、一部のマイコンボードにその機能を持ったものがあります。
Arduino micro/Leonaldo
まずはArduino。
Arduinoのうち、Arduino microとArduino LeonaldoはプログラムでArduinoをキーボード・マウスに見せかけることができます。
これらはプロセッサ(SoC)にATmega32U4を使っていますが、このSoCはUSBのインターフェースを内蔵していて、USB接続のキーボード・マウスのエミュレートができるためです。
キーボードエミュレートのプログラムはArduino microの標準のライブラリに含まれているので簡単に利用できます。

Arduino microの純正品は3500円程度しますが、pro microという名前で売られている互換品はAliexpressで500円程度で入手できます。


Arduino pro micro互換機を使ってアーケードボタンを作った例です。ボタンを押すと、ボタンとUSBで接続したパソコンはスペースキーが押されたと認識します。

この作例ではDIPスイッチ(pro microの左にある白い小さなスイッチが並んだもの)の組み合わせで、ボタンを押したときのキーコードがスペースキー以外の任意のものに設定できるようにしています。
micro:bitのBLEHID拡張機能
micro:bitもこの目的で使えます。
micro:bitの拡張機能にあるBLEHIDは、これを入れたmicro:bitがパソコンからはBluetooth接続のキーボードとマウスのように見えるという機能です。
公式機能ではありませんが、micro:bit財団に承認されたものなので、特に問題なく使用できます。


micro:bitに拡張機能を使ったプログラムを書きこんで、アーケードボタンを接続します。


ケースの製作
ケースは適当な箱で良いのですが、ある程度数を用意する前提でMDFボードをレーザー加工機で切り出して、木工ボンドで組み立てました。
必要があれば何度でも同じ加工ができるのがデジタルファブリケーションの良いところです。



以上