自作キーボード(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 \ ) };