AZ1UBALL(BOOTHの購入ページ、githubの技術情報)を現時点の最新のQMK Firmware version 0.21.3で動かしてみました。
最新のQMKを使うと非常に少ないコードで対応できました。
まだ実験なので、SU120から空中配線しています(写真は載せませんがお察しください)。
ポインティングデバイスのドライバの説明はこちらです。
Pro Microとの接続ピンは、I2C通信なのでD1とD2で固定です。
以下、QMKに設定した内容です。
rule.mk :
POINTING_DEVICE_ENABLE = yes
POINTING_DEVICE_DRIVER = pimoroni_trackball
config.h : ポインタの移動速度、2倍が限界、これ以上だとポインタが飛び飛びになる
#define PIMORONI_TRACKBALL_SCALE 10 // default 5
keymap.c : 加速度モードを設定しようとしています、必須ではない
// AZ1UBALL
void pointing_device_init_kb(void) {
uint8_t addr=(0x0a << 1 ); // ic2 address with 1bit shift up
//uint8_t data[]={0x90, 0x00}; // AZ1UBALL normal speed mode
uint8_t data[]={0x91, 0x00}; // AZ1UBALL accellaration mode
uint16_t timeout=100; // in milli-seconds
i2c_status_t status;
status = i2c_transmit (addr, data, 1, timeout);
//if (status != I2C_STATUS_SCCESS) {
if (status != 0) {
return;
}
}
AZ1UBALL を実際に試してみて良いな、と思った点を挙げます。
- 触感:どういう仕組みなのかわかりませんが、操作するとジ、ジ、ジと指先にクリック感が来ます。これがとても良いフィードバックです
- 細かな操作:細かな操作はとても直感的に行えます
- QMKですぐ動作:I2C接続のPiromoni互換のトラックボールとして設定するだけで動きます
- 1u、ロープロファイル:16mm角の正方形なのでキーボードの1uの余裕で収められます。また、ソケットプレートの上に置いて、ちょうどロープロファイルキーボードのキートップと同じくらいの高さに抑えられているので、デザインの自由度が大きいです
工夫して使わないと、と思った点もあります。
- 移動速度:タブレットくらいの画面までは快適なのですが、大画面では難ありと思いました。ボールが小さいので一度にたくさん動かせないのと、同方向に慣性で転がし続ける動きができません。keymap.cで0x91の加速モード設定も試してみましたが、それほど違いが出ませんでした(設定できていないのかもしれずもう少し調査必要)
- 天面の処理:低頭の小ネジの頭が天板に出ているため、操作の際に邪魔に感じることがありました。3Dプリンタ等でケースを作った方が良いのかもしれません
- キーボードへの固定方法:基板への実装は、2.54mmの標準ピンヘッダでのハンダ直付けかソケット化しかなさそうで多少心許ないかもしれません。ネジでしっかりと固定する方法があれば良いのですが。また、側面が空いているのでケースで覆うかマスキングテープでカバーしたいです
このAZ1UBALLと、Joyconアナログジョイスティック(それと、もしかして秋月電子のPSPアナログジョイスティック部品も、あとジャンクのトラックポイント部品もあったような)は並行して試していきます。
この投稿は自作Lilithキーボード(LilithKbd)を使って書きました。
[2023-08-24] Yuta Sakaiさんがコードのスペルミスと、i2cアドレスの指定方法の誤り(QMKのi2cアドレス指定方法の説明箇所)を見つけてくださいました(Twitterでのやりとり)ので、手直ししました。
さらにこの方は、加速度機能の動的ON/OFF、感度の動的変更と、気の利いた追加機能まで考えられています。
コチラの記事に掲載されています。
[2023-12-29] QMKをRP2040(Raspberry PI PicoやRP2040-Zero)で使う場合の設定です。
m.kiさんのTwitter投稿「AZ1UBALLをqmk0.22.3とRP2040-Zeroで試してみました (2023-12-26)」と、よしザウルスさんのブログ「QMK FirmwareをRaspberry Pi Picoで使ってみる (2022-07-24)」からの転記です。
rules.mk :
POINTING_DEVICE_ENABLE = yes
POINTING_DEVICE_DRIVER = pimoroni_trackball
I2C_DRIVER_REQUIRED = yes
halconf.h :
#define HAL_USE_I2C TRUE
mcuconf.h :
#undef RP_I2C_USE_I2C0
#define RP_I2C_USE_I2C0 FALSE
#undef RP_I2C_USE_I2C1
#define RP_I2C_USE_I2C1 TRUE # 例
config.h :
#define I2C1_SCL_PIN GP27 # 例
#define I2C1_SDA_PIN GP26
#define I2C_DRIVER I2CD1 # 例