Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
62 commits
Select commit Hold shift + click to select a range
2413c60
Improve implementation
shelaf Jun 7, 2019
82680a8
Apply code changes
shelaf Jun 7, 2019
0a1d4c7
Merge pull request #4 from shelaf/fix
peraneko Jun 7, 2019
486f69d
Update TONE_QMK_firmware.md
peraneko Jun 7, 2019
8c59682
Add files via upload
peraneko Jun 7, 2019
c38a322
Delete TONE_QMK_firmware.md
peraneko Jun 7, 2019
f8599c2
Create TONE_QMK_firmware.md
peraneko Jun 7, 2019
539b3de
Delete config.h
peraneko Jun 7, 2019
71617b4
Delete readme.md
peraneko Jun 7, 2019
eb48f05
Delete rules.mk
peraneko Jun 7, 2019
f89bed5
Delete tone.c
peraneko Jun 7, 2019
af90256
Delete tone.h
peraneko Jun 7, 2019
291c0ce
Delete readme.md
peraneko Jun 7, 2019
3cfb262
Delete keymap_org.c
peraneko Jun 7, 2019
9a9867d
Delete keymap.c
peraneko Jun 7, 2019
1731aa6
Delete config.h
peraneko Jun 7, 2019
f6bff3b
Add files via upload
peraneko Jun 7, 2019
16f4ea9
Update TONE_QMK_firmware.md
peraneko Jun 7, 2019
5e24453
Delete TONE_test.hex
peraneko Jun 7, 2019
71322e1
Delete TONE_ALR.hex
peraneko Jun 7, 2019
1d07bb4
Add files via upload
peraneko Jun 7, 2019
94f7fec
Update tone.h
peraneko Jun 23, 2019
6ca88da
Delete config.h
peraneko Jun 23, 2019
ffdb7f2
Add files via upload
peraneko Jun 23, 2019
e802995
Delete keymap.c
peraneko Jun 23, 2019
b4eaa4d
Add files via upload
peraneko Jun 23, 2019
20b8c3d
Update TONE_QMK_firmware.md
peraneko Jun 23, 2019
2c19c76
Delete TONE_Lr.hex
peraneko Jun 23, 2019
73df744
Add files via upload
peraneko Jun 23, 2019
2a41ffe
Delete TONE_test.hex
peraneko Jun 23, 2019
bd6a120
Add files via upload
peraneko Jun 23, 2019
0144e5e
Delete keymap_org.c
peraneko Jun 23, 2019
8e1d1d0
Add files via upload
peraneko Jun 23, 2019
460aa4a
Delete tone_test.hex
peraneko Jun 23, 2019
1ec0dcc
Add files via upload
peraneko Jun 23, 2019
1a60c53
Update TONE_QMK_firmware.md
peraneko Jun 23, 2019
4eb2ed8
Update keymap.c
peraneko Jun 23, 2019
ddba425
Update TONE_QMK_firmware.md
peraneko Jun 23, 2019
cac10e2
Update keymap.c
peraneko Jun 23, 2019
91dee19
Update keymap.c
peraneko Jun 23, 2019
0eb6f48
Update keymap.c
peraneko Jun 23, 2019
64a9ae6
Update keymap.c
peraneko Jun 23, 2019
0f344a9
Update TONE_QMK_firmware.md
peraneko Jun 23, 2019
813d831
Delete tone_ALR.hex
peraneko Jun 23, 2019
ba0c223
Delete tone_test.hex
peraneko Jun 23, 2019
307b07b
Add files via upload
peraneko Jun 23, 2019
ddbf692
Update TONE_QMK_firmware.md
peraneko Jun 23, 2019
a05af77
Update TONE_QMK_firmware.md
peraneko Jun 23, 2019
6fa8f4f
Delete tone_test.hex
peraneko Aug 5, 2019
2bc023e
Add files via upload
peraneko Aug 5, 2019
3c9b090
Update config.h
peraneko Aug 5, 2019
02015bf
Update tone.h
peraneko Aug 5, 2019
58fb37f
Update rules.mk
peraneko Aug 5, 2019
acb53f0
Update readme.md
peraneko Aug 5, 2019
83859b4
Update readme.md
peraneko Aug 5, 2019
572fc8c
Update keymap.c
peraneko Aug 5, 2019
a678524
Update keymap.c
peraneko Aug 5, 2019
4a60c82
不要なバックスラッシュを削除
shelaf Oct 8, 2019
a97d3f3
作者名の置換漏れ
shelaf Oct 8, 2019
cd4da45
fix typo
shelaf Oct 8, 2019
ca02d61
Merge pull request #7 from shelaf/master
peraneko Nov 22, 2019
27e54cd
Update TONE_QMK_firmware.md
peraneko Dec 8, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1,385 changes: 0 additions & 1,385 deletions TONE_HEX/TONE_ALR.hex

