* 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
* [Driver] bugfix reset the scaling register flag to FALSE
* Update drivers/issi/is31fl3741.c
Co-authored-by: Ryan <fauxpark@gmail.com>
* Add CS & SW defines for ISSI3741
* Make IS31FL3741 control register update clearer
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Jumail Mundekkat <mundekkat@hotmail.com>
* Adding VIA support for sixkeyboard
* Update keyboards/sixkeyboard/keymaps/via/keymap.c
* Update keyboards/sixkeyboard/keymaps/via/keymap.c
* Update keyboards/sixkeyboard/keymaps/via/keymap.c
* Update keyboards/sixkeyboard/keymaps/via/keymap.c
* Update keymap.c
added suggested header. left my name out and changed year to 2020.
* split up the e85 into hotswap and soldered variants
* remove layout_all LAYOUT macro for hotswap pcb
* add copyright header to to all config files
* remove list of alternate bootloaders
* spruce up config file
* comply with PR check list
* Update keyboards/exclusive/e85/hotswap/info.json
* Update keyboards/exclusive/e85/hotswap/info.json
* Update keyboards/exclusive/e85/hotswap/info.json
* Update keyboards/exclusive/e85/rules.mk
* Update keyboards/exclusive/e85/config.h
* Update keyboards/exclusive/e85/hotswap/config.h
* Update keyboards/exclusive/e85/soldered/config.h
* remove LAYOUT_all in hotswap and also remove superfluous comments
* remove the soldered tsangan map
* replaced #define PRODUCT_ID 0x1157 with #define PRODUCT_ID 0x2157
replaced product id to distinguish rev2 from rev1.
bakingpy gave me permission through discord chat.
* 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
The recent change to unnest macros put the enter on the wrong matrix key. On the 1uprgb, the ANSI and ISO enters share the same cell as does the ANSI and ISO backslash.
* 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>
* 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
Some STM32 chips have STM32_DMA1_STREAM1 as the first DMA stream, others
(F4xx, F7xx, H7xx) have STM32_DMA1_STREAM0. Instead of those names, use
STM32_DMA_STREAM(0), which should always give the first stm32_dma_stream_t
structure in the DMA streams array, so that the stream ID would be
calculated correctly.
* 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
* Update vusb to match 3rd endpoint.
- With the addition of https://github.com/qmk/v-usb/pull/1 a 3rd endpoint (endpoint4) becomes available.
- We can assign mouse/extrakeys to that endpoint as its a desirable feature and leave rawhid and console to compete for the 2nd endpoint.
NOTE: The version of vusb.c in future branch is older than master. Just remember that it will need a #error if both raw_hid and console are enabled at the same time.
* Final Fixes
* Update tmk_core/protocol/vusb/vusb.c
* Update tmk_core/protocol/vusb/vusb.c
* Update tmk_core/protocol/vusb/usbconfig.h
* Update tmk_core/protocol/vusb/usbconfig.h
* Update tmk_core/protocol/vusb/usbconfig.h
* Update tmk_core/protocol/vusb/usbconfig.h
* Updated vusb submodule to latest commit
* 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
* Add support for hsv->rgb conversion without using CIE curve.
* Modify anavi/macropad8 to disable unicode (was unused), otherwise firmware size is too large.
* 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
* Initialize Layer State on startup
Right now, on startup, the default layer state gets called and set, triggering the callback functions for the default layer state. However, the normal layer state never actually gets initialized. It's set to 0 directly, by default, but the callback functions are never actually called. This creates some inconsistency in the behavior for end users. This adds a simple "clear" that triggers the callback on startup. This should produce more consisten behavior between the two functions and layer masks.
* Stupid hack
* Fix type casting?
* Fix compile issues with magic is disabled
* 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>
* Disable NKRO on V-USB controllers
* not _currently_ supported text
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* Re-fix the dual-bank bootloader stuff.
* Use wait_ms() instead of using nop's for a delay, as ChibiOS is actually running at the time of bootloader jump.
Mousekey scrolling should have a separate repeat variable
to keep track of scrolling acceleration, instead of being
tied to mouse movement scolling in mousekeys. The send function
should record when the last movement was made since this is
when movement is actually sent. Doing this fixes the bug where
the initial press of a mousekey scroll button causes a double scroll.
Signed-off-by: Daniel Hong <daniel.hong@live.com>
* 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.
* Add a compiling layout based on minidox
* Add the correct pins
* Add old for science code
* Update to 2020 standards
* Get the keymap working
* update config
* Update pinout
* Fix pins
* Make requested changes
* Add info.json for configurator
* for science - PR comments
* Apply suggestions from code review
* setup handwired pteron38
* Clean up readme
* readme follow template
* c formatting conventions
* remove file size comments from rules.mk
* use direct link to imgur image
* Apply suggestions from code review
* add license
* kbd67/mkiirgb - allow disabling rgb matrix
wrap rgb matrix funs in defines
* kbd67mkiirgb - changes per review
remove kb funcs that just call the user version. what's left is all rgb
matrix stuff so we can just wrap the whole file.
* Initial prep for PR
* Fixing jsons for revs
* Remove old keymap ref in readme
* Add Rev1 default layout
* Fix extra comma in default r1 keymap
* Changed default keymap for r1 to match new split bottom row macro name, updated via keymap readme, updated r1 json to match layout macro name, updated split space macro for r1
* Moved combo configs to default keymaps, removed unused bootloader selections
* Update keyboards/underscore33/rev1/rules.mk
* Update keyboards/underscore33/rev2/rules.mk
* Refactor _33 folder structure
* Add VIA keymap to rev1
* Rename macros and product_id as suggested
Specifically, when rgb matrix is enabled and using the ws2812 driver, and rgb light is enabled at the same time, print a message about coexistance because it can cause issues, since you cannot change pins/config for the WS2812 driver.
* add support for ModelM USB board
* EMI improvement: remove unnecessary toggling of MOSI pin
* address review comments
* Update keyboards/mschwingen/modelm/rules.mk
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/mschwingen/modelm/rules.mk
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/mschwingen/modelm/config.h
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/mschwingen/modelm/config.h
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/mschwingen/modelm/rules.mk
Co-authored-by: Drashna Jaelre <drashna@live.com>
* Update keyboards/mschwingen/modelm/keymaps/default/keymap.c
Co-authored-by: Drashna Jaelre <drashna@live.com>
* update printf usage
* add comment
* EMI improvement: remove unnecessary toggling of MOSI signal
* remove trailing space
* use shorter macros as suggested in review by noroadsleft, re-format table to line up columns
* Update keyboards/mschwingen/modelm/config.h
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/mschwingen/modelm/rules.mk
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/mschwingen/modelm/rules.mk
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/mschwingen/modelm/rules.mk
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/mschwingen/modelm/README.md
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/mschwingen/modelm/README.md
Co-authored-by: Ryan <fauxpark@gmail.com>
* Apply suggestions from code review
use spi_read from core insteads of our own copy
Co-authored-by: Ryan <fauxpark@gmail.com>
* include spi_master.c to use spi_read()
* Update keyboards/mschwingen/modelm/README.md
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
* Apply suggestions from code review: correct indenting in keymap
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
* Apply suggestions from code review
use automatic variant defines from makefile instead of defining our own
Co-authored-by: Drashna Jaelre <drashna@live.com>
* Update keyboards/mschwingen/modelm/rules.mk: use QUANTUM_LIB_SRC for uart.c
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Michael Schwingen <michael@schwingen.org>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* added matrix 8xv2.0 additional keyboard
* Apply suggestions from code review
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
* add copyright and speed up the matrix scanning
* Update keyboards/matrix/m20add/rules.mk
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
* added nemui layout
* via support working
* added license headers for c and h files
* Update keyboards/nemui/keymaps/via/rules.mk
* Update keyboards/nemui/nemui.c
* Update keyboards/nemui/config.h
* Update keyboards/nemui/readme.md
* Update keyboards/nemui/rules.mk
* removed nemui.json as it was supposed to only be in via repo
* Update keyboards/nemui/keymaps/default/keymap.c
* Update keyboards/nemui/info.json
* Update keyboards/nemui/info.json
* Update keyboards/nemui/keymaps/via/keymap.c
* Update keyboards/nemui/keymaps/via/keymap.c
* first iteration of my keymap
* * move to userspace
* "script" modes
* keymap bling
* OM and RUPA keys
and tryin to micro-optimize in process_records.c
* woops
swap shifted rupas
forgot to add codepoint for OM
* Apply suggestions from code review
Co-authored-by: Drashna Jaelre <drashna@live.com>
* add call to process_record_keymap, per review
* fall through to process_record_keymap
* license headers
Co-authored-by: Drashna Jaelre <drashna@live.com>
* add in drewguy's code with a few additions to the keymap
* add VID and PID
* fixup defualt keymap
* add VIA keymap
* thanks to bigchimpo for reminding me to put an Fn key in the default keymap
* make sure we have the right gitugithub url for drew
* remove description as per PR checklist
* append readme with more information
* Update keyboards/holyswitch/southpaw75/config.h
* Update keyboards/holyswitch/southpaw75/info.json
* Update keyboards/holyswitch/southpaw75/southpaw75.h
* Update keyboards/holyswitch/southpaw75/info.json
* [kbdfans] Added dbroqua layout for kbd6x
Add dbroqua keymap for kbd6x
Add dbroqua layout for kbd6x with HHKB style and RGB.
* Update keymap.c
* Change based on zvecr
* Added RESET button
* Add support for keyboard 'Bolt'
Add support for keyboard 'Bolt'
* Update info.json
* Update info.json
* Update keyboards/lazydesigners/bolt/config.h
Co-authored-by: Joel Challis <git@zvecr.com>
* Update keyboards/lazydesigners/bolt/rules.mk
Co-authored-by: Joel Challis <git@zvecr.com>
* Update keyboards/lazydesigners/bolt/readme.md
Co-authored-by: Joel Challis <git@zvecr.com>
* Update info.json
* Update keyboards/lazydesigners/bolt/info.json
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/lazydesigners/bolt/bolt.h
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/lazydesigners/bolt/info.json
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/lazydesigners/bolt/keymaps/default/keymap.c
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/lazydesigners/bolt/info.json
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/lazydesigners/bolt/keymaps/default/keymap.c
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/lazydesigners/bolt/keymaps/default/keymap.c
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
* via keymap for boardsource/3x4
* fix formatting
* Apply suggestions from code review
fix rules.mk
* Update keyboards/boardsource/3x4/rules.mk
* use unique product ID
* update vendor id to be unique, update product id to make more sense
* First commit
* Added ChibiOS files
* renamed files to remove capital letters
* Fixed layout references
* fixed image reference
* Fixing errors
* Fixed config.h
* changed second up to fn key
* renamed files and added beginning of via compatibility
* renamed keyboard
* removed vscode files
* fixing files for via compatibility
* adding via files
* working via compatibility
* Update readme.md
* Update readme.md
* First commit
* Added ChibiOS files
* renamed files to remove capital letters
* Fixed layout references
* fixed image reference
* Fixing errors
* Fixed config.h
* changed second up to fn key
* renamed files and added beginning of via compatibility
* renamed keyboard
* removed vscode files
* fixing files for via compatibility
* adding via files
* working via compatibility
* added license header to via file
* preparing for pull request
* Fixed firmware according to pull request feedback
* fixed readme according to pull request feedback
* Updated readme and removed unnecessary layers in default/keymap.c
* removed whitespace
* updated keymap readme to match suggestion
* Initial commit for HHKB Lite 2
* Rearrange keymap
* Clean up config
* Fix pin assignments
* Code and filename cleanup
* Add README
* Apply suggestions from code review
Code cleanup
* Update keyboards/hhkb_lite_2/README.md
Documentation cleanup
* Change Vendor ID to unused
* One more LAYOUT
* Via keymap for HHKB Lite 2
* Remove redundant keymap.c
* Add README for Via keymap
* Fix vendorId for Via keymap
* Apply suggestions from code review
Cleanup based on review feedback
* Clean up via keymap makefile rules
* Switch to C keymap instead of JSON for Via layout
* Move bootmagic key config to main
Moved to main keyboard config to be shared by all keymaps.
* Address PR feedback
* Reformat config comments
* Format rules.mk comments
* Rename README -> readme
* Use `make` instead of `qmk` in examples
* 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
* Updating keymaps for Gingham and DMQ Design SPIN and adding keymap for BoardSource 4x12
* Update keyboards/boardsource/4x12/keymaps/codecoffeecode/keymap.c
* cleaning up
* got some working bones
* working pretty well
* really livin' now
* all done
* copyright adjustments
* default keymap
* readme
* no descrip
* remove trailing slashes
* remove blank line
* remove trailing slashes
* clean up readme
* clean up rules spacing
* bootloader spacing
* made quick json from KLE converter
* remove postageboard mini references
* add actual manu and product values
* add make example
* rework
* remove double bootload define
* smoller image
* liscensed
* correct dimensions
* dimensions
Specifically, don't want to have both RGBLight and RGB Matrix (with WS2812) enabled at the same time. This will cause issues in usage, but apparently not when compiling. Additionally, the led matrix was not encapsulated with preprocessor code.
* ext65rev2 initial
* open drain change and config
* pwm
* pwm streams
* spi
* ws2812 spi
* oled
* enable sleep
* keymap and dissable oled
* readd oleds
* nooled
* led_update_kb revised
* update and remove board specific files and add to ext65rev2.c
* Update OLED usb status
* Update keyboards led state
* Layer state set kb
* Return state
* Update keyboards led state
* Update OLED usb status
* merge master and merge rev folders
* add readme
* move board_init to only if OLED is enabled
* update readme
* update rules.mk
* Remove OLED from rules.mk
* Update config.h
* show AEBoards
* Update keyboards/aeboards/ext65/rev2/rules.mk
Fixes the handling for the oneshot cleanup, so it only cleans up if it is active. It should not cleanup of SHO is off (eg using a normal oneshot key), nor if it's actively pressed or used.
Previous behavior BROKE swap hand key.
* added dumbo keyboard
* added my personal keymap
* changed picture in readme
* removed rev1 folder to reduce clutter and confusion
* missed a few changes in last commit, everything should be added now
* Apply suggestions from code review
Committed all of the suggested changes except for removing the bootloader reference comments in rules.mk as i think it is handy.
* Update keyboards/dumbo/rules.mk
Removed the bootloader reference as suggested
* Apply clean up of info.json
* Apply suggestions from noroadsleft to support community layout LAYOUT_SPLIT_3x6_4 in the future_4
* Added handwired/selene based on handwired/106_with_trackpoint
* now at least parially working
* Selene Firmware 1, ready
* Updated Readme to align more with Template
* Added URL to info.json
* Fix status Lights being wired incorrectly
* Update keyboards/handwired/selene/config.h
* Update keyboards/handwired/selene/keymaps/Bpendragon/keymap.c
* Update keyboards/handwired/selene/selene.c
* Update keyboards/handwired/selene/selene.h
* Changes for PR requested by fauxpark
* Adds `default` keymap
* Renames `Bpendragon` to `bpendragon`
* Removes uneeded descriptors and options
* Simplifies return statement in `keymap.c`
* Removes trailing slashes from layout in `keymap.c`
* Updates `readme.mk` to reflect default keymap
* Aligns comments in `rules.mk`
* Forced folder name update to lowercase
* Apply suggestions from code review
* On branch add_chavdai40_keyboard
Changes to be committed:
new file: keyboards/chavdai40/boards/GENERIC_STM32_F042X6/board.c
new file: keyboards/chavdai40/boards/GENERIC_STM32_F042X6/board.h
new file: keyboards/chavdai40/boards/GENERIC_STM32_F042X6/board.mk
new file: keyboards/chavdai40/bootloader_defs.h
new file: keyboards/chavdai40/chavdai40.c
new file: keyboards/chavdai40/chavdai40.h
new file: keyboards/chavdai40/chconf.h
new file: keyboards/chavdai40/config.h
new file: keyboards/chavdai40/halconf.h
new file: keyboards/chavdai40/info.json
new file: keyboards/chavdai40/keymaps/42keys-dvorak/config.h
new file: keyboards/chavdai40/keymaps/42keys-dvorak/keymap.c
new file: keyboards/chavdai40/keymaps/42keys-eucalyn/config.h
new file: keyboards/chavdai40/keymaps/42keys-eucalyn/keymap.c
new file: keyboards/chavdai40/keymaps/42keys-qwerty/config.h
new file: keyboards/chavdai40/keymaps/42keys-qwerty/keymap.c
new file: keyboards/chavdai40/keymaps/44keys-dvorak/config.h
new file: keyboards/chavdai40/keymaps/44keys-dvorak/keymap.c
new file: keyboards/chavdai40/keymaps/44keys-eucalyn/config.h
new file: keyboards/chavdai40/keymaps/44keys-eucalyn/keymap.c
new file: keyboards/chavdai40/keymaps/44keys-qwerty/config.h
new file: keyboards/chavdai40/keymaps/44keys-qwerty/keymap.c
new file: keyboards/chavdai40/keymaps/default/config.h
new file: keyboards/chavdai40/keymaps/default/keymap.c
new file: keyboards/chavdai40/mcuconf.h
new file: keyboards/chavdai40/readme.md
new file: keyboards/chavdai40/rules.mk
* commit suggestions of zvecr and fauxpark, thanks
* commit suggestions of fauxpark, thanks
* commit suggestions of fauxpark, thanks
* commit suggestions of drashna, thanks
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
* Create Alter folder
* Revert "Create Alter folder"
This reverts commit 361103b821dbb22957b66cdedb0d11f996def71c.
* Added a via keymap folder
* Edited files based on requested changes
* Modify VENDOR_ID of kudox-keyboard series.
* Add via support for kudox/rev3.
* Add via support for kudox/columner.
* Add via support for kudox-game keyboard.
* Remove info.json from kudox/rev1.
* Revert kudox/rev1/info.json.
* Remove redundancy spaces.
* Add key_count on kudox/**/info.json.
* Remove unsupported items from info.json.
* Modify to use rgblight_mode from rgblight_mode_noeeprom
* Remove unneed line from info.json
* Revert keyboards/kudox/rev1/info.json
* 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 split_3x5_3 support to Minidox
* Add split_3x5_3 support to Miniaxe
* Add LAYOUT_mini to Centromere
This layout macro removes the need or KC_NO keycodes in the keymap.
* Add split_3x5_3 support to Centromere
* Add split_3x5_3 support to suihankey split
* Add LAYOUT_mini to centromere/info.json
* Add LAYOUT_mini to crkbd
* Add split_3x5_3 support to crkbd
* Change mini layout names
* Rename main layouts for split_3x6_3 keyboards
* Use split_3x5_3 macro for remaining keyboards
* Update relevant info.json files
* Fix suihankey/split/alpha macro
* Add layout aliases for suihankey
* Create Alter folder
* Revert "Create Alter folder"
This reverts commit 361103b821dbb22957b66cdedb0d11f996def71c.
* Add via keymap folder for n2 keyboard
* KBDfans DZ60 ANSI with Arrow also RGB Underglow as a Caps Lock Indicator
* Change all the KC_NOs to _______ (seven underscores)
* change all the KC_NOs to _______ (seven underscores)
* Update keymap.c
* Update readme.md
Update build environment setup link, make instructions link, and make instructions link.
* 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
* fix Configurator data
* rework layout macros
* enable 65_ansi_blocker Community Layout support
* fix layout macro references in info.json
* update rules.mk per fauxpark
* update rules.mk per fauxpark II
Co-authored-by: ridingqwerty <george.g.koenig@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
* 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
* Added a new handwired 2x3,2x4,2x5 keyboard called the Stream_cheap
stream cheap is a diy version of the El Gato Stream deck minus the LCD keys
but you can always get relegendable keycaps to change the icon if you want
* added missing commas in info.json files
* update config to change pin definition
* changed keymap.c for 2x4
was trying to add macros and multi key commands to the keymap,
i added 2 ctrl commands that have more than one key i.e. ctrl-k-c (visual studio comment hot key)
and i added a test string to see how type out a string with the press of a button
* testing more changes to the keymap to the 2x5
* Update keyboards/handwired/stream_cheap/2x3/2x3.c
* Update keyboards/handwired/stream_cheap/2x3/config.h
* Update keyboards/handwired/stream_cheap/2x3/rules.mk
* Update keyboards/handwired/stream_cheap/2x5/config.h
* Update keyboards/handwired/stream_cheap/2x5/info.json
* Update keyboards/handwired/stream_cheap/2x3/config.h
* Update keyboards/handwired/stream_cheap/2x3/info.json
* Update keyboards/handwired/stream_cheap/2x4/config.h
* Update keyboards/handwired/stream_cheap/2x4/info.json
* Update keyboards/handwired/stream_cheap/2x4/keymaps/default/keymap.c
* Update keyboards/handwired/stream_cheap/2x5/info.json
* Update keyboards/handwired/stream_cheap/2x5/config.h
* Update keyboards/handwired/stream_cheap/2x5/rules.mk
* Update keyboards/handwired/stream_cheap/2x4/2x4.c
* Update keyboards/handwired/stream_cheap/2x4/config.h
* Update keyboards/handwired/stream_cheap/2x4/info.json
* Update keyboards/handwired/stream_cheap/2x5/2x5.c
* Update keyboards/handwired/stream_cheap/2x4/rules.mk
* removed file as per request of user zvecr
* removed line in rules.mk for 2x5
* Update keyboards/handwired/stream_cheap/2x5/keymaps/default/keymap.c
* Apply suggestions from code review
changes suggested in code review
* Update Japanese translation of feature_mouse_keys.md.
* fix original document version.
* Update docs/ja/feature_mouse_keys.md
* update based on comment
* Initial qaz commit
* Enable combos
* Improved default keymaps
* Fixed configurator json
* Via initial
* Corrected VIA json
* touch
* Via fixes
* Fixed via matrix
* Formatting
* Add lighting to qaz
* Add rgb animations, add rgb to l2, fix error in via json, enable rgblight by default
* Update QAZ readme
* Remove VIA json, prep for PR
* Correct default bootloader for pro-micro
* Remove accidentally added submodules
* Change names of layout macros
* Move combo defs to keymap folders, fix layout names in info.json
* Fixes transposition of comma and dot keys on default keymaps
* Update keyboards/qaz/keymaps/default/config.h
Co-authored-by: Joel Challis <git@zvecr.com>
* Update keyboards/qaz/keymaps/default_big_space/config.h
Co-authored-by: Joel Challis <git@zvecr.com>
* Update keyboards/qaz/rules.mk
Co-authored-by: Joel Challis <git@zvecr.com>
* Update keyboards/qaz/readme.md
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/qaz/rules.mk
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
* branch keyboards/kinesis/kint2pp from keyboards/kinesis/stapelberg
Changes will be made in the next commit
* [Keyboard] update wiring for kinT (kint2pp variant)
* add QMK plumbing
* Apply zvecr’s suggestions from code review
* Update keyboards/kinesis/kint2pp/config.h
* Update keyboards/kinesis/kint2pp/config.h
* remove superfluous config.h include
* Add Instant65 to QMK
* Fix via map
* Apply suggestions from code review
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* Added via support for 7sKB
-Changing the VID
-Add a keymap via
* Update keyboards/7skb/keymaps/via/keymap.c
Co-authored-by: Joel Challis <git@zvecr.com>
* Update keyboards/7skb/rev1/config.h
Co-authored-by: Ryan <fauxpark@gmail.com>
* Change of VID
I got a new VID and I'm changing the VID.
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* updated iris and kyria keymaps
* added symbols I forgot to add to keymap
* Update keyboards/keebio/iris/keymaps/jhelvy/keymap.c
Co-authored-by: Ryan <fauxpark@gmail.com>
* condense code
Co-authored-by: Ryan <fauxpark@gmail.com>
* condense code
Co-authored-by: Ryan <fauxpark@gmail.com>
* made another small fix to a missing symbol in my iris keymap
Co-authored-by: Ryan <fauxpark@gmail.com>
* [Keyboard] Initial Keybage/RadPad firmware
* [Keyboard] RadPad apply pull request feedback
- Change `LAYOUT_***_Encoders` to `LAYOUT_***_encoders` in <keyboard>.h
- Remove bootloader comments and unnecessary build options from rules.mk
- Use `LTO_ENABLE`
- Remove empty config.h from default keymap
- Remove trailing ` \` from keymap
* [Keyboard] RadPad fix info.json
- Change `LAYOUT_***_Encoders` to `LAYOUT_***_encoders` in info.json
* [Keyboard] Add host LED status to OLED display
* [Keyboard] Use LAYOUT_4x4_encoders, not LAYOUT
* [Keyboard] Use LAYOUT_4x4_encoders, not LAYOUT
* [Keyboard] Remove DESCRIPTION from config.h
It wants a number, but a number of files have it set to "no", even
though it's commented out. This means that if you set it to no, it
will cause a compiler error. This sets the default to "no", and
checks to make sure it's not set to "no" before processing it, and
striping the value from it.
* rewrite keyboards/massdrop/ctrl/keymaps/responsive_pattern/keymap.c in respopnse to the last update (#5328)
* remove print.h
* changed default parameters, modified readme
* I2C_TIMEOUT is not defined on arm teensy
* Work round teensy having different ChibiOS config options
* Stash OLED conf files
* update comment
* update comment
* Remove stm32 alias to allow teensy alt mode
* adding via support for Dactyl Manuform 5x7
* Changing Vendor ID from FEED to 444D (DM)
* Update keyboards/handwired/dactyl_manuform/4x6/config.h
Fixing typo in Dactyl Manuform 4x6 Product Id
Co-authored-by: Joel Challis <git@zvecr.com>
* Update keyboards/handwired/dactyl_manuform/4x5/config.h
Fixing typo in Dactyl Manuform 4x5 Product Id
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Roland Bernau <roland@bernau.dev>
Co-authored-by: Joel Challis <git@zvecr.com>
* new keyboard for squiggle.
* added pic and other layout.
* updated readme.
* following drashna's suggestions.
* removed an empty line and right hand as master.
* following fauxpark's suggestions.
* following manna-harbour's suggestions.
* trying to satisfy PR Lint keyboards
* manna-harbour forgot to add it.
* following fauxparx's suggestions.
* following fauxpark's suggestions.
* following fauxpark's suggestions.'
'
* following fauxpark's suggestions.
* following fauxpark''s suggestions.
* upated info.json to represent the actual layouts.
* following noroadsleft's suggestions.
* Add new keyboard, the N87
* Deleted config.h and readme.md on tsangan keymap folder
* Edited layout names on keymap.c and n87.h. Disabled audio
* Edited files based on requested changes, re-enabled audio on extra data pin B7, enabled audio click, disabled music mode
* Updated the wiring matrix for symmetric_standard layout
* start of punk75 keyboard
* preliminary code for the punk75 keyboard
* readme
* changes to work with USBasp
* changed cols and added configurable led
* set LED's pin as output
* changed led to new port and added rotary encoders
* added code for rotary encoders
* fixed col pins
* fixed encoder orientation
* added delay for tap_code so encoder works as intended
* added preliminary keymap for mine
* personal keymap for punk75
* personal keymap for punk75
* Apply suggestions from code review
Co-authored-by: Joel Challis <git@zvecr.com>
* Apply suggestions from code review
Co-authored-by: Ryan <fauxpark@gmail.com>
* fixed image
* Apply suggestions from code review
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* Write firmware for the Ferris keyboard
Took inspiration from the gergoplex and the ergodox_ez firmware for the
split matrix with io_expander on the right hand.
Cleaned up a lot of bit fiddling on the mcu side by taking inspiration
from the `split_custom` in quantum.
Still bit fiddling on the mcp side as it is particularly natural to do
so with the abstractions provided by the i2c protocol. Would be good to
clean that up and abstract away the wiring from the generic i2c code in
a similar fashion as quantum and the mcp side behave.
One improvement over the ergodox_ez and the gergoplex firmwares is that
the wiring is straight forward as opposed to swapping rows and columns
in two different places that end up cancelling out for some reason.
At this stage, I have flashed this firmware to a board and have verified
that all keys are behaving as intended by shorting pins.
I still have to solder in some switches and test that everything works
correctly at normal typing speeds, but I don't expect any major issues
given I'm building up on previous effort, including the debouncing code
from the ergodox_ez.
* Remove rotation from info.json and label the keys as per default keymap
* Comply with minor review feedback points
* Use CUSTOM_MATRIX=lite to remove boilerplate
* Update keyboards/handwired/ferris/info.json
Didn't play nicely in the configurator
Co-authored-by: Ryan <fauxpark@gmail.com>
* Remove MIDI_ENABLE from rules.mk
Co-authored-by: Ryan <fauxpark@gmail.com>
* Remove FAUXCLICKY_ENABLE from rules.mk
Co-authored-by: Ryan <fauxpark@gmail.com>
* Prefer wait_ms over _delay_ms
Co-authored-by: Ryan <fauxpark@gmail.com>
* Remove unused include
Co-authored-by: Ryan <fauxpark@gmail.com>
* Remove unused include
Co-authored-by: Ryan <fauxpark@gmail.com>
* Remove unused include
Co-authored-by: Ryan <fauxpark@gmail.com>
* Remove unused includeh
Co-authored-by: Ryan <fauxpark@gmail.com>
* Use dprint over print and remove include for print.h
* Remove all unused includes
* Remove unused code
* Cleanups thanks to code review
* Move more personal settings from the ferris config to the default keymap config
These setting happen to be unused in the default keymap at the moment,
as it has only one layer with no homerow modifiers and no mouse key; but
I would like to keep it there for two reasons:
* It can serve as an example to people creating their own keymap
* I plan to design a more usable default keymap that uses these features
once this PR which adds the Ferris keyboard is merged.
* Consolidate mcp logic inside matrix.c
Co-authored-by: Ryan <fauxpark@gmail.com>
* readded adelheid files
* reworked keymaps
- moved my personal keymap to a new folder
- added a new default keymap
* removed unnecessary backslash
* reenabled command rule
* bumped device number
* fixed layout for configurator
* applied suggestions from code review
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* Create Alter folder
* Revert "Create Alter folder"
This reverts commit 361103b821dbb22957b66cdedb0d11f996def71c.
* Add Alter keyboard
* Fixed keymap.c
* Fixed another issue on the keymap.c
* Updated the files based on the comments
* Edited default keymap and enabled rgbanimations on config.h
* Updated the info.json
* via support for the skog lite
* some code cleanup before submission
* Update keyboards/percent/skog_lite/keymaps/via/config.h
Co-authored-by: Joel Challis <git@zvecr.com>
* Update keyboards/percent/skog_lite/keymaps/via/keymap.c
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update info.json
* Update keyboards/kbdfans/maja/info.json
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/kbdfans/maja/info.json
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
* update keymap
* update ilpse template as well
* fix some key items
* move quote the first layer
* figure out brackets
* update ilpse keymap
* update arrow keys on alice
* change layers
* update layers again
* switch to vim keys
* add mouse keys
Co-authored-by: Khader Syed <khader.syed@aicure.com>
* 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>
- Fix typo in the default layout.
- Move esc and del to the navi layer.
- Fix issue with oneshot layers and double tap aka DBL_TAP.
- Add caps lock to the raise layer.
Was relying on a broken behavior for the double tap to work with
oneshot keys, i.e. the oneshot layer not being cleared after a key
press in `process_record_user`, which allowed me to first press an
oneshot key, then double tap and then a key. With the behavior fixed,
this no longer works. As the oneshot layer will be cleared when double
tap is pressed.
To make double tap useful again. I changed that any of the layer keys
does not clear the double tap. Which allows me for example to first
press double tap, then an oneshot key and then a key. So now I'm able
to type my double symbols again.
* Re-enable mouse keys to fix Chrome OS media keys
I'm not sure if there's a bug in Chrome OS, QMK, or both, but
EXTRAKEY_ENABLE isn't sufficient for media keys to work on Chrome OS.
Instead, MOUSEKEY_ENABLE is also required.
* Remove unnecessary SPLIT_USB_DETECT for Lily58
I've since swapped my Lily58 back to Elite-C v2 controllers with working
VBUS detection.
* Move Crkbd Esc and Ctrl keys; add some shortcuts
* Move MC_ALTT to userspace for cross-board support
* Sync Lily58 keymap with Crkbd
* Fix typos
* Added Handwired Redragon Keyboard as well as default and via keymaps
* Update keyboards/handwired/boss566y/redragon_vara/info.json
Co-authored-by: Joel Challis <git@zvecr.com>
* Update keyboards/handwired/boss566y/redragon_vara/keymaps/default/keymap.c
Co-authored-by: Joel Challis <git@zvecr.com>
* Update keyboards/handwired/boss566y/redragon_vara/keymaps/default/keymap.c
Co-authored-by: Joel Challis <git@zvecr.com>
* Update keyboards/handwired/boss566y/redragon_vara/keymaps/via/keymap.c
Co-authored-by: Joel Challis <git@zvecr.com>
* Update keyboards/handwired/boss566y/redragon_vara/keymaps/via/keymap.c
Co-authored-by: Joel Challis <git@zvecr.com>
* Update keyboards/handwired/boss566y/redragon_vara/keymaps/via/keymap.c
Co-authored-by: Joel Challis <git@zvecr.com>
* Update keyboards/handwired/boss566y/redragon_vara/redragon_vara.c
Co-authored-by: Joel Challis <git@zvecr.com>
* Update keyboards/handwired/boss566y/redragon_vara/redragon_vara.h
Co-authored-by: Joel Challis <git@zvecr.com>
* Update keyboards/handwired/boss566y/redragon_vara/rules.mk
Co-authored-by: Joel Challis <git@zvecr.com>
* Update keyboards/handwired/boss566y/redragon_vara/keymaps/default/keymap.c
Co-authored-by: Joel Challis <git@zvecr.com>
* Update keyboards/handwired/boss566y/redragon_vara/info.json
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/handwired/boss566y/redragon_vara/rules.mk
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keymap.c
Removed defined keycodes from via keymap
* Update keymap.c
replaced defined keycodes in default keymap
* Update readme.md
Changed image to one that matches the physical keyboard
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* Add support for YDKB Chili
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Erovia <Erovia@users.noreply.github.com>
* Updated VIA Support
- Added LAYOUT_all Support for VIA compatibility
- Updated default dp60\layouts\via\keymap.c to mmirror changes to
LAYOUT_all
- Rules.mk updated in both base and via directories.
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Joel Challis <git@zvecr.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);
With this change, when ps2_mouse is disabled, mousekeys works as usual. With
ps2_mouse enabled, mousekeys button state is shared with ps2_mouse for clicking,
dragging, and scrolling, mousekeys clicks are produced by ps2_mouse only, and
mouskeys button state is transferred to mousekeys without generating clicks to
enable mousekeys dragging.
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Erovia <Erovia@users.noreply.github.com>
Co-authored-by: Will <wailinnyu@gmail.com>
Co-authored-by: Andrew Koh <andrew@springlabs.com>
Apparently VIA allocates bits in the layout options field from the
lowest bit, but starting from the **last** option defined in the JSON
file. So the default value 0x06 was actually trying to set the value
`3` (`0b11`) for the second-to-last option ("Right Shift"), which had
only 3 values defined, and the attempt to set an undefined option value
caused the VIA app to hang with a black window.
Fix the default layout options so that it works as intended (the
"Macropad" and "65% Column" options are set).
* Started AHK Companion Development
* Updated the readme
* Added AutoHotKey companion file
* Updated documentation
* Cleaned up the files and revised documentation
* Finished the readme.md updates
* Fixed the LED issue where the last LED did not reflect the right color
* Adding VIA support for 40percentclub/luddite
* Update config.h
* Update rules.mk
* Delete config.h
config.h was created to override the "default" of RGBLED_NUM 8
deleting the file to keep with defaults
* Removing block and comment as suggested
* Update PRODUCT_ID
Changing from:
#define PRODUCT_ID 0x0A0C
To:
#define PRODUCT_ID 0x4C55 // "LU"
* Changing Vendor ID
Changing Vendor ID from:
#define VENDOR_ID 0xFEED
To:
#define VENDOR_ID 0x3430 // "40"
* Adding VIA support to cannonkeys/practice60
Adding VIA support to cannonkeys/practice60
* updated VENDOR_ID to match other CannonKeys boards
* changed PRODUCT_ID to be unique
* added additional notes to readme.md
* keymap.c and config.h for VIA support
* Update readme.md
* Update keyboards/cannonkeys/practice60/readme.md
* Update keyboards/cannonkeys/practice60/readme.md
* Update keyboards/cannonkeys/practice60/config.h
* Update rules.mk
* Update keyboards/cannonkeys/practice60/config.h
* Update config.h
* Rebased from Master
Rebased from Master
* Trying to fix problems in my kyria steez
* repeating last commit.....
* repeating last commit on EDIT layer but swapping direction
exit
* moving the reversed desktop moves to the symbol layers on the same hand, for easier activation
* adding mac desktop movement keys to Kyria layout
* Adding readmes to my keymaps
* Removing a png...
* Update keyboards/ergodox_ez/keymaps/rmw/keymap-mac.c removing EPRM case
* Apply suggestions from code review
Great updates to various old-school or outdated ways I was doing things, removing some commented out code, etc.
* Apply suggestions from code review
Additional improvements
* Moving tapdances.cpp to userspace as tapdances.c
* reindenting the Kyria keymap to follow four-spaces convention, turning off oled on my kyria, improving the led handling on the Ergodox.
* updating led stuff on the other two versions of the keymap, removing EPRM key from main keymap
* Apply suggestions from code review
I'm adding these various removals to the config file because it seems that at this time those settings are in harmony with the ergodox_ez defaults.
* Moving encoder functions into their own userspace file
* Apply suggestions from code review
Removing settings that are now defaults, clearing out placeholder custom keycodes (smh)
* updating encoder functions.
* Moving to LAYOUT_stack for all layers, adding end of file newlines, switching to some shorter keycode aliases
* Okay, refactor is well underway.
* refactored! Also improved led handling for ergodox and rgb handling for kyria
* removing mac/windows swappable version because I don't feel like dealing with it when reflashing is so easy.
* moving LAYOUT_stack into kyria.h
* moving the alternate default layer down next to QWERTY
* [Keymap] Add pierrec83's gherkin keymap
Contribute my gherkin keymap upstream as it is semi-stable. It has grown
in symbiosis with my Kyria keymap which is already upstream.
Add a readme
* Remove generated keymap and instructions to generate it as it is done by qmk flash
* 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!
* Initial fork of Sinc
* Setup keymaps, layouts, and encoders
* Add ANSI configurator layout
* Add ISO layout for configurator
* Add all layout option for configurator
* Fix spacing
* Remove extra line
* Remove unneeded ifdef
* Update readme.md description
* Enable bootmagic lite
* Update USB descriptor
* Add modern led code
* Update default keymap for readability
* Update default keymap readme with layout image
* Add VIA keymap
* Update keyboards/noxary/268_2/keymaps/default/readme.md
Flip order of layout image and title
* Update keyboards/noxary/268_2/keymaps/via/readme.md
Flip order of layout image and title
* Update keyboards/noxary/268_2/readme.md
bullet point keyboard maintainer
* Update keyboards/noxary/268_2/readme.md
Change list style
* Update USB descriptors
* Update default keymap for readability
* Update readme description
* Update rules.mk build options, enable bootmagic and mousekey
* Add commented modern led code
* Add VIA keymap
* Update default keymap readme.md layout image
* Update keyboards/noxary/x268/rules.mk
remove incorrect comment
* Update keyboards/noxary/x268/x268.c
remove commented setPinOutput(B1)
* Update keyboards/noxary/x268/keymaps/default/readme.md
Flip order of layout image and title
* Update keyboards/noxary/x268/keymaps/via/readme.md
Flip order of layout image and title
* Update LED function to led_update_kb()
* New custom 'super alt' keymap for the Drop ALT
* Improvements to 'super alt' keymap based on PR feedback
* Fix flickering LED caps lock bug
* Code cleanup from PR feedback
* Minor keymap layout cleanup
* enable NKRO and keep consistent with bootmagic set to lite
* Update keyboards/1upkeyboards/1up60hse/rules.mk
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* 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
* added keyboard 5x12 to boardsource folder
* Apply suggestions from code review
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* Change `led` to `led_matrix` in rgb_matrix_drivers
Is a minor change that only affects the driver file.
However, this will allow somebody to run rgblight along side rgb matrix
using the ws2812 driver, as well. Specifically, so you can use the
custom driver for rgblight to set a different pin (barring a change to
the `ws2812_setleds` function).
Courtesy of discord conversion:
https://discordapp.com/channels/440868230475677696/568161140534935572/721555623191248906
* Change name to be super specific
* Update rgb_matrix_drivers.c
* 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>
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Nick Brassel <nick@tzarc.org>
* initial commit for froggy 106 key mode
* add mode indicator on OLED
* use #pragma once instead of include guard
* remove unusable codes
* remove audio codes, because helix rev.2 has no audio feature
* use set_single_persistent_default_layer
* remove eeprom update check
OLED Display fixes
Add support for RGBLIGHT Layers
Add gaming layer to corn and kyria
RGBLight Startup Animation fixes and improvements (uses matrix_scan now!)
Pimoroni Trackball support added (IT'S RGB!!!)
Fix issues due to code changes
* Add S7 Elephant Rev2 Support
* Apply suggestions from code review
I tested the changes on my board as well, thanks for the suggestions!
* Added a default folder in the makefile so that this would no longer be a breaking change
* added bordsource 3x4 macro pad
* added bordsource 3x4 macro pad
* Update keyboards/boardsource/3x4/3x4.h
* Update keyboards/boardsource/3x4/3x4.c
* Update keyboards/boardsource/3x4/config.h
* Update keyboards/boardsource/3x4/config.h
* Update keyboards/boardsource/3x4/config.h
* Update keyboards/boardsource/3x4/config.h
* added link to readme
* Update keyboards/boardsource/3x4/keymaps/default/keymap.c
* Apply suggestions from code review
* changed the layout to refelect the keyboard
* Update keyboards/boardsource/3x4/info.json
Oh your right my bad. In the future is there an easier way for me to test the info.json and the confiscator before doing my pr?
* Apply suggestions from code review
* got 3x4 building again
* Apply suggestions from code review
* applied requested change on readme
* Update keyboards/boardsource/3x4/readme.md
* Apply suggestions from code review
* add ansi and iso layouts
* fix iso map mistake
* fix mistake again...
* Update keyboards/kbdfans/kbd67/mkii_soldered/keymaps/iso/keymap.c
* rename layout macros to the blocker variants and add ansi_split_bs
* Apply suggestions from code review
* Add Kyria keymap
* clean split hand detection code
* rename "joystick" to "thumbstick"
* thumbstick overhaul
* removed angle correction, seems buggy
* save some memory
* Remove deprecated config option
* Use the correct types for getting host led states
* Fix include path
* Made .h files for encoder and oled code
* Increase speed cap on thumbstick
* Add custom corne keymap
* Clean up rules.mk
* Clean up base layer on keymap.c
* Clean up lower layer on keymap.c
* Clean up raise layer on keymap.c
* Clean up adjust layer in keymap.c
* README cleanup
* replaced "normal" numbers with "keypad" numbers:
KC_P4 replaced by KC_KP_P4
* replaced "normal" keys on Numpad Layer with the "KeyPad" keys
KC_1 replaced by KC_P1 etc.
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.
* Fixing via issues
* Fixing whitespace issues on the keymap
* Fixed the default via layer 1 keymap, was a little weird before
* Removing redundant declarations in via/rules.mk
* 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>
* preliminary check in, basically a copy from 159's github with a few additions to get it to compile
* update readme
* fixup the LAYOUT macro labels to be more reasonable
* add tkl_ansi LAYOUT macro for community layout support
* clean up rules.mk, add community layout suport, and add in bootloader
* add a tsangan layout macro
* spruce up readme
* add VIA keymap
* add qmk configurator support
* Update keyboards/projectkb/signature87/rules.mk
Co-authored-by: Joel Challis <git@zvecr.com>
* Update keyboards/projectkb/signature87/rules.mk
Co-authored-by: Joel Challis <git@zvecr.com>
* Update keyboards/projectkb/signature87/rules.mk
Co-authored-by: Joel Challis <git@zvecr.com>
* remove unneeded file
* Update keyboards/projectkb/signature87/config.h
Co-authored-by: Joel Challis <git@zvecr.com>
* Update keyboards/projectkb/signature87/rules.mk
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/projectkb/signature87/config.h
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* init
* add RETRO_TAP; tap anyway after TAP_TERM, if no interruption
* RETRO_TAP works for other types of taps
* revert to upstream/master
* explain this fork in readme
* use one readme.md file instaed
* fix the error if NO_ACTION_ONESHOT is defined
* restore readme.md to upstream master
Co-authored-by: Tsan-Kuang Lee <tsan.kuang.lee@gmail.com>
Using the wpm feature, I create a responsive OLED animation that changes based on how fast the user types. As written there are three phases (It's bongo cat!) but can easily be reconfigured and replaced with other images.
Multiple byte arrays consume considerable space so choose your usage wisely. When customized, the smaller the byte array used, the better, due to space limitations on most microcontrollers.
I made this with no prior knowledge of C, so I'm looking forward to any and all suggested improvements.
Credit is owed to obosob for laying the foundation for this little script as well to /u/pixelbenny for graciously providing the bongocat artwork I adapted for the animation.
The config.h includes a tweak to the Kyria's LED mapping, so that the order now reflects their physical positions, making animations smoother.
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Simon Schuster <SimonSchuster@Simons-MacBook-Pro-2.local>
Co-authored-by: James Incandenza <james@ij.net>
A user in Discord reported that the right bracket and ISO hash keys on
KBD67 rev2 using LAYOUT_65_iso were swapped. When comparing
LAYOUT_65_iso with LAYOUT_65_ansi, the problem with a wrong assignment
of the right bracket key is obvious — that key is K1D in the ANSI layout
macro, but the ISO layout macro had K1E there, and K1D at the position
of the ISO hash key.
Fix the LAYOUT_65_iso macro by swapping those arguments (and also align
the K1D argument for the right bracket key properly).
* Fixed slave-side keyboard half unresponsiveness
due to how LUFA handles USB_Disable()
* changes to formatting
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Joel Challis <git@zvecr.com>
* Gami Studio Lex60: Configurator Layout support
* correct key sizes on bottom row per lukelex
* add LAYOUT_60_ansi
To test, run `make gami_studio/lex60:default_60_ansi` and flash.
* add 60_ansi keymap
To test, run `make gami_studio/lex60:60_ansi` and flash.
* remove data for 60_ansi layout
* 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
* Added Via config for Clueboard 66
* Update keyboards/clueboard/66/keymaps/via/rules.mk
Co-authored-by: Ryan <fauxpark@gmail.com>
* Enabled MouseKeys
This required enabling LINK_TIME_OPTIMIZATION_ENABLE
* Added 4th layer as per tzarc's recommendation on another PR
Co-authored-by: Ryan <fauxpark@gmail.com>
* Add Chrome OS specific keys to 75_ansi/spidey3
* Clean up duplicative settings in rules.mk
* Refactor spidey3 userspace to use rgb layer blink
* Blink green on wakeup
* Improve _FN layer indicator
* Glyph transformation modes: wide, script, fraktur, and enclosed characters
* Add spider unicode glyph
* Fix compile error when NO_ACTION_ONESHOT
* Add a few more emoji
* Further refinement of lighting layer usage
* Fix reversed yes/no ack
* Lighting layers override RGB off
* Fix missing wide and incorrect script numbers
* Add LOL and surprise emoji
* Add missing break in switch statement
* Trim firmware size
* Use usage ID definitions in report.h
* Some minor whitespace cleanup
* Disable some unused features to reduce firmware size
* Print version on startup
* Seed rand() on first keystroke
* Add a key to immediately sleep CrOS
* Switch to Bootmagic Lite
* Trim down firmware size a little bit more
* Make RGBLIGHT_MODE_TWINKLE+4 my default
* Scan rate debug / fix version printing
Delay printing version on startup (console may not be ready)
Better scan rate reporting
* Disable locking caps, etc. to save more space
* Enable LTO
* Better seed for rand()
* Set MAX_LAYER for some performance improvement
* Another scan rate improvement
* Set manufacturer
* New startup animation
* Add GUI lock for F-keys (for CrOS)
* Add visual indication for glyph replacement and F-keys GUI lock
* Some cleanup; run cformat on spidey3 userspace
* Cycle between debug verbosity options
* Fix disable RGB Lighting after wakeup on Mac
ANAVI Macro Pad 8 is an open source mini mechanical keyboard with
8 keys, backlit, addressable RGB WS2812B LED strip on the back and
mini OLED display. Powered by ATmega 32U4 microcontroller and with
microUSB connector.
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
Co-authored-by: Joel Challis <git@zvecr.com>
Signed-off-by: Leon Anavi <leon@anavi.org>
* Add Via support for Percent Canoe
* Removed unnecessary flags from rules.mk
* Changes as per PR
* Added 2 additional empty layers (for a total of 4)
* Set a unique vendor id for all percent studio boards
* Set a unique product id for the canoe
* Fixed formatting, removed trailing comma
* Fixed PS/PT typo for vendor id
* Removed unnecessary variables
* Removed unnecessary slashes
* Fixed missing layer name
Co-Authored-By: Ryan <fauxpark@gmail.com>
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
Co-Authored-By: Drashna Jaelre <drashna@live.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
* pick a sane VID
* add the VIA Keymap
* update copyright notice
* Update keyboards/waldo/keymaps/via/keymap.c
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/waldo/keymaps/via/keymap.c
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/waldo/keymaps/via/keymap.c
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/waldo/keymaps/via/keymap.c
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update keyboards/waldo/keymaps/via/readme.md
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
* 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
* [Keymap] plattfot - Kyria layout
Keymap for programming, writing in both English and Swedish and
easy navigate a tiling window manager.
See README.md for more info
* Fix letter case on the headline for the readme
As suggested by fauxpark
* Update keyboards/kyria/keymaps/plattfot/keymap.c
Clean up double tap
As suggested by fauxpark
* Update led check for render_status
As suggested by fauxpark
* Update to use get_highest_layer for encoder_update_user
As suggested by fauxpark
* Missing an apostrophe in the header of the README.md
Last minute change.
* Removed explicit initialization for _DEFAULT
As suggested by drashna
* Use smaller image for the README.md
As suggested by noroadsleft
<!--- Go over all the following points, and put an `x` in all the boxes that apply. -->
<!--- If you're unsure about any of these, don't hesitate to ask. We're here to help! -->
- [ ] My code follows the code style of this project.
- [ ] My code follows the code style of this project: [**C**](https://docs.qmk.fm/#/coding_conventions_c), [**Python**](https://docs.qmk.fm/#/coding_conventions_python)
- [ ] I have read the [**PR Checklist** document](https://docs.qmk.fm/#/pr_checklist) and have made the appropriate changes.
- [ ] My change requires a change to the documentation.
- [ ] I have updated the documentation accordingly.
- [ ] I have read the [**CONTRIBUTING** document](https://docs.qmk.fm/#/contributing).
Four times a year QMK runs a process for merging Breaking Changes. A Breaking Change is any change which modifies how QMK behaves in a way that is incompatible or potentially dangerous. We limit these changes to 4 times per year so that users can have confidence that updating their QMK tree will not break their keymaps.
## Changes Requiring User Action :id=changes-requiring-user-action
### Relocated Keyboards :id-relocated-keyboards
#### The Key Company project consolidation ([#9547](https://github.com/qmk/qmk_firmware/pull/9547))
#### relocating boards by flehrad to flehrad/ folder ([#9635](https://github.com/qmk/qmk_firmware/pull/9635))
Keyboards released by The Key Company and keyboards designed by flehrad have moved to vendor folders. If you own any of the keyboards listed below, please use the new names to compile your firmware moving forward.
This pull request changes the configuration for Keebio split boards to use the same RGB strip wiring for each half, which provides the following improvements:
* Easier wiring due to one fewer wire needed (the wire between left DOut to extra data pin) and the fact that wiring is the same for both halves.
* RGB LEDs can be controlled by each half now instead of just master half.
* Extra data line is freed up to allow for I2C usage instead of serial.
If you have customized the value of `RGBLED_SPLIT` for your keymap, you will need to undefine it using `#undef RGBLED_SPLIT` before defining it to your customized value.
This change affects:
* BFO-9000
* Fourier
* Iris rev2
* Levinson, revs. 1 and 2
* Nyquist, revs. 1 and 2
* Quefrency rev1
* Viterbi, revs. 1 and 2
### Changes to Core Functionality :id=core-updates
* Bigger Combo index ([#9318](https://github.com/qmk/qmk_firmware/pull/9318))
Allows the Combo feature to support more than 256 combos.
Any fork that uses `process_combo_event` needs to update the function's first argument to `uint16_t`:
* Old function: `void process_combo_event(uint8_t combo_index, bool pressed)`
* New function: `void process_combo_event(uint16_t combo_index, bool pressed)`
## Core Changes :id=core-changes
### Fixes :id=core-fixes
* Mousekeys: scrolling acceleration is no longer coupled to mouse movement acceleration ([#9174](https://github.com/qmk/qmk_firmware/pull/9174))
* Keymap Extras: correctly assign Question Mark in Czech layout ([#9987](https://github.com/qmk/qmk_firmware/pull/9987))
### Additions and Enhancements :id=core-additions
* allow for WS2812 PWM to work on DMAMUX-capable devices ([#9471](https://github.com/qmk/qmk_firmware/pull/9471))
* Newer STM32 MCUs have a DMAMUX peripheral, which allows mapping of DMAs to different DMA streams, rather than hard-defining the target streams in silicon.
* Affects STM32L4+ devices, as well as the soon-to-be-supported-by-QMK STM32G4/H7 families.
* Tested on F303/Proton C (ChibiOS v19, non-DMAMUX), G474 (ChibiOS v20, with DMAMUX).
* dual-bank STM32 bootloader support ([#8778](https://github.com/qmk/qmk_firmware/pull/8778) and [#9738](https://github.com/qmk/qmk_firmware/pull/9738))
* Adds support for STM32 dual-bank flash bootloaders, by toggling a GPIO during early init in order to charge an RC circuit attached to `BOOT0`.
* The main rationale behind this is that dual-bank STM32 devices unconditionally execute user-mode code, regardless of whether or not the user-mode code jumps to the bootloader. If either flash bank is valid (and `BOOT0` is low), then the built-in bootloader will skip any sort of DFU.
* This PR allows for the initialisation sequencing to charge the RC circuit based on the example circuit posted on Discord, effectively pulling `BOOT0` high before issuing the system reset. As the RC circuit takes a while to discharge, the system reset executes the ROM bootloader which subsequently sees `BOOT0` high, and starts executing the DFU routines.
* Tested with STM32L082 (with current QMK+current ChibiOS), and STM32G474 (against ChibiOS 20.x).
* update Space Cadet and Tap Dance features to use Custom Tapping Term when appropriate ([#6259](https://github.com/qmk/qmk_firmware/pull/6259))
* For the Tap Dance feature, this completely removes the need for the `ACTION_TAP_DANCE_FN_ADVANCED_TIME` dance.
* This implements a joystick feature, including a joystick_task function called from TMK, specific keycodes for joystick buttons and a USB HID interface.
* Tested on V-USB backend and Proton C; compiles but untested on LUFA.
* In order to test, you have to add `JOYSTICK_ENABLE = yes` to your `rules.mk` and
```c
#define JOYSTICK_BUTTON_COUNT 8
#define JOYSTICK_AXES_COUNT 2
```
in your config.h.
* Christmas RGB Underglow animation now fades between green and red ([#7648](https://github.com/qmk/qmk_firmware/pull/7648))
* `RGBLIGHT_EFFECT_CHRISTMAS_INTERVAL` has been greatly decreased; please check your animation if you have customized this value.
* layer state now initializes on startup ([#8318](https://github.com/qmk/qmk_firmware/pull/8318))
* This should produce more consistent behavior between the two functions and layer masks.
* added support for HSV->RGB conversion without using CIE curve ([#9856](https://github.com/qmk/qmk_firmware/pull/9856))
* added NOEEPROM functions for RGB Matrix ([#9487](https://github.com/qmk/qmk_firmware/pull/9487))
* Added eeprom_helpers for toggle, mode, sethsv, speed, similar to rgblight versions.
* Added set_speed function.
* Added helper functions, similar to those in rgblight, in order to add NOEEPROM versions of toggle, step, hue, sat, val, and speed.
* Minor: spelling correction for EEPROM in a debug message.
* flashing firmware using `st-flash` utility from [STLink Tools](https://github.com/stlink-org/stlink) is now supported ([#9964](https://github.com/qmk/qmk_firmware/pull/9964))
* add ability to dump all makefile variables for the specified target ([#8256](https://github.com/qmk/qmk_firmware/pull/8256))
* Adds a new subtarget to builds, `dump_vars`, which allows for printing out all the variables that make knows about, after all substitutions occur.
* work begun for consolidation of ChibiOS platform files ([#8327](https://github.com/qmk/qmk_firmware/pull/8327) and [#9315](https://github.com/qmk/qmk_firmware/pull/9315))
* Start of the consolidation work to move the ChibiOS board definitions as well as the default set of configuration files for existing board definitions used by keyboards.
* Uses `/platforms/chibios` as previously discussed on discord.
* Consolidates the Proton C configs into the generic F303 definitions.
* Allows for defining a default set of `chconf.h`, `halconf.h`, and `mcuconf.h` files within the platform definition, which is able to be overridden by the keyboard directly, though include path ordering.
* Adds template `chconf.h`, `halconf.h`, `mcuconf.h`, and `board.h` that can be dropped into a keyboard directory, in order to override rather than replace the entire contents of the respective files.
* Removed Proton C QMK board definitions, falling back to ChibiOS board definitions with QMK overrides.
* Various tidy-ups for USB descriptor code ([#9005](https://github.com/qmk/qmk_firmware/pull/9005))
* Renamed `keyboard_led_stats` in lufa.c and ChibiOS usb_main.c to `keyboard_led_state`, as well as `vusb_keyboard_leds`, for consistency
* Formatted CDC and MIDI descriptors better
* Removed `ENDPOINT_CONFIG` macro, it seems pointless and removes the need for endpoint address defines in the middle of the endpoint numbering enum
* Fixed (possibly?) V-USB `GET_REPORT` request handling. Not sure about this one, but the existing code appears to always return an empty report - now `send_keyboard` sets this variable to the current report, matching what the LUFA code does.
* converted `CONSUMER2BLUEFRUIT()` and `CONSUMER2RN42()` macros to static inline functions ([#9055](https://github.com/qmk/qmk_firmware/pull/9055))
* Additional cleanups for V-USB code ([#9310](https://github.com/qmk/qmk_firmware/pull/9310))
* Removing the UART stuff entirely, now that we have Console support. Also fixing up various other things; switching some `debug()` calls to `dprintf()`, moved `raw_hid_report` out of the way so that we can implement the shared endpoint stuff.
* removed inclusion of `adafruit_ble.h` from `ssd1306.c` ([#9355](https://github.com/qmk/qmk_firmware/pull/9355))
* `outputselect.c` is no longer compiled if Bluetooth is disabled ([#9356](https://github.com/qmk/qmk_firmware/pull/9356))
* `analogRead()` deprecated in favor of `analogReadPin()` ([#9023](https://github.com/qmk/qmk_firmware/pull/9023))
* forcibly disable NKRO on V-USB controllers ([#9054](https://github.com/qmk/qmk_firmware/pull/9054))
* removed warning if running backlight on STM32F072 ([#10040](https://github.com/qmk/qmk_firmware/pull/10040))
@ -39,15 +39,15 @@ Then place this include at the top of your code:
|12 | |`B5` | | |
|13 | |`B6` | | |
<sup>\* The ATmega328P possesses two extra ADC channels; however, they are not present on the DIP pinout, and are not shared with GPIO pins. You can use `adc_read()` directly to gain access to these.</sup>
<sup>\* The ATmega328/P possesses two extra ADC channels; however, they are not present on the DIP pinout, and are not shared with GPIO pins. You can use `adc_read()` directly to gain access to these.</sup>
### ARM
Note that some of these pins are doubled-up on ADCs with the same channel. This is because the pins can be used for either ADC.
Also note that the F0 and F3 use different numbering schemes. The F0 has a single ADC and the channels are 0-based, whereas the F3 has 4 ADCs and the channels are 1 based. This is because the F0 uses the `ADCv1` implementation of the ADC, whereas the F3 uses the `ADCv3` implementation.
Also note that the F0 and F3 use different numbering schemes. The F0 has a single ADC and the channels are 0-indexed, whereas the F3 has 4 ADCs and the channels are 1-indexed. This is because the F0 uses the `ADCv1` implementation of the ADC, whereas the F3 uses the `ADCv3` implementation.
|ADC|Channel|STM32F0XX|STM32F3XX|
|ADC|Channel|STM32F0xx|STM32F3xx|
|---|-------|---------|---------|
|1 |0 |`A0` | |
|1 |1 |`A1` |`A0` |
@ -122,32 +122,29 @@ Also note that the F0 and F3 use different numbering schemes. The F0 has a singl
|`analogReference(mode)` |Sets the analog voltage reference source. Must be one of `ADC_REF_EXTERNAL`, `ADC_REF_POWER` or `ADC_REF_INTERNAL`.|
|`analogRead(pin)` |Reads the value from the specified Arduino pin, eg. `4` for ADC6 on the ATmega32U4. |
|`analogReadPin(pin)` |Reads the value from the specified QMK pin, eg. `F6` for ADC6 on the ATmega32U4. |
|`pinToMux(pin)` |Translates a given QMK pin to a mux value. If an unsupported pin is given, returns the mux value for "0V (GND)". |
|`analogReadPin(pin)` |Reads the value from the specified pin, eg. `F6` for ADC6 on the ATmega32U4. |
|`pinToMux(pin)` |Translates a given pin to a mux value. If an unsupported pin is given, returns the mux value for "0V (GND)". |
|`adc_read(mux)` |Reads the value from the ADC according to the specified mux. See your MCU's datasheet for more information. |
### ARM
Note that care was taken to match all of the functions used for AVR devices, however complications in the ARM platform prevent that from always being possible. For example, the `STM32` chips do not have assigned Arduino pins. We could use the default pin numbers, but those numbers change based on the package type of the device. For this reason, please specify your target pins with their identifiers (`A0`, `F3`, etc.). Also note that there are some variants of functions that accept the target ADC for the pin. Some pins can be used for multiple ADCs, and this specified can help you pick which ADC will be used to interact with that pin.
|`analogReadPin(pin)` |Reads the value from the specified QMK pin, eg. `A0` for channel 0 on the STM32F0 and ADC1 channel 1 on the STM32F3. Note that if a pin can be used for multiple ADCs, it will pick the lower numbered ADC for this function. eg. `C0` will be channel 6 of ADC 1 when it could be used for ADC 2 as well.|
|`analogReadPinAdc(pin, adc)`|Reads the value from the specified QMK pin and ADC, eg. `C0, 1` will read from channel 6, ADC 2 instead of ADC 1. Note that the ADCs are 0-indexed for this function.|
|`pinToMux(pin)` |Translates a given QMK pin to a channel and ADC combination. If an unsupported pin is given, returns the mux value for "0V (GND)".|
|`adc_read(mux)` |Reads the value from the ADC according to the specified pin and adc combination. See your MCU's datasheet for more information.|
|`analogReadPin(pin)` |Reads the value from the specified pin, eg. `A0` for channel 0 on the STM32F0 and ADC1 channel 1 on the STM32F3. Note that if a pin can be used for multiple ADCs, it will pick the lower numbered ADC for this function. eg. `C0` will be channel 6 of ADC 1 when it could be used for ADC 2 as well.|
|`analogReadPinAdc(pin, adc)`|Reads the value from the specified pin and ADC, eg. `C0, 1` will read from channel 6, ADC 2 instead of ADC 1. Note that the ADCs are 0-indexed for this function. |
|`pinToMux(pin)` |Translates a given pin to a channel and ADC combination. If an unsupported pin is given, returns the mux value for "0V (GND)". |
|`adc_read(mux)` |Reads the value from the ADC according to the specified pin and ADC combination. See your MCU's datasheet for more information. |
## Configuration
## ARM
The ARM implementation of the ADC has a few additional options that you can override in your own keyboards and keymaps to change how it operates.
The ARM implementation of the ADC has a few additional options that you can override in your own keyboards and keymaps to change how it operates. Please consult the corresponding `hal_adc_lld.h` in ChibiOS for your specific microcontroller for further documentation on your available options.
|ADC_CIRCULAR_BUFFER|`bool`|`false` |If `TRUE`, then the implementation will use a circular buffer.|
|ADC_NUM_CHANNELS |`int` |`1` |Sets the number of channels that will be scanned as part of an ADC operation. The current implementation only supports `1`.|
|ADC_BUFFER_DEPTH |`int` |`2` |Sets the depth of each result. Since we are only getting a 12-bit result by default, we set this to `2` bytes so we can contain our one value. This could be set to 1 if you opt for a 8-bit or lower result.|
|ADC_SAMPLING_RATE |`int` |`ADC_SMPR_SMP_1P5` |Sets the sampling rate of the ADC. By default, it is set to the fastest setting. Please consult the corresponding `hal_adc_lld.h` in ChibiOS for your specific microcontroller for further documentation on your available options.|
|ADC_RESOLUTION |`int` |`ADC_CFGR1_RES_12BIT`|The resolution of your result. We choose 12 bit by default, but you can opt for 12, 10, 8, or 6 bit. Please consult the corresponding `hal_adc_lld.h` in ChibiOS for your specific microcontroller for further documentation on your available options.|
|`ADC_CIRCULAR_BUFFER`|`bool`|`false` |If `true`, then the implementation will use a circular buffer.|
|`ADC_NUM_CHANNELS` |`int` |`1` |Sets the number of channels that will be scanned as part of an ADC operation. The current implementation only supports `1`.|
|`ADC_BUFFER_DEPTH` |`int` |`2` |Sets the depth of each result. Since we are only getting a 12-bit result by default, we set this to 2 bytes so we can contain our one value. This could be set to 1 if you opt for an 8-bit or lower result.|
|`ADC_SAMPLING_RATE` |`int` |`ADC_SMPR_SMP_1P5` |Sets the sampling rate of the ADC. By default, it is set to the fastest setting. |
|`ADC_RESOLUTION` |`int` |`ADC_CFGR1_RES_12BIT`|The resolution of your result. We choose 12 bit by default, but you can opt for 12, 10, 8, or 6 bit. |
@ -43,8 +43,6 @@ This is a C header file that is one of the first things included, and will persi
* generally who/whatever brand produced the board
* `#define PRODUCT Board`
* the name of the keyboard
* `#define DESCRIPTION a keyboard`
* a short description of what the keyboard is
* `#define MATRIX_ROWS 5`
* the number of rows in your keyboard's matrix
* `#define MATRIX_COLS 15`
@ -197,6 +195,8 @@ If you define these options you will enable the associated feature, which may in
* Note: Increasing the maximum will increase the firmware size and slow sync on split keyboards.
* `#define RGBLIGHT_LAYER_BLINK`
* Adds ability to [blink](feature_rgblight.md?id=lighting-layer-blink) a lighting layer for a specified number of milliseconds (e.g. to acknowledge an action).
* `#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF`
* If defined, then [lighting layers](feature_rgblight?id=overriding-rgb-lighting-onoff-status) will be shown even if RGB Light is off.
* `#define RGBLED_NUM 12`
* number of LEDs
* `#define RGBLIGHT_SPLIT`
@ -248,7 +248,10 @@ There are a few different ways to set handedness for split keyboards (listed in
* `#define SPLIT_HAND_PIN B7`
* For using high/low pin to determine handedness, low = right hand, high = left hand. Replace `B7` with the pin you are using. This is optional, and if you leave `SPLIT_HAND_PIN` undefined, then you can still use the EE_HANDS method or MASTER_LEFT / MASTER_RIGHT defines like the stock Let's Split uses.
* `#define EE_HANDS` (only works if `SPLIT_HAND_PIN` is not defined)
* The handedness is determined by using the intersection of the keyswitches in the key matrix, which does not exist. Normally, when this intersection is shorted (level low), it is considered left. If you define `#define SPLIT_HAND_MATRIX_GRID_LOW_IS_RIGHT`, it is determined to be right when the level is low.
* `#define EE_HANDS` (only works if `SPLIT_HAND_PIN` and `SPLIT_HAND_MATRIX_GRID` are not defined)
* Reads the handedness value stored in the EEPROM after `eeprom-lefthand.eep`/`eeprom-righthand.eep` has been flashed to their respective halves.
* `#define MASTER_RIGHT`
@ -321,11 +324,9 @@ This is a [make](https://www.gnu.org/software/make/manual/make.html) file that i
```
* `LAYOUTS`
* A list of [layouts](feature_layouts.md) this keyboard supports.
* `LINK_TIME_OPTIMIZATION_ENABLE`
* `LTO_ENABLE`
* Enables Link Time Optimization (LTO) when compiling the keyboard. This makes the process take longer, but it can significantly reduce the compiled size (and since the firmware is small, the added time is not noticeable).
However, this will automatically disable the legacy TMK Macros and Functions features, as these break when LTO is enabled. It does this by automatically defining `NO_ACTION_MACRO` and `NO_ACTION_FUNCTION`. (Note: This does not affect QMK [Macros](feature_macros.md) and [Layers](feature_layers.md).)
* `LTO_ENABLE`
* Has the same meaning as `LINK_TIME_OPTIMIZATION_ENABLE`. You can use `LTO_ENABLE` instead of `LINK_TIME_OPTIMIZATION_ENABLE`.
## AVR MCU Options
* `MCU = atmega32u4`
@ -370,10 +371,8 @@ Use these to enable or disable building certain features. The more you have enab
* MIDI controls
* `UNICODE_ENABLE`
* Unicode
* `BLUETOOTH_ENABLE`
* Legacy option to Enable Bluetooth with the Adafruit EZ-Key HID. See BLUETOOTH
* `BLUETOOTH`
* Current options are AdafruitEzKey, AdafruitBLE, RN42
* Current options are AdafruitBLE, RN42
* `SPLIT_KEYBOARD`
* Enables split keyboard support (dual MCU like the let's split and bakingpy's boards) and includes all necessary files located at quantum/split_common
@ -61,4 +61,4 @@ This page describes my cool feature. You can use my cool feature to make coffee
|KC_SUGAR||Order Sugar|
```
Place your documentation into `docs/feature_<my_cool_feature>.md`, and add that file to the appropriate place in `docs/_sidebar.md`. If you have added any keycodes be sure to add them to `docs/keycodes.md` with a link back to your feature page.
Place your documentation into `docs/feature_<my_cool_feature>.md`, and add that file to the appropriate place in `docs/_summary.md`. If you have added any keycodes be sure to add them to `docs/keycodes.md` with a link back to your feature page.
@ -23,7 +23,7 @@ Zadig will automatically detect the bootloader device. You may sometimes need to
!> If Zadig lists one or more devices with the `HidUsb` driver, your keyboard is probably not in bootloader mode. The arrow will be colored orange and you will be asked to confirm modifying a system driver. **Do not** proceed if this is the case!
If the arrow appears green, select the driver, and click **Install Driver**. The `libusb-win32` driver will usually work for AVR, and `WinUSB` for ARM, but if you still cannot flash the board, try installing a different driver from the list. For flashing a USBaspLoader device via command line with msys2, the `libusbk` driver is recommended, otherwise `libusb-win32` will work fine if you are using QMK Toolbox for flashing.
If the arrow appears green, select the driver, and click **Install Driver**. The `libusb-win32` driver will usually work for AVR, and `WinUSB` for ARM, but if you still cannot flash the board, try installing a different driver from the list. USBAspLoader devices must use the `libusbK` driver.
![Zadig with a bootloader driver correctly installed](https://i.imgur.com/b8VgXzx.png)
@ -67,7 +67,7 @@ El archivo `config.h` es donde configuras el hardware y el conjunto de caracter
En la parte superior de `config.h` encontrarás ajustes relacionados con USB. Estos controlan la apariencia de tu teclado en el Sistema Operativo. Si no tienes una buena razón para cambiar debes dejar el `VENDOR_ID` como `0xFEED`. Para el `PRODUCT_ID` debes seleccionar un número que todavía no esté en uso.
Cambia las líneas de `MANUFACTURER`, `PRODUCT`, y `DESCRIPTION` para reflejar con precisión tu teclado.
Cambia las líneas de `MANUFACTURER` y `PRODUCT` para reflejar con precisión tu teclado.
```c
#define VENDOR_ID 0xFEED
@ -75,7 +75,6 @@ Cambia las líneas de `MANUFACTURER`, `PRODUCT`, y `DESCRIPTION` para reflejar c
#define DEVICE_VER 0x0001
#define MANUFACTURER Tú
#define PRODUCT mi_teclado_fantastico
#define DESCRIPTION Un teclado personalizado
```
?> Windows y macOS mostrarán el `MANUFACTURER` y `PRODUCT` en la lista de dispositivos USB. `lsusb` en Linux toma estos de la lista mantenida por el [Repositorio de ID USB](http://www.linux-usb.org/usb-ids.html) por defecto. `lsusb -v` mostrará los valores reportados por el dispositivo, y también están presentes en los registros del núcleo después de conectarlo.
Currently Bluetooth support is limited to AVR based chips. For Bluetooth 2.1, QMK has support for RN-42 modules and the Bluefruit EZ-Key, the latter of which is not produced anymore. For more recent BLE protocols, currently only the Adafruit Bluefruit SPI Friend is directly supported. BLE is needed to connect to iOS devices. Note iOS does not support mouse input.
Currently Bluetooth support is limited to AVR based chips. For Bluetooth 2.1, QMK has support for RN-42 modules. For more recent BLE protocols, currently only the Adafruit Bluefruit SPI Friend is directly supported. BLE is needed to connect to iOS devices. Note iOS does not support mouse input.
|Board |Bluetooth Protocol |Connection Type |rules.mk |Bluetooth Chip|
|[Bluefruit LE SPI Friend](https://www.adafruit.com/product/2633)|Bluetooth Low Energy | SPI |`BLUETOOTH = AdafruitBLE` | nRF51822 |
@ -24,16 +23,12 @@ Currently The only bluetooth chipset supported by QMK is the Adafruit Bluefruit
A Bluefruit UART friend can be converted to an SPI friend, however this [requires](https://github.com/qmk/qmk_firmware/issues/2274) some reflashing and soldering directly to the MDBT40 chip.
## Adafruit EZ-Key hid
This requires [some hardware changes](https://www.reddit.com/r/MechanicalKeyboards/comments/3psx0q/the_planck_keyboard_with_bluetooth_guide_and/?ref=search_posts), but can be enabled via the Makefile. The firmware will still output characters via USB, so be aware of this when charging via a computer. It would make sense to have a switch on the Bluefruit to turn it off at will.
<!-- FIXME: Document bluetooth support more completely. -->
### Connects each switch in the dip switch to the GPIO pin of the MCU
One side of the DIP switch should be wired directly to the pin on the MCU, and the other side to ground. It should not matter which side is connected to which, as it should be functionally the same.
### Connect each switch in the DIP switch to an unused intersections in the key matrix.
As with the keyswitch, a diode and DIP switch connect the ROW line to the COL line.
@ -18,11 +18,11 @@ That should be everything necessary.
To start recording the macro, press either `DYN_REC_START1` or `DYN_REC_START2`.
To finish the recording, press the `DYN_REC_STOP` layer button.
To finish the recording, press the `DYN_REC_STOP` layer button. You can also press `DYN_REC_START1` or `DYN_REC_START2` again to stop the recording.
To replay the macro, press either `DYN_MACRO_PLAY1` or `DYN_MACRO_PLAY2`.
It is possible to replay a macro as part of a macro. It's ok to replay macro 2 while recording macro 1 and vice versa but never create recursive macros i.e. macro 1 that replays macro 1. If you do so and the keyboard will get unresponsive, unplug the keyboard and plug it again. You can disable this completly by defining `DYNAMIC_MACRO_NO_NESTING` in your `config.h` file.
It is possible to replay a macro as part of a macro. It's ok to replay macro 2 while recording macro 1 and vice versa but never create recursive macros i.e. macro 1 that replays macro 1. If you do so and the keyboard will get unresponsive, unplug the keyboard and plug it again. You can disable this completely by defining `DYNAMIC_MACRO_NO_NESTING` in your `config.h` file.
?> For the details about the internals of the dynamic macros, please read the comments in the `process_dynamic_macro.h` and `process_dynamic_macro.c` files.
The keyboard can be made to be recognized as a joystick HID device by the operating system.
This is enabled by adding `JOYSTICK_ENABLE` to `rules.mk`. You can set this value to `analog`, `digital`, or `no`.
!> Joystick support is not currently available on V-USB devices.
The joystick feature provides two services:
* reading analog input devices (eg. potentiometers)
* sending gamepad HID reports
Both services can be used without the other, depending on whether you just want to read a device but not send gamepad reports (for volume control for instance)
or send gamepad reports based on values computed by the keyboard.
### Analog Input
To use analog input you must first enable it in `rules.mk`:
```makefile
JOYSTICK_ENABLE = analog
```
An analog device such as a potentiometer found on a gamepad's analog axes is based on a [voltage divider](https://en.wikipedia.org/wiki/Voltage_divider).
It is composed of three connectors linked to the ground, the power input and power output (usually the middle one). The power output holds the voltage that varies based on the position of the cursor,
which value will be read using your MCU's [ADC](https://en.wikipedia.org/wiki/Analog-to-digital_converter).
Depending on which pins are already used by your keyboard's matrix, the rest of the circuit can get a little bit more complicated,
feeding the power input and ground connection through pins and using diodes to avoid bad interactions with the matrix scanning procedures.
### Configuring the Joystick
By default, two axes and eight buttons are defined. This can be changed in your `config.h`:
```c
// Max 32
#define JOYSTICK_BUTTON_COUNT 16
// Max 6: X, Y, Z, Rx, Ry, Rz
#define JOYSTICK_AXES_COUNT 3
```
When defining axes for your joystick, you have to provide a definition array. You can do this from your keymap.c file.
A joystick will either be read from an input pin that allows the use of the ADC, or can be virtual, so that its value is provided by your code.
You have to define an array of type ''joystick_config_t'' and of proper size.
There are three ways for your circuit to work with the ADC, that relies on the use of 1, 2 or 3 pins of the MCU:
* 1 pin: your analog device is directly connected to your device GND and VCC. The only pin used is the ADC pin of your choice.
* 2 pins: your analog device is powered through a pin that allows toggling it on or off. The other pin is used to read the input value through the ADC.
* 3 pins: both the power input and ground are connected to pins that must be set to a proper state before reading and restored afterwards.
The configuration of each axis is performed using one of four macros:
* `JOYSTICK_AXIS_VIRTUAL`: no ADC reading must be performed, that value will be provided by keyboard/keymap-level code
* `JOYSTICK_AXIS_IN(INPUT_PIN, LOW, REST, HIGH)`: a voltage will be read on the provided pin, which must be an ADC-capable pin.
* `JOYSTICK_AXIS_IN_OUT(INPUT_PIN, OUTPUT_PIN, LOW, REST, HIGH)`: the provided `OUTPUT_PIN` will be set high before `INPUT_PIN` is read.
* `JOYSTICK_AXIS_IN_OUT_GROUND(INPUT_PIN, OUTPUT_PIN, GROUND_PIN, LOW, REST, HIGH)`: the `OUTPUT_PIN` will be set high and `GROUND_PIN` will be set low before reading from `INPUT_PIN`.
In any case where an ADC reading takes place (when `INPUT_PIN` is provided), additional `LOW`, `REST` and `HIGH` parameters are used.
These implement the calibration of the analog device by defining the range of read values that will be mapped to the lowest, resting position and highest possible value for the axis (-127 to 127).
In practice, you have to provide the lowest/highest raw ADC reading, and the raw reading at resting position, when no deflection is applied. You can provide inverted `LOW` and `HIGH` to invert the axis.
For instance, an axes configuration can be defined in the following way:
When the ADC reads 900 or higher, the returned axis value will be -127, whereas it will be 127 when the ADC reads 285 or lower. Zero is returned when 575 is read.
In this example, the first axis will be read from the `A4` pin while `B0` is set high and `A7` is set low, using `analogReadPin()`, whereas the second axis will not be read.
In order to give a value to the second axis, you can do so in any customizable entry point: as an action, in `process_record_user()` or in `matrix_scan_user()`, or even in `joystick_task()` which is called even when no key has been pressed.
You assign a value by writing to `joystick_status.axes[axis_index]` a signed 8-bit value (ranging from -127 to 127). Then it is necessary to assign the flag `JS_UPDATED` to `joystick_status.status` in order for an updated HID report to be sent.
The following example writes two axes based on keypad presses, with `KC_P5` as a precision modifier:
@ -19,7 +19,7 @@ These functions allow you to activate layers in various ways. Note that layers a
### Caveats :id=caveats
Currently, `LT()` and `MT()` are limited to the [Basic Keycode set](keycodes_basic.md), meaning you can't use keycodes like `LCTL()`, `KC_TILD`, or anything greater than `0xFF`. Specifically, dual function keys like `LT` and `MT` use a 16 bit keycode. 4 bits are used for the function identifier, the next 12 are divided into the parameters. Layer Tap uses 4 bits for the layer (and is why it's limited to layers 0-16, actually), while Mod Tap does the same, 4 bits for the identifier, 4 bits for which mods are used, and all of them use 8 bits for the keycode. Because of this, the keycode used is limited to `0xFF` (0-255), which are the basic keycodes only.
Currently, `LT()` and `MT()` are limited to the [Basic Keycode set](keycodes_basic.md), meaning you can't use keycodes like `LCTL()`, `KC_TILD`, or anything greater than `0xFF`. Specifically, dual function keys like `LT` and `MT` use a 16 bit keycode. 4 bits are used for the function identifier, the next 12 are divided into the parameters. Layer Tap uses 4 bits for the layer (and is why it's limited to layers 0-15, actually), while Mod Tap does the same, 4 bits for the identifier, 4 bits for which mods are used, and all of them use 8 bits for the keycode. Because of this, the keycode used is limited to `0xFF` (0-255), which are the basic keycodes only.
Expanding this would be complicated, at best. Moving to a 32-bit keycode would solve a lot of this, but would double the amount of space that the keymap matrix uses. And it could potentially cause issues, too. If you need to apply modifiers to your tapped keycode, [Tap Dance](feature_tap_dance.md#example-5-using-tap-dance-for-advanced-mod-tap-and-layer-tap-keys) can be used to accomplish this.
@ -74,10 +74,9 @@ There are a number of functions (and variables) related to how you can use or ma
| [`update_tri_layer(x, y, z)`](ref_functions.md#update_tri_layerx-y-z) | Checks if layers `x` and `y` are both on, and sets `z` based on that (on if both on, otherwise off). |
| [`update_tri_layer_state(state, x, y, z)`](ref_functions.md#update_tri_layer_statestate-x-y-z) | Does the same as `update_tri_layer(x, y, z)`, but from `layer_state_set_*` functions. |
In addition to the functions that you can call, there are a number of callback functions that get called every time the layer changes. This passes the layer state to the function, where it can be read or modified.
In additional to the functions that you can call, there are a number of callback functions that get called every time the layer changes. This passed the layer state to the function, which can be read or modified.
| `layer_state_set_kb(layer_state_t state)` | Callback for layer functions, for keyboard. |
| `layer_state_set_user(layer_state_t state)` | Callback for layer functions, for users. |
@ -86,9 +85,9 @@ In additional to the functions that you can call, there are a number of callback
?> For additional details on how you can use these callbacks, check out the [Layer Change Code](custom_quantum_functions.md#layer-change-code) document.
| `layer_state_cmp(cmp_layer_state, layer)` | This checks the `cmp_layer_state` to see if the specific `layer` is enabled. This is meant for use with the layer callbacks. |
| `layer_state_is(layer)` | This checks the layer state to see if the specific `layer` is enabled. (calls `layer_state_cmp` for the global layer state). |
It is also possible to check the state of a particular layer using the following functions and macros.
!> There is `IS_LAYER_ON(layer)` as well, however the `layer_state_cmp` function has some additional handling to ensure that on layer 0 that it returns the correct value. Otherwise, if you check to see if layer 0 is on, you may get an incorrect value returned.
| `layer_state_is(layer)` | Checks if the specified `layer` is enabled globally. | `IS_LAYER_ON(layer)`, `IS_LAYER_OFF(layer)` |
| `layer_state_cmp(state, layer)` | Checks `state` to see if the specified `layer` is enabled. Intended for use in layer callbacks. | `IS_LAYER_ON_STATE(state, layer)`, `IS_LAYER_OFF_STATE(state, layer)` |
@ -5,7 +5,7 @@ If you've ever used Vim, you know what a Leader key is. If not, you're about to
That's what `KC_LEAD` does. Here's an example:
1. Pick a key on your keyboard you want to use as the Leader key. Assign it the keycode `KC_LEAD`. This key would be dedicated just for this -- it's a single action key, can't be used for anything else.
2. Include the line `#define LEADER_TIMEOUT 300` in your `config.h`. This sets the timeout for the `KC_LEAD` key. Specifically, when you press the `KC_LEAD` key, you only have a certain amount of time to complete the Leader Key sequence. The `300` here sets that to 300ms, and you can increase this value to give you more time to hit the sequence. But any keys pressed during this timeout are intercepted and not sent, so you may want to keep this value low. .
2. Include the line `#define LEADER_TIMEOUT 300` in your `config.h`. This sets the timeout for the `KC_LEAD` key. Specifically, when you press the `KC_LEAD` key, you only have a certain amount of time to complete the Leader Key sequence. The `300` here sets that to 300ms, and you can increase this value to give you more time to hit the sequence. But any keys pressed during this timeout are intercepted and not sent, so you may want to keep this value low.
* By default, this timeout is how long after pressing `KC_LEAD` to complete your entire sequence. This may be very low for some people. So you may want to increase this timeout. Optionally, you may want to enable the `LEADER_PER_KEY_TIMING` option, which resets the timeout after each key is tapped. This allows you to maintain a low value here, but still be able to use the longer sequences. To enable this option, add `#define LEADER_PER_KEY_TIMING` to your `config.h`.
3. Within your `matrix_scan_user` function, add something like this:
@ -6,34 +6,34 @@ Macros allow you to send multiple keystrokes when pressing just one key. QMK has
## The New Way: `SEND_STRING()`&`process_record_user`
Sometimes you just want a key to type out words or phrases. For the most common situations we've provided `SEND_STRING()`, which will type out your string (i.e. a sequence of characters) for you. All ASCII characters that are easily translated to a keycode are supported (e.g. `\n\t`).
Sometimes you want a key to type out words or phrases. For the most common situations, we've provided `SEND_STRING()`, which will type out a string (i.e. a sequence of characters) for you. All ASCII characters that are easily translatable to a keycode are supported (e.g. `qmk 123\n\t`).
Here is an example `keymap.c` for a two-key keyboard:
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.