Skip to content

Commit

Permalink
Convert ergodone to use core mcp23018 driver
Browse files Browse the repository at this point in the history
  • Loading branch information
zvecr committed May 29, 2022
1 parent e22a183 commit 97a0e72
Show file tree
Hide file tree
Showing 12 changed files with 653 additions and 789 deletions.
77 changes: 4 additions & 73 deletions keyboards/ktec/ergodone/config.h
Original file line number Diff line number Diff line change
@@ -1,77 +1,8 @@
#pragma once

#include "config_common.h"
// Copyright 2022 QMK
// SPDX-License-Identifier: GPL-2.0-or-later

/* USB Device descriptor parameter */
#define VENDOR_ID 0x1209
#define PRODUCT_ID 0x2328
// The official ErgoDone VID and PID are documented at http://pid.codes/1209/2328/.
#define DEVICE_VER 0x0001
#define MANUFACTURER K.T.E.C.
#define PRODUCT ErgoDone
#pragma once

/* key matrix size */
// TODO: handle matrix_size.cols and matrix_size.rows for custom matrix
#define MATRIX_ROWS 6
#define MATRIX_COLS 14

#define MOUSEKEY_INTERVAL 20
#define MOUSEKEY_DELAY 0
#define MOUSEKEY_TIME_TO_MAX 60
#define MOUSEKEY_MAX_SPEED 7
#define MOUSEKEY_WHEEL_DELAY 0

#define TAPPING_TOGGLE 1

/* define if matrix has ghost */
//#define MATRIX_HAS_GHOST

#define TAPPING_TERM 200
#define IGNORE_MOD_TAP_INTERRUPT // this makes it possible to do rolling combos (zx) with keys that convert to other keys on hold (z becomes ctrl when you hold it, and when this option isn't enabled, z rapidly followed by x actually sends Ctrl-x. That's bad.)

/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE

/* key combination for command */
#define IS_COMMAND() ( \
get_mods() == (MOD_BIT(KC_LCTL) | MOD_BIT(KC_RCTL)) || \
get_mods() == (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)) \
)

/* number of backlight levels */
#define BACKLIGHT_LEVELS 3

#define LED_BRIGHTNESS_LO 15
#define LED_BRIGHTNESS_HI 255

/* fix space cadet rollover issue */
#define DISABLE_SPACE_CADET_ROLLOVER

/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5

#define USB_MAX_POWER_CONSUMPTION 500

/* NKRO */
#ifndef FORCE_NKRO
#define FORCE_NKRO // Depends on NKRO_ENABLE.
#endif

/*
* Feature disable options
* These options are also useful to firmware size reduction.
*/

/* disable debug print */
// #define NO_DEBUG

/* disable print */
// #define NO_PRINT

/* disable action features */
//#define NO_ACTION_LAYER
//#define NO_ACTION_TAPPING
//#define NO_ACTION_ONESHOT

//#define DEBUG_MATRIX_SCAN_RATE
57 changes: 7 additions & 50 deletions keyboards/ktec/ergodone/ergodone.c
Original file line number Diff line number Diff line change
@@ -1,54 +1,11 @@
#include "ergodone.h"

extern inline void ergodox_board_led_on(void);
extern inline void ergodox_right_led_1_on(void);
extern inline void ergodox_right_led_2_on(void);
extern inline void ergodox_right_led_3_on(void);
extern inline void ergodox_right_led_on(uint8_t led);

extern inline void ergodox_board_led_off(void);
extern inline void ergodox_right_led_1_off(void);
extern inline void ergodox_right_led_2_off(void);
extern inline void ergodox_right_led_3_off(void);
extern inline void ergodox_right_led_off(uint8_t led);

extern inline void ergodox_led_all_off(void);
// Copyright 2022 QMK
// SPDX-License-Identifier: GPL-2.0-or-later

void ergodox_led_init(void);
void ergodox_blink_all_leds(void);

void matrix_init_kb(void) {
ergodox_led_init();
ergodox_blink_all_leds();
matrix_init_user();
}
#include "ergodone.h"