This file was deleted.

1,385 changes: 0 additions & 1,385 deletions TONE_HEX/TONE_test.hex

This file was deleted.

1,390 changes: 1,390 additions & 0 deletions TONE_HEX/tone_ALR.hex

Large diffs are not rendered by default.

1,393 changes: 1,393 additions & 0 deletions TONE_HEX/tone_test.hex

Large diffs are not rendered by default.

153 changes: 80 additions & 73 deletions TONE_QMK_firmware.md
Original file line number Diff line number Diff line change
@@ -1,121 +1,130 @@

# ファームウエアの書き込み
### ファームウエアとはなにか
TONEでは、キー入力をPCに渡すために、QMKファームウエアを利用しています。
QMKファームウエアは、先程とりつけたProMicroにこれから書き込まれ、キーの入力をPCで認識できる入力形式に変換して、PCに送る動作を行います。

### TONEの動作確認をする
まずは物理的にキーが動作しているか確認するためのファームウエアで、ハンダ付けがうまく行っているかを確認しましょう。

テスト用のファームウエアはこちらに用意してあります。
[TONE_test.hex](https://github.com/peraneko/TONE/blob/master/TONE_HEX/TONE_test.hex)
TONE_test.hexをダウンロードして、わかりやすい場所に置いておきます。
[tone_test.hex](https://github.com/peraneko/TONE/blob/master/TONE_HEX/tone_test.hex)
tone_test.hexをダウンロードして、わかりやすい場所に置いておきます。

ファームウエアの書き込みについては、QMK Toolboxを利用します。
[QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) のダウンロード画面で、自分の使っているOSにあわせてダウンロードするファイルを選んでください。
MAC OS/Windowsともに用意されています。

QMK Toolboxを無事にダウンロードできたら、インストールして実行してください。
このような画面が表示されます。この画面はWindows版のためMACを利用している方は、適宜読み替えてください。

![QMKToolbox実行画面](https://user-images.githubusercontent.com/5952961/59032589-a45a3c00-88a1-11e9-94c2-eec1b0bca2c6.png)
この画面の右上、MicroControllerのプルダウンがatmega32u4になっているか確認してください。
問題がなければ、そのすぐ下にあるAuto-Flashのチェックボックスをクリックして、チェックを入れてください。

左側のlocal fileを選択します。これは、書き込みたいファイルを指定するための動作です。
local fileの右側にあるOPENをクリックして、先程ダウンロードしておいた、TONE_test.hexを選択してください。

選択したら、TONEのリセットスイッチを押します。
すると、自動的に書き込みが進んでいきます。
書き込みが終わるとavrdude.exe done. Thank you.と表示されます。

TONE_test.hexのキーマップは下記の通りです。
~~~C
#include QMK_KEYBOARD_H

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
KC_A, KC_B, KC_C, KC_B,\
KC_E, KC_F, KC_G, KC_H,\
KC_0, KC_1 \
),
[0] = LAYOUT(
KC_A, KC_B, KC_C, KC_D,
KC_E, KC_F, KC_G, KC_H
)
};

/* Rotary encoder settings */
void encoder_update_user(uint16_t index, bool clockwise) {
if (clockwise) {
tap_code(KC_0);
} else {
tap_code(KC_1);
}
if (clockwise) {
tap_code(KC_0); //Rotary encoder clockwise
} else {
tap_code(KC_1); //Rotary encoder Reverse clockwise
}
}

~~~

上段の4キーが左からABCD
下段の4キーが左からEFGH
ロータリーエンコーダ時計回りが0
反時計回りが1です。

|-|左1|左2|左3|左4|
|---|---|---|---|---|
|上段|A|B|C|D|
|下段|E|F|G|H|
|上段|a|b|c|d|
|下段|e|f|g|h|
|ロータリーエンコーダ|時計回り|反時計回り|||
|ロータリーエンコーダ|0|1|||


すべてのキーとロータリーエンコーダは正常に動いていましたか?
もし反応しないキーがあれば、ハンダ付けが正確に行われているか確認してください。

それでは、実際にキーマップを変更して、マクロパッドとして使ってみましょう。
このキーマップは、Adobe photoshop Lightroom Classicで快適に操作できるように設計されています。

~~~C
#include QMK_KEYBOARD_H

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
LCTL(LSFT(KC_E)), LSFT(KC_TAB), KC_TAB, KC_0,\
KC_LSFT, LCTL(KC_LEFT), LCTL(KC_RIGHT), LCTL(KC_Z),\
KC_UP, KC_DOWN\
),
[0] = LAYOUT(
C(S(KC_E)), S(KC_TAB), KC_TAB, KC_0,
KC_LSFT, C(KC_LEFT), C(KC_RIGHT), C(KC_Z)
)
};

