~ruther/qmk_firmware

b8c3f4c6 — Purdea Andrei 5 years ago
quantum/debounce: Added sym_pk debounce algorithm (#8587)

* quantum/debounce: Added sym_pk debounce algorithm

* Apply suggestions from code review

Co-Authored-By: Ryan <fauxpark@gmail.com>

* quantum/debounce/sym_pk: delete comments and rename functions following code review

* quantum/debounce/sym_pk: Modifications for code readability according to code review

* quantum/debounce/sym_pk: Modifications for code readability according to code review (2)

* quantum/debounce/sym_pk: code review: cleaner code

Co-Authored-By: Nick Brassel <nick@tzarc.org>

Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Nick Brassel <nick@tzarc.org>
511fe643 — Takeshi ISHII 5 years ago
[Keymap] fix OLED display on Helix keyboard keymaps default and… (#8737)

Since #7773, the mode number of RGBlight is no longer displayed on the Helix OLEDs. I fixed this.
f7601dba — moyi4681 5 years ago
change kbd67 rev1 and rev2 default keymaps (#8758)

* change kbd67 default keymap
[Keyboard] Add splitish (#8751)

* Added personal minivan keymap, and started work on splitish directory

* Merge branch 'splitish' of github.com:RSchneyer/qmk_firmware into splitish

Trying to undo attempted fix

Added splitish keyboard files, removed personal Minivan keymap

* Removed personal Minivan keymaps

* Fixed small issue in readme

* Added changes based on inital PR feedback

* forgot a semicolon

* Quick config.h file and default keymap update
cc386278 — QMK Bot 5 years ago
format code according to conventions [skip ci]
6c2c3c13 — Purdea Andrei 5 years ago
Various fixes to how timer differences are calculated (#8585)

* 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)
e4cc642a — Joshua Moses Diamond 5 years ago
Some refinements of 75_ansi/spidey3 layout (#8581)

* 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>
c3c39434 — Keith Long 5 years ago
[Keymap] added vim compatibility, backspace above enter, and general macOS 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
061ed87b — foxx1337 5 years ago
Modernize ctrl, shift, alt mods detection (#8724)

5c1aca0b — Spaceman 5 years ago
Fix spaceman naming (#8741)

* Fix spaceman naming

* Update keyboards/pancake/info.json

* Update keyboards/2_milk/info.json
6384a2ab — Marko Bakan 5 years ago
[Keyboard] obuwunkunubi/spaget handwired (#8738)

* 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
439afc88 — Konstantin Đorđević 5 years ago
[Keymap] Update personal userspace and keymaps (#8747)

* 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
07c75feb — Manna Harbour 5 years ago
Add PS2_MOUSE_ROTATE to compensate for device orientation (#8650)

* 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
b5aa5e43 — Joshua Rubin 5 years ago
Add RGB support in via to launchpad (#8621)

Signed-off-by: Joshua Rubin <me@jawa.dev>
be8443b3 — George Wietor 5 years ago
VIA support for the KBDFans KBD6x (#8680)

* 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>
4b10235f — Konstantin Đorđević 5 years ago
Set the correct RGB LED count on YD60MQ (#8629)

* 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
6ef13f83 — Yan-Fa Li 5 years ago
[Keymap] Updates to personal keymaps (#8665)

be2f5816 — Konstantin Đorđević 5 years ago
Fix compile issues related to NO_ACTION_MACRO/FUNCTION and LTO_ENABLE (#8663)

* 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
ff213d5f — stanrc85 5 years ago
[Keymap] Userspace update Rgb layers code (#8659)

* 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
3234118e — Danny 5 years ago
Add Choconum (#8709)

* Add Choconum

* Disable SPI/I2C, add mem fix

* Rename layouts

* Nuke unused config.h files

* Fix username
Next