forked from KMKfw/kmk_firmware
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add debug hooks to the event dispatcher, remove explicit prints
- Loading branch information
Showing
6 changed files
with
98 additions
and
84 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
from micropython import const | ||
|
||
KEY_UP_EVENT = const(1) | ||
KEY_DOWN_EVENT = const(2) | ||
|
||
|
||
def key_up_event(keycode): | ||
return { | ||
'type': KEY_UP_EVENT, | ||
'keycode': keycode, | ||
} | ||
|
||
|
||
def key_down_event(keycode): | ||
return { | ||
'type': KEY_DOWN_EVENT, | ||
'keycode': keycode, | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
import logging | ||
|
||
from kmk.common.event_defs import KEY_DOWN_EVENT, KEY_UP_EVENT | ||
|
||
|
||
class ReduxStore: | ||
def __init__(self, reducer, log_level=logging.NOTSET): | ||
self.reducer = reducer | ||
self.logger = logging.getLogger(__name__) | ||
self.logger.setLevel(log_level) | ||
self.state = self.reducer(logger=self.logger) | ||
|
||
def dispatch(self, action): | ||
self.logger.debug('Dispatching action: {}'.format(action)) | ||
self.state = self.reducer(self.state, action) | ||
self.logger.debug('Dispatching complete: {}'.format(action)) | ||
|
||
def get_state(self): | ||
return self.state | ||
|
||
|
||
class InternalState: | ||
modifiers_pressed = frozenset() | ||
keys_pressed = frozenset() | ||
|
||
def __repr__(self): | ||
return 'InternalState(mods={}, keys={})'.format( | ||
self.modifiers_pressed, | ||
self.keys_pressed, | ||
) | ||
|
||
def copy(self, modifiers_pressed=None, keys_pressed=None): | ||
new_state = InternalState() | ||
|
||
if modifiers_pressed is None: | ||
new_state.modifiers_pressed = self.modifiers_pressed.copy() | ||
else: | ||
new_state.modifiers_pressed = modifiers_pressed | ||
|
||
if keys_pressed is None: | ||
new_state.keys_pressed = self.keys_pressed.copy() | ||
else: | ||
new_state.keys_pressed = keys_pressed | ||
|
||
return new_state | ||
|
||
|
||
def kmk_reducer(state=None, action=None, logger=None): | ||
if state is None: | ||
state = InternalState() | ||
|
||
if logger is not None: | ||
logger.debug('Reducer received state of None, creating new') | ||
|
||
if action is None: | ||
if logger is not None: | ||
logger.debug('No action received, returning state unmodified') | ||
|
||
return state | ||
|
||
if action['type'] == KEY_UP_EVENT: | ||
return state.copy(keys_pressed=frozenset( | ||
key for key in state.keys_pressed if key != action['keycode'] | ||
)) | ||
|
||
if action['type'] == KEY_DOWN_EVENT: | ||
return state.copy(keys_pressed=( | ||
state.keys_pressed | {action['keycode']} | ||
)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
vendor/upy-lib/logging/logging.py |
Submodule pydux
deleted from
943ca1