完全無線を実装できたので「左右間無線」から改題しました
USBから給電する必要がありますが, モバイルバッテリーを使えば無線ですね
- 左右間の接続を無線にする
- 端末との接続をBLEにする
PCとの接続を無線にする
レイヤー機能は使えませんでした→使えました!- NeoPixelは使えません
- プルリクが通らなかった場合にupstreamを追う気はないので将来的な修正や機能追加は反映されません
BLE Micro ProやYBKのキーボードと共通の通信方式を利用しているため, 誤って接続することがあります。KMKの左手側では対策されており, 誤って接続した場合にも誤ったキーが押されることはありませんが, KMKの右手側が他のキーボードに接続されてしまった場合の動作は保証されません。
- ISP1807搭載Microボード
CircuitPythonのライブラリダウンロードページからadafruit-circuitpython-bundle-7.x-mpy-YYYYDDMM.zipをダウンロードし, 中から adafruit_bleを取り出してください。(CircuitPythonのバージョンが上がった場合は8.xなどになるかもしれない)
どうしてmpyかというと記憶領域が足りないからです。
本家→ https://github.com/KMKfw/kmk_firmware
完全無線を実装したフォーク→ https://github.com/yswallow/kmk_firmware
git cloneなりDownload ZIPなりお好みで
参考→ Corne用設定ファイル
- 他のマイコンボード向けの設定のため, ピン名が
board.Pm_nの形式になっています kb_rp2040.pyのほうがピン名称が同じなので参考にしやすいかもしれないです
col_pins,row_pinsを書き換えるboard.D(0〜21), board.A(0〜6)で事足りると思います。
diode_orientation,coord_mappingを書く
キーマップを書きます。大体のキーボードはリバーシブル基板なのでsplit_flip=True(書かなくて良い)でいいと思います。rgb関連は削除してください。rgbを使う場合はbundleのmpyからneopixel.mpyが必要になります。
split_sideはLEFTかRIGHTの当てはまるほうを選んでください。
キーマトリックスに使われない組み合わせがある場合はsplit.split_offsetに片手あたりのキー数を代入してください。
レイヤー関連のキーはなんか動かないので通常キーに書き換えてください。
レイヤー関連のキーを定義する前に
layers_ext = Layers()
keyboard.modules.append(layers_ext)する必要があるようです。
keyboard.go()の上に
import board
import digitalio
led = digitalio.DigitalInOut(board.LED)
led.direction = digitalio.Direction.OUTPUT
led.value = Falseと書いておくとKMKの起動がLEDの点灯でわかって便利です。
keyboard.goに引数として hid_type=HIDModes.BLE, secondary_hid_type=HIDModes.USBを渡すとKC.HID_SWITCHを押すことでHIDの送信先をBLEとUSBの間で切り替えることができるようになります。
CIRCUITPYドライブのファイルを全て削除します。CIRCUITPYドライブ直下に以下のファイルを置きます。- KMK Firmwareリポジトリからダウンロードしたファイルのうち
kmkフォルダkmk/extensions/rgb.pyは容量確保のため削除します。
- circuitpython bundle から展開した
adafruit_bleフォルダ - 作成した
kb.py,main.py
- KMK Firmwareリポジトリからダウンロードしたファイルのうち
動きましたか?
動かないときはUSBシリアルの出力を見てデバッグしてください。
キーマップを書き換えるだけならUSBで接続されている左手のmain.pyを書き換えるだけです。簡単ですね。
持ってないので想像で書き換えただけですがCorne向けのmain.py, kb.pyを添付します。