#include "command.h"
#include "util.h"
#include "debug.h"
+#include "led.h"
#include "layer_switch.h"
#include "action_macro.h"
#include "action.h"
case OP_RESET:
switch (action.layer.val & 0x03) {
case 0:
+ // NOTE: reserved
overlay_clear();
keymap_clear();
break;
overlay_clear();
keymap_clear();
break;
+ /* NOTE: 4-7 rserved */
}
break;
/* Keymap Reset default layer */
case (OP_RESET | ON_PRESS):
if (event.pressed) {
- overlay_clear();
- keymap_clear();
default_layer_set(action.layer.val);
}
break;
case (OP_RESET | ON_RELEASE):
if (!event.pressed) {
- overlay_clear();
- keymap_clear();
default_layer_set(action.layer.val);
}
break;
case (OP_RESET | ON_BOTH):
- overlay_clear();
- keymap_clear();
default_layer_set(action.layer.val);
break;
// Overlay Invert bit4
case OP_INV4 | 0:
if (action.layer.val == 0) {
+ // NOTE: reserved for future use
overlay_clear();
} else {
overlay_set(overlay_stat ^ action.layer.val);
break;
case OP_INV4 | 1:
if (action.layer.val == 0) {
+ // on pressed
if (event.pressed) overlay_clear();
} else {
overlay_set(overlay_stat ^ action.layer.val<<4);
break;
case OP_INV4 | 2:
if (action.layer.val == 0) {
+ // on released
if (!event.pressed) overlay_clear();
} else {
overlay_set(overlay_stat ^ action.layer.val<<8);
break;
case OP_INV4 | 3:
if (action.layer.val == 0) {
+ // on both
overlay_clear();
} else {
overlay_set(overlay_stat ^ action.layer.val<<12);
if (code == KC_NO) {
return;
}
+#ifdef CAPSLOCK_LOCKING_ENABLE
+ else if (KC_LOCKING_CAPS == code) {
+#ifdef CAPSLOCK_LOCKING_RESYNC_ENABLE
+ // Resync: ignore if caps lock already is on
+ if (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) return;
+#endif
+ host_add_key(KC_CAPSLOCK);
+ host_send_keyboard_report();
+ host_del_key(KC_CAPSLOCK);
+ host_send_keyboard_report();
+ }
+#endif
else if IS_KEY(code) {
// TODO: should push command_proc out of this block?
if (command_proc(code)) return;
void unregister_code(uint8_t code)
{
- if IS_KEY(code) {
+ if (code == KC_NO) {
+ return;
+ }
+#ifdef CAPSLOCK_LOCKING_ENABLE
+ else if (KC_LOCKING_CAPS == code) {
+#ifdef CAPSLOCK_LOCKING_RESYNC_ENABLE
+ // Resync: ignore if caps lock already is off
+ if (!(host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK))) return;
+#endif
+ host_add_key(KC_CAPSLOCK);
+ host_send_keyboard_report();
+ host_del_key(KC_CAPSLOCK);
+ host_send_keyboard_report();
+ }
+#endif
+ else if IS_KEY(code) {
host_del_key(code);
host_send_keyboard_report();
}