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

};