Rename keycodes to keys, simpler and easier to deal with
This commit is contained in:
		| @@ -1,6 +1,6 @@ | ||||
| # Keycodes Overview | ||||
| # Keys Overview | ||||
| 
 | ||||
| ## [Basic Keycodes] | ||||
| ## [Basic Keys] | ||||
| 
 | ||||
| |Key                    |Aliases             |Description                                    | | ||||
| |-----------------------|--------------------|-----------------------------------------------| | ||||
| @@ -103,8 +103,6 @@ | ||||
| |`KC.KP_0`              |`KC.P0`             |Keypad `0` and Insert                          | | ||||
| |`KC.KP_DOT`            |`KC.PDOT`           |Keypad `.` and Delete                          | | ||||
| |`KC.NONUS_BSLASH`      |`KC.NUBS`           |Non-US `\` and <code>|</code>             | | ||||
| |`KC.APPLICATION`       |`KC.APP`            |Application (Windows Menu Key)                 | | ||||
| |`KC.POWER`             |                    |System Power (macOS)                           | | ||||
| |`KC.KP_EQUAL`          |`KC.PEQL`           |Keypad `=`                                     | | ||||
| |`KC.F13`               |                    |F13                                            | | ||||
| |`KC.F14`               |                    |F14                                            | | ||||
| @@ -118,20 +116,6 @@ | ||||
| |`KC.F22`               |                    |F22                                            | | ||||
| |`KC.F23`               |                    |F23                                            | | ||||
| |`KC.F24`               |                    |F24                                            | | ||||
| |`KC.EXECUTE`           |`KC.EXEC`           |Execute                                        | | ||||
| |`KC.HELP`              |                    |Help                                           | | ||||
| |`KC.MENU`              |                    |Menu                                           | | ||||
| |`KC.SELECT`            |`KC.SLCT`           |Select                                         | | ||||
| |`KC.STOP`              |                    |Stop                                           | | ||||
| |`KC.AGAIN`             |`KC.AGIN`           |Again                                          | | ||||
| |`KC.UNDO`              |                    |Undo                                           | | ||||
| |`KC.CUT`               |                    |Cut                                            | | ||||
| |`KC.COPY`              |                    |Copy                                           | | ||||
| |`KC.PASTE`             |`KC.PSTE`           |Paste                                          | | ||||
| |`KC.FIND`              |                    |Find                                           | | ||||
| |`KC._MUTE`             |                    |Mute (macOS)                                   | | ||||
| |`KC._VOLUP`            |                    |Volume Up (macOS)                              | | ||||
| |`KC._VOLDOWN`          |                    |Volume Down (macOS)                            | | ||||
| |`KC.LOCKING_CAPS`      |`KC.LCAP`           |Locking Caps Lock                              | | ||||
| |`KC.LOCKING_NUM`       |`KC.LNUM`           |Locking Num Lock                               | | ||||
| |`KC.LOCKING_SCROLL`    |`KC.LSCR`           |Locking Scroll Lock                            | | ||||
| @@ -155,18 +139,6 @@ | ||||
| |`KC.LANG7`             |                    |Language 7                                     | | ||||
| |`KC.LANG8`             |                    |Language 8                                     | | ||||
| |`KC.LANG9`             |                    |Language 9                                     | | ||||
| |`KC.ALT_ERASE`         |`KC.ERAS`           |Alternate Erase                                | | ||||
| |`KC.SYSREQ`            |                    |SysReq/Attention                               | | ||||
| |`KC.CANCEL`            |                    |Cancel                                         | | ||||
| |`KC.CLEAR`             |`KC.CLR`            |Clear                                          | | ||||
| |`KC.PRIOR`             |                    |Prior                                          | | ||||
| |`KC.RETURN`            |                    |Return                                         | | ||||
| |`KC.SEPARATOR`         |                    |Separator                                      | | ||||
| |`KC.OUT`               |                    |Out                                            | | ||||
| |`KC.OPER`              |                    |Oper                                           | | ||||
| |`KC.CLEAR_AGAIN`       |                    |Clear/Again                                    | | ||||
| |`KC.CRSEL`             |                    |CrSel/Props                                    | | ||||
| |`KC.EXSEL`             |                    |ExSel                                          | | ||||
| |`KC.LCTRL`             |`KC.LCTL`           |Left Control                                   | | ||||
| |`KC.LSHIFT`            |`KC.LSFT`           |Left Shift                                     | | ||||
| |`KC.LALT`              |                    |Left Alt                                       | | ||||
| @@ -175,9 +147,6 @@ | ||||
| |`KC.RSHIFT`            |`KC.RSFT`           |Right Shift                                    | | ||||
| |`KC.RALT`              |                    |Right Alt                                      | | ||||
| |`KC.RGUI`              |`KC.RCMD`, `KC.RWIN`|Right GUI (Windows/Command/Meta key)           | | ||||
| |`KC.SYSTEM_POWER`      |`KC.PWR`            |System Power Down                              | | ||||
| |`KC.SYSTEM_SLEEP`      |`KC.SLEP`           |System Sleep                                   | | ||||
| |`KC.SYSTEM_WAKE`       |`KC.WAKE`           |System Wake                                    | | ||||
| |`KC.AUDIO_MUTE`        |`KC.MUTE`           |Mute                                           | | ||||
| |`KC.AUDIO_VOL_UP`      |`KC.VOLU`           |Volume Up                                      | | ||||
| |`KC.AUDIO_VOL_DOWN`    |`KC.VOLD`           |Volume Down                                    | | ||||
| @@ -185,18 +154,7 @@ | ||||
| |`KC.MEDIA_PREV_TRACK`  |`KC.MPRV`           |Previous Track (Windows)                       | | ||||
| |`KC.MEDIA_STOP`        |`KC.MSTP`           |Stop Track (Windows)                           | | ||||
| |`KC.MEDIA_PLAY_PAUSE`  |`KC.MPLY`           |Play/Pause Track                               | | ||||
| |`KC.MEDIA_SELECT`      |`KC.MSEL`           |Launch Media Player (Windows)                  | | ||||
| |`KC.MEDIA_EJECT`       |`KC.EJCT`           |Eject (macOS)                                  | | ||||
| |`KC.MAIL`              |                    |Launch Mail (Windows)                          | | ||||
| |`KC.CALCULATOR`        |`KC.CALC`           |Launch Calculator (Windows)                    | | ||||
| |`KC.MY_COMPUTER`       |`KC.MYCM`           |Launch My Computer (Windows)                   | | ||||
| |`KC.WWW_SEARCH`        |`KC.WSCH`           |Browser Search (Windows)                       | | ||||
| |`KC.WWW_HOME`          |`KC.WHOM`           |Browser Home (Windows)                         | | ||||
| |`KC.WWW_BACK`          |`KC.WBAK`           |Browser Back (Windows)                         | | ||||
| |`KC.WWW_FORWARD`       |`KC.WFWD`           |Browser Forward (Windows)                      | | ||||
| |`KC.WWW_STOP`          |`KC.WSTP`           |Browser Stop (Windows)                         | | ||||
| |`KC.WWW_REFRESH`       |`KC.WREF`           |Browser Refresh (Windows)                      | | ||||
| |`KC.WWW_FAVORITES`     |`KC.WFAV`           |Browser Favorites (Windows)                    | | ||||
| |`KC.MEDIA_FAST_FORWARD`|`KC.MFFD`           |Next Track (macOS)                             | | ||||
| |`KC.MEDIA_REWIND`      |`KC.MRWD`           |Previous Track (macOS)                         | | ||||
| 
 | ||||
| @@ -228,7 +186,7 @@ | ||||
| |`KC.QUESTION`           |`KC.QUES`          |`?`                | | ||||
| 
 | ||||
| 
 | ||||
| ## [Internal Keycodes] | ||||
| ## [Internal Keys] | ||||
| 
 | ||||
| |Key                    |Description                                                          | | ||||
| |-----------------------|---------------------------------------------------------------------| | ||||
| @@ -22,12 +22,12 @@ import kmk.kmktime  # isort:skip | ||||
| import kmk.types  # isort:skip | ||||
| import kmk.util  # isort:skip | ||||
|  | ||||
| # Now handlers that will be used in keycodes later | ||||
| # Now handlers that will be used in keys later | ||||
| import kmk.handlers.layers | ||||
| import kmk.handlers.stock | ||||
|  | ||||
| # Now stuff that depends on the above (and so on) | ||||
| import kmk.keycodes  # isort:skip | ||||
| import kmk.keys  # isort:skip | ||||
| import kmk.matrix  # isort:skip | ||||
|  | ||||
| import kmk.hid  # isort:skip | ||||
| @@ -46,7 +46,7 @@ import supervisor | ||||
| from kmk.consts import LeaderMode, UnicodeMode | ||||
| from kmk.hid import USB_HID | ||||
| from kmk.internal_state import InternalState | ||||
| from kmk.keycodes import KC | ||||
| from kmk.keys import KC | ||||
| from kmk.matrix import MatrixScanner | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| from kmk.consts import UnicodeMode | ||||
| from kmk.keycodes import KC, make_key | ||||
| from kmk.keys import KC, make_key | ||||
| from kmk.types import AttrDict, KeySequenceMeta | ||||
| from kmk.util import get_wide_ordinal | ||||
|  | ||||
|   | ||||
							
								
								
									
										17
									
								
								kmk/hid.py
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								kmk/hid.py
									
									
									
									
									
								
							| @@ -1,6 +1,5 @@ | ||||
| from kmk.consts import HID_REPORT_SIZES, HIDReportTypes, HIDUsage, HIDUsagePage | ||||
| from kmk.keycodes import (FIRST_KMK_INTERNAL_KEYCODE, ConsumerKeycode, | ||||
|                           ModifierKeycode) | ||||
| from kmk.keys import FIRST_KMK_INTERNAL_KEY, ConsumerKey, ModifierKey | ||||
|  | ||||
|  | ||||
| class USB_HID: | ||||
| @@ -30,7 +29,7 @@ class USB_HID: | ||||
|  | ||||
|         consumer_key = None | ||||
|         for key in keys_pressed: | ||||
|             if isinstance(key, ConsumerKeycode): | ||||
|             if isinstance(key, ConsumerKey): | ||||
|                 consumer_key = key | ||||
|                 break | ||||
|  | ||||
| @@ -53,10 +52,10 @@ class USB_HID: | ||||
|             self.add_key(consumer_key) | ||||
|         else: | ||||
|             for key in keys_pressed: | ||||
|                 if key.code >= FIRST_KMK_INTERNAL_KEYCODE: | ||||
|                 if key.code >= FIRST_KMK_INTERNAL_KEY: | ||||
|                     continue | ||||
|  | ||||
|                 if isinstance(key, ModifierKeycode): | ||||
|                 if isinstance(key, ModifierKey): | ||||
|                     self.add_modifier(key) | ||||
|                 else: | ||||
|                     self.add_key(key) | ||||
| @@ -93,8 +92,8 @@ class USB_HID: | ||||
|         return self | ||||
|  | ||||
|     def add_modifier(self, modifier): | ||||
|         if isinstance(modifier, ModifierKeycode): | ||||
|             if modifier.code == ModifierKeycode.FAKE_CODE: | ||||
|         if isinstance(modifier, ModifierKey): | ||||
|             if modifier.code == ModifierKey.FAKE_CODE: | ||||
|                 for mod in modifier.has_modifiers: | ||||
|                     self.report_mods[0] |= mod | ||||
|             else: | ||||
| @@ -105,8 +104,8 @@ class USB_HID: | ||||
|         return self | ||||
|  | ||||
|     def remove_modifier(self, modifier): | ||||
|         if isinstance(modifier, ModifierKeycode): | ||||
|             if modifier.code == ModifierKeycode.FAKE_CODE: | ||||
|         if isinstance(modifier, ModifierKey): | ||||
|             if modifier.code == ModifierKey.FAKE_CODE: | ||||
|                 for mod in modifier.has_modifiers: | ||||
|                     self.report_mods[0] ^= mod | ||||
|             else: | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| from kmk.consts import LeaderMode | ||||
| from kmk.keycodes import KC | ||||
| from kmk.keys import KC | ||||
| from kmk.kmktime import ticks_ms | ||||
| from kmk.types import TapDanceKeyMeta | ||||
| from kmk.util import intify_coordinate | ||||
| @@ -140,7 +140,7 @@ class InternalState: | ||||
|     def _process_internal_key_event(self, changed_key, is_pressed): | ||||
|         # Since the key objects can be chained into new objects | ||||
|         # with, for example, no_press set, always check against | ||||
|         # the underlying code rather than comparing Keycode | ||||
|         # the underlying code rather than comparing Key | ||||
|         # objects | ||||
|  | ||||
|         return self.internal_key_handlers[changed_key.code]( | ||||
| @@ -150,7 +150,7 @@ class InternalState: | ||||
|     def _process_tap_dance(self, changed_key, is_pressed): | ||||
|         if is_pressed: | ||||
|             if not isinstance(changed_key.meta, TapDanceKeyMeta): | ||||
|                 # If we get here, changed_key is not a TapDanceKeycode and thus | ||||
|                 # If we get here, changed_key is not a TapDanceKey and thus | ||||
|                 # the user kept typing elsewhere (presumably).  End ALL of the | ||||
|                 # currently outstanding tap dance runs. | ||||
|                 for k, v in self.tap_dance_counts.items(): | ||||
|   | ||||
| @@ -6,19 +6,19 @@ from kmk.consts import UnicodeMode | ||||
| from kmk.types import (AttrDict, KeySeqSleepMeta, LayerKeyMeta, | ||||
|                        TapDanceKeyMeta, UnicodeModeKeyMeta) | ||||
| 
 | ||||
| FIRST_KMK_INTERNAL_KEYCODE = 1000 | ||||
| NEXT_AVAILABLE_KEYCODE = 1000 | ||||
| FIRST_KMK_INTERNAL_KEY = 1000 | ||||
| NEXT_AVAILABLE_KEY = 1000 | ||||
| 
 | ||||
| KEYCODE_SIMPLE = 0 | ||||
| KEYCODE_MODIFIER = 1 | ||||
| KEYCODE_CONSUMER = 2 | ||||
| KEY_SIMPLE = 0 | ||||
| KEY_MODIFIER = 1 | ||||
| KEY_CONSUMER = 2 | ||||
| 
 | ||||
| # Global state, will be filled in througout this file, and | ||||
| # anywhere the user creates custom keys | ||||
| KC = AttrDict() | ||||
| 
 | ||||
| 
 | ||||
| class Keycode: | ||||
| class Key: | ||||
|     def __init__( | ||||
|         self, | ||||
|         code, | ||||
| @@ -43,7 +43,7 @@ class Keycode: | ||||
|         if no_press is None and no_release is None: | ||||
|             return self | ||||
| 
 | ||||
|         return Keycode( | ||||
|         return Key( | ||||
|             code=self.code, | ||||
|             has_modifiers=self.has_modifiers, | ||||
|             no_press=no_press, | ||||
| @@ -51,7 +51,7 @@ class Keycode: | ||||
|         ) | ||||
| 
 | ||||
|     def __repr__(self): | ||||
|         return 'Keycode(code={}, has_modifiers={})'.format(self.code, self.has_modifiers) | ||||
|         return 'Key(code={}, has_modifiers={})'.format(self.code, self.has_modifiers) | ||||
| 
 | ||||
|     def on_press(self, state, coord_int, coord_raw): | ||||
|         return self._on_press(self, state, KC, coord_int, coord_raw) | ||||
| @@ -60,7 +60,7 @@ class Keycode: | ||||
|         return self._on_release(self, state, KC, coord_int, coord_raw) | ||||
| 
 | ||||
| 
 | ||||
| class ModifierKeycode(Keycode): | ||||
| class ModifierKey(Key): | ||||
|     # FIXME this is atrocious to read. Please, please, please, strike down upon | ||||
|     # this with great vengeance and furious anger. | ||||
| 
 | ||||
| @@ -71,21 +71,21 @@ class ModifierKeycode(Keycode): | ||||
|             return self | ||||
| 
 | ||||
|         if modified_code is not None: | ||||
|             if isinstance(modified_code, ModifierKeycode): | ||||
|                 new_keycode = ModifierKeycode( | ||||
|                     ModifierKeycode.FAKE_CODE, | ||||
|             if isinstance(modified_code, ModifierKey): | ||||
|                 new_keycode = ModifierKey( | ||||
|                     ModifierKey.FAKE_CODE, | ||||
|                     set() if self.has_modifiers is None else self.has_modifiers, | ||||
|                     no_press=no_press, | ||||
|                     no_release=no_release, | ||||
|                 ) | ||||
| 
 | ||||
|                 if self.code != ModifierKeycode.FAKE_CODE: | ||||
|                 if self.code != ModifierKey.FAKE_CODE: | ||||
|                     new_keycode.has_modifiers.add(self.code) | ||||
| 
 | ||||
|                 if modified_code.code != ModifierKeycode.FAKE_CODE: | ||||
|                 if modified_code.code != ModifierKey.FAKE_CODE: | ||||
|                     new_keycode.has_modifiers.add(modified_code.code) | ||||
|             else: | ||||
|                 new_keycode = Keycode( | ||||
|                 new_keycode = Key( | ||||
|                     modified_code.code, | ||||
|                     {self.code}, | ||||
|                     no_press=no_press, | ||||
| @@ -95,7 +95,7 @@ class ModifierKeycode(Keycode): | ||||
|             if modified_code.has_modifiers: | ||||
|                 new_keycode.has_modifiers |= modified_code.has_modifiers | ||||
|         else: | ||||
|             new_keycode = Keycode( | ||||
|             new_keycode = Key( | ||||
|                 self.code, | ||||
|                 no_press=no_press, | ||||
|                 no_release=no_release, | ||||
| @@ -104,10 +104,10 @@ class ModifierKeycode(Keycode): | ||||
|         return new_keycode | ||||
| 
 | ||||
|     def __repr__(self): | ||||
|         return 'ModifierKeycode(code={}, has_modifiers={})'.format(self.code, self.has_modifiers) | ||||
|         return 'ModifierKey(code={}, has_modifiers={})'.format(self.code, self.has_modifiers) | ||||
| 
 | ||||
| 
 | ||||
| class ConsumerKeycode(Keycode): | ||||
| class ConsumerKey(Key): | ||||
|     pass | ||||
| 
 | ||||
| 
 | ||||
| @@ -135,7 +135,7 @@ def register_key_names(key, names=tuple()):  # NOQA | ||||
| def make_key( | ||||
|     code=None, | ||||
|     names=tuple(),  # NOQA | ||||
|     type=KEYCODE_SIMPLE, | ||||
|     type=KEY_SIMPLE, | ||||
|     **kwargs, | ||||
| ): | ||||
|     ''' | ||||
| @@ -147,28 +147,28 @@ def make_key( | ||||
| 
 | ||||
|     See register_key_names() for details on the assignment. | ||||
| 
 | ||||
|     All **kwargs are passed to the Keycode constructor | ||||
|     All **kwargs are passed to the Key constructor | ||||
|     ''' | ||||
| 
 | ||||
|     global NEXT_AVAILABLE_KEYCODE | ||||
|     global NEXT_AVAILABLE_KEY | ||||
| 
 | ||||
|     if type == KEYCODE_SIMPLE: | ||||
|         constructor = Keycode | ||||
|     elif type == KEYCODE_MODIFIER: | ||||
|         constructor = ModifierKeycode | ||||
|     elif type == KEYCODE_CONSUMER: | ||||
|         constructor = ConsumerKeycode | ||||
|     if type == KEY_SIMPLE: | ||||
|         constructor = Key | ||||
|     elif type == KEY_MODIFIER: | ||||
|         constructor = ModifierKey | ||||
|     elif type == KEY_CONSUMER: | ||||
|         constructor = ConsumerKey | ||||
|     else: | ||||
|         raise ValueError('Unrecognized key type') | ||||
| 
 | ||||
|     if code is None: | ||||
|         code = NEXT_AVAILABLE_KEYCODE | ||||
|         NEXT_AVAILABLE_KEYCODE += 1 | ||||
|     elif code >= FIRST_KMK_INTERNAL_KEYCODE: | ||||
|         code = NEXT_AVAILABLE_KEY | ||||
|         NEXT_AVAILABLE_KEY += 1 | ||||
|     elif code >= FIRST_KMK_INTERNAL_KEY: | ||||
|         # Try to ensure future auto-generated internal keycodes won't | ||||
|         # be overridden by continuing to +1 the sequence from the provided | ||||
|         # code | ||||
|         NEXT_AVAILABLE_KEYCODE = max(NEXT_AVAILABLE_KEYCODE, code + 1) | ||||
|         NEXT_AVAILABLE_KEY = max(NEXT_AVAILABLE_KEY, code + 1) | ||||
| 
 | ||||
|     key = constructor(code=code, **kwargs) | ||||
| 
 | ||||
| @@ -178,7 +178,7 @@ def make_key( | ||||
| 
 | ||||
| 
 | ||||
| def make_mod_key(*args, **kwargs): | ||||
|     return make_key(*args, **kwargs, type=KEYCODE_MODIFIER) | ||||
|     return make_key(*args, **kwargs, type=KEY_MODIFIER) | ||||
| 
 | ||||
| 
 | ||||
| def make_shifted_key(target_name, names=tuple()):  # NOQA | ||||
| @@ -190,7 +190,7 @@ def make_shifted_key(target_name, names=tuple()):  # NOQA | ||||
| 
 | ||||
| 
 | ||||
| def make_consumer_key(*args, **kwargs): | ||||
|     return make_key(*args, **kwargs, type=KEYCODE_CONSUMER) | ||||
|     return make_key(*args, **kwargs, type=KEY_CONSUMER) | ||||
| 
 | ||||
| 
 | ||||
| # Argumented keys are implicitly internal, so auto-gen of code | ||||
| @@ -201,22 +201,22 @@ def make_argumented_key( | ||||
|     *constructor_args, | ||||
|     **constructor_kwargs, | ||||
| ): | ||||
|     global NEXT_AVAILABLE_KEYCODE | ||||
|     global NEXT_AVAILABLE_KEY | ||||
| 
 | ||||
|     def _argumented_key(*user_args, **user_kwargs): | ||||
|         global NEXT_AVAILABLE_KEYCODE | ||||
|         global NEXT_AVAILABLE_KEY | ||||
| 
 | ||||
|         meta = validator(*user_args, **user_kwargs) | ||||
| 
 | ||||
|         if meta: | ||||
|             key = Keycode( | ||||
|                 NEXT_AVAILABLE_KEYCODE, | ||||
|             key = Key( | ||||
|                 NEXT_AVAILABLE_KEY, | ||||
|                 meta=meta, | ||||
|                 *constructor_args, | ||||
|                 **constructor_kwargs, | ||||
|             ) | ||||
| 
 | ||||
|             NEXT_AVAILABLE_KEYCODE += 1 | ||||
|             NEXT_AVAILABLE_KEY += 1 | ||||
| 
 | ||||
|             return key | ||||
| 
 | ||||
		Reference in New Issue
	
	Block a user