forked from mirrors/qmk_userspace
		
	[Core] guard action related debug messages (#19348)
This commit is contained in:
		
					parent
					
						
							
								233ae20d33
							
						
					
				
			
			
				commit
				
					
						dedc54a328
					
				
			
		
					 5 changed files with 99 additions and 158 deletions
				
			
		
							
								
								
									
										107
									
								
								quantum/action.c
									
										
									
									
									
								
							
							
						
						
									
										107
									
								
								quantum/action.c
									
										
									
									
									
								
							| 
						 | 
					@ -16,12 +16,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
#include <limits.h>
 | 
					#include <limits.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef DEBUG_ACTION
 | 
					 | 
				
			||||||
#    include "debug.h"
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
#    include "nodebug.h"
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include "host.h"
 | 
					#include "host.h"
 | 
				
			||||||
#include "keycode.h"
 | 
					#include "keycode.h"
 | 
				
			||||||
#include "keyboard.h"
 | 
					#include "keyboard.h"
 | 
				
			||||||
| 
						 | 
					@ -77,10 +71,10 @@ __attribute__((weak)) bool pre_process_record_quantum(keyrecord_t *record) {
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
void action_exec(keyevent_t event) {
 | 
					void action_exec(keyevent_t event) {
 | 
				
			||||||
    if (!IS_NOEVENT(event)) {
 | 
					    if (!IS_NOEVENT(event)) {
 | 
				
			||||||
        dprint("\n---- action_exec: start -----\n");
 | 
					        ac_dprintf("\n---- action_exec: start -----\n");
 | 
				
			||||||
        dprint("EVENT: ");
 | 
					        ac_dprintf("EVENT: ");
 | 
				
			||||||
        debug_event(event);
 | 
					        debug_event(event);
 | 
				
			||||||
        dprintln();
 | 
					        ac_dprintf("\n");
 | 
				
			||||||
#if defined(RETRO_TAPPING) || defined(RETRO_TAPPING_PER_KEY) || (defined(AUTO_SHIFT_ENABLE) && defined(RETRO_SHIFT))
 | 
					#if defined(RETRO_TAPPING) || defined(RETRO_TAPPING_PER_KEY) || (defined(AUTO_SHIFT_ENABLE) && defined(RETRO_SHIFT))
 | 
				
			||||||
        retro_tapping_counter++;
 | 
					        retro_tapping_counter++;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					@ -132,7 +126,7 @@ void action_exec(keyevent_t event) {
 | 
				
			||||||
        process_record(&record);
 | 
					        process_record(&record);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if (!IS_NOEVENT(record.event)) {
 | 
					    if (!IS_NOEVENT(record.event)) {
 | 
				
			||||||
        dprint("processed: ");
 | 
					        ac_dprintf("processed: ");
 | 
				
			||||||
        debug_record(record);
 | 
					        debug_record(record);
 | 
				
			||||||
        dprintln();
 | 
					        dprintln();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					@ -280,15 +274,15 @@ void process_record_handler(keyrecord_t *record) {
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
    action_t action = store_or_get_action(record->event.pressed, record->event.key);
 | 
					    action_t action = store_or_get_action(record->event.pressed, record->event.key);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
    dprint("ACTION: ");
 | 
					    ac_dprintf("ACTION: ");
 | 
				
			||||||
    debug_action(action);
 | 
					    debug_action(action);
 | 
				
			||||||
#ifndef NO_ACTION_LAYER
 | 
					#ifndef NO_ACTION_LAYER
 | 
				
			||||||
    dprint(" layer_state: ");
 | 
					    ac_dprintf(" layer_state: ");
 | 
				
			||||||
    layer_debug();
 | 
					    layer_debug();
 | 
				
			||||||
    dprint(" default_layer_state: ");
 | 
					    ac_dprintf(" default_layer_state: ");
 | 
				
			||||||
    default_layer_debug();
 | 
					    default_layer_debug();
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
    dprintln();
 | 
					    ac_dprintf("\n");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    process_action(record, action);
 | 
					    process_action(record, action);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -432,14 +426,14 @@ void process_action(keyrecord_t *record, action_t action) {
 | 
				
			||||||
                    } else {
 | 
					                    } else {
 | 
				
			||||||
                        if (event.pressed) {
 | 
					                        if (event.pressed) {
 | 
				
			||||||
                            if (tap_count == 0) {
 | 
					                            if (tap_count == 0) {
 | 
				
			||||||
                                dprint("MODS_TAP: Oneshot: 0\n");
 | 
					                                ac_dprintf("MODS_TAP: Oneshot: 0\n");
 | 
				
			||||||
                                register_mods(mods | get_oneshot_mods());
 | 
					                                register_mods(mods | get_oneshot_mods());
 | 
				
			||||||
                            } else if (tap_count == 1) {
 | 
					                            } else if (tap_count == 1) {
 | 
				
			||||||
                                dprint("MODS_TAP: Oneshot: start\n");
 | 
					                                ac_dprintf("MODS_TAP: Oneshot: start\n");
 | 
				
			||||||
                                set_oneshot_mods(mods | get_oneshot_mods());
 | 
					                                set_oneshot_mods(mods | get_oneshot_mods());
 | 
				
			||||||
#        if defined(ONESHOT_TAP_TOGGLE) && ONESHOT_TAP_TOGGLE > 1
 | 
					#        if defined(ONESHOT_TAP_TOGGLE) && ONESHOT_TAP_TOGGLE > 1
 | 
				
			||||||
                            } else if (tap_count == ONESHOT_TAP_TOGGLE) {
 | 
					                            } else if (tap_count == ONESHOT_TAP_TOGGLE) {
 | 
				
			||||||
                                dprint("MODS_TAP: Toggling oneshot");
 | 
					                                ac_dprintf("MODS_TAP: Toggling oneshot");
 | 
				
			||||||
                                register_mods(mods);
 | 
					                                register_mods(mods);
 | 
				
			||||||
                                clear_oneshot_mods();
 | 
					                                clear_oneshot_mods();
 | 
				
			||||||
                                set_oneshot_locked_mods(mods | get_oneshot_locked_mods());
 | 
					                                set_oneshot_locked_mods(mods | get_oneshot_locked_mods());
 | 
				
			||||||
| 
						 | 
					@ -490,23 +484,23 @@ void process_action(keyrecord_t *record, action_t action) {
 | 
				
			||||||
                                get_hold_on_other_key_press(get_event_keycode(record->event, false), record) &&
 | 
					                                get_hold_on_other_key_press(get_event_keycode(record->event, false), record) &&
 | 
				
			||||||
#        endif
 | 
					#        endif
 | 
				
			||||||
                                record->tap.interrupted) {
 | 
					                                record->tap.interrupted) {
 | 
				
			||||||
                                dprint("mods_tap: tap: cancel: add_mods\n");
 | 
					                                ac_dprintf("mods_tap: tap: cancel: add_mods\n");
 | 
				
			||||||
                                // ad hoc: set 0 to cancel tap
 | 
					                                // ad hoc: set 0 to cancel tap
 | 
				
			||||||
                                record->tap.count = 0;
 | 
					                                record->tap.count = 0;
 | 
				
			||||||
                                register_mods(mods);
 | 
					                                register_mods(mods);
 | 
				
			||||||
                            } else
 | 
					                            } else
 | 
				
			||||||
#    endif
 | 
					#    endif
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                dprint("MODS_TAP: Tap: register_code\n");
 | 
					                                ac_dprintf("MODS_TAP: Tap: register_code\n");
 | 
				
			||||||
                                register_code(action.key.code);
 | 
					                                register_code(action.key.code);
 | 
				
			||||||
                            }
 | 
					                            }
 | 
				
			||||||
                        } else {
 | 
					                        } else {
 | 
				
			||||||
                            dprint("MODS_TAP: No tap: add_mods\n");
 | 
					                            ac_dprintf("MODS_TAP: No tap: add_mods\n");
 | 
				
			||||||
                            register_mods(mods);
 | 
					                            register_mods(mods);
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                    } else {
 | 
					                    } else {
 | 
				
			||||||
                        if (tap_count > 0) {
 | 
					                        if (tap_count > 0) {
 | 
				
			||||||
                            dprint("MODS_TAP: Tap: unregister_code\n");
 | 
					                            ac_dprintf("MODS_TAP: Tap: unregister_code\n");
 | 
				
			||||||
                            if (action.layer_tap.code == KC_CAPS_LOCK) {
 | 
					                            if (action.layer_tap.code == KC_CAPS_LOCK) {
 | 
				
			||||||
                                wait_ms(TAP_HOLD_CAPS_DELAY);
 | 
					                                wait_ms(TAP_HOLD_CAPS_DELAY);
 | 
				
			||||||
                            } else {
 | 
					                            } else {
 | 
				
			||||||
| 
						 | 
					@ -514,7 +508,7 @@ void process_action(keyrecord_t *record, action_t action) {
 | 
				
			||||||
                            }
 | 
					                            }
 | 
				
			||||||
                            unregister_code(action.key.code);
 | 
					                            unregister_code(action.key.code);
 | 
				
			||||||
                        } else {
 | 
					                        } else {
 | 
				
			||||||
                            dprint("MODS_TAP: No tap: add_mods\n");
 | 
					                            ac_dprintf("MODS_TAP: No tap: add_mods\n");
 | 
				
			||||||
                            unregister_mods(mods);
 | 
					                            unregister_mods(mods);
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
| 
						 | 
					@ -666,15 +660,15 @@ void process_action(keyrecord_t *record, action_t action) {
 | 
				
			||||||
                    /* tap key */
 | 
					                    /* tap key */
 | 
				
			||||||
                    if (event.pressed) {
 | 
					                    if (event.pressed) {
 | 
				
			||||||
                        if (tap_count > 0) {
 | 
					                        if (tap_count > 0) {
 | 
				
			||||||
                            dprint("KEYMAP_TAP_KEY: Tap: register_code\n");
 | 
					                            ac_dprintf("KEYMAP_TAP_KEY: Tap: register_code\n");
 | 
				
			||||||
                            register_code(action.layer_tap.code);
 | 
					                            register_code(action.layer_tap.code);
 | 
				
			||||||
                        } else {
 | 
					                        } else {
 | 
				
			||||||
                            dprint("KEYMAP_TAP_KEY: No tap: On on press\n");
 | 
					                            ac_dprintf("KEYMAP_TAP_KEY: No tap: On on press\n");
 | 
				
			||||||
                            layer_on(action.layer_tap.val);
 | 
					                            layer_on(action.layer_tap.val);
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                    } else {
 | 
					                    } else {
 | 
				
			||||||
                        if (tap_count > 0) {
 | 
					                        if (tap_count > 0) {
 | 
				
			||||||
                            dprint("KEYMAP_TAP_KEY: Tap: unregister_code\n");
 | 
					                            ac_dprintf("KEYMAP_TAP_KEY: Tap: unregister_code\n");
 | 
				
			||||||
                            if (action.layer_tap.code == KC_CAPS_LOCK) {
 | 
					                            if (action.layer_tap.code == KC_CAPS_LOCK) {
 | 
				
			||||||
                                wait_ms(TAP_HOLD_CAPS_DELAY);
 | 
					                                wait_ms(TAP_HOLD_CAPS_DELAY);
 | 
				
			||||||
                            } else {
 | 
					                            } else {
 | 
				
			||||||
| 
						 | 
					@ -682,7 +676,7 @@ void process_action(keyrecord_t *record, action_t action) {
 | 
				
			||||||
                            }
 | 
					                            }
 | 
				
			||||||
                            unregister_code(action.layer_tap.code);
 | 
					                            unregister_code(action.layer_tap.code);
 | 
				
			||||||
                        } else {
 | 
					                        } else {
 | 
				
			||||||
                            dprint("KEYMAP_TAP_KEY: No tap: Off on release\n");
 | 
					                            ac_dprintf("KEYMAP_TAP_KEY: No tap: Off on release\n");
 | 
				
			||||||
                            layer_off(action.layer_tap.val);
 | 
					                            layer_off(action.layer_tap.val);
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
| 
						 | 
					@ -882,32 +876,15 @@ __attribute__((weak)) void register_code(uint8_t code) {
 | 
				
			||||||
        // TODO: should push command_proc out of this block?
 | 
					        // TODO: should push command_proc out of this block?
 | 
				
			||||||
        if (command_proc(code)) return;
 | 
					        if (command_proc(code)) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef NO_ACTION_ONESHOT
 | 
					        // Force a new key press if the key is already pressed
 | 
				
			||||||
/* TODO: remove
 | 
					        // without this, keys with the same keycode, but different
 | 
				
			||||||
        if (oneshot_state.mods && !oneshot_state.disabled) {
 | 
					        // modifiers will be reported incorrectly, see issue #1708
 | 
				
			||||||
            uint8_t tmp_mods = get_mods();
 | 
					        if (is_key_pressed(keyboard_report, code)) {
 | 
				
			||||||
            add_mods(oneshot_state.mods);
 | 
					            del_key(code);
 | 
				
			||||||
 | 
					 | 
				
			||||||
            add_key(code);
 | 
					 | 
				
			||||||
            send_keyboard_report();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            set_mods(tmp_mods);
 | 
					 | 
				
			||||||
            send_keyboard_report();
 | 
					 | 
				
			||||||
            oneshot_cancel();
 | 
					 | 
				
			||||||
        } else
 | 
					 | 
				
			||||||
*/
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            // Force a new key press if the key is already pressed
 | 
					 | 
				
			||||||
            // without this, keys with the same keycode, but different
 | 
					 | 
				
			||||||
            // modifiers will be reported incorrectly, see issue #1708
 | 
					 | 
				
			||||||
            if (is_key_pressed(keyboard_report, code)) {
 | 
					 | 
				
			||||||
                del_key(code);
 | 
					 | 
				
			||||||
                send_keyboard_report();
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            add_key(code);
 | 
					 | 
				
			||||||
            send_keyboard_report();
 | 
					            send_keyboard_report();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        add_key(code);
 | 
				
			||||||
 | 
					        send_keyboard_report();
 | 
				
			||||||
    } else if IS_MOD (code) {
 | 
					    } else if IS_MOD (code) {
 | 
				
			||||||
        add_mods(MOD_BIT(code));
 | 
					        add_mods(MOD_BIT(code));
 | 
				
			||||||
        send_keyboard_report();
 | 
					        send_keyboard_report();
 | 
				
			||||||
| 
						 | 
					@ -1139,7 +1116,7 @@ bool is_tap_action(action_t action) {
 | 
				
			||||||
 * FIXME: Needs documentation.
 | 
					 * FIXME: Needs documentation.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
void debug_event(keyevent_t event) {
 | 
					void debug_event(keyevent_t event) {
 | 
				
			||||||
    dprintf("%04X%c(%u)", (event.key.row << 8 | event.key.col), (event.pressed ? 'd' : 'u'), event.time);
 | 
					    ac_dprintf("%04X%c(%u)", (event.key.row << 8 | event.key.col), (event.pressed ? 'd' : 'u'), event.time);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
/** \brief Debug print (FIXME: Needs better description)
 | 
					/** \brief Debug print (FIXME: Needs better description)
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
| 
						 | 
					@ -1148,7 +1125,7 @@ void debug_event(keyevent_t event) {
 | 
				
			||||||
void debug_record(keyrecord_t record) {
 | 
					void debug_record(keyrecord_t record) {
 | 
				
			||||||
    debug_event(record.event);
 | 
					    debug_event(record.event);
 | 
				
			||||||
#ifndef NO_ACTION_TAPPING
 | 
					#ifndef NO_ACTION_TAPPING
 | 
				
			||||||
    dprintf(":%u%c", record.tap.count, (record.tap.interrupted ? '-' : ' '));
 | 
					    ac_dprintf(":%u%c", record.tap.count, (record.tap.interrupted ? '-' : ' '));
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1159,41 +1136,41 @@ void debug_record(keyrecord_t record) {
 | 
				
			||||||
void debug_action(action_t action) {
 | 
					void debug_action(action_t action) {
 | 
				
			||||||
    switch (action.kind.id) {
 | 
					    switch (action.kind.id) {
 | 
				
			||||||
        case ACT_LMODS:
 | 
					        case ACT_LMODS:
 | 
				
			||||||
            dprint("ACT_LMODS");
 | 
					            ac_dprintf("ACT_LMODS");
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
        case ACT_RMODS:
 | 
					        case ACT_RMODS:
 | 
				
			||||||
            dprint("ACT_RMODS");
 | 
					            ac_dprintf("ACT_RMODS");
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
        case ACT_LMODS_TAP:
 | 
					        case ACT_LMODS_TAP:
 | 
				
			||||||
            dprint("ACT_LMODS_TAP");
 | 
					            ac_dprintf("ACT_LMODS_TAP");
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
        case ACT_RMODS_TAP:
 | 
					        case ACT_RMODS_TAP:
 | 
				
			||||||
            dprint("ACT_RMODS_TAP");
 | 
					            ac_dprintf("ACT_RMODS_TAP");
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
        case ACT_USAGE:
 | 
					        case ACT_USAGE:
 | 
				
			||||||
            dprint("ACT_USAGE");
 | 
					            ac_dprintf("ACT_USAGE");
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
        case ACT_MOUSEKEY:
 | 
					        case ACT_MOUSEKEY:
 | 
				
			||||||
            dprint("ACT_MOUSEKEY");
 | 
					            ac_dprintf("ACT_MOUSEKEY");
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
        case ACT_LAYER:
 | 
					        case ACT_LAYER:
 | 
				
			||||||
            dprint("ACT_LAYER");
 | 
					            ac_dprintf("ACT_LAYER");
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
        case ACT_LAYER_MODS:
 | 
					        case ACT_LAYER_MODS:
 | 
				
			||||||
            dprint("ACT_LAYER_MODS");
 | 
					            ac_dprintf("ACT_LAYER_MODS");
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
        case ACT_LAYER_TAP:
 | 
					        case ACT_LAYER_TAP:
 | 
				
			||||||
            dprint("ACT_LAYER_TAP");
 | 
					            ac_dprintf("ACT_LAYER_TAP");
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
        case ACT_LAYER_TAP_EXT:
 | 
					        case ACT_LAYER_TAP_EXT:
 | 
				
			||||||
            dprint("ACT_LAYER_TAP_EXT");
 | 
					            ac_dprintf("ACT_LAYER_TAP_EXT");
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
        case ACT_SWAP_HANDS:
 | 
					        case ACT_SWAP_HANDS:
 | 
				
			||||||
            dprint("ACT_SWAP_HANDS");
 | 
					            ac_dprintf("ACT_SWAP_HANDS");
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
        default:
 | 
					        default:
 | 
				
			||||||
            dprint("UNKNOWN");
 | 
					            ac_dprintf("UNKNOWN");
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    dprintf("[%X:%02X]", action.kind.param >> 8, action.kind.param & 0xff);
 | 
					    ac_dprintf("[%X:%02X]", action.kind.param >> 8, action.kind.param & 0xff);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -112,7 +112,19 @@ bool is_tap_action(action_t action);
 | 
				
			||||||
void process_record_tap_hint(keyrecord_t *record);
 | 
					void process_record_tap_hint(keyrecord_t *record);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* debug */
 | 
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					// Helpers
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef ACTION_DEBUG
 | 
				
			||||||
 | 
					#    include "debug.h"
 | 
				
			||||||
 | 
					#    include "print.h"
 | 
				
			||||||
 | 
					#    define ac_dprintf(...) dprintf(__VA_ARGS__)
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					#    define ac_dprintf(...) \
 | 
				
			||||||
 | 
					        do {                \
 | 
				
			||||||
 | 
					        } while (0)
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void debug_event(keyevent_t event);
 | 
					void debug_event(keyevent_t event);
 | 
				
			||||||
void debug_record(keyrecord_t record);
 | 
					void debug_record(keyrecord_t record);
 | 
				
			||||||
void debug_action(action_t action);
 | 
					void debug_action(action_t action);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,12 +1,6 @@
 | 
				
			||||||
#include <limits.h>
 | 
					#include <limits.h>
 | 
				
			||||||
#include <stdint.h>
 | 
					#include <stdint.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef DEBUG_ACTION
 | 
					 | 
				
			||||||
#    include "debug.h"
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
#    include "nodebug.h"
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include "keyboard.h"
 | 
					#include "keyboard.h"
 | 
				
			||||||
#include "keymap.h"
 | 
					#include "keymap.h"
 | 
				
			||||||
#include "action.h"
 | 
					#include "action.h"
 | 
				
			||||||
| 
						 | 
					@ -39,12 +33,12 @@ __attribute__((weak)) layer_state_t default_layer_state_set_kb(layer_state_t sta
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
static void default_layer_state_set(layer_state_t state) {
 | 
					static void default_layer_state_set(layer_state_t state) {
 | 
				
			||||||
    state = default_layer_state_set_kb(state);
 | 
					    state = default_layer_state_set_kb(state);
 | 
				
			||||||
    debug("default_layer_state: ");
 | 
					    ac_dprintf("default_layer_state: ");
 | 
				
			||||||
    default_layer_debug();
 | 
					    default_layer_debug();
 | 
				
			||||||
    debug(" to ");
 | 
					    ac_dprintf(" to ");
 | 
				
			||||||
    default_layer_state = state;
 | 
					    default_layer_state = state;
 | 
				
			||||||
    default_layer_debug();
 | 
					    default_layer_debug();
 | 
				
			||||||
    debug("\n");
 | 
					    ac_dprintf("\n");
 | 
				
			||||||
#if defined(STRICT_LAYER_RELEASE)
 | 
					#if defined(STRICT_LAYER_RELEASE)
 | 
				
			||||||
    clear_keyboard_but_mods(); // To avoid stuck keys
 | 
					    clear_keyboard_but_mods(); // To avoid stuck keys
 | 
				
			||||||
#elif defined(SEMI_STRICT_LAYER_RELEASE)
 | 
					#elif defined(SEMI_STRICT_LAYER_RELEASE)
 | 
				
			||||||
| 
						 | 
					@ -57,7 +51,7 @@ static void default_layer_state_set(layer_state_t state) {
 | 
				
			||||||
 * Print out the hex value of the 32-bit default layer state, as well as the value of the highest bit.
 | 
					 * Print out the hex value of the 32-bit default layer state, as well as the value of the highest bit.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
void default_layer_debug(void) {
 | 
					void default_layer_debug(void) {
 | 
				
			||||||
    dprintf("%08lX(%u)", default_layer_state, get_highest_layer(default_layer_state));
 | 
					    ac_dprintf("%08hX(%u)", default_layer_state, get_highest_layer(default_layer_state));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** \brief Default Layer Set
 | 
					/** \brief Default Layer Set
 | 
				
			||||||
| 
						 | 
					@ -119,12 +113,12 @@ __attribute__((weak)) layer_state_t layer_state_set_kb(layer_state_t state) {
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
void layer_state_set(layer_state_t state) {
 | 
					void layer_state_set(layer_state_t state) {
 | 
				
			||||||
    state = layer_state_set_kb(state);
 | 
					    state = layer_state_set_kb(state);
 | 
				
			||||||
    dprint("layer_state: ");
 | 
					    ac_dprintf("layer_state: ");
 | 
				
			||||||
    layer_debug();
 | 
					    layer_debug();
 | 
				
			||||||
    dprint(" to ");
 | 
					    ac_dprintf(" to ");
 | 
				
			||||||
    layer_state = state;
 | 
					    layer_state = state;
 | 
				
			||||||
    layer_debug();
 | 
					    layer_debug();
 | 
				
			||||||
    dprintln();
 | 
					    ac_dprintf("\n");
 | 
				
			||||||
#    if defined(STRICT_LAYER_RELEASE)
 | 
					#    if defined(STRICT_LAYER_RELEASE)
 | 
				
			||||||
    clear_keyboard_but_mods(); // To avoid stuck keys
 | 
					    clear_keyboard_but_mods(); // To avoid stuck keys
 | 
				
			||||||
#    elif defined(SEMI_STRICT_LAYER_RELEASE)
 | 
					#    elif defined(SEMI_STRICT_LAYER_RELEASE)
 | 
				
			||||||
| 
						 | 
					@ -218,7 +212,7 @@ void layer_xor(layer_state_t state) {
 | 
				
			||||||
 * Print out the hex value of the 32-bit layer state, as well as the value of the highest bit.
 | 
					 * Print out the hex value of the 32-bit layer state, as well as the value of the highest bit.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
void layer_debug(void) {
 | 
					void layer_debug(void) {
 | 
				
			||||||
    dprintf("%08lX(%u)", layer_state, get_highest_layer(layer_state));
 | 
					    ac_dprintf("%08hX(%u)", layer_state, get_highest_layer(layer_state));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,12 +1,6 @@
 | 
				
			||||||
#include <stdint.h>
 | 
					#include <stdint.h>
 | 
				
			||||||
#include <stdbool.h>
 | 
					#include <stdbool.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef DEBUG_ACTION
 | 
					 | 
				
			||||||
#    include "debug.h"
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
#    include "nodebug.h"
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include "action.h"
 | 
					#include "action.h"
 | 
				
			||||||
#include "action_layer.h"
 | 
					#include "action_layer.h"
 | 
				
			||||||
#include "action_tapping.h"
 | 
					#include "action_tapping.h"
 | 
				
			||||||
| 
						 | 
					@ -92,14 +86,14 @@ static void debug_waiting_buffer(void);
 | 
				
			||||||
void action_tapping_process(keyrecord_t record) {
 | 
					void action_tapping_process(keyrecord_t record) {
 | 
				
			||||||
    if (process_tapping(&record)) {
 | 
					    if (process_tapping(&record)) {
 | 
				
			||||||
        if (!IS_NOEVENT(record.event)) {
 | 
					        if (!IS_NOEVENT(record.event)) {
 | 
				
			||||||
            debug("processed: ");
 | 
					            ac_dprintf("processed: ");
 | 
				
			||||||
            debug_record(record);
 | 
					            debug_record(record);
 | 
				
			||||||
            debug("\n");
 | 
					            ac_dprintf("\n");
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
        if (!waiting_buffer_enq(record)) {
 | 
					        if (!waiting_buffer_enq(record)) {
 | 
				
			||||||
            // clear all in case of overflow.
 | 
					            // clear all in case of overflow.
 | 
				
			||||||
            debug("OVERFLOW: CLEAR ALL STATES\n");
 | 
					            ac_dprintf("OVERFLOW: CLEAR ALL STATES\n");
 | 
				
			||||||
            clear_keyboard();
 | 
					            clear_keyboard();
 | 
				
			||||||
            waiting_buffer_clear();
 | 
					            waiting_buffer_clear();
 | 
				
			||||||
            tapping_key = (keyrecord_t){};
 | 
					            tapping_key = (keyrecord_t){};
 | 
				
			||||||
| 
						 | 
					@ -108,21 +102,19 @@ void action_tapping_process(keyrecord_t record) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // process waiting_buffer
 | 
					    // process waiting_buffer
 | 
				
			||||||
    if (!IS_NOEVENT(record.event) && waiting_buffer_head != waiting_buffer_tail) {
 | 
					    if (!IS_NOEVENT(record.event) && waiting_buffer_head != waiting_buffer_tail) {
 | 
				
			||||||
        debug("---- action_exec: process waiting_buffer -----\n");
 | 
					        ac_dprintf("---- action_exec: process waiting_buffer -----\n");
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    for (; waiting_buffer_tail != waiting_buffer_head; waiting_buffer_tail = (waiting_buffer_tail + 1) % WAITING_BUFFER_SIZE) {
 | 
					    for (; waiting_buffer_tail != waiting_buffer_head; waiting_buffer_tail = (waiting_buffer_tail + 1) % WAITING_BUFFER_SIZE) {
 | 
				
			||||||
        if (process_tapping(&waiting_buffer[waiting_buffer_tail])) {
 | 
					        if (process_tapping(&waiting_buffer[waiting_buffer_tail])) {
 | 
				
			||||||
            debug("processed: waiting_buffer[");
 | 
					            ac_dprintf("processed: waiting_buffer[%u] =", waiting_buffer_tail);
 | 
				
			||||||
            debug_dec(waiting_buffer_tail);
 | 
					 | 
				
			||||||
            debug("] = ");
 | 
					 | 
				
			||||||
            debug_record(waiting_buffer[waiting_buffer_tail]);
 | 
					            debug_record(waiting_buffer[waiting_buffer_tail]);
 | 
				
			||||||
            debug("\n\n");
 | 
					            ac_dprintf("\n\n");
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if (!IS_NOEVENT(record.event)) {
 | 
					    if (!IS_NOEVENT(record.event)) {
 | 
				
			||||||
        debug("\n");
 | 
					        ac_dprintf("\n");
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -195,7 +187,7 @@ bool process_tapping(keyrecord_t *keyp) {
 | 
				
			||||||
                    retroshift_swap_times();
 | 
					                    retroshift_swap_times();
 | 
				
			||||||
#    endif
 | 
					#    endif
 | 
				
			||||||
                    // first tap!
 | 
					                    // first tap!
 | 
				
			||||||
                    debug("Tapping: First tap(0->1).\n");
 | 
					                    ac_dprintf("Tapping: First tap(0->1).\n");
 | 
				
			||||||
                    tapping_key.tap.count = 1;
 | 
					                    tapping_key.tap.count = 1;
 | 
				
			||||||
                    debug_tapping_key();
 | 
					                    debug_tapping_key();
 | 
				
			||||||
                    process_record(&tapping_key);
 | 
					                    process_record(&tapping_key);
 | 
				
			||||||
| 
						 | 
					@ -237,7 +229,7 @@ bool process_tapping(keyrecord_t *keyp) {
 | 
				
			||||||
                    )
 | 
					                    )
 | 
				
			||||||
                ) {
 | 
					                ) {
 | 
				
			||||||
                    // clang-format on
 | 
					                    // clang-format on
 | 
				
			||||||
                    debug("Tapping: End. No tap. Interfered by typing key\n");
 | 
					                    ac_dprintf("Tapping: End. No tap. Interfered by typing key\n");
 | 
				
			||||||
                    process_record(&tapping_key);
 | 
					                    process_record(&tapping_key);
 | 
				
			||||||
                    tapping_key = (keyrecord_t){};
 | 
					                    tapping_key = (keyrecord_t){};
 | 
				
			||||||
                    debug_tapping_key();
 | 
					                    debug_tapping_key();
 | 
				
			||||||
| 
						 | 
					@ -274,7 +266,7 @@ bool process_tapping(keyrecord_t *keyp) {
 | 
				
			||||||
                            break;
 | 
					                            break;
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                    // Release of key should be process immediately.
 | 
					                    // Release of key should be process immediately.
 | 
				
			||||||
                    debug("Tapping: release event of a key pressed before tapping\n");
 | 
					                    ac_dprintf("Tapping: release event of a key pressed before tapping\n");
 | 
				
			||||||
                    process_record(keyp);
 | 
					                    process_record(keyp);
 | 
				
			||||||
                    return true;
 | 
					                    return true;
 | 
				
			||||||
                } else {
 | 
					                } else {
 | 
				
			||||||
| 
						 | 
					@ -282,7 +274,7 @@ bool process_tapping(keyrecord_t *keyp) {
 | 
				
			||||||
                    if (event.pressed) {
 | 
					                    if (event.pressed) {
 | 
				
			||||||
                        tapping_key.tap.interrupted = true;
 | 
					                        tapping_key.tap.interrupted = true;
 | 
				
			||||||
                        if (TAP_GET_HOLD_ON_OTHER_KEY_PRESS) {
 | 
					                        if (TAP_GET_HOLD_ON_OTHER_KEY_PRESS) {
 | 
				
			||||||
                            debug("Tapping: End. No tap. Interfered by pressed key\n");
 | 
					                            ac_dprintf("Tapping: End. No tap. Interfered by pressed key\n");
 | 
				
			||||||
                            process_record(&tapping_key);
 | 
					                            process_record(&tapping_key);
 | 
				
			||||||
                            tapping_key = (keyrecord_t){};
 | 
					                            tapping_key = (keyrecord_t){};
 | 
				
			||||||
                            debug_tapping_key();
 | 
					                            debug_tapping_key();
 | 
				
			||||||
| 
						 | 
					@ -297,9 +289,7 @@ bool process_tapping(keyrecord_t *keyp) {
 | 
				
			||||||
            // tap_count > 0
 | 
					            // tap_count > 0
 | 
				
			||||||
            else {
 | 
					            else {
 | 
				
			||||||
                if (IS_TAPPING_RECORD(keyp) && !event.pressed) {
 | 
					                if (IS_TAPPING_RECORD(keyp) && !event.pressed) {
 | 
				
			||||||
                    debug("Tapping: Tap release(");
 | 
					                    ac_dprintf("Tapping: Tap release(%u)\n", tapping_key.tap.count);
 | 
				
			||||||
                    debug_dec(tapping_key.tap.count);
 | 
					 | 
				
			||||||
                    debug(")\n");
 | 
					 | 
				
			||||||
                    keyp->tap = tapping_key.tap;
 | 
					                    keyp->tap = tapping_key.tap;
 | 
				
			||||||
                    process_record(keyp);
 | 
					                    process_record(keyp);
 | 
				
			||||||
                    tapping_key = *keyp;
 | 
					                    tapping_key = *keyp;
 | 
				
			||||||
| 
						 | 
					@ -307,7 +297,7 @@ bool process_tapping(keyrecord_t *keyp) {
 | 
				
			||||||
                    return true;
 | 
					                    return true;
 | 
				
			||||||
                } else if (is_tap_record(keyp) && event.pressed) {
 | 
					                } else if (is_tap_record(keyp) && event.pressed) {
 | 
				
			||||||
                    if (tapping_key.tap.count > 1) {
 | 
					                    if (tapping_key.tap.count > 1) {
 | 
				
			||||||
                        debug("Tapping: Start new tap with releasing last tap(>1).\n");
 | 
					                        ac_dprintf("Tapping: Start new tap with releasing last tap(>1).\n");
 | 
				
			||||||
                        // unregister key
 | 
					                        // unregister key
 | 
				
			||||||
                        process_record(&(keyrecord_t){
 | 
					                        process_record(&(keyrecord_t){
 | 
				
			||||||
                            .tap           = tapping_key.tap,
 | 
					                            .tap           = tapping_key.tap,
 | 
				
			||||||
| 
						 | 
					@ -319,7 +309,7 @@ bool process_tapping(keyrecord_t *keyp) {
 | 
				
			||||||
#    endif
 | 
					#    endif
 | 
				
			||||||
                        });
 | 
					                        });
 | 
				
			||||||
                    } else {
 | 
					                    } else {
 | 
				
			||||||
                        debug("Tapping: Start while last tap(1).\n");
 | 
					                        ac_dprintf("Tapping: Start while last tap(1).\n");
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                    tapping_key = *keyp;
 | 
					                    tapping_key = *keyp;
 | 
				
			||||||
                    waiting_buffer_scan_tap();
 | 
					                    waiting_buffer_scan_tap();
 | 
				
			||||||
| 
						 | 
					@ -327,7 +317,7 @@ bool process_tapping(keyrecord_t *keyp) {
 | 
				
			||||||
                    return true;
 | 
					                    return true;
 | 
				
			||||||
                } else {
 | 
					                } else {
 | 
				
			||||||
                    if (!IS_NOEVENT(event)) {
 | 
					                    if (!IS_NOEVENT(event)) {
 | 
				
			||||||
                        debug("Tapping: key event while last tap(>0).\n");
 | 
					                        ac_dprintf("Tapping: key event while last tap(>0).\n");
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                    process_record(keyp);
 | 
					                    process_record(keyp);
 | 
				
			||||||
                    return true;
 | 
					                    return true;
 | 
				
			||||||
| 
						 | 
					@ -337,23 +327,23 @@ bool process_tapping(keyrecord_t *keyp) {
 | 
				
			||||||
        // after TAPPING_TERM
 | 
					        // after TAPPING_TERM
 | 
				
			||||||
        else {
 | 
					        else {
 | 
				
			||||||
            if (tapping_key.tap.count == 0) {
 | 
					            if (tapping_key.tap.count == 0) {
 | 
				
			||||||
                debug("Tapping: End. Timeout. Not tap(0): ");
 | 
					                ac_dprintf("Tapping: End. Timeout. Not tap(0): ");
 | 
				
			||||||
                debug_event(event);
 | 
					                debug_event(event);
 | 
				
			||||||
                debug("\n");
 | 
					                ac_dprintf("\n");
 | 
				
			||||||
                process_record(&tapping_key);
 | 
					                process_record(&tapping_key);
 | 
				
			||||||
                tapping_key = (keyrecord_t){};
 | 
					                tapping_key = (keyrecord_t){};
 | 
				
			||||||
                debug_tapping_key();
 | 
					                debug_tapping_key();
 | 
				
			||||||
                return false;
 | 
					                return false;
 | 
				
			||||||
            } else {
 | 
					            } else {
 | 
				
			||||||
                if (IS_TAPPING_RECORD(keyp) && !event.pressed) {
 | 
					                if (IS_TAPPING_RECORD(keyp) && !event.pressed) {
 | 
				
			||||||
                    debug("Tapping: End. last timeout tap release(>0).");
 | 
					                    ac_dprintf("Tapping: End. last timeout tap release(>0).");
 | 
				
			||||||
                    keyp->tap = tapping_key.tap;
 | 
					                    keyp->tap = tapping_key.tap;
 | 
				
			||||||
                    process_record(keyp);
 | 
					                    process_record(keyp);
 | 
				
			||||||
                    tapping_key = (keyrecord_t){};
 | 
					                    tapping_key = (keyrecord_t){};
 | 
				
			||||||
                    return true;
 | 
					                    return true;
 | 
				
			||||||
                } else if (is_tap_record(keyp) && event.pressed) {
 | 
					                } else if (is_tap_record(keyp) && event.pressed) {
 | 
				
			||||||
                    if (tapping_key.tap.count > 1) {
 | 
					                    if (tapping_key.tap.count > 1) {
 | 
				
			||||||
                        debug("Tapping: Start new tap with releasing last timeout tap(>1).\n");
 | 
					                        ac_dprintf("Tapping: Start new tap with releasing last timeout tap(>1).\n");
 | 
				
			||||||
                        // unregister key
 | 
					                        // unregister key
 | 
				
			||||||
                        process_record(&(keyrecord_t){
 | 
					                        process_record(&(keyrecord_t){
 | 
				
			||||||
                            .tap           = tapping_key.tap,
 | 
					                            .tap           = tapping_key.tap,
 | 
				
			||||||
| 
						 | 
					@ -365,7 +355,7 @@ bool process_tapping(keyrecord_t *keyp) {
 | 
				
			||||||
#    endif
 | 
					#    endif
 | 
				
			||||||
                        });
 | 
					                        });
 | 
				
			||||||
                    } else {
 | 
					                    } else {
 | 
				
			||||||
                        debug("Tapping: Start while last timeout tap(1).\n");
 | 
					                        ac_dprintf("Tapping: Start while last timeout tap(1).\n");
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                    tapping_key = *keyp;
 | 
					                    tapping_key = *keyp;
 | 
				
			||||||
                    waiting_buffer_scan_tap();
 | 
					                    waiting_buffer_scan_tap();
 | 
				
			||||||
| 
						 | 
					@ -373,7 +363,7 @@ bool process_tapping(keyrecord_t *keyp) {
 | 
				
			||||||
                    return true;
 | 
					                    return true;
 | 
				
			||||||
                } else {
 | 
					                } else {
 | 
				
			||||||
                    if (!IS_NOEVENT(event)) {
 | 
					                    if (!IS_NOEVENT(event)) {
 | 
				
			||||||
                        debug("Tapping: key event while last timeout tap(>0).\n");
 | 
					                        ac_dprintf("Tapping: key event while last timeout tap(>0).\n");
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                    process_record(keyp);
 | 
					                    process_record(keyp);
 | 
				
			||||||
                    return true;
 | 
					                    return true;
 | 
				
			||||||
| 
						 | 
					@ -388,9 +378,7 @@ bool process_tapping(keyrecord_t *keyp) {
 | 
				
			||||||
                        // sequential tap.
 | 
					                        // sequential tap.
 | 
				
			||||||
                        keyp->tap = tapping_key.tap;
 | 
					                        keyp->tap = tapping_key.tap;
 | 
				
			||||||
                        if (keyp->tap.count < 15) keyp->tap.count += 1;
 | 
					                        if (keyp->tap.count < 15) keyp->tap.count += 1;
 | 
				
			||||||
                        debug("Tapping: Tap press(");
 | 
					                        ac_dprintf("Tapping: Tap press(%u)\n", keyp->tap.count);
 | 
				
			||||||
                        debug_dec(keyp->tap.count);
 | 
					 | 
				
			||||||
                        debug(")\n");
 | 
					 | 
				
			||||||
                        process_record(keyp);
 | 
					                        process_record(keyp);
 | 
				
			||||||
                        tapping_key = *keyp;
 | 
					                        tapping_key = *keyp;
 | 
				
			||||||
                        debug_tapping_key();
 | 
					                        debug_tapping_key();
 | 
				
			||||||
| 
						 | 
					@ -401,7 +389,7 @@ bool process_tapping(keyrecord_t *keyp) {
 | 
				
			||||||
                    return true;
 | 
					                    return true;
 | 
				
			||||||
                } else if (is_tap_record(keyp)) {
 | 
					                } else if (is_tap_record(keyp)) {
 | 
				
			||||||
                    // Sequential tap can be interfered with other tap key.
 | 
					                    // Sequential tap can be interfered with other tap key.
 | 
				
			||||||
                    debug("Tapping: Start with interfering other tap.\n");
 | 
					                    ac_dprintf("Tapping: Start with interfering other tap.\n");
 | 
				
			||||||
                    tapping_key = *keyp;
 | 
					                    tapping_key = *keyp;
 | 
				
			||||||
                    waiting_buffer_scan_tap();
 | 
					                    waiting_buffer_scan_tap();
 | 
				
			||||||
                    debug_tapping_key();
 | 
					                    debug_tapping_key();
 | 
				
			||||||
| 
						 | 
					@ -414,16 +402,16 @@ bool process_tapping(keyrecord_t *keyp) {
 | 
				
			||||||
                    return true;
 | 
					                    return true;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            } else {
 | 
					            } else {
 | 
				
			||||||
                if (!IS_NOEVENT(event)) debug("Tapping: other key just after tap.\n");
 | 
					                if (!IS_NOEVENT(event)) ac_dprintf("Tapping: other key just after tap.\n");
 | 
				
			||||||
                process_record(keyp);
 | 
					                process_record(keyp);
 | 
				
			||||||
                return true;
 | 
					                return true;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            // FIX: process_action here?
 | 
					            // FIX: process_action here?
 | 
				
			||||||
            // timeout. no sequential tap.
 | 
					            // timeout. no sequential tap.
 | 
				
			||||||
            debug("Tapping: End(Timeout after releasing last tap): ");
 | 
					            ac_dprintf("Tapping: End(Timeout after releasing last tap): ");
 | 
				
			||||||
            debug_event(event);
 | 
					            debug_event(event);
 | 
				
			||||||
            debug("\n");
 | 
					            ac_dprintf("\n");
 | 
				
			||||||
            tapping_key = (keyrecord_t){};
 | 
					            tapping_key = (keyrecord_t){};
 | 
				
			||||||
            debug_tapping_key();
 | 
					            debug_tapping_key();
 | 
				
			||||||
            return false;
 | 
					            return false;
 | 
				
			||||||
| 
						 | 
					@ -432,7 +420,7 @@ bool process_tapping(keyrecord_t *keyp) {
 | 
				
			||||||
    // not tapping state
 | 
					    // not tapping state
 | 
				
			||||||
    else {
 | 
					    else {
 | 
				
			||||||
        if (event.pressed && is_tap_record(keyp)) {
 | 
					        if (event.pressed && is_tap_record(keyp)) {
 | 
				
			||||||
            debug("Tapping: Start(Press tap key).\n");
 | 
					            ac_dprintf("Tapping: Start(Press tap key).\n");
 | 
				
			||||||
            tapping_key = *keyp;
 | 
					            tapping_key = *keyp;
 | 
				
			||||||
            process_record_tap_hint(&tapping_key);
 | 
					            process_record_tap_hint(&tapping_key);
 | 
				
			||||||
            waiting_buffer_scan_tap();
 | 
					            waiting_buffer_scan_tap();
 | 
				
			||||||
| 
						 | 
					@ -455,14 +443,14 @@ bool waiting_buffer_enq(keyrecord_t record) {
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if ((waiting_buffer_head + 1) % WAITING_BUFFER_SIZE == waiting_buffer_tail) {
 | 
					    if ((waiting_buffer_head + 1) % WAITING_BUFFER_SIZE == waiting_buffer_tail) {
 | 
				
			||||||
        debug("waiting_buffer_enq: Over flow.\n");
 | 
					        ac_dprintf("waiting_buffer_enq: Over flow.\n");
 | 
				
			||||||
        return false;
 | 
					        return false;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    waiting_buffer[waiting_buffer_head] = record;
 | 
					    waiting_buffer[waiting_buffer_head] = record;
 | 
				
			||||||
    waiting_buffer_head                 = (waiting_buffer_head + 1) % WAITING_BUFFER_SIZE;
 | 
					    waiting_buffer_head                 = (waiting_buffer_head + 1) % WAITING_BUFFER_SIZE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    debug("waiting_buffer_enq: ");
 | 
					    ac_dprintf("waiting_buffer_enq: ");
 | 
				
			||||||
    debug_waiting_buffer();
 | 
					    debug_waiting_buffer();
 | 
				
			||||||
    return true;
 | 
					    return true;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -516,9 +504,7 @@ void waiting_buffer_scan_tap(void) {
 | 
				
			||||||
            waiting_buffer[i].tap.count = 1;
 | 
					            waiting_buffer[i].tap.count = 1;
 | 
				
			||||||
            process_record(&tapping_key);
 | 
					            process_record(&tapping_key);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            debug("waiting_buffer_scan_tap: found at [");
 | 
					            ac_dprintf("waiting_buffer_scan_tap: found at [%u]\n", i);
 | 
				
			||||||
            debug_dec(i);
 | 
					 | 
				
			||||||
            debug("]\n");
 | 
					 | 
				
			||||||
            debug_waiting_buffer();
 | 
					            debug_waiting_buffer();
 | 
				
			||||||
            return;
 | 
					            return;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
| 
						 | 
					@ -530,9 +516,9 @@ void waiting_buffer_scan_tap(void) {
 | 
				
			||||||
 * FIXME: Needs docs
 | 
					 * FIXME: Needs docs
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
static void debug_tapping_key(void) {
 | 
					static void debug_tapping_key(void) {
 | 
				
			||||||
    debug("TAPPING_KEY=");
 | 
					    ac_dprintf("TAPPING_KEY=");
 | 
				
			||||||
    debug_record(tapping_key);
 | 
					    debug_record(tapping_key);
 | 
				
			||||||
    debug("\n");
 | 
					    ac_dprintf("\n");
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** \brief Waiting buffer debug print
 | 
					/** \brief Waiting buffer debug print
 | 
				
			||||||
| 
						 | 
					@ -540,15 +526,13 @@ static void debug_tapping_key(void) {
 | 
				
			||||||
 * FIXME: Needs docs
 | 
					 * FIXME: Needs docs
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
static void debug_waiting_buffer(void) {
 | 
					static void debug_waiting_buffer(void) {
 | 
				
			||||||
    debug("{ ");
 | 
					    ac_dprintf("{ ");
 | 
				
			||||||
    for (uint8_t i = waiting_buffer_tail; i != waiting_buffer_head; i = (i + 1) % WAITING_BUFFER_SIZE) {
 | 
					    for (uint8_t i = waiting_buffer_tail; i != waiting_buffer_head; i = (i + 1) % WAITING_BUFFER_SIZE) {
 | 
				
			||||||
        debug("[");
 | 
					        ac_dprintf("[%u]=", i);
 | 
				
			||||||
        debug_dec(i);
 | 
					 | 
				
			||||||
        debug("]=");
 | 
					 | 
				
			||||||
        debug_record(waiting_buffer[i]);
 | 
					        debug_record(waiting_buffer[i]);
 | 
				
			||||||
        debug(" ");
 | 
					        ac_dprintf(" ");
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    debug("}\n");
 | 
					    ac_dprintf("}\n");
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,26 +0,0 @@
 | 
				
			||||||
/*
 | 
					 | 
				
			||||||
Copyright 2013 Jun Wako <wakojun@gmail.com>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
This program is free software: you can redistribute it and/or modify
 | 
					 | 
				
			||||||
it under the terms of the GNU General Public License as published by
 | 
					 | 
				
			||||||
the Free Software Foundation, either version 2 of the License, or
 | 
					 | 
				
			||||||
(at your option) any later version.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
This program is distributed in the hope that it will be useful,
 | 
					 | 
				
			||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
					 | 
				
			||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
					 | 
				
			||||||
GNU General Public License for more details.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
You should have received a copy of the GNU General Public License
 | 
					 | 
				
			||||||
along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
					 | 
				
			||||||
*/
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#pragma once
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifndef NO_DEBUG
 | 
					 | 
				
			||||||
#    define NO_DEBUG
 | 
					 | 
				
			||||||
#    include "debug.h"
 | 
					 | 
				
			||||||
#    undef NO_DEBUG
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
#    include "debug.h"
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue