日本語配列でバリバリにErgoDox EZを使う

# 環境

- Windows 7, 10, Max OS X (仕事で使うので基本はWindows7)

# 前提条件

- OS側でキーボードの言語設定が可能
- 日本語配列が好き
- Shift+2はダブルクォートじゃないと困る
- 日本語入力はローマ字入力です(かな入力の保障は出来ないです)

# 前段

勢いでErgoDox EZを買った。ぽちった後に、もしかして「Shift+2を押したらアットマークが出てしまうのでは？」とすごく不安になった。
届くまでの間、普段は英語を読まないのに <https://github.com/jackhumbert/qmk_firmware> のドキュメントを読んだり、普段は読まないC言語も読んだ。

# 日本語配列として使う問題点

- ろ(\(_))と￥(\(|))が打てない？
- 記号のマッピングが違うのでは？

数字＋記号の箇所のみをピックアップした表を作った。
(バーティカルラインは表化けするので全角)

| 問題度 | JIS |  US | JIS(Shift) | US(Shift) | Ergodox |
| ------ | --- | --- | ---------- | --------- | ------- |
|        | 1   | 1   | !          | !         | KC_1    |
| C級    | 2   | 2   | "          | @         | KC_2    |
| C級    | 3   | 3   | #          | #         | KC_3    |
| C級    | 4   | 4   | $          | $         | KC_4    |
| C級    | 5   | 5   | %          | %         | KC_5    |
| C級    | 6   | 6   | &          | ^         | KC_6    |
| C級    | 7   | 7   | '          | &         | KC_7    |
| C級    | 8   | 8   | (          | *         | KC_8    |
| C級    | 9   | 9   | )          | (         | KC_9    |
| C級    | 0   | 0   | 無         | )         | KC_0    |
| C級    | -   | -   | =          | _         | KC_MINS |
| A級    | ^   | =   | ~          | +         | KC_EQL  |
| B級    | \   | 無  | ｜         | 無        | KC_JYEN |
| A級    | @   | [   | `          | {         | KC_LBRC |
| A級    | [   | ]   | {          | }         | KC_RBRC |
| C級    | ;   | ;   | +          | :         | KC_SCLN |
| A級    | :   | '   | *          | "         | KC_QUOT |
| A級    | ]   | \   | }          | ｜        | KC_BSLS |
|        | ,   | ,   | <          | <         | KC_COMM |
|        | .   | .   | >          | >         | KC_DOT  |
|        | /   | /   | ?          | ?         | KC_SLSH |
| B級    | \   | 無  | _          | 無        | KC_RO   |

## 問題度 A級
Shiftを押さない通常時でもキー配置が違うもの

## 問題度 B級
USキーボードに存在しないキー
ファームウェアでマッピングしているので、問題は無い。 **(気付くのに時間が掛かったがな！)**

## 問題度 C級
通常時は一緒だが、Shiftのキー配置が違うもの

## 問題度 該当無し
見ての通り、日本語配列とUS配列でキーが一致しているもの

# 解決編

ErgoDox EZが届いて、接続したら、日本語キーボードとして認識されました、とりあえずShift+2を押してもダブルクォートが出力される。
つまり上記のC級の問題は頭の中で変換できれば何てこと無い問題になった。

さて、次に記号を片付けていくか… KC_LBRC(左ブラケット)をマッピングしている箇所をタイプすると@が出力される…。

||||||||／(≧□≦;)＼||||||| ﾜｶﾘﾆｸｲﾖｰ

分かりにくかったらマッピングしてしまえば良いんだ！！
A級とB級だけをマッピングしなおす。

| JIS |  US | JIS(Shift) | US(Shift) | Ergodox |  Alias  |
| --- | --- | ---------- | --------- | ------- | ------- |
| ^   | =   | ~          | +         | KC_EQL  | JA_HAT  |
| \   | 無  | ｜         | 無        | KC_JYEN | JA_ENVL |
| @   | [   | `          | {         | KC_LBRC | JA_AT   |
| [   | ]   | {          | }         | KC_RBRC | JA_LBRC |
| :   | '   | *          | "         | KC_QUOT | JA_CLON |
| ]   | \   | }          | ｜        | KC_BSLS | JA_RBRC |
| \   | 無  | _          | 無        | KC_RO   | JA_ENUN |

```keymap.c
#define JA_CLON KC_QUOT  // : and +
#define JA_AT   KC_LBRC  // @ and `
#define JA_HAT  KC_EQL   // ^ and ~
#define JA_ENUN KC_RO    // \ and _ (EN mark and UNder score)
#define JA_ENVL KC_JYEN  // \ and | (EN mark and Vertical Line)
#define JA_LBRC KC_RBRC  // [ and {
#define JA_RBRC KC_BSLS  // ] and }
```

KC_JYENとKC_ROは十分分かりやすいかもしれない、そして私が決めたエイリアス名は分かりにくいかも(EN mark and Vertical LineとEN mark and UNder score)
他のところも全て、JA_から始まるエイリアスを作ろうと思ったけど、まぁいいかと思って行っていない。
あと、本家のkeymap_extrasに入れようか悩んだけど、そこまで需要ないかな？

# 結論
**日本語配列として十分使える！**
日本語配列好きなErgoDoxユーザに届け！

ここまでで、記事書くの疲れたので俺の最強のキー配置はまた今度…。
https://github.com/Yuta-shuh/qmk_firmware/blob/master/keyboard/ergodox_ez/keymaps/shuh/keymap.c

# 参考文献

- [ErgoDoxを導入した。](http://blog.satotaichi.info/new-to-ergodox/)
- [Googleスライド:ErgoDoxと日本語配列
](https://docs.google.com/presentation/d/1AKBqBWtXUWYU5VIOBMZQti4yxgIKOIdIwx3uDXOJdZM/edit?pref=2&pli=1#slide=id.g14defbf4b3_1_4)

- [Qiita:ErgoDox EZのキーマップを変更する](http://qiita.com/ReSTARTR/items/f84f8f3c4c51c876cb2f)
- [Qiita:ErgoDoxのキーマップをいじる時に見るチートシート](http://qiita.com/ReSTARTR/items/970354940f49c67fb9fd)
他にも色々読んで参考にさせて頂きました。
[記事がもっと増えたら嬉しいな。](http://qiita.com/tags/ergodox)