0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

QMKで自作キーボード

Posted at

以前作って使ってなかったキーボードを使おうと思って接続したらなんかおかしかったのでやり直したという備忘録。

その小汚いキーボードはこちら
IMG_0973.jpg

環境

Mac BookPro 2022 M2
MacOS 13.7.1(22H221)1
qmk version 1.1.6

キーボード一式 (組み込み済み)
項目 内容 Link
PCB YMDK YM60MQ (QMK Type C No RGB)
光らないこのサイズが良かった
aliexpress
ポジショニングボード Alu Black Plate A
一般的なJISにしたかった。けどちょっと失敗した2
aliexpress
スイッチ Outemu Dust-Proof Red 90個
なんかだいぶ余ってる。なんでこれにしたのかは覚えてない
aliexpress
スタビライザー スペースバー用 1x3u, Black OEM Stab
エンター用 1x2u, Black OEM Stab
aliexpress
ケース ほぼむき出しだったけど、事故ったので買い足した。
なんでもよかった
amazon
キーキャップ DSA 無刻印キーキャップだったか
EnterとSpaceは別で買ったような。。詳細不明
遊舎工房
キートップシール 無刻印のままで もかっこいいんですが。 amazon

前述したように以前作成済みのため、はんだ付けなどは終わっているところからスタートです。

QMK

キーマップ作成に便利

動作確認に便利


キーボードレイアウトはこんな感じ
Keyboard Layout Editorで作成3
keyboard-layout.jpg

本編

brewでインストール4

brewについてはこちら
利用状態によるとは思いますがすごく時間がかかります。

brew install qmk/qmk/qmk
qmkを使えるようにする
cd /pathto/workspace/Keyboard/
qmk config user.qmk_home=/pathto/Keyboard/qmk_firmware
qmk setup
qmk_firmware/util/qmk_install.sh

60_jis_custom と言う名前でレイアウトを設定します。
以下をやらないとエラーを吐くためディレクトリを作成。

mkdir qmk_firmware/layouts/default/60_jis_custom
利用設定
cp -a qmk_firmware/keyboards/ymdk/yd60mq qmk_firmware/keyboards/ymdk/yd60mq.bak
cd qmk_firmware/keyboards/ymdk/yd60mq/
cp -a keymaps/default keymaps/jis_custom

LED無しなのでなんとなく 0led でおいてみる

sed -i '' 's/12led/0led/' rules.mk
cp -a 12led 0led
sed -i '' 's/12/0/g' 0led/readme.md
vi 0led/keyboard.json    # 編集内容は下に記載
0led/keyboard.json
{
    "usb": {
        "device_version": "0.0.1"
    },
    "rgblight": {
        "saturation_steps": 0,
        "brightness_steps": 0,
        "led_count": 0,
        "animations": {
            "breathing": false,
            "rainbow_mood": false,
            "rainbow_swirl": false,
            "snake": false,
            "knight": false,
            "christmas": false,
            "static_gradient": false,
            "rgb_test": false,
            "alternating": false,
            "twinkle": false
        }
    }
}
キーマップ
vi keymaps/jis_custom/keymap.c    # 編集内容は下に記載
keymaps/jis_custom/keymap.c
#include QMK_KEYBOARD_H

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {

    [0] = LAYOUT_60_jis_custom(
        KC_ESC,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,  KC_INT3, KC_BSPC,
        KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC,
        KC_LCTL, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
        KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_INT1, KC_UP,   KC_RSFT,
        KC_CAPS, KC_LALT, KC_LGUI,                   KC_LNG2, KC_SPC,  KC_LNG1,                   KC_RGUI, MO(1),   KC_LEFT, KC_DOWN, KC_RGHT
    ),

    [1] = LAYOUT_60_jis_custom(
        QK_BOOT, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_TRNS, KC_DEL,
        KC_NO,   KC_BRID, KC_BRIU, KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU,
        KC_RCTL, KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,
        KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_PGUP, KC_NO,
        KC_NO,   KC_RALT, KC_NO,                     KC_NO,   KC_NO,   KC_NO,                     KC_NO,   KC_NO,   KC_HOME, KC_PGDN, KC_END
    ),

};
sed -i '' 's/"60_iso_tsangan"],/"60_iso_tsangan", "60_jis_custom"],/' info.json
vi info.json    # 編集内容は下に記載

