KMK を ItsyBitsy M4 Expressへ導入する
今回は持て余しているItsyBitsy M4へ導入するものの、Raspberry Pi picoなどでも同じ手順で可能なはず。
とりあえず動くところまでを試す。
CircuitPythonのインストール
CircuitPython.org からダウンロード。
インストール方法についてはダウンロードページの各マイコン向けページの下の方からTutorialを辿って見られるAdafruitのドキュメントを参照。
ItsyBitsy M4 Expressのダウンロードページ > ItsyBitsy M4 ExpressのTutorialページ > CircuitPythonのインストール方法についてのページ
KMKの入手
Zipファイルを解凍して中にあるKMKフォルダとboot.pyをItsyBitsy M4 Expressへコピー。
- KMKをLibへ
- boot.pyをルートディレクトリへ
code.pyの作成
Getting started を参考にcode.pyを書いてボードに保存。
ItsyBitsyで動作させるためにピンの設定は変更。
変更前
keyboard.col_pins = (board.GP0,)
keyboard.row_pins = (board.GP1,)
変更後
keyboard.col_pins = (board.A0,)
keyboard.row_pins = (board.A1,)
配線
A0 → SW → A1
ここまでの作業でボタンを押すと「a」が入力できる1キーキーボードが出来る。
今後
ここまでの手順で1つボタンのキーボードは出来て、普通のPCでならこのまま使うことが可能と思うし、マトリックス配線で複数のキーを扱うのもそんなに難しくはないはず。
利用していると気になるのはドライブやCDC(シリアル)が有効になっているあたり。
CircuitPythonではそのあたりを無効にすることは可能ではあるものの、KMKを利用せずにキーボードエミュレーションをした場合、ドライブやCDCを無効にしてもNintendo Switchなどの特定ハードウェア上ではキーボードとして動作できない。これが困る。
QMKでは動作するのを確認しているのでKMKで同じように動作が可能なのかを探るのが今後の目標
追記
ドライブとCDCを無効にするためのコードをboot.pyに入れる。
GNDとD11が接続されている場合はドライブとCDCが無効になる。
import supervisor
import board
from digitalio import DigitalInOut, Pull
import storage
import usb_cdc
supervisor.set_next_stack_limit(4096 + 4096)
p11 = DigitalInOut(board.D11)
p11.pull = Pull.UP
if p11.value == False:
storage.disable_usb_drive()
usb_cdc.disable()
しかし、やはりNintendo Switchではキーボードとして動作しなかった。