Commit graph

1861 commits

Author SHA1 Message Date
Stefan Kerkmann d9bb189e25
[Core] Update mpaland/printf to eyalroz/printf fork (#16163)
mpaland printf implementation was abandoned in ~2019 and the fork by
eyalroz is now regarded to be the goto replacement of it. So this commit
incoporates the changes needed to use this fork in QMK.

Note that pointer ptrdiff_t is always supported since commit
51c90f93a97fdaef895783ecbe24569be0db7cb8
2022-07-07 09:27:50 +02:00
Nick Brassel 0e5d67145a
Allow for keymaps array to be implemented in a file other than $(KEYMAP_C) (#17559) 2022-07-05 08:58:35 +10:00
QMK Bot a6faf3bc9e Merge remote-tracking branch 'origin/master' into develop 2022-07-02 12:49:52 +00:00
CoffeeIsLife 0365f640af
Allow for RGB actions to take place on Keydown instead of Keyup (#16886)
* Allow for switch on keydown

* add docs
2022-07-02 22:49:49 +10:00
Marek Wyborski b8e8a20ca6
Improve ENCODER_DEFAULT_POS to recognize lost ticks (#16932) 2022-07-02 22:12:41 +10:00
Ryan 3ecb0a80af
Feature-ify Send String (#17275) 2022-07-02 22:10:08 +10:00
Osamu Aoki 871eeae4ea
PoC: Swap Escape and Caps (#16336) 2022-07-02 22:08:48 +10:00
torkel104 8b78fac451
Fix keys being discarded after using the leader key (#17287) 2022-07-02 22:03:40 +10:00
Jouke Witteveen 0112938140
Expose the time of the last change to the LED state (#17222) 2022-07-02 21:57:05 +10:00
FREEWING.JP 9dc7b9d40c
Added Wait time to sending each Keys for Dynamic Macros function (#16800)
Co-authored-by: Joel Challis <git@zvecr.com>
2022-07-02 21:48:26 +10:00
Nick Brassel 5846b40f74
RP2040 emulated EEPROM. (#17519) 2022-07-02 15:18:50 +10:00
QMK Bot 3def7b98d4 Merge remote-tracking branch 'origin/master' into develop 2022-07-02 03:23:21 +00:00
Nick Brassel c8fbfca1b6
[QP] Explicit buffer alignment. (#17532) 2022-07-02 13:22:46 +10:00
Nick Brassel b67ae67687
[QP] Add ILI9488 support. (#17438) 2022-07-02 13:20:45 +10:00
Stefan Kerkmann d717396708
[Core] Add Raspberry Pi RP2040 support (#14877)
* Disable RESET keycode because of naming conflicts

* Add Pico SDK as submodule

* Add RP2040 build support to QMK

* Adjust USB endpoint structs for RP2040

* Add RP2040 bootloader and double-tap reset routine

* Add generic and pro micro RP2040 boards

* Add RP2040 onekey keyboard

* Add WS2812 PIO DMA enabled driver and documentation

Supports regular and open-drain output configuration. RP2040 GPIOs are
sadly not 5V tolerant, so this is a bit use-less or needs extra hardware
or you take the risk to fry your hardware.

* Adjust SIO Driver for RP2040

* Adjust I2C Driver for RP2040

* Adjust SPI Driver for RP2040

* Add PIO serial driver and documentation

* Add general RP2040 documentation

* Apply suggestions from code review

Co-authored-by: Nick Brassel <nick@tzarc.org>

Co-authored-by: Nick Brassel <nick@tzarc.org>
2022-06-30 13:19:27 +02:00
Nick Brassel 34e244cecf
Wear-leveling EEPROM drivers: embedded_flash, spi_flash, legacy (#17376) 2022-06-30 07:42:23 +10:00
Dasky dcdc7290e5
RGB Matrix Heatmap - Skip positions with NO_LED (#17488) 2022-06-29 01:25:03 -07:00
QMK Bot f7eb7926e8 Merge remote-tracking branch 'origin/master' into develop 2022-06-29 08:17:56 +00:00
Drashna Jaelre 74bec84740
[Bug] Fix 3 speed mousekey mode (#17500) 2022-06-29 01:16:31 -07:00
QMK Bot 2daad28ab1 Merge remote-tracking branch 'origin/master' into develop 2022-06-28 22:29:19 +00:00
Drashna Jaelre 43f8d365ba
[Bug] Fix issue with mousekey movement getting stuck (#17493)
* [Bug] Fix issue with mousekey movement getting stuck

* Lint
2022-06-28 15:28:44 -07:00
Nick Brassel 01ecf332ff
Generic wear-leveling algorithm (#16996)
* Initial import of wear-leveling algorithm.

* Alignment.

* Docs tweaks.

* Lock/unlock.

* Update quantum/wear_leveling/wear_leveling_internal.h

Co-authored-by: Stefan Kerkmann <karlk90@pm.me>

* More tests, fix issue with consolidation when unlocked.

* More tests.

* Review comments.

* Add plumbing for FNV1a.

* Another test checking that checksum mismatch clears the cache.

* Check that the write log still gets played back.

Co-authored-by: Stefan Kerkmann <karlk90@pm.me>
2022-06-27 07:18:21 +10:00
Thomas Kriechbaumer 0d013a21e1
[Split] Verify Split Pointing Device config (#17481) 2022-06-26 09:15:25 -07:00
Thomas Kriechbaumer 01bc974365
improvements for Cirque Pinnacle trackpads (#17091) 2022-06-25 22:22:28 +02:00
precondition 3b9e186019
Do not enable PERMISSIVE_HOLD when TAPPING_TERM exceeds 500ms (#15674) 2022-06-24 12:40:09 +02:00
precondition 7060cb7b26
Refactor steno and add STENO_PROTOCOL = [all|txbolt|geminipr] (#17065)
* Refactor steno into STENO_ENABLE_[ALL|GEMINI|BOLT]

* Update stenography documentation

* STENO_ENABLE_TXBOLT → STENO_ENABLE_BOLT

TXBOLT is a better name but BOLT is more consistent with the
pre-existing TX Bolt related constants, which all drop the "TX " prefix

* Comments

* STENO_ENABLE_[GEMINI|BOLT|ALL] → STENO_PROTOCOL = [geminipr|txbolt|all]

* Add note on lacking V-USB support

* Clear chord at the end of the switch(mode){send_steno_chord} block

* Return true if NOEVENT

* update_chord_xxx → add_xxx_key_to_chord

* Enable the defines for all the protocols if STENO_PROTOCOL = all

* Mention how to use `steno_set_mode`

* Set the default steno protocol to "all"

This is done so that existing keymaps invoking `steno_set_mode` don't
all suddenly break

* Add data driver equivalents for stenography feature

* Document format of serial steno packets

(Thanks dnaq)

* Add missing comma
2022-06-23 20:43:24 +02:00
SmugSam 2239527871
In honor of king terry (#17387) 2022-06-23 02:47:15 +01:00
Dasky be42c5fb98
Fix RGB heatmap to use XY positions and use correct led limits (#17184)
* Fix RGB heatmap to use XY positions

* lower effect area limit and make configurable

* tidy up macro

* Fix triggering in both directions.

* add docs

* fix bug when decreasing value

* performance tweak
2022-06-21 10:53:34 -07:00
Dasky 62eaec52e0
Init eeconfig before reading handedness (#17256) 2022-06-20 15:31:27 +01:00
Albert Y c725b6bf89
[Core] Mouse key kinetic mode fix (#17176)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-06-19 11:15:55 -07:00
Drashna Jaelre 0da6562c4d
Make default layer size 16-bit (#15286)
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
2022-06-19 07:37:51 +10:00
Jouke Witteveen 1706da9054
tap-dance: Restructure code and document in more detail (#16394) 2022-06-13 22:12:55 +02:00
Drashna Jaelre 80034a847f
Ensure that rgb+via compiles in all cases (#17355) 2022-06-10 22:01:46 -07:00
Dasky 568924c76c
Add missing bracket for VIA brightness scaling (#17354) 2022-06-10 19:07:58 -07:00
yiancar 0fd08da806
Scale brigthness for VIA (#17352)
Co-authored-by: yiancar <yiancar@gmail.com>
2022-06-10 17:20:01 -07:00
Drashna Jaelre 0ab51ee29d
Add support for large Mouse Reports (#16371)
Co-authored-by: Sergey Vlasov <sigprof@gmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-06-08 18:39:16 -07:00
Dasky 85b3b98570
Move SPLIT_HAND_PIN setup to split_pre_init (#17271)
* Move SPLIT_HAND_PIN setup to split_pre_init

* doppelganger should use old behaviour

* Add comment for future

Co-authored-by: Joel Challis <git@zvecr.com>

Co-authored-by: Joel Challis <git@zvecr.com>
2022-06-06 01:33:32 +01:00
QMK Bot d6402fe9fb Merge remote-tracking branch 'origin/master' into develop 2022-06-05 11:15:11 +02:00
Pascal Getreuer 95d20e6d8b
Fix and add unit tests for Caps Word to work with Unicode Map, Auto Shift, Retro Shift. (#17284)
* Fix Caps Word and Unicode Map

* Tests for Caps Word + Auto Shift and Unicode Map.

* Fix formatting

* Add additional keyboard report expectation macros

This commit defines five test utilities, EXPECT_REPORT, EXPECT_UNICODE,
EXPECT_EMPTY_REPORT, EXPECT_ANY_REPORT and EXPECT_NO_REPORT for use with
TestDriver.

EXPECT_REPORT sets a gmock expectation that a given keyboard report will
be sent. For instance,

  EXPECT_REPORT(driver, (KC_LSFT, KC_A));

is shorthand for

  EXPECT_CALL(driver,
      send_keyboard_mock(KeyboardReport(KC_LSFT, KC_A)));

EXPECT_UNICODE sets a gmock expectation that a given Unicode code point
will be sent using UC_LNX input mode. For instance for U+2013,

  EXPECT_UNICODE(driver, 0x2013);

expects the sequence of keys:

  "Ctrl+Shift+U, 2, 0, 1, 3, space".

EXPECT_EMPTY_REPORT sets a gmock expectation that a given keyboard
report will be sent. For instance

  EXPECT_EMPTY_REPORT(driver);

expects a single report without keypresses or modifiers.

EXPECT_ANY_REPORT sets a gmock expectation that a arbitrary keyboard
report will be sent, without matching its contents. For instance

  EXPECT_ANY_REPORT(driver).Times(1);

expects a single arbitrary keyboard report will be sent.

EXPECT_NO_REPORT sets a gmock expectation that no keyboard report will
be sent at all.

* Add tap_key() and tap_keys() to TestFixture.

This commit adds a `tap_key(key)` method to TestFixture that taps a
given KeymapKey, optionally with a specified delay between press and
release.

Similarly, the method `tap_keys(key_a, key_b, key_c)` taps a sequence of
KeymapKeys.

* Use EXPECT_REPORT, tap_keys, etc. in most tests.

This commit uses EXPECT_REPORT, EXPECT_UNICODE, EXPECT_EMPTY_REPORT,
EXPECT_NO_REPORT, tap_key() and tap_keys() test utilities from the
previous two commits in most tests. Particularly the EXPECT_REPORT
macro is frequently useful and makes a nice reduction in boilerplate
needed to express many tests.

Co-authored-by: David Kosorin <david@kosorin.net>
2022-06-05 09:14:02 +02:00
Nick Brassel 08c556b78b
Add keymap wrappers for introspection into the keymap. (#17229)
* Introspection handlers for keymaps.

* Renaming.
2022-06-05 10:26:02 +10:00
Dasky af02baae78
Allow larger SPLIT_USB_TIMEOUT with default SPLIT_USB_TIMEOUT_POLL (#17272)
* Switch SPLIT_USB_DETECT loop to uint16_t

* Add assertion
2022-06-01 00:10:05 +01:00
precondition d44a950c10
Use TAP_HOLD_CAPS_DELAY for KC_LOCKING_CAPS_LOCK (#17099) 2022-05-30 22:55:33 -07:00
Nick Brassel 8545473307
Removes terminal from QMK. (#17258) 2022-05-30 22:38:08 -07:00
Pascal Getreuer b5608cbb6d
Continue Caps Word when AltGr (right Alt) is held. (#17156)
This is a minor bug fix for Caps Word. Currently, Caps Word turns off
whenever a non-shift mod becomes active. This is done to avoid
interfering with hotkeys.

This commit makes an exception to continue Caps Word when AltGr (right
Alt) is held. Outside the US, the AltGr key is used to type additional
symbols (https://en.wikipedia.org/wiki/AltGr_key). Depending on the
language, these may include symbols used within words like accented
letters where it would be desirable to continue Caps Word.
2022-05-20 01:39:00 +01:00
Ryan 4a8bd7b9a5
Rename keymap_extras headers for consistency (#16939) 2022-05-15 21:27:01 +10:00
Drashna Jaelre f090881aeb
[Feature] Add support for multiple switchs/solenoids to Haptic Feedback engine (#15657) 2022-05-15 21:24:35 +10:00
Drashna Jaelre db887e63d7
Enhancement and fixes of "Secure" feature (#16958) 2022-05-14 23:07:08 +01:00
Drashna Jaelre cd8d2b7f7f
Revert "Fix kinetic mouse mode (#16951)" (#17095) 2022-05-14 13:03:07 -07:00
Pascal Getreuer 68b16bba68
[Core] Add Caps Word feature to core (#16588)
Co-authored-by: precondition <57645186+precondition@users.noreply.github.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-05-14 16:00:32 +10:00
Yorick Peterse 90eef4cd15
Fix kinetic mouse mode (#16951)
Co-authored-by: Jan Christoph Ebersbach <jceb@e-jc.de>
2022-05-14 15:26:12 +10:00