喫茶blanc

何か作ったり、何か食べたり

#universal16 v0.2をqmk_firmwareで使う(その2) ソフトウェアの用意

keyaki-namiki.booth.pm


このエントリは以下の'続き'になります。配線にあたっての注意点などをお探しの場合はこちらをご覧ください

keyaki-namiki.hatenablog.jp


Note

universal16を使ってqmk_firmwareで新しいキーボードを作成する手順をご紹介します。私自身、qmk_firmwareでキーボードを作成する一連の操作は初めてのものであり、手順に誤りや不足がある可能性があります。この手順のコピペだけでなく公式のDocumentなどを読みながらの操作をおすすめします。当記事についてお気づきの点がありましたら、Twitter(@keyaki_namiki)までお知らせいただけると幸いです。

また、これ以降Git/GitHubの知識が必要になる箇所が多々あります。知らない単語やコマンドはコピペして実行するのではなく、適宜検索するなどしてどういう意味なのか、何をするコマンドなのかを確認するようにしてください。

Gitがインストールされていない場合はapt install gitpacman -S gitbrew install gitなどでインストールできる場合があります。詳しくは、[ git インストール ]などで検索してみてください。

最後にもう一点、当記事はArchLinux、macOSに展開した環境の下作成されたものです。お使いのOSによってはこの記事の他に必要な手順が発生する可能性がありますことをご留意ください。


配線が済んだら、次にソフトウェアの準備をします。

qmkのrepository(以降、repo)からforkしたものを、手元の、任意のフォルダ下にcloneします。(GitHubのアカウントを持っていない場合は、qmkのrepoからcloneすることもできます)

git clone https://github.com/[YOUR_USERNAME]/qmk_firmware.git

cd qmk_firmwareなどでqmk_firmwareのフォルダ内に入ります。

手元のrepoは自分がforkしたものを本流として持っているので、本家qmkのrepoをremoteのリストに追加します。

git remote add [本家とわかる略称、ここでは‘upstream’] https://github.com/qmk/qmk_firmware.git

これでforkした自分のrepoとは別に本家qmkのrepoからも差分を取得できるようになりました。
以下のコマンドで確認することができます。

git remote -v

出力が以下のようになっていることを確認します。

origin       https://github.com/[YOUR_USERNAME]/qmk_firmware.git (fetch)
origin       https://github.com/[YOUR_USERNAME]/qmk_firmware.git (push)
upstream     https://github.com/qmk/qmk_firmware (fetch)
upstream     https://github.com/qmk/qmk_firmware (push)

次に、新しい作業用のbranchを用意します。
masterのbranchで作業/commitしてしまうと、本家qmkとの差分で競合が発生したときの調整が大変になってしまうためです。

git checkout -b [開発branchとわかる名称、ここでは‘dev_branch’] master

git statusを実行すると、いま作業しているbranchの名前が(例えば以下のように)わかるので、時々確認するのも良いかと思います。

On branch dev_branch
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean

これで、新しくキーボードを作成する準備が大方整いました。早速、やっていきましょう。

新しいキーボードを作成する上で、雛形となるファイルはutil/new_project.sh [あなたのキーボードプロジェクト名]の実行にって生成することができます。今回は、

./util/new_project.sh universal16

を実行したと仮定して、進めていきます。

先程のコマンドを実行すると、keyboards/配下にuniversal16というフォルダができると思います。その中に以下のファイル群が含まれることを確認してください。

  • config.h
  • info.json
  • keymaps
    • keymaps/default/
      • keymaps/default/config.h
      • keymaps/default/keymap.c
      • keymaps/default/readme.md
  • readme.md
  • rules.mk
  • universal16.c
  • universal16.h

以降、特に言及がない限り"Hogehogeというファイル"とあるものはkeyboards/universal16/の下にあるものを指します。


まずは、config.hというファイル。

@@ -1,3 +1,3 @@
/*
-Copyright 2018 REPLACE_WITH_YOUR_NAME
+Copyright 2018 keyaki-namiki

@@ -22,8 +22,8 @@
/* USB Device descriptor parameter */
#define VENDOR_ID       0xFEED
#define PRODUCT_ID      0x0000
#define DEVICE_VER      0x0001
-#define MANUFACTURER    You
-#define PRODUCT         universal16
-#define DESCRIPTION     A custom keyboard
+#define MANUFACTURER    keyaki-namiki
+#define PRODUCT         universal16
+#define DESCRIPTION     4x4 simple key_matrix with universal board

