diff options
| author | Victor Savu Gabriel <[email protected]> | 2021-12-27 11:22:27 +0100 | 
|---|---|---|
| committer | GitHub <[email protected]> | 2021-12-27 21:22:27 +1100 | 
| commit | 6ec9cd511df29a0bf788818e3cecf636d836af3c (patch) | |
| tree | 026376c3e32d64c9b504ed2e99f5765cf217abc5 | |
| parent | 27fd6b7462998dd00c7ab1bf8a4ff4440cb12ee1 (diff) | |
| download | qmk_firmware-6ec9cd511df29a0bf788818e3cecf636d836af3c.tar.gz qmk_firmware-6ec9cd511df29a0bf788818e3cecf636d836af3c.zip | |
Addd victorsavu3's Keychron Q1 keymap (ISO) (#15517)
Co-authored-by: Savu Victor-Gabriel <[email protected]>
4 files changed, 228 insertions, 0 deletions
| diff --git a/keyboards/keychron/q1/rev_0102/keymaps/victorsavu3/config.h b/keyboards/keychron/q1/rev_0102/keymaps/victorsavu3/config.h new file mode 100644 index 0000000000..8120a9352a --- /dev/null +++ b/keyboards/keychron/q1/rev_0102/keymaps/victorsavu3/config.h @@ -0,0 +1,69 @@ +/* Copyright 2021 @ Victor-Gabriel Savu + * + * 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 + +// disable all default effects +#undef ENABLE_RGB_MATRIX_BREATHING +#undef ENABLE_RGB_MATRIX_CYCLE_ALL +#undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#undef ENABLE_RGB_MATRIX_DUAL_BEACON +#undef ENABLE_RGB_MATRIX_RAINBOW_BEACON +#undef ENABLE_RGB_MATRIX_RAINDROPS +#undef ENABLE_RGB_MATRIX_TYPING_HEATMAP +#undef ENABLE_RGB_MATRIX_DIGITAL_RAIN +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#undef ENABLE_RGB_MATRIX_SPLASH +#undef ENABLE_RGB_MATRIX_MULTISPLASH +#undef ENABLE_RGB_MATRIX_SOLID_SPLASH +#undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH + +// Allow fancy RGB +#define RGB_MATRIX_KEYPRESSES +#define RGB_MATRIX_FRAMEBUFFER_EFFECTS + +// Simple RGB +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT + +// Reactive RGB +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS + +#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_TYPING_HEATMAP + +#define RGB_MATRIX_TYPING_HEATMAP_DECREASE_DELAY_MS 50 + +// Unicode for Linux +#define UNICODE_SELECTED_MODES UC_LNX +#define UNICODE_KEY_LNX  LCTL(LSFT(KC_U)) + +// Leader config +#define LEADER_PER_KEY_TIMING +#define LEADER_TIMEOUT 500 diff --git a/keyboards/keychron/q1/rev_0102/keymaps/victorsavu3/keymap.c b/keyboards/keychron/q1/rev_0102/keymaps/victorsavu3/keymap.c new file mode 100644 index 0000000000..1f56295fa9 --- /dev/null +++ b/keyboards/keychron/q1/rev_0102/keymaps/victorsavu3/keymap.c @@ -0,0 +1,152 @@ +/* Copyright 2021 @ Victor-Gabriel Savu + * + * 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 + +enum layers{ +  MAC_BASE, +  MAC_FN, +  WIN_BASE, +  WIN_FN +}; + +#define KC_TASK LGUI(KC_TAB) +#define KC_FLXP LGUI(KC_E) + +enum unicode_names { +    GRIN, +    SAD, +}; + +const uint32_t PROGMEM unicode_map[] = { +    [GRIN]  = 0x1F600,  // ๐ +    [SAD]   = 0x1F61E,  // ๐ +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[MAC_BASE] = LAYOUT_iso_83( +     KC_ESC,             KC_BRID,  KC_BRIU,  KC_F3,    KC_F4,    RGB_VAD,  RGB_VAI,  KC_MPRV,  KC_MPLY,  KC_MNXT,  KC_MUTE,  KC_VOLD,  KC_VOLU,  KC_DEL,   KC_INS, +     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_PGDN, +     KC_CAPS,  KC_A,     KC_S,     KC_D,     KC_F,     KC_G,     KC_H,     KC_J,     KC_K,     KC_L,     KC_SCLN,  KC_QUOT,  KC_NUHS,  KC_ENT,             KC_HOME, +     KC_LSFT,  KC_NUBS,  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_LALT,  KC_LGUI,                                KC_SPC,                                 KC_RGUI, MO(MAC_FN),KC_RCTL,  KC_LEFT,  KC_DOWN,  KC_RGHT), + +[MAC_FN] = LAYOUT_iso_83( +     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_TRNS,  KC_TRNS, +     KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,            KC_TRNS, +     RGB_TOG,  RGB_MOD,  RGB_VAI,  RGB_HUI,  RGB_SAI,  RGB_SPI,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,                      KC_TRNS, +     KC_TRNS,  RGB_RMOD, RGB_VAD,  RGB_HUD,  RGB_SAD,  RGB_SPD,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,            KC_TRNS, +     KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,            KC_TRNS,  KC_TRNS, +     KC_TRNS,  KC_TRNS,  KC_TRNS,                                KC_TRNS,                                KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS), + +[WIN_BASE] = LAYOUT_iso_83( +     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,   X(SAD), +     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,            X(GRIN), +     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_PGUP, +     KC_LEAD,  KC_A,     KC_S,     KC_D,     KC_F,     KC_G,     KC_H,     KC_J,     KC_K,     KC_L,     KC_SCLN,  KC_QUOT,  KC_NUHS,  KC_ENT,             KC_PGDN, +     KC_LSFT,  KC_NUBS,  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_LGUI,  KC_LALT,                                KC_SPC,                                 KC_RALT, MO(WIN_FN),KC_RCTL,  KC_LEFT,  KC_DOWN,  KC_RGHT), + +[WIN_FN] = LAYOUT_iso_83( +     KC_TRNS,            KC_BRID,  KC_BRIU,  KC_CALC,  KC_FLXP,  RGB_VAD,  RGB_VAI,  KC_TRNS,  KC_PSCR,  KC_MUTE,  KC_VOLD,  KC_VOLU,  KC_MPLY,  KC_TRNS,  KC_TRNS, +     KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,            KC_TRNS, +     RGB_TOG,  RGB_MOD,  RGB_VAI,  RGB_HUI,  RGB_SAI,  RGB_SPI,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,                      KC_TRNS, +     KC_CAPS,  RGB_RMOD, RGB_VAD,  RGB_HUD,  RGB_SAD,  RGB_SPD,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,            KC_TRNS, +     KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,            KC_TRNS,  KC_PGUP, +     KC_TRNS,  KC_TRNS,  KC_TRNS,                                KC_TRNS,                                KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_HOME,  KC_PGDN,  KC_END) + +}; + +static bool wiggle_mouse; +static uint16_t wiggle_timer; +static uint16_t next_wiggle; + + +LEADER_EXTERNS(); + +void matrix_scan_user(void) { +    LEADER_DICTIONARY() { +        leading = false; +        leader_end(); + +        SEQ_ONE_KEY(KC_LEAD) { +            tap_code(KC_CAPS); +        } + +        SEQ_FOUR_KEYS(KC_I, KC_D, KC_L, KC_E) { +            wiggle_mouse = !wiggle_mouse; +            wiggle_timer = timer_read(); +        } + +        SEQ_TWO_KEYS(KC_O, KC_K) { +            send_unicode_string("๐"); +        } + +        SEQ_THREE_KEYS(KC_S, KC_A, KC_D) { +            send_unicode_string("๐"); +        } + +        SEQ_FIVE_KEYS(KC_C, KC_H, KC_E, KC_C, KC_K) { +            send_unicode_string("โ
"); +        } + +        SEQ_FIVE_KEYS(KC_C, KC_R, KC_O, KC_S, KC_S) { +            send_unicode_string("โ"); +        } + +        SEQ_FIVE_KEYS(KC_T, KC_H, KC_A, KC_N, KC_K) { +            send_unicode_string("๐"); +        } + +        SEQ_FIVE_KEYS(KC_S, KC_M, KC_I, KC_L, KC_E) { +            send_unicode_string("๐"); +        } + +        SEQ_FIVE_KEYS(KC_P, KC_A, KC_R, KC_T, KC_Y) { +            send_unicode_string("๐"); +        } + +        SEQ_FOUR_KEYS(KC_E, KC_Y, KC_E, KC_S) { +            send_unicode_string("(เฒ _เฒ )"); +        } + +        SEQ_FIVE_KEYS(KC_M, KC_A, KC_G, KC_I, KC_C) { +            send_unicode_string("(เฒ _เฒ ) ๐ช โ โญ*.โซ.*โญโ "); +        } + +        SEQ_FIVE_KEYS(KC_T, KC_A, KC_B, KC_L, KC_E) { +            send_unicode_string("(ใเฒ ็เฒ )ใๅฝกโปโโป"); +        } + +        SEQ_FIVE_KEYS(KC_S, KC_H, KC_R, KC_U, KC_G) { +            send_unicode_string("ยฏ\\_(ใ)_/ยฏ"); +        } +    } + +    if (wiggle_mouse && timer_elapsed(wiggle_timer) > next_wiggle) { +        wiggle_timer = timer_read(); + +        uint8_t rval = TCNT0 + TCNT1 + TCNT3 + TCNT4; +        next_wiggle = rval % 1000; + +        if (rval & 1) tap_code(KC_MS_UP); +        if (rval & 2) tap_code(KC_MS_DOWN); +        if (rval & 4) tap_code(KC_MS_LEFT); +        if (rval & 8) tap_code(KC_MS_RIGHT); +    } +} diff --git a/keyboards/keychron/q1/rev_0102/keymaps/victorsavu3/readme.md b/keyboards/keychron/q1/rev_0102/keymaps/victorsavu3/readme.md new file mode 100644 index 0000000000..c96130816e --- /dev/null +++ b/keyboards/keychron/q1/rev_0102/keymaps/victorsavu3/readme.md @@ -0,0 +1,4 @@ +# victorsavu3's Keychron Q1 keymap (ISO) + +Very similar to the default layout. Enables reactive and framebuffer RGB, but disables most effects enabled by keychron. +Uses Caps Lock as a leader key for emojis and to enable a random mouse wiggler to prevent the system from going to sleep. diff --git a/keyboards/keychron/q1/rev_0102/keymaps/victorsavu3/rules.mk b/keyboards/keychron/q1/rev_0102/keymaps/victorsavu3/rules.mk new file mode 100644 index 0000000000..853c414ec7 --- /dev/null +++ b/keyboards/keychron/q1/rev_0102/keymaps/victorsavu3/rules.mk @@ -0,0 +1,3 @@ +MOUSEKEY_ENABLE = yes +UNICODEMAP_ENABLE = yes +LEADER_ENABLE = yes | 
