Age | Commit message (Collapse) | Author |
|
* 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)
|
|
* 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>
|
|
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
|
|
|
|
* Fix spaceman naming
* Update keyboards/pancake/info.json
* Update keyboards/2_milk/info.json
|
|
* 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
|
|
* 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
* fixup! Add PS2_MOUSE_ROTATE to compensate for device orientation
* Reformat with IndentPPDirectives: AfterHash as per #6316
|
|
Signed-off-by: Joshua Rubin <me@jawa.dev>
|
|
* 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>
|
|
* 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
|
|
|
|
* 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
|
|
* 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
* Disable SPI/I2C, add mem fix
* Rename layouts
* Nuke unused config.h files
* Fix username
|
|
* 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>
|
|
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.
|
|
|
|
Only 'import milc' after we are sure that the minimum required modules
are available, as it depends on a few of them.
|
|
|
|
The list of hidden subcommands were approved by @skullydazed ;)
Currently hidden if 'user.developer' is not True:
- cformat
- docs
- kle2json
- pyformat
- pytest
|
|
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'.
|
|
Hide development specific options and don't require dev modules unless
`user.developer` is set to `True`.
|
|
Addressed a key shift in the QMK Configurator.
|
|
|
|
* 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
|
|
* 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
* remove redundant raw enable from rules.mk
* clean additional layers for via
* changed USB Vendor ID
|
|
* 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
|
|
|
|
* Update C coding conventions to match current .clang-format config for indenting PP directives
* Make indenting guideline clearer
|
|
* Swap CannonKeys 072 boards over to rely on core QMK backlight support
* Rename keymap
* Rename via_tsangan back to via
|
|
|
|
* Refactor to use core backlight
* Remove custom implementation
|
|
|
|
Fixed wrong Enter key position.
|
|
|
|
|
|
|
|
(#8656)
* V-USB: Remove some stuff from usbconfig.h that should not be configurable
* Clean up some ifdefs
* And some more
* Even more
|
|
* jotix layouts
* jotix ortho 4x4 layout
* Update layouts/community/ortho_4x4/jotix/keymap.c
Co-Authored-By: Drashna Jaelre <drashna@live.com>
* jotix
Co-authored-by: Drashna Jaelre <drashna@live.com>
|
|
|
|
* Doctor: Add avrdude/dfu-util/dfu-programmer version printing
* Extra newline
* Iterate through version checking functions
|
|
* updated rules.mk and default keymap of Wonderland for VIA support
* Restored default keymap and rules.mk, added via keymap folder with modified default keymap and rules.mk, also fixed VendorID in config.h
* fixed jargon on layers 3 and 4 of Wonderland VIA keymap
* cleaned up via keymap, removed fluff
* default keymap for Wonderland restored
* removed unnecessary information from rules.mk
* made more readable per noroadsleft suggestion
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
|
|
|
|
* Add files via upload
* Update info.json
* Update info.json
* Update 910.h
* Update 910.h
* Update 910.h
* Update info.json
* Update 910.c
* Update 910.h
* Update config.h
* Update config.h
* Update keymap.c
* Update rules.mk
* Update readme.md
* Delete config.h
* Delete readme.md
|
|
* V-USB remote wakeup
Backport from tmk/tmk_keyboard@391c979be751eaf113c8f53c36644a6bb6ff12f6
* Change vusb.c remote wake config
as per fauxpark's suggestion
|
|
* Add Greek keymap
* Split left shift (unused), change keycode for dialytika tonos
* Update quantum/keymap_extras/keymap_greek.h
Co-Authored-By: Konstantin Đorđević <vomindoraan@gmail.com>
* Fix definition for DTON
Co-authored-by: Konstantin Đorđević <vomindoraan@gmail.com>
|
|
* Add Polish keymap
* Fix wrong AltGr mapping
* These are ogoneks, not cedillas
* Too many !s
* ANSI
* Just use BSLS
* Move BSLS
* Move PIPE
* Fix some incorrect names in keymap_slovak.h
Thanks to vomindoraan
|
|
* Add Russian keymap
* Switch to ANSI layout
|