core: Add hook_process_action()
This commit is contained in:
parent
c25cdae5f2
commit
2b83b9a8f9
4 changed files with 25 additions and 13 deletions
|
|
@ -58,6 +58,8 @@ void action_exec(keyevent_t event)
|
|||
|
||||
void process_action(keyrecord_t *record)
|
||||
{
|
||||
if (hook_process_action(record)) return;
|
||||
|
||||
keyevent_t event = record->event;
|
||||
#ifndef NO_ACTION_TAPPING
|
||||
uint8_t tap_count = record->tap.count;
|
||||
|
|
|
|||
|
|
@ -47,3 +47,8 @@ void hook_keyboard_leds_change(uint8_t led_status) {
|
|||
|
||||
__attribute__((weak))
|
||||
void hook_bootmagic(void) {}
|
||||
|
||||
__attribute__((weak))
|
||||
bool hook_process_action(keyrecord_t *record) {
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
|
||||
#include "keyboard.h"
|
||||
#include "led.h"
|
||||
#include "action.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
|
|
@ -84,6 +85,10 @@ void hook_keyboard_leds_change(uint8_t led_status);
|
|||
/* Default behaviour: do nothing. */
|
||||
void hook_bootmagic(void);
|
||||
|
||||
/* Called on before processing key event */
|
||||
/* returns true if the event is consumed and default action is not needed. */
|
||||
bool hook_process_action(keyrecord_t *record);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -6,19 +6,19 @@ The following hooks are available available:
|
|||
|
||||
Hook function | Timing
|
||||
--------------------------------|-----------------------------------------------
|
||||
`hook_early_init(void)` | Early in the boot process, before the matrix is initialized and before a connection is made with the host. Thus, this hook has access to very few parameters, but it is a good place to define any custom parameters needed by other early processes.
|
||||
`hook_late_init(void)` | Near the end of the boot process, after Boot Magic has run and LEDs have been initialized.
|
||||
`hook_bootmagic(void)` | During the Boot Magic window, after EEPROM and Bootloader checks are made, but before any other built-in Boot Magic checks are made.
|
||||
`hook_usb_startup_wait_loop(void)` | Continuously, until the device gets ready and into USB configured state.
|
||||
|
||||
`hook_usb_wakeup(void)` | When the device wakes up from USB suspend state.
|
||||
`hook_usb_suspend_entry(void)` | When the device enters USB suspend state.
|
||||
`hook_usb_suspend_loop(void)` | Continuously, while the device is in USB suspend state. *Default action:* power down and periodically check the matrix, causing wakeup if needed.
|
||||
`hook_keyboard_loop(void)` | Continuously, during the main loop, after the matrix is checked.
|
||||
`hook_matrix_change(keyevent_t event)` | When a matrix state change is detected, before any other actions are processed.
|
||||
`hook_layer_change(uint32_t layer_state)` | When any layer is changed.
|
||||
`hook_default_layer_change(uint32_t default_layer_state)` | When any default layer is changed.
|
||||
`hook_keyboard_leds_change(uint8_t led_status)` | Whenever a change in the LED status is performed. *Default action:* call `keyboard_set_leds(led_status)`
|
||||
`void hook_early_init(void)` | Early in the boot process, before the matrix is initialized and before a connection is made with the host. Thus, this hook has access to very few parameters, but it is a good place to define any custom parameters needed by other early processes.
|
||||
`void hook_late_init(void)` | Near the end of the boot process, after Boot Magic has run and LEDs have been initialized.
|
||||
`void hook_bootmagic(void)` | During the Boot Magic window, after EEPROM and Bootloader checks are made, but before any other built-in Boot Magic checks are made.
|
||||
`void hook_usb_startup_wait_loop(void)` | Continuously, until the device gets ready and into USB configured state.
|
||||
`void hook_usb_wakeup(void)` | When the device wakes up from USB suspend state.
|
||||
`void hook_usb_suspend_entry(void)` | When the device enters USB suspend state.
|
||||
`void hook_usb_suspend_loop(void)` | Continuously, while the device is in USB suspend state. *Default action:* power down and periodically check the matrix, causing wakeup if needed.
|
||||
`void hook_keyboard_loop(void)` | Continuously, during the main loop, after the matrix is checked.
|
||||
`void hook_matrix_change(keyevent_t event)` | When a matrix state change is detected, before any other actions are processed.
|
||||
`void hook_layer_change(uint32_t layer_state)` | When any layer is changed.
|
||||
`void hook_default_layer_change(uint32_t default_layer_state)` | When any default layer is changed.
|
||||
`void hook_keyboard_leds_change(uint8_t led_status)` | Whenever a change in the LED status is performed. *Default action:* call `keyboard_set_leds(led_status)`
|
||||
`bool hook_process_action(keyrecord_t *record)` | Before key event is processed by tmk_core. Return true if the event is consumed and default action is not needed.
|
||||
|
||||
|
||||
|
||||
Loading…
Add table
Reference in a new issue