Keyboard
proxy
QMK

自作キーボード用の QMK を HTTP Proxy 環境で build する

目的

Iris keyboard の key map を変更するためのの software の準備をする。特に HTTP Proxy環境下での環境に対応する。動作環境は Window 10 向けだが他の Windows の version でも大丈夫なはず。Mac の場合は最後に追記している。

環境構築の流れ

  1. MSYS2 をインストールし、shell 環境の土台を作る
  2. Git をインストールし、QMK software 入手のための準備をする
  3. QMK firmware を入手する

この後、利用したい keyboard の firmware を Arduino Micro などに書き込む流れとなる。

設定の流れ

  1. Iris keyboard の keymap を好きなように変更する
  2. Iris keyboard の firmware を build する 
  3. firmware を Pro Micro に書き込む

MSYS2 Installation

https://www.msys2.org/

Set proxy

自分の環境に合わせる
$ export http_proxy=http://proxyserver:portnumber

Update Core system and others

最新にしておく
$ pacman -Syu

Install Git

software入手のためインストールする
$ pacman -S git

Set proxy

自分の環境に合わせる
$ git config --global http.proxy http://proxyserver:portnumber        
$ git config --global https.proxy http://proxyserver:portnumber

設定を確認する

check

$ cat .gitconfig
[http]
        proxy = http://proxyserver:portnumber
[https]
        proxy = http://proxyserver:portnumber

ここまできたら、QMKのsource codeを入手する

Install QMK source code

結構時間かかる
$ git clone https://github.com/qmk/qmk_firmware.git

QMKファームウェアビルド環境の構築

$ cd qmk_firmware
$ ./util/msys2_install.sh

/mingw32/binにpathを通す

avrdudeのためだがもはや不要かも。build中にavrdudeが見つからないとerrorが出たらPATHに追加しておく。

$ export PATH=$PATH$:/mingw32/bin

Layout

好きな配列にするが、keymap.cでは見通しが悪いのでこちらでlayoutしておく。
Keyboard layout Editorによる配列

a.png

コンパイル

Build keyboard firmware

Build
$  make iris/rev2:default

書き込み

Burn_keyboard_firmware
$  make iris/rev2:default:avrdude

カスタマイズ

ここからキー配列を変更するなどのカスタマイズの詳細を記載する。

Keymap 変更

動作が確認できたら、自分の好きな keymap に変更するため、keymap.c を編集する。

編集が終わったら、再度コンパイルと書き込みを行う。
keyboard の reset switch を押すように指示が出るのでボタンを押すと、書き込みされる。
左右別々に2回書き込むことになる。これは面倒くさいが、二つマイコンを使っているので仕方ない。

modifier key の lock を防ぐ

入力中に Shift key がなぜか lock されることがあり、手動で Shift key を再度押すことで lock 解除されるのではるが、時折頻発し、大変なストレスを感じていた。

解決方法としては、config.h に以下を追加すればよい。自分は config.h の最後に追加した。

config.h
#define PREVENT_STUCK_MODIFIERS

これを追加してから Shift key が lock されてしまう現象がすっかりなくなった。ずっと shift key が物理的に接触がおかしいのかと思っていたが software の問題であった。現在は、これで解決しており、再発していない。

詳しい説明はこちら。
QMK - Prevent stuck modifier


補足: Macの場合

HomeBrew がインストールされているとして、
Windows 同様に git で QMK を download して、setup を実行する。

$ git clone https://github.com/qmk/qmk_firmware.git
$ cd qmk_firmware/
$ ./util/qmk_install.sh
$ sudo make iris/rev2:default

ここまではok.

しかし、最新のgcc 8.2では、firmwareの書き込みでerrorになってしまった。調べたところ、gcc 8.1 でないとうまく動かないそう。詳しくは[1] を参照のこと。
そこで、以下を実行し、古いgccをインストールする。

$ brew untap osx-cross/avr
$ brew tap leico/avr
$ brew uninstall avr-gcc && brew install avr-gcc@8_1

avr-gccのインストールはちょっと時間かかる。

$ sudo make iris/rev2:foo:avrdude

うまく書き込めた。fooと名前のkeyboardの種類を作り、keymapを自分の好みに修正する。

参考: Software

[0] QMK firmware Guide
[1] Lets Split Sockets/Vitamins failing with default build
[2] Prevent stuck modifiers

参考:Hardware: IRIS keyboard のカスタマイズ関連

[2] Iris keyboard tent
[3] Iris keyboard #3