Commit Graph

158 Commits

Author SHA1 Message Date
Kyle Brown
73b7464ec1 initial corne support on the nicenano 2020-10-01 12:41:18 -07:00
Kyle Brown
b65a94972c layout update 2020-09-30 12:31:26 -07:00
Dimitris Zervas
2cf64d8ce7 [ble] Add support to clear all current bondings 2020-09-29 19:35:49 -07:00
Dimitris Zervas
e5700eeb5f [ble] Add support to change ble name from KMKKeyboard.go 2020-09-29 09:35:00 -07:00
Dimitris Zervas
4d46653526 Fix formatting and make lab68 bluetooth 2020-09-13 18:20:58 -07:00
Dimitris Zervas
b082f26d9e Fix typos in lab68 and add compatibility for MCP to matrix 2020-09-13 18:20:58 -07:00
Dimitris Zervas
ac9f4927c9 Add lab68 keymap 2020-09-13 18:20:58 -07:00
Kyle Brown
2244c95db6 layout update 2020-06-30 15:04:33 -07:00
Kyle Brown
7c81e01505 layout changes 2020-01-11 14:20:29 -08:00
Josh Klar
666c0a4f08
Rename KeyboardConfig to KMKKeyboard - prepping for later merge with InternalState 2019-07-25 01:30:55 -07:00
Josh Klar
5da4555669
Fix isort ordering 2019-07-25 01:06:09 -07:00
Josh Klar
6baaf5e5d4
Continue to shuffle and burn stuff
- Remove the concept of "mcus". With only one target platform
(CircuitPython), it no longer makes a bunch of sense and has been kept
around for "what if" reasons, complicating our import chains and eating
up RAM for pointless subclasses. If you're a `board`, you derive from
`KeyboardConfig`. If you're a handwire, the user will derive from
`KeyboardConfig`. The end. As part of this, `kmk.hid` was refactored
heavily to emphasize that CircuitPython is our only supported HID stack,
with stubs for future HID implementations (`USB_HID` becomes
`AbstractHID`, probably only usable for testing purposes,
`CircuitPython_USB_HID` becomes `USBHID`, and `BLEHID` is added with an
immediate `NotImplementedError` on instantiation)

- `KeyboardConfig` can now take a HID type at runtime. The NRF52840
boards will happily run in either configuration once CircuitPython
support is in place, and a completely separate `mcu` subclass for each
mode made no sense. This also potentially allows runtime *swaps* of HID
driver down the line, but no code has been added to this effect. The
default, and only functional value, for this is `HIDModes.USB`

