Skip to content

Commit

Permalink
[Keyboard] Add Durgod Hades, Galaxy and Venus Keyboards (qmk#12893)
Browse files Browse the repository at this point in the history
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Don Kjer <don.kjer@gmail.com>
  • Loading branch information
3 people authored and nhongooi committed Dec 5, 2021
1 parent 2ffed59 commit fa68da9
Show file tree
Hide file tree
Showing 46 changed files with 1,896 additions and 0 deletions.
93 changes: 93 additions & 0 deletions keyboards/durgod/dgk6x/config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
/* 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

#include "config_common.h"

/* USB Device descriptor parameter */
#define VENDOR_ID 0xD60D
#define MANUFACTURER Hoksi Technology

/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL

// Dynamic EEPROM
// Something sensible or else VIA may crash
// Users may enable more if they wish
#define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 4095

// Increase VIA layer count
#define DYNAMIC_KEYMAP_LAYER_COUNT 16

/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 5

/* Bootmagic Lite key configuration */
#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
#define BOOTMAGIC_LITE_ROW 0
#define BOOTMAGIC_LITE_COLUMN 0

/* LED indicator pins */
#define LED_CAPS_LOCK_PIN C4
#define LED_WIN_LOCK_PIN C5
#define LED_SCROLL_LOCK_PIN A8
#define LED_MR_LOCK_PIN LED_SCROLL_LOCK_PIN
#define LED_PIN_ON_STATE 0

#ifdef RGB_MATRIX_ENABLE
// This is a 7-bit address, that gets left-shifted and bit 0
// set to 0 for write, 1 for read (as per I2C protocol)
// The address will vary depending on your wiring:
// 00 <-> GND
// 01 <-> SCL
// 10 <-> SDA
// 11 <-> VCC
// ADDR1 represents A1:A0 of the 7-bit address.
// ADDR2 represents A3:A2 of the 7-bit address.
// The result is: 0b101(ADDR2)(ADDR1)

#define DRIVER_ADDR_1 0b1010000
#define DRIVER_ADDR_2 0b1010011

#define DRIVER_COUNT 2
#define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)

/* I2C Alternate function settings */
#define I2C1_SCL_PAL_MODE 1
#define I2C1_SDA_PAL_MODE 1

/* Set I2C speed to 400kHz, 300ns Tr, 14ns Tf */
#define I2C1_TIMINGR_PRESC 0x1U
#define I2C1_TIMINGR_SCLDEL 0x9U
#define I2C1_TIMINGR_SDADEL 0x0U
#define I2C1_TIMINGR_SCLH 0x0cU
#define I2C1_TIMINGR_SCLL 0x22U

#define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
#define RGB_MATRIX_KEYPRESSES
#define RGB_MATRIX_LED_PROCESS_LIMIT 4
#define RGB_MATRIX_LED_FLUSH_LIMIT 26

#define DISABLE_RGB_MATRIX_HUE_BREATHING
#define DISABLE_RGB_MATRIX_HUE_PENDULUM
#define DISABLE_RGB_MATRIX_HUE_WAVE

// This allows VIA to control RGB Matrix settings in the 'Lighting' section.
#define VIA_QMK_RGBLIGHT_ENABLE

#endif /* RGB_MATRIX_ENABLE */
73 changes: 73 additions & 0 deletions keyboards/durgod/dgk6x/dgk6x.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
/* 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 "dgk6x.h"

/* Private Functions */
void off_all_leds(void) {
writePinHigh(LED_CAPS_LOCK_PIN);
writePinHigh(LED_WIN_LOCK_PIN);
writePinHigh(LED_MR_LOCK_PIN);
}

void on_all_leds(void) {
writePinLow(LED_CAPS_LOCK_PIN);
writePinLow(LED_WIN_LOCK_PIN);
writePinLow(LED_MR_LOCK_PIN);
}

/* WinLock and MR LEDs are non-standard. Need to override led init */
void led_init_ports(void) {
setPinOutput(LED_CAPS_LOCK_PIN);
setPinOutput(LED_WIN_LOCK_PIN);
setPinOutput(LED_MR_LOCK_PIN);
off_all_leds();
}


#ifndef WINLOCK_DISABLED
static bool win_key_locked = false;

bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case KC_TGUI:
if (record->event.pressed) {
// Toggle GUI lock on key press
win_key_locked = !win_key_locked;
writePin(LED_WIN_LOCK_PIN, !win_key_locked);
}
break;
case KC_LGUI:
if (win_key_locked) { return false; }
break;
}
return process_record_user(keycode, record);
}
#endif /* WINLOCK_DISABLED */