レイアウト設定の配列に以下を追加する

info.json
        "LAYOUT_60_jis_custom": {
            "layout": [
                {"matrix": [0, 0], "x": 0, "y": 0},
                {"matrix": [0, 1], "x": 1, "y": 0},
                {"matrix": [0, 2], "x": 2, "y": 0},
                {"matrix": [0, 3], "x": 3, "y": 0},
                {"matrix": [0, 4], "x": 4, "y": 0},
                {"matrix": [0, 5], "x": 5, "y": 0},
                {"matrix": [0, 6], "x": 6, "y": 0},
                {"matrix": [0, 7], "x": 7, "y": 0},
                {"matrix": [0, 8], "x": 8, "y": 0},
                {"matrix": [0, 9], "x": 9, "y": 0},
                {"matrix": [0, 10], "x": 10, "y": 0},
                {"matrix": [0, 11], "x": 11, "y": 0},
                {"matrix": [0, 12], "x": 12, "y": 0},
                {"matrix": [0, 13], "x": 13, "y": 0},
                {"matrix": [0, 14], "x": 14, "y": 0},

                {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
                {"matrix": [1, 1], "x": 1.5, "y": 1},
                {"matrix": [1, 2], "x": 2.5, "y": 1},
                {"matrix": [1, 3], "x": 3.5, "y": 1},
                {"matrix": [1, 4], "x": 4.5, "y": 1},
                {"matrix": [1, 5], "x": 5.5, "y": 1},
                {"matrix": [1, 6], "x": 6.5, "y": 1},
                {"matrix": [1, 7], "x": 7.5, "y": 1},
                {"matrix": [1, 8], "x": 8.5, "y": 1},
                {"matrix": [1, 9], "x": 9.5, "y": 1},
                {"matrix": [1, 10], "x": 10.5, "y": 1},
                {"matrix": [1, 11], "x": 11.5, "y": 1},
                {"matrix": [1, 12], "x": 12.5, "y": 1},

                {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
                {"matrix": [2, 1], "x": 1.75, "y": 2},
                {"matrix": [2, 2], "x": 2.75, "y": 2},
                {"matrix": [2, 3], "x": 3.75, "y": 2},
                {"matrix": [2, 4], "x": 4.75, "y": 2},
                {"matrix": [2, 5], "x": 5.75, "y": 2},
                {"matrix": [2, 6], "x": 6.75, "y": 2},
                {"matrix": [2, 7], "x": 7.75, "y": 2},
                {"matrix": [2, 8], "x": 8.75, "y": 2},
                {"matrix": [2, 9], "x": 9.75, "y": 2},
                {"matrix": [2, 10], "x": 10.75, "y": 2},
                {"matrix": [2, 11], "x": 11.75, "y": 2},
                {"matrix": [2, 12], "x": 12.75, "y": 2},
                {"matrix": [2, 13], "x": 13.75, "y": 2, "w": 1.25},

                {"matrix": [3, 0], "x": 0, "y": 3, "w": 2},
                {"matrix": [3, 2], "x": 2, "y": 3},
                {"matrix": [3, 3], "x": 3, "y": 3},
                {"matrix": [3, 4], "x": 4, "y": 3},
                {"matrix": [3, 5], "x": 5, "y": 3},
                {"matrix": [3, 6], "x": 6, "y": 3},
                {"matrix": [3, 7], "x": 7, "y": 3},
                {"matrix": [3, 8], "x": 8, "y": 3},
                {"matrix": [3, 9], "x": 9, "y": 3},
                {"matrix": [3, 10], "x": 10, "y": 3},
                {"matrix": [3, 11], "x": 11, "y": 3},
                {"matrix": [3, 12], "x": 12, "y": 3},
                {"matrix": [3, 13], "x": 13, "y": 3},
                {"matrix": [3, 14], "x": 14, "y": 3},

                {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
                {"matrix": [4, 1], "x": 1.5, "y": 4, "w": 1},
                {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.75},
                {"matrix": [4, 3], "x": 4.25, "y": 4, "w": 1.25},
                {"matrix": [4, 7], "x": 5.5, "y": 4, "w": 3},
                {"matrix": [4, 8], "x": 8.5, "y": 4, "w": 1.25},
                {"matrix": [4, 9], "x": 9.75, "y": 4, "w": 1.25},
                {"matrix": [4, 10], "x": 11, "y": 4},
                {"matrix": [4, 11], "x": 12, "y": 4},
                {"matrix": [4, 12], "x": 13, "y": 4},
                {"matrix": [4, 13], "x": 14, "y": 4}
            ]
        }
コンパイル
qmk compile -kb yd60mq -km jis_custom

この位置にhexができているはずです。

/pathto/workspace/Keyboard/qmk_firmware/ymdk_yd60mq_0led_jis_custom.hex
フラッシュ

キーボードを接続した状態で叩いてください。

qmk flash -kb yd60mq -km jis_custom

場合によってはQMK Toolboxを使ってもいいかもしれません。
その場合は上記 hex を指定してあげればいいです。

キーボードの再起動、リセットについて

キーマップでQK_BOOTを設定済みであればそれを押すことでOK
ないのであれば、キーボードに用意してあるRESETをショートさせればOK (初回であれば多分こっち)
以下の赤丸のところをピンセットとかで触って離す。
IMG_0965.jpg

おかしかったこと

  • [Q] が押せない、押しても完全に無反応問題
    スイッチの不良かと思ってテスターで通電チェックしても問題なし、なのでキーマップの設定とかがおかしいのかと思って色々やっても改善せず。。
    色々ためした結果、なんと!1.5mmぐらいの半導体?が一個なくなっていた。。
    ケースを使わずむき出しで置いてたのもあり、なにかにぶつかって落ちたものと思われる。
    しまっていたところの下を確認したら落ちてたw
    なのでそれを拾ってはんだごてでつけました。その結果 [Q] が押せるようになりました。
    ちゃんとケースにいれましょう。
    赤丸が最初からの状態。青丸が拾ってつけた状態。汚いけどいいんです。
    IMG_0966.jpg

  • [Z] が押せない問題
    これは上記 [Q] とは違い設定によってはちゃんと押せていた。
    結果としてはレイアウトの4列目の設定1番目と2番目
    {"matrix": [3, 0], "x": 0, "y": 3, "w": 2}, {"matrix": [3, 2], "x": 2, "y": 3}
    この "matrix": [3, 2]"matrix": [3, 1] になって続いていたため。
    ちゃんとドキュメントを読んでないのであれなのですが、今回はたまたま左Shiftが2uの構成ですが、形としては左Shiftが1uだった場合もあるので、それを考慮されている?のかなという結論。
    まぁ今回は "matrix": [3, 1] にスイッチはないのですっ飛ばされたのかなと思う。

  1. 最終的な動作についてはmacはもちろんwindows11でも検証。問題なかった。

  2. ENTERのキーキャップがあんまりない。
    どうせなら一般的なJISのほうが使いやすいかなとか思ったけど比較的どうでも良かったかな。
    JISとUSの合いの子とかでもよかったかも。

  3. 僕ははんだ済みなのであれなのですが、こういうのでちゃんと設計してからやればよかったと思ってます。
    つい先日知りました。

  4. うすうす思ってはいましたが、やはりDockerでやればよかったとすごく後悔。。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?