* Make solo half of split keyboards (more) usable.
Using only one half of a split keyboard (that's using the split_common
framework to communicate) is not a great experience, since several read
timeouts per scan cycle cause an unusably slow scan rate.
This change blocks all split communication attempts for 500 ms
(configurable) after an error occurs, causing the scan rate to become at
least _more_ usable, but might need some tweaking to work fully on most
keyboards. One read timeout still needs to occur after the 500 ms has
passed, and if that timeout isn't low enough, some scan cycles may still
be too slow.
* Fix lint complaint.
* Require 25 consecutive comm errors to see comms as disconnected.
The number of max errors can be overridden by defining
`SPLIT_MAX_CONNECTION_ERRORS`.
* Add comments to new defines, and ability to disable disconnection check.
Also increase `SPLIT_MAX_CONNECTION_ERRORS` to 40, since it's divisible
by most relevant numbers for the description.
* Make lint happy ...again
* Only update `connection_check_timer` when needed.
* Add new defines to split keyboard documentation.
* Move connection timeout logic to transport.c, add `is_transport_connected`.
* Use split_common disconnection logic in matrix.c.
Instead of doing more or less the same thing twice.
* Move disconnection logic to `transport_master`.
Is a cleaner implementation, and causes the scan rate while disconnected
to increase instead of decrease.
* Lint fixes.
* Lower default `SERIAL_USART_TIMEOUT` to 20 ms.
The read timeout must be low enough to not cause exessively long scan
cycles when using a solo split half. 10 ms was determined from testing
to work fine even with the slowest defined baudrate of 19200 (5 ms was
too low for that case), so 20 ms should be fine for most cases.
* Remove `SERIAL_USART_TIMEOUT` from ergodox_infinity/config.h
Was somewhat mistakenly included in an earlier PR.
* Fix building with `USE_I2C`.
* Reduce built firmware size.
Not really sure why this works, the idea was taken from tzarc's work on
split disconnection.
* Tweak and improve opt-out for split disconnection logic.
There are now two ways to opt out from this feature:
* Set `SPLIT_MAX_CONNECTION_ERRORS` to 0. This will completely disable
the connection status checks (also affects the slave matrix reset logic in
matrix.c, though).
* Set `SPLIT_CONNECTION_CHECK_TIMEOUT` to 0. This will only disable the
communication throttling while disconnected. Will make the firmware
smaller.
* Make split disconnection logic work with custom transports.
Includes a fallback implementation for keyboards using a custom
split_util.c but not a custom matrix.c (currently no such keyboard seems
to be merged, though).
* Remove unnecessary include of timer.h
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Joel Challis <git@zvecr.com>
* Fill the oleds with right mods
* Enable double mods on x32 oleds
* Disable forced NKRO
* Make oleds fancy only on good MCUs
* Overhaul oled display
* Further enhance oled, with kitty!
* Final oled form
* Not working transport
* Transport id of woring
* Add acceleration
* fix button placement for accel macro
* Fix accelartion location and behavior
* Remove OLED sync code
* Fix alignment issue
* Remove audio hack
* Fix up zima keymap
* Add matrix slave scan function and cleanup drashna.h
* Clean up user space
* Allow userspace sync to be disable-able
* Fix weird issue with audio
* Fix alignment issue with user split sync
* Disable second rgb matrix task
* Disable additional animations
* Change dynamic keymap settings
* Hacky fix for borked corne
* Add Blackpill (F411) support to tractyl manuform
* remove manual via eeprom reset
* Remove all references to rgblight twinkle
* Fix issues with config processing
* rename LAYOUT to LAYOUT_all
* add info.json
* override DYNAMIC_KEYMAP_LAYER_COUNT for via keymap
The via keymap only initialized two layers without overriding the default value of DYNAMIC_KEYMAP_LAYER_COUNT (4).
This commit sets DYNAMIC_KEYMAP_LAYER_COUNT for the via keymap to 2.
* noah_avr.h: use QMK 3-character notation for matrix positions
* Community Layout support, Stage 1
- rename LAYOUT_ansi to LAYOUT_65_ansi_blocker
- rename LAYOUT_ansi_splitbs to LAYOUT_65_ansi_blocker_split_bs
- enable Community Layout support
* info.json: add line breaks between rows
* info.json: correct LAYOUT_iso data
- unsplit the Backspace
- change ANSI Enter to ISO Enter
- split the left Shift
* Community Layout support, Stage 2
- rename LAYOUT_iso to LAYOUT_65_iso_blocker
- update Community Layout support
* Community Layout support, Stage 3
- add LAYOUT_65_iso_blocker_split_bs
- update Community Layout support
* noah_avr.h: add matrix diagram
* info.json: human-friendly formatting
* info.json: remove "w":1 instances
* info.json: correct positions of Left, Down and Right Arrow keys
* info.json: add LAYOUT_all data
* move Home key to end of home row
According to photographs of the keyboard, the fourth key down on the right side is physically on the home row. This commit moves the key argument and keycodes to the home row.
* whale75.h: use QMK 3-character notation for matrix
* whale75.h: add matrix diagram
* add keyboard-level encoder functionality
* info.json: correct key sequence on ISO layouts
* Update keymap & readme
-Keymap.c: Key combinations removed for resetting and added a new way to reset. Also removed unused timer code.
-config.h & rules.mk: Removed on kemap level (these were there for the key combo's)
-Readme.md: Changed the preview image and changed the description to reset the keyboard. Also added what connector type is used.
* Update readme.md
Better wording on how to get the keyboard in bootloader mode
* Update keymap.c
Switched + and - around, same with / and *.
* add info.json for Quefrency rev1
* add info.json for Quefrency rev2
* add info.json for Quefrency rev3
* add info.json for Quefrency rev4
* remove "global" Quefrency info.json
* remove layout macro aliases from keyboard headers
These were moved into the info.json files.
* rename layout macros
The existing layout macro names were not accurate to QMK's standard for the names that were given.
- rename LAYOUT_65_ansi_blocker to LAYOUT_65_ansi_blocker_split_bs
- rename LAYOUT_65_iso_blocker to LAYOUT_65_iso_blocker_split_bs
* correct info.json data
* add LAYOUT_65_iso_blocker
* add LAYOUT_65_ansi_blocker
* add Community Layout support
* update grid alignment on layout macros
* add LAYOUT_all
* refactor default and via keymaps
- use LAYOUT_all macro
- use _______ for KC_TRNS
- via keymap fixes
- swap KC_BSPC for KC_DEL on Layer 1 (matches default keymap)
- remove KC_PGUP from Layers 2 and 3 (makes both layers fully transparent)
* Add config.h and rules.mk support for data driven keymaps
* tidy up after rebase
* Rename key as it can contain more than just keyboard overrides
* tidy up after rebase
* Add validation
* Added gmmk pro paddlegame keymap
* Replaced config.h with my own
* Adjust code to better fit style guide
* Update readme to include layout
* Fixed keymap, was missing a few keys
* Replaced all instances of _isWinKeyDisabled with keymap_config.no_gui
* Update keyboards/gmmk/pro/ansi/keymaps/paddlegame/keymap.c
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Tomas Guinan <bngrybt@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
* Fixup massdrop/alt.
* Fixup `cest73/tkm` bootmagic lite.
* Update keyboards/cest73/tkm/rules.mk
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
* Add digitizer HID interface for setting the mouse cursor position at
absolute screen coordinates. Tested on Pro Micro, Proton C and
Blackpill.
* Update docs/feature_digitizer.md
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update tmk_core/protocol/usb_descriptor.c
Co-authored-by: Ryan <fauxpark@gmail.com>
* Add missing copyrights
Add V-USB support
* Add support for digitizer dedicated endpoint for lufa and chibios.
Fix formatting issues
Move digitizer_task definition to the feature's base implementation file
* Run cformat on modified files
* Change digitizer report usage to Digitizer instead of Pen to avoid
pointer disappearing on Windows.
* Update tmk_core/protocol/vusb/vusb.c
Co-authored-by: Ryan <fauxpark@gmail.com>
* Run cformat from docker image
* Remove send_digitizer from host_driver_t and instead rely on the
declaration being the interface to the implementation in each
HW-specific usb implementation.
* Fix build : send_digitizer shouldn't be static in vusb and add
weak-linkage implementation for tests without usb implementation
* Change digitizer user interface to match pointing device's
* Update documentation with new API
Co-authored-by: a-chol <nothing@none.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
* add some split data to info.json
* add tags
* add half of config_options.md to info.json
* add support for designating master split
* sort out split transport and primary
* fix bad data in UNUSED_PINS
* fixup custom transport
* wip
* allow for setting split right half keyboard matrix
* add SPLIT_USB_DETECT
* minor cleanup
* fix an erroneous message
* rework split.usb_detect
* adding missing rgblight vars to info.json
* add mouse_key to info.json
* add all remaining options from docs/config_options.md
* fix audio voices
* qmk info: Change text output to use dotted notation
* tweak layout output
* resolve alias names
* break out some functions to make flake8 happy
* add a field for bootloader instructions
* qmk generate-info-json: add a write-to-file argument
Adds an argument that instructs qmk generate-info-json to write the output to a file instead of just to the terminal.
* -arg_only, +action
Because it was never my intention that one would have to specify a value for the argument that enables writing the file.
* Bring qmk generate-info-json inline with other generate commands
* pytest fixup
* fix esca/getawayvan
* fix data driven errors for bpiphany converters
* features.force_nkro -> usb.force_nkro
* split.primary->split.main
* fix esca/getawayvan_f042
* fix the bpiphany converters for real
* fix bpiphany/tiger_lily
* Apply suggestions from code review
Co-authored-by: Nick Brassel <nick@tzarc.org>
* fix generate-api errors
* fix matrix pin extraction for split boards
* fix ploopyco/trackball_nano/rev1_001
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
Co-authored-by: Nick Brassel <nick@tzarc.org>
* info.json: apply human-friendly formatting
* info.json: correct key sequence
Places the arrow keys in the proper place in sequence.
* correct maintainer's GitHub link in readme
User changed their GitHub username; previous URL was Error 404.
* correct LAYOUT_tkl_ansi data
Number row was positioned 0.25u too low.
* correct LAYOUT_tkl_ansi macro
- remove position K027 (right half of Split Backspace)
- remove position K096 (right portion of Split Right Shift)
* correct LAYOUT_tkl_iso macro
- remove position K027 (right half of Split Backspace)
- remove position K096 (right portion of Split Right Shift)
* enable Community Layout support
* add LAYOUT_tkl_ansi_split_bs_rshift and LAYOUT_tkl_iso_split_bs_rshift
* new keyboard: handwired/directpins
* fix promicro keyboard_name
* add teensy2 and teensy2++ support
* align with handwired/onekey
* tweak pids
* add teensy 3.2 and teensy lc to directpins
* move directpins from handwired to ez_maker
* add docs for easy maker