Architeuthis duxキーボードを組み立てました

2024/05/22 07:58#自キー

以前某フリマアプリで基板だけ買っていたArchiteuthis dux組み立てました。
Ergogenデザインした物のコレクション1つです。

仕様

  • 34キー左右分割
  • Pro Micro
  • Choc v1スイッチ
  • スイッチ直配線、基板だけ

組み立て

基板以外に必要な部品

  • Pro Micro x2
  • Choc v1ソケット x34
  • スイッチ、キーキャップ x34
  • 3.5mmジャック
  • ピンソケット

Pro Microを直ではんだ付けしても良いんですが、もげマイクロしたくないので念のためロープロファイルのピンソケットを追加で購入しつつ他は部品棚を漁って確保しました。
ロープロファイルのピンヘッダは購入忘れたので、普通のピンヘッダから線を引き抜いてピンソケットに差し込んだ状態ではんだ付けして余った線をニッパーでカットしました。

TRRSケーブルじゃないと動かない

組み立て完了して動作確認の際にどうしても動かなかったのでGitHubのイシュー見ると基板の設計上TRSケーブルだとショートして動かないみたいでした。
ここで短めのTRRSケーブルをポチって一時休戦となりました。

届いたので動作確認して直接基板にゴム足を貼ってましたがタイピングすると結構ガタガタしてます。

ファームウェア

ファームウェアはqmk_firmwareレポジトリに用意されていますが気づかずにqmk new-keyboard新しく作成しました。
今回はスイッチ直配線なので、基板を見ながらスイッチに繋がっているピンをinfo.jsonmatrix_pins.direct列挙します。

  "matrix_pins": {
    "direct": [
      ["C6", "D2", "F7", "B2", "F4"],
      ["D7", "D0", "F6", "B3", "F5"],
      ["E6", "D4", "D3", "B1", "B6"],
      [null, null, null, "B4", "B5"]
    ]
  }

同じくinfo.jsonlayoutsに、とりあえずLAYOUTいう名前でレイアウトを定義します。
layout配列はキーボードの左上から右上、上段から下段に対応しています。

分割レイアウトの場合は左右のPro Microでスイッチに繋がっているピンが同じ場合が多いのでmatrix_pinsでの定義は左側のPro Microだけで、右側に対応するmatrix_pins.direct配列が勝手に増えるような具合でした。
今回だとmatrix_pins.direct[4]からmatrix_pins.direct[7]までが右側の分になります。

  "layouts": {
    "LAYOUT": {
      "layout": [
        {"x": 0, "y": 0, "matrix": [0, 0]},
        {"x": 0, "y": 0, "matrix": [0, 1]},
        {"x": 0, "y": 0, "matrix": [0, 2]},
        {"x": 0, "y": 0, "matrix": [0, 3]},
        {"x": 0, "y": 0, "matrix": [0, 4]},

        {"x": 0, "y": 0, "matrix": [4, 4]},
        {"x": 0, "y": 0, "matrix": [4, 3]},
        {"x": 0, "y": 0, "matrix": [4, 2]},
        {"x": 0, "y": 0, "matrix": [4, 1]},
        {"x": 0, "y": 0, "matrix": [4, 0]},

        {"x": 0, "y": 0, "matrix": [1, 0]},
        {"x": 0, "y": 0, "matrix": [1, 1]},
        {"x": 0, "y": 0, "matrix": [1, 2]},
        {"x": 0, "y": 0, "matrix": [1, 3]},
        {"x": 0, "y": 0, "matrix": [1, 4]},

        {"x": 0, "y": 0, "matrix": [5, 4]},
        {"x": 0, "y": 0, "matrix": [5, 3]},
        {"x": 0, "y": 0, "matrix": [5, 2]},
        {"x": 0, "y": 0, "matrix": [5, 1]},
        {"x": 0, "y": 0, "matrix": [5, 0]},

        {"x": 0, "y": 0, "matrix": [2, 0]},
        {"x": 0, "y": 0, "matrix": [2, 1]},
        {"x": 0, "y": 0, "matrix": [2, 2]},
        {"x": 0, "y": 0, "matrix": [2, 3]},
        {"x": 0, "y": 0, "matrix": [2, 4]},

        {"x": 0, "y": 0, "matrix": [6, 4]},
        {"x": 0, "y": 0, "matrix": [6, 3]},
        {"x": 0, "y": 0, "matrix": [6, 2]},
        {"x": 0, "y": 0, "matrix": [6, 1]},
        {"x": 0, "y": 0, "matrix": [6, 0]},

        {"x": 0, "y": 0, "matrix": [3, 3]},
        {"x": 0, "y": 0, "matrix": [3, 4]},

        {"x": 0, "y": 0, "matrix": [7, 4]},
        {"x": 0, "y": 0, "matrix": [7, 3]},
      ]
    }
  }

キーマップは34キーということで、Aを長押しでALT、Zを長押しでGUIに設定しています。
あと、レイヤーキー同時押しの安定化のためにupdate_tri_layer_state導入しました。

layer_state_t layer_state_set_user(layer_state_t state) {
    return update_tri_layer_state(state, 1, 2, 3);
}

自分でファームウェアを用意したことはなかったので勉強になりました。

ケース

おわりに、3Dプリンターで印刷する用にケースのデータも公開されてたので利用しました。

ただレポジトリのREADMEにある写真的にも基板を乗せてみただけな感じがするのと、実際ソケット部分が干渉してたりするので後で自分でも設計希望です。