1
0
Fork 0
Commit graph

2441 commits

Author SHA1 Message Date
1648a63812
[MERGE][Core] Pointing Device Modes (21426) 2025-02-09 13:36:54 -08:00
ed6ec8b4f9
[Core] Enable more detected OS's
[OS Detection] Add hacky support for weirdness
2025-02-09 13:36:53 -08:00
15f93285b1
[RGB Matrix] Use rgb matrix hsv to rgb function in all animations 2025-02-09 13:36:52 -08:00
26ff67ff78
[MERGE] Add UART based SpaceMouse Module support (22519) 2025-02-09 13:36:49 -08:00
68ba4e0305
[Core] Add support for 64-bit layer bitmask 2025-02-09 13:36:45 -08:00
4ed967335a
[MERGE] Make One Shot Layer clearing configurable 2025-02-09 13:36:43 -08:00
QMK Bot
ae01f1b63e Merge remote-tracking branch 'origin/master' into develop 2025-01-29 19:28:06 +00:00
8bf01dd796
[OS Detection] Improve MacOS detection (#24708) 2025-01-30 06:25:21 +11:00
Nick Brassel
d7fb12164a
Invoke process_record_via after _user/_kb have a chance to handle it. (#24879) 2025-01-30 06:18:07 +11:00
Pascal Getreuer
9d799aff97
[Bug][Core] Fix for Chordal Hold: stuck mods when mod-taps are pressed in a stuttered sequence. (#24878) 2025-01-30 06:17:54 +11:00
Pascal Getreuer
544ddde113
[Core] Add Chordal Hold, an "opposite hands rule" tap-hold option similar to Achordion, Bilateral Combinations. (#24560)
* Chordal Hold: restrict what chords settle as hold

* Chordal Hold: docs and further improvements

* Fix formatting.

* Doc rewording and minor edit.

* Support Chordal Hold of multiple tap-hold keys.

* Fix formatting.

* Simplification and additional test.

* Fix formatting.

* Tighten tests.

* Add test two_mod_taps_same_hand_hold_til_timeout.

* Revise handing of pairs of tap-hold keys.

* Generate a default chordal_hold_layout.

* Document chordal_hold_handedness().

* Add license notice to new and branched files in PR.

* Add `tapping.chordal_hold` property for info.json.

* Update docs/reference_info_json.md

* Revise "hand" jsonschema.

* Chordal Hold: Improved layout handedness heuristic.

This commit improves the heuristic used in generate-keyboard-c for
inferring key handedness from keyboard.json geometry data.

Heuristic summary:

1. If the layout is symmetric (e.g. most split keyboards), guess the
   handedness based on the sign of (x - layout_x_midpoint).

2. Otherwise, if the layout has a key of >=6u width, it is probably the
   spacebar. Form a dividing line through the spacebar, nearly vertical
   but with a slight angle to follow typical row stagger.

3. Otherwise, assume handedness based on the widest horizontal
   separation.

I have tested this strategy on a couple dozen keyboards and found it to
work reliably.

* Use Optional instead of `| None`.

* Refactor to avoid lambdas.

* Remove trailing comma in chordal_hold_layout.

* Minor docs edits.

* Revise to allow combining multiple same-hand mods.

This commit revises Chordal Hold as described in discussion in
https://github.com/qmk/qmk_firmware/pull/24560#discussion_r1894655238

1. In "RCTL_T(KC_A)↓, RSFT_T(KC_C)↓, RCTL_T(KC_A)↑" before the tapping
   term, RCTL_T(KC_A) is settled as tapped.
2. In "RCTL_T(KC_A)↓, RSFT_T(KC_C)↓, RSFT_T(KC_C)↑", both RCTL_T(KC_A)
   and RSFT_T(KC_C) are settled as tapped.
3. In "RCTL_T(KC_A)↓, RSFT_T(KC_C)↓, KC_U↓" (all keys on the same side),
   both RCTL_T(KC_A) and RSFT_T(KC_C) are settled as tapped.
4. In "RCTL_T(KC_A)↓, RSFT_T(KC_C)↓, LSFT_T(KC_T)↓", with the third key
   on the other side, we allow Permissive Hold or Hold On Other Keypress
   to decide how/when to settle the keys.
5. In "RCTL_T(KC_A)↓, RSFT_T(KC_C)↓" held until the tapping term, the
   keys are settled as held.

1–3 provide same-hand roll protection. 4–5 are for combining multiple
same-hand modifiers.

I've updated the unit tests and have been running it on my keyboard, for
a few hours so far, and all seems good. I really like this scheme. It
allows combining same-side mods, yet it also has roll protection on
streaks. For me, this feels like Achordion, but clearly better streak
handling and improved responsiveness.

* Fix formatting.

* Add a couple tests with LT keys.

* Remove stale use of CHORDAL_HOLD_LAYOUT.

* Fix misspelling lastest -> latest

* Handling tweak for LTs and tests.

* Fix formatting.

* More tests with LT keys.

* Fix formatting.
2025-01-27 12:32:23 +01:00
QMK Bot
2dd2d4eb81 Merge remote-tracking branch 'origin/master' into develop 2025-01-25 03:12:14 +00:00
6a9ccae18d
Fix missing wait.h include in Dip Switch Map (#24863) 2025-01-25 03:11:38 +00:00
Nick Brassel
a6a0dc8039
Consolidate send_string implementations. (#24817) 2025-01-21 08:24:39 +11:00
Joel Challis
cedd49c59b
Consolidate timer_elapsed implementations (#24830) 2025-01-19 17:07:11 +00:00
QMK Bot
e28799d790 Merge remote-tracking branch 'origin/master' into develop 2025-01-08 16:51:30 +00:00
80c90a6952
[Bug] Fix Underglow keycode processing (#24798)
Co-authored-by: Ryan <fauxpark@gmail.com>
2025-01-08 08:50:54 -08:00
フィルターペーパー
c23e64f551
Refactor Hue Breathing matrix effect with runner (#24525) 2025-01-02 02:23:41 -08:00
Will Spooner
b603094995
Add leader_add_user callback (#24266) 2025-01-01 23:12:58 -08:00
フィルターペーパー
e016b9b4c5
Update Raindrops effect to respect LED range limits (#24531) 2025-01-01 23:11:28 -08:00
フィルターペーパー
cf975e2bfa
Update Starlight matrix effects (#24521) 2025-01-01 23:10:34 -08:00
David Hoelscher
8157b37438
always return audio pin to 0 on ARM (#24503) 2025-01-01 23:10:07 -08:00
QMK Bot
d5a0424987
[CI] Regenerate Files (#24772)
Regenerate Files
2025-01-01 02:22:28 +00:00
QMK Bot
1e6eb5e35c Merge remote-tracking branch 'origin/master' into develop 2025-01-01 02:09:51 +00:00
QMK Bot
57f89e5388
[CI] Regenerate Files (#24770)
Regenerate Files
2025-01-01 13:02:16 +11:00
j-hap
38eb643a82
Add keymap-extras for EurKEY layout (#24241)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Stefan Kerkmann <karlk90@pm.me>
2024-12-23 23:23:51 -08:00
フィルターペーパー
e1351b4f4b
Subscript alef correction (#24707)
Output for U+0656 is AltGr + V
2024-12-12 11:01:50 -07:00
b599c78548
Fix Quantum Painter compiliation issues with heavy optimization (#24667) 2024-12-02 16:58:18 +11:00
Joel Challis
36f306b4a5
Provide method to save a single default layer in the full range of 0-31 (#24639) 2024-11-25 07:35:21 +11:00
Joel Challis
4a5bae51cd
[Feature] Add keycode PDF(layer) to set the default layer in EEPROM (#24630)
* [Feature] Add keycode PDF(layer) to set the default layer in EEPROM (#21881)

* Apply suggestions from code review

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

---------

Co-authored-by: Nebuleon <2391500+Nebuleon@users.noreply.github.com>
Co-authored-by: Nick Brassel <nick@tzarc.org>
2024-11-23 10:09:34 +00:00
Joel Challis
968a611476
Review fixes for layer lock feature (#24627) 2024-11-21 13:02:49 +00:00
36b5559b99
[Core] Add Layer Lock feature (#23430)
Co-authored-by: Daniel <1767914+iamdanielv@users.noreply.github.com>
Co-authored-by: Pascal Getreuer <getreuer@google.com>
Co-authored-by: Pascal Getreuer <50221757+getreuer@users.noreply.github.com>
2024-11-21 17:31:54 +11:00
Ryan
9c86583981
Backward compatibility for new RGB keycode handling (#24490)
Co-authored-by: Dasky <32983009+daskygit@users.noreply.github.com>
2024-11-20 09:53:33 +11:00
Nick Brassel
0bda0f4775
Revert removal of QK_OUTPUT_AUTO, fixup docs to reflect. (#24593) 2024-11-14 21:16:52 +11:00
Ryan
a3cfb1dab7
Joystick: add support for 8-way hat switch (#24515) 2024-11-09 14:10:10 -08:00
Eric N. Vander Weele
9523ed9e32
Expose rgb_matrix_update_pwm_buffers to be available in keymaps (#24573)
* Expose rgb_matrix_update_pwm_buffers to be available in keymaps

Exposing this API enables the examples in the keyboard shutdown/reboot
documentation to compile instead of calling `rgb_matrix_driver.flush`
directly.

* Remove extraneous rgb_matrix_update_pwm_buffers prototype declarations

Now that `rgb_matrix_update_pwm_buffers` is public, there isn't the need
for local prototype declarations.
2024-11-07 23:12:59 -07:00
フィルターペーパー
06b7dce565
Refactor LED Breathing effect with runner (#24540) 2024-10-28 10:56:54 -07:00
フィルターペーパー
25fac5e737
Refactor Breathing effect with runner (#24535) 2024-10-27 23:20:38 -07:00
フィルターペーパー
dd7287bf4e
Update Jellybean Raindrops to respect LED range limits (#24534) 2024-10-27 23:20:14 -07:00
フィルターペーパー
d9fedce9b9
Update Pixel Rain to respect LED range limits (#24532) 2024-10-27 23:19:45 -07:00
フィルターペーパー
644588baef
Refactor Riverflow matrix effect with runner (#24520)
Co-authored-by: Ryan <fauxpark@gmail.com>
2024-10-27 22:51:01 -07:00
Dasky
f5b495e06e
Move pointing device driver code (#24445)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2024-10-25 18:11:51 +01:00
Ryan
bb9625ba55
RGBLight: Improve RGB Test animation (#24477) 2024-10-24 15:27:24 +11:00
baa29fef9d
[Bug] Fix compiliation issues with OS Detection (#24502) 2024-10-19 12:24:42 +02:00
Stefan Kerkmann
3f9d464412
[Core] usb_device_state: consolidate usb state handling across implementations (#24258)
* usb_device_state: add idle_rate, led and protocol

Previously all usb drivers and platform implementations (expect for our
oddball atsam) tracked the same two global variables:

- keyboard_protocol: to indicate if we are in report or boot protocol
- keyboard_idle: for the idle_rate of the keyboard endpoint

And a local variable that was exposed trough some indirection:

- keyboard_led_state: for the currently set indicator leds (caps lock etc.)

These have all been moved into the usb_device_state struct wich is
accessible by getters and setters.

This reduces code duplication and centralizes the state management
across platforms and drivers.

Signed-off-by: Stefan Kerkmann <karlk90@pm.me>

* usb_device_state: reset protocol on reset

The usb hid specification section 7.2.6 states:

When initialized, all devices default to report protocol. However the
host should not make any assumptions about the device’s state and should
set the desired protocol whenever initializing a device.

Thus on reset we should always do exactly that.

Signed-off-by: Stefan Kerkmann <karlk90@pm.me>

* keyboards: fix oversize warnings

Signed-off-by: Stefan Kerkmann <karlk90@pm.me>

---------

Signed-off-by: Stefan Kerkmann <karlk90@pm.me>
2024-10-18 09:57:08 +02:00
Stefan Kerkmann
5478051d74
[Core] quantum: util: add bit and bitmask helpers (#24229)
quantum: util: add bit and bitmask helpers

These helpers are handy and can prevent off-by-one errors when working
with registers and general low level bit manipulation tasks. The macros
themself are inspired by the bits.h macros from the linux kernel source
code.

Signed-off-by: Stefan Kerkmann <karlk90@pm.me>
Co-authored-by: Pascal Getreuer <50221757+getreuer@users.noreply.github.com>
2024-10-12 18:48:00 +02:00
Ryan
6fa11bf219
Separate RGBLight/RGB Matrix keycode handling (#23679)
* Separate RGBLight/RGB Matrix keycode handling

* Remove `_DISABLE_KEYCODES` handling

* Update RGB Matrix keycode docs

* Update underglow keycodes for previously migrated boards

* Update keycodes for boards with custom handling

* Fix typos

* Fix bad merge
2024-10-12 18:43:50 +02:00
フィルターペーパー
8844fba607
Update combo user function variable (#24467) 2024-10-12 00:13:31 +01:00
Ryan
6129af93f4
Rename RGB and HSV structs (#24471) 2024-10-12 00:10:02 +01:00
QMK Bot
29bc842fe2 Merge remote-tracking branch 'origin/master' into develop 2024-10-10 19:55:27 +00:00