#ifdef RGB_MATRIX_ENABLE

__attribute__ ((weak))
void rgb_matrix_indicators_user(void)
{
if (host_keyboard_led_state().caps_lock)
{
rgb_matrix_set_color(CAPS_LED, 0xFF, 0xFF, 0xFF);
}
}
#endif /* RGB_MATRIX_ENABLE */


47 changes: 47 additions & 0 deletions keyboards/durgod/dgk6x/dgk6x.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
/* 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

#include "quantum.h"

#ifdef KEYBOARD_durgod_dgk6x_hades
# include "hades.h"
#elif defined KEYBOARD_durgod_dgk6x_venus
# include "venus.h"
#elif defined KEYBOARD_durgod_dgk6x_galaxy
# include "galaxy.h"
#endif

#ifndef WINLOCK_DISABLED
// Define the TGUI key here so it is available in QMK configurator
enum DGK6X_keycodes {
#ifdef VIA_ENABLE
KC_TGUI = USER00, // Toggle between GUI Lock or Unlock
NEW_SAFE_RANGE = SAFE_RANGE
#else
KC_TGUI = SAFE_RANGE, // Toggle between GUI Lock or Unlock
NEW_SAFE_RANGE
#endif
};

#undef SAFE_RANGE
#define SAFE_RANGE NEW_SAFE_RANGE
#endif /* WINLOCK_DISABLED */

/* Function Prototype */
void off_all_leds(void);
void on_all_leds(void);

37 changes: 37 additions & 0 deletions keyboards/durgod/dgk6x/galaxy/config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
/* Copyright 2021 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

#include "config_common.h"

/* USB Device descriptor parameter */
#define PRODUCT_ID 0x6A1A
#define DEVICE_VER 0x0001
#define PRODUCT Galaxy 84 HK gaming x DURGOD (QMK)

/* key matrix rows */
#define MATRIX_ROWS 6
#define MATRIX_ROW_PINS { A0, A1, A2, A3, A4, A5 }

/* key matrix columns */
#define MATRIX_COLS 16
#define MATRIX_COL_PINS { B0, B1, B2, B10, B11, B12, B13, B14, B15, C6, C7, C8, C9, C10, C11, C12 }

