鳰のような形をした僕の迂回路

My detour/diversion like a (little) grebe.

Planckキーボードのレイヤー切り替えとかな/英数切り替え設定

f:id:CydonianBanana:20170415163642j:plain

Planckキーボードにおいてレイヤー切り替えキー(Raise/ Lower)は非常に押下頻度の大きいキーであり、できれば親指で押下できるエリアに配置したいものである。ところがMacの日本語キーボードにおけるかな/英数切り替え方法(スペースキーの両脇のかな/英数キーによる切り替え)に慣れ親しんだものにとって、Raise/ Lowerの位置にこそかな/英数キーを配置したいと思うのが人情である。

そこで、QMKファームウェアの”Momentary Switch with tap toggle”機能を使ってこのジレンマに終止符を打ったというのが本記事の趣旨である。

つまり、

LT(layer, kc)

を割り当てたキーをタップするとkcが入力され、長押しするとlayerに切り替わるので、Raise/ Lowerキーとかな/英数キーを2つのキーに割り当てることができる。

長押しと判定されるまでの時間は、デフォルトでは200(ms)に設定されている。ぼくの場合この設定は長すぎで、Raise+qと押下してqが入力されるといったことが頻発したので、

qmk_firmware-master/tmk_core/common/action_tapping.h

にて

/* period of tapping(ms) */
#ifndef TAPPING_TERM
/* #define TAPPING_TERM    200 */
#define TAPPING_TERM    75
#endif

としたらぼくにはちょうどよかった。

最後に、現在のWindowsマシン用のキー設定は以下の通り。なお、Windowsマシンではkeyhacにて、変換/無変換キーにIME切り替え機能を付与している。その他、左CtrlをemacsキーバインドのC-に、右Ctrlを普通のコントロールキーに設定している。

define _WIN 0
define _LWR 1
define _RIS 2

// Macro name shortcuts                                                                                                                                                                                         
#define WIN M(_WIN)
#define LWR M(_LWR)
#define RIS M(_RIS)

// Fillers to make layering more clear                                                                                                                                                                          
#define _______ KC_TRNS
#define XXXXXXX KC_NO

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {

/* WIN                                                                                                                                                                                                          
 * ,-----------------------------------------------------------------------------------.                                                                                                                        
 * | Tab  |   Q  |   W  |   E  |   R  |   T  |   Y  |   U  |   I  |   O  |   P  |  -   |                                                                                                                        
 * |------+------+------+------+------+-------------+------+------+------+------+------|                                                                                                                        
 * | lCtrl|   A  |   S  |   D  |   F  |   G  |   H  |   J  |   K  |   L  |   ;  |  "   |                                                                                                                        
 * |------+------+------+------+------+------|------+------+------+------+------+------|                                                                                                                        
 * | Shift|   Z  |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  |   /  | Up   |                                                                                                                        
 * |------+------+------+------+------+------+------+------+------+------+------+------|                                                                                                                        
 * | Esc  | GUI  | Alt  | rCtrl|Raise |Space |Enter |Lower | rCtrl| Left | Down |Right |                                                                                                                        
 * `-----------------------------------------------------------------------------------'                                                                                                                        
 */
[_WIN] = {
  {KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_MINS},
  {KC_LCTL, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT},
  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_UP},
  {KC_ESC, KC_LGUI, KC_LALT, KC_RCTL, LT(RIS,KC_MHEN), KC_SPC, KC_ENT, LT(LWR,KC_HENK), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT}
},

/* Raise                                                                                                                                                                                                        
 * ,-----------------------------------------------------------------------------------.                                                                                                                        
 * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  |  =   |                                                                                                                        
 * |------+------+------+------+------+-------------+------+------+------+------+------|                                                                                                                        
 * |      |      |      | rClic| lClic|  (   |   )  |      |      |   {  |   }  |  ¥   |                                                                                                                        
 * |------+------+------+------+------+------|------+------+------+------+------+------|                                                                                                                        
 * |      |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |  F7  |  F8  |  F9  |  F10 | mUp  |                                                                                                                        
 * |------+------+------+------+------+------+------+------+------+------+------+------|                                                                                                                        
 * |  Del |      |      |      |      | Bksp | Bksp |      |      | mLft | mDwn | mRgt |                                                                                                                        
 * `-----------------------------------------------------------------------------------'                                                                                                                        
 */
[_RIS] = {
  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,      KC_5,    KC_6,    KC_7,    KC_8,    KC_9,       KC_0,       KC_EQL},
  {_______, _______, _______, KC_MS_BTN2,KC_MS_BTN1, S(KC_9), S(KC_0), _______, _______, KC_LBRC, KC_RBRC,    KC_BSLS},
  {_______, KC_F1,   KC_F2,   KC_F3,   KC_F4,     KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,      KC_F10,     KC_MS_UP},
  {KC_DEL,  _______, _______, _______, _______,   KC_BSPC, KC_BSPC, _______, _______, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT}
},

/* Lower                                                                                                                                                                                                        
 * ,-----------------------------------------------------------------------------------.                                                                                                                        
 * |   ~  |   !  |   @  |   #  |   $  |   %  |   ^  |   &  |   *  |      |  UP  |  +   |                                                                                                                        
 * |------+------+------+------+------+-------------+------+------+------+------+------|                                                                                                                        
 * |      |      |      | DEL  | RGHT |  (   |   )  |      |      |   {  |   }  |  |   |                                                                                                                        
 * |------+------+------+------+------+------|------+------+------+------+------+------|                                                                                                                        
 * |      |      |      |      |      | LEFT | DOWN |  F7  |  F8  |  F9  |  F10 | Vol+ |                                                                                                                        
 * |------+------+------+------+------+------+------+------+------+------+------+------|                                                                                                                        
 * |  Del |      |      |      |      | Bksp | Bksp |      |      | Mute | Vol- | Next |                                                                                                                        
 * `-----------------------------------------------------------------------------------'                                                                                                                        
 */
[_LWR] = {
  {S(KC_GRV), S(KC_1), S(KC_2), S(KC_3), S(KC_4), S(KC_5), S(KC_6), S(KC_7), S(KC_8), _______,    KC_UP,    S(KC_EQL)},
  {_______,   _______, _______, KC_DEL , KC_RGHT, S(KC_9), S(KC_0), _______, _______, S(KC_LBRC), S(KC_RBRC), KC_PIPE},
  {_______,   _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_F7,   KC_F8,   KC_F9,      KC_F10,     KC_VOLU},
  {KC_DEL,    _______, _______, _______, _______, KC_BSPC, KC_BSPC, _______, _______, KC_MUTE,    KC_VOLD,    KC_MNXT}
},