Commit Graph

40 Commits

Author SHA1 Message Date
Kyle Brown
952f6b7022 Added the extra data pin. Will add docs when it's actually doing something 2018-12-12 15:43:33 -08:00
Kyle Brown
5ef6a7a96a Added docs, and removed some old, not needed docs 2018-12-12 15:43:33 -08:00
Kyle Brown
e6acef9648 Add initial support (untested) for my layout on nyquist with converter board
Unbrick splits completely

Unbrick splits completely
2018-12-12 15:43:33 -08:00
Josh Klar
d6a0538009
kmk.consts: rename UnicodeModes => UnicodeMode
This brings this naming into consistency with both fellow consts in the
same file (ex. LeaderMode is singular) as well as the variables in which
the consts are usually used (usually a `Firmware.unicode_mode` attribute
in a keymap).
2018-12-04 17:03:13 -08:00
Josh Klar
94ac6d0cbd
Merge master and reconcile tapdance with splits
This took a bit of brain surgery to firmware.py that deserves its own
commit message beyond the default merge commit message - tl;dr though,
it appears to work fine.
2018-11-05 21:15:23 -08:00
Kyle Brown
15fea0189b Added remote debugger and cleaned up several things Looks good to merge 2018-10-28 15:03:22 -07:00
Kyle Brown
2b28b99503 Finalize docs, and unbreak failed rebase 2018-10-28 15:03:22 -07:00
Kyle Brown
744d7c1f5d Needs docs, but is basically complete. #3 2018-10-28 15:03:22 -07:00
Kyle Brown
8d3e4e0a63 Fully working split. Needs further testing 2018-10-28 15:03:22 -07:00
Kyle Brown
af3eccd715 First keys on slave half actually type! Still needs a bit of work 2018-10-28 15:03:22 -07:00
Kyle Brown
49da93e436 Basic uart split support. Still need docs and testing 2018-10-28 15:03:22 -07:00
Josh Klar
d117005d8d
Add press-and-hold support to TapDance, and clean up various ways of mangling key press states. Remove pending_keys entirely, replaced with a callback timeout) 2018-10-25 21:58:26 -07:00
Josh Klar
0c13806f1c
Add key repeat support for basic alphanumeric tap dance 2018-10-25 21:58:26 -07:00
Josh Klar
74716c4c20
More sane default leader mode 2018-10-19 02:08:13 -07:00
Josh Klar
2d1290a12c
Add LeaderMode.TIMEOUT (QMK default Leader mode)
This allows leader sequences to "time out" rather than requiring an
Enter keypress to end.

This also rolls back some unnecessary changes from #72 to the matrix
scanner for performance reasons.

In theory we can use this in the future for Tap Dance support (#40)

Resolves #1
Resolves #37
2018-10-19 01:49:37 -07:00
Josh Klar
85ab403d22
More clear matrix scan function 2018-10-18 23:33:04 -07:00
Josh Klar
9089106316
Work out some bugs where I could get stuck on layers. Add more debugging output 2018-10-18 23:24:19 -07:00
Josh Klar
6c5a111d65
Import hacks MUST be in non-isort order 2018-10-18 12:56:02 -07:00
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
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
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
e6ddaf847f
Remove cruft 2018-10-11 20:33:47 -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
6589982eda
Support a special form of macro based on rotary encoder directions 2018-10-11 13:38:32 -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
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
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
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
9bec905fce
Holy refactor, Batman: full layer support (MO/DF)
Wow, what a trip this was. Layer support is now fully implemented. Other
changes here mostly revolve around the event dispatching model: more
floating state (hidden in clases wherever) has been purged, with the
reducer (now mutable, comments inline) serving, as it should, as the
sole source of truth. Thunk support has been added to our fake Redux
clone, allowing Action Creators to handle sequences of events (which is
arguably a cleaner way of handling matrix changes when not all matrix
changes should result in a new HID report - in the case of internal
keys). A whole class has been deprecated (Keymap) which only served as
another arbitor of state: instead, the MatrixScanner has been made
smarter and handles diffing internally, dispatching an Action when
needed (and allowing the reducer to parse the keymap and figure out what
key is pressed - this is the infinitely cleaner solution when layers
come into play).
2018-09-23 00:14:28 -07:00
Josh Klar
392917082a
Unbreak the general idea of KC_DF and KC_MO, though still needs heavy refactors 2018-09-23 00:13:32 -07:00
Kyle Brown
7ae2d18e45
Very broken, but some work done probably 2018-09-23 00:13:30 -07:00
Josh Klar
3e99f0c8e3 Listen to KEY_DOWN_EVENT and KEY_UP_EVENT in the HIDHelper and actually send. Working keyboard! ⌨ 2018-09-16 23:20:16 -07:00
Josh Klar
ffd47c478f Move all remaining state into the single store, woot! 2018-09-03 15:21:34 -07:00
Josh Klar
ef639f5292 Add debug hooks to the event dispatcher, remove explicit prints 2018-09-03 13:50:12 -07:00
Josh Klar
d9b909d841 Event dispatching, super simply 2018-09-03 04:22:52 -07:00
Josh Klar
d5de2601d9 Prepare things for the event loop, also abstract gross stuff from end users 2018-09-03 03:22:11 -07:00