summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Various fixes to how timer differences are calculated (#8585)Purdea Andrei2020-04-113-3/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * tmk_core/common: Fixing TIMER_DIFF macro to calculate difference correctly after the timer wraps. Let's go through an example, using the following macro: If the first timer read is 0xe4 and the second one is 0x32, the timer wrapped. If the timer would have had more bits, it's new value would have been 0x132, and the correct difference in time is 0x132 - 0xe4 = 0x4e old code TIMER_DIFF_8(0x32, 0xe4) = 0xff - 0xe4 + 0x32 = 0x4d, which is wrong. new code TIMER_DIFF_8(0x32, 0xe4) = 0xff + 1 - 0xe4 + 0x32 = 0x4e, which is correct. This also gives a chance for a smart compiler to optimize the code using normal integer overflow. For example on AVR, the following C code: uint8_t __attribute__ ((noinline)) test(uint8_t current_timer, uint8_t start_timer) { return TIMER_DIFF_8(current_timer, start_timer); } With the original code, it gets translated to the following list of instructions: 00004c6e <test>: 4c6e: 98 2f mov r25, r24 4c70: 86 1b sub r24, r22 4c72: 96 17 cp r25, r22 4c74: 08 f4 brcc .+2 ; 0x4c78 <test+0xa> 4c76: 81 50 subi r24, 0x01 ; 1 4c78: 08 95 ret But with this commit, it gets translated to a single instruction: 00004c40 <test>: 4c40: 86 1b sub r24, r22 4c42: 08 95 ret This unfortunately doesn't always work so nicely, for example the following C code: int __attribute__ ((noinline)) test(uint8_t current_timer, uint8_t start_timer) { return TIMER_DIFF_8(current_timer, start_timer); } (Note: return type changed to int) With the original code it gets translated to: 00004c6e <test>: 4c6e: 28 2f mov r18, r24 4c70: 30 e0 ldi r19, 0x00 ; 0 4c72: 46 2f mov r20, r22 4c74: 50 e0 ldi r21, 0x00 ; 0 4c76: 86 17 cp r24, r22 4c78: 20 f0 brcs .+8 ; 0x4c82 <test+0x14> 4c7a: c9 01 movw r24, r18 4c7c: 84 1b sub r24, r20 4c7e: 95 0b sbc r25, r21 4c80: 08 95 ret 4c82: c9 01 movw r24, r18 4c84: 84 1b sub r24, r20 4c86: 95 0b sbc r25, r21 4c88: 81 50 subi r24, 0x01 ; 1 4c8a: 9f 4f sbci r25, 0xFF ; 255 4c8c: 08 95 ret Wth this commit it gets translated to: 00004c40 <test>: 4c40: 28 2f mov r18, r24 4c42: 30 e0 ldi r19, 0x00 ; 0 4c44: 46 2f mov r20, r22 4c46: 50 e0 ldi r21, 0x00 ; 0 4c48: 86 17 cp r24, r22 4c4a: 20 f0 brcs .+8 ; 0x4c54 <test+0x14> 4c4c: c9 01 movw r24, r18 4c4e: 84 1b sub r24, r20 4c50: 95 0b sbc r25, r21 4c52: 08 95 ret 4c54: c9 01 movw r24, r18 4c56: 84 1b sub r24, r20 4c58: 95 0b sbc r25, r21 4c5a: 93 95 inc r25 4c5c: 08 95 ret There is not much performance improvement in this case, however at least with this commit it functions correctly. Note: The following commit will improve compiler output for the latter example. * tmk_core/common: Improve code generation for TIMER_DIFF* macros Because of integer promotion the compiler is having a hard time generating efficient code to calculate TIMER_DIFF* macros in some situations. In the below example, the return value is "int", and this is causing the trouble. Example C code: int __attribute__ ((noinline)) test(uint8_t current_timer, uint8_t start_timer) { return TIMER_DIFF_8(current_timer, start_timer); } BEFORE: (with -Os) 00004c40 <test>: 4c40: 28 2f mov r18, r24 4c42: 30 e0 ldi r19, 0x00 ; 0 4c44: 46 2f mov r20, r22 4c46: 50 e0 ldi r21, 0x00 ; 0 4c48: 86 17 cp r24, r22 4c4a: 20 f0 brcs .+8 ; 0x4c54 <test+0x14> 4c4c: c9 01 movw r24, r18 4c4e: 84 1b sub r24, r20 4c50: 95 0b sbc r25, r21 4c52: 08 95 ret 4c54: c9 01 movw r24, r18 4c56: 84 1b sub r24, r20 4c58: 95 0b sbc r25, r21 4c5a: 93 95 inc r25 4c5c: 08 95 ret AFTER: (with -Os) 00004c40 <test>: 4c40: 86 1b sub r24, r22 4c42: 90 e0 ldi r25, 0x00 ; 0 4c44: 08 95 ret Note: the example is showing -Os but improvements can be seen at all optimization levels, including -O0. We never use -O0, but I tested it to make sure that no extra code is generated in that case.OA * quantum/debounce: Fix custom wrapping timers in eager_pr and eager_pk debounce algorithms Please see the below simulated sequence of events: Column A is the 16-bit value returned by read_timer(); Column B is the value returned by custom_wrap_timer_read(); Column C is the original code: (timer_read() % MAX_DEBOUNCE) A, B, C 65530, 19, 30 65531, 20, 31 65532, 21, 32 65533, 22, 33 65534, 23, 34 65535, 24, 35 0 25, 0 1, 26, 1 2, 27, 2 3, 28, 3 4, 29, 4 5, 30, 5 read_timer() wraps about every 1.09 seconds, and so debouncing might fail at these times without this commit. * quantum/debounce/eager_pr and eager_pk: modifications for code readability according to code review. * quantum/debounce/eager_pr and eager_pk: modifications for code readability according to code review. (2)
* Some refinements of 75_ansi/spidey3 layout (#8581)Joshua Moses Diamond2020-04-116-36/+112
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * First cut at Josh Diamond's KBD75 customizations. Includes: * My unique keymap with ChromeOS specific keys * Use RGB underglow to indicate Caps Lock * Some unicode bindings * Some changes to make debugging easier * Updated spidey3 to be applicable to all 75_ansi boards * Sadly, ChromeOS doesn't pay attention to most consumer codes * Add mac layer; fix flakeyness in CAPS_LOCK underglow. * Make layers.json match the keymap (to the extent possible) * Major cleanup; fix broken debug persistence * Cleanup some whitespace issues * Fix incorrect log message. * Rework layer indication to user RGBLIGHT_LAYERS * Update layouts/community/75_ansi/spidey3/keymap.c Co-Authored-By: Drashna Jaelre <drashna@live.com> * Rename users/spidey3/rgblight.c to layer_rgb.c per suggestion * Refactor to use set_single_persistant_default_layer(). * Use dprint/f to make logging more elegant. * Update users/spidey3/config.h Co-Authored-By: Drashna Jaelre <drashna@live.com> * Update users/spidey3/config.h Co-Authored-By: Drashna Jaelre <drashna@live.com> * Update layouts/community/75_ansi/spidey3/rules.mk Co-Authored-By: Ryan <fauxpark@gmail.com> * Update users/spidey3/spidey3.c Co-Authored-By: Ryan <fauxpark@gmail.com> * Update users/spidey3/layer_rgb.c Co-Authored-By: Ryan <fauxpark@gmail.com> * Update users/spidey3/init.c Co-Authored-By: Ryan <fauxpark@gmail.com> * Changes from code review * Numpad layer, various keys for 75_ansi/spidey3 * Add Fn-B to toggle NKRO * Blink rgb to acknowledge some setting changes * Updated media control & reset key location * Minor cleanup Co-authored-by: Joshua Diamond <jdiamond@Deep-Thought.local> Co-authored-by: Drashna Jaelre <drashna@live.com> Co-authored-by: Ryan <fauxpark@gmail.com>
* [Keymap] added vim compatibility, backspace above enter, and general macOS ↵Keith Long2020-04-103-0/+213
| | | | | | | | | | opt… (#8080) * added vim compatibility, backspace above enter, and general macOS optimizations on top of default layout * add space65 macOS keymap for vim users with an optimized bottom row * Update keyboards/projectkb/alice/keymaps/keithlo/keymap.c
* Modernize ctrl, shift, alt mods detection (#8724)foxx13372020-04-101-3/+3
|
* Fix spaceman naming (#8741)Spaceman2020-04-1013-15/+13
| | | | | | | | * Fix spaceman naming * Update keyboards/pancake/info.json * Update keyboards/2_milk/info.json
* [Keyboard] obuwunkunubi/spaget handwired (#8738)Marko Bakan2020-04-099-0/+658
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * adding my keymap * Update keyboards/handwired/obuwunkunubi/spaget/readme.md * Update keyboards/handwired/obuwunkunubi/spaget/readme.md * Update keyboards/handwired/obuwunkunubi/spaget/keymaps/default/rules.mk * Update rules.mk * Update keyboards/handwired/obuwunkunubi/spaget/spaget.h * Update keyboards/handwired/obuwunkunubi/spaget/spaget.h * Update keyboards/handwired/obuwunkunubi/spaget/info.json * Update keyboards/handwired/obuwunkunubi/spaget/rules.mk * Update rules.mk * Update keyboards/handwired/obuwunkunubi/spaget/spaget.c * Update keyboards/handwired/obuwunkunubi/spaget/keymaps/default/keymap.c * Update keyboards/handwired/obuwunkunubi/spaget/keymaps/default/keymap.c * Update keyboards/handwired/obuwunkunubi/spaget/keymaps/default/keymap.c * Update keyboards/handwired/obuwunkunubi/spaget/keymaps/default/keymap.c * Update keyboards/handwired/obuwunkunubi/spaget/keymaps/default/keymap.c * Update keyboards/handwired/obuwunkunubi/spaget/keymaps/default/keymap.c * Update keyboards/handwired/obuwunkunubi/spaget/keymaps/default/keymap.c * Update keyboards/handwired/obuwunkunubi/spaget/info.json * Update keymap.c * Apply suggestions from code review * Apply suggestions from code review * Update spaget.h * Update keymap.c Updated comments
* [Keymap] Update personal userspace and keymaps (#8747)Konstantin Đorđević2020-04-0911-8/+43
| | | | | | | | | | | | | | | * Update mousekey parameters in userspace * Disable GRAVE_ESC in boards where it isn't used * Tweak MODERN_DOLCH_RED and reset RGB on Shift+Toggle in KBD6X * Disable RGB controls when Fn/Caps indicator lights are on * Use LTO_ENABLE instead of setting -flto directly * Add led_update_keymap, use SS_LCTL instead of SS_LCTRL * Change TAPPING_TOGGLE from 2 to 3
* Add PS2_MOUSE_ROTATE to compensate for device orientation (#8650)Manna Harbour2020-04-092-0/+34
| | | | | | | | * Add PS2_MOUSE_ROTATE to compensate for device orientation * fixup! Add PS2_MOUSE_ROTATE to compensate for device orientation * Reformat with IndentPPDirectives: AfterHash as per #6316
* Add RGB support in via to launchpad (#8621)Joshua Rubin2020-04-093-15/+18
| | | Signed-off-by: Joshua Rubin <me@jawa.dev>
* VIA support for the KBDFans KBD6x (#8680)George Wietor2020-04-094-3/+62
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Add VIA keymap * Update VID/PID - Update VID/PID to match other KBDfans keyboards - Flesh out keyboard description * add missing newline. whoops. * Update keyboards/kbdfans/kbd6x/keymaps/via/rules.mk Co-Authored-By: Drashna Jaelre <drashna@live.com> * update author / copyright date * Update keyboards/kbdfans/kbd6x/keymaps/via/rules.mk Co-Authored-By: Ryan <fauxpark@gmail.com> * Update keyboards/kbdfans/kbd6x/keymaps/via/keymap.c Co-Authored-By: Joel Challis <git@zvecr.com> * Update keyboards/kbdfans/kbd6x/kbd6x.h Co-Authored-By: Joel Challis <git@zvecr.com> Co-authored-by: George Wietor <george@light-gray.attlocal.net> Co-authored-by: Drashna Jaelre <drashna@live.com> Co-authored-by: Ryan <fauxpark@gmail.com> Co-authored-by: Joel Challis <git@zvecr.com>
* Set the correct RGB LED count on YD60MQ (#8629)Konstantin Đorđević2020-04-0810-7/+34
| | | | | | | | | | | | | * Fix RGB LED count on YD60MQ * Split YD60MQ into 12-LED and 16-LED revisions * Update readmes * Make 12led the default version * Readd base rules.mk, version→variant in readme * Add syntax highlighting to code blocks in readme
* [Keymap] Updates to personal keymaps (#8665)Yan-Fa Li2020-04-084-0/+31
|
* Fix compile issues related to NO_ACTION_MACRO/FUNCTION and LTO_ENABLE (#8663)Konstantin Đorđević2020-04-095-15/+20
| | | | | | | | | | | | | | | | * Define NO_ACTION_MACRO/FUNCTION in header instead of makefile when LTO is enabled Currently, boards and keymaps that define NO_ACTION_MACRO/FUNCTION unconditionally will not compile with LTO_ENABLE (#8604). This fixes the issue by moving the definitions from common.mk to action.h, which enables us to check for previous definitions of those macros (this cannot be done in a makefile). * Remove LTO checks in templates Since now NO_ACTION_MACRO/FUNCTION are defined as needed in action.h (which is included by quantum.h), checking for LTO in keyboard and user code is no longer required. * Update LTO_ENABLE docs
* [Keymap] Userspace update Rgb layers code (#8659)stanrc852020-04-083-5/+51
| | | | | | | | | | | | | | | | | * enable rgblight layers * rgblight layers code * switch to new rgblight layers * testing led positions * fix caps typo * lights and colors working * rules updated for different rgb use * Extra spaces removed
* Add Choconum (#8709)Danny2020-04-0813-0/+1871
| | | | | | | | | | | * Add Choconum * Disable SPI/I2C, add mem fix * Rename layouts * Nuke unused config.h files * Fix username
* Add Via keymap for BM16-A (#8681)Jared Giles2020-04-084-2/+56
| | | | | | | | | | | | | * Add Via keymap for BM16-A * Apply suggestions from code review Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com> Co-Authored-By: Ryan <fauxpark@gmail.com> * Deleted as per noroadsleft Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com> Co-authored-by: Ryan <fauxpark@gmail.com>
* Fix edge-case with configErovia2020-04-081-4/+5
| | | | | | | Without this check, users can lock themselves out by enabling developer mode, than disabling the dependencies. They wouldn't be able to turn off developer mode as none of the subcommands (including 'config') would work.
* Don't hide for devs...Erovia2020-04-083-3/+3
|
* Apply @skullydazed's suggestions, move 'import milc'Erovia2020-04-081-9/+7
| | | | | Only 'import milc' after we are sure that the minimum required modules are available, as it depends on a few of them.
* Make dedicated sections for user/dev commands in docsErovia2020-04-081-70/+65
|
* Rebase on master, hide some other subcommandsErovia2020-04-087-255/+25
| | | | | | | | | | | The list of hidden subcommands were approved by @skullydazed ;) Currently hidden if 'user.developer' is not True: - cformat - docs - kle2json - pyformat - pytest
* Use milc for config check, requirements fixesErovia2020-04-082-6/+8
| | | | | | | | Use milc's config finding and parsing to check if the user is a developer or not. 'requirements-dev.txt' will now load 'requirements.txt', so no need to run pip twice. Add missing 'yapf' dependency to 'requirements-dev.txt'.
* CLI: Add development mode supportErovia2020-04-088-25/+302
| | | | | Hide development specific options and don't require dev modules unless `user.developer` is set to `True`.
* Update info.json (#8723)Salicylic-acid32020-04-081-1/+1
| | | Addressed a key shift in the QMK Configurator.
* format code according to conventions [skip ci]QMK Bot2020-04-081-5/+5
|
* spi_master for AVR (#8299)Ryan2020-04-0814-125/+397
| | | | | | | | | | | | | | | | | | | | | | | | | | | * Change _delay_ms/us() to wait_ms/us() * Switch to platform-agnostic GPIO macros * Add AVR spi_master and migrate Adafruit BLE code * Set verbose back to false * Add clock divisor, bit order and SPI mode configuration for init * Add start and stop functions * Move configuration of mode, endianness and speed to `spi_start()` * Some breaks here would be good * Default Adafruit BLE clock divisor to 4 (2MHz on the Feather 32U4) * Remove mode and divisor enums * Add some docs * No hr at EOF * Add links in sidebar
* DennyTom's buttery_engine (#8138)DennyTom2020-04-0722-0/+7419
| | | | | | | | | | | | | | | | | | | | | * Selectively adding pieces * Adding georgi keymap * Adding more files, fixing make * Smaller makefiles * Fixing make rules * README more inline with QMK's guidelines * Turning off buggy assert * Improving documentation based on a user feedback. * Slightly better schema * Resurrected state machine diagram
* add via support for kira80 (#8677)elmo-space2020-04-074-1/+57
| | | | | | | | | | * add via support for kira80 * remove redundant raw enable from rules.mk * clean additional layers for via * changed USB Vendor ID
* [Keyboard] Wheatfield Split75 (#8511)artjomsR2020-04-079-0/+521
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Added split75 keyboard * tidy up commented out code + removed default * added visual map * proper led functions. more layers for keymap * led functions. moved mod keys to numbers * double tapping toggle + leds on power on * media keys fix * clean up of commented out code and unnecessary functions. readme update. default keymap * removed bootloadHID file * Update keyboards/split75/config.h * Update keyboards/split75/config.h * Update keyboards/split75/config.h * Update keyboards/split75/config.h * removed python flashing script * Update keyboards/split75/keymaps/default/keymap.c * Update keyboards/split75/split75.h * Update keyboards/split75/keymaps/art/keymap.c * Update keyboards/split75/keymaps/art/keymap.c * Update keyboards/split75/keymaps/art/keymap.c * Update keyboards/split75/keymaps/default/keymap.c * reintroduced empty matrix_scan_user to default keymap * Update keyboards/split75/keymaps/art/keymap.c * Update keyboards/split75/keymaps/art/keymap.c * Update keyboards/split75/usbconfig.h * Update keyboards/ergodone/config.h * Update keyboards/split75/keymaps/art/keymap.c * updated readme file * Update keyboards/split75/usbconfig.h * Update keyboards/split75/rules.mk * Update keyboards/split75/split75.c * code fix after suggestions * defined tapping toggle as double tap * added info.json * Update keyboards/split75/config.h * fix for leds not displaying properly when initialising * Update keyboards/split75/README.md * Update keyboards/split75/keymaps/default/keymap.c * Update keyboards/split75/keymaps/art/keymap.c * changed product description fields * renamed user functions * indentation fix * Update keyboards/split75/usbconfig.h * Update keyboards/split75/usbconfig.h * Update keyboards/split75/usbconfig.h * Update keyboards/split75/usbconfig.h * Update keyboards/split75/usbconfig.h * Update keyboards/split75/split75.c * Update keyboards/split75/split75.c * art keymap update * Update keyboards/split75/config.h * Update keyboards/split75/keymaps/art/keymap.c * Update keyboards/split75/keymaps/art/keymap.c * Update keyboards/split75/keymaps/art/keymap.c * Update keyboards/split75/keymaps/art/keymap.c * Update keyboards/split75/keymaps/art/keymap.c * Update keyboards/split75/split75.c * Update keyboards/split75/keymaps/art/keymap.c * Update keyboards/split75/keymaps/default/keymap.c * Update keyboards/split75/split75.c * Update keyboards/split75/matrix.c * Update keyboards/split75/rules.mk * Update keyboards/split75/split75.c * Update keyboards/split75/split75.c * Update keyboards/split75/split75.c * Update keyboards/split75/config.h * Update keyboards/split75/split75.c * disable underglow on sleep and enabled backlighting * Update keyboards/split75/usbconfig.h * Update keyboards/split75/usbconfig.h * Update keyboards/split75/usbconfig.h * Update keyboards/split75/usbconfig.h * Update keyboards/split75/usbconfig.h * Update keyboards/split75/usbconfig.h * personal keymap update * changed boot animation * consistent whitespace * Tidied up default notes and unnecessary comments * Unique Vendor ID * remove usb config file * corrected manufacturer * Update keyboards/split75/config.h * Update keyboards/split75/README.md * Update keyboards/split75/split75.c * Update keyboards/split75/split75.c * Update keyboards/split75/split75.c * Update keyboards/split75/split75.c * Update keyboards/split75/split75.c * Update keyboards/split75/split75.c * Update keyboards/split75/split75.h * Update keyboards/split75/split75.h * Update keyboards/split75/split75.h * Update keyboards/split75/split75.c * Update keyboards/split75/matrix.c * Update keyboards/split75/matrix.c * Update keyboards/split75/matrix.c * Update keyboards/split75/matrix.c * Update keyboards/split75/split75.h * Personal keymap restore after refactor * Moved to wheatfield folder + updated readme
* Correctly handle json keymaps with ANY()skullY2020-04-071-1/+13
|
* Update C coding conventions to match .clang-format config for i… (#8717)Konstantin Đorđević2020-04-071-5/+5
| | | | | * Update C coding conventions to match current .clang-format config for indenting PP directives * Make indenting guideline clearer
* Update 072 based CannonKeys boards to rely on core QMK support (#8716)Andrew Kannan2020-04-0750-14199/+42
| | | | | | | * Swap CannonKeys 072 boards over to rely on core QMK backlight support * Rename keymap * Rename via_tsangan back to via
* Remove keyboard level ws2812 spi drivers (#7694)Joel Challis2020-04-0624-126/+31
|
* Refactor cannonkeys f103 boards to use core backlight (#8089)Joel Challis2020-04-0613-285/+24
| | | | | * Refactor to use core backlight * Remove custom implementation
* Configurable VIA layout options default value (#8707)Wilba2020-04-062-1/+9
|
* Keymap Update jisplit89 (#8708)Salicylic-acid32020-04-062-15/+15
| | | Fixed wrong Enter key position.
* fix for split-common (#8703)Pekaso2020-04-062-14/+5
|
* add 60_ansi layout to YD60MQ (#8696)James Young2020-04-053-0/+82
|
* format code according to conventions [skip ci]QMK Bot2020-04-051-4/+4
|
* V-USB: Remove some stuff from usbconfig.h that should not be configurable ↵Ryan2020-04-053-53