@@ -30,4 +30,4 @@
/* key matrix size */
-#define MATRIX_ROWS 2
-#define MATRIX_COLS 3
+#define MATRIX_ROWS 4
+#define MATRIX_COLS 4

@@ -44,4 +44,4 @@
-define MATRIX_ROW_PINS { D0, D5 }
-#define MATRIX_COL_PINS { F1, F0, B0 }
+#define MATRIX_ROW_PINS { B1, B3, B2, B6 }
+#define MATRIX_COL_PINS { C6, D7, E6, B4 }
#define UNUSED_PINS

このファイルには、キーボードの配線(どのピンがどの回路に繋がっているかなど)や機能の設定について記述します。詳しくはこちら

docs.qmk.fm

今回は、Rows/Colsの部分のみを変更しました(ここでピンの接続について記述しますが、ピンの名前はArduinoで扱うときのものではない点に注意が必要です)。


次に、rules.mkというファイル。

@@ -42,9 +42.9 @@
# Bootloader selection
#   Teensy       halfkay
#   Pro Micro    caterina
#   Atmel DFU    atmel-dfu
#   LUFA DFU     lufa-dfu
#   QMK DFU      qmk-dfu
#   atmega32a    bootloadHID
-BOOTLOADER = atmel-dfu
+BOOTLOADER = caterina

今回はコントローラにPro Microを使用するのでcaterinaを選択します。


続いて、universal16.hというファイル。
universal16は4キーx4キーの16キーで構成されているため、デフォルトで用意される3キー+2キーの5キーで構成される部分を編集します。

@@ -29,9 +29,13 @@
#define LAYOUT( \
-    K00, K01, K02, \
-      K10,  K11   \
-) \
-{ \
-    { K00, K01,   K02 }, \
-    { K10, KC_NO, K11 }, \
-}
+    K00, K01, K02, K03,\
+    K10, K11, K12, K13,\
+    K20, K21, K22, K23,\
+    K30, K31, K32, K33\
+) \
+{ \
+    { K00, K01, K02, K03 }, \
+    { K10, K11, K12, K13 }, \
+    { K20, K21, K22, K23 }, \
+    { K30, K31, K32, K33 }, \
+}

K00からK33まで、16キーを配置しているのがわかるかと思います。


最後にkeyboards/universal16/keymaps/内の、default/keymap.cというファイルを編集します。

@@ -24,7 +24,9 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  [0] = LAYOUT( /* Base */
-    KC_A,  KC_1,  KC_H, \
-      KC_TAB,  KC_SPC   \
-  ),
-};
+    KC_KP_1,   KC_KP_2, KC_KP_3,     KC_UP,\
+    KC_KP_4,   KC_KP_5, KC_KP_6,     KC_RIGHT,\
+    KC_KP_7,   KC_KP_8, KC_KP_9,     KC_LEFT,\
+    KC_KP_DOT, KC_KP_0, KC_KP_EQUAL, KC_DOWN\
+),
+};

最初なので、16あるキーにnumpadの0-9と"." "="、矢印キーをあててみました。ここから更に、レイヤー機能などを使ってuniversal16を便利にすることができるでしょう。

キーコードについてはこちらに詳しくあります。

docs.qmk.fm




以上が、universal16を使ってqmk_firmwareで新しいキーボードを作成する上で最低限編集の必要なファイルになります。

さっそく、Pro Microに書き込んでみましょう。

これまでの手順を書いたとおりになぞっている場合、書き込みに必要なツールはまだインストールされていないかと思います。qmk_firmwareのある位置(pwdなどをして今居るディレクトリがqmk_firmwareであることを確認できます)に移動し、以下のコマンドを実行します。

./util/qmk_install.sh

このコマンドひとつで今使っている環境を調べて必要なパッケージをすべてインストールすることができます。

続いて、コンパイル

make universal16:default

書き込みまでひと思いに済ませてしまうには、

make universal16:default:avrdude

を実行します。

書き込み用ソフトウェア、QMK Toolboxを使うこともできます。

github.com



。。。

どうでしょうか。

カーソルキーがとても細くて見づらいかと思いますが、うまくいくとこんな風に機能します。

次はMxLEDBitPCB、通称"無限の可能性"を使ってもう2つ、キーを増やしてみます💪


github.com