-#if 0
-/* Key Action */
-inline
-static void key_action(uint8_t code, keyevent_t event)
-{
- if (event.pressed)
- key_pressed(code, event);
- else
- key_released(code, event);
-}
-
-void fn_action(uint8_t code, keyevent_t event)
-{
-}
-
-/* Key */
-inline static void key_pressed(uint8_t code, keyevent_t event)
-{
- uint8_t tmp_mods;
- switch (kbdstate) {
- case IDLE:
- register_code(code);
- NEXT(PRESSING);
- break;
- case PRESSING:
- register_code(code);
- break;
- case DELAYING:
- waiting_key = (keyrecord_t) {
- .event = event,
- .code = code,
- .mods = keyboard_report->mods,
- .time = timer_read()
- };
- NEXT(WAITING);
- break;
- case WAITING:
- // play back key stroke
- tmp_mods = keyboard_report->mods;
- host_set_mods(delayed_fn.mods);
- register_code(delayed_fn.code);
- host_set_mods(waiting_key.mods);
- register_code(waiting_key.code);
- host_set_mods(tmp_mods);
- register_code(code);
- NEXT(IDLE);
- break;
- }
-}
-inline static void key_released(uint8_t code, keyevent_t event)
-{
- uint8_t tmp_mods;
- switch (kbdstate) {
- case IDLE:
- unregister_code(code);
- break;
- case PRESSING:
- unregister_code(code);
- if (!anykey_sent_to_host())
- NEXT(IDLE);
- break;
- case DELAYING:
- unregister_code(code);
- break;
- case WAITING:
- if (code == waiting_key.code) {
- layer_switch_on(delayed_fn.code);
- NEXT(IDLE);
- // process waiting_key
- tmp_mods = keyboard_report->mods;
- host_set_mods(waiting_key.mods);
- keymap_process_event(waiting_key.event);
- host_set_mods(tmp_mods);
- keymap_process_event(event);
- } else {
- unregister_code(code);
- }
- break;
- }
-}
-
-/* layer switch momentary */
-inline static void layerkey_pressed(uint8_t code, keyevent_t event)
-{
- uint8_t tmp_mods;
- switch (kbdstate) {
- case IDLE:
- layer_switch_on(code);
- break;
- case PRESSING:
- // ignore
- break;
- case DELAYING:
- waiting_key = (keyrecord_t) {
- .event = event,
- .code = code,
- .mods = keyboard_report->mods,
- .time = timer_read()
- };
- NEXT(WAITING);
- break;
- case WAITING:
- tmp_mods = keyboard_report->mods;
- host_set_mods(delayed_fn.mods);
- register_code(delayed_fn.code);
- host_set_mods(waiting_key.mods);
- register_code(waiting_key.code);
- host_set_mods(tmp_mods);
- if (kind == FN_DOWN) {
- // ignore Fn
- } else if (kind == FNK_DOWN) {
- register_code(code);
- } else if (kind == KEY_DOWN) {
- register_code(code);
- }
- NEXT(IDLE);
- break;
- }
-}
-inline static void layerkey_released(uint8_t code, keyevent_t event)
-{
- switch (kbdstate) {
- case IDLE:
- layer_switch_off(code);
- break;
- case PRESSING:
- case DELAYING:
- case WAITING:
- if (layer_switch_off(code))
- NEXT(IDLE);
- break;
- }
-}
-#endif
-
-