From c301cecb162f4163c385bfdccd30e18b5b4a9220 Mon Sep 17 00:00:00 2001 From: Ying Date: Sun, 12 Sep 2021 18:09:55 +0200 Subject: [PATCH] Add support for imchipwood's dumbpad --- .../v1x_dualencoder/keymaps/vial/config.h | 13 ++ .../v1x_dualencoder/keymaps/vial/keymap.c | 147 ++++++++++++++++++ .../v1x_dualencoder/keymaps/vial/rules.mk | 5 + .../v1x_dualencoder/keymaps/vial/vial.json | 60 +++++++ 4 files changed, 225 insertions(+) create mode 100644 keyboards/dumbpad/v1x_dualencoder/keymaps/vial/config.h create mode 100644 keyboards/dumbpad/v1x_dualencoder/keymaps/vial/keymap.c create mode 100644 keyboards/dumbpad/v1x_dualencoder/keymaps/vial/rules.mk create mode 100644 keyboards/dumbpad/v1x_dualencoder/keymaps/vial/vial.json diff --git a/keyboards/dumbpad/v1x_dualencoder/keymaps/vial/config.h b/keyboards/dumbpad/v1x_dualencoder/keymaps/vial/config.h new file mode 100644 index 0000000000..9c09d40ba1 --- /dev/null +++ b/keyboards/dumbpad/v1x_dualencoder/keymaps/vial/config.h @@ -0,0 +1,13 @@ +#pragma once +#define VIAL_KEYBOARD_UID {0x49, 0x6B, 0x7A, 0xA8, 0x6C, 0x78, 0xF6, 0x21} + +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +#define ENCODER_RESOLUTION 2 + +#define VIAL_ENCODER_DEFAULT { KC_A, KC_B, KC_C, KC_D, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_A, KC_B, KC_C, KC_D, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS } + + +#define VIAL_UNLOCK_COMBO_ROWS { 0, 0 } +#define VIAL_UNLOCK_COMBO_COLS { 1, 4 } diff --git a/keyboards/dumbpad/v1x_dualencoder/keymaps/vial/keymap.c b/keyboards/dumbpad/v1x_dualencoder/keymaps/vial/keymap.c new file mode 100644 index 0000000000..4e7ec62fec --- /dev/null +++ b/keyboards/dumbpad/v1x_dualencoder/keymaps/vial/keymap.c @@ -0,0 +1,147 @@ +/* Copyright 2020 imchipwood + * + * 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 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + BASE LAYER + /-----------------------------------------------------` + | | 7 | 8 | 9 | Bkspc | + | |---------|---------|---------|---------| + | | 4 | 5 | 6 | Esc | + | |---------|---------|---------|---------| + | | 1 | 2 | 3 | Tab | + |-------------|---------|---------|---------|---------| + | Left mouse | TT(1) | 0 | . | Enter | + \-----------------------------------------------------' + */ + [0] = LAYOUT( + KC_7, KC_8, KC_9, KC_BSPC, + KC_4, KC_5, KC_6, KC_ESC, + KC_1, KC_2, KC_3, KC_TAB, + KC_BTN1, TT(1), KC_0, LSFT_T(KC_DOT), KC_ENTER + ), + /* + SUB LAYER + /-----------------------------------------------------` + | | | | | Reset | + | |---------|---------|---------|---------| + | | | | | + | + | |---------|---------|---------|---------| + | | | | | - | + |-------------|---------|---------|---------|---------| + | LOCK | | | | = | + \-----------------------------------------------------' + */ + [1] = LAYOUT( + _______, _______, _______, RESET, + _______, _______, _______, KC_KP_PLUS, + _______, _______, _______, KC_KP_MINUS, + KC_LOCK, _______, _______, _______, KC_EQL + ), + [2] = LAYOUT( + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + KC_LOCK, _______, _______, _______, _______ + ), + [3] = LAYOUT( + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, _______ + ) +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + // If console is enabled, it will print the matrix position and status of each key pressed +/* +#ifdef CONSOLE_ENABLE + uprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed); +#endif +*/ + return true; +} + +void keyboard_post_init_user(void) { + // Customise these values to desired behaviour + // debug_enable = true; + // debug_matrix = true; + // debug_keyboard = true; + // debug_mouse = true; +} + +bool encoder_update_user(uint8_t index, bool clockwise) { + /* Custom encoder control - handles CW/CCW turning of encoder + * Default behavior: + * left encoder: + * main layer: + * CW: move mouse right + * CCW: move mouse left + * other layers: + * CW: = (equals/plus - increase slider in Adobe products) + * CCW: - (minus/underscore - decrease slider in adobe products) + * right encoder: + * main layer: + * CW: colume up + * CCW: volume down + * other layers: + * CW: right arrow + * CCW: left arrow + */ + if (index == 0) { + switch (get_highest_layer(layer_state)) { + case 0: + // main layer - move mouse right (CW) and left (CCW) + if (clockwise) { + tap_code(KC_MS_R); + } else { + tap_code(KC_MS_L); + } + break; + + default: + // other layers - =/+ (quals/plus) (CW) and -/_ (minus/underscore) (CCW) + if (clockwise) { + tap_code(KC_EQL); + } else { + tap_code(KC_MINS); + } + break; + } + } else if (index == 1) { + switch (get_highest_layer(layer_state)) { + case 0: + // main layer - volume up (CW) and down (CCW) + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + break; + + default: + // other layers - right (CW) and left (CCW) + if (clockwise) { + tap_code(KC_RIGHT); + } else { + tap_code(KC_LEFT); + } + break; + } + } + return true; +} diff --git a/keyboards/dumbpad/v1x_dualencoder/keymaps/vial/rules.mk b/keyboards/dumbpad/v1x_dualencoder/keymaps/vial/rules.mk new file mode 100644 index 0000000000..949a047d98 --- /dev/null +++ b/keyboards/dumbpad/v1x_dualencoder/keymaps/vial/rules.mk @@ -0,0 +1,5 @@ +VIA_ENABLE = yes +VIAL_ENABLE = yes +VIAL_ENCODERS_ENABLE = yes + +EXTRAFLAGS += -flto \ No newline at end of file diff --git a/keyboards/dumbpad/v1x_dualencoder/keymaps/vial/vial.json b/keyboards/dumbpad/v1x_dualencoder/keymaps/vial/vial.json new file mode 100644 index 0000000000..a345a6527f --- /dev/null +++ b/keyboards/dumbpad/v1x_dualencoder/keymaps/vial/vial.json @@ -0,0 +1,60 @@ +{ + "name": "Dumbpad", + "vendorId": "0xFEED", + "productId": "0x0913", + "lighting": "none", + "matrix": { + "rows": 4, + "cols": 5 + }, + "layouts": { + "keymap": [ + [{ + "y": 0.5, + "x": 1 + }, + "0,1\n\n\n\n\n\n\n\n\ne", + "0,0\n\n\n\n\n\n\n\n\ne", + { + "x": 1 + }, + "1,1\n\n\n\n\n\n\n\n\ne", + "1,0\n\n\n\n\n\n\n\n\ne" + ], + [{ + "y": 0.5, + "x": 3 + }, + "0,1", + "0,2", + "0,3", + "0,4" + ], + [{ + "x": 3 + }, + "1,1", + "1,2", + "1,3", + "1,4" + ], + [{ + "x": 3 + }, + "2,1", + "2,2", + "2,3", + "2,4" + ], + [{ + "x": 2 + }, + "3,0", + "3,1", + "3,2", + "3,3", + "3,4" + ] + ] + } +} \ No newline at end of file