void ergodox_led_init(void)
{
DDRB |= (1<<PB5 | 1<<PB6 | 1<<PB3);
PORTB &= ~(1<<PB5 | 1<<PB6 | 1<<PB3);
DDRB |= (1<<PB0);
PORTB |= (1<<PB0);
DDRD |= (1<<PB5);
PORTD |= (1<<PB5);
}
#include "ergodox_compat.h"
void keyboard_post_init_kb(void) {
ergodox_blink_all_leds();

void ergodox_blink_all_leds(void)
{
ergodox_led_all_off();
ergodox_led_all_set(LED_BRIGHTNESS_HI);
ergodox_right_led_1_on();
_delay_ms(50);
ergodox_right_led_2_on();
_delay_ms(50);
ergodox_right_led_3_on();
_delay_ms(50);
ergodox_right_led_1_off();
_delay_ms(50);
ergodox_right_led_2_off();
_delay_ms(50);
ergodox_right_led_3_off();
//ergodox_led_all_on();
//_delay_ms(333);
ergodox_led_all_off();
keyboard_post_init_user();
}
158 changes: 6 additions & 152 deletions keyboards/ktec/ergodone/ergodone.h
Original file line number Diff line number Diff line change
@@ -1,156 +1,10 @@
// Copyright 2022 QMK
// SPDX-License-Identifier: GPL-2.0-or-later

#pragma once

#include "quantum.h"
#include <stdint.h>
#include <stdbool.h>

void init_ergodox(void);

inline void ergodox_right_led_1_off(void) { DDRB &= ~(1<<PB5); PORTB &= ~(1<<PB5); }
inline void ergodox_right_led_1_on(void) { DDRB |= (1<<PB5); PORTB |= (1<<PB5); }
inline void ergodox_right_led_2_off(void) { DDRB &= ~(1<<PB6); PORTB &= ~(1<<PB6); }
inline void ergodox_right_led_2_on(void) { DDRB |= (1<<PB6); PORTB |= (1<<PB6); }
inline void ergodox_right_led_3_off(void) { DDRB &= ~(1<<PB3); PORTB &= ~(1<<PB3); }
inline void ergodox_right_led_3_on(void) { DDRB |= (1<<PB3); PORTB |= (1<<PB3); }
inline void ergodox_right_led_on(uint8_t l) {
switch (l) {
case 1:
ergodox_right_led_1_on();
break;
case 2:
ergodox_right_led_2_on();
break;
case 3:
ergodox_right_led_3_on();
break;
default:
break;
}
}

inline void ergodox_right_led_off(uint8_t l) {
switch (l) {
case 1:
ergodox_right_led_1_off();
break;
case 2:
ergodox_right_led_2_off();
break;
case 3:
ergodox_right_led_3_off();
break;
default:
break;
}
}
inline void ergodox_board_led_off(void) { DDRB &= ~(1<<PB0); PORTB |= (1<<PB0); }
inline void ergodox_board_led_on(void) { DDRB |= (1<<PB0); PORTB &= ~(1<<PB0); }
inline void ergodox_led_all_on(void) {
ergodox_right_led_1_on();
ergodox_right_led_2_on();
ergodox_right_led_3_on();
ergodox_board_led_on();
}
inline void ergodox_led_all_off(void) {
ergodox_right_led_1_off();
ergodox_right_led_2_off();
ergodox_right_led_3_off();
ergodox_board_led_off();
}
inline void ergodox_right_led_1_set(uint8_t n) {}
inline void ergodox_right_led_2_set(uint8_t n) {}
inline void ergodox_right_led_3_set(uint8_t n) {}
inline void ergodox_right_led_set(uint8_t l, uint8_t n) {}
inline void ergodox_led_all_set(uint8_t n) {}

#define XXX KC_NO

#define LAYOUT_ergodox( \
k00, k01, k02, k03, k04, k05, k06, \
k10, k11, k12, k13, k14, k15, k16, \
k20, k21, k22, k23, k24, k25, \
k30, k31, k32, k33, k34, k35, k36, \
k40, k41, k42, k43, k44, \
k55, k56, \
k54, \
k53, k52, k51, \
\
k07, k08, k09, k0A, k0B, k0C, k0D, \
k17, k18, k19, k1A, k1B, k1C, k1D, \
k28, k29, k2A, k2B, k2C, k2D, \
k37, k38, k39, k3A, k3B, k3C, k3D, \
k49, k4A, k4B, k4C, k4D, \
k57, k58, \
k59, \
k5C, k5B, k5A \
) { \
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D }, \
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D }, \
{ k20, k21, k22, k23, k24, k25, XXX, XXX, k28, k29, k2A, k2B, k2C, k2D }, \
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D }, \
{ k40, k41, k42, k43, k44, XXX, XXX, XXX, XXX, k49, k4A, k4B, k4C, k4D }, \
{ XXX, k51, k52, k53, k54, k55, k56, k57, k58, k59, k5A, k5B, k5C, XXX } \
}

