完全無線を実装できたので「左右間無線」から改題しました
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
を添付します。