やる気駆動型エンジニアの備忘録

WPF(XAML+C#)の話題を中心に.NET/Android/CI やたまに趣味に関するブログです

ErgoDoxのキーマップ変更時にハマった現象と回避策について

先日、ErgoDoxを購入してウキウキで使用していたんですが、キーマップを変更する際にコンパイル環境の構築やらビルドやらでハマったのでその内容をメモします。
まず、前提条件として私は

  • Windowsユーザー
  • 普段は開発環境はVisual Studioを使用している。
  • キーボードはあんまり詳しくない。
  • C言語は殆どわからない。
  • Windows以外のOSのことは殆どわからない。
  • ErgoDox EZは9割衝動買い。

です。
なのでコンパイル環境は当然Windowsです。


コンパイル環境を構築する

基本的にErgoDox EZのコンパイル環境はMacLinuxの記事が大半を占めています。
私のような工業系Windowsオンリーユーザーには厳しい条件ですが、Windows10 であれば"Bash on Ubuntu on Windows"を使用してコンパイルが可能です。

動作環境

以下のページに習ってBash on Ubuntu on Windowsをインストールします。

qiita.com

次にGitをインストールします。
コマンドプロンプトを開き、以下のコマンドを入力します。

sudo apt-get install git gcc-avr avr-libc dfu-programmer make
cd
git clone https://github.com/jackhumbert/qmk_firmware.git

これでコンパイルするための環境は構築できました。

キーマップを変更する

環境構築ができたので次はキーマップを変更します。
しかし、Bash on Ubuntu on Windowsでは主にvimを使用してキーマップファイルを編集するような記事がほとんどです。
困ったことに私はvimは使ったことがないので起動方法すら知りません。
なんとかWindows環境で使い慣れたテキストエディタで編集できないものかと調べることに。
そもそも"on Windows"というくらいなので何処かにファイルはあるはずだよね~
と調べた結果、以下の場所にBashの環境がありました。

C:\Users\<ユーザー名>\AppData\Local\lxss

  • 2019/01/23 追記

どうやら最新バージョンでは上記フォルダは見えないようです。
ではどこに移動したか?
まずはレジストリエディタで以下の値を参照してください。

HKCU\Software\Microsoft\Windows\CurrentVersion\Lxss\{###SID###}\BasePath

ここに記載されているフォルダがルートになっています。
(おそらく"LocalState"フォルダに移動するはずです。)
移動できたらさらに"LocalState/rootfs/home/<ユーザー名>"のフォルダに移動しましょう。

  • 2019/01/23 追記終わり

このフォルダはエクスプローラー上では見えないのですが、パス入力欄から入力すると表示することができます。
Gitから取得したキーマップのコンパイル環境は、
home\<ユーザー名>\qmk_firmware
にあります。

ErgoDox EZは更にその下の
home\<ユーザー名>\qmk_firmware\keyboards\ergodox_ez\keymaps\default\keymap.c
を使用しています。
あとは、このファイルをテキストエディタで編集してください。
ちなみに私はVSCodeで編集しました。

ビルドする

キーマップファイルが編集できたら次はコンパイルです。
コマンドプロンプトから"bash"を叩くか、Winキー + Rキー 入力後に"bash"と入力してBashを起動します。
Bashを起動後に以下のコマンドを入力します。

cd ~/qmk_firmware/  
make keyboard=ergodox_ez keymap=default
ls .build/ergodox_ez_default.hex

make 実行後にコンパイルが始まり、完了すると以下のフォルダに ergodox_ez_default.hex ファイルが配置されます。
home\<ユーザー名>\qmk_firmware\.build

後はこれを以下のページからダウンロードしたTeensyを使用してファームウェアを書き換えます。
Teensy Loader Application - available for Windows, Linux and Macintosh systems

問題点

キーマップの編集中にハマった現象とその解決策を以下にまとめます。

1.2回ファームウェアを書き換えるとUSBが認識できなくなる。

  • 現象

Teensyを使用してファームウェアを書き換えた後、もう一度ファームウェアを書き換えるとErgoDox EZのUSBが識別できなくなります。
一度発生するとキーを入力しても何も反応がないので、操作できなくなります。
USBを抜き差ししても元には戻しません。

  • 解決策

OSを再起動する。
再起動後は何事もなかったかのように使用できます。
また、ファームウェアも無事に書き換わっています。

2.コンパイルに失敗する。

  • 現象

上記の"ビルドする"の手順でmake コマンドを実行するとコンパイルエラーになり、.hex ファイルが作成できなくなる。
一度発生するとBash を再起動したり、OSを再起動しても発生する。
keymap.c ファイルをデフォルトの状態に戻すとコンパイルが通るが、少しでも変更するとコンパイルエラーになる。

  • 解決策

リポジトリから再度最新の環境を取得する。
この時、既存の環境は削除しておいたほうがいい。
リポジトリ再取得後にkeymap.c を変更してコンパイルするとあっさり通るようになる。
また、この現象はコンパイル実行後、bash を終了するかOSを再起動すると発生する。




とまぁ、ちょくちょく大変な目にはあいましたが、結構いいですよErgoDox EZ。
まだまだ使い始めで慣れていない部分が多いですが、今後もちょくちょくカスタマイズしていこうと思います。

使用したキーマップファイルはこちら↓↓↓
github.com