買い物の記録 (LEDテープ)

次のキーボードはぜひとも光ってほしいので LED テープを購入。

とりあえずよく分からないけど、WS2812B ってやつを選べばよいっぽい。

AliExpress と eBay を見比べた結果、送料の有無で eBay に軍配。

www.ebay.com

失敗したらショックなので、まずは 1m 60LEDs を 1 つだけ購入。

5/14 ~ 30 に到着予定。楽しみに待つ。

買い物の記録 (Kailh Low-Profile キースイッチ&キーキャップ)

Ergo42 が無事に組みあがって習熟に入ったので次の仕込みに入る次第。

Kailh Choc (Low-Profile) の Let's split。

Kailh Choc Lets Split Kit – NovelKeys, LLC

 

Choc って何やねん?と思ってたら Chocolate なんですって。

 で、何で Chocolate なん?

 

とりあえずキースイッチは精神的にお世話になっている遊舎工房さんから購入。

# Helix の在庫が復活するの待ってます。

yushakobo.jp

キーキャップも買いたかったけど品切れでは仕方ない NoavelKeys から購入。

Kailh Low Profile Keycaps - Blank – NovelKeys, LLC

半月後を楽しみに待ちます。

自作キーボード(Ergo42) ビルドログ(4)

右手のキーボードを作る。
手順は左手と同じなので特に難しいところはない。
気をつけるのは ProMicro の向きが逆 (基盤の裏(?)が上になって LED が見えない) という位。

プレートの左右も間違いなくセットしたし、キーキャップをつけたら完成!

f:id:helloworlcl:20180502095204j:plain

肉球キーキャップを左下に付けたかったのでモディファイアキーをピンクに。
パームレストもピンクとグリーンを買ってたので右手はグリーンに。
期せずして Splatoon カラーになった。

 

7. ファームウェアの書き込み

基本的な手順は Meishi キーボードの時と同じだった。

helloworlcl.hatenadiary.jp

今回も前回同様、初回以外は 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 して設定するだけで終わった。

qiita.com

 

次は左上に漢字キーが欲しい。

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 さんのツイート

 に従ってスイッチの足を少し切った。

干渉してなさそうな気がするけど組んでみて衝撃の事実が判明。

f:id:helloworlcl:20180427002816j:plain

お分かりだろうか。

プレートのネジ穴と PCB の穴の位置がずれている!

プレートに左右があったという驚愕の事実が発覚。

これは @Biacco42 さんも 1 回やったことあるそうなので、きっとみんなが通る道。

とりあえずこのままでも一応組めるのと、心の折れる音が聞こえた気がするので、まずは左手を作って、動かしてからどうするか考えることにしたいと思う。

今日のお届きもの

NovelKeys から荷物が届いた。

Kailh LowProfile 用 Let's Split。

Kailh Choc Lets Split Kit – NovelKeys, LLC

4/12 注文。4/26 到着。シカゴ~成田経由。2週間ってのは優秀ですね。

f:id:helloworlcl:20180426235755j:plain

ところでマイコンのところは思い切り Teensy って書いてあるのにキットには ProMicro が入っている。これはこれで組めるってことでいいんですよね?このまま組みますよ?

今日のお届きもの

KBDfans から荷物が届いた。

3/30 注文。4/24 到着。普段みてた追跡サイトでは全然更新されないからヤキモキしてたけど無事ついた。

f:id:helloworlcl:20180425030958j:plain

[in stock] KBDfans Gateron Silent Switch (10 switches) 赤軸。

SMD gateron switch 10pcs – KBDfans 茶軸とクリア軸。

押し心地は明日確かめる。

 

サイレント赤軸はやっぱり静かですね。何かスカスカした感じするけど。そしてなぜか間違えて PCB マウント (5pin) を買っていた模様。

クリア軸はとても軽い。サイレント赤が 45g に対してクリアは 35g なので当然と言えば当然。

こいつらがリニアなのに対して茶軸はタクタイルなのでコツコツした押し心地が楽しい。けど一番重く感じるなぁ。サイレント赤と同じ 45g なのに。特性の違いのせい?

カニカルっぽさを求めるならタクタイルの軽いのがよさげかなぁ。