BlackBerry Q10 キーボードパーツを用いた I2C キーボード、M5Stackで使ってみました。
こちらのキーボードです。購入から到着まで2ヶ月ぐらいでした。
BBQ10 Keyboard PMOD
https://www.tindie.com/products/arturo182/bb-q10-keyboard-pmod/
作者の方の GitHub で Arduino 用のライブラリが公開されています。
arturo182 / arduino_bbq10kbd
https://github.com/arturo182/arduino_bbq10kbd
標準ボトムのピンソケット並びを見てみると…3V3 / GND / SDA / SCL…並びがピッタリ合っていますね。
あれ?これ、そのまま差し込んで使えそう?
M5Stack + BB Q10 Keyboard、入力できました~。 https://t.co/g3VFXukTX4 pic.twitter.com/DBEaUu9Q44
— Nochi (@shikarunochi) December 21, 2020
問題なく使えましたー。画面が逆向きになるので、rotate 指定して画面回転させれば問題ないです。
M5.Lcd.setRotation(3);
INT(キー入力時の割り込み取得)が、MISO(G19)に入ってしまうのが少々気になるとこなので、intrerupt機能をOFF(CFG_KEY_INTを指定しない)にしておくのがいいですね。それでも動作が変な場合は最悪ピンを折ってしまえば大丈夫でしょう。
キー入力での割り込み発生の仕掛けは、M5Faces のキーボードユニットにも搭載されていて、あればあったで便利ではありますが。
alt + キーで記号入力となります。alt + 左シフト2回でaltロック、alt + 右シフト2回でシフトロックがかかります。
標準設定だと、sym キーが使えません。設定変更で認識できるようになります。
#include <BBQ10Keyboard.h> #define CFG_OVERFLOW_ON (1 << 0) #define CFG_OVERFLOW_INT (1 << 1) #define CFG_CAPSLOCK_INT (1 << 2) #define CFG_NUMLOCK_INT (1 << 3) #define CFG_KEY_INT (1 << 4) #define CFG_PANIC_INT (1 << 5) #define CFG_REPORT_MODS (1 << 6) #define CFG_USE_MODS (1 << 7) #define _REG_CFG 2 BBQ10Keyboard keyboard; keyboard.writeRegister(_REG_CFG , CFG_OVERFLOW_INT | CFG_USE_MODS | CFG_REPORT_MODS);
REG_ID_CFG で設定することで、alt / shift / sym の pressとrelease 取得できました~。 https://t.co/xx1U9VlSjv pic.twitter.com/3tqcTH0occ
— Nochi (@shikarunochi) December 22, 2020
11月バージョンのファームウェアで特殊キーのキーコードが変更になってますので、shift / alt / sym キー単独の判定を使いたい場合は、アプリ側でバージョン判定と振り分けが必要になります。
11月より前のバージョンだとこう。(実コードでは直値で書かれてました)
#define KEY_MOD_ALT 0x11 #define KEY_MOD_SHIFT 0x12 #define KEY_MOD_SYM 0x13
11月以降のバージョンだとこう。キーコード変更と、右SHIFT / 左SHIFT も区別されるようになりました。
#define KEY_MOD_ALT 0x1A #define KEY_MOD_SHL 0x1B #define KEY_MOD_SHR 0x1C #define KEY_MOD_SYM 0x1D
symキーだけなら、0x13 と 0x1D 両方に対応してしまうのもアリかも。
キーボードユニットの電源が5V tolerant ではないので、M5Stack の GROVE端子の電源(5V)に直接つなぐのはできないです。
It’s not 5V tolerant, sorry.
— arturo182 @ #rC3 (@arturo182) May 7, 2020
M5Stack通常の向きで使うためのモジュールを作りました。プロトモジュールをベースにしてます。(BUSモジュールを使ったほうが配線が楽かも。)
3V3 / GND / SCL / SDA を接続。
3Dプリンタで合体させるためのケースを作りました。
BB Q10 Keyboard PMOD の PNG ファイルをベースに型取りしました。
arturo182 / pmod_bbq10_keyboard /
https://github.com/arturo182/pmod_bbq10_keyboard/blob/master/img/back.png
プロトモジュールのM5Stackフレームは、こちらを使わせていただきました。
katsumin / M5Stack_Universal
https://github.com/katsumin/M5Stack_Universal
作成したキーボードケースと、M5Stackフレームを Tinkercad で結合しました。
これはすごく良い感じでは…!
STL ファイルをこちらで公開しました。キーボード部分はSTEPファイルも置いてあります。
pmod_bbq10_keyboard_case / model /
https://github.com/shikarunochi/pmod_bbq10_keyboard_case/tree/main/model
そして、いつものように、3Dプリントとは試行錯誤…なのですが、
今回は「適当モデリングで大きさチェック出力」→「正確なモデル作って出力」→「位置の微調整して出力」の3回でいけましたー。