Commit Graph

482 Commits

Author SHA1 Message Date
Josh Klar
e2ed95556a Try to fix various advanced layers 2018-10-16 23:11:50 -07:00
Josh Klar
b92aceb682 Fix linting 2018-10-16 22:43:47 -07:00
Josh Klar
bf500d37ff unbreak tap time 2018-10-16 22:39:17 -07:00
Josh Klar
d042b458f0 Fix Kyle board, and unbreak MO-dependent layers 2018-10-16 22:36:01 -07:00
Josh Klar
0d94bf4c06 Maybe surface errors in the right order 2018-10-16 22:30:33 -07:00
Josh Klar
16c82b1c0c OMEGA REFACTOR! Perf grind basically complete.
Resolves #70, Resolves #67

Still needs some regression testing in general, and a definite
regression is that rotary encoders are no longer (for the immediate time
being) supported.

Moves to a much simpler internal state tracking system, and FAR lighter
matrix scan.

Removes MicroPython support entirely.
2018-10-16 22:21:45 -07:00
Josh Klar
0c72554773 Add support for a Planck Rev 6 spidered to a Feather M4 Express 2018-10-16 01:05:32 -07:00
Josh Klar
ebc45d59dc Address #52 almost entirely - target upstream builds of CircuitPython and simply copy (rsync) KMK source, a basic main.py, and the user's keymap to the CIRCUITPY drive 2018-10-15 02:49:12 -07:00
Kyle Brown
d295dc52e6 Small fix for leaving leader 2018-10-15 00:16:34 -07:00
Josh Klar
b296148631 Merge branch 'master' into topic-low-hanging-fruit 2018-10-11 20:42:03 -07:00
Kyle Brown
5313e5f5b5 Fixed caps issue on leader_dictionary and debug_enable 2018-10-11 20:41:52 -07:00
Kyle Brown
37aeeac10a Should have been caps as these are const 2018-10-11 20:41:52 -07:00
Josh Klar
cd2eb3f1cc Merge branch 'master' into topic-low-hanging-fruit 2018-10-11 20:41:34 -07:00
Kyle Brown
e6ddaf847f Remove cruft 2018-10-11 20:33:47 -07:00
Josh Klar
98dfb53a83 Resolve #59, adds MEH and HYPER modifiers
This also cleans up some weird potentially-buggy logic paths within the
ModifierKeycode creation and handling. I can now press a free-floating
HYPER in my keymap and see the appropriate codes in `xev` for press and
release events.
2018-10-11 19:41:00 -07:00
Josh Klar
b763dd9c4b Resolves #53 by removing InternalState.update and moving its still-unused functionality up the stack a bit 2018-10-11 19:20:03 -07:00
Josh Klar
b14c56f708 Unbreak SAMD51 by deferring imports to runtime in the entrypoint (ref #52) 2018-10-11 19:09:07 -07:00
Josh Klar
00899d1b0f Resolves #56 by moving kmk.common.* up a level to kmk.* 2018-10-11 18:13:29 -07:00
Josh Klar
d5a2be38ef Default rotary encoder to raw no-slop access, opt-in in keymap. Feels WAY better now. 2018-10-11 13:38:33 -07:00
Josh Klar
6589982eda Support a special form of macro based on rotary encoder directions 2018-10-11 13:38:32 -07:00
Josh Klar
e2c9567bbf Raw rotary encoder support 2018-10-11 13:38:32 -07:00
Josh Klar
3b0cd6c421 Refactor MatrixScanner to use enhanced Pins abstraction; add DEBUG_ENABLED to SAMD51 boards 2018-10-11 13:38:31 -07:00
Josh Klar
0d847f99ef Make some events (and especially macros) faster by caching BareEvents and many key events in RAM 2018-10-08 05:04:06 -07:00
Josh Klar
aa423e3690 Fix an exhausted generator bug by converting to list 2018-10-08 03:59:16 -07:00
Josh Klar
eca4bf087e Ability to create emote/emoji macros from strings directly, on-board. 2018-10-08 03:51:02 -07:00
Josh Klar
bf8ad1319a Allow natural LEADER_MODE rollover 2018-10-08 03:21:39 -07:00
Josh Klar
c6d8e5b406 Simplify LeaderHelper stuff, unbreak my own boards 2018-10-08 02:41:43 -07:00
Josh Klar
8c9fc9db95 @kdb424's Leader Mode work as a clean diff 2018-10-08 02:31:30 -07:00
Josh Klar
6d204176e0 Unbreak pyboards 2018-10-07 04:54:25 -07:00
Josh Klar
392f8d7e51 Abstract away platform-dependent pin references
Quote taken straight from the docstring of get_pin:

>Cross-platform method to find a pin by string.
>
>The pin definitions are platform-dependent, but this provides
>a way to say "I'm using pin D20" without rolling a D20 and
>having to actually learn MicroPython/CircuitPython and the
>differences in how they handle pinouts.
>
>This also makes the keymap sanity checker actually work for
>CircuitPython boards, since it's not possible in CPY to
>define a module stub for `board` that uses Passthrough
>natively (which is how the MicroPython stub worked originally)
2018-10-07 01:40:09 -07:00
Josh Klar
a23acc6131 Update various internal key handling stuff to be CircuitPython-compatible 2018-10-07 00:45:35 -07:00
Josh Klar
d379acfc97 Support ItsyBitsy M4 Express as an effective clone of the Feather M4 Express with less pins. Because that's what it is. 2018-10-07 00:45:34 -07:00
Josh Klar
c4c28ad039 Decrease typing lag by about 80 billion percent by upping the logging threshold to WARNING on SAMD51 2018-10-07 00:45:33 -07:00
Josh Klar
472b08d77b Support KEYBOARD and CONSUMER modes of HID on Feather M4 Express 2018-10-07 00:45:32 -07:00
Josh Klar
ae3eda26b9 Make kmk_keyboard_user importable on SAMD51 by reducing recursion (read: import) depth 2018-10-07 00:45:31 -07:00
Josh Klar
e11934ab2d Able to build a VERY basic KMK image for Feather M4 Express, flashable over UF2 only 2018-10-07 00:45:30 -07:00
Josh Klar
d61f4470af Make KC object lazy but cached to avoid huge AttrDict compilation (most keycodes probably are not used anyway) 2018-10-06 03:28:17 -07:00
Kyle Brown
ad3da0694b Add advanced layers.
These will need more testing and some ported to tapdance. The bigest
case of this would be TT
2018-10-03 22:35:00 -07:00
Josh Klar
fbefed283b Return state by default on Macro if not a key up or key down event 2018-10-01 21:54:01 -07:00
Josh Klar
552e848a27 Handle macros more consistently: make them a proper internal keycode-style object and not a weird one-off. Fixes sanity_checker on my keymaps. 2018-10-01 11:54:43 -07:00
Josh Klar
f80873fdd0 Roll back the tuple indexing change (now access by dot notation), optimize GESC and fix a bug in how it interacts with the reducer 2018-10-01 01:07:57 -07:00
Josh Klar
b5457534bf Completely overhaul the entire MatrixScanner and KEY_UP/DOWN_EVENT system for efficiency. Less delay() on HID sends. Speed is only BARELY slower than QMK now. 2018-10-01 00:33:59 -07:00
Josh Klar
784f8885bd Remove a ton of dict lookups for minor perf gains 2018-10-01 00:33:58 -07:00
Josh Klar
fde9b7e274 Add support for millisecond delays within a macro sequence 2018-09-30 21:34:16 -07:00
Josh Klar
2c05efa805 Support a massively-enhanced SEND_STRING equivalent 2018-09-30 21:14:30 -07:00
Josh Klar
96b5c4ee03 Ensure we always send at least four characters when sending Unicode sequences to better support MacOS/Windows 2018-09-30 20:49:40 -07:00
Josh Klar
0ccd27703d Support Unicode sequences on Windows through WinCompose ONLY 2018-09-30 20:35:41 -07:00
Josh Klar
692d95018f Enable switching Unicode modes at runtime; lots of Keycode cleanup again 2018-09-30 20:21:42 -07:00
Josh Klar
ffa81bcf43 Massive refactor largely to support Unicode on Mac
This does a bunch of crazy stuff:

- The ability to set a unicode mode (right now only Linux+ibus or
MacOS-RALT) in the keymap. This will be changeable at runtime soon, to
allow a single keyboard to be able to send table flips and whatever
other crazy stuff on any OS the board is plugged into (something that's
not currently doable on QMK, so yay us?)

- As part of the above, there is now just one user-facing macro for
unicode codepoint submission,
`kmk.common.macros.unicode.unicode_sequence`. Users should never use the
platform-specific macros, partly because they just outright won't work.
There's all sorts of fun stuff in these methods now, thank goodness
MicroPython supports the `yield from` construct.

- Keycode (these should really be renamed Keysym or something) objects
that are intended to not be pressed, or not be released. Right now these
properties are completely ignored if not part of a macro, and it's
probably sane to keep it that way. This was necessary to support MacOS's
"hold RALT while typing the codepoint characters" flow.

- Other refactor-y bits, like moving macro support to `kmk/common`
rather than sitting at the top level of the tree. One day `kmk/common`
may make sense to surface at top level `kmk/`, but that's a discussion
for another day.
2018-09-30 19:33:23 -07:00
Josh Klar
2024eb959f Support the real reason we're all here: unicode key sequences (Linux only). Basically takes the same output style as klardotsh/qmk_emote_macro_generator outputs 2018-09-30 18:20:18 -07:00