Created
November 23, 2023 02:16
-
-
Save swkm/62cf4828abb14474f712fb5b1f0ab012 to your computer and use it in GitHub Desktop.
Keychron Q1 V2 Special EditionでJISエミュレーション機能を実装する。Q1V2SEはkeychron/q1/ansi_encoderなことに注意。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* Copyright 2021 @ Keychron (https://www.keychron.com) | |
* | |
* 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_japanese.h" | |
enum layers{ | |
MAC_BASE, | |
MAC_FN, | |
WIN_BASE, | |
WIN_FN | |
}; | |
#if defined(KEY_OVERRIDE_ENABLE) | |
// winモードで us to jis | |
const key_override_t sft_kc_2_to_jp_at = ko_make_with_layers(MOD_MASK_SHIFT, KC_2, JP_AT, (1<<WIN_BASE | 1<<WIN_FN)); | |
const key_override_t sft_kc_6_to_jp_circ = ko_make_with_layers(MOD_MASK_SHIFT, KC_6, JP_CIRC, (1<<WIN_BASE | 1<<WIN_FN)); | |
const key_override_t sft_kc_7_to_jp_ampr = ko_make_with_layers(MOD_MASK_SHIFT, KC_7, JP_AMPR, (1<<WIN_BASE | 1<<WIN_FN)); | |
const key_override_t sft_kc_8_to_jp_astr = ko_make_with_layers(MOD_MASK_SHIFT, KC_8, JP_ASTR, (1<<WIN_BASE | 1<<WIN_FN)); | |
const key_override_t sft_kc_9_to_jp_lprn = ko_make_with_layers(MOD_MASK_SHIFT, KC_9, JP_LPRN, (1<<WIN_BASE | 1<<WIN_FN)); | |
const key_override_t sft_kc_0_to_jp_rprn = ko_make_with_layers(MOD_MASK_SHIFT, KC_0, JP_RPRN, (1<<WIN_BASE | 1<<WIN_FN)); | |
const key_override_t sft_kc_mins_to_jp_unds = ko_make_with_layers(MOD_MASK_SHIFT, KC_MINS, JP_UNDS, (1<<WIN_BASE | 1<<WIN_FN)); | |
const key_override_t kc_eql_to_jp_eql = ko_make_with_layers_and_negmods(0, KC_EQL, JP_EQL, (1<<WIN_BASE | 1<<WIN_FN), (uint8_t) MOD_MASK_SHIFT); | |
const key_override_t sft_kc_eql_to_jp_plus = ko_make_with_layers(MOD_MASK_SHIFT, KC_EQL, JP_PLUS, (1<<WIN_BASE | 1<<WIN_FN)); | |
const key_override_t kc_lbrc_to_jp_lbrc = ko_make_with_layers_and_negmods(0, KC_LBRC, JP_LBRC, (1<<WIN_BASE | 1<<WIN_FN), (uint8_t) MOD_MASK_SHIFT); | |
const key_override_t sft_kc_lbrc_to_jp_lcbr = ko_make_with_layers(MOD_MASK_SHIFT, KC_LBRC, JP_LCBR, (1<<WIN_BASE | 1<<WIN_FN)); | |
const key_override_t kc_rbrc_to_jp_rbrc = ko_make_with_layers_and_negmods(0, KC_RBRC, JP_RBRC, (1<<WIN_BASE | 1<<WIN_FN), (uint8_t) MOD_MASK_SHIFT); | |
const key_override_t sft_kc_rbrc_to_jp_rcbr = ko_make_with_layers(MOD_MASK_SHIFT, KC_RBRC, JP_RCBR, (1<<WIN_BASE | 1<<WIN_FN)); | |
const key_override_t kc_bsls_to_jp_bsls = ko_make_with_layers_and_negmods(0, KC_BSLS, JP_BSLS, (1<<WIN_BASE | 1<<WIN_FN), (uint8_t) MOD_MASK_SHIFT); | |
const key_override_t sft_kc_bsls_to_jp_pipe = ko_make_with_layers(MOD_MASK_SHIFT, KC_BSLS, JP_PIPE, (1<<WIN_BASE | 1<<WIN_FN)); | |
const key_override_t sft_kc_scln_to_jp_coln = ko_make_with_layers(MOD_MASK_SHIFT, KC_SCLN, JP_COLN, (1<<WIN_BASE | 1<<WIN_FN)); | |
const key_override_t kc_quot_to_jp_quot = ko_make_with_layers_and_negmods(0, KC_QUOT, JP_QUOT, (1<<WIN_BASE | 1<<WIN_FN), (uint8_t) MOD_MASK_SHIFT); | |
const key_override_t sft_kc_quot_to_jp_dquo = ko_make_with_layers(MOD_MASK_SHIFT, KC_QUOT, JP_DQUO, (1<<WIN_BASE | 1<<WIN_FN)); | |
const key_override_t kc_grv_to_jp_grv = ko_make_with_layers_and_negmods(0, KC_GRV, JP_GRV, (1<<WIN_BASE | 1<<WIN_FN), (uint8_t) MOD_MASK_SHIFT); | |
const key_override_t sft_kc_grv_to_jp_tild = ko_make_with_layers(MOD_MASK_SHIFT, KC_GRV, JP_TILD, (1<<WIN_BASE | 1<<WIN_FN)); | |
const key_override_t **key_overrides = (const key_override_t *[]){ | |
&sft_kc_2_to_jp_at | |
, &sft_kc_6_to_jp_circ | |
, &sft_kc_7_to_jp_ampr | |
, &sft_kc_8_to_jp_astr | |
, &sft_kc_9_to_jp_lprn | |
, &sft_kc_0_to_jp_rprn | |
, &sft_kc_mins_to_jp_unds | |
, &kc_eql_to_jp_eql | |
, &sft_kc_eql_to_jp_plus | |
, &kc_lbrc_to_jp_lbrc | |
, &sft_kc_lbrc_to_jp_lcbr | |
, &kc_rbrc_to_jp_rbrc | |
, &sft_kc_rbrc_to_jp_rcbr | |
, &kc_bsls_to_jp_bsls | |
, &sft_kc_bsls_to_jp_pipe | |
, &sft_kc_scln_to_jp_coln | |
, &kc_quot_to_jp_quot | |
, &sft_kc_quot_to_jp_dquo | |
, &kc_grv_to_jp_grv | |
, &sft_kc_grv_to_jp_tild | |
, NULL | |
}; | |
#endif // KEY_OVERRIDE_ENABLE | |
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |
[MAC_BASE] = LAYOUT_ansi_82( | |
KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE, | |
KC_GRV, 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_BSPC, KC_PGUP, | |
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_PGDN, | |
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_HOME, | |
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, | |
KC_LCTL, KC_LOPT, LCMD_T(KC_LNG2), KC_SPC, RCMD_T(KC_LNG1), MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), | |
[MAC_FN] = LAYOUT_ansi_82( | |
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, RGB_TOG, | |
_______, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, _______, _______, | |
_______, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, _______, | |
_______, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, _______, _______, | |
_______, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, _______, _______, | |
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______), | |
[WIN_BASE] = LAYOUT_ansi_82( | |
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_DEL, KC_MUTE, | |
KC_GRV, 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_BSPC, KC_PGUP, | |
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_PGDN, | |
MO(WIN_FN), 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_HOME, | |
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, | |
KC_LCTL, KC_LWIN, LALT_T(KC_LNG2), KC_SPC, RALT_T(KC_LNG1), MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), | |
[WIN_FN] = LAYOUT_ansi_82( | |
_______, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, RGB_TOG, | |
_______, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, _______, _______, | |
_______, KC_NO, KC_NO, KC_END, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO, KC_NO, _______, | |
_______, KC_HOME, KC_NO, KC_DEL, KC_RGHT, KC_NO, KC_BSPC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, _______, _______, | |
_______, KC_NO, C(KC_X), C(KC_C), C(KC_V), KC_LEFT, KC_DOWN, KC_NO, KC_NO, KC_NO, KC_NO, _______, _______, | |
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______), | |
}; | |
#if defined(ENCODER_MAP_ENABLE) | |
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { | |
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, | |
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }, | |
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, | |
[WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }, | |
}; | |
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
VIA_ENABLE = yes | |
ENCODER_MAP_ENABLE = yes | |
KEY_OVERRIDE_ENABLE = yes |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment