Add Comet46 keyboard (#3342)
* Initial commit for Comet46 firmware * Update Comet46 README * Add readme to satt keymap of comet46 * Add default keymap for Comet46 * Fix broken link in readme * Delete redundant includes * Modify default keymap & fix LAYOUT macro * Modify satt keymap of Comet46
This commit is contained in:
parent
dab0b35dc3
commit
56b5e9f23d
13 changed files with 983 additions and 0 deletions
103
keyboards/comet46/keymaps/default/keymap.c
Normal file
103
keyboards/comet46/keymaps/default/keymap.c
Normal file
|
@ -0,0 +1,103 @@
|
|||
// this is the style you want to emulate.
|
||||
// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||
// entirely and just use numbers.
|
||||
enum comet46_layers
|
||||
{
|
||||
_QWERTY,
|
||||
_LOWER,
|
||||
_RAISE,
|
||||
};
|
||||
|
||||
enum custom_keycodes {
|
||||
QWERTY = SAFE_RANGE,
|
||||
LOWER,
|
||||
RAISE,
|
||||
};
|
||||
|
||||
// Fillers to make layering more clear
|
||||
#define _______ KC_TRNS
|
||||
#define XXXXXXX KC_NO
|
||||
#define LOWER MO(_LOWER)
|
||||
#define RAISE MO(_RAISE)
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
/* Qwerty
|
||||
* ,-----------------------------------------+ +-----------------------------------------.
|
||||
* | Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp |
|
||||
* |------+------+------+------+------+------+------+ +------+------+------+------+------+------+------|
|
||||
* | Ctl | A | S | D | F | G | Esc | | Del | H | J | K | L | ; | " |
|
||||
* |------+------+------+------+------+------+------+ +------+------+------+------+------+------+------|
|
||||
* | Shift| Z | X | C | V | B | { | | } | N | M | , | . | / | Shift|
|
||||
* |------+------+------+------+------+------+------+ +------+------+------+------+------+-------------|
|
||||
* | GUI | Lower| Space| | Enter| Raise| Alt |
|
||||
* +--------------------/ \--------------------+
|
||||
*/
|
||||
[_QWERTY] = LAYOUT(
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_ESC, KC_DEL, 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_LCBR, KC_RCBR, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
|
||||
KC_LGUI, LOWER, KC_SPC, KC_ENT, RAISE, KC_LALT
|
||||
),
|
||||
|
||||
/* Lower
|
||||
* ,-----------------------------------------+ +-----------------------------------------.
|
||||
* | | ! | @ | # | $ | % | | ^ | & | * | ( | ) | |
|
||||
* |------+------+------+------+------+------+------+ +------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | ` | \ | - | = | [ | ] | |
|
||||
* |------+------+------+------+------+------+------+ +------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | ~ | | | _ | + | { | } | |
|
||||
* |------+------+------+------+------+------+------+ +------+------+------+------+------+-------------|
|
||||
* | | | | | | | |
|
||||
* +--------------------/ \--------------------+
|
||||
*/
|
||||
[_LOWER] = LAYOUT(
|
||||
_______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, KC_GRV, KC_BSLS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, KC_TILD, KC_PIPE, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, _______,
|
||||
_______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
/* Raise
|
||||
* ,-----------------------------------------+ +-----------------------------------------.
|
||||
* | | 1 | 2 | 3 | 4 | 5 | | | | | | | |
|
||||
* |------+------+------+------+------+------+------+ +------+------+------+------+------+------+------|
|
||||
* | | F1 | F2 | F3 | F4 | F5 | F6 | | | Left | Down | Up |Right | End | |
|
||||
* |------+------+------+------+------+------+------+ +------+------+------+------+------+------+------|
|
||||
* | | F7 | F8 | F9 | F10 | F11 | F12 | | Home | | | | | | |
|
||||
* |------+------+------+------+------+------+------+ +------+------+------+------+------+-------------|
|
||||
* | | | | | | | |
|
||||
* +--------------------/ \--------------------+
|
||||
*/
|
||||
[_RAISE] = LAYOUT(
|
||||
_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
|
||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_END, _______,
|
||||
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_HOME, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
|
||||
_______, _______, _______, _______, _______, _______
|
||||
)
|
||||
};
|
||||
|
||||
|
||||
void matrix_scan_user(void) {
|
||||
uint8_t layer = biton32(layer_state);
|
||||
switch (layer) {
|
||||
case _QWERTY:
|
||||
set_led_green;
|
||||
break;
|
||||
case _RAISE:
|
||||
set_led_blue;
|
||||
break;
|
||||
case _LOWER:
|
||||
set_led_red;
|
||||
break;
|
||||
default:
|
||||
set_led_green;
|
||||
break;
|
||||
}
|
||||
}
|
142
keyboards/comet46/keymaps/satt/action_pseudo_lut.c
Normal file
142
keyboards/comet46/keymaps/satt/action_pseudo_lut.c
Normal file
|
@ -0,0 +1,142 @@
|
|||
#include "quantum.h"
|
||||
#include "action_pseudo_lut.h"
|
||||
|
||||
static uint8_t send_key_shift_bit[SHIFT_BIT_SIZE];
|
||||
|
||||
/*
|
||||
* Pseudo layout action.
|
||||
* This action converts a keycode in order to output the character according to the keymap you specified
|
||||
* still your keyboard layout recognized wrongly on your OS.
|
||||
* Memo: Using other layer keymap to get keycode
|
||||
*/
|
||||
void action_pseudo_lut(keyrecord_t *record, uint8_t base_keymap_id, const uint16_t (*keymap)[2]) {
|
||||
uint8_t prev_shift;
|
||||
uint16_t keycode;
|
||||
uint16_t pseudo_keycode;
|
||||
|
||||
/* get keycode from keymap you specified */
|
||||
keycode = keymap_key_to_keycode(base_keymap_id, record->event.key);
|
||||
|
||||
prev_shift = keyboard_report->mods & (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT));
|
||||
|
||||
if (record->event.pressed) {
|
||||
/* when magic commands entered, keycode does not converted */
|
||||
if (IS_COMMAND()) {
|
||||
if (prev_shift) {
|
||||
add_shift_bit(keycode);
|
||||
}
|
||||
register_code(keycode);
|
||||
return;
|
||||
}
|
||||
|
||||
if (prev_shift) {
|
||||
pseudo_keycode = convert_keycode(keymap, keycode, true);
|
||||
dprintf("pressed: %02X, converted: %04X\n", keycode, pseudo_keycode);
|
||||
add_shift_bit(keycode);
|
||||
|
||||
if (IS_LSFT(pseudo_keycode)) {
|
||||
register_code(QK_LSFT ^ pseudo_keycode);
|
||||
} else {
|
||||
/* delete shift mod temporarily */
|
||||
del_mods(prev_shift);
|
||||
send_keyboard_report();
|
||||
register_code(pseudo_keycode);
|
||||
add_mods(prev_shift);
|
||||
send_keyboard_report();
|
||||
}
|
||||
} else {
|
||||
pseudo_keycode = convert_keycode(keymap, keycode, false);
|
||||
dprintf("pressed: %02X, converted: %04X\n", keycode, pseudo_keycode);
|
||||
|
||||
if (IS_LSFT(pseudo_keycode)) {
|
||||
add_weak_mods(MOD_BIT(KC_LSFT));
|
||||
send_keyboard_report();
|
||||
register_code(QK_LSFT ^ pseudo_keycode);
|
||||
/* on Windows, prevent key repeat to avoid unintended output */
|
||||
unregister_code(QK_LSFT ^ pseudo_keycode);
|
||||
del_weak_mods(MOD_BIT(KC_LSFT));
|
||||
send_keyboard_report();
|
||||
} else {
|
||||
register_code(pseudo_keycode);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (get_shift_bit(keycode)) {
|
||||
del_shift_bit(keycode);
|
||||
pseudo_keycode = convert_keycode(keymap, keycode, true);
|
||||
} else {
|
||||
pseudo_keycode = convert_keycode(keymap, keycode, false);
|
||||
}
|
||||
dprintf("released: %02X, converted: %04X\n", keycode, pseudo_keycode);
|
||||
|
||||
if (IS_LSFT(pseudo_keycode)) {
|
||||
unregister_code(QK_LSFT ^ pseudo_keycode);
|
||||
} else {
|
||||
unregister_code(pseudo_keycode);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
uint16_t convert_keycode(const uint16_t (*keymap)[2], uint16_t keycode, bool shift_modded)
|
||||
{
|
||||
uint16_t pseudo_keycode;
|
||||
|
||||
switch (keycode) {
|
||||
case KC_A ... KC_CAPSLOCK:
|
||||
#if defined(__AVR__)
|
||||
if (shift_modded) {
|
||||
pseudo_keycode = pgm_read_word(&keymap[keycode][1]);
|
||||
} else {
|
||||
pseudo_keycode = pgm_read_word(&keymap[keycode][0]);
|
||||
}
|
||||
#else
|
||||
if (shift_modded) {
|
||||
pseudo_keycode = keymap[keycode][1];
|
||||
} else {
|
||||
pseudo_keycode = keymap[keycode][0];
|
||||
}
|
||||
#endif
|
||||
/* if undefined, use got keycode as it is */
|
||||
if (pseudo_keycode == 0x00) {
|
||||
if (shift_modded) {
|
||||
pseudo_keycode = S(keycode);
|
||||
} else {
|
||||
pseudo_keycode = keycode;
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
if (shift_modded) {
|
||||
pseudo_keycode = S(keycode);
|
||||
} else {
|
||||
pseudo_keycode = keycode;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return pseudo_keycode;
|
||||
}
|
||||
|
||||
uint8_t get_shift_bit(uint16_t keycode) {
|
||||
if ((keycode >> 3) < SHIFT_BIT_SIZE) {
|
||||
return send_key_shift_bit[keycode >> 3] & (1 << (keycode & 7));
|
||||
} else {
|
||||
dprintf("get_shift_bit: Can't get shift bit. keycode: %02X\n", keycode);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
void add_shift_bit(uint16_t keycode) {
|
||||
if ((keycode >> 3) < SHIFT_BIT_SIZE) {
|
||||
send_key_shift_bit[keycode >> 3] |= (1 << (keycode & 7));
|
||||
} else {
|
||||
dprintf("add_shift_bit: Can't add shift bit. keycode: %02X\n", keycode);
|
||||
}
|
||||
}
|
||||
|
||||
void del_shift_bit(uint16_t keycode) {
|
||||
if ((keycode >> 3) < SHIFT_BIT_SIZE) {
|
||||
send_key_shift_bit[keycode >> 3] &= ~(1 << (keycode & 7));
|
||||
} else {
|
||||
dprintf("del_shift_bit: Can't delete shift bit. keycode: %02X\n", keycode);
|
||||
}
|
||||
}
|
15
keyboards/comet46/keymaps/satt/action_pseudo_lut.h
Normal file
15
keyboards/comet46/keymaps/satt/action_pseudo_lut.h
Normal file
|
@ -0,0 +1,15 @@
|
|||
#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
|
220
keyboards/comet46/keymaps/satt/keymap.c
Normal file
220
keyboards/comet46/keymaps/satt/keymap.c
Normal file
|
@ -0,0 +1,220 @@
|
|||
// this is the style you want to emulate.
|
||||
// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "keymap_jis2us.h"
|
||||
#include "action_pseudo_lut.h"
|
||||
|
||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||
// entirely and just use numbers.
|
||||
enum comet46_layers {
|
||||
_QWERTY,
|
||||
_LOWER,
|
||||
_RAISE,
|
||||
_PSEUDO_US,
|
||||
_PSEUDO_US_LOWER,
|
||||
_PSEUDO_US_RAISE,
|
||||
_ADJUST
|
||||
};
|
||||
|
||||
enum custom_keycodes {
|
||||
QWERTY = SAFE_RANGE,
|
||||
PSEUDO_US,
|
||||
};
|
||||
|
||||
#define KC_LWR MO(_LOWER)
|
||||
#define KC_RSE MO(_RAISE)
|
||||
#define KC_P_LW MO(_PSEUDO_US_LOWER)
|
||||
#define KC_P_RS MO(_PSEUDO_US_RAISE)
|
||||
#define KC_QWRT QWERTY
|
||||
#define KC_P_US PSEUDO_US
|
||||
#define KC_SPCT CTL_T(KC_SPC)
|
||||
#define KC_ENSF SFT_T(KC_ENT)
|
||||
#define KC_SFTA SFT_T(KC_A)
|
||||
#define KC_CTSF S(KC_LCTL)
|
||||
#define KC_IMON ALT_T(KC_F13)
|
||||
#define KC_IMOF GUI_T(KC_F14)
|
||||
#define KC_SRO S(KC_RO)
|
||||
#define KC_SYEN S(KC_JYEN)
|
||||
#define KC_CAD LCA(KC_DEL)
|
||||
#define KC_RST RESET
|
||||
|
||||
#define LONGPRESS_DELAY 150
|
||||
|
||||
// Fillers to make layering more clear
|
||||
#define KC_ KC_TRNS
|
||||
#define KC_XXXX KC_NO
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[_QWERTY] = LAYOUT_kc(
|
||||
//,----+----+----+----+----+----+ +----+----+----+----+----+----.
|
||||
ESC , Q , W , E , R , T , Y , U , I , O , P ,DEL ,
|
||||
//|----+----+----+----+----+----+----+ +----+----+----+----+----+----+----|
|
||||
TAB ,SFTA, S , D , F , G ,LPRN, RPRN, H , J , K , L ,SCLN,BSPC,
|
||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||
CTSF, Z , X , C , V , B ,LBRC, RBRC, N , M ,COMM,DOT ,SLSH,QUOT,
|
||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||
IMOF,LWR ,SPCT, ENSF,RSE ,IMON
|
||||
// +----+----+---/ \---+----+----+
|
||||
),
|
||||
|
||||
[_LOWER] = LAYOUT_kc(
|
||||
//,----+----+----+----+----+----+ +----+----+----+----+----+----.
|
||||
,EXLM, AT ,HASH,DLR ,PERC, CIRC,AMPR,ASTR,LPRN,RPRN, ,
|
||||
//|----+----+----+----+----+----+----+ +----+----+----+----+----+----+----|
|
||||
, F1 , F2 , F3 , F4 , F5 , F6 , GRV ,BSLS,MINS,EQL ,LBRC,RBRC, ,
|
||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||
, F7 , F8 , F9 , F10, F11, F12, TILD,PIPE,UNDS,PLUS,LCBR,RCBR, ,
|
||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||
, , , , ,
|
||||
// +----+----+---/ \---+----+----+
|
||||
),
|
||||
|
||||
[_RAISE] = LAYOUT_kc(
|
||||
//,----+----+----+----+----+----+ +----+----+----+----+----+----.
|
||||
, 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 , ,
|
||||
//|----+----+----+----+----+----+----+ +----+----+----+----+----+----+----|
|
||||
, , , , , , , XXXX,LEFT,DOWN, UP ,RGHT,END , ,
|
||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||
, , , , , , , HOME,XXXX,XXXX,XXXX,XXXX,XXXX, ,
|
||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||
, , , , ,
|
||||
// +----+----+---/ \---+----+----+
|
||||
),
|
||||
|
||||
[_PSEUDO_US] = LAYOUT_kc(
|
||||
//,----+----+----+----+----+----+ +----+----+----+----+----+----.
|
||||
ESC , Q , W , E , R , T , Y , U , I , O , P ,DEL ,
|
||||
//|----+----+----+----+----+----+----+ +----+----+----+----+----+----+----|
|
||||
TAB ,SFTA, S , D , F , G ,ASTR, LPRN, H , J , K , L ,FN0 ,BSPC,
|
||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||
CTSF, Z , X , C , V , B ,FN0 , FN0 , N , M ,COMM,DOT ,SLSH,FN0 ,
|
||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||
IMOF,P_LW,SPCT, ENSF,P_RS,IMON
|
||||
// +----+----+---/ \---+----+----+
|
||||
),
|
||||
|
||||
|
||||
[_PSEUDO_US_LOWER] = LAYOUT_kc(
|
||||
//,----+----+----+----+----+----+ +----+----+----+----+----+----.
|
||||
,EXLM,LBRC,HASH,DLR ,PERC, EQL ,CIRC, DQT,ASTR,LPRN, ,
|
||||
//|----+----+----+----+----+----+----+ +----+----+----+----+----+----+----|
|
||||
, F1 , F2 , F3 , F4 , F5 , F6 , LCBR,JYEN,MINS,UNDS,RBRC,BSLS, ,
|
||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||
, F7 , F8 , F9 , F10, F11, F12, PLUS,SYEN,SRO ,COLN,RCBR,PIPE, ,
|
||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||
, , , , ,
|
||||
// +----+----+---/ \---+----+----+
|
||||
),
|
||||
|
||||
[_PSEUDO_US_RAISE] = LAYOUT_kc(
|
||||
//,----+----+----+----+----+----+ +----+----+----+----+----+----.
|
||||
, 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 , ,
|
||||
//|----+----+----+----+----+----+----+ +----+----+----+----+----+----+----|
|
||||
, , , , , , GRV, XXXX,LEFT,DOWN, UP ,RGHT,END , ,
|
||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||
, , , , , , , HOME,XXXX,XXXX,XXXX,XXXX,XXXX, ,
|
||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||
, , , , ,
|
||||
// +----+----+---/ \---+----+----+
|
||||
),
|
||||
|
||||
[_ADJUST] = LAYOUT_kc(
|
||||
//,----+----+----+----+----+----+ +----+----+----+----+----+----.
|
||||
, , , , , , , , , , , ,
|
||||
//|----+----+----+----+----+----+----+ +----+----+----+----+----+----+----|
|
||||
, , , , , ,CAD , QWRT, , , , , , ,
|
||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||
, , , , , ,RST , P_US, , , , , , ,
|
||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||
, , , , ,
|
||||
// +----+----+---/ \---+----+----+
|
||||
)
|
||||
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* user defined action function
|
||||
*/
|
||||
enum function_id {
|
||||
PSEUDO_US_FUNCTION,
|
||||
};
|
||||
|
||||
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
|
||||
switch (id)
|
||||
{
|
||||
case PSEUDO_US_FUNCTION:
|
||||
action_pseudo_lut(record, _QWERTY, keymap_jis2us);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Fn action definition
|
||||
*/
|
||||
const uint16_t PROGMEM fn_actions[] = {
|
||||
[0] = ACTION_FUNCTION(PSEUDO_US_FUNCTION),
|
||||
};
|
||||
|
||||
void matrix_scan_user(void) {
|
||||
uint8_t layer = biton32(layer_state);
|
||||
switch (layer) {
|
||||
case _LOWER:
|
||||
set_led_red;
|
||||
break;
|
||||
case _RAISE:
|
||||
set_led_blue;
|
||||
break;
|
||||
case _PSEUDO_US_LOWER:
|
||||
set_led_yellow;
|
||||
break;
|
||||
case _PSEUDO_US_RAISE:
|
||||
set_led_cyan;
|
||||
break;
|
||||
case _ADJUST:
|
||||
set_led_magenta;
|
||||
break;
|
||||
default:
|
||||
set_led_green;
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
uint32_t layer_state_set_user(uint32_t state) {
|
||||
switch (biton32(state)) {
|
||||
case _PSEUDO_US:
|
||||
return update_tri_layer_state(state, _PSEUDO_US_RAISE, _PSEUDO_US_LOWER, _ADJUST);
|
||||
break;
|
||||
case _PSEUDO_US_LOWER:
|
||||
return update_tri_layer_state(state, _PSEUDO_US_RAISE, _PSEUDO_US_LOWER, _ADJUST);
|
||||
break;
|
||||
case _PSEUDO_US_RAISE:
|
||||
return update_tri_layer_state(state, _PSEUDO_US_RAISE, _PSEUDO_US_LOWER, _ADJUST);
|
||||
break;
|
||||
default:
|
||||
return update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case QWERTY:
|
||||
if (record->event.pressed) {
|
||||
set_single_persistent_default_layer(_QWERTY);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case PSEUDO_US:
|
||||
if (record->event.pressed) {
|
||||
set_single_persistent_default_layer(_PSEUDO_US);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
32
keyboards/comet46/keymaps/satt/keymap_jis2us.h
Normal file
32
keyboards/comet46/keymaps/satt/keymap_jis2us.h
Normal file
|
@ -0,0 +1,32 @@
|
|||
#ifndef KEYMAP_JIS2US_H
|
||||
#define KEYMAP_JIS2US_H
|
||||
|
||||
/* keymap for convert from 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 ? */
|
||||
};
|
||||
|
||||
#endif
|
6
keyboards/comet46/keymaps/satt/readme.md
Normal file
6
keyboards/comet46/keymaps/satt/readme.md
Normal file
|
@ -0,0 +1,6 @@
|
|||
## Pseudo US Layout
|
||||
|
||||
On a Japanese Windows environment, ANSI keyboards may be recognized wrongly as a JIS keyboard.
|
||||
By using this code, you can use your ANSI keyboard under a JIS keyboard environment without changing the settings and registry of your environment.
|
||||
|
||||
Original code by [Shela](https://github.com/qmk/qmk_firmware/tree/master/keyboards/hhkb/keymaps/shela)
|
26
keyboards/comet46/keymaps/satt/rules.mk
Normal file
26
keyboards/comet46/keymaps/satt/rules.mk
Normal file
|
@ -0,0 +1,26 @@
|
|||
SRC += action_pseudo_lut.c
|
||||
|
||||
# Build Options
|
||||
# change to "no" to disable the options, or define them in the Makefile in
|
||||
# the appropriate keymap folder that will get included automatically
|
||||
#
|
||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
||||
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
|
||||
EXTRAKEY_ENABLE = no # Audio control and System control(+450)
|
||||
CONSOLE_ENABLE = no # Console for debug(+400)
|
||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||
MIDI_ENABLE = no # MIDI controls
|
||||
AUDIO_ENABLE = no # Audio output on port C6
|
||||
UNICODE_ENABLE = no # Unicode
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
|
||||
ONEHAND_ENABLE = no # Enable one-hand typing
|
||||
|
||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||
|
||||
ifndef QUANTUM_DIR
|
||||
include ../../../../Makefile
|
||||
endif
|
Loading…
Add table
Add a link
Reference in a new issue