#ifdef RGB_MATRIX_ENABLE
#define DRIVER_1_LED_TOTAL 58
#define DRIVER_2_LED_TOTAL 26
#endif
142 changes: 142 additions & 0 deletions keyboards/durgod/dgk6x/galaxy/galaxy.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,142 @@
/* Copyright 2021 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 "galaxy.h"

#ifdef RGB_MATRIX_ENABLE

const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
/* 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}, // F1
{0, C_3, B_3, A_3}, // F2
{0, C_4, B_4, A_4}, // F3
{0, C_5, B_5, A_5}, // F4
{0, C_6, B_6, A_6}, // F5
{0, C_7, B_7, A_7}, // F6
{0, C_8, B_8, A_8}, // F7
{0, C_9, B_9, A_9}, // F8
{0, C_10, B_10, A_10}, // F9
{0, C_11, B_11, A_11}, // F10
{0, C_12, B_12, A_12}, // F11
{0, C_13, B_13, A_13}, // F12
{0, C_14, B_14, A_14}, // PrtSc
{0, C_15, B_15, A_15}, // Pause
{0, C_16, B_16, A_16}, // Del

{0, F_1, E_1, D_1}, // `
{0, F_2, E_2, D_2}, // 1
{0, F_3, E_3, D_3}, // 2
{0, F_4, E_4, D_4}, // 3
{0, F_5, E_5, D_5}, // 4
{0, F_6, E_6, D_6}, // 5
{0, F_7, E_7, D_7}, // 6
{0, F_8, E_8, D_8}, // 7
{0, F_9, E_9, D_9}, // 8
{0, F_10, E_10, D_10}, // 9
{0, F_11, E_11, D_11}, // 0
{0, F_12, E_12, D_12}, // -
{0, F_13, E_13, D_13}, // =
{0, F_14, E_14, D_14}, // Bksp
{0, F_15, E_15, D_15}, // Home

{0, I_1, H_1, G_1}, // Tab
{0, I_2, H_2, G_2}, // Q
{0, I_3, H_3, G_3}, // W
{0, I_4, H_4, G_4}, // E
{0, I_5, H_5, G_5}, // R
{0, I_6, H_6, G_6}, // T
{0, I_7, H_7, G_7}, // Y
{0, I_8, H_8, G_8}, // U
{0, I_9, H_9, G_9}, // I
{0, I_10, H_10, G_10}, // O
{0, I_11, H_11, G_11}, // P
{0, I_12, H_12, G_12}, // [
{0, I_13, H_13, G_13}, // ]
{0, I_14, H_14, G_14}, // Pipe
{0, I_15, H_15, G_15}, // End

{0, L_1, K_1, J_1}, // Caps
{0, L_2, K_2, J_2}, // A
{0, L_3, K_3, J_3}, // S
{0, L_4, K_4, J_4}, // D
{0, L_5, K_5, J_5}, // F
{0, L_6, K_6, J_6}, // G
{0, L_7, K_7, J_7}, // H
{0, L_8, K_8, J_8}, // J
{0, L_9, K_9, J_9}, // K
{0, L_10, K_10, J_10}, // L
{0, L_11, K_11, J_11}, // :
{0, L_12, K_12, J_12}, // '
{0, L_14, K_14, J_14}, // Enter
{0, L_15, K_15, J_15}, // PgUp

{1, C_1, B_1, A_1}, // LShift
{1, C_3, B_3, A_3}, // Z
{1, C_4, B_4, A_4}, // X
{1, C_5, B_5, A_5}, // C
{1, C_6, B_6, A_6}, // V
{1, C_7, B_7, A_7}, // B
{1, C_8, B_8, A_8}, // N
{1, C_9, B_9, A_9}, // M
{1, C_10, B_10, A_10}, // <
{1, C_11, B_11, A_11}, // >
{1, C_12, B_12, A_12}, // ?
{1, C_13, B_13, A_13}, // RShift
{1, C_14, B_14, A_14}, // Up
{1, C_15, B_15, A_15}, // PgDn

{1, F_1, E_1, D_1}, // LCtrl
{1, F_2, E_2, D_2}, // LAlt
{1, F_3, E_3, D_3}, // LGUI
{1, F_7, E_7, D_7}, // Space
{1, F_10, E_10, D_10}, // RAlt
{1, F_11, E_11, D_11}, // Fn1
{1, F_12, E_12, D_12}, // Fn2
{1, F_13, E_13, D_13}, // Left
{1, F_14, E_14, D_14}, // Down
{1, F_15, E_15, D_15} // Right
};

led_config_t g_led_config = {{
{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 },
{ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, NO_LED },
{ 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, NO_LED },
{ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, NO_LED, 58, 59, NO_LED },
{ 60, NO_LED, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, NO_LED },
{ 74, 75, 76, NO_LED, NO_LED, NO_LED, 77, NO_LED, NO_LED, 78, 79, 80, 81, 82, 83, NO_LED }
}, {
{ 0, 0 }, { 16, 0 }, { 32, 0 }, { 48, 0 }, { 64, 0 }, { 80, 0 }, { 96, 0 }, { 112, 0 }, { 128, 0 }, { 144, 0 }, { 160, 0 }, { 176, 0 }, { 192, 0 }, { 208, 0 }, { 224, 0 }, { 240, 0 },
{ 0, 13 }, { 16, 13 }, { 32, 13 }, { 48, 13 }, { 64, 13 }, { 80, 13 }, { 96, 13 }, { 112, 13 }, { 128, 13 }, { 144, 13 }, { 160, 13 }, { 176, 13 }, { 192, 13 }, { 216, 13 }, { 240, 13 },
{ 4, 26 }, { 24, 26 }, { 40, 26 }, { 56, 26 }, { 72, 26 }, { 88, 26 }, { 104, 26 }, { 120, 26 }, { 136, 26 }, { 152, 26 }, { 168, 26 }, { 184, 26 }, { 200, 26 }, { 220, 26 }, { 240, 26 },
{ 6, 38 }, { 28, 38 }, { 44, 38 }, { 60, 38 }, { 76, 38 }, { 92, 38 }, { 108, 38 }, { 124, 38 }, { 140, 38 }, { 156, 38 }, { 172, 38 }, { 188, 38 }, { 214, 38 }, { 240, 38 },
{ 10, 51 }, { 36, 51 }, { 52, 51 }, { 68, 51 }, { 84, 51 }, { 100, 51 }, { 116, 51 }, { 132, 51 }, { 148, 51 }, { 164, 51 }, { 180, 51 }, { 202, 51 }, { 224, 51 }, { 240, 51 },
{ 2, 64 }, { 22, 64 }, { 42, 64 }, { 101, 64 }, { 160, 64 }, { 176, 64 }, { 192, 64 }, { 208, 64 }, { 224, 64 }, { 240, 64 }
}, {
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4,
1, 1, 1, 4, 1, 1, 1, 4, 4, 4
}};
#endif /* RGB_MATRIX_ENABLE */
Loading

0 comments on commit fa68da9

Please sign in to comment.