2019年8月15日木曜日

自作キーボード沼に入ってみた件⑥


「自作キーボード沼に入ってみた件⑤」のつづきです。


ハード的に出来上がったので、次はファームウェアです。Pro Microの書き込みテストにはQMK Toolsを使いましたが、前回書いたように、今ひとつ調子が悪いのでQMK firmwareをそのまま使います。

まずはhomebrewのupdate, upgradeして、さらにdoctorでエラーはもちろん、ワーニングも消しておきます。これ大事。前回に続いて2度目です。
$ brew update
Already up-to-date.
$ brew upgrade
$ brew doctor
Your system is ready to brew.
$

適当なディレクトリに、QMK firmwareをcloneします。
$ cd fuga/
$ git clone --recurse-submodules https://github.com/qmk/qmk_firmware.git
Cloning into 'qmk_firmware'...
remote: Enumerating objects: 166138, done.
remote: Total 166138 (delta 0), reused 0 (delta 0), pack-reused 166138
Receiving objects: 100% (166138/166138), 125.98 MiB | 1.21 MiB/s, done.
Resolving deltas: 100% (108911/108911), done.
Checking out files: 100% (10943/10943), done.
Submodule 'lib/chibios' (https://github.com/qmk/ChibiOS) registered for path 'lib/chibios'

※省略

Receiving objects: 100% (24906/24906), 16.42 MiB | 1.33 MiB/s, done.
Resolving deltas: 100% (16001/16001), done.
Submodule path 'lib/chibios': checked out '587968d6cbc2b0e1c7147540872f2a67e59ca18b'
Submodule path 'lib/chibios-contrib': checked out 'ede48346eee4b8d6847c19bc01420bee76a5e486'
Submodule path 'lib/googletest': checked out 'ec44c6c1675c25b9827aacd08c02433cccde7780'
Submodule path 'lib/ugfx': checked out '3e97b74e03c93631cdd3ddb2ce43b963fdce19b2'
$ 

cloneしたQMK firmwareのディレクトリに移動して、インストールします。
$ cd qmk_firmware/
$ util/qmk_install.sh
Already up-to-date.
==> Installing avr-gcc@7 from osx-cross/avr
==> Downloading https://gcc.gnu.org/pub/gcc/releases/gcc-7.4.0/gcc-7.4.0.tar.xz
Already downloaded: /Users/hoge/Library/Caches/Homebrew/downloads/8b80c959666a423edc65d1fa057cf52e3bb84f33d23e31c0b40b7b7cd93c5ad9--gcc-7.4.0.tar.xz
==> ../configure --target=avr --prefix=/usr/local/Cellar/avr-gcc@7/7.4.0 --libdir=/usr/local/Cellar/avr-gcc@7/7.4.0/lib/avr-gcc/7 --enable-languages=c,c++ --wit
==> make
==> make install
==> Downloading https://download.savannah.gnu.org/releases/avr-libc/avr-libc-2.0.0.tar.bz2
==> Downloading from https://nongnu.freemirror.org/nongnu/avr-libc/avr-libc-2.0.0.tar.bz2
######################################################################## 100.0%
==> ./configure --build=i686-apple-darwin18.5.0 --prefix=/usr/local/Cellar/avr-gcc@7/7.4.0 --host=avr
==> make install
==> Caveats
avr-gcc@7 is keg-only, which means it was not symlinked into /usr/local,

※省略

==> Pouring dfu-util-0.9.mojave.bottle.tar.gz
🍺  /usr/local/Cellar/dfu-util/0.9: 11 files, 115.7KB
==> Caveats
==> avr-gcc@7
avr-gcc@7 is keg-only, which means it was not symlinked into /usr/local,
because it might interfere with other version of avr-gcc. This is useful if you want to have multiple version of avr-gcc installed on the same machine.

If you need to have avr-gcc@7 first in your PATH run:
  echo 'export PATH="/usr/local/opt/avr-gcc@7/bin:$PATH"' >> ~/.bash_profile

For compilers to find avr-gcc@7 you may need to set:
  export LDFLAGS="-L/usr/local/opt/avr-gcc@7/lib"

Linking /usr/local/Cellar/avr-gcc@7/7.4.0... 20 symlinks created

If you need to have this software first in your PATH instead consider running:
  echo 'export PATH="/usr/local/opt/avr-gcc@7/bin:$PATH"' >> ~/.bash_profile
$ 


♪♪♪


動作チェックとして、デフォルトのキーマップを書き込みます。

早速左右のキーボードをTRRSケーブルで接続して、左手側のPro MicroにUSBケーブルを挿します。

キーマップをコンパイル(hexファイルを生成)します。ディレクトリは、cloneしたQMK firmwareのディレクトリのままです。
$ make keebio/iris/rev2:default
QMK Firmware 0.6.328
Making keebio/iris/rev2 with keymap default

avr-gcc (GCC) 7.4.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Compiling: keyboards/keebio/iris/iris.c                                                             [OK]
Compiling: keyboards/keebio/iris/rev2/rev2.c                                                        [OK]
Compiling: keyboards/keebio/iris/keymaps/default/keymap.c                                           [OK]
Compiling: quantum/quantum.c                                                                        [OK]
Compiling: quantum/keymap_common.c                                                                  [OK]
Compiling: quantum/keycode_config.c                                                                 [OK]

※省略

Compiling: lib/lufa/LUFA/Drivers/USB/Core/Events.c                                                  [OK]
Compiling: lib/lufa/LUFA/Drivers/USB/Core/HostStandardReq.c                                         [OK]
Compiling: lib/lufa/LUFA/Drivers/USB/Core/USBTask.c                                                 [OK]
Linking: .build/keebio_iris_rev2_default.elf                                                        [OK]
Creating load file for flashing: .build/keebio_iris_rev2_default.hex                                [OK]
Copying keebio_iris_rev2_default.hex to qmk_firmware folder                                         [OK]
Checking file size of keebio_iris_rev2_default.hex                                                  [OK]
 * The firmware size is fine - 23244/28672 (5428 bytes free)
$ 
hexファイルはQMK firmwareの直下に、keebio_iris_rev2_default.hexの名前で作成されます。これを使えばQMK Toolsで書き込みができるのでしょうが(未確認)、ここではコンパイルが通ることだけを確認します。


今度は、末尾に”:avrdude”を付けて、コンパイル&書き込みを行います。

’’Detecting USB port, reset your controller now....”の表示がでたら、キーボードのリセットスイッチをポチッと押します。そうすると書き込みが始まります。
$ make keebio/iris/rev2:default:avrdude
QMK Firmware 0.6.328
Making keebio/iris/rev2 with keymap default and target avrdude

avr-gcc (GCC) 7.4.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Size before:
   text    data     bss     dec     hex filename
      0   23244       0   23244    5acc .build/keebio_iris_rev2_default.hex

Compiling: tmk_core/common/command.c                                                                [OK]
Linking: .build/keebio_iris_rev2_default.elf                                                        [OK]
Creating load file for flashing: .build/keebio_iris_rev2_default.hex                                [OK]
Copying keebio_iris_rev2_default.hex to qmk_firmware folder                                         [OK]
Checking file size of keebio_iris_rev2_default.hex                                                  [OK]
 * The firmware size is fine - 23244/28672 (5428 bytes free)
Detecting USB port, reset your controller now.................               ←ここでポチッと!!
Device /dev/tty.usbmodem14101 has appeared; assuming it is the controller.
Waiting for /dev/tty.usbmodem14101 to become writable.

Connecting to programmer: .
Found programmer: Id = "CATERIN"; type = S
    Software Version = 1.0; No Hardware Version given.

※省略


avrdude: input file .build/keebio_iris_rev2_default.hex contains 23244 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.17s

avrdude: verifying ...
avrdude: 23244 bytes of flash verified

avrdude: safemode: Fuses OK (E:FB, H:D8, L:FF)

avrdude done.  Thank you.

$ 


♪♪♪


無事書き込みができたら、Macデフォルトのキーボードビューアを使って、すべてのキーが動作するか確認します。

システム環境設定の「メニューバーにキーボードビューアと絵文字ビューアを表示」にチェックを入れて、メニューバーからキーボードビューアを開きます。

チェックを入れます。


キーボードビューアを表示を選択。


キーボードビューア

上手くいかない原因はケースバイケースですが、特定のキーだけが効かないときに、最初に疑うべきはハンダ付けのし忘れです。ハンダ付け箇所が多いのでありがちです。

わたくし、一カ所忘れてました。


♪♪♪


ハードウェアに問題がないことが確認できたら、キーマップのカスタマイズです。

上記のデフォルトのキーマップは、qmk_firmware/keyboards/keebio/iris/keymaps/のdefaultディレクトリにありますので、このディレクトリを同じ場所に別名でコピーして作成します。

$ cd keyboards/keebio/iris/keymaps/
$ cp -r default piyo
$ ls -la
total 16
drwxr-xr-x@ 42 hoge  staff  1344  5  1 00:58 .
drwxr-xr-x@ 14 hoge  staff   448  5  1 00:49 ..
-rw-r--r--@  1 hoge  staff  6148  5  1 00:58 .DS_Store
drwxr-xr-x@  4 hoge  staff   128  4 30 08:28 ave-63
drwxr-xr-x@  6 hoge  staff   192  4 30 08:28 bmoorey
drwxr-xr-x@  5 hoge  staff   160  4 30 08:28 broswen
drwxr-xr-x@  6 hoge  staff   192  4 30 08:28 davidrambo
drwxr-xr-x@  5 hoge  staff   160  4 30 08:28 dbroqua
drwxr-xr-x@  5 hoge  staff   160  4 30 08:28 default        ←これをコピーして
drwxr-xr-x@  5 hoge  staff   160  4 30 08:28 drashna
drwxr-xr-x@  5 hoge  staff   160  4 30 08:28 drashna_lp

※省略

drwxr-xr-x@  6 hoge  staff   192  4 30 08:28 olligranlund_nordic
drwxr-xr-x@  6 hoge  staff   192  4 30 08:28 omgvee
drwxr-xr-x@  5 hoge  staff   160  5  1 00:54 piyo           ←これを作成
drwxr-xr-x@  5 hoge  staff   160  4 30 08:28 rdhaene
drwxr-xr-x@  7 hoge  staff   224  4 30 08:28 rs
drwxr-xr-x@  6 hoge  staff   192  4 30 08:28 s1carii
drwxr-xr-x@  5 hoge  staff   160  4 30 08:28 saviof
drwxr-xr-x@  5 hoge  staff   160  4 30 08:28 swedish
drwxr-xr-x@  6 hoge  staff   192  4 30 08:28 transmogrified
drwxr-xr-x@  5 hoge  staff   160  4 30 08:28 via
drwxr-xr-x@  5 hoge  staff   160  4 30 08:28 vyolle
drwxr-xr-x@  5 hoge  staff   160  4 30 08:28 wanleg
drwxr-xr-x@  5 hoge  staff   160  4 30 08:28 xyverz
drwxr-xr-x@  6 hoge  staff   192  4 30 08:28 yanfali
$

キーマップは3つのファイルで構成されています。
$ ls -l piyo/
total 48
-rwxr-xr-x@ 1 hoge  staff    867  5  1 00:54 config.h
-rwxr-xr-x@ 1 hoge  staff  12387  5  1 00:54 keymap.c
-rwxr-xr-x@ 1 hoge  staff     45  5  1 00:54 rules.mk
$ 

主に修正するのはkeymap.cになりますが、まずはこのままコンパイルしてみます。方法はデフォルトと同じですが、defaultの部分をコピーして作ったディレクトリ名に変更します。

QMK firmwareのディレクトリに戻ってmakeします。書き込みも同じように後ろに:avrdudeを付けます。
$ cd fuga/qmk_firmware/
$ make keebio/iris/rev2:piyo
※省略
$ make keebio/iris/rev2:piyo:avrdude
※省略
$

後は、QMK firmwareのドキュメントを見ながら、新しく作ったキーマップファイルを自由にカスタマイズします。

これで頑張ってHammerspoonで設定する必要がなくなりました。


さよならHammerspoon、今までありがとう。
あとKarabinerも。


参考になるかどうかはわかりませんが、ここに僕のキーマップを置いてありますので、よかったら見てみてください。サブレイヤーもひとつですし、tap danceも何箇所か使ってます。

Escを左手の親指という特等席に置いたVimmer仕様にしたため、数字キー(一番上の段)が左にずれて、なかなか慣れません(笑)。


♪♪♪


そして次回は、キーキャップとまとめです。


♪♪♪


こちらもどうぞ。
自作キーボード沼に入ってみた件①
自作キーボード沼に入ってみた件②
自作キーボード沼に入ってみた件③
自作キーボード沼に入ってみた件④
自作キーボード沼に入ってみた件⑤
自作キーボード沼に入ってみた件⑦
自作キーボード沼に入ってみた件(おまけ)