summaryrefslogtreecommitdiff
path: root/keyboards/ergodox_ez
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/ergodox_ez')
-rw-r--r--keyboards/ergodox_ez/config.h14
-rw-r--r--keyboards/ergodox_ez/ergodox_ez.c187
-rw-r--r--keyboards/ergodox_ez/ergodox_ez.h6
-rw-r--r--keyboards/ergodox_ez/glow/glow.h3
-rw-r--r--keyboards/ergodox_ez/glow/rules.mk2
-rw-r--r--keyboards/ergodox_ez/info.json5
-rw-r--r--keyboards/ergodox_ez/keymaps/default/keymap.c252
-rw-r--r--keyboards/ergodox_ez/matrix.c1
-rw-r--r--keyboards/ergodox_ez/rules.mk19
-rw-r--r--keyboards/ergodox_ez/shine/config.h3
-rw-r--r--keyboards/ergodox_ez/shine/shine.h3
-rwxr-xr-x[-rw-r--r--]keyboards/ergodox_ez/util/compile_keymap.py5
-rw-r--r--keyboards/ergodox_ez/util/readme.md8
13 files changed, 234 insertions, 274 deletions
diff --git a/keyboards/ergodox_ez/config.h b/keyboards/ergodox_ez/config.h
index 65d307d28c..5fdc4e5f19 100644
--- a/keyboards/ergodox_ez/config.h
+++ b/keyboards/ergodox_ez/config.h
@@ -24,11 +24,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* USB Device descriptor parameter */
#define VENDOR_ID 0x3297
-#define PRODUCT_ID 0x4974
#define DEVICE_VER 0x0001
-#define MANUFACTURER ZSA Technology Labs Inc
+#define MANUFACTURER ZSA Technology Labs
+#define PRODUCT_ID 0x4974
#define PRODUCT ErgoDox EZ
-#define WEBUSB_LANDING_PAGE_URL u8"configure.ergodox-ez.com"
/* key matrix size */
#define MATRIX_ROWS 14
@@ -44,7 +43,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_EXPANDER_COL_PINS { 5, 4, 3, 2, 1, 0 }
#define MATRIX_EXPANDER_ROW_PINS { 0, 1, 2, 3, 4, 5, 6 }
-
#define MOUSEKEY_INTERVAL 20
#define MOUSEKEY_DELAY 0
#define MOUSEKEY_TIME_TO_MAX 60
@@ -54,6 +52,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MOUSEKEY_WHEEL_MAX_SPEED MOUSEKEY_MAX_SPEED
#define MOUSEKEY_WHEEL_TIME_TO_MAX MOUSEKEY_TIME_TO_MAX
+#define DEBOUNCE 30
+
#define TAPPING_TOGGLE 1
/* define if matrix has ghost */
@@ -114,9 +114,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* manufacturer specs.
*/
-#define DEBOUNCE 30
-
-#define USB_MAX_POWER_CONSUMPTION 500
// RGB backlight
#define DRIVER_ADDR_1 0b1110100
@@ -128,7 +125,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGB_MATRIX_LED_PROCESS_LIMIT 5
#define RGB_MATRIX_LED_FLUSH_LIMIT 26
-#define RGB_DISABLE_WHEN_USB_SUSPENDED true
+
+#define RGB_DISABLE_WHEN_USB_SUSPENDED
// #define RGBLIGHT_COLOR_LAYER_0 0x00, 0x00, 0xFF
/* #define RGBLIGHT_COLOR_LAYER_1 0x00, 0x00, 0xFF */
diff --git a/keyboards/ergodox_ez/ergodox_ez.c b/keyboards/ergodox_ez/ergodox_ez.c
index 9f3d82581e..c7fded7fbb 100644
--- a/keyboards/ergodox_ez/ergodox_ez.c
+++ b/keyboards/ergodox_ez/ergodox_ez.c
@@ -43,29 +43,30 @@ extern inline void ergodox_right_led_set(uint8_t led, uint8_t n);
extern inline void ergodox_led_all_set(uint8_t n);
keyboard_config_t keyboard_config;
-bool i2c_initialized = 0;
+
+bool i2c_initialized = 0;
i2c_status_t mcp23018_status = 0x20;
void matrix_init_kb(void) {
- // keyboard LEDs (see "PWM on ports OC1(A|B|C)" in "teensy-2-0.md")
+ // keyboard LEDs (see "PWM on ports OC1(A|B|C)" in "teensy-2-0.md")
TCCR1A = 0b10101001; // set and configure fast PWM
TCCR1B = 0b00001001; // set and configure fast PWM
// (tied to Vcc for hardware convenience)
- DDRB &= ~(1<<4); // set B(4) as input
- PORTB &= ~(1<<4); // set B(4) internal pull-up disabled
+ DDRB &= ~(1 << 4); // set B(4) as input
+ PORTB &= ~(1 << 4); // set B(4) internal pull-up disabled
// unused pins - C7, D4, D5, D7, E6
// set as input with internal pull-up enabled
- DDRC &= ~(1<<7);
- DDRD &= ~(1<<5 | 1<<4);
- DDRE &= ~(1<<6);
- PORTC |= (1<<7);
- PORTD |= (1<<5 | 1<<4);
- PORTE |= (1<<6);
+ DDRC &= ~(1 << 7);
+ DDRD &= ~(1 << 5 | 1 << 4);
+ DDRE &= ~(1 << 6);
+ PORTC |= (1 << 7);
+ PORTD |= (1 << 5 | 1 << 4);
+ PORTE |= (1 << 6);
keyboard_config.raw = eeconfig_read_kb();
- ergodox_led_all_set((uint8_t)keyboard_config.led_level * 255 / 4 );
+ ergodox_led_all_set((uint8_t)keyboard_config.led_level * 255 / 4);
#ifdef RGB_MATRIX_ENABLE
if (keyboard_config.rgb_matrix_enable) {
rgb_matrix_set_flags(LED_FLAG_ALL);
@@ -79,8 +80,7 @@ void matrix_init_kb(void) {
matrix_init_user();
}
-void ergodox_blink_all_leds(void)
-{
+void ergodox_blink_all_leds(void) {
ergodox_led_all_off();
ergodox_led_all_set(LED_BRIGHTNESS_DEFAULT);
ergodox_right_led_1_on();
@@ -93,17 +93,17 @@ void ergodox_blink_all_leds(void)
ergodox_left_led_1_on();
_delay_ms(50);
if (!mcp23018_status) {
- mcp23018_status = ergodox_left_leds_update();
+ mcp23018_status = ergodox_left_leds_update();
}
ergodox_left_led_2_on();
_delay_ms(50);
if (!mcp23018_status) {
- mcp23018_status = ergodox_left_leds_update();
+ mcp23018_status = ergodox_left_leds_update();
}
ergodox_left_led_3_on();
_delay_ms(50);
if (!mcp23018_status) {
- mcp23018_status = ergodox_left_leds_update();
+ mcp23018_status = ergodox_left_leds_update();
}
#endif
ergodox_right_led_1_off();
@@ -115,21 +115,21 @@ void ergodox_blink_all_leds(void)
_delay_ms(50);
ergodox_left_led_1_off();
if (!mcp23018_status) {
- mcp23018_status = ergodox_left_leds_update();
+ mcp23018_status = ergodox_left_leds_update();
}
_delay_ms(50);
ergodox_left_led_2_off();
if (!mcp23018_status) {
- mcp23018_status = ergodox_left_leds_update();
+ mcp23018_status = ergodox_left_leds_update();
}
_delay_ms(50);
ergodox_left_led_3_off();
if (!mcp23018_status) {
- mcp23018_status = ergodox_left_leds_update();
+ mcp23018_status = ergodox_left_leds_update();
}
#endif
- //ergodox_led_all_on();
+ // ergodox_led_all_on();
//_delay_ms(333);
ergodox_led_all_set((uint8_t)keyboard_config.led_level * 255 / 4 );
@@ -157,27 +157,35 @@ uint8_t init_mcp23018(void) {
// - unused : input : 1
// - input : input : 1
// - driving : output : 0
- mcp23018_status = i2c_start(I2C_ADDR_WRITE, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(IODIRA, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(0b00000000, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(0b00111111, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
+ mcp23018_status = i2c_start(I2C_ADDR_WRITE, ERGODOX_EZ_I2C_TIMEOUT);
+ if (mcp23018_status) goto out;
+ mcp23018_status = i2c_write(IODIRA, ERGODOX_EZ_I2C_TIMEOUT);
+ if (mcp23018_status) goto out;
+ mcp23018_status = i2c_write(0b00000000, ERGODOX_EZ_I2C_TIMEOUT);
+ if (mcp23018_status) goto out;
+ mcp23018_status = i2c_write(0b00111111, ERGODOX_EZ_I2C_TIMEOUT);
+ if (mcp23018_status) goto out;
i2c_stop();
// set pull-up
// - unused : on : 1
// - input : on : 1
// - driving : off : 0
- mcp23018_status = i2c_start(I2C_ADDR_WRITE, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(GPPUA, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(0b00000000, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(0b00111111, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
+ mcp23018_status = i2c_start(I2C_ADDR_WRITE, ERGODOX_EZ_I2C_TIMEOUT);
+ if (mcp23018_status) goto out;
+ mcp23018_status = i2c_write(GPPUA, ERGODOX_EZ_I2C_TIMEOUT);
+ if (mcp23018_status) goto out;
+ mcp23018_status = i2c_write(0b00000000, ERGODOX_EZ_I2C_TIMEOUT);
+ if (mcp23018_status) goto out;
+ mcp23018_status = i2c_write(0b00111111, ERGODOX_EZ_I2C_TIMEOUT);
+ if (mcp23018_status) goto out;
out:
i2c_stop();
#ifdef LEFT_LEDS
if (!mcp23018_status) mcp23018_status = ergodox_left_leds_update();
-#endif // LEFT_LEDS
+#endif // LEFT_LEDS
// SREG=sreg_prev;
@@ -186,12 +194,12 @@ out:
#ifdef LEFT_LEDS
uint8_t ergodox_left_leds_update(void) {
- if (mcp23018_status) { // if there was an error
+ if (mcp23018_status) { // if there was an error
return mcp23018_status;
}
-#define LEFT_LED_1_SHIFT 7 // in MCP23018 port B
-#define LEFT_LED_2_SHIFT 6 // in MCP23018 port B
-#define LEFT_LED_3_SHIFT 7 // in MCP23018 port A
+# define LEFT_LED_1_SHIFT 7 // in MCP23018 port B
+# define LEFT_LED_2_SHIFT 6 // in MCP23018 port B
+# define LEFT_LED_3_SHIFT 7 // in MCP23018 port A
// set logical value (doesn't matter on inputs)
// - unused : hi-Z : 1
@@ -201,59 +209,43 @@ uint8_t ergodox_left_leds_update(void) {
if (mcp23018_status) goto out;
mcp23018_status = i2c_write(OLATA, ERGODOX_EZ_I2C_TIMEOUT);
if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(0b11111111
- & ~(ergodox_left_led_3<<LEFT_LED_3_SHIFT),
- ERGODOX_EZ_I2C_TIMEOUT);
+ mcp23018_status = i2c_write(0b11111111 & ~(ergodox_left_led_3 << LEFT_LED_3_SHIFT), ERGODOX_EZ_I2C_TIMEOUT);
if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(0b11111111
- & ~(ergodox_left_led_2<<LEFT_LED_2_SHIFT)
- & ~(ergodox_left_led_1<<LEFT_LED_1_SHIFT),
- ERGODOX_EZ_I2C_TIMEOUT);
+ mcp23018_status = i2c_write(0b11111111 & ~(ergodox_left_led_2 << LEFT_LED_2_SHIFT) & ~(ergodox_left_led_1 << LEFT_LED_1_SHIFT), ERGODOX_EZ_I2C_TIMEOUT);
if (mcp23018_status) goto out;
- out:
+out:
i2c_stop();
return mcp23018_status;
}
#endif
-
#ifdef SWAP_HANDS_ENABLE
-__attribute__ ((weak))
+__attribute__((weak))
// swap-hands action needs a matrix to define the swap
-const keypos_t hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
+const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
/* Left hand, matrix positions */
- {{0,13}, {1,13}, {2,13}, {3,13}, {4,13}, {5,13}},
- {{0,12}, {1,12}, {2,12}, {3,12}, {4,12}, {5,12}},
- {{0,11}, {1,11}, {2,11}, {3,11}, {4,11}, {5,11}},
- {{0,10}, {1,10}, {2,10}, {3,10}, {4,10}, {5,10}},
- {{0,9}, {1,9}, {2,9}, {3,9}, {4,9}, {5,9}},
- {{0,8}, {1,8}, {2,8}, {3,8}, {4,8}, {5,8}},
- {{0,7}, {1,7}, {2,7}, {3,7}, {4,7}, {5,7}},
+ {{0, 13}, {1, 13}, {2, 13}, {3, 13}, {4, 13}, {5, 13}},
+ {{0, 12}, {1, 12}, {2, 12}, {3, 12}, {4, 12}, {5, 12}},
+ {{0, 11}, {1, 11}, {2, 11}, {3, 11}, {4, 11}, {5, 11}},
+ {{0, 10}, {1, 10}, {2, 10}, {3, 10}, {4, 10}, {5, 10}},
+ {{0, 9}, {1, 9}, {2, 9}, {3, 9}, {4, 9}, {5, 9}},
+ {{0, 8}, {1, 8}, {2, 8}, {3, 8}, {4, 8}, {5, 8}},
+ {{0, 7}, {1, 7}, {2, 7}, {3, 7}, {4, 7}, {5, 7}},
/* Right hand, matrix positions */
- {{0,6}, {1,6}, {2,6}, {3,6}, {4,6}, {5,6}},
- {{0,5}, {1,5}, {2,5}, {3,5}, {4,5}, {5,5}},
- {{0,4}, {1,4}, {2,4}, {3,4}, {4,4}, {5,4}},
- {{0,3}, {1,3}, {2,3}, {3,3}, {4,3}, {5,3}},
- {{0,2}, {1,2}, {2,2}, {3,2}, {4,2}, {5,2}},
- {{0,1}, {1,1}, {2,1}, {3,1}, {4,1}, {5,1}},
- {{0,0}, {1,0}, {2,0}, {3,0}, {4,0}, {5,0}},
+ {{0, 6}, {1, 6}, {2, 6}, {3, 6}, {4, 6}, {5, 6}},
+ {{0, 5}, {1, 5}, {2, 5}, {3, 5}, {4, 5}, {5, 5}},
+ {{0, 4}, {1, 4}, {2, 4}, {3, 4}, {4, 4}, {5, 4}},
+ {{0, 3}, {1, 3}, {2, 3}, {3, 3}, {4, 3}, {5, 3}},
+ {{0, 2}, {1, 2}, {2, 2}, {3, 2}, {4, 2}, {5, 2}},
+ {{0, 1}, {1, 1}, {2, 1}, {3, 1}, {4, 1}, {5, 1}},
+ {{0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}, {5, 0}},
};
#endif
#ifdef RGB_MATRIX_ENABLE
-
-void suspend_power_down_kb(void) {
- rgb_matrix_set_suspend_state(true);
- suspend_power_down_user();
-}
-
-void suspend_wakeup_init_kb(void) {
- rgb_matrix_set_suspend_state(false);
- suspend_wakeup_init_user();
-}
-
-const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
+// clang-format off
+const is31_led __flash g_is31_leds[DRIVER_LED_TOTAL] = {
/* driver
* | R location
* | | G location
@@ -347,62 +339,63 @@ led_config_t g_led_config = { {
4, 4, 4, 4, 4, 4,
4, 4, 1, 1, 1, 1
} };
+// clang-format on
+# ifdef ORYX_CONFIGURATOR
void keyboard_post_init_kb(void) {
rgb_matrix_enable_noeeprom();
keyboard_post_init_user();
}
+# endif
#endif
-
+#ifdef ORYX_CONFIGURATOR
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case LED_LEVEL:
if (record->event.pressed) {
- keyboard_config.led_level++;
- if (keyboard_config.led_level > 4) {
+ keyboard_config.led_level++;
+ if (keyboard_config.led_level > 4) {
keyboard_config.led_level = 0;
- }
- ergodox_led_all_set((uint8_t)keyboard_config.led_level * 255 / 4 );
- eeconfig_update_kb(keyboard_config.raw);
- layer_state_set_kb(layer_state);
+ }
+ ergodox_led_all_set((uint8_t)keyboard_config.led_level * 255 / 4);
+ eeconfig_update_kb(keyboard_config.raw);
+ layer_state_set_kb(layer_state);
}
break;
-#ifdef RGB_MATRIX_ENABLE
+# ifdef RGB_MATRIX_ENABLE
case TOGGLE_LAYER_COLOR:
if (record->event.pressed) {
keyboard_config.disable_layer_led ^= 1;
- if (keyboard_config.disable_layer_led)
- rgb_matrix_set_color_all(0, 0, 0);
+ if (keyboard_config.disable_layer_led) rgb_matrix_set_color_all(0, 0, 0);
eeconfig_update_kb(keyboard_config.raw);
}
break;
case RGB_TOG:
if (record->event.pressed) {
- switch (rgb_matrix_get_flags()) {
- case LED_FLAG_ALL: {
- rgb_matrix_set_flags(LED_FLAG_NONE);
- keyboard_config.rgb_matrix_enable = false;
- rgb_matrix_set_color_all(0, 0, 0);
- }
- break;
- default: {
- rgb_matrix_set_flags(LED_FLAG_ALL);
- keyboard_config.rgb_matrix_enable = true;
- }
- break;
- }
- eeconfig_update_kb(keyboard_config.raw);
+ switch (rgb_matrix_get_flags()) {
+ case LED_FLAG_ALL: {
+ rgb_matrix_set_flags(LED_FLAG_NONE);
+ keyboard_config.rgb_matrix_enable = false;
+ rgb_matrix_set_color_all(0, 0, 0);
+ } break;
+ default: {
+ rgb_matrix_set_flags(LED_FLAG_ALL);
+ keyboard_config.rgb_matrix_enable = true;
+ } break;
+ }
+ eeconfig_update_kb(keyboard_config.raw);
}
return false;
-#endif
+# endif
}
return process_record_user(keycode, record);
}
+#endif
void eeconfig_init_kb(void) { // EEPROM is getting reset!
- keyboard_config.raw = 0;
- keyboard_config.led_level = 4;
+ keyboard_config.raw = 0;
+ keyboard_config.led_level = 4;
keyboard_config.rgb_matrix_enable = true;
eeconfig_update_kb(keyboard_config.raw);
eeconfig_init_user();
diff --git a/keyboards/ergodox_ez/ergodox_ez.h b/keyboards/ergodox_ez/ergodox_ez.h
index a10e0fee63..eb04cb88c0 100644
--- a/keyboards/ergodox_ez/ergodox_ez.h
+++ b/keyboards/ergodox_ez/ergodox_ez.h
@@ -86,8 +86,7 @@ inline void ergodox_left_led_2_off(void) { ergodox_left_led_2 = 0; }
inline void ergodox_left_led_3_off(void) { ergodox_left_led_3 = 0; }
#endif // LEFT_LEDS
-inline void ergodox_led_all_on(void)
-{
+inline void ergodox_led_all_on(void) {
ergodox_board_led_on();
ergodox_right_led_1_on();
ergodox_right_led_2_on();
@@ -121,8 +120,7 @@ inline void ergodox_right_led_set(uint8_t led, uint8_t n) {
(OCR1C = n);
}
-inline void ergodox_led_all_set(uint8_t n)
-{
+inline void ergodox_led_all_set(uint8_t n) {
ergodox_right_led_1_set(n);
ergodox_right_led_2_set(n);
ergodox_right_led_3_set(n);
diff --git a/keyboards/ergodox_ez/glow/glow.h b/keyboards/ergodox_ez/glow/glow.h
index a504e4fdfb..da7a6073ef 100644
--- a/keyboards/ergodox_ez/glow/glow.h
+++ b/keyboards/ergodox_ez/glow/glow.h
@@ -3,14 +3,17 @@ Copyright 2012 Jun Wako <wakojun@gmail.com>
Copyright 2013 Oleg Kostyuk <cub.uanic@gmail.com>
Copyright 2015 ZSA Technology Labs Inc (@zsa)
Copyright 2020 Christopher Courtney <drashna@live.com> (@drashna)
+
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/>.
*/
diff --git a/keyboards/ergodox_ez/glow/rules.mk b/keyboards/ergodox_ez/glow/rules.mk
index f1a5c8b0f2..aad92997d0 100644
--- a/keyboards/ergodox_ez/glow/rules.mk
+++ b/keyboards/ergodox_ez/glow/rules.mk
@@ -1,3 +1 @@
-RGB_MATRIX_ENABLE = IS31FL3731
RGB_MATRIX_ENABLE = yes
-RGB_MATRIX_DRIVER = IS31FL3731
diff --git a/keyboards/ergodox_ez/info.json b/keyboards/ergodox_ez/info.json
index 6f7a941574..1682f4bb45 100644
--- a/keyboards/ergodox_ez/info.json
+++ b/keyboards/ergodox_ez/info.json
@@ -1,10 +1,7 @@
{
"keyboard_name": "ErgoDox EZ",
"url": "ergodox-ez.com",
- "maintainer": "erez",
- "width": 17,
- "height": 8,
-
+ "maintainer": "ZSA via Drashna",
"layouts": {
"LAYOUT_ergodox": {
"layout": [
diff --git a/keyboards/ergodox_ez/keymaps/default/keymap.c b/keyboards/ergodox_ez/keymaps/default/keymap.c
index 9550d6465c..3c0ef320a4 100644
--- a/keyboards/ergodox_ez/keymaps/default/keymap.c
+++ b/keyboards/ergodox_ez/keymaps/default/keymap.c
@@ -1,16 +1,21 @@
#include QMK_KEYBOARD_H
#include "version.h"
-#define BASE 0 // default layer
-#define SYMB 1 // symbols
-#define MDIA 2 // media keys
+enum layers {
+ BASE, // default layer
+ SYMB, // symbols
+ MDIA, // media keys
+};
enum custom_keycodes {
- EPRM = SAFE_RANGE,
- VRSN,
- RGB_SLD
+#ifdef ORYX_CONFIGURATOR
+ VRSN = EZ_SAFE_RANGE,
+#else
+ VRSN = SAFE_RANGE,
+#endif
};
+// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap 0: Basic layer
*
@@ -33,25 +38,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | |ace | End | | PgDn | | |
* `--------------------' `----------------------'
*/
-[BASE] = LAYOUT_ergodox(
+[BASE] = LAYOUT_ergodox_pretty(
// left hand
- KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT,
- KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB),
- KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G,
- KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO),
- LT(SYMB,KC_GRV), KC_QUOT, LALT(KC_LSFT), KC_LEFT, KC_RGHT,
- ALT_T(KC_APP), KC_LGUI,
- KC_HOME,
- KC_SPC, KC_BSPC, KC_END,
- // right hand
- KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
- TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
- KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN), GUI_T(KC_QUOT),
- MEH_T(KC_NO), KC_N, KC_M, KC_COMM, KC_DOT, CTL_T(KC_SLSH), KC_RSFT,
- KC_UP, KC_DOWN, KC_LBRC, KC_RBRC, TT(SYMB),
- KC_LALT, CTL_T(KC_ESC),
- KC_PGUP,
- KC_PGDN, KC_TAB, KC_ENT
+ KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ KC_DEL, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
+ KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN), GUI_T(KC_QUOT),
+ KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), MEH_T(KC_NO), KC_N, KC_M, KC_COMM, KC_DOT, CTL_T(KC_SLSH), KC_RSFT,
+ LT(SYMB,KC_GRV), KC_QUOT, LALT(KC_LSFT), KC_LEFT, KC_RGHT, KC_UP, KC_DOWN, KC_LBRC, KC_RBRC, TT(SYMB),
+ ALT_T(KC_APP), KC_LGUI, KC_LALT, CTL_T(KC_ESC),
+ KC_HOME, KC_PGUP,
+ KC_SPC, KC_BSPC, KC_END, KC_PGDN, KC_TAB, KC_ENT
),
/* Keymap 1: Symbol Layer
*
@@ -74,25 +70,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | |
* `--------------------' `--------------------'
*/
-[SYMB] = LAYOUT_ergodox(
+[SYMB] = LAYOUT_ergodox_pretty(
// left hand
- VRSN, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
- KC_TRNS, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, KC_TRNS,
- KC_TRNS, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRV,
- KC_TRNS, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, KC_TRNS,
- EPRM, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- RGB_MOD, KC_TRNS,
- KC_TRNS,
- RGB_VAD, RGB_VAI, KC_TRNS,
- // right hand
- KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
- KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12,
- KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS,
- KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS,
- KC_TRNS, KC_DOT, KC_0, KC_EQL, KC_TRNS,
- RGB_TOG, RGB_SLD,
- KC_TRNS,
- KC_TRNS, RGB_HUD, RGB_HUI
+ VRSN, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
+ KC_TRNS, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, KC_TRNS, KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12,
+ KC_TRNS, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRV, KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS,
+ KC_TRNS, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, KC_TRNS, KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS,
+ EEP_RST, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DOT, KC_0, KC_EQL, KC_TRNS,
+ RGB_MOD, KC_TRNS, RGB_TOG, RGB_M_P,
+ KC_TRNS, KC_TRNS,
+ RGB_VAD, RGB_VAI, KC_TRNS, KC_TRNS, RGB_HUD, RGB_HUI
),
/* Keymap 2: Media and mouse keys
*
@@ -115,122 +102,103 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | |
* `--------------------' `--------------------'
*/
-[MDIA] = LAYOUT_ergodox(
+[MDIA] = LAYOUT_ergodox_pretty(
// left hand
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
- KC_TRNS, KC_TRNS,
- KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS,
- // right hand
- 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_MPLY,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
- KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS,
- KC_TRNS,
- KC_TRNS, KC_TRNS, KC_WBAK
+ 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_MS_U, 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_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, KC_VOLU, KC_VOLD, KC_MUTE, 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_WBAK
),
};
+// clang-format on
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- if (record->event.pressed) {
- switch (keycode) {
- case EPRM:
- eeconfig_init();
- return false;
- case VRSN:
- SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
- return false;
-#ifdef RGBLIGHT_ENABLE
- case RGB_SLD:
- rgblight_mode(1);
- return false;
-#endif
+ if (record->event.pressed) {
+ switch (keycode) {
+ case VRSN:
+ SEND_STRING(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
+ return false;
+ }
}
- }
- return true;
+ return true;
}
// Runs just one time when the keyboard initializes.
-void matrix_init_user(void) {
+void keyboard_post_init_user(void) {
#ifdef RGBLIGHT_COLOR_LAYER_0
- rgblight_setrgb(RGBLIGHT_COLOR_LAYER_0);
+ rgblight_setrgb(RGBLIGHT_COLOR_LAYER_0);
#endif
};
// Runs whenever there is a layer state change.
layer_state_t layer_state_set_user(layer_state_t state) {
- ergodox_board_led_off();
- ergodox_right_led_1_off();
- ergodox_right_led_2_off();
- ergodox_right_led_3_off();
+ ergodox_board_led_off();
+ ergodox_right_led_1_off();
+ ergodox_right_led_2_off();
+ ergodox_right_led_3_off();
- uint8_t layer = biton32(state);
- switch (layer) {
- case 0:
- #ifdef RGBLIGHT_COLOR_LAYER_0
- rgblight_setrgb(RGBLIGHT_COLOR_LAYER_0);
- #else
- #ifdef RGBLIGHT_ENABLE
- rgblight_init();
- #endif
- #endif
- break;
- case 1:
- ergodox_right_led_1_on();
- #ifdef RGBLIGHT_COLOR_LAYER_1
- rgblight_setrgb(RGBLIGHT_COLOR_LAYER_1);
- #endif
- break;
- case 2:
- ergodox_right_led_2_on();
- #ifdef RGBLIGHT_COLOR_LAYER_2
- rgblight_setrgb(RGBLIGHT_COLOR_LAYER_2);
- #endif
- break;
- case 3:
- ergodox_right_led_3_on();
- #ifdef RGBLIGHT_COLOR_LAYER_3
- rgblight_setrgb(RGBLIGHT_COLOR_LAYER_3);
- #endif
- break;
- case 4:
- ergodox_right_led_1_on();
- ergodox_right_led_2_on();
- #ifdef RGBLIGHT_COLOR_LAYER_4
- rgblight_setrgb(RGBLIGHT_COLOR_LAYER_4);
- #endif
- break;
- case 5:
- ergodox_right_led_1_on();
- ergodox_right_led_3_on();
- #ifdef RGBLIGHT_COLOR_LAYER_5
- rgblight_setrgb(RGBLIGHT_COLOR_LAYER_5);
- #endif
- break;
- case 6:
- ergodox_right_led_2_on();
- ergodox_right_led_3_on();
- #ifdef RGBLIGHT_COLOR_LAYER_6
- rgblight_setrgb(RGBLIGHT_COLOR_LAYER_6);
- #endif
- break;
- case 7:
- ergodox_right_led_1_on();
- ergodox_right_led_2_on();
- ergodox_right_led_3_on();
- #ifdef RGBLIGHT_COLOR_LAYER_7
- rgblight_setrgb(RGBLIGHT_COLOR_LAYER_7);
- #endif
- break;
- default:
- break;
+ uint8_t layer = get_highest_layer(state);
+ switch (layer) {
+ case 0:
+#ifdef RGBLIGHT_COLOR_LAYER_0
+ rgblight_setrgb(RGBLIGHT_COLOR_LAYER_0);
+#endif
+ break;
+ case 1:
+ ergodox_right_led_1_on();
+#ifdef RGBLIGHT_COLOR_LAYER_1
+ rgblight_setrgb(RGBLIGHT_COLOR_LAYER_1);
+#endif
+ break;
+ case 2:
+ ergodox_right_led_2_on();
+#ifdef RGBLIGHT_COLOR_LAYER_2
+ rgblight_setrgb(RGBLIGHT_COLOR_LAYER_2);
+#endif
+ break;
+ case 3:
+ ergodox_right_led_3_on();
+#ifdef RGBLIGHT_COLOR_LAYER_3
+ rgblight_setrgb(RGBLIGHT_COLOR_LAYER_3);
+#endif
+ break;
+ case 4:
+ ergodox_right_led_1_on();
+ ergodox_right_led_2_on();
+#ifdef RGBLIGHT_COLOR_LAYER_4
+ rgblight_setrgb(RGBLIGHT_COLOR_LAYER_4);
+#endif
+ break;
+ case 5:
+ ergodox_right_led_1_on();
+ ergodox_right_led_3_on();
+#ifdef RGBLIGHT_COLOR_LAYER_5
+ rgblight_setrgb(RGBLIGHT_COLOR_LAYER_5);
+#endif
+ break;
+ case 6:
+ ergodox_right_led_2_on();
+ ergodox_right_led_3_on();
+#ifdef RGBLIGHT_COLOR_LAYER_6
+ rgblight_setrgb(RGBLIGHT_COLOR_LAYER_6);
+#endif
+ break;
+ case 7:
+ ergodox_right_led_1_on();
+ ergodox_right_led_2_on();
+ ergodox_right_led_3_on();
+#ifdef RGBLIGHT_COLOR_LAYER_7
+ rgblight_setrgb(RGBLIGHT_COLOR_LAYER_7);
+#endif
+ break;
+ default:
+ break;
}
- return state;
+ return state;
};
diff --git a/keyboards/ergodox_ez/matrix.c b/keyboards/ergodox_ez/matrix.c
index 88aeb61722..41919a7000 100644
--- a/keyboards/ergodox_ez/matrix.c
+++ b/keyboards/ergodox_ez/matrix.c
@@ -24,6 +24,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+
/*
* scan matrix
*/
diff --git a/keyboards/ergodox_ez/rules.mk b/keyboards/ergodox_ez/rules.mk
index bfd8355ad0..88821a1deb 100644
--- a/keyboards/ergodox_ez/rules.mk
+++ b/keyboards/ergodox_ez/rules.mk
@@ -2,13 +2,6 @@
MCU = atmega32u4
# Bootloader selection
-# Teensy halfkay
-# Pro Micro caterina
-# Atmel DFU atmel-dfu
-# LUFA DFU lufa-dfu
-# QMK DFU qmk-dfu
-# ATmega32A bootloadHID
-# ATmega328P USBasp
BOOTLOADER = halfkay
# If you have Left LEDs (see
@@ -19,27 +12,29 @@ BOOTLOADER = halfkay
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
CUSTOM_MATRIX = lite # Custom matrix file for the ErgoDox EZ
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+
UNICODE_ENABLE = no # Unicode
SWAP_HANDS_ENABLE= no # Allow swapping hands of keyboard
SLEEP_LED_ENABLE = no
-API_SYSEX_ENABLE = no
RGB_MATRIX_ENABLE = no # enable later
RGB_MATRIX_DRIVER = IS31FL3731
-DEBOUNCE_TYPE = eager_pr
+DEBOUNCE_TYPE = sym_eager_pr
# project specific files
SRC += matrix.c \
led_i2c.c
QUANTUM_LIB_SRC += i2c_master.c
-LAYOUTS = ergodox
-
MOUSE_SHARED_EP = no
+
+# Disable unsupported hardware
+AUDIO_SUPPORTED = no
+BACKLIGHT_SUPPORTED = no
diff --git a/keyboards/ergodox_ez/shine/config.h b/keyboards/ergodox_ez/shine/config.h
index c2bc6b5342..cf4f59f3b8 100644
--- a/keyboards/ergodox_ez/shine/config.h
+++ b/keyboards/ergodox_ez/shine/config.h
@@ -3,14 +3,17 @@ Copyright 2012 Jun Wako <wakojun@gmail.com>
Copyright 2013 Oleg Kostyuk <cub.uanic@gmail.com>
Copyright 2015 ZSA Technology Labs Inc (@zsa)
Copyright 2020 Christopher Courtney <drashna@live.com> (@drashna)
+
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/>.
*/
diff --git a/keyboards/ergodox_ez/shine/shine.h b/keyboards/ergodox_ez/shine/shine.h
index a504e4fdfb..da7a6073ef 100644
--- a/keyboards/ergodox_ez/shine/shine.h
+++ b/keyboards/ergodox_ez/shine/shine.h
@@ -3,14 +3,17 @@ Copyright 2012 Jun Wako <wakojun@gmail.com>
Copyright 2013 Oleg Kostyuk <cub.uanic@gmail.com>
Copyright 2015 ZSA Technology Labs Inc (@zsa)
Copyright 2020 Christopher Courtney <drashna@live.com> (@drashna)
+
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/>.
*/
diff --git a/keyboards/ergodox_ez/util/compile_keymap.py b/keyboards/ergodox_ez/util/compile_keymap.py
index f427d6fd80..b447ecaf5c 100644..100755
--- a/keyboards/ergodox_ez/util/compile_keymap.py
+++ b/keyboards/ergodox_ez/util/compile_keymap.py
@@ -584,11 +584,6 @@ def unicode_macro_cases(config):
for macro_id, uc_hex in config['unicode_macros'].items():
hi = int(uc_hex, 16) >> 8
lo = int(uc_hex, 16) & 0xFF
- unimacro_keys = ", ".join(
- "T({})".format(
- "KP_" + digit if digit.isdigit() else digit
- ) for digit in uc_hex
- )
yield UNICODE_MACRO_TEMPLATE.format(
macro_id=macro_id, hi=hi, lo=lo
)
diff --git a/keyboards/ergodox_ez/util/readme.md b/keyboards/ergodox_ez/util/readme.md
index 26c5e5d99c..deb0cad5db 100644
--- a/keyboards/ergodox_ez/util/readme.md
+++ b/keyboards/ergodox_ez/util/readme.md
@@ -1,3 +1,11 @@
# ErgoDox EZ Utilities
+## compile_keymap.py
+
The Python script in this directory, by [mbarkhau](https://github.com/mbarkhau) allows you to write out a basic ErgoDox EZ keymap using Markdown notation, and then transpile it to C, which you can then compile. It's experimental, but if you're not comfortable using C, it's a nice option.
+
+## keymap_beautifier.py
+
+This Python 3 script, by [Tsan-Kuang Lee](https://github.com/tsankuanglee) takes the keymap.c downloaded from [ErgoDox EZ Configurator](https://configure.ergodox-ez.com/) and beautifies it for easier customization, allowing one to quickly draft a layout to build upon.
+
+See [README.md](./keymap_beautifier/README.md) for this utility for more details.