Commit graph

1317 commits

Author SHA1 Message Date
Rodolphe Belouin
38527f9a3b
Add step sequencer feature (#9703)
* sequencer: create togglable feature

* sequencer: add support for steps

* sequencer: add support for tempo and resolutions

* sequencer: schedule a message print at the right frequency

* sequencer: send a hardcoded note

* sequencer: add support for 8 tracks

* sequencer: play several notes simultaneously

* sequencer: only play the active tracks for a given step

* sequencer: change the default behavior of the track toggler

* sequencer: make number of tracks and track notes customizable

* sequencer: move the keycodes down

Not adding them at the end of the list apparently risks breaking
compatibility with VIA.

Source: https://github.com/qmk/qmk_firmware/pull/9703#discussion_r459202733

* sequencer: add unit tests

* sequencer: add unit test for matrix_scan_sequencer

* sequencer: expose internal state for better unit-testability

* sequencer: add unit tests for matrix_scan_sequencer
2020-11-07 19:35:14 -08:00
Leo Deng
4cdd3005d6
[quantum] combine repeated lines of code (#10837) 2020-11-02 20:32:00 +00:00
Nick Brassel
991c75081c
qmk cformat (#10767) 2020-10-30 13:23:07 -07:00
Takeshi ISHII
75a18e69f9
Some GPIO manipulations in matrix.c change to atomic. (#10491)
* Changed the processing of select_xxx()/unselect_xxx() in quantum/matrix.c to be atomic.

* Changed the processing of select_xxx()/unselect_xxx() in quantum/split_common/matrix.c to be atomic.

* update matrix.c

* add ATOMIC_BLOCK_FORCEON macro to quantum/quantum_atomic_extend.h

* quantum_atomic_extend.h's contents move into quantum.h

* update ATOMIC_BLOCK_xxx for unknown platform

* ATOMIC_BLOCK macro support PROTOCOL_ARM_ATSAM

* Add Atomic Operation section in docs/internals_gpio_control.md
2020-10-30 13:23:06 -07:00
Nick Brassel
f22a61e7e9
Rescale both ChibiOS and AVR backlighting. 2020-10-30 13:23:04 -07:00
Nick Brassel
de4cbe34ff
Allow for modification of output RGB values when using rgblight/rgb_matrix. (#10638) 2020-10-30 13:23:02 -07:00
Nick Brassel
53f2b5b944
Support for STM32 GPIOF,G,H,I,J,K (#10206)
* Add GPIOF/GPIOH.

* Also add GPIOI,GPIOJ,GPIOK, to match ChibiOS 20.x.

* Make GPIOK opt-in, describe what a keyboard designer needs to do in order to gain access.
2020-10-30 13:15:46 -07:00
Drashna Jaelre
08caa7afd6
Add advanced/efficient RGB Matrix Indicators (#8564)
* Add Advanced RGB Matrix effects

Add a new option, so that we can better handle custom indicators

* Switch to led min/max instead of params

Because params has already been incremented and is wrong now

* Add indicator color function for use with advanced indicator functions

* Add docs and helper macros

* Add comment for explanations

* Fix macro variables

* Fix typo

* Run clang-format on rgb_matrix.h
2020-10-30 13:15:44 -07:00
Ryan
310662fce9
Per-encoder resolutions (#10259)
* Per-encoder resolutions

* Resolutions for right hand
2020-10-30 13:15:41 -07:00
seb-pau
f728c249ce
Joystick 16-bit support (#10439)
* Joystick 16-bit support

* Add variable joystick axes resolution

* Moved #define statements to .h files

* Moved definitions to quantum/joystick.h

  Removed duplicate definitions from usb_descriptor.h and
  process_joysick.h

  Adjust process_joystick.c and usb_descriptor.c to use the pre-computed
  "JOYSTICK_RESOLUTION" value which contains the logical maximum value
  of a joystick axis

* Cleaning up unnecessary code

* Update docs/feature_joystick.md

Co-authored-by: Ryan <fauxpark@gmail.com>

* Workaround to joystick.h not being included to report.h

* Removed unnecessary newlines, updated report.h

Changed JOYSTICK_AXES_RESOLUTION conditional in report.h

Co-authored-by: Ryan <fauxpark@gmail.com>
2020-10-30 13:15:41 -07:00
jakobkg
bf84d35117
Change MIDI velocity implementation to allow direct control of velocity value (#9940)
* Initial changes to expose "real" MIDI velocity

* Change MI_VELU and MI_VELD to fit new logic

* Apply cleanups from fauxpark's review

my bad on the errant whitespace and else {} placements

* Slight changes to MI_VELD to match values when velocity is falling to when it is rising

* Add keycode MI_VEL_0

* Update compute_velocity() to handle MI_VEL_0

* Store velocity as 7 bits to hard cap value at 127
2020-10-30 13:15:37 -07:00
Naoto Takai
73d20754bb
Add support for soft serial to ATmega32U2 (#10204)
* Add support for soft serial to ATmega32U2

* Update drivers/avr/serial.c

* Update drivers/avr/serial.c

* Update drivers/avr/serial.c

* Fix comment

* Update drivers/avr/serial.c
2020-10-30 13:15:36 -07:00
Ryan
2c92ee1f56
Allow modified keycodes in Unicode input (#10658) 2020-10-27 06:14:56 +11:00
Félix Sanz
168ce1a743
Update keymap_spanish_dvorak.h (#10213)
Co-authored-by: Ryan <fauxpark@gmail.com>
2020-10-23 04:42:34 +11:00
Ryan
6c78f80fa1
Partial fix for sendstring_french.h (#10623) 2020-10-13 03:17:11 +11:00
a_p_u_r_o
bc79e51990
Fix issue introduced by PR#10404 (#10559) 2020-10-07 13:30:43 +11:00
3araht
2bcac45650
Fix for MIDI sustain effect issue (#10361) 2020-10-04 14:32:24 -07:00
QMK Bot
c8cff1489a format code according to conventions [skip ci] 2020-10-04 20:54:31 +00:00
Drashna Jaelre
c4f910b1b3
Merge pull request #10404 from cmdremily/opendeck-core
Allow the use of only one IS31FL3731 LED driver
2020-10-04 13:05:26 -07:00
sol
01d2a03258
Fix SPLIT_KEYBOARD compilation for ATMega*U2, which doesn't have VBUS/OTG control (#10460)
Co-authored-by: s-ol <s-ol@users.noreply.github.com>
2020-10-02 04:17:03 +10:00
Ryan
70fce6564f
Add logic for AT90USBxx7 where needed (#10203) 2020-09-27 20:33:03 +10:00
Ryan
c16ee22784
setrgb(): Use arrow operator (#10451) 2020-09-26 19:42:40 +01:00
Ryan
b6f9ca3b09
Fix Belgian sendstring properly (#10444) 2020-09-26 14:14:34 +10:00
Drashna Jaelre
9570b1bbb4
Fix Belgian sendstring file (#10443)
Specifically, the `BE_CIRC` is an alt-ed keycode, which means it 
doesn't fit into the 8 bit keycode range...  It should be `BE_SECT`,
as it is already alt-ed by the alt lut.

Confirmed that this change fixes compilation warnings and works 
correctly, on reddit. 
https://www.reddit.com/r/olkb/comments/iywin1/unsigned_conversion_from_int_to_unsigned_char/g6jvfgl/
2020-09-26 05:34:38 +10:00
cmdremily
ef7c79b781 Fix issues with unused variables and functions preventing a clean compile. 2020-09-23 14:15:25 +02:00
cmdremily
8711dda0d3 Allow the use of a single IS31FL3731 LED driver 2020-09-23 14:15:25 +02:00
Wilba
bc7a745227
Fix typo in via.c (#10000) 2020-09-21 04:21:19 -07:00
Ryan
0140baf7e0
Add STM32F401/F411 to mcu_selection.mk (#10278)
* Reorder STM32 MCUs

* Add STM32F4xx to mcu_selection.mk

* Set MCU for phoenix and tkw/stoutgat/v2/f411
2020-09-18 20:00:18 -07:00
Xelus22
97122d203b
[Core] DYNAMIC_KEYMAP_EEPROM_MAX_ADDR check (#10315)
* add error check

* remove quotes

* update error message

Co-authored-by: Ryan <fauxpark@gmail.com>

Co-authored-by: Ryan <fauxpark@gmail.com>
2020-09-16 16:16:01 +10:00
Purdea Andrei
f7ccbfcea8
quantum/debounce: rename debouncing algorithms (#9564)
* quantum/debounce: rename debouncing algorithms according to Issue 8763

This is the second attempt at implementation, with no ts_ and cy_ prefixes, since those will be implemented with macros.

* Debouncing documentation: Refactor, add some generic info, and merge into a single document
2020-09-06 13:13:49 -07:00
Olivier Li
9bca381b98
Unflip < and > for canadian mutlilingual (#10222)
Co-authored-by: Olivier Li <olivierli@google.com>
2020-09-06 09:51:38 +10:00
Félix Sanz
69804bb243
Fixed Spanish keymap extra ES_DIAE symbol (#10211)
* Fixed Spanish keymap extra ES_DIAE symbol

`ES_DIAE` should be `S(ES_ACUT)` not `S(ES_GRV)`

* Update quantum/keymap_extras/keymap_spanish.h

Co-authored-by: Ryan <fauxpark@gmail.com>

Co-authored-by: Ryan <fauxpark@gmail.com>
2020-09-01 08:23:31 +10:00
QMK Bot
a3db72df72 format code according to conventions [skip ci] 2020-08-29 22:57:48 +00:00
Ryan
629cfc7f5e K-Type refactor (#9864)
* K-Type refactor

* Declare QMK in product name again

* Hopefully fix matrix scanning

* Maybe this time

* Partial (literally) RGB Matrix support

* Put RGB_MATRIX_ENABLE into rgb keymap for now

* Add ifdefs for RGB config

* Set layer 1 to actually be layer 1...

* Update keyboards/k_type/readme.md

* Put all RGB config in keymap for now

* Set SDB high?

* Before `rgb_matrix_init()` would be best

* User level, not keyboard

* Combating dropped keys

* Nope

* Readme for RGB keymap

* Remove custom matrix
2020-08-29 14:30:02 -07:00
Ryan
b89b2030af Kiibohd bootloader, take 2 (#10129) 2020-08-29 14:30:02 -07:00
Joel Challis
15b5ff1dc2 Remove f072 backlight warning (#10040)
* Remove f072 backlight warning

* Remove f072 backlight warning from docs
2020-08-29 14:30:02 -07:00
Joel Challis
21a00b7f02 ARM backlight - timer implementation (#8291)
* Add GPT timer based backlight driver

* Update to tim15 to avoid conflict with audio

* Update quantum/backlight/backlight_timer.c
2020-08-29 14:30:02 -07:00
Greg Wright
568cae28ec #define AUTO_SHIFT_SETUP (#8441)
* #define AUTO_SHIFT_SETUP

* Clarification

Changed `#ifndef` to `#ifdef` and moved enable disable outside AUTO_SHIFT_SETUP

* AUTO_SHIFT_NO_SETUp
2020-08-29 14:30:02 -07:00
David Kosorin
dba8148764 Fix Czech keycodes (#9987) 2020-08-29 14:30:02 -07:00
Tynan Beatty
e34eca361f Noeeprom functions for rgb_matrix (#9487)
* Add eeprom_helpers for toggle, mode, sethsv, speed; add set_speed; add noeeprom versions of toggle, step, hue, sat, val, and speed

* qmk cformat rgb_matrix

* Add rgb_matrix_set_speed and *_noeeprom functions

* Do not expose rgb_matrix_*_eeprom_helper functions
2020-08-29 14:30:02 -07:00
Nick Brassel
c990dc1e6c Add support for hsv->rgb conversion without using CIE curve. (#9856)
* Add support for hsv->rgb conversion without using CIE curve.

* Modify anavi/macropad8 to disable unicode (was unused), otherwise firmware size is too large.
2020-08-29 14:30:02 -07:00
TerryMathews
4764aa8711 The Key Company project consolidation (#9547)
* Consolidate TKC projects and increase VIA keymap count to 4.

* Updated readme files.

* Removed config.h via limitation of 2 dynamic keymaps

* Reduce dynamic keymaps from 4 to 3 due to EEPROM space limitations.

* Update dynamic_keymap.c

* Restore 4 dynamic keymaps for VIA in TKC projects.

* Update quantum/dynamic_keymap.c
2020-08-29 14:30:02 -07:00
Max Rumpf
4b74f985ec Tweak the Christmas animation effect to be less harsh on the eyes (#7648)
* Tweak the Christmas animation effect to be less harsh on the eyes

* Further improve the tweaked Christmas animation code

- Use constants where it makes sense
- Instead of complicated math, use a static variable to keep track if it's animating from or to red
- Don't use pow (but a simple macro instead)
- Using floating point math is necessary for the fraction in the cubic bezier function to work

* Update docs for the tweaked Christmas animation effect

* Further improve memory usage

- Don't use floats, but 32 bit ints instead (where needed)
- Replace limits.h with constant

* Fix typo
2020-08-29 14:30:02 -07:00
a-chol
d4be07dad3 Hid joystick interface (#4226)
* add support for hid gamepad interface
add documentation for HID joystick
Add joystick_task to read analog axes values even when no key is pressed or release. update doc
Update docs/feature_joystick.md
Manage pin setup and read to maintain matrix scan after analog read

* Incorporates patches and changes to HID reporting

There are some patches provided by @a-chol incorporated on this commit,
and also some changes I made to the HID Report structure.

The most interesting is the one dealing with number of buttons: Linux
doesn't seem to care, but Windows requires the HID structure to be byte
aligned (that's in the spec). So if one declares 8/16/32... buttons they
should not have any issues, but this is what happens when you have 9
buttons:

```
 bits |0|1|2|3|4|5|6|7|
      |*|*|*|*|*|*|*|*| axis 0 (report size 8)
      |*|*|*|*|*|*|*|*| ...
      |*|*|*|*|*|*|*|*|
      |*|*|*|*|*|*|*|*|
      |*|*|*|*|*|*|*|*|
      |*|*|*|*|*|*|*|*|
      |*|*|*|*|*|*|*|*| axis 6
      |*|*|*|*|*|*|*|*| first 8 buttons (report size 1)
      |*| | | | | | | | last of 9 buttons, not aligned
```

So for that I added a conditonal that will add a number of reports with
size 1 to make sure it aligns to the next multiple of 8. Those reports
send dummy inputs that don't do anything aside from aligning the data.

Tested on Linux, Windows 10 and Street Fighter (where the joystick is
recognized as direct-input)

* Add save and restore of each pin used in reading joystick (AVR).
Allow output pin to be JS_VIRTUAL_AXIS if the axis is connected to Vcc
instead of an output pin from the MCU.

Fix joystick report id

Fix broken v-usb hid joystick interface. Make it more resilient to unusual settings (none multiple of eight button count, 0 buttons or 0 axes)

Correct adc reading for multiple axes. Piecewise range conversion for uncentered raw value range. Input, output and ground pin configuration per axis.

Documentation fixes

* Fix port addressing for joystick analog read

* The other required set of changes
As per the PR, the changes still holding it up.
Add onekey for testing.
Fix ARM builds.
Fix device descriptor when either axes or buttons is zero.
Add compile-time check for at least one axis or button.
Move definition to try to fix conflict.
PR review comments.
qmk cformat

* avoid float functions to compute range mapping for axis adc reading

* Remove V-USB support for now. Updated docs accordingly.

* Update tmk_core/protocol/lufa/lufa.c

Co-Authored-By: Ryan <fauxpark@gmail.com>

* Update tmk_core/protocol/usb_descriptor.c

Co-Authored-By: Ryan <fauxpark@gmail.com>

* Update tmk_core/protocol/usb_descriptor.c

Co-Authored-By: Ryan <fauxpark@gmail.com>

* Update tmk_core/protocol/usb_descriptor.c

Co-Authored-By: Ryan <fauxpark@gmail.com>

* Add support for joystick adc reading for stm32 MCUs. Fix joystick hid report sending for chibios

* Fix HID joystick report sending for ChibiOS.
Add one analog axis to the onekey:joystick keymap.
Fix pin state save and restore during joystick analog read for STM32
MCUs.

* Update tmk_core/protocol/chibios/usb_main.c

Co-Authored-By: Ryan <fauxpark@gmail.com>

* Update tmk_core/protocol/lufa/lufa.c

Co-Authored-By: Ryan <fauxpark@gmail.com>

* Add missing mcuconf.h and halconf.h to onekey:joystick keymap.
Add suggested fixes from PR.

* Switch saveState and restoreState signature to use pin_t type.
onekey:joystick : add a second axis, virtual and programmatically animated.

* Update docs/feature_joystick.md

Co-Authored-By: Ryan <fauxpark@gmail.com>

* Update docs/feature_joystick.md

Co-Authored-By: Ryan <fauxpark@gmail.com>

* Add PR corrections

* Remove halconf.h and mcuconf.h from onekey keymaps

* Change ADC_PIN to A0

Co-authored-by: achol <allecooll@hotmail.com>
Co-authored-by: José Júnior <jose.junior@gmail.com>
Co-authored-by: a-chol <achol@notamail.com>
Co-authored-by: Nick Brassel <nick@tzarc.org>
Co-authored-by: Ryan <fauxpark@gmail.com>
2020-08-29 14:30:02 -07:00
Drashna Jaelre
9d3b26a475 Update features to use Custom Tapping Term when appropriate (#6259)
* Update Space Cadet to use Custom Tapping Term functionality

* Detect correct keycode for space cadet tapping term

* Update tap dancing to use global custom tapping term

* Update documentation for Tap Dances

* formatting pass

* Apply suggestions from code review

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update docs/feature_tap_dance.md

Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>

* Update for future

* Update user keymaps for space cadet

* Fix typos

* Clean up tapping term stuff

* Fix compiler issue if NO_ACTION_TAPPING is enabled

Co-authored-by: fauxpark <fauxpark@gmail.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
2020-08-29 14:30:02 -07:00
Pete Sevander
b0335b2731 Bigger combo index (#9318)
* Add change log

* Change combo index from uint8_t to uint16_t
2020-08-29 14:30:02 -07:00
Ryan
3b34858b77 Don't compile outputselect.c if Bluetooth is disabled (#9356) 2020-08-29 14:30:02 -07:00
Ryan
69e0ad1b2c Additional cleanups for V-USB code (#9310) 2020-08-29 14:30:02 -07:00
Nick Brassel
385d49cc39 Initial work for consolidation of ChibiOS platform files (#8327)
* Initial work for consolidation of board files and default ChibiOS configs.

* Migrate F401/F411 black pills for testing.

* Add early init bootloader jump flag.

* Add support for I2C in order to use i2c_scanner keymap.

* Add F401/F411 HSE bypass to get things booting.

* Exempt "hooked" ChibiOS conf files from updater script.

* Fix up ordering for bootloader_defs file check.

* Match previous $(KEYBOARD_PATHS) value for Proton-C, updated for all board configs.
2020-08-29 14:30:02 -07:00
Drashna Jaelre
b338a4d886
Add noeeprom speed function for RGBLIGHT (#9706)
* [Docs] Add Speed functions to RGB Light docs

* Add noeeprom functions for speed

* Fix wording in doc

Co-authored-by: Ryan <fauxpark@gmail.com>

Co-authored-by: Ryan <fauxpark@gmail.com>
2020-08-25 19:08:09 +10:00