Merge remote-tracking branch 'origin/develop' into xap

This commit is contained in:
QMK Bot 2023-04-12 15:36:35 +00:00
commit f8e36408da
29 changed files with 871 additions and 6 deletions

View File

@ -149,6 +149,15 @@
"durgod/k320": {
"target": "durgod/k3x0/k320"
},
"durgod/hades": {
"target": "durgod/dgk6x/hades_ansi"
},
"durgod/hades_ansi": {
"target": "durgod/dgk6x/hades_ansi"
},
"durgod/hades_iso": {
"target": "durgod/dgk6x/hades_iso"
},
"dztech/dz60rgb": {
"target": "dztech/dz60rgb/v1"
},

View File

@ -12,11 +12,11 @@ This is a standard off-the-shelf Durgod Hades 65% ANSI layout keyboard with RGB
Make command example for this keyboard (after setting up your build environment):
make durgod/hades:default
make durgod/dgk6x/hades_ansi:default
Flashing example for this keyboard:
make durgod/hades:default:flash
make durgod/dgk6x/hades_ansi:default:flash
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).

View File

@ -0,0 +1,22 @@
/* Copyright 2021 Jessica Sullivan and Don Kjer
*
* 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
#define DRIVER_1_LED_TOTAL 59
#define DRIVER_2_LED_TOTAL 10
#define CAPS_LED 29

View File

@ -0,0 +1,105 @@
/* Copyright 2021 Jessica Sullivan and Don Kjer
*
* 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 "quantum.h"
#ifdef RGB_MATRIX_ENABLE
const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
* | | | B location
* | | | | */
{0, C_1, B_1, A_1}, // Esc
{0, C_2, B_2, A_2}, // 1
{0, C_3, B_3, A_3}, // 2
{0, C_4, B_4, A_4}, // 3
{0, C_5, B_5, A_5}, // 4
{0, C_6, B_6, A_6}, // 5
{0, C_7, B_7, A_7}, // 6
{0, C_8, B_8, A_8}, // 7
{0, C_9, B_9, A_9}, // 8
{0, C_10, B_10, A_10}, // 9
{0, C_11, B_11, A_11}, // 0
{0, C_12, B_12, A_12}, // -
{0, C_13, B_13, A_13}, // =
{0, C_14, B_14, A_14}, // Bksp
{0, C_15, B_15, A_15}, // Del
{0, F_1, E_1, D_1}, // Tab
{0, F_2, E_2, D_2}, // Q
{0, F_3, E_3, D_3}, // W
{0, F_4, E_4, D_4}, // E
{0, F_5, E_5, D_5}, // R
{0, F_6, E_6, D_6}, // T
{0, F_7, E_7, D_7}, // Y
{0, F_8, E_8, D_8}, // U
{0, F_9, E_9, D_9}, // I
{0, F_10, E_10, D_10}, // O
{0, F_11, E_11, D_11}, // P
{0, F_12, E_12, D_12}, // [
{0, F_13, E_13, D_13}, // ]
{0, F_15, E_15, D_15}, // Home
{0, I_1, H_1, G_1}, // Caps
{0, I_2, H_2, G_2}, // A
{0, I_3, H_3, G_3}, // S
{0, I_4, H_4, G_4}, // D
{0, I_5, H_5, G_5}, // F
{0, I_6, H_6, G_6}, // G
{0, I_7, H_7, G_7}, // H
{0, I_8, H_8, G_8}, // J
{0, I_9, H_9, G_9}, // K
{0, I_10, H_10, G_10}, // L
{0, I_11, H_11, G_11}, // :
{0, I_12, H_12, G_12}, // '
{0, I_13, H_13, G_13}, // NUHS
{0, I_14, H_14, G_14}, // Enter
{0, I_15, H_15, G_15}, // PgUp
{0, L_1, K_1, J_1}, // LShift
{0, L_2, K_2, J_2}, // NUBS
{0, L_3, K_3, J_3}, // Z
{0, L_4, K_4, J_4}, // X
{0, L_5, K_5, J_5}, // C
{0, L_6, K_6, J_6}, // V
{0, L_7, K_7, J_7}, // B
{0, L_8, K_8, J_8}, // N
{0, L_9, K_9, J_9}, // M
{0, L_10, K_10, J_10}, // <
{0, L_11, K_11, J_11}, // >
{0, L_12, K_12, J_12}, // ?
{0, L_13, K_13, J_13}, // RShift
{0, L_14, K_14, J_14}, // Up
{0, L_15, K_15, J_15}, // PgOn
{1, C_1, B_1, A_1}, // LCtrl
{1, C_2, B_2, A_2}, // LAlt
{1, C_3, B_3, A_3}, // Windows
{1, C_6, B_6, A_6}, // Space
{1, C_10, B_10, A_10}, // Fn1/RAlt hades/venus
{1, C_11, B_11, A_11}, // Fn2/Fn1
{1, C_12, B_12, A_12}, // RCtrl/Fn2
{1, C_13, B_13, A_13}, // LEFT/RCtrl
{1, C_14, B_14, A_14}, // DOWN
{1, C_15, B_15, A_15} // RIGHT
};
#endif /* RGB_MATRIX_ENABLE */

