From b2badef7d0af58b5b991ed480b5a4e2fe84b0bce Mon Sep 17 00:00:00 2001 From: Peter Eichinger Date: Fri, 22 Jan 2016 17:37:22 +0100 Subject: [PATCH 1/3] Backlight fix from reddit https://www.reddit.com/r/olkb/comments/41ur41/crazy_flashing_when_my_computer_sleeps/ --- tmk_core/common/avr/suspend.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/tmk_core/common/avr/suspend.c b/tmk_core/common/avr/suspend.c index af99f52b5..22c402b02 100644 --- a/tmk_core/common/avr/suspend.c +++ b/tmk_core/common/avr/suspend.c @@ -8,6 +8,7 @@ #include "suspend_avr.h" #include "suspend.h" #include "timer.h" +#include "led.h" #ifdef PROTOCOL_LUFA #include "lufa.h" #endif @@ -64,6 +65,12 @@ static void power_down(uint8_t wdto) // Watchdog Interrupt Mode wdt_intr_enable(wdto); +#ifdef BACKLIGHT_ENABLE +backlight_set(0); +#endif + + led_off(); + // TODO: more power saving // See PicoPower application note // - I/O port input with pullup @@ -89,6 +96,9 @@ __attribute__ ((weak)) void matrix_power_up(void) {} __attribute__ ((weak)) void matrix_power_down(void) {} bool suspend_wakeup_condition(void) { +#ifdef BACKLIGHT_ENABLE + backlight_set(0); +#endif matrix_power_up(); matrix_scan(); matrix_power_down(); @@ -104,8 +114,10 @@ void suspend_wakeup_init(void) // clear keyboard state clear_keyboard(); #ifdef BACKLIGHT_ENABLE + backlight_set(0); backlight_init(); #endif +led_set(host_keyboard_leds()); } #ifndef NO_SUSPEND_POWER_DOWN @@ -122,3 +134,4 @@ ISR(WDT_vect) } } #endif + From c5f90eb99b282c7425e151b82f0ca22969a4a275 Mon Sep 17 00:00:00 2001 From: Peter Eichinger Date: Sun, 24 Jan 2016 11:13:11 +0100 Subject: [PATCH 2/3] Remove led_off() it is not used --- tmk_core/common/avr/suspend.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/tmk_core/common/avr/suspend.c b/tmk_core/common/avr/suspend.c index 22c402b02..caf0b0625 100644 --- a/tmk_core/common/avr/suspend.c +++ b/tmk_core/common/avr/suspend.c @@ -69,8 +69,6 @@ static void power_down(uint8_t wdto) backlight_set(0); #endif - led_off(); - // TODO: more power saving // See PicoPower application note // - I/O port input with pullup From baddbc6b23b34b5873e7a355c55f1e04485881f6 Mon Sep 17 00:00:00 2001 From: tonyabra Date: Sun, 24 Jan 2016 23:33:26 -0600 Subject: [PATCH 3/3] Simplified osx layout for ergodox ez --- .../ergodox_ez/keymaps/tonyabra_osx/keymap.c | 184 ++++++++++++++++++ .../ergodox_ez/keymaps/tonyabra_osx/readme.md | 5 + .../keymaps/tonyabra_osx/tonyabra_osx.hex | Bin 0 -> 66143 bytes 3 files changed, 189 insertions(+) create mode 100644 keyboard/ergodox_ez/keymaps/tonyabra_osx/keymap.c create mode 100644 keyboard/ergodox_ez/keymaps/tonyabra_osx/readme.md create mode 100644 keyboard/ergodox_ez/keymaps/tonyabra_osx/tonyabra_osx.hex diff --git a/keyboard/ergodox_ez/keymaps/tonyabra_osx/keymap.c b/keyboard/ergodox_ez/keymaps/tonyabra_osx/keymap.c new file mode 100644 index 000000000..fb7c00983 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/tonyabra_osx/keymap.c @@ -0,0 +1,184 @@ +#include "ergodox_ez.h" +#include "debug.h" +#include "action_layer.h" + +#define BASE 0 // default layer +#define SYMB 1 // symbols +#define MDIA 2 // media keys + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Keymap 0: Basic layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | Esc | 1 | 2 | 3 | 4 | 5 | = | | - | 6 | 7 | 8 | 9 | 0 | Enter | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | Tab | Q | W | E | R | T | L1 | | L1 | Y | U | I | O | P | \ | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | BkSp | A | S | D | F | G |------| |------| H | J | K | L | ; | '" | + * |--------+------+------+------+------+------| LGui | | LGui |------+------+------+------+------+--------| + * | LShift | Z | X | C | V | B | | | | N | M | , | . | / | RShift | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | L1 | ` | { | } | '" | | Left | Up | Down | Right| L2 | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | Del | Alt | | Alt | Ctrl | + * ,------|------|------| |------+--------+------. + * | | | Home | | PgUp | | | + * | Space|Backsp|------| |------| Tab |Enter | + * | |ace | End | | PgDn | | | + * `--------------------' `----------------------' + */ +// If it accepts an argument (i.e, is a function), it doesn't need KC_. +// Otherwise, it needs KC_* +[BASE] = KEYMAP( // layer 0 : default + // left hand + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_EQL, + KC_TAB, 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, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LGUI, + TG(SYMB), KC_GRV, KC_LBRC, KC_RBRC,KC_QUOT, + KC_DELT,KC_LALT, + KC_HOME, + KC_SPC,KC_BSPC,KC_END, + // right hand + KC_MINS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_ENT, + TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LGUI, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, + KC_LEFT,KC_UP, KC_DOWN,KC_RIGHT, TG(MDIA), + KC_RALT, KC_RCTL, + KC_PGUP, + KC_PGDN,KC_TAB, KC_ENT + ), +/* Keymap 1: Symbol Layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | | . | 0 | = | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// SYMBOLS +[SYMB] = KEYMAP( + // left hand + KC_TRNS,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, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS, + KC_TRNS, + KC_TRNS,KC_TRNS,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, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), +/* Keymap 2: Media and mouse keys + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | | MsUp | | | | | | | | | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | | | | Prev | Next | | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | |Brwser| + * | | |------| |------| |Back | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// MEDIA AND MOUSE +[MDIA] = KEYMAP( + 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 +), +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols) +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + register_code(KC_RSFT); + } else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; + +// Runs just one time when the keyboard initializes. +void * matrix_init_user(void) { + +}; + +// Runs constantly in the background, in a loop. +void * matrix_scan_user(void) { + + uint8_t layer = biton32(layer_state); + + ergodox_board_led_off(); + ergodox_right_led_1_off(); + ergodox_right_led_2_off(); + ergodox_right_led_3_off(); + switch (layer) { + // TODO: Make this relevant to the ErgoDox EZ. + case 1: + ergodox_right_led_1_on(); + break; + case 2: + ergodox_right_led_2_on(); + break; + default: + // none + break; + } + +}; diff --git a/keyboard/ergodox_ez/keymaps/tonyabra_osx/readme.md b/keyboard/ergodox_ez/keymaps/tonyabra_osx/readme.md new file mode 100644 index 000000000..f9d76efc2 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/tonyabra_osx/readme.md @@ -0,0 +1,5 @@ +# ErgoDox EZ OS X Simplified Configuration + +This keyboard configuration replaces the hyper and meh keys with the command key. It also removes all of the meta keys that require a "hold" because I found that I hesitate when I type, which can accidentally fire those combinations. On the upper left of the left hand, I mimicked the Mac placement of tab and escape, and on the upper right of the right hand, I placed an additional enter key for convenience when breezing through prompts. + +This is my standard working configuration for now, but I can see myself tweaking it as I use it more. I highly recommend you do the same. \ No newline at end of file diff --git a/keyboard/ergodox_ez/keymaps/tonyabra_osx/tonyabra_osx.hex b/keyboard/ergodox_ez/keymaps/tonyabra_osx/tonyabra_osx.hex new file mode 100644 index 0000000000000000000000000000000000000000..c3481dccbe8812ea5137963999fe1c7cded36127 GIT binary patch literal 66143 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