ボタンで考えないといけないこと

アコーディオンのボタンはキーボードハック*1すればいいと思うんだけど、気になったのがボタンの同時押し。考えてみれば、そういうことを処理するプログラムを書いたことがない。
ちょっと調べてみるとハードウェアとかUSBのレベルではロールオーバーあるいはNキーロールオーバーというような呼称があるらしい。USBはデフォルトでは6キーの同時押しまでしか対応できないので、ゲーミングキーボードはそれ以上のキー同時押しに対応できるよういろいろ工夫してあるとかなんとか。まあ今回は6キーの同時押しができれば十分だと思うので、特に気にせず進めることにする*2
次にプログラムのレベルでは以前のエントリで試しに書いたコードは一つのキーしか受け付けないので同時押しができない。できればLinuxX Windowを使わないでできればいいんだけど、ずいぶん低レイヤの記述は見つけたが、この辺に取り組むのはもっと後かな。
PythonのライブラリだとpyhookWindows用、pykeyloggerは若干用途が違う上にやっぱりX Window必要、あとはこちらもX Windowが必要なpygamepygletかというところ。
さらに調べていくと、Minimixというツールがpygameを使って同時押しを実現している。(動画を載せてるブログ) これがとても参考になりそうなのでフォークして流用させてもらおうと思う。
このまま行くと、画面もないのにX Windowが内部で動いてる、とても馬鹿らしい実装のアコーディオンになるが、とりあえず動かしてから改めて考えてみたい。


今日は、「図解つくる電子回路」を傍らに置いて、ハンダ付けの練習もしていた。片面基板はハンダ付けの時間が短い上にランドが外れやすくて初心者には練習が難しい、と書いてあった通りで、確かにあっという間にハンダが溶けて流れて手こずった。あとハンダごてが汚れると、とたんに付きが悪くなったんだが、スポンジでこすっても今ひとつ汚れが落ちず、清掃の仕方もまだまだわかってない。
経験は今ひとつだけど、次はADコンバータのハンダ付けをしてみよう。

図解 つくる電子回路―正しい工具の使い方、うまく作るコツ (ブルーバックス)

図解 つくる電子回路―正しい工具の使い方、うまく作るコツ (ブルーバックス)


Raspberry Piとは関係ないが、Arduinoでミュージカルキーボードを作る簡単な紹介動画もあった。


Raspberry Piについては、Japanese Raspberry PI Users Groupに参加したらいろいろ情報が流れてくる*3。あとはユーザーグループのサイトとか本家のフォーラムなどで情報収集してる。

*1:適当なUSBキーボードから基板を取り出して、ケーブルを伸ばして各ボタンに接続

*2:いつか、ものすごくうまくなったら困るかもしれない

*3:どうでもいいことも含めて…