From 29169243a73cfc26adbf3b0b4ea09ae88927f598 Mon Sep 17 00:00:00 2001 From: Dicko Date: Thu, 13 Oct 2022 05:19:07 +0700 Subject: [Keyboard] Support for dumbpad_v3x (#18663) * feat: support for dumbpad_v3x - all credit goes to - ref: https://github.com/qmk/qmk_firmware/pull/16285 - included comment from noroadsleft - ref: https://github.com/qmk/qmk_firmware/pull/16285#pullrequestreview-1038213899 * fix: add newline on every .c, .h, .mk files end * feat: response to change https://github.com/qmk/qmk_firmware/pull/18663#discussion_r991515821 * feat: response to change https://github.com/qmk/qmk_firmware/pull/18663#discussion_r991516192 --- keyboards/dumbpad/v3x/keymaps/default/keymap.c | 81 +++++++++++++++++++ keyboards/dumbpad/v3x/keymaps/deveth0/keymap.c | 104 +++++++++++++++++++++++++ keyboards/dumbpad/v3x/keymaps/via/keymap.c | 81 +++++++++++++++++++ keyboards/dumbpad/v3x/keymaps/via/rules.mk | 1 + 4 files changed, 267 insertions(+) create mode 100644 keyboards/dumbpad/v3x/keymaps/default/keymap.c create mode 100644 keyboards/dumbpad/v3x/keymaps/deveth0/keymap.c create mode 100644 keyboards/dumbpad/v3x/keymaps/via/keymap.c create mode 100644 keyboards/dumbpad/v3x/keymaps/via/rules.mk (limited to 'keyboards/dumbpad/v3x/keymaps') diff --git a/keyboards/dumbpad/v3x/keymaps/default/keymap.c b/keyboards/dumbpad/v3x/keymaps/default/keymap.c new file mode 100644 index 0000000000..b96e0e71ce --- /dev/null +++ b/keyboards/dumbpad/v3x/keymaps/default/keymap.c @@ -0,0 +1,81 @@ +/* +Copyright 2022 imchipwood && deveth0 + +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 . +*/ + +#include QMK_KEYBOARD_H + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + BASE LAYER - Num Pad + /-----------------------------------------------------` + | | 7 | 8 | 9 | - | + | |---------|---------|---------|---------| + | | 4 | 5 | 6 | + | + | |---------|---------|---------|---------| + | | 1 | 2 | 3 | * | + |-------------|---------|---------|---------|---------| + | Mute | TT(1) | 0 | | Enter | + \-----------------------------------------------------' + */ + [0] = LAYOUT( + KC_P7, KC_P8, KC_P9, KC_PMNS, + KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_P1, KC_P2, KC_P3, KC_PAST, + KC_MUTE, TT(1), KC_P0, _______, KC_ENTER + ), + /* + SUB LAYER - RGB controls, Modes on encoder + /-----------------------------------------------------` + | | On/Off | Bright- | Bright+ | Reset | + | |---------|---------|---------|---------| + | | | Hue- | Hue+ | | + | |---------|---------|---------|---------| + | | | Sat- | Sat+ | | + |-------------|---------|---------|---------|---------| + | | TT(1) | Effect- | Effect+ | | + \-----------------------------------------------------' + */ + [1] = LAYOUT( + RGB_TOG, RGB_VAD, RGB_VAI, RESET, + KC_NO, RGB_HUD, RGB_HUI, KC_NO, + KC_NO, RGB_SAD, RGB_SAI, KC_NO, + KC_NO, _______, RGB_SPD, RGB_SPI, KC_NO + ), +}; +// clang-format on + +bool encoder_update_user(uint8_t index, bool clockwise) { + switch (get_highest_layer(layer_state)) { + case 0: + // main layer, volume + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + break; + default: + // rgb control layer, effects + if (clockwise) { + rgblight_step(); + } else { + rgblight_step_reverse(); + } + break; + } + return true; +} diff --git a/keyboards/dumbpad/v3x/keymaps/deveth0/keymap.c b/keyboards/dumbpad/v3x/keymaps/deveth0/keymap.c new file mode 100644 index 0000000000..b95e6270e8 --- /dev/null +++ b/keyboards/dumbpad/v3x/keymaps/deveth0/keymap.c @@ -0,0 +1,104 @@ +/* +Copyright 2022 imchipwood && deveth0 + +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 . +*/ + +#include QMK_KEYBOARD_H + +#define MUTE_HOLD_DELAY 400 +static uint16_t mute_hold_timer = 0; + +enum custom_keycodes { + MUTE_TEAMS = SAFE_RANGE, +}; + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + BASE LAYER - Media Controls + /------------------------------------------------------------------------------------` + | | Media Prev | Media Pause | Media Next | | + | |--------------------|-------------------|------------------|---------| + | | Teams - Mute | | | | + | |--------------------|-------------------|------------------|---------| + | | | | | | + |-------------|--------------------|-------------------|------------------|---------| + | Mute | TT(1) | | | Enter | + \------------------------------------------------------------------------------------' + */ + [0] = LAYOUT( + KC_MPRV, KC_MPLY, KC_MNXT, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, + MUTE_TEAMS, KC_NO, KC_NO, KC_NO, + KC_MUTE, TT(1), KC_NO, KC_NO, KC_NO + ), + /* + SUB LAYER - RGB controls, Modes on encoder + /-----------------------------------------------------` + | | On/Off | Bright- | Bright+ | Reset | + | |---------|---------|---------|---------| + | | | Hue- | Hue+ | | + | |---------|---------|---------|---------| + | | | Sat- | Sat+ | | + |-------------|---------|---------|---------|---------| + | | TT(1) | Effect- | Effect+ | | + \-----------------------------------------------------' + */ + [1] = LAYOUT( + RGB_TOG, RGB_VAD, RGB_VAI, RESET, + KC_NO, RGB_HUD, RGB_HUI, KC_NO, + KC_NO, RGB_SAD, RGB_SAI, KC_NO, + KC_NO, _______, RGB_SPD, RGB_SPI, KC_NO + ), +}; +// clang-format on + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + // props to https://www.reddit.com/r/olkb/comments/oewbr2/comment/h49z38r + switch (keycode) { + case MUTE_TEAMS: + if (record->event.pressed) { // when keycode MUTE_TEAMS is pressed + mute_hold_timer = timer_read(); // mark the time the key was pressed + tap_code16(LCTL(LSFT(KC_M))); // tap Ctrl + Shift + M (mute shortcut) + } else { // when keycode MUTE_TEAMS is released + if (timer_elapsed(mute_hold_timer) > MUTE_HOLD_DELAY) // if held longer than MUTE_HOLD_DELAY + tap_code16(LCTL(LSFT(KC_M))); // tap the mute shortcut again + } // otherwise do nothing + break; + } + return true; +}; + +bool encoder_update_user(uint8_t index, bool clockwise) { + switch (get_highest_layer(layer_state)) { + case 0: + // main layer, volume + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + break; + default: + // rgb control layer, effects + if (clockwise) { + rgblight_step(); + } else { + rgblight_step_reverse(); + } + break; + } + return true; +} diff --git a/keyboards/dumbpad/v3x/keymaps/via/keymap.c b/keyboards/dumbpad/v3x/keymaps/via/keymap.c new file mode 100644 index 0000000000..b96e0e71ce --- /dev/null +++ b/keyboards/dumbpad/v3x/keymaps/via/keymap.c @@ -0,0 +1,81 @@ +/* +Copyright 2022 imchipwood && deveth0 + +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 . +*/ + +#include QMK_KEYBOARD_H + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + BASE LAYER - Num Pad + /-----------------------------------------------------` + | | 7 | 8 | 9 | - | + | |---------|---------|---------|---------| + | | 4 | 5 | 6 | + | + | |---------|---------|---------|---------| + | | 1 | 2 | 3 | * | + |-------------|---------|---------|---------|---------| + | Mute | TT(1) | 0 | | Enter | + \-----------------------------------------------------' + */ + [0] = LAYOUT( + KC_P7, KC_P8, KC_P9, KC_PMNS, + KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_P1, KC_P2, KC_P3, KC_PAST, + KC_MUTE, TT(1), KC_P0, _______, KC_ENTER + ), + /* + SUB LAYER - RGB controls, Modes on encoder + /-----------------------------------------------------` + | | On/Off | Bright- | Bright+ | Reset | + | |---------|---------|---------|---------| + | | | Hue- | Hue+ | | + | |---------|---------|---------|---------| + | | | Sat- | Sat+ | | + |-------------|---------|---------|---------|---------| + | | TT(1) | Effect- | Effect+ | | + \-----------------------------------------------------' + */ + [1] = LAYOUT( + RGB_TOG, RGB_VAD, RGB_VAI, RESET, + KC_NO, RGB_HUD, RGB_HUI, KC_NO, + KC_NO, RGB_SAD, RGB_SAI, KC_NO, + KC_NO, _______, RGB_SPD, RGB_SPI, KC_NO + ), +}; +// clang-format on + +bool encoder_update_user(uint8_t index, bool clockwise) { + switch (get_highest_layer(layer_state)) { + case 0: + // main layer, volume + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + break; + default: + // rgb control layer, effects + if (clockwise) { + rgblight_step(); + } else { + rgblight_step_reverse(); + } + break; + } + return true; +} diff --git a/keyboards/dumbpad/v3x/keymaps/via/rules.mk b/keyboards/dumbpad/v3x/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/dumbpad/v3x/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes -- cgit v1.2.3