#define LAYOUT_ergodox_80( \
k00, k01, k02, k03, k04, k05, k06, \
k10, k11, k12, k13, k14, k15, k16, \
k20, k21, k22, k23, k24, k25, \
k30, k31, k32, k33, k34, k35, k36, \
k40, k41, k42, k43, k44, \
k55, k56, \
k45, k46, k54, \
k53, k52, k51, \
\
k07, k08, k09, k0A, k0B, k0C, k0D, \
k17, k18, k19, k1A, k1B, k1C, k1D, \
k28, k29, k2A, k2B, k2C, k2D, \
k37, k38, k39, k3A, k3B, k3C, k3D, \
k49, k4A, k4B, k4C, k4D, \
k57, k58, \
k59, k47, k48, \
k5C, k5B, k5A \
) { \
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D }, \
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D }, \
{ k20, k21, k22, k23, k24, k25, XXX, XXX, k28, k29, k2A, k2B, k2C, k2D }, \
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D }, \
{ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D }, \
{ XXX, k51, k52, k53, k54, k55, k56, k57, k58, k59, k5A, k5B, k5C, XXX } \
}

#define LAYOUT_ergodox_pretty( \
L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \
L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, \
L20, L21, L22, L23, L24, L25, R21, R22, R23, R24, R25, R26, \
L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, R36, \
L40, L41, L42, L43, L44, R42, R43, R44, R45, R46, \
L55, L56, R50, R51, \
L54, R52, \
L53, L52, L51, R55, R54, R53 \
) { \
{ L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06 }, \
{ L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16 }, \
{ L20, L21, L22, L23, L24, L25, XXX, XXX, R21, R22, R23, R24, R25, R26 }, \
{ L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, R36 }, \
{ L40, L41, L42, L43, L44, XXX, XXX, XXX, XXX, R42, R43, R44, R45, R46 }, \
{ XXX, L51, L52, L53, L54, L55, L56, R50, R51, R52, R53, R54, R55, XXX } \
}
#include "layouts.h" // Ensure access to info.json layouts

#define LAYOUT_ergodox_pretty_80( \
L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \
L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, \
L20, L21, L22, L23, L24, L25, R21, R22, R23, R24, R25, R26, \
L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, R36, \
L40, L41, L42, L43, L44, R42, R43, R44, R45, R46, \
L55, L56, R50, R51, \
L45, L46, L54, R52, R40, R41, \
L53, L52, L51, R55, R54, R53 \
) { \
{ L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06 }, \
{ L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16 }, \
{ L20, L21, L22, L23, L24, L25, XXX, XXX, R21, R22, R23, R24, R25, R26 }, \
{ L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, R36 }, \
{ L40, L41, L42, L43, L44, L45, L46, R40, R41, R42, R43, R44, R45, R46 }, \
{ XXX, L51, L52, L53, L54, L55, L56, R50, R51, R52, R53, R54, R55, XXX } \
}
// This file only exists to pull in....
#include "ergodox_compat.h"
Loading

0 comments on commit 97a0e72

Please sign in to comment.