Compare commits

...

5 Commits

Author SHA1 Message Date
1ad5d63b8b My initial keymap 2023-02-28 20:30:17 -05:00
Drashna Jaelre
d9f575fa86 Reduce i2c timeouts for rgb led supported hardware (#360)
* Reduce i2c timeouts for rgb led supported hardware

* update

* make defines more consistent
2022-10-28 14:43:40 +09:00
Ruslan Sayfutdinov
89e3c4c0da Fix exclusions in .gitignore (#358) 2022-09-13 11:04:59 -07:00
Drashna Jaelre
f3ac73f6cf More aggressively send shift mod for autoshift and caps word (#357) 2022-08-22 10:05:21 +09:00
Drashna Jaelre
b6657f6a7b Properly fix i2c leds for ergodox shine (#356) 2022-08-05 09:32:04 +09:00
12 changed files with 299 additions and 31 deletions

2
.gitignore vendored
View File

@@ -82,7 +82,7 @@ user_song_list.h
/util/win_downloaded
/users/
/layouts/
/keyboards/
/keyboards/*
!/keyboards/ergodox_ez/
!/keyboards/planck/
!/keyboards/moonlander/

View File

@@ -45,7 +45,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define OLATB 0x15
extern i2c_status_t mcp23018_status;
#define ERGODOX_EZ_I2C_TIMEOUT 100
#ifndef ERGODOX_EZ_I2C_TIMEOUT
# define ERGODOX_EZ_I2C_TIMEOUT 80
#endif
void init_ergodox(void);
void ergodox_blink_all_leds(void);

View File

@@ -21,13 +21,18 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifdef RGBLIGHT_ENABLE
# include "ergodox_ez.h"
i2c_status_t i2c_rgblight = 0x20;
bool i2c_rgblight = true;
extern bool i2c_initialized;
# ifndef ERGODOX_RGBLIGHT_TIMEOUT
# define ERGODOX_RGBLIGHT_TIMEOUT 5
# endif
void rgblight_call_driver(LED_TYPE *led, uint8_t led_num) {
if (i2c_initialized && !mcp23018_status) {
if (!i2c_rgblight) i2c_rgblight = i2c_start(0x84, ERGODOX_EZ_I2C_TIMEOUT);
if (i2c_initialized && !mcp23018_status && i2c_rgblight) {
if (i2c_start(0x84, ERGODOX_RGBLIGHT_TIMEOUT)) {
i2c_rgblight = false;
i2c_stop();
} else {
uint8_t i = 0;
# if defined(ERGODOX_LED_30)
// prevent right-half code from trying to bitbang all 30
@@ -42,15 +47,16 @@ void rgblight_call_driver(LED_TYPE *led, uint8_t led_num) {
# endif
{
uint8_t *data = (uint8_t *)(led + i);
if (!i2c_rgblight) i2c_rgblight = i2c_write(*data++, ERGODOX_EZ_I2C_TIMEOUT);
if (!i2c_rgblight) i2c_rgblight = i2c_write(*data++, ERGODOX_EZ_I2C_TIMEOUT);
if (!i2c_rgblight) i2c_rgblight = i2c_write(*data++, ERGODOX_EZ_I2C_TIMEOUT);
i2c_write(*data++, ERGODOX_RGBLIGHT_TIMEOUT);
i2c_write(*data++, ERGODOX_RGBLIGHT_TIMEOUT);
i2c_write(*data++, ERGODOX_RGBLIGHT_TIMEOUT);
# ifdef RGBW
if (!i2c_rgblight) i2c_rgblight = i2c_write(*data++, ERGODOX_EZ_I2C_TIMEOUT);
i2c_write(*data++, ERGODOX_RGBLIGHT_TIMEOUT);
# endif
}
i2c_stop();
}
}
ws2812_setleds(led, led_num);
}

View File

@@ -64,7 +64,7 @@ static void select_row(uint8_t row);
static uint8_t mcp23018_reset_loop;
#ifdef RGBLIGHT_ENABLE
extern i2c_status_t i2c_rgblight;
extern bool i2c_rgblight;
#endif
void matrix_init_custom(void) {
@@ -101,7 +101,8 @@ bool matrix_scan_custom(matrix_row_t current_matrix[]) {
rgb_matrix_init(); // re-init driver on reconnect
#endif
#ifdef RGBLIGHT_ENABLE
i2c_rgblight = 0x20; // re-enable rgb light
i2c_rgblight = true; // re-enable rgb light
rgblight_set();
#endif
}
}

View File

@@ -38,3 +38,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// If not, then only define 15
# define RGBLED_NUM 15 // Number of LEDs
#endif
#ifndef ISSI_TIMEOUT
# define ISSI_TIMEOUT 3
#endif

View File

@@ -0,0 +1,14 @@
/*
Set any config.h overrides for your specific keymap here.
See config.h options at https://docs.qmk.fm/#/config_options?id=the-configh-file
*/
#define ORYX_CONFIGURATOR
#define IGNORE_MOD_TAP_INTERRUPT
#define USB_SUSPEND_WAKEUP_DELAY 0
#define FIRMWARE_VERSION u8"mabMN/9nWB7"
#define RAW_USAGE_PAGE 0xFF60
#define RAW_USAGE_ID 0x61
#define LAYER_STATE_8BIT
#define RGB_MATRIX_STARTUP_SPD 60

View File

@@ -0,0 +1 @@
{"keyboard": "moonlander", "keymap": "jbrechtel", "layout": "LAYOUT_moonlander", "layers": [["KC_GRAVE", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "LSFT(KC_INSERT)", "KC_TRANSPARENT", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_MINUS", "TD(DANCE_0)", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "MO(2)", "KC_TRANSPARENT", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", "KC_BSLASH", "OSM(MOD_LCTL)", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_TAB", "KC_TRANSPARENT", "KC_H", "KC_J", "KC_K", "KC_L", "KC_COLN", "MT(MOD_LGUI, KC_ENTER)", "KC_LSHIFT", "MT(MOD_LCTL, KC_Z)", "KC_X", "KC_C", "KC_V", "KC_B", "KC_N", "KC_M", "KC_COMMA", "KC_DOT", "KC_SCOLON", "KC_RSHIFT", "KC_ESCAPE", "LGUI(KC_TAB)", "LGUI(LSFT(KC_TAB))", "KC_HYPR", "KC_LSHIFT", "LGUI(KC_SPACE)", "LGUI(LSFT(KC_S))", "KC_RSHIFT", "KC_HYPR", "KC_LBRACKET", "KC_RBRACKET", "LT(1,KC_EQUAL)", "KC_SPACE", "MT(MOD_LGUI, KC_BSPACE)", "OSL(1)", "MO(1)", "KC_TRANSPARENT", "KC_SPACE"], ["KC_ESCAPE", "KC_F1", "KC_F2", "KC_F3", "KC_F4", "KC_F5", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_F6", "KC_F7", "KC_F8", "KC_F9", "KC_F10", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_EXLM", "KC_AT", "KC_LCBR", "KC_RCBR", "KC_PIPE", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_DQUO", "KC_QUOTE", "KC_9", "KC_ASTR", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_HASH", "KC_DLR", "KC_LPRN", "KC_RPRN", "KC_GRAVE", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_LEFT", "KC_DOWN", "KC_UP", "KC_RIGHT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_CIRC", "KC_LBRACKET", "KC_RBRACKET", "KC_TILD", "KC_MINUS", "KC_SLASH", "KC_BSLASH", "KC_3", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_COMMA", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "RGB_MOD", "RGB_TOG", "KC_TRANSPARENT", "KC_DOT", "KC_LABK", "KC_RABK", "KC_TRANSPARENT", "RGB_VAD", "RGB_VAI", "KC_TRANSPARENT", "KC_TRANSPARENT", "RGB_HUD", "RGB_HUI"], ["KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_SLASH", "KC_LBRACKET", "KC_RBRACKET", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_BSLASH", "KC_LPRN", "KC_RPRN", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "TD(DANCE_1)", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_MINUS", "KC_LCBR", "KC_RCBR", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT"], ["KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_LSHIFT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT"]]}

View File

@@ -0,0 +1,223 @@
#include QMK_KEYBOARD_H
#include "version.h"
#include "keymap_german.h"
#include "keymap_nordic.h"
#include "keymap_french.h"
#include "keymap_spanish.h"
#include "keymap_hungarian.h"
#include "keymap_swedish.h"
#include "keymap_br_abnt2.h"
#include "keymap_canadian_multilingual.h"
#include "keymap_german_ch.h"
#include "keymap_jp.h"
#include "keymap_korean.h"
#include "keymap_bepo.h"
#include "keymap_italian.h"
#include "keymap_slovenian.h"
#include "keymap_lithuanian_azerty.h"
#include "keymap_danish.h"
#include "keymap_norwegian.h"
#include "keymap_portuguese.h"
#include "keymap_contributions.h"
#include "keymap_czech.h"
#include "keymap_romanian.h"
#include "keymap_russian.h"
#include "keymap_uk.h"
#include "keymap_estonian.h"
#include "keymap_belgian.h"
#include "keymap_us_international.h"
#include "keymap_croatian.h"
#include "keymap_turkish_q.h"
#include "keymap_slovak.h"
#define KC_MAC_UNDO LGUI(KC_Z)
#define KC_MAC_CUT LGUI(KC_X)
#define KC_MAC_COPY LGUI(KC_C)
#define KC_MAC_PASTE LGUI(KC_V)
#define KC_PC_UNDO LCTL(KC_Z)
#define KC_PC_CUT LCTL(KC_X)
#define KC_PC_COPY LCTL(KC_C)
#define KC_PC_PASTE LCTL(KC_V)
#define ES_LESS_MAC KC_GRAVE
#define ES_GRTR_MAC LSFT(KC_GRAVE)
#define ES_BSLS_MAC ALGR(KC_6)
#define NO_PIPE_ALT KC_GRAVE
#define NO_BSLS_ALT KC_EQUAL
#define LSA_T(kc) MT(MOD_LSFT | MOD_LALT, kc)
#define BP_NDSH_MAC ALGR(KC_8)
#define SE_SECT_MAC ALGR(KC_6)
#define MOON_LED_LEVEL LED_LEVEL
enum custom_keycodes {
RGB_SLD = ML_SAFE_RANGE,
};
enum tap_dance_codes {
DANCE_0,
DANCE_1,
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_moonlander(
KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, LSFT(KC_INSERT), KC_TRANSPARENT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS,
TD(DANCE_0), KC_Q, KC_W, KC_E, KC_R, KC_T, MO(2), KC_TRANSPARENT, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLASH,
OSM(MOD_LCTL), KC_A, KC_S, KC_D, KC_F, KC_G, KC_TAB, KC_TRANSPARENT, KC_H, KC_J, KC_K, KC_L, KC_COLN, MT(MOD_LGUI, KC_ENTER),
KC_LSHIFT, MT(MOD_LCTL, KC_Z),KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SCOLON, KC_RSHIFT,
KC_ESCAPE, LGUI(KC_TAB), LGUI(LSFT(KC_TAB)),KC_HYPR, KC_LSHIFT, LGUI(KC_SPACE), LGUI(LSFT(KC_S)),KC_RSHIFT, KC_HYPR, KC_LBRACKET, KC_RBRACKET, LT(1,KC_EQUAL),
KC_SPACE, MT(MOD_LGUI, KC_BSPACE),OSL(1), MO(1), KC_TRANSPARENT, KC_SPACE
),
[1] = LAYOUT_moonlander(
KC_ESCAPE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRANSPARENT, KC_TRANSPARENT, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRANSPARENT,
KC_TRANSPARENT, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_DQUO, KC_QUOTE, KC_9, KC_ASTR, KC_TRANSPARENT,
KC_TRANSPARENT, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRAVE, KC_TRANSPARENT, KC_TRANSPARENT, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_TRANSPARENT, KC_TRANSPARENT,
KC_TRANSPARENT, KC_TRANSPARENT, KC_CIRC, KC_LBRACKET, KC_RBRACKET, KC_TILD, KC_MINUS, KC_SLASH, KC_BSLASH, KC_3, KC_TRANSPARENT, KC_TRANSPARENT,
KC_TRANSPARENT, KC_COMMA, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, RGB_MOD, RGB_TOG, KC_TRANSPARENT, KC_DOT, KC_LABK, KC_RABK, KC_TRANSPARENT,
RGB_VAD, RGB_VAI, KC_TRANSPARENT, KC_TRANSPARENT, RGB_HUD, RGB_HUI
),
[2] = LAYOUT_moonlander(
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_SLASH, KC_LBRACKET, KC_RBRACKET, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_BSLASH, KC_LPRN, KC_RPRN, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
TD(DANCE_1), KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_MINUS, KC_LCBR, KC_RCBR, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT
),
[3] = LAYOUT_moonlander(
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
KC_LSHIFT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT
),
};
extern rgb_config_t rgb_matrix_config;
void keyboard_post_init_user(void) {
rgb_matrix_enable();
}
const uint8_t PROGMEM ledmap[][DRIVER_LED_TOTAL][3] = {
[1] = { {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214}, {139,244,214} },
[2] = { {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255}, {74,255,255} },
};
void set_layer_color(int layer) {
for (int i = 0; i < DRIVER_LED_TOTAL; i++) {
HSV hsv = {
.h = pgm_read_byte(&ledmap[layer][i][0]),
.s = pgm_read_byte(&ledmap[layer][i][1]),
.v = pgm_read_byte(&ledmap[layer][i][2]),
};
if (!hsv.h && !hsv.s && !hsv.v) {
rgb_matrix_set_color( i, 0, 0, 0 );
} else {
RGB rgb = hsv_to_rgb( hsv );
float f = (float)rgb_matrix_config.hsv.v / UINT8_MAX;
rgb_matrix_set_color( i, f * rgb.r, f * rgb.g, f * rgb.b );
}
}
}
void rgb_matrix_indicators_user(void) {
if (keyboard_config.disable_layer_led) { return; }
switch (biton32(layer_state)) {
case 1:
set_layer_color(1);
break;
case 2:
set_layer_color(2);
break;
default:
if (rgb_matrix_get_flags() == LED_FLAG_NONE)
rgb_matrix_set_color_all(0, 0, 0);
break;
}
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case RGB_SLD:
if (record->event.pressed) {
rgblight_mode(1);
}
return false;
}
return true;
}
typedef struct {
bool is_press_action;
uint8_t step;
} tap;
enum {
SINGLE_TAP = 1,
SINGLE_HOLD,
DOUBLE_TAP,
DOUBLE_HOLD,
DOUBLE_SINGLE_TAP,
MORE_TAPS
};
static tap dance_state[2];
uint8_t dance_step(qk_tap_dance_state_t *state);
uint8_t dance_step(qk_tap_dance_state_t *state) {
if (state->count == 1) {
if (state->interrupted || !state->pressed) return SINGLE_TAP;
else return SINGLE_HOLD;
} else if (state->count == 2) {
if (state->interrupted) return DOUBLE_SINGLE_TAP;
else if (state->pressed) return DOUBLE_HOLD;
else return DOUBLE_TAP;
}
return MORE_TAPS;
}
void dance_0_finished(qk_tap_dance_state_t *state, void *user_data);
void dance_0_reset(qk_tap_dance_state_t *state, void *user_data);
void dance_0_finished(qk_tap_dance_state_t *state, void *user_data) {
dance_state[0].step = dance_step(state);
switch (dance_state[0].step) {
case DOUBLE_TAP: layer_move(3); break;
}
}
void dance_0_reset(qk_tap_dance_state_t *state, void *user_data) {
wait_ms(10);
switch (dance_state[0].step) {
}
dance_state[0].step = 0;
}
void dance_1_finished(qk_tap_dance_state_t *state, void *user_data);
void dance_1_reset(qk_tap_dance_state_t *state, void *user_data);
void dance_1_finished(qk_tap_dance_state_t *state, void *user_data) {
dance_state[1].step = dance_step(state);
switch (dance_state[1].step) {
case DOUBLE_TAP: layer_move(0); break;
}
}
void dance_1_reset(qk_tap_dance_state_t *state, void *user_data) {
wait_ms(10);
switch (dance_state[1].step) {
}
dance_state[1].step = 0;
}
qk_tap_dance_action_t tap_dance_actions[] = {
[DANCE_0] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_0_finished, dance_0_reset),
[DANCE_1] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_1_finished, dance_1_reset),
};

View File

@@ -0,0 +1,9 @@
# Set any rules.mk overrides for your specific keymap here.
# See rules at https://docs.qmk.fm/#/config_options?id=the-rulesmk-file
CONSOLE_ENABLE = no
COMMAND_ENABLE = no
MOUSEKEY_ENABLE = no
ORYX_ENABLE = yes
TAP_DANCE_ENABLE = yes
SPACE_CADET_ENABLE = no
SRC = matrix.c

View File

@@ -1,3 +1,5 @@
#pragma once
#ifdef AUDIO_ENABLE
# ifndef STARTUP_SONG
# define STARTUP_SONG SONG(E__NOTE(_DS5), E__NOTE(_D5), E__NOTE(_AS4), Q__NOTE(_F5))
@@ -7,3 +9,7 @@
# define GOODBYE_SONG SONG(E__NOTE(_D5), E__NOTE(_F5), E__NOTE(_C5), Q__NOTE(_AS4))
# endif
#endif
#ifndef ISSI_TIMEOUT
# define ISSI_TIMEOUT 5
#endif

View File

@@ -95,6 +95,7 @@ __attribute__((weak)) bool get_auto_shift_no_auto_repeat(uint16_t keycode, keyre
__attribute__((weak)) void autoshift_press_user(uint16_t keycode, bool shifted, keyrecord_t *record) {
if (shifted) {
add_weak_mods(MOD_BIT(KC_LSFT));
send_keyboard_report();
}
register_code16((IS_RETRO(keycode)) ? keycode & 0xFF : keycode);
}

View File

@@ -152,6 +152,7 @@ __attribute__((weak)) bool caps_word_press_user(uint16_t keycode) {
case KC_A ... KC_Z:
case KC_MINS:
add_weak_mods(MOD_BIT(KC_LSFT)); // Apply shift to next key.
send_keyboard_report();
return true;
// Keycodes that continue Caps Word, without shifting.