* generate rules.mk from a json mapping
* generate rules.mk from a json mapping
* support for config.h from json maps
* improve the mapping system
* document the mapping system
* move data/maps to data/mappings
* fix flake8 errors
* fixup LED_MATRIX_DRIVER
* remove product and description from the vision_division keymap level
* reduce the complexity of generate-rules-mk
* add tests for the generate commands
* fix qmk doctor when submodules are not clean
* at90usb162 support
* fix missing bracket
* Apply suggestions from code review
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* Add support for 8 buttons to mouse report
This includes support for 8 buttons in mousekeys. However, this does move the keys around due to the fact that the last mousekey keycode is already 0xFF, so any past that would not work with register_code and the like, breaking them for tap hold keys, encoders, and other features.
* Update mouse key docs
* Add changes based on feedback
* Fix VUSB report size comment
Because drashna red gud
* Fix typo in action.c
* Fix IS_MOUSE_BUTTON check
* Change start range for mousekeys so that the end is 0xFF properly
* condense mousekeys check
* Fix minor typo in "General FAQ"
"want to do brand it with QMK" -> "want to brand it with QMK"
* Reword some of "Debugging FAQ" & "Miscellaneous FAQ".
Mostly grammatical wording of some parts and missing capitalization
* first pass
* firmware firmware?
* Split out debug + testing docs
* tidy up duplicate css
* Add extra info to debug example
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
* add support for --clean to compile and flash
* compile standalone JSON keymaps without polluting the tree
* Add support for passing environment vars to make
* make flake8 happy
* document changes to qmk compile and flash
* add -e support to json export compiling
* Fix python 3.6
* honor $MAKE
* add support for parallel builds
* add byte order bgr for ws2812
* update docs for driver change
* Update ws2812_driver.md
* Update docs/ws2812_driver.md
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update feature_rgblight.md
The note is meant to let people know that this is specific to RGB Backlight and does not work with RGB Matrix based implementations.
* Update docs/feature_rgblight.md
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
* use the schema to eliminate custom code
* Update docs/reference_info_json.md
Co-authored-by: Ryan <fauxpark@gmail.com>
* make flake8 happy
* bugfix
* do not overwrite make vars from json
Co-authored-by: Ryan <fauxpark@gmail.com>
* Make parameters from info.json available to the build system
* move all clueboard settings to info.json
* code formatting
* make flake8 happy
* make flake8 happy
* make qmk lint happy
* Add support for specifying led indicators in json
* move led indicators to the clueboard info.json
* Apply suggestions from code review
Co-authored-by: Erovia <Erovia@users.noreply.github.com>
* add missing docstring
Co-authored-by: Erovia <Erovia@users.noreply.github.com>
* Added mac variant of portuguese keymap
This keymap is very similar to the existing portuguese keymap, but
some symbols are moved around.
Apply suggestions from code review
Corrected whitespace and implemented some suggested changes.
Co-authored-by: Ryan <fauxpark@gmail.com>
Converted some spaces to nbsp
Added sendstring ISO version
* Apply suggestions from code review
Added suggestions from code review
Co-authored-by: Ryan <fauxpark@gmail.com>
* Replaced space with nbsp
* Corrected 2 chars in ascii_to_shift_lut
{ and } require shift
Co-authored-by: Ryan <fauxpark@gmail.com>
* Rewrite APA102 support
The APA102 source was broken by commit 16a15c1cfc as it did not include the
quantum header. This commit addresses that, as well as other issues with
transferring bytes over the SPI interface, i.e. it was not setting the
clock pin back to low after sending a bit.
The deviation when sending the end frame is kept, but updated to the
latest from the referenced project.
Finally, these changes expose the global LED brightness parameter
of the APA102. Brightness values are configurable through
`APA102_DEFAULT_BRIGHTNESS` and `APA102_MAX_BRIGHTNESS`.
* Fix typo in led brightness extern
* Move driver out of AVR directory and add delay for ARM
* Experimental APA102 support on AVR and ARM
Co-authored-by: Alde Rojas <hello@alde.io>
* Refactor apa102_send_byte() calls to a loop
* Implement io_wait function for ARM
* Move APA102 drivers to own directory, fix copyright notice
* Add APA102 keymap to handwired/onekey
* Simplify RGBLIGHT_ENABLE/DRIVER option handling
Co-authored-by: Mikkel Jeppesen <2756925+Duckle29@users.noreply.github.com>
* Add tabs to getting started page
* Review comments
Co-authored-by: Ryan <fauxpark@gmail.com>
* Align with current theme
* Update docs/newbs_getting_started.md
Co-authored-by: Ryan <fauxpark@gmail.com>
* Apply suggestions from code review
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
It looks like features.md was deprecated and content was split into other files. This results in a broken link on the main page which, if removed, would have no impact to the remainder of the documentation. This would also:
resolve#9239resolve#10293resolve#10447
* Update feature_rgb_matrix.md
Added more clarification on how to use a newly created rgb effect as it was unclear that the prefix 'RGB_MATRIX_CUSTOM_' had to be added.
Also included an example consistent with the documentation example.
* Update docs/feature_rgb_matrix.md
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update docs/feature_rgb_matrix.md
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Joel Challis <git@zvecr.com>
* Add modifier state to the split transport
This adds modifier state to the i2c and serial transport for split
keyboards. The purpose of this is to allow e.g. displaying modifier
state on the slave side of a split keyboard on an oled. This adds one
byte to the data transferred between halves.
This also fixes a missing ifdef guard for BLACKLIGHT_ENABLE.
Break modifiers into real/weak/oneshot
Fix incorrect slave serial mod setting
Fix typo in serial weal mod setter
Fix build errors for the I2C code that I introduced
Code cleanup and formatting per project preferences
Correctly get oneshot mods
Fix missing braces
Remove unneeded ifdef guard
Make the added state transport optional
Add documentation for the new define to enable this feature
Fix stray grave mark
* Fix error introduced in conflict resolution
- Set all other ChibiOS defaults to 'off', when not targeting Proton-C
- Modified all existing F303 boards to point at the QMK_PROTON_C to ensure repeatable binary output
- Modified version.h generation so that SKIP_VERSION=yes generates the same output
* Branch point for 2020 November 28 Breaking Change
* Remove matrix_col_t to allow MATRIX_ROWS > 32 (#10183)
* Add support for soft serial to ATmega32U2 (#10204)
* Change MIDI velocity implementation to allow direct control of velocity value (#9940)
* Add ability to build a subset of all keyboards based on platform.
* Actually use eeprom_driver_init().
* Make bootloader_jump weak for ChibiOS. (#10417)
* Joystick 16-bit support (#10439)
* Per-encoder resolutions (#10259)
* Share button state from mousekey to pointing_device (#10179)
* Add hotfix for chibios keyboards not wake (#10088)
* Add advanced/efficient RGB Matrix Indicators (#8564)
* Naming change.
* Support for STM32 GPIOF,G,H,I,J,K (#10206)
* Add milc as a dependency and remove the installed milc (#10563)
* ChibiOS upgrade: early init conversions (#10214)
* ChibiOS upgrade: configuration file migrator (#9952)
* Haptic and solenoid cleanup (#9700)
* XD75 cleanup (#10524)
* OLED display update interval support (#10388)
* Add definition based on currently-selected serial driver. (#10716)
* New feature: Retro Tapping per key (#10622)
* Allow for modification of output RGB values when using rgblight/rgb_matrix. (#10638)
* Add housekeeping task callbacks so that keyboards/keymaps are capable of executing code for each main loop iteration. (#10530)
* Rescale both ChibiOS and AVR backlighting.
* Reduce Helix keyboard build variation (#8669)
* Minor change to behavior allowing display updates to continue between task ticks (#10750)
* Some GPIO manipulations in matrix.c change to atomic. (#10491)
* qmk cformat (#10767)
* [Keyboard] Update the Speedo firmware for v3.0 (#10657)
* Maartenwut/Maarten namechange to evyd13/Evy (#10274)
* [quantum] combine repeated lines of code (#10837)
* Add step sequencer feature (#9703)
* aeboards/ext65 refactor (#10820)
* Refactor xelus/dawn60 for Rev2 later (#10584)
* add DEBUG_MATRIX_SCAN_RATE_ENABLE to common_features.mk (#10824)
* [Core] Added `add_oneshot_mods` & `del_oneshot_mods` (#10549)
* update chibios os usb for the otg driver (#8893)
* Remove HD44780 References, Part 4 (#10735)
* [Keyboard] Add Valor FRL TKL (+refactor) (#10512)
* Fix cursor position bug in oled_write_raw functions (#10800)
* Fixup version.h writing when using SKIP_VERSION=yes (#10972)
* Allow for certain code in the codebase assuming length of string. (#10974)
* Add AT90USB support for serial.c (#10706)
* Auto shift: support repeats and early registration (#9826)
* Rename ledmatrix.h to match .c file (#7949)
* Split RGB_MATRIX_ENABLE into _ENABLE and _DRIVER (#10231)
* Split LED_MATRIX_ENABLE into _ENABLE and _DRIVER (#10840)
* Merge point for 2020 Nov 28 Breaking Change
* Recommend use of LED Indicator config
* Recommend use of LED Indicator config - update link
* Update quantum/template/ps2avrgb/config.h
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* First pass
* Add config options to docs
* Update some wording
* Slight tidy up of backlight caps logic
* Init pin to correct state
* Move init location
* Reverse default state
* Basic qmk lint command
* check for keymap readme
* change the workflow from qmk info to qmk lint
* add a strict mode
* parsing -> parse
* document qmk lint
* small info logging cleanup
* Apply suggestions from code review
Co-authored-by: Ryan <fauxpark@gmail.com>
* honor --strict in more places
* change the job name to lint
Co-authored-by: Ryan <fauxpark@gmail.com>
This makes it overall easier to package for downstream distributions
instead of keeping tabs with inline documentation.
Signed-off-by: Morten Linderud <morten@linderud.pw>
* Basic keymap parsing finally works
* Add 'keymap.json' creation to the qmk.keymap module
* Add tests and fix formatting
* Fix/exclude flake8 errors
* Convert keymap.c to valid keymap.json
* Fix some errors
* Add tests
* Finalize keymap.json creation, add json template
* Add docs
* Move pygments to the standard requirements
* Add support for nameless layers, fix tests
* Fix things after rebase
* Add missing 'keymap' value.
* Fix missing layer numbers from advanced keycodes
Buckwich noticed that if the advanced keycode / layer toggling key
contains a number, it goes missing.
Now we properly handle them.
Thx for noticing!
* Apply suggestions from code review
* fixup tests
Co-authored-by: Zach White <skullydazed@drpepper.org>
Co-authored-by: skullY <skullydazed@gmail.com>
* Update reference_info_json.md
key_count is now an optional field because it is better to get the keycount by counting the elements in the layout array.
* Updated Japanese documentation as well
* Consolidate udev rules into a single file
* Update rules in doctor.py
* Simplify doctor rule checking
* Fix errors
* Add TMK "FEED" VID to list of deprecated udev rules
* A comma would be nice
* Split rules back up into bootloaders
* Link to docs page in "missing" case
* Add Pololu VID
* Be more specific about Caterina devices, and add LilyPad PID
* Wording & formatting changes in Tapping Force Hold
The Permissive Hold and the Ignore Mod Tap Interrupt sections were also modified to remove the quotes
around "tapping".
* Removed all trailing whitespaces from tap hold doc
* "it's simply really:" → "it's simple really:"
* "This allows to keep the ability" → "This allows keeping the ability"
Used the gerund form of "to keep" in the Tapping Force Hold section of the Tap Hold docs.
Co-authored-by: ridingqwerty <george.g.koenig@gmail.com>
Co-authored-by: ridingqwerty <george.g.koenig@gmail.com>
* add understanding_qmk.md translation
* update based on comment
* update based on comment
* update based on comment
* update based on comment
* update based on comment
* Add information to docs
- If layer z is not a higher layer than both x and y, the layer change code
does not function correctly.
* Update docs/ref_functions.md
* Update docs/ref_functions.md
* Update docs/ref_functions.md
* 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
* add reference_configurator_support.md translation
* update based on comment
* update based on comment
* update based on comment
* update based on comment
* fix link in docs/ja/feature_split_keyboard.md
* fix link in docs/ja/faq_build.md
* fix link in docs/ja/faq_general.md
* fix link in docs/ja/faq_keymap.md
* fix link in docs/ja/how_a_matrix_works.md
* fix link in docs/ja/reference_glossary.md
* add ref_functions.md translation
* modify internal link for ja
* update based on comment
* reflect #9892 change
* update based on comment
* update based on comment
* Better handle LTO_ENABLE
Especially when calling from command line
* Replace LINK_TIME_OPTIMIZATION_ENABLE with LTO_ENABLE
* Remove long for LTO from show_options.mk
* Add `st-flash` flash target
Add support for flashing the firmware via the `st-flash` utility from
the STLink Tools package (https://github.com/stlink-org/stlink).
* Add `st-flash` to the `qmk flash -b` output
* 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
* 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>
* 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>
* Issue 9942: Add Quantum defines
Add codes to quantum_keycodes for LSA, RSA, RCS, and their corresponding _T macros
* 9942: Add documentation for new defines
Add documentation for new defines in feature request 9942. Also define SAGR and SAGR_T as aliases for RSA and RSA_T.
* Update quantum/quantum_keycodes.h
* Update docs/keycodes.md
* Update docs/keycodes.md
* Update docs/keycodes.md
* Update docs/keycodes.md
* Add PR checklist document.
* Update docs/pr_checklist.md
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
* Apply suggestions from code review
Co-authored-by: Ryan <fauxpark@gmail.com>
* Reword the lower/raise/adjust suggestion somewhat for clarity.
* Add suggestion from @Didel for coding conventions.
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* Add Indicator flag for RGB Matrix
This adds a new flag for the RGB Matrix feature that lets you specify if the LED is an indicator LED, to be used to indicate the system state of the keyboard (eg caps/num/etc lock status, layer indication, modifer status, etc).
* Better formatting of table
* small text and formatting fixes in vscode manual
fix double opening <kbd> tags for correct formatting
expand two points for better understanding
* restored <kbd>, clarified how to open the terminal
restored <kbd> tags that were deleted with the last commit; they are correct as they were to have the whole menu "breadcrumb" nested inside a box
clarified how to open the terminal
escaped backtick for shortcut Ctrl+` as I’ve added backticks for code on the same line
* Update docs/other_vscode.md
* Update Japanese translation of feature_mouse_keys.md.
* fix original document version.
* Update docs/ja/feature_mouse_keys.md
* update based on comment
* Add IS_LAYER_ON_STATE()/IS_LAYER_OFF_STATE() macros
* Add docs for IS_LAYER_ON/OFF(_STATE) macros
* Remove IS_LAYER_ON/OFF_STATE redefinition in userspace
* Run clang-format on quantum/quantum.h
* Redefine IS_LAYER_ON/OFF(_STATE) as aliases of existing layer functions
Also update relevant doc entries.
Needs testing to check if this breaks existing IS_LAYER_ON/OFF usage in certain
edge cases (namely calling the macros with 0).
* Reformat layer check function docs
* Add a function to set individual pixels
* Add documentation for oled_write_pixel
* use smaller data type for oled_write_pixel
* Fix boundary check edge case
* Update oled_write_pixel doc
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* dipsw test on helix/rev2/sc/back:five_rows
* add peek_matrix() to matrix_common.c
* add DIP_SWITCH_MATRIX_GRID support to quantum/dip_switch.c
* update docs/feature_dip_switch.md about DIP_SWITCH_MATRIX_GRID
* Test end. remove test code. Revert "dipsw test on helix/rev2/sc/back:five_rows"
This reverts commit 6d4304c74557597c9fb4d324f79c3ae4793ae874.
Process mouse movement in the keymap before it is sent to the host. Example uses
include filtering noise, adding acceleration, and automatically activating a
layer. To use, define the following function in your keymap:
void ps2_mouse_moved_user(report_mouse_t *mouse_report);
* Add Hebrew keymap aliases
* Use NBSP for internal space in box drawings
* Apply suggestions from code review
* More whitespace fixes
* IL_DVAV, IL_DYOD and IL_VYOD were incorrect
* Add IL_DEG, IL_MUL, IL_DIV
* Hebrew is now ISO (no more BAE)
* Use ISO left shift
* Apply suggestions from code review
* DYOD and VYOD were reversed in diagram.
Oops!
* The TAGs of the original document has been updated to facilitate future verification.
* docs/ja/driver_installation_zadig.md
* docs/ja/feature_audio.md
* docs/ja/feature_auto_shift.md
* docs/ja/feature_bluetooth.md
* docs/ja/hardware_avr.md
* docs/ja/hardware_drivers.md
* docs/ja/getting_started_make_guide.md
* The TAG of the original document has been updated to facilitate future verification.
* The TAG of the original document has been updated to facilitate future verification.
* update docs/ja/feature_tap_dance.md
* The TAG of the original document has been updated to facilitate future verification.
* The TAG of the original document has been updated to facilitate future verification.
* The TAG of the original document has been updated to facilitate future verification.
* Fix incorrect delay when setting WS2812 (and similar) leds
* Add documentation for WS2812_DELAY_MICROSECONDS
* Remove improper cast to uint8_t
Co-authored-by: Sergey Vlasov <sigprof@gmail.com>
* Remove unneeded cast to uint8_t and correct math
Co-authored-by: Sergey Vlasov <sigprof@gmail.com>
* microseconds -> µs
Co-authored-by: Ryan <fauxpark@gmail.com>
* Make documentation better match the spec sheet.
Co-authored-by: Ryan <fauxpark@gmail.com>
* Rename macro to match spec sheet
* Further correction to the delay maths for the SPI case.
Co-authored-by: Joel Challis <git@zvecr.com>
* Move ws2812_common.h to the drivers directory
* Revert "Further correction to the delay maths for the SPI case."
This reverts commit e61b56a2cfc7dfec9992a7a3af92afa50e5b8ec0.
* Remove ws2812_setleds_pin(); consolidate ws2812.h
Co-authored-by: Sergey Vlasov <sigprof@gmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Joel Challis <git@zvecr.com>
PR #9307 fixed the immediately visible problem (the command that was
added to $HOME/.bashrc was incorrect because of missing quotes around
paths with spaces). However, the modified command is still wrong - it
captures the value of $PATH at the setup time, and the resulting command
written out to $HOME/.bashrc will overwrite $PATH with that captured
value, ignoring any changes in the environment. This may be especially
important for WSL, where the initial value of $PATH in Linux includes
everything which has been added to %PATH% on the Windows side; after
adding that command to $HOME/.bashrc the WSL environment will no longer
pick up any changes made by newly installed Windows software.
Instead of that, use single quotes around the command, so that the
environment variables are not expanded at the setup time, and the
command that is added to $HOME/.bashrc becomes exactly this:
PATH="$HOME/.local/bin:$PATH"
This command will use the $HOME and $PATH environment variable values at
the time the command is executed, not at the time the QMK setup is
performed, so any further updates to $PATH are taken into account.
Double quotes also ensure that the command is safe even if the values of
those environment variables contain spaces.
* Change `echo` to `export`
* Add `export` as a note under the `echo` command
* Remove note from last commit
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update docs/newbs_getting_started.md
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update docs/newbs_getting_started.md
Add 1 line of whitespace under note
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* Initial doco write-up.
* Update docs/platformdev_selecting_arm_mcu.md
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
* Apply suggestions from code review
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* Updated the Japanese translation of newbs_learn_more_resources.md
Updated the Japanese translation of newbs_learn_more_resources.md to 0.9.0.
* update docs/ja/newbs_learn_more_resources.md
* update ja/newbs_learn_more_resources.md
* add feature_mouse_keys.md translation
* update based on comment
* update based on comment
* update based on comment
* update based on comment
* update based on comment
* Branch point for 2020 May 30 Breaking Change
* Migrate `ACTION_LAYER_TOGGLE` to `TG()` (#8954)
* Migrate `ACTION_MODS_ONESHOT` to `OSM()` (#8957)
* Migrate `ACTION_DEFAULT_LAYER_SET` to `DF()` (#8958)
* Migrate `ACTION_LAYER_MODS` to `LM()` (#8959)
* Migrate `ACTION_MODS_TAP_KEY` to `MT()` (#8968)
* Convert V-USB usbdrv to a submodule (#8321)
* Unify Tap Hold functions and documentation (#8348)
* Changing board names to prevent confusion (#8412)
* Move the Keyboardio Model01 to a keyboardio/ subdir (#8499)
* Move spaceman keyboards (#8830)
* Migrate miscellaneous `fn_actions` entries (#8977)
* Migrate `ACTION_MODS_KEY` to chained mod keycodes (#8979)
* Organizing my keyboards (plaid, tartan, ergoinu) (#8537)
* Refactor Lily58 to use split_common (#6260)
* Refactor zinc to use split_common (#7114)
* Add a message if bin/qmk doesn't work (#9000)
* Fix conflicting types for 'tfp_printf' (#8269)
* Fixed RGB_DISABLE_AFTER_TIMEOUT to be seconds based & small internals cleanup (#6480)
* Refactor and updates to TKC1800 code (#8472)
* Switch to qmk forks for everything (#9019)
* audio refactor: replace deprecated PLAY_NOTE_ARRAY (#8484)
* Audio enable corrections (2/3) (#8903)
* Split HHKB to ANSI and JP layouts and Add VIA support for each (#8582)
* Audio enable corrections (Part 4) (#8974)
* Fix typo from PR7114 (#9171)
* Augment future branch Changelogs (#8978)
* Revert "Branch point for 2020 May 30 Breaking Change"
* Fixed the indentation of the sample code in docs/feature_pointing_device.md sample.
* Update docs/feature_pointing_device.md
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Joel Challis <git@zvecr.com>
* ARM split - Add uart half duplex transport support
* Fix for f103
* initial full duplex pass
* partially remove full duplex
* Correct speeds within driver docs
Co-authored-by: Nick Brassel <nick@tzarc.org>
Co-authored-by: Nick Brassel <nick@tzarc.org>
* newbs_flashing.md: place bootloader instructions before Toolbox intro
* Update docs/newbs_flashing.md
* More wordsmithing, point ARM users at Discord if all else fails
* Link Discord
* CLI: Improve experience when running `qmk setup` on FreeBSD.
* Install the `avrdude` package as well.
* Switch to installing python packages w/ `--user` flag.
* Basic getting started sections for FreeBSD.
* Update `util/freebsd_install.sh` for root/non-root branches.
* Add ID to doc section.
Co-Authored-By: skullydazed <skullydazed@users.noreply.github.com>
* Add ID to another docs section.
Co-Authored-By: skullydazed <skullydazed@users.noreply.github.com>
* Use `; then` in script for consistency.
Co-Authored-By: skullydazed <skullydazed@users.noreply.github.com>
* Updated to use sudo in one shot if available.
* Apply suggestions from code review
Co-authored-by: Erovia <Erovia@users.noreply.github.com>
* Style fixes for latest version in master.
* Apply suggestions from code review
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: skullydazed <skullydazed@users.noreply.github.com>
Co-authored-by: Erovia <Erovia@users.noreply.github.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* add feature_leader_key.md translation
* update based on comment
* set link as lang dir
* update based on comment
* update based on comment
* update based on comment
* Improve stock bootloader list
* Switch version numbers on USB64/128 bootloaders
* Unix line endings for PS2AVRGB bootloader
* Update PS2AVRGB bootloader to 1.0.1
* Also mention bootloader rule
* Didn't need to change the links
This commits add the SH_OS keycode, which works similarly to one shot
layers:
* while pressed, the keyboard is swapped
* if no keys were pressed while it was pressed, the next key press is
swapped
SH_OS also supports chaining with one shot layers:
OSL(x) + SH_OS + key interprets the key press on the oneshot layer.
The ONESHOT_TIMEOUT setting used by one shot keys and layers is also
used by oneshot swap hands. In the above chaining scenario the timeout
of the oneshot layer is reset when swap hands is activated.
Resolves#2682
* Allow 16 lighting layers
* Require #define RGBLIGHT_LAYERS_16 to enable 16 layers
* Override RGBLIGHT_MAX_LAYERS to set maximum number of lighting layers
* Enforce lower bound on RGBLIGHT_MAX_LAYERS
Co-Authored-By: Takeshi ISHII <2170248+mtei@users.noreply.github.com>
* Fix an error in the check for valid RGBLIGHT_MAX_LAYERS
* Don't use bitfield / PACKED, as it causes bloat
* Update documentation re: up to 32 lighting layers
* Run cformat
* Add note about increasing FW size in docs/config_options.md
Co-authored-by: Drashna Jaelre <drashna@live.com>
* Remove no-longer-valid comment
* Add doc note that split sync will be slower
Co-authored-by: Takeshi ISHII <2170248+mtei@users.noreply.github.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
* Implement momentarily blink of lighting layers
* Refactor spidey3 userspace to use rgb layer blink
* Remove un-necessary line from example in documentation
* Revert "Refactor spidey3 userspace to use rgb layer blink"
This reverts commit 831649bb680c41c6d663ae6fa86d13f4f8bebdd8.
* Adds a missing bit of documentation about lighting layer blink
* Update docs/feature_rgblight.md per suggestions
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update docs/feature_rgblight.md per suggestions
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update docs/feature_rgblight.md per suggestions
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
* cformat, as suggested
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
* Added raw hid feature documentation page
* Update docs/feature_rawhid.md
Co-Authored-By: fauxpark <fauxpark@gmail.com>
* Update docs/feature_rawhid.md
Co-Authored-By: fauxpark <fauxpark@gmail.com>
* Update docs/feature_rawhid.md
Co-Authored-By: fauxpark <fauxpark@gmail.com>
* Update docs/features.md
Co-Authored-By: fauxpark <fauxpark@gmail.com>
* added feature_rawhid.md to _summary.md in docs
* fixed _summary.md order
* Update docs/feature_rawhid.md
Co-Authored-By: fauxpark <fauxpark@gmail.com>
* Update feature_rawhid.md
Removed the useless bit about finding usage page and usage.
* Update feature_rawhid.md
* Update docs/feature_rawhid.md
Co-Authored-By: Nick Brassel <nick@tzarc.org>
* Update docs/feature_rawhid.md
Co-Authored-By: Nick Brassel <nick@tzarc.org>
* Update docs/feature_rawhid.md
Co-Authored-By: Nick Brassel <nick@tzarc.org>
* Update docs/feature_rawhid.md
Co-Authored-By: Nick Brassel <nick@tzarc.org>
* Remove teensy client, small origanization fixes
* Fixed merge conflicts
Removed features.md
Updated _summary.md with new format and added RAW HID entry under Software Features
* Added rawhid feature page
Messy is what you get when you don't do things right the first time
Co-authored-by: fauxpark <fauxpark@gmail.com>
Co-authored-by: Nick Brassel <nick@tzarc.org>
* add 'togglePin' conveniance function
for AVR and chibios
* drop outmost parantheses
Co-Authored-By: Konstantin Đorđević <vomindoraan@gmail.com>
* toggle pin on avrs
toggle a pin configured as output by writing the corresponding bit to the PIN register
Co-Authored-By: Takeshi ISHII <2170248+mtei@users.noreply.github.com>
* togglepin: add documentation for newly added function
* Update docs/internals_gpio_control.md
Co-Authored-By: Konstantin Đorđević <vomindoraan@gmail.com>
* on AVR: use PORTD to toggle the output
... since not all MCUs support toggling through writing to PIN
Co-Authored-By: Ryan <fauxpark@gmail.com>
Co-authored-by: Johannes <you@example.com>
Co-authored-by: Konstantin Đorđević <vomindoraan@gmail.com>
Co-authored-by: Takeshi ISHII <2170248+mtei@users.noreply.github.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update and try to clarify the CLI installation on Linux
* Update commands, add note for Debian/Ubuntu
* Update docs/newbs_getting_started.md
Co-Authored-By: Joel Challis <git@zvecr.com>
Co-authored-by: Joel Challis <git@zvecr.com>
* add feature_grave_esc.md translation
* update based on comment
* update based on comment
* update based on comment
* update based on comment
* update based on comment
Using just qmk setup <github_username> would fail w/ "Could not find repo github.com/<username>, whereas the repo is actually after another slash after the user name. Can consider changing code to add the default forked repo name if slash is not detected in the arg.
* Add support for hardware and board initialisation overrides.
* qmk cformat.
* Add some documentation.
* Docs clarity.
* Make early_hardware_init_pre a no-op for now, until migrations occur.
* Doco update
* Make distinction between keyboard and ChibiOS board in docs
* Doc anchors.
* Update tmk_core/protocol/chibios/main.c
Co-Authored-By: Joel Challis <git@zvecr.com>
* Rework bootloader entry to be off by default, allow opting-in.
Co-authored-by: Joel Challis <git@zvecr.com>
* quantum/debounce: Added sym_pk debounce algorithm
* Apply suggestions from code review
Co-Authored-By: Ryan <fauxpark@gmail.com>
* quantum/debounce/sym_pk: delete comments and rename functions following code review
* quantum/debounce/sym_pk: Modifications for code readability according to code review
* quantum/debounce/sym_pk: Modifications for code readability according to code review (2)
* quantum/debounce/sym_pk: code review: cleaner code
Co-Authored-By: Nick Brassel <nick@tzarc.org>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Nick Brassel <nick@tzarc.org>
* Add PS2_MOUSE_ROTATE to compensate for device orientation
* fixup! Add PS2_MOUSE_ROTATE to compensate for device orientation
* Reformat with IndentPPDirectives: AfterHash as per #6316
* Define NO_ACTION_MACRO/FUNCTION in header instead of makefile when LTO is enabled
Currently, boards and keymaps that define NO_ACTION_MACRO/FUNCTION unconditionally
will not compile with LTO_ENABLE (#8604). This fixes the issue by moving the
definitions from common.mk to action.h, which enables us to check for previous
definitions of those macros (this cannot be done in a makefile).
* Remove LTO checks in templates
Since now NO_ACTION_MACRO/FUNCTION are defined as needed in action.h (which is
included by quantum.h), checking for LTO in keyboard and user code is no
longer required.
* Update LTO_ENABLE docs
The list of hidden subcommands were approved by @skullydazed ;)
Currently hidden if 'user.developer' is not True:
- cformat
- docs
- kle2json
- pyformat
- pytest
* Change _delay_ms/us() to wait_ms/us()
* Switch to platform-agnostic GPIO macros
* Add AVR spi_master and migrate Adafruit BLE code
* Set verbose back to false
* Add clock divisor, bit order and SPI mode configuration for init
* Add start and stop functions
* Move configuration of mode, endianness and speed to `spi_start()`
* Some breaks here would be good
* Default Adafruit BLE clock divisor to 4 (2MHz on the Feather 32U4)
* Remove mode and divisor enums
* Add some docs
* No hr at EOF
* Add links in sidebar
* add feature part 01
* update sentences
* update sentences
* update sentences
* update file based on comment
* leave ctrl, shift, alt key name as alphabet
* update file based on comment
* update file based on comment
* update file based on comment
* update file based on comment
* remove unnecessary space on define line
* update sentence based on pull request's comment
* translate 'breathing' in document
* change expression in table
* update file based on comment
* change the word 'brightness', and update based on comment
* update based on comment
* update based on comment
* add language directory name to each internal link
* update based on comment
* update based on comment
* Rename UC_OSX (and related constants) to UC_MAC
* Update UNICODE_SONG_OSX references to UNICODE_SONG_MAC
* Update UC_M_OS references to UC_M_MA
* Add UC_OSX alias for backwards compatibility
* Add deprecation warning for UC_OSX to Unicode docs
* Add UC_M_OS alias for backwards compatibility
* Update newly found UC_M_OS and UNICODE_SONG_OSX references
* Add legacy UNICODE_MODE_OSX alias, revert changes to user keymaps
* Add legacy UNICODE_SONG_OSX alias, revert changes to user keymaps
* Replace removed sounds in Unicode song doc examples
* added the description of the reading order of the rules.mk files.
* Update docs/hardware_keyboard_guidelines.md
Co-Authored-By: Ryan <fauxpark@gmail.com>
* Update docs/hardware_keyboard_guidelines.md
Co-Authored-By: Ryan <fauxpark@gmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* [Docs] Update RGB Matrix docs with function refs
* Fix up code samples
* suggestions by noroadsleft
* Fix small typo
Co-authored-by: James Young <xxiinophobia@yahoo.com>
* Improve process_record system
Code based on @colinta's
* Rename and better handle functions
* Fix incorrect function call to process_record_user
* Add documentation for post_process_record
* Add both get_event_keycode and get_record_keycode functions
And add some comments about these functions
* Update code format
* Cleanup merge artifacts
* Add Word Per Minute calculation feature
* Fix copyright info
* Remove header from quantum.c, setup overloadable keycode inclusion for WPM, update docs
* Simplify logic for keycode filtering
* Adding link from summary to wpm_feature info
* Update docs/feature_wpm.md
Typo in function prototype example in docs
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Add WPM transport via i2c
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
* Add support for Bootmagic lite when using SPLIT_HAND_PIN
* Deduplicate bootmagic_lite logic from within via
* Revert location of defaults so that user overrides still work for now
* Tidy up code slightly
* [Docs] Update layer documentation
* Add layer_state_cmp functions
* Fix cut/copy/paste issue
* Add id tags
* Apply noroads corrections
* Move Layers section to separate document
* Fix ID tag for layers
* Use better name for summary/side bar
* Fix feature page linkage
As well as a small spell error close by
* Remove paper analogy for now
* Update switch to array to allow custom values
* Add adc keymap
* update docs to reflect alignment of default 10 bit
* start conversion to USE_ADCVn
* samplerate is hella wrong...stub out for now
* basic f1 and f4 functionality
* Tidy up current changes
* Restore old pinToMux function
* Add back sample rate for supported platforms
* F0 compile fixes
* wordsmithery
Co-Authored-By: Ryan <fauxpark@gmail.com>
* Remove reference to avr only function
Co-authored-by: Ryan <fauxpark@gmail.com>
* fix CLI section links in the Summary
* fix heading in Pointing Device doc
* fix headings in PS/2 Mouse Support doc
* add explicit section ids to I2C Master Driver doc
* reformat GPIO Controls table
Much like the I2C Master Driver doc, I found this a bit less than ideal to read. (The table was actually wider than the space available for it.)
Reformatted so each GPIO function is an H3 heading, followed by a paragraph and a table of each architecture's old-style function.
* migrate changes from I2C Master Driver doc to Japanese translation
* add explicit anchors to I2C Master Driver docs
* fix code block language markers
The language markers are case-sensitive; using the wrong case means the syntax highlighting doesn't work.
Good: ```c
Bad: ```C
* restore Japanese I2C Master Driver doc to current master
Can't update the internal tracking references accurately until the changes to the English doc are committed to master.
* add explicit anchors to edited files
* change ChibiOS/ARM to ARM/ChibiOS
Because ARM/ATSAM is also a thing that exists.
* fix code block language markers again
Used the wrong markers in a few spots. Also these are apparently always supposed to be lowercase.
* add section anchors to cli.md
* restore table formatting on GPIO Control doc
* remove changes to _summary.md
* fix some broken links
* remove duplicate and confusing material from cli.md
* Switch brazil to the 2 letter country code
* Update docs/_langs.md
Co-Authored-By: Ryan <fauxpark@gmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* Rearrange the custom CSS a bit.
* fix css name
* add missing quote
* Fix up dark mode rendering. (#8392)
* Fix up dark mode rendering.
* Update index.html
* Fix up code blocks
* Fix code in page toc
* Update docs/qmk_custom_dark.css
Co-Authored-By: Ryan <fauxpark@gmail.com>
Co-authored-by: skullY <skullydazed@gmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* Add support for STM32L0/L1 onboard EEPROM.
* Update docs/eeprom_driver.md
Co-Authored-By: Joel Challis <git@zvecr.com>
Co-authored-by: Joel Challis <git@zvecr.com>
* New feature: RGBLIGHT_LAYERS
This feature allows users to define multiple independent layers of lighting
that can be toggled on and off individually, making it easy to use your
RGB lighting to indicate things like active keyboard layer & modifier state.
* Demonstrate built in functions for layer state checking
Also link the video in the docs.
* Follow existing pattern for setting rgblight_status flags
* Eliminate rgblight_is_static_mode since it's not needed
Just check to see if the timer is enabled directly.
* Add buffer based single line pan, arbitrary byte write to buffer
* Change dirty mask to inverse of OLED_BLOCK_TYPE for future proofing larger buffer sizes
* Updating docs to include new functions
* Updating to clarify scroll vs pan
- minor typo on intro paragraph (the -> them)
- remove note about :check-size target (`make` task now does this automatically)
- heading level for Caterina commands section
- typo regarding Halfkay (come -> comes)
* [Docs] Update ISP Flashing guide
* Apply suggestions from code review
AKA why you shouldn't write docs at 2am
Co-Authored-By: fauxpark <fauxpark@gmail.com>
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update workding for planck-qmk-dfu
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
* complete translation.
* Update docs/ja/feature_tap_dance.md
Update the file based on the suggestions.
* Update docs/ja/feature_tap_dance.md
Update the file based on the suggestions.
* Apply suggestions from code review
Update the file based on the suggestions.
* Apply suggestions from code review
Update the file based on the suggestions (Part 2).
* Apply suggestions from code review
Update the file based on the suggestions (Part 3).
* Apply suggestions from code review
Update the file based on the suggestions (Part 3).
* Apply suggestions from code review
Update the file based on the suggestions (Part 4).
* Apply suggestions from code review
Update the file based on the suggestions (Part 5).
ご提案いただいた修正案は全て確認できました。
続いて、コメント行の調整、「打つ・叩く」の変更、その他の修正を行います。
* fixed typo.
* Update the file based on the suggestions (Part 6).
* Update the file based on the suggestions (Part 7).
* Fixed sentence.
* Update docs/ja/feature_tap_dance.md
Update the file based on the suggestions (Part 8).
* Update the file based on the suggestions (Part 9).
Co-Authored-By: Takeshi ISHII <2170248+mtei@users.noreply.github.com>
Co-Authored-By: shela <shelaf@users.noreply.github.com>
* Add link to "Useful functions" in macro docs
Help people find additional features they can activate within a macro
* Update docs/feature_macros.md
Co-Authored-By: Drashna Jaelre <drashna@live.com>
Co-authored-by: skullydazed <skullydazed@users.noreply.github.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
* add detail-guide part
* some updates for easy reading
* some updates for easy reading
* some updates for easy reading
* some updates for easy reading
* some updates for easy reading
* some updates for easy reading
* some updates for easy reading
* some updates for easy reading
* update file based on comment
* update file based on comment
* update file based on comment
* update git command in header
* update files based on comments, and update git command in header
* update file based on comment
* update file based on comment
* update file based on comment
* update file based on comment
* update file based on comment
* update file based on comment
* update file based on comment
* update file based on comment
Co-Authored-By: shela <shelaf@users.noreply.github.com>
Co-Authored-By: Takeshi ISHII <2170248+mtei@users.noreply.github.com>
* Fix out of bound OLED font access
The default font is 1344 bytes, or a total of 224 glyphs (each 6-bytes wide).
OLED_FONT_END defaults to 224, which if used will then index off the end of
the font array. So either the documentation or code is wrong.
Instead of figuring out the rewording of the documentation, just change
the OLED_FONT_END default value to 223, to match the documentation and code.
* Add static assert to check array size
Build bomb if the font array size doesn't match to the defines.
* update zh-cn translate
Timestamp was added at the end of the document, it can help me manage version easier.
* fix _summary.md to utf-8
* fix _summary.md with vscode
- uprintf -> dprintf
- Fix atsam "vendor" eeprom.
- Bump Kinetis K20x to 64 bytes, too.
- Rollback Kinetis to 32 bytes as partitioning can only be done once. Add warning about changing the value.
- Change RAM-backed "fake" EEPROM implementations to match eeconfig's current usage.
- Add 24LC128 by request.
* Define default HSV and speed for RGB matrix.
* Documentation for configuration values RGB_MATRIX_STARTUP_HUE, RGB_MATRIX_STARTUP_SAT and RGB_MATRIX_STARTUP_VAL.
* Document RGB_MATRIX_STARTUP_SPD.
* Preserve the ordering.
* Implement IGNORE_MOD_TAP_INTERRUPT_PER_KEY
- Add configurable option IGNORE_MOD_TAP_INTERRUPT_PER_KEY
- Add function get_ignore_mod_tap_interrupt iff the option is enabled
Unless IGNORE_MOD_TAP_INTERRUPT_PER_KEY is defined, this patch does not affect the resulting binary.
* Add documentation for IGNORE_MOD_TAP_INTERRUPT_PER_KEY
* Left-right gradient.
* Update the comment to match the new functionality.
* CPP does integer division so this round is not necessary.
* The x-range is actually 224, update comment and use bit-shifting again.
* Update docs with gradient left-right effect and associated "DISABLE" option.