summaryrefslogtreecommitdiff
path: root/docs/feature_split_keyboard.md
AgeCommit message (Collapse)Author
2022-01-12Merge remote-tracking branch 'origin/master' into developQMK Bot
2022-01-12[Docs] Improve Handedness by EEPROM documentation (#15615)Albert Y
Co-authored-by: Dasky <32983009+daskygit@users.noreply.github.com> Co-authored-by: filterpaper <filterpaper@localhost>
2021-12-27[Core] Split support for pointing devices. (#15304)Dasky
* Draft implementation * formatting * fix combined buttons * remove pimoroni throttle * sync pointing on a throttle loop with checksum * no longer used * doh Co-authored-by: Drashna Jaelre <drashna@live.com> * switch pimoroni to a cpi equivalent * add cpi support * allow user modification of seperate mouse reports * a little tidy up * add *_RIGHT defines. * docs * doxygen comments * basic changelog * clean up pimoroni * small doc fixes * Update docs/feature_pointing_device.md Co-authored-by: Drashna Jaelre <drashna@live.com> * performance tweak if side has usb * Don't run init funtions on wrong side * renamed some variables for consistency * fix pimoroni typos * Clamp instead of OR * Promote combined values to uint16_t * Update pointing_device.c Co-authored-by: Drashna Jaelre <drashna@live.com> Co-authored-by: Nick Brassel <nick@tzarc.org>
2021-09-15[Docs] add sync options heading, update led indicators (#14441)Dasky
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-08-22Make solo half of split keyboards (more) usable. (#13523)Joakim Tufvegren
* 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>
2021-08-15Enable sync of OLED/ST7565 display on/off state on Splits (#13542)Drashna Jaelre
* Enable sync of OLED/ST7565 display on/off state on Splits * Only send if states are not matched Co-authored-by: Nick Brassel <nick@tzarc.org> Co-authored-by: Nick Brassel <nick@tzarc.org>
2021-07-05Allow invert of SPLIT_HAND_PIN logic (#13433)Jameson Thatcher
* added support for inverting the hand pin for split keyboards * Added docs about SPLIT_HAND_LOW_IS_LEFT * Update docs/feature_split_keyboard.md bring #define for split hand pin low for left half name in line with grid pin define Co-authored-by: Joel Challis <git@zvecr.com> * Update quantum/split_common/split_util.c update split hand pin low is left name to match split hand grid define Co-authored-by: Joel Challis <git@zvecr.com> Co-authored-by: Joel Challis <git@zvecr.com>
2021-06-18Extensible split data sync (#11930)Nick Brassel
* Extensible split data sync capability through transactions. - Split common transport has been split up between the transport layer and data layer. - Split "transactions" model used, with convergence between I2C and serial data definitions. - Slave matrix "generation count" is used to determine if the full slave matrix needs to be retrieved. - Encoders get the same "generation count" treatment. - All other blocks of data are synchronised when a change is detected. - All transmissions have a globally-configurable deadline before a transmission is forced (`FORCED_SYNC_THROTTLE_MS`, default 100ms). - Added atomicity for all core-synced data, preventing partial updates - Added retries to AVR i2c_master's i2c_start, to minimise the number of failed transactions when interrupts are disabled on the slave due to atomicity checks. - Some keyboards have had slight modifications made in order to ensure that they still build due to firmware size restrictions. * Fixup LED_MATRIX compile. * Parameterise ERROR_DISCONNECT_COUNT.
2021-06-13[Docs] Update feature_split_keyboard.md (#13205)Markus Knutsson
2021-05-20Add EE_HANDS documentation command example (#12730)Albert Y
* Add command example * Remove c tag Co-authored-by: filterpaper <filterpaper@localhost>
2021-03-03Documentation changes SPLIT_USB_DETECT and hid_listen udev rules (#11665)individ-divided
Co-authored-by: David Grundberg <david@quartz>
2021-03-01[Docs] MATRIX_MASKED docs for SPLIT_HAND_MATRIX_GRID (#11974)Trevor Elliott
2021-02-16Split transport mirror (#11046)XScorpion2
* Split transport mirror support * Updated RGB Matrix to respond to electrical events instead of key events * split matrix slave fix
2020-12-17Add modifier state to the split keyboard transport (#10400)Casey Webster
* Add modifier state to the split transport This adds modifier state to the i2c and serial transport for split keyboards. The purpose of this is to allow e.g. displaying modifier state on the slave side of a split keyboard on an oled. This adds one byte to the data transferred between halves. This also fixes a missing ifdef guard for BLACKLIGHT_ENABLE. Break modifiers into real/weak/oneshot Fix incorrect slave serial mod setting Fix typo in serial weal mod setter Fix build errors for the I2C code that I introduced Code cleanup and formatting per project preferences Correctly get oneshot mods Fix missing braces Remove unneeded ifdef guard Make the added state transport optional Add documentation for the new define to enable this feature Fix stray grave mark * Fix error introduced in conflict resolution
2020-11-27[Docs] Add VBUS hack for teensys (#10986)Drashna Jaelre
2020-09-06Replace figures in docs/feature_split_keyboard.md (#10242)Takeshi ISHII
* Replace figures in feature_split_keyboard.md * fig update * Update docs/feature_split_keyboard.md Co-authored-by: Ryan <fauxpark@gmail.com> Co-authored-by: Ryan <fauxpark@gmail.com>
2020-07-04add SPLIT_HAND_MATRIX_GRID support (#8685)Takeshi ISHII
Co-authored-by: Danny <nooges@users.noreply.github.com>
2020-05-22Update ARM split keyboard docs (#9160)Joel Challis
* Update ARM split keyboard docs * Update docs/serial_driver.md Co-authored-by: Nick Brassel <nick@tzarc.org> Co-authored-by: Nick Brassel <nick@tzarc.org>
2020-02-04Reduce SPLIT_USB_TIMEOUT by 500ms (#7637)Joel Challis
* Update SPLIT_USB_TIMEOUT -500ms * Align keyboard level SPLIT_USB_TIMEOUT defaults * Align keyboard level SPLIT_USB_TIMEOUT_POLL * Review fixes
2019-10-28Update split i2c docs for example of when pull-ups are required (#7143)Adam Perlman
2019-10-11ARM split - detect USB to select master/slave (#6424)Joel Challis
* Initial split refactor to allow usb master detection * Add split USB detect docs * Add SPLIT_USB_DETECT demo mode limitation * fix rebase issues * clang-format
2019-09-27ARM split - Add support for dfu-util EE_HANDS flashing (#6543)Joel Challis
* Initial stab at some fake dfu-util-split-left behaviour * Apply suggestions from code review Co-Authored-By: fauxpark <fauxpark@gmail.com> * Clang format fixes * Fake eeprom init for both left and right hand
2019-08-16Add support for different encoder pinout for right half of split keyboard ↵Danny
(#6521) * Add support for different encoder pinouts for split keyboard * Update documentation for new encoder pinout feature
2019-08-03[Split] Add config option for DIRECT_PINS_RIGHT (#6479)Garrett Singer
Adds support for different direct pin mappings on the halves of a split keyboard.
2019-07-15[Docs] Add dedicated page for Split Keyboard information (#5802)Drashna Jaelre
* [Docs] Add dedicated page for Split Keyboard information * Apply suggestions from code review Co-Authored-By: drashna <drashna@live.com> * Fix Typos Co-Authored-By: drashna <drashna@live.com> * Fix some formatting issues * Add Additional RGB info * Fix Bulletted formatting * Apply suggestions from code review Co-Authored-By: drashna <drashna@live.com> * Fix line wrapping * Additional fixes and expansion * Reword warning/note Co-Authored-By: drashna <drashna@live.com> * add i2c/serial coexistance info * i2c markdown * Change i2c wiring text Co-Authored-By: drashna <drashna@live.com>