買い物の記録 (LEDテープ)
買い物の記録 (Kailh Low-Profile キースイッチ&キーキャップ)
Ergo42 が無事に組みあがって習熟に入ったので次の仕込みに入る次第。
Kailh Choc (Low-Profile) の Let's split。
Kailh Choc Lets Split Kit – NovelKeys, LLC
Choc って何やねん?と思ってたら Chocolate なんですって。
KailhロープロスイッチはKailh Chocという呼び方をされているけどChocolateの略だったのかぁ🍫 pic.twitter.com/MMvaTA6aoK
— ないん (@pluis9) 2018年5月2日
で、何で Chocolate なん?
とりあえずキースイッチは精神的にお世話になっている遊舎工房さんから購入。
# Helix の在庫が復活するの待ってます。
キーキャップも買いたかったけど品切れでは仕方ない NoavelKeys から購入。
Kailh Low Profile Keycaps - Blank – NovelKeys, LLC
半月後を楽しみに待ちます。
自作キーボード(Ergo42) ビルドログ(4)
右手のキーボードを作る。
手順は左手と同じなので特に難しいところはない。
気をつけるのは ProMicro の向きが逆 (基盤の裏(?)が上になって LED が見えない) という位。
プレートの左右も間違いなくセットしたし、キーキャップをつけたら完成!
肉球キーキャップを左下に付けたかったのでモディファイアキーをピンクに。
パームレストもピンクとグリーンを買ってたので右手はグリーンに。
期せずして Splatoon カラーになった。
7. ファームウェアの書き込み
基本的な手順は Meishi キーボードの時と同じだった。
今回も前回同様、初回以外は USB キーボードと認識されて、リセットボタンを押しても COM ポートが見えない状態に陥った。厳密にはキーボードを認識する一瞬だけ DFU モードになった時の COM ポートが見えて、すぐ見えなくなる。
のでプログラムが書き込めない。
今回色々試した結果、以下の手順でいけそうな気がする。
1. リセットボタンを押しっぱなしにする
2. キーボードが外れたことを PC が認識する (ペコって音がする)
3. リセットボタンを放す
4. DFU モードのポートが見えているので AVRDUDESS でプログラムを書き込む
結局、キーボードを繋いだ直後なら問題なく書き込めるってことなのかも。
自作キーボード(Ergo42) ビルドログ (3)
右手を組む前にキーマップを考えてみる。
プレートの向きが逆でもちゃんと使えるし、テストも必要だし。
で、デフォルトのキーマップはこんな感じ。
/* BASE * ,------------------------------------------------. ,------------------------------------------------. * | Tab | Q | W | E | R | T | [ | | ] | Y | U | I | O | P | @ | * |------+------+------+------+------+------+------| |-------------+------+------+------+------+------| * | Alt | A | S | D | F | G | ( | | ) | H | J | K | L | ; | : | * |------+------+------+------+------+------+------| |------|------+------+------+------+------+------| * | Sft | Z | X | C | V | B | { | | } | N | M | , | . | / |\/Sft | * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------| * | Ctrl | GUI | App |PrtSc |ESC/ |Space/|Tab/ | |Back |Enter/| Del |PrtSc |=>GAME|=>SYMB| \ | * | | | | |~SYMB |RCtrl |Shift | |Space |~META | | | | | | * `------------------------------------------------' `------------------------------------------------' */
うん、わからん。
Mac とか Linux 使ってるとこれがなじむ感じなんですかね?
とりあえず日本語の JIS に寄せたキーマップを考えてみる。
<数日経過>
これでどうか。
/* BASE * ,------------------------------------------------. ,------------------------------------------------. * | ` | Q | W | E | R | T | BS | | Y | U | I | O | P | @ | [ | * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------| * |Tb/Ctl| A | S | D | F | G | Del | | H | J | K | L | ; | : | ] | * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------| * | Sft | Z | X | C | V | B | Alt | | N | M | , | . | / |\/Sft | Up | * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------| * | ESC | GUI | Alt |PrtSc |App/ |Space/|Tab/ | |Space/|Enter/|=>NPAD|=>GAME| Left |Right | Down | * | | | | |~META |Shift |LCtrl | |Shift |~SYMB | | | | | | * `------------------------------------------------' `------------------------------------------------' */
まず、何はともあれロジカルペアリング。以下を参考に設定。
というよりも、本家の keymap_extras に入れて下さっているので include して設定するだけで終わった。
次は左上に漢字キーが欲しい。
Ctrl は左下のほうがいい気もするけど、とある理由によりここは ESC で。
しかし左手の空きっぷりに比べて右手側は厳しい。なので左右でホームポジションをずらす。それでも BS 入れる余裕がないので左手に移動させることに。
一番下の列は微妙に持て余し気味。Appとか使わないから誤爆予防に殺した方が使いやすいかもと思ったり。レイヤー切り替えも誤爆しがちで微妙。慣れなのかなぁ。どのモードか分からなくなるから GAME とか削除して Enter の横は空白にしたほうがいい気もしている。カーソル移動もなくていい気がするし。
右手小指に Enter が欲しい気もするけど、ここは親指にしとかないといけない気がするので、いわゆる SandS にした。レイヤー切り替えとどっちがいいのかなぁ。
他のレイヤーはとりあえずこんな感じ。
/* META * ,------------------------------------------------. ,------------------------------------------------. * | ` | 1 | 2 | 3 | 4 | 5 | 6 | | 7 | 8 | 9 | 0 | - | ^ | \ | * |------+------+------+------+------+------+------| |-------------+------+------+------+------+------| * |Tb/Ctl| | |Muhen | Henk | | | | | Left | Down | Up |Right | | | * |------+------+------+------+------+------+------| |------|------+------+------+------+------+------| * | Sft | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | PgUp | * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------| * | ESC | GUI | Alt |PrtSc |App/ |Space/|Tab/ | |Space/|Enter/|=>NPAD|=>GAME| | |PgDown| * | | | | |~META |Shift |LCtrl | |Shift |~SYMB | | | | | | * `------------------------------------------------' `------------------------------------------------' */
/* SYMB * ,------------------------------------------------. ,------------------------------------------------. * | ` | ! | " | # | $ | % | & | | ' | ( | ) | ~ | = | ~ | | | * |------+------+------+------+------+------+------| |-------------+------+------+------+------+------| * |Tb/Ctl| Left | Down | Up |Right | | | | | | | | + | * | } | * |------+------+------+------+------+------+------| |------|------+------+------+------+------+------| * | Sft | | | | | | | | | | < | > | ? | _ | Home | * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------| * | ESC | GUI | Alt |PrtSc |App/ |Space/|Tab/ | |Space/|Enter/|=>NPAD|=>GAME| | | End | * | | | | |~META |Shift |LCtrl | |Shift |~SYMB | | | | | | * `------------------------------------------------' `------------------------------------------------' */
/* NPAD * ,------------------------------------------------. ,------------------------------------------------. * | ` | Q | W | E | R | T | BS | | Y | U | I | 7 | 8 | 9 | / | * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------| * |Tb/Ctl| Left | Down | Up |Right | | Del | | H | J | K | 4 | 5 | 6 | * | * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------| * | Sft | Z | X | C | V | B | Alt | | N | M | , | 1 | 2 | 3 | - | * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------| * | ESC | GUI | Alt |PrtSc |App/ |Space/|Tab/ | |Space/|Enter/|=>NPAD|=>GAME| 0 | . | + | * | | | | |~META |Shift |LCtrl | |Shift |~SYMB | | | | | | * `------------------------------------------------' `------------------------------------------------' */
/* GAME * ,------------------------------------------------. ,------------------------------------------------. * | ` | Q | W | E | R | T | BS | | Y | U | I | O | P | @ | [ | * |------+------+------+------+------+------+------| |-------------+------+------+------+------+------| * | Tab | A | S | D | F | G | Del | | H | J | K | L | ; | : | ] | * |------+------+------+------+------+------+------| |------|------+------+------+------+------+------| * | Sft | Z | X | C | V | B | Alt | | N | M | , | . | / |\/Sft | Up | * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------| * | ESC | GUI | Alt |PrtSc | App |Space |LCtrl | |Space |Enter |=>NPAD|=>GAME| Left |Right | Down | * | | | | | | | | | | | | | | | | * `------------------------------------------------' `------------------------------------------------' */
とりあえずこんな感じでしばらく使ってみようと思う。
keymap.c
#include "ergo42.h" #include "action_layer.h" #include "eeconfig.h" #include "keymap_jp.h" extern keymap_config_t keymap_config; #define BASE 0 #define META 1 #define SYMB 2 #define NPAD 3 #define GAME 4 // Fillers to make layering more clear #define _______ KC_TRNS #define XXXXXXX KC_NO const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* BASE * ,------------------------------------------------. ,------------------------------------------------. * | ` | Q | W | E | R | T | BS | | Y | U | I | O | P | @ | [ | * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------| * |Tb/Ctl| A | S | D | F | G | Del | | H | J | K | L | ; | : | ] | * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------| * | Sft | Z | X | C | V | B | Alt | | N | M | , | . | / |\/Sft | Up | * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------| * | ESC | GUI | Alt |PrtSc |App/ |Space/|Tab/ | |Space/|Enter/|=>NPAD|=>GAME| Left |Right | Down | * | | | | |~META |Shift |LCtrl | |Shift |~SYMB | | | | | | * `------------------------------------------------' `------------------------------------------------' */ [BASE] = KEYMAP( \ KC_GRV, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_BSPC, /**/ KC_Y, KC_U, KC_I, KC_O, KC_P, JP_AT, JP_LBRC, \ LCTL_T(KC_TAB), KC_A, KC_S, KC_D, KC_F, KC_G, KC_DELT, /**/ KC_H, KC_J, KC_K, KC_L, JP_SCLN, JP_COLN, JP_RBRC, \ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LALT, /**/ KC_N, KC_M, JP_COMM, JP_DOT, JP_SLSH, SFT_T(JP_BSLS), KC_UP, \ KC_ESC, KC_LGUI, KC_LALT, KC_PSCR, LT(META, KC_APP), SFT_T(KC_SPC), LCTL_T(KC_TAB), /**/ SFT_T(KC_SPC), LT(SYMB, KC_ENT), TG(NPAD), TG(GAME), KC_LEFT, KC_RIGHT, KC_DOWN \ ), /* META * ,------------------------------------------------. ,------------------------------------------------. * | ` | 1 | 2 | 3 | 4 | 5 | 6 | | 7 | 8 | 9 | 0 | - | ^ | \ | * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------| * |Tb/Ctl| | |Muhen | Henk | | | | | Left | Down | Up |Right | | | * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------| * | Sft | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | PgUp | * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------| * | ESC | GUI | Alt |PrtSc |App/ |Space/|Tab/ | |Space/|Enter/|=>NPAD|=>GAME| | |PgDown| * | | | | |~META |Shift |LCtrl | |Shift |~SYMB | | | | | | * `------------------------------------------------' `------------------------------------------------' */ [META] = KEYMAP( \ _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, /**/ KC_7, KC_8, KC_9, KC_0, KC_MINS, JP_CIRC, JP_YEN, \ _______, XXXXXXX, XXXXXXX, KC_MHEN, KC_HENK, XXXXXXX, XXXXXXX, /**/ XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, XXXXXXX, \ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, /**/ KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PGUP, \ _______, _______, _______, _______, _______, _______, _______, /**/ _______, _______, _______, _______, XXXXXXX, XXXXXXX, KC_PGDN \ ), /* SYMB * ,------------------------------------------------. ,------------------------------------------------. * | ` | ! | " | # | $ | % | & | | ' | ( | ) | ~ | = | ~ | | | * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------| * |Tb/Ctl| Left | Down | Up |Right | | | | | | | | + | * | } | * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------| * | Sft | | | | | | | | | | < | > | ? | _ | Home | * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------| * | ESC | GUI | Alt |PrtSc |App/ |Space/|Tab/ | |Space/|Enter/|=>NPAD|=>GAME| | | End | * | | | | |~META |Shift |LCtrl | |Shift |~SYMB | | | | | | * `------------------------------------------------' `------------------------------------------------' */ [SYMB] = KEYMAP( \ _______, S(KC_1), S(KC_2), S(KC_3), S(KC_4), S(KC_5), S(KC_6), /**/ S(KC_7), S(KC_8), S(KC_9), S(KC_0), S(KC_MINS), S(JP_CIRC), S(JP_YEN), \ _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, XXXXXXX, /**/ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, S(KC_SCLN), S(KC_QUOT), S(JP_RBRC), \ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, /**/ XXXXXXX, XXXXXXX, S(KC_COMM), S(KC_DOT), S(KC_SLSH), S(JP_BSLS), KC_HOME, \ _______, _______, _______, _______, _______, _______, _______, /**/ _______, _______, _______, _______, XXXXXXX, XXXXXXX, KC_END \ ), /* NPAD * ,------------------------------------------------. ,------------------------------------------------. * | ` | Q | W | E | R | T | BS | | Y | U | I | 7 | 8 | 9 | / | * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------| * |Tb/Ctl| Left | Down | Up |Right | | Del | | H | J | K | 4 | 5 | 6 | * | * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------| * | Sft | Z | X | C | V | B | Alt | | N | M | , | 1 | 2 | 3 | - | * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------| * | ESC | GUI | Alt |PrtSc |App/ |Space/|Tab/ | |Space/|Enter/|=>NPAD|=>GAME| 0 | . | + | * | | | | |~META |Shift |LCtrl | |Shift |~SYMB | | | | | | * `------------------------------------------------' `------------------------------------------------' */ [NPAD] = KEYMAP( \ _______, _______, _______, _______, _______, _______, _______, /**/ _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_PSLS, \ _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, _______, /**/ _______, _______, _______, KC_P4, KC_P5, KC_P6, KC_PAST, \ _______, _______, _______, _______, _______, _______, _______, /**/ _______, _______, _______, KC_P1, KC_P2, KC_P3, KC_PMNS, \ _______, _______, _______, _______, _______, _______, _______, /**/ _______, _______, _______, _______, KC_P0, KC_PDOT, KC_PPLS \ ), /* GAME * ,------------------------------------------------. ,------------------------------------------------. * | ` | Q | W | E | R | T | BS | | Y | U | I | O | P | @ | [ | * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------| * | Tab | A | S | D | F | G | Del | | H | J | K | L | ; | : | ] | * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------| * | Sft | Z | X | C | V | B | Alt | | N | M | , | . | / |\/Sft | Up | * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------| * | ESC | GUI | Alt |PrtSc | App |Space |LCtrl | |Space |Enter |=>NPAD|=>GAME| Left |Right | Down { * | | | | | | | | | | | | | | | | * `------------------------------------------------' `------------------------------------------------' */ [GAME] = KEYMAP( \ KC_GRV, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_BSPC, /**/ KC_Y, KC_U, KC_I, KC_O, KC_P, JP_AT, JP_LBRC, \ KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_DELT, /**/ KC_H, KC_J, KC_K, KC_L, JP_SCLN, JP_COLN, JP_RBRC, \ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LALT, /**/ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_T(JP_BSLS), KC_UP, \ KC_LCTRL, KC_LGUI, KC_LALT, KC_PSCR, KC_APP, KC_SPC, KC_LCTRL, /**/ KC_SPC, KC_ENT, TG(NPAD), TG(GAME), KC_LEFT, KC_RGHT, KC_DOWN \ ) };
自作キーボード(Ergo42) ビルドログ(2)
6. キースイッチの半田付け (cont'd)
がっつり半田を盛った状態からキースイッチを外すのは吸取線じゃ追いつかないよねってことで、急遽スッポンを購入。
Amazon の評価を見ると 20G が定番っぽいけど、近所のホムセンには 18G しかなかったのでこれで我慢。
うまく使えないことが多いけど、はまると綺麗に吸い取れるので楽しい。そこそこ苦労しつつ全部外してプレート挟んで再度半田付け。
そのときに、開発者の @Biacco42 さんのツイート
#Ergo42 でマウントプレートからスイッチが浮いてしまう方、スイッチの端子の脚が真ん中のプラの軸より長いのでそれが底板と干渉してしまいそうです…
— 人生たの椎名林檎 技術書典4 け08 (@Biacco42) 2018年4月23日
スイッチの端子の脚を切っていただければ大丈夫なので、ダイオードと含めてスイッチの脚は切っていただきますようお願いします
に従ってスイッチの足を少し切った。
干渉してなさそうな気がするけど組んでみて衝撃の事実が判明。
お分かりだろうか。
プレートのネジ穴と PCB の穴の位置がずれている!
プレートに左右があったという驚愕の事実が発覚。
これは @Biacco42 さんも 1 回やったことあるそうなので、きっとみんなが通る道。
とりあえずこのままでも一応組めるのと、心の折れる音が聞こえた気がするので、まずは左手を作って、動かしてからどうするか考えることにしたいと思う。
今日のお届きもの
NovelKeys から荷物が届いた。
Kailh LowProfile 用 Let's Split。
Kailh Choc Lets Split Kit – NovelKeys, LLC
4/12 注文。4/26 到着。シカゴ~成田経由。2週間ってのは優秀ですね。
ところでマイコンのところは思い切り Teensy って書いてあるのにキットには ProMicro が入っている。これはこれで組めるってことでいいんですよね?このまま組みますよ?
今日のお届きもの
KBDfans から荷物が届いた。
3/30 注文。4/24 到着。普段みてた追跡サイトでは全然更新されないからヤキモキしてたけど無事ついた。
[in stock] KBDfans Gateron Silent Switch (10 switches) 赤軸。
SMD gateron switch 10pcs – KBDfans 茶軸とクリア軸。
押し心地は明日確かめる。
サイレント赤軸はやっぱり静かですね。何かスカスカした感じするけど。そしてなぜか間違えて PCB マウント (5pin) を買っていた模様。
クリア軸はとても軽い。サイレント赤が 45g に対してクリアは 35g なので当然と言えば当然。
こいつらがリニアなのに対して茶軸はタクタイルなのでコツコツした押し心地が楽しい。けど一番重く感じるなぁ。サイレント赤と同じ 45g なのに。特性の違いのせい?
メカニカルっぽさを求めるならタクタイルの軽いのがよさげかなぁ。