/* Rotary encoder settings */
void encoder_update_user(uint16_t index, bool clockwise) {
if (clockwise) {
tap_code(KC_UP);
} else {
tap_code(KC_DOWN);
}
if (clockwise) {
tap_code(KC_UP); //Rotary encoder clockwise
} else {
tap_code(KC_DOWN); //Rotary encoder Reverse clockwise
}
}

~~~
[TONE_ALR.hex](https://github.com/peraneko/TONE/blob/master/TONE_HEX/TONE_ALR.hex)
TONE_ALR.hexをダウンロードして、わかりやすい場所に置き、先程の手順でProMicroに書き込んでみましょう。
[tone_ALR.hex](https://github.com/peraneko/TONE/blob/master/TONE_HEX/tone_ALR.hex)
tone_ALR.hexをダウンロードして、わかりやすい場所に置き、先程の手順でProMicroに書き込んでみましょう。

上段の4キーが左からCtrl+SHIFT+E(書き出し) SHIFT+TAB TAB 0
下段の4キーが左からSHIFT CTRL+←(前の画像) CTRL+→(次の画像) CTRL+Z(UNDO)
ロータリーエンコーダ時計回りが↑
反時計回りが↓です。

わけわからないですね、表にします。

|-|左1|左2|左3|左4|
|---|---|---|---|---|
|上段|Ctrl+SHIFT+E(書き出し)|SHIFT+TAB|TAB|0|
|下段|SHIFT|CTRL+←(前の画像)|CTRL+→(次の画像)|CTRL+Z(UNDO)|
|ロータリーエンコーダ|時計回り|反時計回り|||
|ロータリーエンコーダ|↑|↓|||

ここまではできあいの設定ファイルを使って来ました。
近い将来、あなたは自分でTONEの設定ファイルを作りたくなると思います。

### キーの割当をカスタマイズする
この製品はQMKファームウエアによってキー役割を定義しています。
そのため、QMKファームウエアの設定を変更することで、キーの割当を思い通りに設定できます。

実際の手順はこんな感じになります。
下記ページよりQMKファームウェアをダウンロードします。

下記ページよりQMKファームウェアを入手します。
zipedのファイルをダウンロードする場合は、別途「lufa」というライブラリを必要とします。
そのため、git cloneを行うことを推奨します。

https://github.com/qmk/qmk_firmware/
ダウンロードしたZIPファイルをわかりやすい場所に展開しておきます

QMKファームウエアのディレクトリは用意できたでしょうか
Cドライブ直下に置いたことにして、説明を続けます。
※gitに慣れている方はクローンの方が良いでしょう。

#### ビルド環境を作る
##### macOS
homebrewを使う手順を説明します。
Expand All @@ -133,40 +142,40 @@ homebrewを使っていなかったらインストールしておきます。

##### Windows
msys2を使う手順を説明します。

[msys2](https://www.msys2.org/)のサイトから、自分が使っているWindowsに合わせたインストーラをダウンロード&インストールします。
32bit OSの時 : msys2-i686-xxxxxxx.exe
64bit OSの時 : msys2-x86_64-xxxxxxxx.exe
msys2を起動します

ダウンロードしておいたQMKファームウェアのフォルダに移動します。
qmk_firmwareのフォルダは、先程Cドライブ直下に置きました。

cd /c/qmk_firmware/util/msys2_install.sh と入力して、実行します。
インストールするパッケージを聞かれますので答えていきます。不明な質問であれば、全てYとしてください。
終わったらmsys2を再起動します

#### 設定ファイルのダウンロード
QMKファームウエアのリポジトリには、まだTONEが取り込まれていません。
そのため、わたしのGitHubからファイルを取得して、qmk_firmware-master\keyboardsに置く必要があります。

ダウンロードするフォルダ
https://github.com/peraneko/TONE/tree/master/tone

ダウンロードしたファイルを置く場所
qmk_firmware-master\keyboards

#### 設定ファイルのビルド
qmk_firmwareの第一階層で以下のようにします。

make tone:default
しばらく時間がかかるかもしれませんが、tone_default.hexというファイルが生成されます。
このファイルをQMK ToolBoxでProMicroに書き込めば、使用できます。

### キーマップのカスタマイズ
既存のキーマップをカスタマイズする際は、現在のキーマップをバックアップしましょう。
どこか別のフォルダにいれて、keymap_org.cなどとリネームしておけば良いでしょう。

qmk_firmwareの第一階層で`./util/new_keymap.sh` を使うと、下記の様に<keyboard>のdefaultキーマップをベースに指定の<user_name>で複製することができます。
```:shell
./util/new_keymap.sh <keyboard> <user_name>
Expand All @@ -175,46 +184,44 @@ qmk_firmwareの第一階層で`./util/new_keymap.sh` を使うと、下記の様
<user_name>には、バージョン名やどういう使い方を意図しているのかを入力すると便利です。
![コマンドライン](https://user-images.githubusercontent.com/5952961/59074284-b5d52f80-8905-11e9-9fa1-2dc9dc96dfee.png)
./util/new_keymap.shとtoneの間、toneとFPSの間には半角スペースを忘れずに入れてください。

上記の操作でできたフォルダは、以後、<あなたのkeymap名>と呼びます。
<あなたのkeymap名>フォルダ内のkeymap.cを好みに合わせて編集してください。

編集後のビルドコマンドは以下のようになります。
make tone:<あなたのkeymap名>

#### 注意
LAYOUT()内の3行目1つ目のキーコードと、void encoder_update_user()のif(clockwise)内のtap_code()には同じものを入力します。
LAYOUT()内の3行目2つ目のキーコードと、void encoder_update_user()のelse句内のtap_code()には同じものを入力します。

※別の値を書いた場合、両方が入力されて大変なことになります。
#### 注意 
ロータリーエンコーダを時計回り方向に回した場合に入力したいキーコードは、if(clockwise)内のtap_code()に書き込みます。
ロータリーエンコーダを反時計回りに回した場合に入力したいキーコードは、else句の下の行のtap_code()に書き込みます。
~~~C
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
LCTL(LSFT(KC_E)), LSFT(KC_TAB), KC_TAB, KC_0,\
KC_LSFT, LCTL(KC_LEFT), LCTL(KC_RIGHT), LCTL(KC_Z),\
KC_UP, KC_DOWN\
),
[0] = LAYOUT(
C(S(KC_E)), S(KC_TAB), KC_TAB, KC_0,
KC_LSFT, C(KC_LEFT), C(KC_RIGHT), C(KC_Z)
)
};

/* Rotary encoder settings */
void encoder_update_user(uint16_t index, bool clockwise) {
if (clockwise) {
tap_code(KC_UP);
} else {
tap_code(KC_DOWN);
}
if (clockwise) {
tap_code(KC_UP); //Rotary encoder clockwise
} else {
tap_code(KC_DOWN); //Rotary encoder Reverse clockwise
}
}
~~~

ここまでの説明で、あなたの好みのキー配置(キーマップ)が設定できたかと思います。
ハードウェアからミドルウエア(ファームウエア)まで、簡単なものばかりとはいえ網羅的にたどってこないと、ここまでたどり着けません。
自作キーボードを作ることは、あなたがPCを使いこなせているかどうかの身近な試金石です。

長旅お疲れ様でした。ぜひTONEをご愛用いただけますよう、お願い申し上げます。

### 余談 QMKファームウエアについて詳しく知りたくなったら
[公式のリファレンス](https://docs.qmk.fm/#/)を読みましょう。
とくにお世話になるのが、次のページです。

[keycode](https://docs.qmk.fm/#/keycodes)
設定したいキーのコードを調べるのに有用です。

Expand Down
Loading