};
uint8_t glow_mode = GLOW_MIN;
+void turn_off_capslock(void);
extern keymap_config_t keymap_config;
enum layers {
_COLEMAK,
_WORKMAN,
_NORMAN,
+ _DEFAULT_LAYER_MAX = _NORMAN,
_PUNC,
_NUM,
oldlayer = layer;
- if (layer <= _NORMAN) {
+ if (layer <= _DEFAULT_LAYER_MAX) {
rgbsps_send();
return;
}
break;
default:
rgbsps_set(LED_IND_FUNC, 3, 3, 3);
- rgbsps_set(LED_IND_NUM, 3, 3, 3);
+ // rgbsps_set(LED_IND_NUM, 3, 3, 3);
rgbsps_set(LED_IND_EMOJI, 3, 3, 3);
}
* `-----------------------------------------------------------------------------------'
*/
[_PUNC] = KEYMAP(
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_GRV ,
- XXXXXXX, KC_ASTR, KC_BSLS, KC_MINS, KC_EQL, KC_SLSH, XXXXXXX, KC_LPRN, KC_RPRN, KC_LABK, KC_RABK, XXXXXXX,
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
+ KC_GRV, KC_ASTR, KC_BSLS, KC_MINS, KC_EQL, KC_SLSH, XXXXXXX, KC_LPRN, KC_RPRN, KC_LABK, KC_RABK, _______,
KC_AMPR, KC_CIRC, KC_PIPE, KC_UNDS, KC_PLUS, KC_QUES, XXXXXXX, KC_LBRC, KC_RBRC, KC_LCBR, KC_RCBR, KC_COLN,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
* `-----------------------------------------------------------------------------------'
*/
[_NUM] = KEYMAP(
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, S(KC_A), KC_7, KC_8, KC_9, S(KC_D), KC_GRV,
- XXXXXXX, KC_ASTR, KC_BSLS, KC_MINS, KC_EQL, KC_SLSH, S(KC_B), KC_4, KC_5, KC_6, S(KC_E), _______,
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, S(KC_A), KC_7, KC_8, KC_9, S(KC_D), _______,
+ KC_GRV, KC_ASTR, KC_BSLS, KC_MINS, KC_EQL, KC_SLSH, S(KC_B), KC_4, KC_5, KC_6, S(KC_E), _______,
KC_AMPR, KC_CIRC, KC_PIPE, KC_UNDS, KC_PLUS, KC_QUES, S(KC_C), KC_1, KC_2, KC_3, S(KC_F), KC_COLN,
- _______, _______, _______, _______, _______, _______, KC_X, KC_0, KC_COMM, KC_DOT, _______, _______
+ _______, _______, _______, _______, _______, _______, _______, KC_0, KC_COMM, KC_DOT, KC_X, _______
),
/* Func
[_GUI] = KEYMAP(
XXXXXXX, G(KC_1), G(KC_2), G(KC_3), G(KC_4), G(KC_5), G(KC_6), G(KC_7), G(KC_8), G(KC_9), G(KC_0), XXXXXXX,
XXXXXXX, XXXXXXX, KC_VOLD, KC_MUTE, KC_VOLU, XXXXXXX, XXXXXXX, KC_WWWB, XXXXXXX, KC_WWWF, XXXXXXX, XXXXXXX,
- XXXXXXX, XXXXXXX, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, KC_MPRV, KC_MPLY, KC_MNXT, KC_SPC, KC_SPC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX
),
default_layer_set(default_layer);
}
+#ifdef DOUBLESPACE_LAYER_ENABLE
+void process_doublespace(bool pressed, bool *isactive, bool *otheractive, bool *isemitted) {
+ if (pressed) {
+ *isactive = true;
+ if (*otheractive) {
+ layer_on(_SPACE);
+ space_layer_entered = true;
+ }
+ } else {
+ *isactive = false;
+ if (space_layer_entered) {
+ layer_off(_SPACE);
+ if (!*otheractive) {
+ space_layer_entered = false;
+ }
+ } else {
+ if (!*isemitted) {
+ register_code(KC_SPC);
+ unregister_code(KC_SPC);
+ }
+ *isemitted = false;
+ }
+ }
+}
+#endif
+
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
bool lshift = keyboard_report->mods & MOD_BIT(KC_LSFT);
bool rshift = keyboard_report->mods & MOD_BIT(KC_RSFT);
#ifdef DOUBLESPACE_LAYER_ENABLE
// double-space enter space layer
case LSPACE:
- if (record->event.pressed) {
- lspace_active = true;
- if (rspace_active) {
- layer_on(_SPACE);
- space_layer_entered = true;
- }
- } else {
- lspace_active = false;
- if (space_layer_entered) {
- layer_off(_SPACE);
- if (!rspace_active) {
- space_layer_entered = false;
- }
- } else {
- if (!lspace_emitted) {
- register_code(KC_SPC);
- unregister_code(KC_SPC);
- }
- lspace_emitted = false;
- }
- }
+ process_doublespace(record->event.pressed, &lspace_active, &rspace_active, &lspace_emitted);
return false;
break;
case RSPACE:
- if (record->event.pressed) {
- rspace_active = true;
- if (lspace_active) {
- layer_on(_SPACE);
- space_layer_entered = true;
- }
- } else {
- rspace_active = false;
- if (space_layer_entered) {
- layer_off(_SPACE);
- if (!lspace_active) {
- space_layer_entered = false;
- }
- } else {
- if (!rspace_emitted) {
- register_code(KC_SPC);
- unregister_code(KC_SPC);
- }
- rspace_emitted = false;
- }
- }
+ process_doublespace(record->event.pressed, &rspace_active, &lspace_active, &rspace_emitted);
return false;
break;
#endif
return true;
break;
- // press both Supers to activate EMOJI layer
- case KC_LGUI:
- case KC_RGUI:
- ;
- bool lgui = keyboard_report->mods & MOD_BIT(KC_LGUI);
- bool rgui = keyboard_report->mods & MOD_BIT(KC_RGUI);
- if (record->event.pressed) {
- if (lgui ^ rgui) { // if only one super was pressed
- layer_on(_EMOJI);
- }
- } else {
- layer_off(_EMOJI);
- }
- return true;
- break;
-
// QWERTZ style comma and dot: semicolon and colon when shifted
case KC_COMM:
if (record->event.pressed) {
case PUNC:
if (record->event.pressed) {
layer_on(_PUNC);
- update_tri_layer(_PUNC, _GREEKL, _GUI);
+ update_tri_layer(_PUNC, _GREEKL, _EMOJI);
} else {
layer_off(_PUNC);
- update_tri_layer(_PUNC, _GREEKL, _GUI);
+ update_tri_layer(_PUNC, _GREEKL, _EMOJI);
}
return false;
break;
} else {
layer_on(_GREEKL);
layer_off(_GREEKU);
- update_tri_layer(_PUNC, _GREEKL, _GUI);
+ update_tri_layer(_PUNC, _GREEKL, _EMOJI);
}
} else {
layer_off(_GREEKU);
layer_off(_GREEKL);
- update_tri_layer(_PUNC, _GREEKL, _GUI);
+ update_tri_layer(_PUNC, _GREEKL, _EMOJI);
}
return false;
break;
case NUM:
if (record->event.pressed) {
+ turn_off_capslock();
layer_on(_NUM);
} else {
layer_off(_NUM);
void led_set_user(uint8_t usb_led) {
bool new_capslock = usb_led & (1<<USB_LED_CAPS_LOCK);
if (new_capslock ^ capslock) { // capslock state is different
- if (capslock = new_capslock) {
+ if ((capslock = new_capslock)) {
rgbsps_set(LED_IND_NUM, 15, 0, 0);
} else {
rgbsps_set(LED_IND_NUM, 0, 0, 0);
}
}
+void turn_off_capslock() {
+ if (capslock) {
+ register_code(KC_CAPS);
+ unregister_code(KC_CAPS);
+ }
+}
+
void ps2_mouse_init_user() {
uint8_t rcv;