- Most consts have been moved to more logical homes - often, the main
or, often only, component that uses them. `DiodeOrientation` moved to
`kmk.matrix`, and anything HID-related moved to `kmk.hid`
2019-07-25 00:58:23 -07:00
Josh Klar
8c57844a22
Remove a ton of leftover MicroPython code and abstractions, including all of kmk.pins 2019-07-25 00:32:20 -07:00
Josh Klar
ef1c69aa2c
Fix linting; move kmk.util.intify_coordinate to kmk.matrix.intify_coordinate (trying to deprecate/remove util) 2019-07-24 23:43:00 -07:00
Josh Klar
5c0c13e8d0
Prepare for Black autoformatting: dependencies, string staging, single-quote string override 2019-07-24 23:03:13 -07:00
Josh Klar
1e9625ae0e
Rename "Firmware" to "KeyboardConfig" for clarity in main.py and to illustrate separation of KeyboardConfig/InternalState 2019-07-24 21:25:10 -07:00
Josh Klar
e8c3b5ac70
The CircuitPython "MCU" (misnomer now?) is generic anyway - name it as such 2019-07-24 21:25:10 -07:00
Josh Klar
ef09454d2e chore: fix ryan board to pass linting 2019-07-17 16:05:40 -07:00
Josh Klar
d15aa65cc6 Kyle built a Gherkin handwire on Feather nrf52840! Unclean but works 2019-07-17 16:05:40 -07:00
rk463345
056efa8ca5 Added rk463345 keymap 2019-07-17 16:05:40 -07:00
Josh Klar
d34e8ce9d2 Re-add LED support
This reverts commit 5b069a0104.
2019-07-17 16:05:40 -07:00
Josh Klar
350c2438ad
Disable GC on every cycle, too much lag 2019-07-12 16:54:38 -07:00
Josh Klar
5b069a0104
Revert "Monocolor LED backlight added" 2019-07-07 15:35:15 -07:00
Kyle Brown
c16e2c51aa addressing PR feedback 2019-06-24 17:09:52 -07:00
Kyle Brown
5532ffdcbf Ready for merging 2019-06-21 17:28:30 -07:00
Kyle Brown
39b0b1e7f2 final commit before rebase 2019-06-21 16:51:01 -07:00
Kyle Brown
5158094549 Small changes 2019-06-21 16:49:00 -07:00
Kyle Brown
3f8c6e7648 Added support for user animations with docs 2019-06-21 16:49:00 -07:00
Kyle Brown
9d8682c866 Config changes and uses consts to save ram 2019-06-21 16:49:00 -07:00
Kyle Brown
86b8c4ffb0 New animation 2019-06-21 16:49:00 -07:00
Kyle Brown
fa28b3afba Luddite "fixes" for personal layout. Exposes a KMK limitation 2019-06-21 16:47:44 -07:00
Kyle Brown
efb642c374 Fix some issues if you don't define some things 2019-06-21 16:47:44 -07:00
Kyle Brown
1a06e0ed72 Renamed some things and added luddite layout for kdb424 and default 2019-06-21 16:47:44 -07:00
Kyle Brown
7ebf8d623f Fix toggle 2019-06-21 16:47:44 -07:00
Kyle Brown
a882ef2c38 Quick patch unrealistic face roll keyboard corruption 2019-06-21 16:47:00 -07:00
Kyle Brown
373ca8355e Added MANY boards to supported list, and organized supported boards 2019-06-21 16:47:00 -07:00
Kyle Brown
54d63037bf Added board definition for nyquist and add RGB and LED pins for nyquest and iris 2019-06-21 16:46:59 -07:00
Kyle Brown
f7a1d54752 Added LED support, cleaned up RGB docs 2019-06-21 16:45:04 -07:00
Kyle Brown
f65ea1e841 Added 2 more keys, stripped unused cruft, and added more docs. 2019-06-21 16:44:03 -07:00
Kyle Brown
5c8c2e97fd Resolved many things 2019-06-21 16:44:02 -07:00
Kyle Brown
9fbad17ed4 code cleanup to pass lint and some for flake8 2019-06-21 16:42:12 -07:00
Kyle Brown
ad3430eeb6 Needs docs, but code is ready for review probably 2019-06-21 16:38:41 -07:00
Kyle Brown
5334e7e0be Massive hsv math fix and configs can be passed now for most things 2019-06-21 16:38:41 -07:00
Kyle Brown
2ad1fe8a9c Massively improved, still not complete. Much easier to use now 2019-06-21 16:38:41 -07:00
Kyle Brown
31983a0873 Breathing now finally working, a key to enable it, not sane defaults, and a toggle button 2019-06-21 16:38:39 -07:00
Kyle Brown
7a58ac041f HSV functions added 2019-06-21 16:37:53 -07:00
Kyle Brown
4b033857b1 Initial RGB with test animation running automatically 2019-06-21 16:37:51 -07:00
Josh Klar
0b364cf7f1 Resolves #121: Use flattened keymaps, which can visually represent the logical layout, rather than the physical wiring 2019-05-12 17:47:16 -07:00
Josh Klar
848afb7801
Allow pre/post on_press/on_release handlers to be attached to all keys (example provided) 2019-02-18 15:08:07 -08:00
Josh Klar
bcdc97a56b
More keymap updates 2018-12-29 16:52:44 -08:00
Josh Klar
ea63c888d6
Oops, never fixed MY OWN LAYOUT. So many bugs.... 2018-12-29 15:57:30 -08:00
Josh Klar
9bed3db9be
Update all other keymaps currently in the system 2018-12-29 15:36:46 -08:00
Josh Klar
e5c8f5587d
Merge unicode handlers with the others. Prove arbitrary Macros are now doable in userspace 2018-12-29 07:10:11 -08:00
Josh Klar
8a21b4135d
Restore Unicode Macro support 2018-12-29 06:58:08 -08:00
Josh Klar
57239e3163
Everything necessary to get this to boot finally. Planck types! 2018-12-29 06:03:31 -08:00
Josh Klar
be4ca3e734
kitsym4: Support the keeb.io Iris using the ProMicro<->ItsyBitsyM4 converter board
The thumb cluster maps a little goofy and I'd like to clean up the
keymap here - it's ENTIRELY NOT OBVIOUS how this works right now. Using
this keymap as an example, the physical layout of my thumb cluster is
actually:

Far left: Left
Next to the right: Right
Bottom right: Shift
Top right: MO(2)

You can see what this maps to in code, and it's not at all intuitive.

`swap_indicies`, which we already support, is useless here because,
unlike the Planck/Klaranck, these aren't 1:1 key swaps, but an entirely
custom mapping of columns. This will require something like QMK's
solution to fully custom (or at least partially custom) keymaps at a
core level, and isn't something I feel like tackling tonight
necessarily.
2018-12-28 23:20:08 -08:00
Kyle Brown
baee92d961 This failed to properly rebase 2018-12-12 21:32:16 -08:00
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
b0f8c58828
Beginnings of basic tap dance 2018-10-25 21:58:25 -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
54f7117712
Resolves #38: Add KC.DEBUG to toggle log spew at runtime 2018-10-19 00:58:17 -07:00
Josh Klar
d042b458f0
Fix Kyle board, and unbreak MO-dependent layers 2018-10-16 22:36:01 -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
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
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
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
3b0cd6c421
Refactor MatrixScanner to use enhanced Pins abstraction; add DEBUG_ENABLED to SAMD51 boards 2018-10-11 13:38:31 -07:00
Kyle Brown
70db4ae84d Add new keyboard now on Circuitpython. 2018-10-11 12:37:06 -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
8c9fc9db95
@kdb424's Leader Mode work as a clean diff 2018-10-08 02:31:30 -07:00
Josh Klar
f6bebdcc24
Move off D13 to avoid clobbering the onboard LED just in case 2018-10-07 03:23:36 -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
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
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
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
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
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
Josh Klar
bdd4f86472
Support a simple macro of a sequence of keycodes (basis for SEND_STRING) 2018-09-30 18:03:43 -07:00