View File

@ -0,0 +1,173 @@
{
"manufacturer": "Hoksi Technology",
"keyboard_name": "DURGOD Hades (QMK)",
"maintainer": "ebastler",
"url": "https://www.amazon.com/gp/product/B08562392T",
"usb": {
"device_version": "0.0.1",
"pid": "0x4AD4",
"vid": "0xD60D"
},
"matrix_pins": {
"cols": ["B0", "B1", "B2", "B10", "B11", "B12", "B13", "B14", "B15", "C6", "C7", "C8", "C9", "C10", "C11"],
"rows": ["A0", "A1", "A2", "A3", "A4"]
},
"rgb_matrix": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0, "flags": 1},
{"matrix": [0, 1], "x": 16, "y": 0, "flags": 4},
{"matrix": [0, 2], "x": 32, "y": 0, "flags": 4},
{"matrix": [0, 3], "x": 48, "y": 0, "flags": 4},
{"matrix": [0, 4], "x": 64, "y": 0, "flags": 4},
{"matrix": [0, 5], "x": 80, "y": 0, "flags": 4},
{"matrix": [0, 6], "x": 96, "y": 0, "flags": 4},
{"matrix": [0, 7], "x": 112, "y": 0, "flags": 4},
{"matrix": [0, 8], "x": 128, "y": 0, "flags": 4},
{"matrix": [0, 9], "x": 144, "y": 0, "flags": 4},
{"matrix": [0, 10], "x": 160, "y": 0, "flags": 4},
{"matrix": [0, 11], "x": 176, "y": 0, "flags": 4},
{"matrix": [0, 12], "x": 192, "y": 0, "flags": 4},
{"matrix": [0, 13], "x": 216, "y": 0, "flags": 1},
{"matrix": [0, 14], "x": 240, "y": 0, "flags": 4},
{"matrix": [1, 0], "x": 4, "y": 16, "flags": 4},
{"matrix": [1, 1], "x": 24, "y": 16, "flags": 4},
{"matrix": [1, 2], "x": 40, "y": 16, "flags": 4},
{"matrix": [1, 3], "x": 56, "y": 16, "flags": 4},
{"matrix": [1, 4], "x": 72, "y": 16, "flags": 4},
{"matrix": [1, 5], "x": 88, "y": 16, "flags": 4},
{"matrix": [1, 6], "x": 104, "y": 16, "flags": 4},
{"matrix": [1, 7], "x": 120, "y": 16, "flags": 4},
{"matrix": [1, 8], "x": 136, "y": 16, "flags": 4},
{"matrix": [1, 9], "x": 152, "y": 16, "flags": 4},
{"matrix": [1, 10], "x": 168, "y": 16, "flags": 4},
{"matrix": [1, 11], "x": 184, "y": 16, "flags": 4},
{"matrix": [1, 12], "x": 200, "y": 16, "flags": 4},
{"matrix": [1, 14], "x": 240, "y": 16, "flags": 4},
{"matrix": [2, 0], "x": 6, "y": 32, "flags": 4},
{"matrix": [2, 1], "x": 28, "y": 32, "flags": 4},
{"matrix": [2, 2], "x": 44, "y": 32, "flags": 4},
{"matrix": [2, 3], "x": 60, "y": 32, "flags": 4},
{"matrix": [2, 4], "x": 76, "y": 32, "flags": 4},
{"matrix": [2, 5], "x": 92, "y": 32, "flags": 4},
{"matrix": [2, 6], "x": 108, "y": 32, "flags": 4},
{"matrix": [2, 7], "x": 124, "y": 32, "flags": 4},
{"matrix": [2, 8], "x": 140, "y": 32, "flags": 4},
{"matrix": [2, 9], "x": 156, "y": 32, "flags": 4},
{"matrix": [2, 10], "x": 172, "y": 32, "flags": 4},
{"matrix": [2, 11], "x": 188, "y": 32, "flags": 4},
{"matrix": [2, 12], "x": 204, "y": 32, "flags": 4},
{"matrix": [2, 13], "x": 220, "y": 24, "flags": 1},
{"matrix": [2, 14], "x": 240, "y": 32, "flags": 4},
{"matrix": [3, 0], "x": 2, "y": 48, "flags": 1},
{"matrix": [3, 1], "x": 19, "y": 48, "flags": 4},
{"matrix": [3, 2], "x": 36, "y": 48, "flags": 4},
{"matrix": [3, 3], "x": 52, "y": 48, "flags": 4},
{"matrix": [3, 4], "x": 68, "y": 48, "flags": 4},
{"matrix": [3, 5], "x": 84, "y": 48, "flags": 4},
{"matrix": [3, 6], "x": 100, "y": 48, "flags": 4},
{"matrix": [3, 7], "x": 116, "y": 48, "flags": 4},
{"matrix": [3, 8], "x": 132, "y": 48, "flags": 4},
{"matrix": [3, 9], "x": 148, "y": 48, "flags": 4},
{"matrix": [3, 10], "x": 164, "y": 48, "flags": 4},
{"matrix": [3, 11], "x": 180, "y": 48, "flags": 4},
{"matrix": [3, 12], "x": 202, "y": 48, "flags": 1},
{"matrix": [3, 13], "x": 224, "y": 48, "flags": 4},
{"matrix": [3, 14], "x": 240, "y": 48, "flags": 4},
{"matrix": [4, 0], "x": 2, "y": 64, "flags": 1},
{"matrix": [4, 1], "x": 22, "y": 64, "flags": 1},
{"matrix": [4, 2], "x": 42, "y": 64, "flags": 1},
{"matrix": [4, 5], "x": 101, "y": 64, "flags": 4},
{"matrix": [4, 9], "x": 160, "y": 64, "flags": 1},
{"matrix": [4, 10], "x": 176, "y": 64, "flags": 1},
{"matrix": [4, 11], "x": 192, "y": 64, "flags": 1},
{"matrix": [4, 12], "x": 208, "y": 64, "flags": 4},
{"matrix": [4, 13], "x": 224, "y": 64, "flags": 4},
{"matrix": [4, 14], "x": 240, "y": 64, "flags": 4}
]
},
"diode_direction": "ROW2COL",
"community_layouts": ["65_iso"],
"layouts": {
"LAYOUT_65_iso": {
"layout": [
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
{"label": "!", "matrix": [0, 1], "x": 1, "y": 0},
{"label": "@", "matrix": [0, 2], "x": 2, "y": 0},
{"label": "#", "matrix": [0, 3], "x": 3, "y": 0},
{"label": "$", "matrix": [0, 4], "x": 4, "y": 0},
{"label": "%", "matrix": [0, 5], "x": 5, "y": 0},
{"label": "^", "matrix": [0, 6], "x": 6, "y": 0},
{"label": "&", "matrix": [0, 7], "x": 7, "y": 0},
{"label": "*", "matrix": [0, 8], "x": 8, "y": 0},
{"label": "(", "matrix": [0, 9], "x": 9, "y": 0},
{"label": ")", "matrix": [0, 10], "x": 10, "y": 0},
{"label": "_", "matrix": [0, 11], "x": 11, "y": 0},
{"label": "+", "matrix": [0, 12], "x": 12, "y": 0},
{"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0, "w": 2},
{"label": "Delete", "matrix": [0, 14], "x": 15, "y": 0},
{"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1},
{"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1},
{"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1},
{"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1},
{"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1},
{"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1},
{"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1},
{"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1},
{"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1},
{"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1},
{"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1},
{"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1},
{"label": "Home", "matrix": [1, 14], "x": 15, "y": 1},
{"label": "CapsLock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
{"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2},
{"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2},
{"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2},
{"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2},
{"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2},
{"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2},
{"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2},
{"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2},
{"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2},
{"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2},
{"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2},
{"label": "#", "matrix": [2, 12], "x": 12.75, "y": 2},
{"label": "Enter", "matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
{"label": "PgUp", "matrix": [2, 14], "x": 15, "y": 2},
{"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
{"label": "\\", "matrix": [3, 1], "x": 1.25, "y": 3},
{"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3},
{"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3},
{"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3},
{"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3},
{"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3},
{"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3},
{"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3},
{"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3},
{"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3},
{"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3},
{"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
{"label": "Up", "matrix": [3, 13], "x": 14, "y": 3},
{"label": "PgDn", "matrix": [3, 14], "x": 15, "y": 3},
{"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
{"label": "Win", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
{"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
{"label": "K45", "matrix": [4, 5], "x": 3.75, "y": 4, "w": 6.25},
{"label": "Fn1", "matrix": [4, 9], "x": 10, "y": 4},
{"label": "Fn2", "matrix": [4, 10], "x": 11, "y": 4},
{"label": "Ctrl", "matrix": [4, 11], "x": 12, "y": 4},
{"label": "Left", "matrix": [4, 12], "x": 13, "y": 4},
{"label": "Down", "matrix": [4, 13], "x": 14, "y": 4},
{"label": "Right", "matrix": [4, 14], "x": 15, "y": 4}
]
}
}
}

View File

@ -0,0 +1,38 @@
{
"keyboard": "durgod/dgk6x/hades_iso",
"keymap": "default",
"layout": "LAYOUT_65_iso",
"layers": [
[
"QK_GESC", "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_DEL",
"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_HOME",
"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_PGUP",
"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_PGDN",
"KC_LCTL", "KC_LGUI", "KC_LALT", "KC_SPC", "MO(1)", "MO(2)", "KC_RCTL", "KC_LEFT", "KC_DOWN", "KC_RIGHT"
],
[
"KC_GRV", "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_UP", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_PSCR", "KC_SCRL", "KC_PAUS", "KC_TRNS",
"KC_TRNS", "KC_LEFT", "KC_DOWN", "KC_RIGHT", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_INS", "KC_END", "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", "GUI_TOG", "KC_TRNS", "KC_TRNS", "KC_TRNS", "MO(3)", "KC_TRNS", "KC_APP", "KC_TRNS", "KC_TRNS"
],
[
"KC_TRNS", "KC_MPLY", "KC_MSTP", "KC_MPRV", "KC_MNXT", "KC_VOLD", "KC_VOLU", "KC_MUTE", "KC_TRNS", "KC_TRNS", "KC_TRNS", "RGB_TOG", "RGB_MOD", "RGB_RMOD", "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", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "RGB_VAI", "KC_TRNS",
"KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "MO(3)", "KC_TRNS", "KC_TRNS", "RGB_SPD", "RGB_VAD", "RGB_SPI"
],
[
"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", "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", "RGB_SAI", "KC_TRNS",
"KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "RGB_HUD", "RGB_SAD", "RGB_HUI"
]
],
"author":"ebastler",
"notes":"derived from ANSI keymap by J-Sully",
"version":1
}

View File

@ -0,0 +1,12 @@
![Durgod Hades Layout Image](https://i.imgur.com/vsi6sdKh.png)
# The default keymap for Durgod Hades.
This keymap is intended to closely follow the stock Durgod Hades layout. RGB Hue and Saturation can be changed Fn1 + Fn2 + arrow keys.
## Windows key lock
You can hold down Fn1 + Windows key to disable the Windows key while in locked mode.
The 'Lock' LED indicates if the Windows key is locked.
This is similar to the stock Hades Windows key lock functionality.

View File

@ -0,0 +1,38 @@
{
"keyboard": "durgod/dgk6x/hades_iso",
"keymap": "via",
"layout": "LAYOUT_65_iso",
"layers": [
[
"QK_GESC", "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_DEL",
"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_HOME",
"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_PGUP",
"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_PGDN",
"KC_LCTL", "KC_LGUI", "KC_LALT", "KC_SPC", "MO(1)", "MO(2)", "KC_RCTL", "KC_LEFT", "KC_DOWN", "KC_RIGHT"
],
[
"KC_GRV", "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_UP", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_PSCR", "KC_SCRL", "KC_PAUS", "KC_TRNS",
"KC_TRNS", "KC_LEFT", "KC_DOWN", "KC_RIGHT", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_INS", "KC_END", "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", "GUI_TOG", "KC_TRNS", "KC_TRNS", "KC_TRNS", "MO(3)", "KC_TRNS", "KC_APP", "KC_TRNS", "KC_TRNS"
],
[
"KC_TRNS", "KC_MPLY", "KC_MSTP", "KC_MPRV", "KC_MNXT", "KC_VOLD", "KC_VOLU", "KC_MUTE", "KC_TRNS", "KC_TRNS", "KC_TRNS", "RGB_TOG", "RGB_MOD", "RGB_RMOD", "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", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "RGB_VAI", "KC_TRNS",
"KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "MO(3)", "KC_TRNS", "KC_TRNS", "RGB_SPD", "RGB_VAD", "RGB_SPI"
],
[
"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", "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", "RGB_SAI", "KC_TRNS",
"KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "RGB_HUD", "RGB_SAD", "RGB_HUI"
]
],
"author":"ebastler",
"notes":"derived from ANSI keymap by J-Sully",
"version":1
}

View File

@ -0,0 +1,12 @@
![Durgod Hades Layout Image](https://i.imgur.com/vsi6sdK.png)
# The via keymap for Durgod Hades.
This keymap is intended to closely follow the stock Durgod Hades layout. RGB Hue and Saturation can be changed Fn1 + Fn2 + arrow keys.
## Windows key lock
You can hold down Fn1 + Windows key to disable the Windows key while in locked mode.
The 'Lock' LED indicates if the Windows key is locked.
This is similar to the stock Hades Windows key lock functionality.

View File

@ -0,0 +1 @@
VIA_ENABLE = yes

View File

@ -0,0 +1,26 @@
# Hades
This is a standard off-the-shelf Durgod Hades 65% ISO layout keyboard with RGB matrix.
* Keyboard Maintainer: [ebastler](https://github.com/ebastler), based on the work of [J-Sully](https://github.com/J-Sully) and [dkjer](https://github.com/dkjer)
* Hardware Supported: Durgod Hades ISO board with STM32F070RBT6
* Hardware Availability: https://www.amazon.de/-/en/Durgod-Hades-Mechanical-Gaming-Keyboard/dp/B08H11BFXF
## Instructions
### Build
Make command example for this keyboard (after setting up your build environment):
make durgod/dgk6x/hades_iso:default
Flashing example for this keyboard:
make durgod/dgk6x/hades_iso:default:flash
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
### Initial Flash
Instructions for Flashing from initial Stock Firmware:
* [Initial Flashing](../readme.md#initial-flash)

View File

@ -0,0 +1 @@
# This file intentionally left blank

View File

@ -12,7 +12,8 @@ This DGK6X code is shared between the ANSI variants of Venus, Hades and Galaxy k
Instructions for building the Venus, Hades and Galaxy firmware can be found here:
* [Venus](venus/readme.md)
* [Hades](hades/readme.md)
* [Hades ANSI](hades_ansi/readme.md)
* [Hades ISO](hades_iso/readme.md)
* [Galaxy](galaxy/readme.md)
### Initial Flash

View File

@ -17,4 +17,4 @@ LTO_ENABLE = yes
RGB_MATRIX_ENABLE = yes
DEFAULT_FOLDER=durgod/dgk6x/hades
DEFAULT_FOLDER=durgod/dgk6x/hades_ansi

View File

@ -1,3 +1,3 @@
# Hades
See: [Hades](../dgk6x/hades/readme.md)
See: [Hades ANSI](../dgk6x/hades_ansi/readme.md) and [Hades ISO](../dgk6x/hades_iso/readme.md)

View File

@ -1 +0,0 @@
DEFAULT_FOLDER=durgod/dgk6x/hades

View File

@ -0,0 +1,17 @@
/* Copyright 2022 PHSC138
*
* 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
#define TAPPING_TERM 150 // Tap dance time limit

View File

@ -0,0 +1,390 @@
/* Copyright 2022 PHSC138
*
* 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
// These are all aliases for the function layers.
enum custom_layers {
_BASE,
_PROG,
_GAME,
_FN,
_FN1,
_NUM
};
// Tap Dance
typedef struct {
char is_press_action;
int state;
} tap;
enum {
SINGLE_TAP = 1,
SINGLE_HOLD = 2,
DOUBLE_TAP = 3,
DOUBLE_HOLD = 4,
DOUBLE_SINGLE_TAP = 5, // Send two single taps
TRIPLE_TAP = 6,
TRIPLE_HOLD = 7
};
// Tap dance enums
enum {
PN_SWAP = 0,
LAPO = 1,
LCPO = 2,
RAPC = 3,
RCPC = 4,
D20 = 5
};
enum custom_keycodes {
PROF_MAC = QK_USER
};
uint8_t cur_dance (tap_dance_state_t *state);
void pn_finished (tap_dance_state_t *state, void *user_data);
void pn_reset (tap_dance_state_t *state, void *user_data);
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// TREE: 'pn' to enter custom layers:
// _BASE
// _FN
// _FN1
// _NUM
// _PROG
// _PROG
// _FN
// _FN1
// _NUM
// _GAME
// _GAME
// _BASE
// Tap pn for toggle to _PROG, or hold for numpad
[_BASE] = LAYOUT_split_space(
QK_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, KC_BSPC,
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, MO(_FN1),
KC_LCTL, KC_LGUI, KC_LALT, TD(PN_SWAP), KC_SPC, KC_SPC, MO(_FN), KC_RALT, KC_APP, KC_RCTL),
// LEFT AND RIGHT SHIFT: '(' and ')' when tapped, shift when held
// LEFT AND RIGHT CTRL: '{' and '}' when tapped, ctrl when held
// LEFT AND RIGHT ALT: '[' and ']' when tapped, ctrl when held
[_PROG] = LAYOUT_split_space(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
SC_LSPO, _______, _______, _______, _______, _______, _______, _______, _______, _______, SC_RSPC, _______,
TD(LCPO), _______, TD(LAPO), TO(_GAME), _______, _______, _______, TD(RAPC), _______, TD(RCPC)),
// Macro for right space is bhop
// Maco for 'fn' is move forward
// Macro for 'fn1' is spin constantly
// Macro for right shift is D20
[_GAME] = LAYOUT_split_space(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, TD(D20), XXXXXXX,
_______, _______, _______, TO(_BASE), _______, XXXXXXX, XXXXXXX, _______, XXXXXXX, _______),
[_FN] = LAYOUT_split_space(
_______, KC_VOLD, KC_VOLU, KC_MUTE, QK_RBT, _______, KC_CALC, KC_PGUP, _______, KC_PGDN, KC_PSCR, KC_SCRL, KC_PAUS,
KC_CAPS, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_INS, _______,
_______, _______, _______, _______, _______, KC_HOME, KC_END, BL_TOGG, BL_DOWN, BL_UP, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
[_FN1] = LAYOUT_split_space(
KC_GRV, 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_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL,
_______, _______, _______, _______, _______, KC_QUOT, KC_SLSH, KC_LBRC, KC_RBRC, KC_BSLS, KC_RSFT, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
[_NUM] = LAYOUT_split_space(
_______, _______, _______, _______, _______, _______, KC_7, KC_8, KC_9, _______, PROF_MAC, _______, _______,
_______, _______, _______, _______, _______, _______, KC_4, KC_5, KC_6, _______, _______, _______,
_______, _______, _______, _______, _______, KC_1, KC_2, KC_3, KC_DOT, _______, _______, _______,
_______, _______, _______, _______, _______, KC_0, _______, _______, DB_TOGG, QK_BOOT),
};
/*--- Profile Macro ---*/
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case PROF_MAC:
if (record->event.pressed) {
// When keycode PROF_MAC is pressed
SEND_STRING("if [ $shell = 'zsh' ]; then echo \"echo \"Lock your computer -PHSC138\"\" >> ~/.zshrc\nclear; else echo \"echo \"Lock your computer -PHSC138\"\" >> ~/.profile\nclear; fi\n");
} else {
// When keycode QMKBEST is released
}
break;
}
return true;
};
/*--- End Profile Macro ---*/
/* Return an integer that corresponds to what kind of tap dance should be executed.
*
* How to figure out tap dance state: interrupted and pressed.
*
* Interrupted: If the state of a dance dance is "interrupted", that means that another key has been hit
* under the tapping term. This is typically indicitive that you are trying to "tap" the key.
*
* Pressed: Whether or not the key is still being pressed. If this value is true, that means the tapping term
* has ended, but the key is still being pressed down. This generally means the key is being "held".
*
* One thing that is currenlty not possible with qmk software in regards to tap dance is to mimic the "permissive hold"
* feature. In general, advanced tap dances do not work well if they are used with commonly typed letters.
* For example "A". Tap dances are best used on non-letter keys that are not hit while typing letters.
*
* Good places to put an advanced tap dance:
* z,q,x,j,k,v,b, any function key, home/end, comma, semi-colon
*
* Criteria for "good placement" of a tap dance key:
* Not a key that is hit frequently in a sentence
* Not a key that is used frequently to double tap, for example 'tab' is often double tapped in a terminal, or
* in a web form. So 'tab' would be a poor choice for a tap dance.
* Letters used in common words as a double. For example 'p' in 'pepper'. If a tap dance function existed on the
* letter 'p', the word 'pepper' would be quite frustating to type.
*
* For the third point, there does exist the 'DOUBLE_SINGLE_TAP', however this is not fully tested
*
*/
uint8_t cur_dance(tap_dance_state_t *state) {
if(state->count == 1) {
if(state->interrupted || !state->pressed) return SINGLE_TAP;
//key has not been interrupted, but they key is still held. Means you want to send a 'HOLD'.
else return SINGLE_HOLD;
} else if(state->count == 2) {
/*
* DOUBLE_SINGLE_TAP is to distinguish between typing "pepper", and actually wanting a double tap
* action when hitting 'pp'. Suggested use case for this return value is when you want to send two
* keystrokes of the key, and not the 'double tap' action/macro.
*/
if(state->interrupted) return DOUBLE_SINGLE_TAP;
else if(state->pressed) return DOUBLE_HOLD;
else return DOUBLE_TAP;
}
//Assumes no one is trying to type the same letter three times (at least not quickly).
//If your tap dance key is 'KC_W', and you want to type "www." quickly - then you will need to add
//an exception here to return a 'TRIPLE_SINGLE_TAP', and define that enum just like 'DOUBLE_SINGLE_TAP'
if(state->count == 3) {
if(state->interrupted || !state->pressed) return TRIPLE_TAP;
else return TRIPLE_HOLD;
}
else return 8; //magic number. At some point this method will expand to work for more presses
}
//instanalize an instance of 'tap' for the 'pn' tap dance.
static tap pn_tap_state = {
.is_press_action = 1,
.state = 0
};
void pn_finished(tap_dance_state_t *state, void *user_data) {
pn_tap_state.state = cur_dance(state);
switch(pn_tap_state.state) {
case SINGLE_TAP: layer_on(_PROG); break;
case SINGLE_HOLD: layer_on(_NUM); break;
//case DOUBLE_TAP: register_code(KC_ESC); break;
//case DOUBLE_HOLD: register_code(KC_LALT); break;
//case DOUBLE_SINGLE_TAP: register_code(KC_X); unregister_code(KC_X); register_code(KC_X);
//Last case is for fast typing. Assuming your key is `f`:
//For example, when typing the word `buffer`, and you want to make sure that you send `ff` and not `Esc`.
//In order to type `ff` when typing fast, the next character will have to be hit within the `TAPPING_TERM`, which by default is 200ms.
}
}
void pn_reset(tap_dance_state_t *state, void *user_data) {
switch(pn_tap_state.state) {
//case SINGLE_TAP: unregister_code(KC_X); break;
case SINGLE_HOLD: layer_off(_NUM); break;
//case DOUBLE_TAP: unregister_code(KC_ESC); break;
//case DOUBLE_HOLD: unregister_code(KC_LALT);
//case DOUBLE_SINGLE_TAP: unregister_code(KC_X);
}
pn_tap_state.state = 0;
}
static tap lalt_tap_state = {
.is_press_action = 1,
.state = 0
};
void lalt_finished(tap_dance_state_t *state, void *user_data) {
lalt_tap_state.state = cur_dance(state);
switch(lalt_tap_state.state) {
case SINGLE_TAP: register_code(KC_LBRC); break;
case SINGLE_HOLD: register_code(KC_LALT); break;
}
}
void lalt_reset(tap_dance_state_t *state, void *user_data) {
switch(lalt_tap_state.state) {
case SINGLE_TAP: unregister_code(KC_LBRC); break;
case SINGLE_HOLD: unregister_code(KC_LALT); break;
}
lalt_tap_state.state = 0;
}
static tap ralt_tap_state = {
.is_press_action = 1,
.state = 0
};
void ralt_finished(tap_dance_state_t *state, void *user_data) {
ralt_tap_state.state = cur_dance(state);
switch(ralt_tap_state.state) {
case SINGLE_TAP: register_code(KC_RBRC); break;
case SINGLE_HOLD: register_code(KC_RALT); break;
}
}
void ralt_reset(tap_dance_state_t *state, void *user_data) {
switch(ralt_tap_state.state) {
case SINGLE_TAP: unregister_code(KC_RBRC); break;
case SINGLE_HOLD: unregister_code(KC_RALT); break;
}
ralt_tap_state.state = 0;
}
static tap rctl_tap_state = {
.is_press_action = 1,
.state = 0
};
void rctl_finished(tap_dance_state_t *state, void *user_data) {
rctl_tap_state.state = cur_dance(state);
switch(rctl_tap_state.state) {
case SINGLE_TAP: register_code(KC_RSFT); register_code(KC_RBRC); break;
case SINGLE_HOLD: register_code(KC_RCTL); break;
}
}
void rctl_reset(tap_dance_state_t *state, void *user_data) {
switch(rctl_tap_state.state) {
case SINGLE_TAP: unregister_code(KC_RSFT); unregister_code(KC_RBRC); break;
case SINGLE_HOLD: unregister_code(KC_RCTL); break;
}
rctl_tap_state.state = 0;
}
static tap lctl_tap_state = {
.is_press_action = 1,
.state = 0
};
void lctl_finished(tap_dance_state_t *state, void *user_data) {
lctl_tap_state.state = cur_dance(state);
switch(lctl_tap_state.state) {
case SINGLE_TAP: register_code(KC_LSFT); register_code(KC_LBRC); break;
case SINGLE_HOLD: register_code(KC_LCTL); break;
}
}
void lctl_reset(tap_dance_state_t *state, void *user_data) {
switch(lctl_tap_state.state) {
case SINGLE_TAP: unregister_code(KC_LSFT); unregister_code(KC_LBRC); break;
case SINGLE_HOLD: unregister_code(KC_LCTL); break;
}
lctl_tap_state.state = 0;
}
static tap d20_tap_state = {
.is_press_action = 1,
.state = 0,
};
int d20_srand = 0;
uint32_t timer_seed;
void d20_finished(tap_dance_state_t *state, void *user_data) {
d20_tap_state.state = cur_dance(state);
switch(d20_tap_state.state) {
case SINGLE_HOLD: {
if(d20_srand == 0){
timer_seed = timer_read32();
srand((unsigned int)timer_seed);
d20_srand = 1;
}
SEND_STRING("Seed: ");
// uint32_t has max size of 4294967296
char SEED_STR_SIZE = 16;
// Initialize seed_str
char seed_str[SEED_STR_SIZE];
for (int iter=0;iter < SEED_STR_SIZE;iter++) seed_str[iter] = 0;
int i = SEED_STR_SIZE - 2; // Leave null byte on end of string
while (timer_seed && i >= 0) {
seed_str[i] = timer_seed % 10 + '0';
timer_seed /= 10;
i -= 1;
}
i++;
// Move all characters over i spaces
char move = i;
while (i < SEED_STR_SIZE -1) {
seed_str[i-move] = seed_str[i];
seed_str[i] = 0;
i += 1;
}
send_string(seed_str);
break;
// Else allow fall through
}
case SINGLE_TAP: {
if(d20_srand == 0){
timer_seed = timer_read();
srand((unsigned int)timer_seed);
d20_srand = 1;
}
unsigned char roll = rand() % 20 + 1;
char res[3];
res[0] = (char)((char)(roll / 10) + '0');
res[1] = (char)(roll % 10 + '0');
send_string(res);
break;
}
}
}
void d20_reset(tap_dance_state_t *state, void *user_data) {
d20_tap_state.state = 0;
}
tap_dance_action_t tap_dance_actions[] = {
[PN_SWAP] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, pn_finished, pn_reset),
[LAPO] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, lalt_finished, lalt_reset),
[RAPC] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ralt_finished, ralt_reset),
[LCPO] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, lctl_finished, lctl_reset),
[RCPC] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, rctl_finished, rctl_reset),
[D20] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, d20_finished, d20_reset),
};

View File

@ -0,0 +1,18 @@
# PHSC138's Layout for the atom47
## Base layer
The base layer is a standard vortex core layout
## Layer 1 (PROG)
This layer contains space cadet bindings to make programming easier. Ex: tapping left shift will input an open parenthesis
## Layer 2 (GAME)
This layer contains game specific macros, currently only a D20 has been implemented
## Layer 3 (FN)
This can be activated by pressing the `fn` key. This layer contains mostly the same bindings as the base vortex core except vim keybinds have replaced the arrow keys.
## Layer 4 (FN1)
This can be activated by pressing the `fn1` key. This is the default vortex core layer.
## Layer 5 (NUM)
This is a numpad that can be activated by holding the PN key. This also has some useful keys, such as `QC_BOOT`.

View File

@ -0,0 +1,3 @@
MOUSEKEY_ENABLE = no
NKRO_ENABLE = yes
TAP_DANCE_ENABLE = yes