ロゴ ロゴ

キーボードをQMK化した話

初めに

いさたです、いろいろあってノートPCからはぎ取ったキーボードを自作キーボード化したので詰まったところ等を書いていきます。

用意したもの

キーボード:ノートPCから分離したもの、28本の端子がfpcで出てきています

ffc/fpc変換基盤
[秋月のRP2040マイコン]:制御用
基盤とかピンヘッダとか諸々

他のキーボードでも同じ用にできる…はず

マトリクス解析

自作キーボードと違いキーボード側の回路が分からないのでどのキーを押すとどの端子がつながるのかを調べていきます。
キーを押すとどの端子が導通するのかを総当たりで調べるプログラムをRP2040で実装…したもののシリアル端子が干渉して失敗、RaspberryPiで代用して調べた結果こんな感じに

キーを押すとn番とm番のピンが導通します。

QMK

キーボード側の回路がなんとなく解析できたので制御側の実装、今回はQMKを使用しました。
基本的なことは省略

matrix編

通常の自作キーボードは格子状に回路を組んでいるため行列でマイコン側のピンを割り当てていますが、今回の場合縦横にピンを分けることが出来ません。この場合、ピンの配列を2つ用意することで↑のような総当たり表を再現できます。

"matrix_pins": {
        "cols": ["GP0", "GP1", "GP2", "GP3", "GP4", "GP5", "GP6", "GP7", "GP8", "GP9", "GP10", "GP11", "GP12", "GP13", "GP14", "GP15", "GP16", "GP17", "GP18", "GP19", "GP20", "GP21", "GP22", "GP23", "GP24", "GP25", "GP26"],
        "rows": ["GP0", "GP1", "GP2", "GP3", "GP4", "GP5", "GP6", "GP7", "GP8", "GP9", "GP10", "GP11", "GP12", "GP13", "GP14", "GP15", "GP16", "GP17", "GP18", "GP19", "GP20", "GP21", "GP22", "GP23", "GP24", "GP25", "GP26"]
    },

キーマップ編

普通の自作キーボードは基本的にUS配列ですが、今回のキーボードはJIS配列…一応QMKの方でも対応しているので以下のように設定。JISに変換されるUSキーだったり、USキーに対応するものがないキーだったりちょっとややこしい。

    KC_GRV,//半角
    KC_EQL,//~
    KC_INT3,//¥
    KC_LBRC,//@
    KC_RBRC,//[
    KC_SCLN,//;
    KC_QUOT,//:
    KC_BSLS,//]
    KC_INT1,//_
    KC_INT5,//無変換
    KC_INT2,//かな

完成…?

キーボードにマイコンをつなげていざ起動…したものの一部キーが反応しなかったり別のキー入力になっていたりと誤作動が。
テスターで確認したところ普通に解析のミスでした、7割ぐらいは正しく入力できていたので残りの回路をテスターで調べていく。コードを修正すれば無事完成。

おわり

ファンクション周りは未実装なのでそのうち実装したいですね。
なんでこんなもの製作していたのかについてはまた後日。

コメント入力

関連サイト