簡易キーボードの作成

    アーケードスティックにラズベリーパイを内蔵、RetroPieをインストールしてエミュ機を作りました。
    しかしMAMEで遊ぶために仰々しいUSBキーボードを繋ぐのは出来れば避けたい所。

    なので以前麻雀コントローラを作る際に使ったキーボードエンコーダを使って
    MAMEのキーボード操作をボタン化して簡易キーボードにしましたという話です。


    因みにキーボードエンコーダについておさらいすると、名前の通りキーボードの基板です。
    入力は全部で32INPUT。各INPUT毎にキーボード上のキーを自由に割り当てられます(専用ツールが必要)。
    設定内容は電源を落としても消えません。なので一回設定してしまえば
    他のマシンに繋ぐだけでそのまま使えます。

    MAMEで使うキーをこれに設定すればボタンでキーボード操作が出来るという仕組みです。

    [Ultimarc I-PAC2]
    http://www.ultimarc.com/ipac1.html

    S1701_IMG_1196.jpg

    とりあえずいくつボタンを用意してどんなキーを割り当てるか???
    ESC、TAB、RET、F3、P、そして矢印キーは必須。
    あと便利なマクロ機能の実行のために2つほど。(今のところ計11個)

    因みにマクロ機能というのはボタンを押したときに、ESC押して矢印キー押して、RETを押す、というような
    一連の動作をボタン一つでやってくれる機能です。

    もうちょっと細かく言うと、今回のI-PAC2の仕様としては・・・・
    1.登録できるマクロは4種類まで。
    2.一つのマクロに登録できるキーは4つ。(もっと欲しい)
    3.作成したマクロは32INPUTのどこにでも設定可能。
    4.登録したマクロのキーが順々に押されるタイミングは設定不可。(PCの処理が遅いと空振りもあります)


    I-PAC2の説明はこれぐらいで、とりあえず作ります。

    ケースはいつもの様に100円ショップのタッパ。www
    ねじ止め式のゲーセンボタンの位置を決めてホールソーで穴開け。
    位置決めがしやすいように100円ショップのマスキングテープをペタペタ貼ってます。

    S1701_IMG_4638.jpg

    穴を開けてボタンを設置して、キーボードエンコーダとボタンを配線、
    PCと繋いで専用ツールから各ボタンの機能を設定しました。(3分間クッキングですみません)
    最終的に割り振ったボタン機能は以下になります。

    S1701_KEY.jpg

    基本はゲームを終了するための赤(MACRO1)、トイレに行くときの黄色(PAUSE)、
    いきなりトチった時の青(RESET)の3つでOKでしょうか。

    それ以外はTABからメニューを開いて設定をする際に使ったり、終了する為の赤(MACRO1)が空振った時の対処など
    手動操作するときに使えばいいかと。

    因みに手前にある赤(MACRO2)は・・emulationStationで誤操作して
    ターミナルを開いてしまったとき、"exit" + RET で抜けるために使います。

    とりあえず作ってみましたが問題なく動いてます。けどこれでもやっぱり大きく感じますね。

    もうちょっと続きます。

    とりあえず今回はここまで。

    ==================================================
    [2017.01.10]追記

    タッパとキーボードエンコーダーで簡易キーボードを作りましたが、
    実はプログラマブルテンキーも検討してました。
    名前の通り前述のタッパと同様にキーバインドを設定できるテンキーです。
    タッパよりもコンパクト、組み込めるマクロも1マクロ当たり30文字まで、
    キートップに透明のカバーがついているのでラベルも作れるというシロモノ。
    30文字も組めるならターミナル画面からコマンドも打てるじゃん。

    [サンワサプライ NT-19UH2BK]
    https://www.sanwa.co.jp/product/syohin.asp?code=NT-19UH2BK

    値段もamazonで2000円程度と仕様を見る分にはパーペキなものです。
    結構期待して買ってみました。

    S1701_IMG_4699_ALL.jpg

    早速マクロを組んでラズベリーパイで動作確認。。
    あれ?マクロに関係なくリターンキーが全く効きません。

    advanceMAMEにある advk というツールで何が押されているのかまずは確認。
    advk:/opt/retoropie/emulator/advmame/1.4/bin/advk
    ==============================
    ( 440.1 ms) [ 1] esc[2]
    ( 8.0 ms) [ 0]
    ( 8.0 ms) [ 1] down[2]
    ( 8.0 ms) [ 0]
    ( 8.0 ms) [ 1] enter_pad[2]    ★ enter_padはテンキー側のリターンキー
    ( 8.0 ms) [ 0]
    ==============================
    普通のリターンキーでなく、テンキー側のリターンキーに割り当てられてました。 orz
    MAMEはデフォルトでは普通のリターンキーでないと反応しません。

    専用ソフトでキーボードの絵に合わせて普通のリターンキーを割り当ててみましたが、
    何をやってもテンキー側のリターンキーが設定されます(^^;;そういう仕様のようです。

    仕方ないのでMAME側で普通のリターンキーだけでなくテンキー側でも反応するように修正。
    #advancemame.rc に input_map[key_enter]で記載しようとしても対応してないので
    #GUI上から設定する必要があります。

    これでどうにかなるだろうと、再度ゲーム中の状態から実行してみましたが・・・
    3割位しか効かないですね。7割は空振ってしまいます。
    パソコンに繋いだり advk で見る分には反応しているのですが・・・・

    ======== プログラマブルテンキー ========
    ( 440.1 ms) [ 1] esc[2]
    ( 8.0 ms) [ 0]
    ( 8.0 ms) [ 1] down[2]
    ( 8.0 ms) [ 0]
    ( 8.0 ms) [ 1] enter_pad[2]
    ( 8.0 ms) [ 0]
    =====================================
    ======== キーボードエンコーダー ========
    (750.1 ms) [ 1] esc[1]
    ( 4.0 ms) [ 2] esc[1] down[1]
    ( 4.0 ms) [ 3] esc[1] enter[1] down[1]
    ( 64.0 ms) [ 2] esc[1] down[1]
    ( 8.0 ms) [ 1] esc[1]
    ( 4.0 ms) [ 0]
    =====================================

    ログを比べてみるとプログラマブルテンキーは8ms毎に1個1個キーを押してます。
    めったに空振りしないキーボードエンコーダーは(挙動が同時押しに見えますが)
    一番短くても64msはキーを押してます。

    ん???ゲーム中の負荷がかかる状態のなか、キーを押している時間が短いから
    プログラマブルテンキーが空振っているのでしょうか?


    とりあえず結論として・・・ラズベリーパイではサンワサプライのプログラマブルテンキーは
    厳しいという結論に私はなりました。(^^;;; 結構期待したのですが・・残念。


    仕方ないので当面はキーボードエンコーダーを積んだタッパで行く形になりそうです。
    けどもうちょっと小さくしたい。そのうち時間が取れたら100円ショップの電卓をベースに
    作り直すことも考えてます。






    余談ですが、タッパがなくてもCOINボタンとの同時押しで最低限の操作が出来るように設定はしてます。(^^;;;

    S1701_IMG_4702_001.jpg
    それじゃ簡易キーボードなんていらないという話にもなるのですが
    操作する度にクレジットがどんどん入っていくのが個人的には好きじゃないんです。。
    簡易キーボードを使わないならCOINボタンの代わりに
    ファンクション用のボタンを追加するのが良いのかも知れませんね。






    もしこの記事が参考になったなら拍手をお願いします

    この記事へのコメント:

    管理人のみ通知 :