Skip to content

Commit

Permalink
[Keymap] Add model01 and doio/kb16 keymaps (qmk#18681)
Browse files Browse the repository at this point in the history
  • Loading branch information
pugmajere authored and nolanseaton committed Jan 23, 2023
1 parent 0bf8785 commit bd3af63
Show file tree
Hide file tree
Showing 7 changed files with 414 additions and 0 deletions.
135 changes: 135 additions & 0 deletions keyboards/doio/kb16/rev1/keymaps/pugmajere/keymap.c
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 <https://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
10 changes: 10 additions & 0 deletions keyboards/doio/kb16/rev1/keymaps/pugmajere/readme.md
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.
2 changes: 2 additions & 0 deletions keyboards/doio/kb16/rev1/keymaps/pugmajere/rules.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Encoder enabled
ENCODER_MAP_ENABLE = yes
54 changes: 54 additions & 0 deletions keyboards/keyboardio/model01/keymaps/pugmajere/config.h
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 keyboards/keyboardio/model01/keymaps/pugmajere/keymap.c
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 <https://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: */
Loading

0 comments on commit bd3af63

Please sign in to comment.