forked from qmk/qmk_firmware
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[Keymap] Add model01 and doio/kb16 keymaps (qmk#18681)
- Loading branch information
1 parent
0bf8785
commit bd3af63
Showing
7 changed files
with
414 additions
and
0 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,135 @@ | ||
/* Copyright 2022 DOIO | ||
* Copyright 2022 HorrorTroll <https://github.com/HorrorTroll> | ||
* Copyright 2022 Ryan Anderson <[email protected]> | ||
* | ||
* 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 | ||
|
||
// OLED animation | ||
#include "lib/layer_status/layer_status.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 layer_names { | ||
_BASE = 0, | ||
_FN, | ||
_FN1, | ||
_FN2, | ||
}; | ||
|
||
// enum layer_keycodes { }; | ||
|
||
// clang-format off | ||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
|
||
/* | ||
┌───┬───┬───┬───┐ ┌───┐ ┌───┐ | ||
│C-D│C-E│M-D│M-E│ │Ply│ │TO1│ | ||
├───┼───┼───┼───┤ └───┘ └───┘ | ||
│ 5 │ 6 │ 7 │ 8 │ | ||
├───┼───┼───┼───┤ | ||
│ 9 │ 0 │ ↑ │Ent│ ┌───┐ | ||
├───┼───┼───┼───┤ │Mut│ | ||
│Fn2│ ← │ ↓ │ → │ └───┘ | ||
└───┴───┴───┴───┘ | ||
┌───┬───┬───┬───┐ ┌───┐ ┌───┐ | ||
│ ! │ @ │ # │ $ │ │ │ │ │ | ||
├───┼───┼───┼───┤ └───┘ └───┘ | ||
│ % │ ^ │ & │ * │ | ||
├───┼───┼───┼───┤ | ||
│ ( │ ) │ │ │ ┌───┐ | ||
├───┼───┼───┼───┤ │ │ | ||
│ │ │ │ │ └───┘ | ||
└───┴───┴───┴───┘ | ||
*/ | ||
/* Row: 0 1 2 3 4 5 6 */ | ||
[_BASE] = LAYOUT(C(KC_D), C(KC_E), LCMD(KC_D), LCMD(KC_E), KC_MPLY, | ||
KC_5, KC_6, LCTL(LCMD(KC_H)), KC_8, TO(_FN), | ||
KC_9, KC_0, KC_UP, KC_ENT, KC_MUTE, | ||
MO(_FN2), KC_LEFT, KC_DOWN, KC_RIGHT), | ||
|
||
/* | ||
┌───┬───┬───┬───┐ ┌───┐ ┌───┐ | ||
│ │ │ │ │ │ │ │ │ | ||
├───┼───┼───┼───┤ └───┘ └───┘ | ||
│ │ │ │ │ | ||
├───┼───┼───┼───┤ | ||
│ │ │ │ │ ┌───┐ | ||
├───┼───┼───┼───┤ │ │ | ||
│ │ │ │ │ └───┘ | ||
└───┴───┴───┴───┘ | ||
*/ | ||
/* Row: 0 1 2 3 4 5 6 */ | ||
[_FN] = LAYOUT(_______, _______, _______, _______, _______, | ||
_______, _______, _______, _______, TO(_FN1), | ||
_______, _______, _______, _______, _______, | ||
_______, _______, _______, _______), | ||
|
||
/* | ||
┌───┬───┬───┬───┐ ┌───┐ ┌───┐ | ||
│ │ │ │ │ │ │ │ │ | ||
├───┼───┼───┼───┤ └───┘ └───┘ | ||
│ │ │ │ │ | ||
├───┼───┼───┼───┤ | ||
│ │ │ │ │ ┌───┐ | ||
├───┼───┼───┼───┤ │ │ | ||
│ │ │ │ │ └───┘ | ||
└───┴───┴───┴───┘ | ||
*/ | ||
/* Row: 0 1 2 3 4 5 6 */ | ||
[_FN1] = LAYOUT(_______, _______, _______, _______, _______, | ||
_______, _______, _______, _______, TO(_FN2), | ||
_______, _______, _______, _______, _______, | ||
_______, _______, _______, _______), | ||
|
||
/* | ||
┌───┬───┬───┬───┐ ┌───┐ ┌───┐ | ||
│Spi│Spd│ │ │ │ │ │TO0│ | ||
├───┼───┼───┼───┤ └───┘ └───┘ | ||
│Sai│Sad│ │ │ | ||
├───┼───┼───┼───┤ | ||
│Tog│Mod│Hui│ │ ┌───┐ | ||
├───┼───┼───┼───┤ │ │ | ||
│ │Vai│Hud│Vad│ └───┘ | ||
└───┴───┴───┴───┘ | ||
*/ | ||
/* Row: 0 1 2 3 4 5 6 */ | ||
[_FN2] = LAYOUT(RGB_SPI, RGB_SPD, _______, QK_BOOT, _______, | ||
RGB_SAI, RGB_SAD, _______, _______, TO(_BASE), | ||
RGB_TOG, RGB_MOD, RGB_HUI, _______, _______, | ||
_______, RGB_VAI, RGB_HUD, RGB_VAD), | ||
}; | ||
// clang-format on | ||
|
||
#ifdef OLED_ENABLE | ||
bool oled_task_user(void) { | ||
render_layer_status(); | ||
|
||
return true; | ||
} | ||
#endif | ||
|
||
#ifdef ENCODER_MAP_ENABLE | ||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { | ||
[_BASE] = {ENCODER_CCW_CW(KC_MPRV, KC_MNXT), ENCODER_CCW_CW(KC_PGDN, KC_PGUP), ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}, | ||
[_FN] = {ENCODER_CCW_CW(KC_MPRV, KC_MNXT), ENCODER_CCW_CW(KC_PGDN, KC_PGUP), ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}, | ||
[_FN2] = {ENCODER_CCW_CW(KC_MPRV, KC_MNXT), ENCODER_CCW_CW(KC_PGDN, KC_PGUP), ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}, | ||
[_BASE] = {ENCODER_CCW_CW(KC_MPRV, KC_MNXT), ENCODER_CCW_CW(KC_PGDN, KC_PGUP), ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}, | ||
}; | ||
#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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
# pugmajere's Google Meet optimized version of the default keymap | ||
|
||
A lightly modified version of the default keymap. | ||
|
||
The top row is converted to keys used for muting audio and video in | ||
Google Meet, in both Linux and MacOS. (Yes, they annoyingly have | ||
different conventions.) | ||
|
||
The ASCII-art depiction uses "C-E" to mean "ctrl-e", and "M-E" to mean | ||
CMD(GUI) and "e", roughly following Emacs naming conventions. |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
# Encoder enabled | ||
ENCODER_MAP_ENABLE = yes |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
// Copyright 2022 Ryan Anderson <[email protected]> (@pugmajere) | ||
// SPDX-License-Identifier: GPL-2.0-or-later | ||
|
||
#pragma once | ||
|
||
#define USB_MAX_POWER_CONSUMPTION 500 | ||
|
||
#define RGBLIGHT_LIMIT_VAL 175 | ||
|
||
#undef ENABLE_RGB_MATRIX_ALPHAS_MODS | ||
#undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN | ||
#undef ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT | ||
#undef ENABLE_RGB_MATRIX_BREATHING | ||
#undef ENABLE_RGB_MATRIX_BAND_SAT | ||
#undef ENABLE_RGB_MATRIX_BAND_VAL | ||
#undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT | ||
#undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL | ||
#undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT | ||
#undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL | ||
#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_RAINBOW_PINWHEELS */ | ||
#undef ENABLE_RGB_MATRIX_RAINDROPS | ||
#undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS | ||
#undef ENABLE_RGB_MATRIX_HUE_BREATHING | ||
#undef ENABLE_RGB_MATRIX_HUE_PENDULUM | ||
#undef ENABLE_RGB_MATRIX_HUE_WAVE | ||
#undef ENABLE_RGB_MATRIX_PIXEL_RAIN | ||
#undef ENABLE_RGB_MATRIX_PIXEL_FLOW | ||
#undef ENABLE_RGB_MATRIX_PIXEL_FRACTAL | ||
// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is undefd | ||
#undef ENABLE_RGB_MATRIX_TYPING_HEATMAP | ||
#undef ENABLE_RGB_MATRIX_DIGITAL_RAIN | ||
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is undefd | ||
#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 |
192 changes: 192 additions & 0 deletions
192
keyboards/keyboardio/model01/keymaps/pugmajere/keymap.c
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,192 @@ | ||
/* Copyright 2022 Ryan Anderson <[email protected]> | ||
* | ||
* 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 | ||
|
||
/* layer constants */ | ||
enum { | ||
DEF = 0, | ||
FUN, | ||
}; | ||
|
||
enum custom_keycode { | ||
MACRO_CTRL_PAGE_UP = SAFE_RANGE, | ||
KC_MT_LCBRC, | ||
KC_MT_RCBRC, | ||
KC_MT_LPAR, | ||
KC_MT_RPAR, | ||
MACRO_KVM_1, | ||
MACRO_KVM_2, | ||
MACRO_KVM_3, | ||
MACRO_KVM_4, | ||
MACRO_KVM_TG, | ||
}; | ||
|
||
// Work around limitations in mod-tapping | ||
static uint16_t space_cadet_control_timer = 0; | ||
static bool space_cadet_key_pressed_flag = false; | ||
|
||
// clang-format off | ||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
[DEF] = LAYOUT( | ||
QK_BOOT , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , MACRO_CTRL_PAGE_UP, | ||
KC_GRV , KC_Q , KC_W , KC_E , KC_R , KC_T , RGB_MOD, MACRO_KVM_TG, KC_Y , KC_U , KC_I , KC_O , KC_P , KC_EQL , | ||
LCTL_T(KC_PGUP), KC_A , KC_S , KC_D , KC_F , KC_G , KC_TAB , KC_ENT , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, | ||
KC_PGDN, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_ESC , KC_RALT, KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_MINS, | ||
LCTL_T(KC_LBRC), RCTL_T(KC_RBRC), | ||
KC_BSPC, KC_SPC , | ||
KC_MT_LCBRC, KC_MT_RCBRC, | ||
KC_MT_LPAR, KC_MT_RPAR, | ||
MO(FUN), MO(FUN) | ||
), | ||
[FUN] = LAYOUT( | ||
_______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , | ||
KC_TAB , _______, KC_MS_U, KC_WH_U, KC_BTN3, MACRO_KVM_1, RGB_TOG, KC_MPRV, KC_MNXT, KC_LCBR, KC_RCBR, KC_LBRC, KC_RBRC, KC_F12 , | ||
KC_HOME, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN1, MACRO_KVM_2, RGB_SPI, KC_MPLY, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, _______, _______, | ||
KC_END , KC_PSCR, KC_INS , KC_WH_D, KC_BTN2, MACRO_KVM_4, RGB_SPD, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, KC_BSLS, KC_PIPE, | ||
_______, _______, | ||
KC_DEL , KC_ENT , | ||
_______, _______, | ||
_______, _______, | ||
_______, _______ | ||
) | ||
}; | ||
|
||
/* template for new layouts: | ||
LAYOUT( | ||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | ||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | ||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | ||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | ||
_______, _______, | ||
_______, _______, | ||
_______, _______, | ||
_______, _______, | ||
_______, _______ | ||
) | ||
*/ | ||
// clang-format on | ||
|
||
bool process_record_user(uint16_t keycode, keyrecord_t *record) { | ||
if (record->event.pressed) { | ||
space_cadet_key_pressed_flag = true; | ||
} | ||
switch (keycode) { | ||
case MACRO_CTRL_PAGE_UP: | ||
if (record->event.pressed) { | ||
// send some data | ||
SEND_STRING(SS_LCTL(SS_TAP(X_PGUP))); | ||
} else { | ||
// when keycode MACRO_CTRL_PAGE_UP is pressed | ||
} | ||
break; | ||
|
||
// These next two cases duplicate mod-tap functionality by hand to | ||
// work around the lack of support for shifted/modded keys as | ||
// "tap" side of things. | ||
case KC_MT_LCBRC: | ||
if (record->event.pressed) { | ||
space_cadet_control_timer = timer_read(); | ||
space_cadet_key_pressed_flag = false; | ||
register_mods(MOD_BIT(KC_LGUI)); | ||
} else { | ||
unregister_mods(MOD_BIT(KC_LGUI)); | ||
if (timer_elapsed(space_cadet_control_timer) < TAPPING_TERM && !space_cadet_key_pressed_flag) { | ||
tap_code16(LSFT(KC_LBRC)); | ||
} | ||
} | ||
return false; | ||
break; | ||
case KC_MT_RCBRC: | ||
if (record->event.pressed) { | ||
space_cadet_control_timer = timer_read(); | ||
space_cadet_key_pressed_flag = false; | ||
register_mods(MOD_BIT(KC_LALT)); | ||
} else { | ||
unregister_mods(MOD_BIT(KC_LALT)); | ||
if (timer_elapsed(space_cadet_control_timer) < TAPPING_TERM && !space_cadet_key_pressed_flag) { | ||
tap_code16(LSFT(KC_RBRC)); | ||
} | ||
} | ||
return false; | ||
break; | ||
case KC_MT_LPAR: | ||
if (record->event.pressed) { | ||
space_cadet_control_timer = timer_read(); | ||
space_cadet_key_pressed_flag = false; | ||
register_mods(MOD_BIT(KC_LSFT)); | ||
} else { | ||
unregister_mods(MOD_BIT(KC_LSFT)); | ||
if (timer_elapsed(space_cadet_control_timer) < TAPPING_TERM && !space_cadet_key_pressed_flag) { | ||
tap_code16(LSFT(KC_9)); | ||
} | ||
} | ||
return false; | ||
break; | ||
case KC_MT_RPAR: | ||
if (record->event.pressed) { | ||
space_cadet_control_timer = timer_read(); | ||
space_cadet_key_pressed_flag = false; | ||
register_mods(MOD_BIT(KC_RSFT)); | ||
} else { | ||
unregister_mods(MOD_BIT(KC_RSFT)); | ||
if (timer_elapsed(space_cadet_control_timer) < TAPPING_TERM && !space_cadet_key_pressed_flag) { | ||
tap_code16(LSFT(KC_0)); | ||
} | ||
} | ||
return false; | ||
break; | ||
case MACRO_KVM_1: | ||
if (record->event.pressed) { | ||
tap_code(KC_SCRL); | ||
tap_code(KC_SCRL); | ||
tap_code(KC_1); | ||
} | ||
break; | ||
case MACRO_KVM_2: | ||
if (record->event.pressed) { | ||
tap_code(KC_SCRL); | ||
tap_code(KC_SCRL); | ||
tap_code(KC_2); | ||
} | ||
break; | ||
case MACRO_KVM_3: | ||
if (record->event.pressed) { | ||
tap_code(KC_SCRL); | ||
tap_code(KC_SCRL); | ||
tap_code(KC_3); | ||
} | ||
break; | ||
case MACRO_KVM_4: | ||
if (record->event.pressed) { | ||
tap_code(KC_SCRL); | ||
tap_code(KC_SCRL); | ||
tap_code(KC_4); | ||
} | ||
break; | ||
case MACRO_KVM_TG: | ||
if (record->event.pressed) { | ||
register_code(KC_LSFT); | ||
tap_code(KC_NUMLOCK); | ||
tap_code(KC_NUMLOCK); | ||
unregister_code(KC_LSFT); | ||
tap_code(KC_LCTL); | ||
} | ||
break; | ||
} | ||
return true; | ||
}; | ||
|
||
/* vim: set ts=2 sw=2 et: */ |
Oops, something went wrong.