[Keymap] Update my keymap (#9849)
parent
7b85962673
commit
62c0146419
@ -0,0 +1,27 @@
|
||||
/* Copyright 2020 shela
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define SHIFT_BIT_SIZE (0xE7 / 8 + 1) /* 1bit per 1key */
|
||||
#define IS_LSFT(kc) ((QK_LSFT & (kc)) == QK_LSFT)
|
||||
|
||||
void action_pseudo_process(keyrecord_t *, uint8_t, const uint16_t (*)[2]);
|
||||
uint16_t convert_keycode(const uint16_t (*)[2], uint16_t, bool);
|
||||
|
||||
uint8_t get_shift_bit(uint16_t);
|
||||
void add_shift_bit(uint16_t);
|
||||
void del_shift_bit(uint16_t);
|
||||
@ -1,15 +0,0 @@
|
||||
#ifndef ACTION_PSEUDO_LUT_H
|
||||
#define ACTION_PSEUDO_LUT_H
|
||||
|
||||
#define SHIFT_BIT_SIZE (0xE7 / 8 + 1) // 1bit per 1key
|
||||
|
||||
#define IS_LSFT(kc) ((QK_LSFT & (kc)) == QK_LSFT)
|
||||
|
||||
void action_pseudo_lut(keyrecord_t *, uint8_t, const uint16_t (*)[2]);
|
||||
uint16_t convert_keycode(const uint16_t (*)[2], uint16_t, bool);
|
||||
|
||||
uint8_t get_shift_bit(uint16_t);
|
||||
void add_shift_bit(uint16_t);
|
||||
void del_shift_bit(uint16_t);
|
||||
|
||||
#endif
|
||||
@ -1,186 +1,433 @@
|
||||
/*
|
||||
* HHKB Pro 2 US Layout for shela
|
||||
/* Copyright 2020 shela
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "keymap_jis2us.h"
|
||||
#include "action_pseudo_lut.h"
|
||||
#include "action_pseudo.h"
|
||||
|
||||
// clang-format off
|
||||
enum keyboard_layers {
|
||||
_QWERTY = 0,
|
||||
_DVORAK,
|
||||
_COLEMAK,
|
||||
_PSEUDO,
|
||||
_TENKEY,
|
||||
_MOUSE,
|
||||
_HHKB,
|
||||
_SPACE_FN
|
||||
};
|
||||
|
||||
enum keymap_layout
|
||||
{
|
||||
BASE = 0,
|
||||
PSEUDO_US,
|
||||
enum custom_keycodes {
|
||||
QWERTY = SAFE_RANGE,
|
||||
DVORAK,
|
||||
MOUSE,
|
||||
COLEMAK,
|
||||
PSEUDO,
|
||||
TENKEY,
|
||||
HHKB,
|
||||
SPACE_FN,
|
||||
MOUSE,
|
||||
L_INNER,
|
||||
R_INNER,
|
||||
L_OUTER,
|
||||
R_OUTER,
|
||||
PSE_FN,
|
||||
MACMODE,
|
||||
DYNAMIC_MACRO_RANGE
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* Additional custom keycodes */
|
||||
#define MO_HHKB MO(_HHKB)
|
||||
#define LT_SPFN LT(_SPACE_FN, KC_SPC)
|
||||
#define DM_STA1 DYN_REC_START1
|
||||
#define DM_PLY1 DYN_MACRO_PLAY1
|
||||
|
||||
/* User settings structure for the EEPROM */
|
||||
typedef union {
|
||||
uint32_t raw;
|
||||
struct {
|
||||
uint8_t base_layer : 8;
|
||||
bool mac_mode : 1;
|
||||
};
|
||||
} user_config_t;
|
||||
|
||||
user_config_t user_config;
|
||||
static uint8_t base_layer = _QWERTY;
|
||||
static bool mac_mode = false;
|
||||
static bool l_long_pressed = false;
|
||||
static bool l_pressed = false;
|
||||
static uint16_t l_time = 0;
|
||||
static bool r_long_pressed = false;
|
||||
static bool r_pressed = false;
|
||||
static uint16_t r_time = 0;
|
||||
|
||||
/* Layer 0: Default Layer
|
||||
static uint16_t l_inner = KC_NO;
|
||||
static uint16_t l_outer = KC_NO;
|
||||
static uint16_t r_inner = KC_NO;
|
||||
static uint16_t r_outer = KC_NO;
|
||||
|
||||
// clang-format off
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* Qwerty Layer
|
||||
* ,-----------------------------------------------------------------------------------------.
|
||||
* | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | ` | BSp |
|
||||
* | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | ` | BS |
|
||||
* |-----------------------------------------------------------------------------------------|
|
||||
* | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ |
|
||||
* |-----------------------------------------------------------------------------------------|
|
||||
* | Control | A | S | D | F | G | H | J | K | L | ; | ' | Enter |
|
||||
* | LControl | A | S | D | F | G | H | J | K | L | ; | ' | Enter |
|
||||
* |-----------------------------------------------------------------------------------------|
|
||||
* | Shift | Z | X | C | V | B | N | M | , | . | / | Shift | Fn0 |
|
||||
* | LShift | Z | X | C | V | B | N | M | , | . | / | RShift |HHKB |
|
||||
* `-----------------------------------------------------------------------------------------'
|
||||
* |LAlt | LGui | SpaceFN | RGui |RAlt |
|
||||
* |LOutr| LInner | SpaceFN | RInner |ROutr|
|
||||
* `-----------------------------------------------------------------'
|
||||
*/
|
||||
[BASE] =
|
||||
LAYOUT(KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||
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_ENT,
|
||||
OSM(MOD_LSFT), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(HHKB),
|
||||
KC_LALT, KC_LGUI, LT(SPACE_FN, KC_SPACE), KC_RGUI, KC_RALT),
|
||||
|
||||
/* Layer 1: Pseudo US Layout Layer
|
||||
[_QWERTY] = LAYOUT(
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||
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_ENT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO_HHKB,
|
||||
L_OUTER, L_INNER, LT_SPFN, R_INNER, R_OUTER
|
||||
),
|
||||
|
||||
/* Dvorak Layer
|
||||
* ,-----------------------------------------------------------------------------------------.
|
||||
* | Esc | Fn1 | Fn1 | Fn1 | Fn1 | Fn1 | Fn1 | Fn1 | Fn1 | Fn1 | Fn1 | Fn1 | Fn1 | Fn1 | BSp |
|
||||
* | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | [ | ] | ` | BS |
|
||||
* |-----------------------------------------------------------------------------------------|
|
||||
* | Tab | Fn1 | Fn1 | Fn1 | Fn1 | Fn1 | Fn1 | Fn1 | Fn1 | Fn1 | Fn1 | Fn1 | Fn1 | Fn1 |
|
||||
* | Tab | ' | , | . | P | Y | F | G | C | R | L | / | = | \ |
|
||||
* |-----------------------------------------------------------------------------------------|
|
||||
* | Control | Fn1 | Fn1 | Fn1 | Fn1 | Fn1 | Fn1 | Fn1 | Fn1 | Fn1 | Fn1 | Fn1 | Enter |
|
||||
* | LControl | A | O | E | U | I | D | H | T | N | S | - | Enter |
|
||||
* |-----------------------------------------------------------------------------------------|
|
||||
* | Shift | Fn1 | Fn1 | Fn1 | Fn1 | Fn1 | Fn1 | Fn1 | Fn1 | Fn1 | Fn1 | Shift | Fn0 |
|
||||
* | LShift | ; | Q | J | K | X | B | M | W | V | Z | RShift |HHKB |
|
||||
* `-----------------------------------------------------------------------------------------'
|
||||
* |LGui | Fn3 | SpaceFN | Fn4 |RGui |
|
||||
* |LOutr| LInner | SpaceFN | RInner |ROutr|
|
||||
* `-----------------------------------------------------------------'
|
||||
*/
|
||||
[PSEUDO_US] =
|
||||
LAYOUT(KC_ESC, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_BSPC,
|
||||
KC_TAB, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1,
|
||||
KC_LCTL, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_ENT,
|
||||
KC_LSFT, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_RSFT, MO(HHKB),
|
||||
KC_LGUI, MT(MOD_LALT, KC_MHEN), LT(SPACE_FN, KC_SPACE), MT(MOD_RALT, KC_KANA), KC_RGUI),
|
||||
|
||||
/* Layer 2: Dvorak Layer
|
||||
[_DVORAK] = LAYOUT(
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC, KC_GRV, KC_BSPC,
|
||||
KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_EQL, KC_BSLS,
|
||||
KC_LCTL, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, KC_ENT,
|
||||
KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, MO_HHKB,
|
||||
L_OUTER, L_INNER, LT_SPFN, R_INNER, R_OUTER
|
||||
),
|
||||
|
||||
/* Colemak Layer
|
||||
* ,-----------------------------------------------------------------------------------------.
|
||||
* | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | [ | ] | ` | BSp |
|
||||
* | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | ` | BS |
|
||||
* |-----------------------------------------------------------------------------------------|
|
||||
* | Tab | ' | , | . | P | Y | F | G | C | R | L | / | = | \ |
|
||||
* | Tab | Q | W | F | P | G | J | L | U | Y | ; | [ | ] | \ |
|
||||
* |-----------------------------------------------------------------------------------------|
|
||||
* | Control | A | O | E | U | I | D | H | T | N | S | - | Enter |
|
||||
* | LControl | A | R | S | T | D | H | N | E | I | O | ' | Enter |
|
||||
* |-----------------------------------------------------------------------------------------|
|
||||
* | Shift | ; | Q | J | K | X | B | M | W | V | Z | Shift | Fn0 |
|
||||
* | LShift | Z | X | C | V | B | K | M | , | . | / | RShift |HHKB |
|
||||
* `-----------------------------------------------------------------------------------------'
|
||||
* |LAlt | LGui | SpaceFN | RGui |RAlt |
|
||||
* |LOutr| LInner | SpaceFN | RInner |ROutr|
|
||||
* `-----------------------------------------------------------------'
|
||||
*/
|
||||
[DVORAK] =
|
||||
LAYOUT(KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC, KC_GRV, KC_BSPC,
|
||||
KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_EQL, KC_BSLS,
|
||||
KC_LCTL, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, KC_ENT,
|
||||
KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, MO(HHKB),
|
||||
KC_LALT, KC_LGUI, LT(SPACE_FN, KC_SPACE), KC_RGUI, KC_RALT),
|
||||
|
||||
/* Layer 3: Mouse layer
|
||||
[_COLEMAK] = LAYOUT(
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC,
|
||||
KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||
KC_LCTL, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_ENT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO_HHKB,
|
||||
L_OUTER, L_INNER, LT_SPFN, R_INNER, R_OUTER
|
||||
),
|
||||
|
||||
/* Pseudo Layer
|
||||
* ,-----------------------------------------------------------------------------------------.
|
||||
* | Esc | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | | |
|
||||
* | Esc |PseFn|PseFn|PseFn|PseFn|PseFn|PseFn|PseFn|PseFn|PseFn|PseFn|PseFn|PseFn|PseFn| BS |
|
||||
* |-----------------------------------------------------------------------------------------|
|
||||
* | | | | | | | MwL | MwD | MwU | MwR | | | | |
|
||||
* | Tab |PseFn|PseFn|PseFn|PseFn|PseFn|PseFn|PseFn|PseFn|PseFn|PseFn|PseFn|PseFn| PseFn |
|
||||
* |-----------------------------------------------------------------------------------------|
|
||||
* | | | | | | | McL | McD | McU | McR | | | |
|
||||
* | Control |PseFn|PseFn|PseFn|PseFn|PseFn|PseFn|PseFn|PseFn|PseFn|PseFn|PseFn| Enter |
|
||||
* |-----------------------------------------------------------------------------------------|
|
||||
* | | | | | | | Mb1 | Mb2 | Mb3 | | | | Fn0 |
|
||||
* | Shift |PseFn|PseFn|PseFn|PseFn|PseFn|PseFn|PseFn|PseFn|PseFn|PseFn| Shift |HHKB |
|
||||
* `-----------------------------------------------------------------------------------------'
|
||||
* | | | Mb1 | | |
|
||||
* |LOutr| LInner | SpaceFN | RInner |ROutr|
|
||||
* `-----------------------------------------------------------------'
|
||||
*/
|
||||
[MOUSE] =
|
||||
LAYOUT(KC_ESC, 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_NO, KC_TRNS,
|
||||
KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||
KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_NO, KC_NO, KC_TRNS,
|
||||
KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_BTN1, KC_BTN2, KC_BTN3, KC_NO, KC_NO, KC_TRNS, MO(HHKB),
|
||||
KC_TRNS, KC_TRNS, KC_BTN1, KC_TRNS, KC_TRNS),
|
||||
|
||||
/* Layer 4: Tenkey layer
|
||||
[_PSEUDO] = LAYOUT(
|
||||
KC_ESC, PSE_FN, PSE_FN, PSE_FN, PSE_FN, PSE_FN, PSE_FN, PSE_FN, PSE_FN, PSE_FN, PSE_FN, PSE_FN, PSE_FN, PSE_FN, KC_BSPC,
|
||||
KC_TAB, PSE_FN, PSE_FN, PSE_FN, PSE_FN, PSE_FN, PSE_FN, PSE_FN, PSE_FN, PSE_FN, PSE_FN, PSE_FN, PSE_FN, PSE_FN,
|
||||
KC_LCTL, PSE_FN, PSE_FN, PSE_FN, PSE_FN, PSE_FN, PSE_FN, PSE_FN, PSE_FN, PSE_FN, PSE_FN, PSE_FN, KC_ENT,
|
||||
KC_LSFT, PSE_FN, PSE_FN, PSE_FN, PSE_FN, PSE_FN, PSE_FN, PSE_FN, PSE_FN, PSE_FN, PSE_FN, KC_RSFT, MO_HHKB,
|
||||
L_OUTER, L_INNER, LT_SPFN, R_INNER, R_OUTER
|
||||
),
|
||||
|
||||
/* Tenkey layer
|
||||
* ,-----------------------------------------------------------------------------------------.
|
||||
* | Esc | | | | | | | | | | / | * | - | | BSp |
|
||||
* | Esc | | | | | | | | | | / | * | - | | BS |
|
||||
* |-----------------------------------------------------------------------------------------|
|
||||
* | | | | | | | | | | 7 | 8 | 9 | + | |
|
||||
* | Tab | | | | | | | | | 7 | 8 | 9 | + | |
|
||||
* |-----------------------------------------------------------------------------------------|
|
||||
* | | | | | | | | | | 4 | 5 | 6 | Enter |
|
||||
* | LControl | | | | | | | | | 4 | 5 | 6 | Enter |
|
||||
* |-----------------------------------------------------------------------------------------|
|
||||
* | | | | | | | | | 1 | 2 | 3 | + | Fn0 |
|
||||
* | LShift | | | | | | | | 1 | 2 | 3 | + |HHKB |
|
||||
* `-----------------------------------------------------------------------------------------'
|
||||
* | | | SpaceFN | 0 | . |
|
||||
* |LOutr| LInner | SpaceFN | 0 | . |
|
||||
* `-----------------------------------------------------------------'
|
||||
*/
|
||||
[TENKEY] =
|
||||
LAYOUT(KC_ESC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PSLS, KC_PAST, KC_PMNS, KC_NO, KC_BSPC,
|
||||
KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_KP_7, KC_KP_8, KC_KP_9, KC_PPLS, KC_NO,
|
||||
KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_KP_4, KC_KP_5, KC_KP_6, KC_PENT,
|
||||
KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_KP_1, KC_KP_2, KC_KP_3, KC_PPLS, MO(HHKB),
|
||||
KC_TRNS, KC_TRNS, LT(SPACE_FN, KC_SPACE), KC_KP_0, KC_PDOT),
|
||||
|
||||
/* Layer 5: HHKB mode (HHKB Fn)
|
||||
[_TENKEY] = LAYOUT(
|
||||
KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PSLS, KC_PAST, KC_PMNS, XXXXXXX, KC_BSPC,
|
||||
KC_TAB, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_P7, KC_P8, KC_P9, KC_PPLS, XXXXXXX,
|
||||
KC_LCTL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_P4, KC_P5, KC_P6, KC_PENT,
|
||||
KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_P1, KC_P2, KC_P3, KC_PPLS, MO_HHKB,
|
||||
L_OUTER, L_INNER, LT_SPFN, KC_P0, KC_PDOT
|
||||
),
|
||||
|
||||
/* Mouse layer
|
||||
* ,-----------------------------------------------------------------------------------------.
|
||||
* | Pwr | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Ins | Del |
|
||||
* | Esc | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | | BS |
|
||||
* |-----------------------------------------------------------------------------------------|
|
||||
* | Caps | Fn5 | Fn6 | Fn7 | Fn8 | Fn9 | | | Psc | Slk | Pus | Up | | BSp |
|
||||
* | Tab | | | | | | WhL | WhD | WhU | WhR | | | | |
|
||||
* |-----------------------------------------------------------------------------------------|
|
||||
* | | VoD | VoU | Mut | | | * | / | Hom | PgU | Lef | Rig | Enter |
|
||||
* | LControl | | | | | | MsL | MsD | MsU | MsR | | | Enter |
|
||||
* |-----------------------------------------------------------------------------------------|
|
||||
* | | | | | | | + | - | End | PgD | Dow | | |
|
||||
* | LShift | | | | | | Mb1 | Mb2 | Mb3 | | | RShift |HHKB |
|
||||
* `-----------------------------------------------------------------------------------------'
|
||||
* | | | | | |
|
||||
* |LOutr| LInner | Mb1 | RInner |ROutr|
|
||||
* `-----------------------------------------------------------------'
|
||||
*/
|
||||
[_MOUSE] = LAYOUT(
|
||||
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, KC_BSPC,
|
||||
KC_TAB, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
KC_LCTL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, XXXXXXX, XXXXXXX, KC_ENT,
|
||||
KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_BTN1, KC_BTN2, KC_BTN3, XXXXXXX, XXXXXXX, KC_RSFT, MO_HHKB,
|
||||
L_OUTER, L_INNER, KC_BTN1, R_INNER, R_OUTER
|
||||
),
|
||||
|
||||
/* HHKB Layer
|
||||
* ,-----------------------------------------------------------------------------------------.
|
||||
* |Power| F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Ins | Del |
|
||||
* |-----------------------------------------------------------------------------------------|
|
||||
* | Caps |Qwert|Dvork|Colmk|Psedo|Tenky|Mouse| |PScr |SLck |Paus | Up | | Clear |
|
||||
* |-----------------------------------------------------------------------------------------|
|
||||
* | |VolD |VolU |Mute |Ejct | | * | / |Home |PgUp |Left |Rght | Enter |
|
||||
* |-----------------------------------------------------------------------------------------|
|
||||
* | |Sta1 |Ply1 | | Mac | | + | - | End |PgDn |Down | | |
|
||||
* `-----------------------------------------------------------------------------------------'
|
||||
* | | | Space | | |
|
||||
* `-----------------------------------------------------------------'
|
||||
*/
|
||||
[HHKB] =
|
||||
LAYOUT(KC_PWR, 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_INS, KC_DEL,
|
||||
KC_CAPS, DF(BASE), DF(PSEUDO_US), DF(MOUSE), DF(TENKEY), DF(DVORAK), KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_BSPC,
|
||||
KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_PENT,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
|
||||
|
||||
/* Layer 6: SpaceFN
|
||||
[_HHKB] = LAYOUT(
|
||||
KC_PWR, 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_INS, KC_DEL,
|
||||
KC_CAPS, QWERTY, DVORAK, COLEMAK, PSEUDO, TENKEY, MOUSE, XXXXXXX, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, XXXXXXX, KC_NLCK,
|
||||
_______, KC_VOLD, KC_VOLU, KC_MUTE, KC_EJCT, XXXXXXX, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_PENT,
|
||||
_______, DM_STA1, DM_PLY1, XXXXXXX, MACMODE, XXXXXXX, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, _______, _______,
|
||||
_______, _______, KC_SPC, _______, _______
|
||||
),
|
||||
|
||||
/* SpaceFN Layer
|
||||
* ,-----------------------------------------------------------------------------------------.
|
||||
* | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | | Del |
|
||||
* |-----------------------------------------------------------------------------------------|
|
||||
* | | Hom | Up | End | | | | Hom | End | | Psc | Slk | Pau | Ins |
|
||||
* | |Home | Up | End | | | |Home | End | |PScr |SLck |Paus | Ins |
|
||||
* |-----------------------------------------------------------------------------------------|
|
||||
* | | Lef | Dow | Rig | PgU | | Lef | Dow | Up | Rig | | | |
|
||||
* | |Left |Down |Rght |PgUp | |Left |Down | Up |Rght | | | |
|
||||
* |-----------------------------------------------------------------------------------------|
|
||||
* | | | | PgD | | Spc | | PgD | PgU | | | | |
|
||||
* | | | |PgDn | | Spc | |PgDn |PgUp | | | | |
|
||||
* `-----------------------------------------------------------------------------------------'
|
||||
* | | | | | |
|
||||
* `-----------------------------------------------------------------'
|
||||
*/
|
||||
[SPACE_FN] =
|
||||
LAYOUT(KC_TRNS, 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_NO, KC_DEL,
|
||||
KC_TRNS, KC_HOME, KC_UP, KC_END, KC_NO, KC_NO, KC_NO, KC_HOME, KC_END, KC_NO, KC_PSCR, KC_SLCK, KC_PAUS, KC_INS,
|
||||
KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGUP, KC_NO, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_NO, KC_NO, KC_TRNS,
|
||||
KC_TRNS, KC_NO, KC_NO, KC_PGDN, KC_NO, KC_SPC, KC_NO, KC_PGDN, KC_PGUP, KC_NO, KC_NO, KC_TRNS, KC_NO,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
|
||||
[_SPACE_FN] = LAYOUT(
|
||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, KC_DEL,
|
||||
_______, KC_HOME, KC_UP, KC_END, XXXXXXX, XXXXXXX, XXXXXXX, KC_HOME, KC_END, XXXXXXX, KC_PSCR, KC_SLCK, KC_PAUS, KC_INS,
|
||||
_______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGUP, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, XXXXXXX, _______,
|
||||
_______, XXXXXXX, XXXXXXX, KC_PGDN, XXXXXXX, KC_SPC, XXXXXXX, KC_PGDN, KC_PGUP, XXXXXXX, XXXXXXX, _______, XXXXXXX,
|
||||
_______, _______, _______, _______, _______
|
||||
),
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
/*
|
||||
* user defined action function
|
||||
*/
|
||||
enum function_id
|
||||
{
|
||||
PSEUDO_US_FUNCTION,
|
||||
};
|
||||
void set_mac_mode_keys(bool mac_mode) {
|
||||
if (mac_mode) {
|
||||
l_inner = KC_LCMD;
|
||||
l_outer = KC_LOPT;
|
||||
r_inner = KC_RCMD;
|
||||
r_outer = KC_ROPT;
|
||||
} else {
|
||||
l_inner = KC_LALT;
|
||||
l_outer = KC_LGUI;
|
||||
r_inner = KC_RALT;
|
||||
r_outer = KC_RGUI;
|
||||
}
|
||||
}
|
||||
|
||||
void keyboard_post_init_user(void) {
|
||||
user_config.raw = eeconfig_read_user();
|
||||
mac_mode = user_config.mac_mode;
|
||||
base_layer = user_config.base_layer;
|
||||
set_mac_mode_keys(mac_mode);
|
||||
}
|
||||
|
||||
/* Set default values for the EEPROM */
|
||||
void eeconfig_init_user(void) {
|
||||
user_config.raw = 0;
|
||||
user_config.base_layer = _QWERTY;
|
||||
user_config.mac_mode = false;
|
||||
eeconfig_update_user(user_config.raw);
|
||||
base_layer = _QWERTY;
|
||||
mac_mode = false;
|
||||
set_mac_mode_keys(mac_mode);
|
||||
}
|
||||
|
||||
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
|
||||
{
|
||||
void persistent_default_layer_set(uint8_t layer) {
|
||||
set_single_persistent_default_layer(layer);
|
||||
user_config.base_layer = layer;
|
||||
eeconfig_update_user(user_config.raw);
|
||||
base_layer = layer;
|
||||
}
|
||||
|
||||
switch (id)
|
||||
{
|
||||
case PSEUDO_US_FUNCTION:
|
||||
action_pseudo_lut(record, BASE, keymap_jis2us);
|
||||
break;
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case QWERTY:
|
||||
if (record->event.pressed) {
|
||||
persistent_default_layer_set(_QWERTY);
|
||||
}
|
||||
return false;
|
||||
case DVORAK:
|
||||
if (record->event.pressed) {
|
||||
persistent_default_layer_set(_DVORAK);
|
||||
}
|
||||
return false;
|
||||
case COLEMAK:
|
||||
if (record->event.pressed) {
|
||||
persistent_default_layer_set(_COLEMAK);
|
||||
}
|
||||
return false;
|
||||
case PSEUDO:
|
||||
if (record->event.pressed) {
|
||||
if (l_pressed && !l_long_pressed) {
|
||||
register_code(l_inner);
|
||||
l_long_pressed = true;
|
||||
}
|
||||
if (r_pressed && !r_long_pressed) {
|
||||
register_code(r_inner);
|
||||
r_long_pressed = true;
|
||||
}
|
||||
set_single_persistent_default_layer(_PSEUDO);
|
||||
}
|
||||
return false;
|
||||
case TENKEY:
|
||||
if (record->event.pressed) {
|
||||
default_layer_set(1U << _TENKEY);
|
||||
}
|
||||
return false;
|
||||
case MOUSE:
|
||||
if (record->event.pressed) {
|
||||
default_layer_set(1U << _MOUSE);
|
||||
}
|
||||
return false;
|
||||
case L_INNER:
|
||||
if (record->event.pressed) {
|
||||
l_pressed = true;
|
||||
l_time = record->event.time;
|
||||
} else {
|
||||
if (l_pressed) {
|
||||
if (l_long_pressed) {
|
||||
unregister_code(l_inner);
|
||||
l_long_pressed = false;
|
||||
} else {
|
||||
if (TIMER_DIFF_16(record->event.time, l_time) < TAPPING_TERM) {
|
||||
if (mac_mode) {
|
||||
register_code(KC_LANG2);
|
||||
unregister_code(KC_LANG2);
|
||||
} else {
|
||||
register_code(KC_MHEN);
|
||||
unregister_code(KC_MHEN);
|
||||
}
|
||||
} else {
|
||||
register_code(l_inner);
|
||||
unregister_code(l_inner);
|
||||
}
|
||||
}
|
||||
l_pressed = false;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
case R_INNER:
|
||||
if (record->event.pressed) {
|
||||
r_pressed = true;
|
||||
r_time = record->event.time;
|
||||
} else {
|
||||
if (r_pressed) {
|
||||
if (r_long_pressed) {
|
||||
unregister_code(r_inner);
|
||||
r_long_pressed = false;
|
||||
} else {
|
||||
if (TIMER_DIFF_16(record->event.time, r_time) < TAPPING_TERM) {
|
||||
if (mac_mode) {
|
||||
register_code(KC_LANG1);
|
||||
unregister_code(KC_LANG1);
|
||||
} else {
|
||||
register_code(KC_KANA);
|
||||
unregister_code(KC_KANA);
|
||||
}
|
||||
} else {
|
||||
register_code(r_inner);
|
||||
unregister_code(r_inner);
|
||||
}
|
||||
}
|
||||
r_pressed = false;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
case L_OUTER:
|
||||
if (record->event.pressed) {
|
||||
register_code(l_outer);
|
||||
} else {
|
||||
unregister_code(l_outer);
|
||||
}
|
||||
return false;
|
||||
case R_OUTER:
|
||||
if (record->event.pressed) {
|
||||
register_code(r_outer);
|
||||
} else {
|
||||
unregister_code(r_outer);
|
||||
}
|
||||
return false;
|
||||
case MACMODE:
|
||||
if (record->event.pressed) {
|
||||
/* Toggle Mac mode value */
|
||||
mac_mode = !mac_mode;
|
||||
user_config.mac_mode = mac_mode;
|
||||
eeconfig_update_user(user_config.raw);
|
||||
set_mac_mode_keys(mac_mode);
|
||||
}
|
||||
return false;
|
||||
case PSE_FN:
|
||||
action_pseudo_process(record, base_layer, keymap_jis2us);
|
||||
return false;
|
||||
default:
|
||||
if (record->event.pressed) {
|
||||
if (l_pressed && !l_long_pressed) {
|
||||
register_code(l_inner);
|
||||
l_long_pressed = true;
|
||||
}
|
||||
if (r_pressed && !r_long_pressed) {
|
||||
register_code(r_inner);
|
||||
r_long_pressed = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/*
|
||||
* Fn action definition
|
||||
*/
|
||||
const uint16_t PROGMEM fn_actions[] = {
|
||||
[1] = ACTION_FUNCTION(PSEUDO_US_FUNCTION),
|
||||
};
|
||||
uint16_t get_tapping_term(uint16_t keycode) {
|
||||
switch (keycode) {
|
||||
case LT_SPFN:
|
||||
return SPFN_TAPPING_TERM;
|
||||
default:
|
||||
return TAPPING_TERM;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,32 +1,49 @@
|
||||
#ifndef LAYOUT_JIS2US_H
|
||||
#define LAYOUT_JIS2US_H
|
||||
/* Copyright 2020 shela
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/* keymap for convert from JIS to US */
|
||||
#pragma once
|
||||
|
||||
#include "keymap_jp.h"
|
||||
|
||||
// clang-format off
|
||||
/* Keymap for converting JIS to US */
|
||||
const uint16_t PROGMEM keymap_jis2us[][2] = {
|
||||
[KC_A ... KC_CAPS] = { 0x00, 0x00 }, /* default value */
|
||||
|
||||
[KC_1] = { KC_1, KC_EXLM }, /* 1 and ! -> 1 and ! */
|
||||
[KC_2] = { KC_2, KC_LBRC }, /* 2 and " -> 2 and @ */
|
||||
[KC_3] = { KC_3, KC_HASH }, /* 3 and # -> 3 and # */
|
||||
[KC_4] = { KC_4, KC_DLR }, /* 4 and $ -> 4 and $ */
|
||||
[KC_5] = { KC_5, KC_PERC }, /* 5 and % -> 5 and % */
|
||||
[KC_6] = { KC_6, KC_EQL }, /* 6 and & -> 6 and ^ */
|
||||
[KC_7] = { KC_7, KC_CIRC }, /* 7 and ' -> 7 and & */
|
||||
[KC_8] = { KC_8, KC_DQT }, /* 8 and ( -> 8 and * */
|
||||
[KC_9] = { KC_9, KC_ASTR }, /* 9 and ) -> 9 and ( */
|
||||
[KC_0] = { KC_0, KC_LPRN }, /* 0 and (no assign) -> 0 and ) */
|
||||
[KC_MINS] = { KC_MINS, S(KC_RO) }, /* - and = -> - and _ */
|
||||
[KC_EQL] = { KC_UNDS, KC_COLN }, /* ^ and ~ -> = and + */
|
||||
[KC_LBRC] = { KC_RBRC, KC_RCBR }, /* @ and ` -> [ and { */
|
||||
[KC_RBRC] = { KC_BSLS, KC_PIPE }, /* [ and { -> ] and } */
|
||||
[KC_BSLS] = { KC_JYEN, S(KC_JYEN) }, /* ] and } -> / and | */
|
||||
[KC_NUHS] = { KC_NUHS, S(KC_NUHS) }, /* (no assign) */
|
||||
[KC_SCLN] = { KC_SCLN, KC_QUOT }, /* ; and + -> ; and : */
|
||||
[KC_QUOT] = { KC_AMPR, KC_AT }, /* : and * -> ' and " */
|
||||
[KC_GRV] = { KC_LCBR, KC_PLUS }, /* (no assign) -> ` and ~ */
|
||||
[KC_COMM] = { KC_COMM, KC_LT }, /* , and < -> , and < */
|
||||
[KC_DOT] = { KC_DOT, KC_GT }, /* . and > -> . and > */
|
||||
[KC_SLSH] = { KC_SLSH, KC_QUES }, /* / and ? -> / and ? */
|
||||
[KC_1] = { KC_1, JP_EXLM }, /* 1 and ! -> 1 and ! */
|
||||
[KC_2] = { KC_2, JP_AT }, /* 2 and " -> 2 and @ */
|
||||
[KC_3] = { KC_3, JP_HASH }, /* 3 and # -> 3 and # */
|
||||
[KC_4] = { KC_4, JP_DLR }, /* 4 and $ -> 4 and $ */
|
||||
[KC_5] = { KC_5, JP_PERC }, /* 5 and % -> 5 and % */
|
||||
[KC_6] = { KC_6, JP_CIRC }, /* 6 and & -> 6 and ^ */
|
||||
[KC_7] = { KC_7, JP_AMPR }, /* 7 and ' -> 7 and & */
|
||||
[KC_8] = { KC_8, JP_ASTR }, /* 8 and ( -> 8 and * */
|
||||
[KC_9] = { KC_9, JP_LPRN }, /* 9 and ) -> 9 and ( */
|
||||
[KC_0] = { KC_0, JP_RPRN }, /* 0 -> 0 and ) */
|
||||
[KC_MINS] = { JP_MINS, JP_UNDS }, /* - and = -> - and _ */
|
||||
[KC_EQL] = { JP_EQL, JP_PLUS }, /* ^ and ~ -> = and + */
|
||||
[KC_LBRC] = { JP_LBRC, JP_LCBR }, /* @ and ` -> [ and { */
|
||||
[KC_RBRC] = { JP_RBRC, JP_RCBR }, /* [ and { -> ] and } */
|
||||
[KC_BSLS] = { JP_YEN, JP_PIPE }, /* ] and } -> \ and | */
|
||||
[KC_NUHS] = { JP_YEN, JP_PIPE }, /* ] and } -> \ and | */
|
||||
[KC_SCLN] = { JP_SCLN, JP_COLN }, /* ; and + -> ; and : */
|
||||
[KC_QUOT] = { JP_QUOT, JP_DQT }, /* : and * -> ' and " */
|
||||
[KC_GRV] = { JP_GRV, JP_TILD }, /* Han/Zen -> ` and ~ */
|
||||
[KC_COMM] = { JP_COMM, JP_LT }, /* , and < -> , and < */
|
||||
[KC_DOT] = { JP_DOT, JP_GT }, /* . and > -> . and > */
|
||||
[KC_SLSH] = { JP_SLSH, JP_QUES }, /* / and ? -> / and ? */
|
||||
};
|
||||
|
||||
#endif
|
||||
// clang-format on
|
||||
|
||||
@ -1,14 +1,68 @@
|
||||
# Shela's HHKB Layout
|
||||
# Shela's keymap for HHKB Pro 2 US Layout with Alternate Controller
|
||||
|
||||
Layer 0: US Layout
|
||||
Layer 1: Pseudo US Layout
|
||||
Layer 2: Dvorak Layout
|
||||
Layer 3: Mouse
|
||||
Layer 4: Tenkey
|
||||
Layer 5: HHKB Fn Key
|
||||
Layer 6: SpaceFN
|
||||
## Layers
|
||||
|
||||
## Pseudo US Layout
|
||||
Layer 1: Qwerty Layer
|
||||
Layer 2: Dvorak Layer
|
||||
Layer 3: Colemak Layer
|
||||
Layer 4: Pseudo US Layer
|
||||
Layer 5: Tenkey Layer
|
||||
Layer 6: Mouse Layer
|
||||
Layer 7: HHKB Fn Layer
|
||||
Layer 8: SpaceFN Layer
|
||||
|
||||
On japanese Windows, HHKB Professional 2 US layout model recognized wrongly as JIS layout without changing OS settings.
|
||||
But, you can use HHKB like a US layout keyboard as it is.
|
||||
### Qwerty/Dvorak/Colemak Layer
|
||||
|
||||
Basic keymap layer for each keyboard layout.
|
||||
|
||||
### Pseudo US Layer
|
||||
|
||||
A layer that can be used with the same physical layout as the previously activated basic (Qwerty/Dvorak/Colemak) keymap layer, with the keyboard still configured as a Japanese keyboard on the OS.
|
||||
|
||||
This is useful when using virtual environments and remote desktops, because you can use Japanese Windows with the same keyboard without changing the OS keyboard settings. Also, when using the keyboard as a US keyboard on Windows OS, all keys existing only on Japanese keyboards are ignored and it is not possible to assign these keys to the desired function of any application. You can avoid such problems.
|
||||
|
||||
### Tenkey/Mouse Layer
|
||||
|
||||
Tenkey (numeric keypad) and mouse layers. For the Tenkey to work, Numlock must be turned on in the OS.
|
||||
|
||||
### HHKB Fn Layer
|
||||
|
||||
A layer that is equivalent to Fn key of Happy Hacking Keyboard. There are also some layer switching keys and special function keys.
|
||||
|
||||
### SpaceFN Layer
|
||||
|
||||
Customized [SpaceFN](https://geekhack.org/index.php?topic=51069.0) layer. There are left-hand and right-hand Arrows/Home/End/PageUp/PageDown keys. Frequently used keys in HHKB Fn layer are configured to this layer and can be used as an alternative layer to the HHKB Fn layer.
|
||||
|
||||
## Special function keycodes
|
||||
|
||||
### Pseudo US keycode
|
||||
|
||||
A special keycode that implements Pseudo US Layout.
|
||||
|
||||
### Mac mode keycode
|
||||
|
||||
A special keycode that toggles Mac mode. When Mac mode is enabled, the keymap of the Left Inner/Outer and Right Inner/Outer keys are changed for macOS. See _Left Inner/Outer, Right Inner/Outer keys_ for details.
|
||||
|
||||
### Left Inner/Outer, Right Inner/Outer keycodes
|
||||
|
||||
If you tap a Mod-Tap key and another key within the time specified by TAPPING_TERM, QMK interprets these keys as if they were pressed at the same time even if they were not pressed simultaneously. Therefore, for fast typists, Mod-Tap can accidentally send a keycode with modifier. These special keycodes allow you to work around this issue and change the keymap in Mac mode.
|
||||
|
||||
These keys work as follows:
|
||||
|
||||
Mac mode: Disabled
|
||||
|
||||
| Key | Keycode | Tap | Hold |
|
||||
| ----------- | ------- | ------- | ------- |
|
||||
| Left Inner | L_INNER | KC_MHEN | KC_LALT |
|
||||
| Left Outer | L_OUTER | KC_LGUI | KC_LGUI |
|
||||
| Right Inner | R_INNER | KC_KANA | KC_RALT |
|
||||
| Right Outer | R_OUTER | KC_RGUI | KC_RGUI |
|
||||
|
||||
Mac mode: Enabled
|
||||
|
||||
| Key | Keycode | Tap | Hold |
|
||||
| ----------- | ------- | -------- | ------- |
|
||||
| Left Inner | L_INNER | KC_LANG2 | KC_LCMD |
|
||||
| Left Outer | L_OUTER | KC_LOPT | KC_LOPT |
|
||||
| Right Inner | R_INNER | KC_LANG1 | KC_RCMD |
|
||||
| Right Outer | R_OUTER | KC_ROPT | KC_ROPT |
|
||||
|
||||
@ -1 +1,3 @@
|
||||
SRC += action_pseudo_lut.c
|
||||
DYNAMIC_MACRO_ENABLE = yes
|
||||
|
||||
SRC += action_pseudo.c
|
||||
|
||||
Loading…
Reference in New Issue