Commit Graph

322 Commits

Author SHA1 Message Date
Josh Klar
6f8eb425b1
fix: allow userspace setting of Split.debug_enabled 2021-06-20 13:55:18 -07:00
Gigahawk
6d5b99d78d
Dynamically create core key definitions as required (#200)
* Dynamically allocate keys as required

* Restore comments

* Run linter

* Move key definitions into a dict

* Revert "Move key definitions into a dict"

This reverts commit 49ac7c2e40.
2021-06-20 13:55:18 -07:00
Josh Klar
66788c29ca
fix(split): now able to send a single keydown, but nothing else, from secondary parts of split boards 2021-06-20 13:55:18 -07:00
Kyle Brown
33408dc228
Lily58 works. Wired splits still don't 2021-06-20 13:55:18 -07:00
Kyle Brown
581d8e269b
update kmkpython and hack fix bug 2021-06-20 13:55:18 -07:00
Kyle Brown
e72d2b8c34
feat(extensions): most of the extensions implementation, by kdb424 2021-06-20 13:55:16 -07:00
Josh Klar
9821f7bcc3
Initial attempt to merge internal_state with kmk_keyboard. Seems to work on Plank so far 2021-06-20 13:53:39 -07:00
Josh Klar
54f4644b5c
fix(lint): fix all outstanding linter errors 2021-06-20 13:14:53 -07:00
Kyle Brown
015e0cdfd7 linter fix 2020-10-15 15:42:12 -07:00
Josh Klar
1b730cacf3
Merge pull request #180 from KMKfw/topic-rgb-animation
update RGB for more modern cpy versions
2020-10-14 22:07:30 -07:00
Josh Klar
dc598ad439
Merge pull request #167 from dzervas/ble_multimple_conns
BLE Multiple Connections
2020-10-14 22:04:29 -07:00
Josh Klar
1016dc552c
fix: everyone's linting; loosen one linter rule on user keymaps 2020-10-14 21:54:18 -07:00
Kyle Brown
80d95816e4 Switch to initiator/target 2020-10-13 11:07:08 -07:00
Kyle Brown
1a4e81a2e5 Remove GC. Not needed on newer Cpy versions 2020-10-13 10:58:18 -07:00
Kyle Brown
6e10babfbe update RGB for more modern cpy versions 2020-10-09 22:43:37 -07:00
Dimitris Zervas
a6d36d57a7
Add multimple connection support 2020-10-01 23:02:05 +03:00
Dimitris Zervas
69f7c3c8c2
Remove some code from BLE 2020-10-01 23:02:05 +03:00
Kyle Brown
29373e9a37 delay imports 2020-10-01 12:53:05 -07:00
Kyle Brown
e225d8b1d6 Allows continuation of firmware if bluetooth can't be imported 2020-10-01 12:53:05 -07:00
Kyle Brown
fba97fc364 UART does in fact work 2020-10-01 12:41:18 -07:00
Kyle Brown
73b7464ec1 initial corne support on the nicenano 2020-10-01 12:41:18 -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
Kyle Brown
18eeb4eadc remove prints 2020-09-13 18:44:18 -07:00
Kyle Brown
6844654d39 Clearly a copy paste error 2020-09-13 18:44:18 -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
Josh Klar
5096bb7e30
chore: formatting 2020-07-07 20:35:11 -07:00
Benjamin Dengler
2197dab6fa
Moved BLE functionality to its own module 2020-07-07 20:35:11 -07:00
Benjamin Dengler
1bd84e49aa
Added basic BLE implementation using Adafruit libs 2020-07-07 20:35:11 -07:00
Elvis Pfützenreuter
ed452084fe Apply matrix_scanner attribute instead of fixed class 2019-08-06 19:17:01 -03: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
eb566b0f71
Remove two classes that havent been used in almost a year 2019-07-25 00:35:08 -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
45cadc7e5a
CircuitPython-provided modules should be considered stdlib-equiv by isort terms. Apply this new rule. 2019-07-25 00:04:06 -07:00
Josh Klar
11a4604f88
Move our preload hacks out of keyboard_config into their own module. Isolate the ugliness 2019-07-25 00:03:35 -07:00
Josh Klar
38e8102532
Remove kmk.util by moving reboot/bootloader to their only use location 2019-07-24 23:45:50 -07:00
Josh Klar
02401e2ec0
Move kmk.util.get_wide_ordinal to kmk.handlers.sequences 2019-07-24 23:44:26 -07:00
Josh Klar
1eaf0e2c79
flatten_dict is no longer used, remove it 2019-07-24 23:43:39 -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
64267bdc5b
fix a totally unrelated bug 2019-07-24 23:15:57 -07:00
Josh Klar
aaeaa74a0c
Run black against source tree 2019-07-24 23:03:13 -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
39220beddb
tag releases within the dists as well (for debugging, mostly) 2019-07-24 21:25:10 -07:00
Josh Klar
a51d11f6e6
A wild W504 linter error appeared! Fix those. 2019-07-24 21:25:10 -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
d15aa65cc6 Kyle built a Gherkin handwire on Feather nrf52840! Unclean but works 2019-07-17 16:05:40 -07:00
Kyle Brown
004f40e7d2 Unbreak the fix 2019-07-17 16:05:40 -07:00
Kyle Brown
b6af43ef90 rgb animations perf 2019-07-17 16:05:40 -07:00
Josh Klar
c11984135a looks like this is not needed, so save some bootup time 2019-07-17 16:05:40 -07:00
Josh Klar
76087749fb Download more RAM (reword this in a rebase plz) 2019-07-17 16:05:40 -07:00
Kyle Brown
d07560513f Fixed crash on debug when no Rgb was used, and unloaded LED and RGB when not used to save ram 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
17094a2988
Clean some code up; force GC on every cycle 2019-07-12 16:38:50 -07:00
Josh Klar
2947f81489
Remove pointless reversed_active_layers/active_layers difference 2019-07-12 15:31:27 -07:00
Josh Klar
1fe80fec92
Clean up and standardize print() debug stuff 2019-07-12 15:16:33 -07:00
Josh Klar
5b069a0104
Revert "Monocolor LED backlight added" 2019-07-07 15:35:15 -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
bb198709f2 fix incorrect merge 2019-06-21 16:48:59 -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
ec1a62e52d Added static standby mode for performance. 2019-06-21 16:47:44 -07:00
Kyle Brown
0a06e733d2 Solved. Added uart buffer on the master to free up the uart bus buffer 2019-06-21 16:47:43 -07:00
Kyle Brown
e2413a3c25 Still dirty, but moved the problem to a better place. Still unrealistic to hit 2019-06-21 16:47:00 -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
3ae7432de0 Massive docs update 2019-06-21 16:42:53 -07:00
Kyle Brown
9fbad17ed4 code cleanup to pass lint and some for flake8 2019-06-21 16:42:12 -07:00
Kyle Brown
1751cce299 code cleanup to pass lint and some for flake8 2019-06-21 16:41:58 -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
0ba5911f8f More animations, now based on time and intervals. Massively WIP 2019-06-21 16:37:53 -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
Elvis Pfutzenreuter
dabed0061d Add KC_APP ("Win menu") key 2019-05-31 00:36:42 -03:00
Josh Klar
c3ffb7b1ac
Merge branch 'master' into epx87 2019-05-20 15:54:10 -07:00
Elvis Pfützenreuter
41dc58e428 Make matrix scanner class configurable 2019-05-17 20:30:42 -03: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
7fcd36f2fb Refs #104: Keyboard can work without REPL connected on >=4.0.0-alpha3 (tested only against single-piece boards so far) 2019-05-12 14:14:59 -07:00
Josh Klar
cf5ee5d4b2 Resolves an OverflowError in matrix scans (board-breaking) 2019-05-12 13:19:44 -07:00
Josh Klar
9dce78370e
Merge branch 'master' into topic-backspace-delete 2019-05-10 13:03:52 -07:00
Elvis Pfützenreuter
f9b56d82f7 Add cancel_timeout method
This method is useful when the keymap needs to use
state.set_timeout() and this timeout needs to be
cancellable.

Also, the set_timeout() now returns a timer handle.
2019-04-26 19:50:41 -03:00
Elvis Pfützenreuter
9c4a136989 Use return value of pre-press/pre-release callbacks
When the return value evaluates to False, the key press or key
release is ignored. This allows for implementation of elaborate
keyboard behaviors.
2019-04-26 19:50:41 -03:00
Elvis Pfützenreuter
b494857f21 Fix bug in TO layer key handling 2019-04-25 22:40:29 -03:00
Kyle Brown
0016ac8aa3
Merge branch 'master' into topic-backspace-delete 2019-03-21 17:25:16 -07:00
Kyle Brown
8bb55c84cd Literally hurting performance now. Needs removed 2019-03-21 17:24:50 -07:00
Kyle Brown
7e06b143e1
Merge branch 'master' into topic-backspace-delete 2019-03-12 00:25:05 -07:00
Kyle Brown
298f9489c2 Duh, chaining.... 2019-03-12 00:24:48 -07:00
Kyle Brown
a2cfa92f2f Missed some obvious things 2019-03-12 00:24:48 -07:00
Kyle Brown
e792524b63 Added mod tap with docs 2019-03-12 00:24:48 -07:00
Kyle Brown
fc8ddba6cb Adds delete/backspace key. Resolves #93 2019-03-09 15:12:23 -08: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
4ab673ba80
Resolves #106: Unbreak KC.GESC 2019-01-23 01:52:27 -08:00
Josh Klar
6ddfbadfbf
Remove unused function and useless comment 2019-01-14 11:25:21 -08:00
Josh Klar
0878538f42
Resolve issues with leader mode, allow single-key targets (HID or internal) 2018-12-29 16:52:06 -08:00
Josh Klar
375783742f
Remove unused kmk.string (originally from micropython-lib) 2018-12-29 15:42:56 -08:00
Josh Klar
413e8b8806
Rename keycodes to keys, simpler and easier to deal with 2018-12-29 15:29:11 -08:00
Josh Klar
faa61f7df1
Remove debug leftovers causing failed lints 2018-12-29 07:27:44 -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
39a6465658
Checkpoint alpha: Reflow macros and keycodes into a consistent structure. Most internal state functionality largely untouched (just moved) 2018-12-29 04:44:52 -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
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
b37f3ecdd9
Resolves #85 by bundling string polyfill directly, simplifying deploys 2018-11-05 22:05:07 -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
b0f8c58828
Beginnings of basic tap dance 2018-10-25 21:58:25 -07:00
Josh Klar
cc1bfc657f
Silly bugfix in ShiftedKeycodes 2018-10-25 21:58:24 -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
54f7117712
Resolves #38: Add KC.DEBUG to toggle log spew at runtime 2018-10-19 00:58:17 -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
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