Compare commits

...
233 Commits
Author SHA1 Message Date
Drashna Jaelre 12568fb5a9 [Bug] Fix RGB Matrix Indicators (#11308) 2020-12-29 22:14:03 +00:00
Joe Hu 824e1cd95d Fix backlight for XD84 (#11309)
Like XD87, XD8 should have `#define BACKLIGHT_ON_STATE 0` too.
2020-12-29 22:12:58 +00:00
xyzz 2573ed8c6b Remove MATRIX_IS_ON macro (#11330)
* Remove MATRIX_IS_ON macro

this macro is both incorrect and excessive given that macro_is_on()
exists

* Remove massdrop matrix.h
2020-12-29 21:45:04 +00:00
MonksoffunkandRyan 25d9cdc88f Add ALETH42 keyboard (#10720)
* Add Aleth42 keyboard

* Fix Rotary Encoder Section

* Add VIA keymap

* Fix VIA keymap

remove RETRO_TAPPING define because of incompatiblity of rotary encoders with layer tapping.
change KC_ESC to KC_GESC

* Change TAPPING definitions

Comment TAPPING_TERM
Remove RETRO_TAPPING

* Add rev1

Add new rev1 directory
Move previous files to rev0

* Add define of ENCODER_RESOLUTION

* Change number of RGBLED

* Change USB descriptor param

Change VID, PID and product name

* Change default and via keymaps

* Remove upper keymap

* Add readme

* Change USB descriptor param

VID 0x04D8 PID 0xEAC8
Manufacturer 25KEYS
rev0 -> 0x0000 rev1 -> 0x0001
Remove define DESCRIPTION

* Fix info.json

Remove info,json under /rev0 /rev1
Add correct info.json at keyboard/aleth42/

* Change keymaps

* Remove unnecessary comments

* Change BOOTMAGIC option

* Change config options

* Fix readme files

* Change keymap readme files

* Change to use get_highest_layer

* Update keyboards/aleth42/keymaps/default/keymap.c

Co-authored-by: Ryan <[email protected]>

* Update keyboards/aleth42/keymaps/default/keymap.c

Co-authored-by: Ryan <[email protected]>

* Update keyboards/aleth42/keymaps/default/keymap.c

Co-authored-by: Ryan <[email protected]>

* Update keyboards/aleth42/keymaps/default/readme.md

Co-authored-by: Ryan <[email protected]>

* Update keyboards/aleth42/keymaps/default/readme.md

Co-authored-by: Ryan <[email protected]>

* Update keyboards/aleth42/keymaps/default/readme.md

Co-authored-by: Ryan <[email protected]>

* Update keyboards/aleth42/keymaps/via/readme.md

Co-authored-by: Ryan <[email protected]>

* Update keyboards/aleth42/keymaps/via/readme.md

Co-authored-by: Ryan <[email protected]>

* Update keyboards/aleth42/keymaps/via/readme.md

Co-authored-by: Ryan <[email protected]>

* Use tap_code16 function

* Remove empty config file

* Update keyboards/aleth42/keymaps/default/readme.md

Co-authored-by: Ryan <[email protected]>

* Update keyboards/aleth42/keymaps/default/readme.md

Co-authored-by: Ryan <[email protected]>

* Update keyboards/aleth42/keymaps/default/readme.md

Co-authored-by: Ryan <[email protected]>

* Update keyboards/aleth42/keymaps/default/readme.md

Co-authored-by: Ryan <[email protected]>

* Update keyboards/aleth42/keymaps/default/readme.md

Co-authored-by: Ryan <[email protected]>

* Update keyboards/aleth42/keymaps/via/readme.md

Co-authored-by: Ryan <[email protected]>

* Update keyboards/aleth42/keymaps/via/readme.md

Co-authored-by: Ryan <[email protected]>

* Update keyboards/aleth42/keymaps/via/readme.md

Co-authored-by: Ryan <[email protected]>

* Update keyboards/aleth42/keymaps/via/readme.md

Co-authored-by: Ryan <[email protected]>

Co-authored-by: Ryan <[email protected]>
2020-12-29 21:13:35 +00:00
Ryan 962b8d3814 Update keycode docs (#11343) 2020-12-30 07:51:36 +11:00
Ryan 122cf3ad0f Update Zadig docs with list of bootloader device names and IDs (#11337) 2020-12-29 19:46:15 +00:00
Zach White 5edfdeff50 remove some old and unused code from Makefile (#11336) 2020-12-29 19:42:09 +00:00
LongerHV 221d8fd866 [CLI] Add stdin support for json2c command (#11289)
* Implement stdin for json2c command

* Refactor

* Handle json decode error

* Add stdin support for c2json cli command

* Refactor to prevent code duplication

* Change exit(1) to return False in c2json command

* Remove unused import
2020-12-29 11:34:48 -08:00
Chas 3300164065 Typo fix: Useful function -> Useful Functions (#11342)
Thanks!
2020-12-30 01:32:30 +09:00
Zach White 55843480ff Fix compile issues from the error page (#11314)
* fix abacus so it works with configurator

* create the keymap path if it doesn't exist

* bpiphany/unloved_bastard: remove the nested macros, move default keymap to json

* readd the unloved_bastard default keymap

* fix clueboard/card

* fixup handwired/2x5keypad

* fixup hub16

* matrix/noah: remove the broken matrix print code to fix compilation

* reinstate matrix_print with the right include

* Revert "create the keymap path if it doesn't exist"

This reverts commit af732776a539e8c6e2edf2e54f4d7f5ffa65b3a2.
2020-12-28 20:06:07 -08:00
5fde2d730c 1x4p1 (#11186)
Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Ryan <[email protected]>
Co-authored-by: Erovia <[email protected]>
2020-12-28 21:27:00 +01:00
Ryan 1b7b72c0e9 Ensure single newline at EOF for core files (#11310) 2020-12-28 04:36:32 +11:00
Joel ChallisandRyan bbf0f65284 Simplify the visual flow of the getting started page (#11316)
* Add tabs to getting started page

* Review comments

Co-authored-by: Ryan <[email protected]>

* Align with current theme

* Update docs/newbs_getting_started.md

Co-authored-by: Ryan <[email protected]>

* Apply suggestions from code review

Co-authored-by: Ryan <[email protected]>

Co-authored-by: Ryan <[email protected]>
2020-12-27 16:56:10 +00:00
Ryan 1d1d5da43f Change include guards in tmk_core/ and drivers/ to pragma once (#11240) 2020-12-26 15:56:11 +11:00
Ryan 48f4768d33 Change include guards in quantum/ to pragma once (#11239) 2020-12-26 15:53:12 +11:00
Drashna Jaelre 53eb7f0774 [Keyboard] Fix default keymaps for tunks/ergo33 (#11280)
* [Keyboard] Fix default keymap for tunks/ergo33

* Add prpro keymap too
2020-12-25 15:00:29 -08:00
Takeshi ISHII 5544bf8524 [Keymap] update rules.mk and config.h of helix/rev2:five_rows (#11302)
* update keyboards/helix/rev2/keymaps/five_rows/rules.mk: oled selection, led animation selection

* add OLED_UPDATE_INTERVAL support into keyboards/helix/rev2/keymaps/five_rows/oled_display.c

Support for OLED_UPDATE_INTERVAL, even for older types of OLED tasks.

* Add 'HELIX=debug/no-debug' option into 'helix/rev2/keymaps/five_rows/rules.mk'
2020-12-26 02:38:07 +09:00
7ca4b61922 First commit of Kawii9 (#11201)
Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Ryan <[email protected]>
2020-12-26 01:44:32 +11:00
Jonathon CarstensandRyan b7f640ca76 Adding new keyboard: Tenkey++ (tenkey_plusplus) (#11197)
Co-authored-by: Ryan <[email protected]>
2020-12-26 01:42:11 +11:00
Drashna Jaelre 436b5394bb [Keyboard] Fix Dactyl Manuform with Trackball info.json (#11298) 2020-12-26 01:38:31 +11:00
CMMS-FreatherandRyan cd0d2d0de5 new repo: create cmm.studio folder, add saka qmk firmware (#11248)
Co-authored-by: Ryan <[email protected]>
2020-12-24 14:33:25 +01:00
Ryan 6a292e11d3 qmk fileformat: only print complaints, and fix some of them (#11278) 2020-12-24 02:36:44 +00:00
Thierry Michel Philippe Kleist 3e3f93c971 [Keyboard] misterknife/knife66_iso (#11010)
* feat: added new variant of knife66
2020-12-23 17:07:56 -08:00
Boris Faure 9136c122f8 docs: add Gentoo to newbs_getting_started.md (#11241) 2020-12-23 17:59:57 +01:00
cc4b93b330 Helen 80 addition (#11133)
Co-authored-by: james sa <[email protected]>
Co-authored-by: James Sa <[email protected]>
2020-12-23 10:22:31 +01:00
Perry HargraveandRyan d40d1e4024 [keymap] Adds tofu65 with split spacebar (#10831)
* [keymap] Adds tofu65 with split spacebar

* Update keyboards/kbdfans/kbd67/rev2/keymaps/ansi_split_space/keymap.c

Co-authored-by: Ryan <[email protected]>

* Update keyboards/kbdfans/kbd67/rev2/keymaps/ansi_split_space/keymap.c

Co-authored-by: Ryan <[email protected]>

* Update keyboards/kbdfans/kbd67/rev2/keymaps/ansi_split_space/readme.md

Co-authored-by: Ryan <[email protected]>

* Update keyboards/kbdfans/kbd67/rev2/rev2.h

Co-authored-by: Ryan <[email protected]>

* Update keyboards/kbdfans/kbd67/rev2/keymaps/ansi_split_space/keymap.c

Co-authored-by: Ryan <[email protected]>

* Update keyboards/kbdfans/kbd67/rev2/keymaps/ansi_split_space/keymap.c

Co-authored-by: Ryan <[email protected]>

* Update keyboards/kbdfans/kbd67/rev2/keymaps/ansi_split_space/keymap.c

Co-authored-by: Ryan <[email protected]>

* Update keyboards/kbdfans/kbd67/rev2/keymaps/ansi_split_space/keymap.c

Co-authored-by: Ryan <[email protected]>

* keymap:tofu65: remove unneeded config.h

* Update keyboards/kbdfans/kbd67/rev2/keymaps/ansi_split_space/keymap.c

Co-authored-by: Ryan <[email protected]>

Co-authored-by: Ryan <[email protected]>
2020-12-22 23:25:20 -08:00
Nick Blyumberg b2ab0af905 [Docs] Update links in main README.md (#11284)
It looks like features.md was deprecated and content was split into other files. This results in a broken link on the main page which, if removed, would have no impact to the remainder of the documentation. This would also:
resolve #9239
resolve #10293 
resolve #10447
2020-12-22 22:37:01 -08:00
TerryMathewsandRyan d898d4a6fc [Keyboard] Portico: Initial support for TKC Portico (#11215)
* Portico: Initial support for TKC Portico

* Portico: added GPL header to keymap files

* Update keyboards/tkc/portico/rules.mk

Co-authored-by: Ryan <[email protected]>

Co-authored-by: Ryan <[email protected]>
2020-12-22 22:27:55 -08:00
7c0cb18681 [Keyboard] HID Technologies vendor id correction (#11225)
* add bastyl

* no need to copy the folder anymore

* clean up according to PR rules

* remove via, fix disposition

* add reset button on right half

* Update readme.md

* Update keyboards/hidtech/bastyl/bastyl.h

Co-authored-by: Joel Challis <[email protected]>

* Update keyboards/hidtech/bastyl/rules.mk

Co-authored-by: Joel Challis <[email protected]>

* Update keyboards/hidtech/bastyl/config.h

Co-authored-by: Joel Challis <[email protected]>

* move json, remove via files

* Update keyboards/hidtech/bastyl/keymaps/default/keymap.c

Co-authored-by: Ryan <[email protected]>

* Update keyboards/hidtech/bastyl/keymaps/default/keymap.c

Co-authored-by: Ryan <[email protected]>

* Update keyboards/hidtech/bastyl/keymaps/default/keymap.c

Co-authored-by: Ryan <[email protected]>

* Update keyboards/hidtech/bastyl/keymaps/default/keymap.c

Co-authored-by: Ryan <[email protected]>

* add GPL to c and h files

* Update keyboards/hidtech/bastyl/info.json

Change order to match layout macro

Co-authored-by: Joel Challis <[email protected]>

* Update keyboards/hidtech/bastyl/config.h

Co-authored-by: Drashna Jaelre <[email protected]>

* serial define can be ommited, is used by default

* Corrected VENDOR_ID

Incorrect VENDOR_ID has been updated to the correct one.

Co-authored-by: Quentin <[email protected]>
Co-authored-by: Joel Challis <[email protected]>
Co-authored-by: Ryan <[email protected]>
Co-authored-by: Drashna Jaelre <[email protected]>
2020-12-22 22:23:29 -08:00
e52b4797d3 [Keyboard] Scarlet numpad VIA support added (#11188)
* Initial test version of Scarlet keyboard

* First commit of DElec Scarlet

* Change to new Draytronics branding

* Update to keyboard details

Update to keyboard details and link to Draytronics website.

* Update keyboards/draytronics/scarlet/scarlet.h

Co-authored-by: Joel Challis <[email protected]>

* Update keyboards/draytronics/scarlet/rules.mk

Co-authored-by: Joel Challis <[email protected]>

* Update keyboards/draytronics/scarlet/readme.md

Co-authored-by: Joel Challis <[email protected]>

* Update keyboards/draytronics/scarlet/keymaps/default/keymap.c

Co-authored-by: Joel Challis <[email protected]>

* Update keyboards/draytronics/scarlet/config.h

Co-authored-by: Joel Challis <[email protected]>

* Update keymap.c

* Update config.h

* Update scarlet.h

* Update keyboards/draytronics/scarlet/config.h

Co-authored-by: James Young <[email protected]>

* Update keyboards/draytronics/scarlet/config.h

Co-authored-by: James Young <[email protected]>

* Update keyboards/draytronics/scarlet/scarlet.h

Co-authored-by: James Young <[email protected]>

* Update keyboards/draytronics/scarlet/keymaps/default/keymap.c

Co-authored-by: James Young <[email protected]>

* provide info.json layout to fix qmk configurator

* Correctly name keyboard in info.json

* Added website and layout key labels to info.json

* VIA support. Thanks sirdicholas

* Readme change, link to VIA design file.

Co-authored-by: Blake Drayson <[email protected]>
Co-authored-by: Joel Challis <[email protected]>
Co-authored-by: James Young <[email protected]>
2020-12-22 22:00:55 -08:00
498d89f4b3 [Docs] Add clarification on use of custom RGB Matrix effect (#11176)
* Update feature_rgb_matrix.md

Added more clarification on how to use a newly created rgb effect as it was unclear that the prefix 'RGB_MATRIX_CUSTOM_' had to be added.
Also included an example consistent with the documentation example.

* Update docs/feature_rgb_matrix.md

Co-authored-by: Ryan <[email protected]>

* Update docs/feature_rgb_matrix.md

Co-authored-by: Joel Challis <[email protected]>

Co-authored-by: Ryan <[email protected]>
Co-authored-by: Joel Challis <[email protected]>
2020-12-22 21:59:26 -08:00
Ibnu Daru Aji d5f3f7c126 [Keyboard] corrected VID/PID and layout for squiggle (#11198)
* corrected the pid and added a new layout.

* following drashna's suggestion.
2020-12-22 21:53:14 -08:00
Rustam Zagirov e9ed5d7571 ergodox_ez/stamm update (#11236) 2020-12-23 16:34:33 +11:00
Ryan 806aa9bc67 Remove comments about custom ldscript for Teensy LC (#11224) 2020-12-23 15:01:44 +11:00
Takeshi ISHII dc7081a823 [Keymap] fix and update helix/rev3_5rows:five_rows (#11191)
* [Keymap] fix and update helix/rev3_5rows:five_rows

* fix rgblight animation selection
* use `DEBUG_MATRIX_SCAN_RATE_ENABLE` insted of keyboard_post_init_user_scan.c

* Change the initial value of the ENCODER_ENABLE to 'no' in 'keymaps/five_rows/rules.mk'

* Add 'HELIX=debug/no-debug' option into 'rev3_5rows/keymaps/five_rows/rules.mk'

* Add '#define OLED_UPDATE_INTERVAL 100' 'rev3_5rows/keymaps/five_rows/config.h'

* add LED_ANIMATIONS_LEVEL macro into rev3_5rows/keymaps/five_rows/

* Change OLED_UPDATE_INTERVAL value in rev3_5rows/keymaps/five_rows/config.h
2020-12-23 11:50:12 +09:00
Reza Jelveh fd177582ad chibios: honor PLATFORMASM in chibios build (#11219) 2020-12-23 11:44:49 +11:00
Kishor PrinsandRyan dee506c096 Updated Raw HID docs to clarify packet/report length (#11211)
Co-authored-by: Ryan <[email protected]>
2020-12-23 08:04:55 +11:00
Ryan 78b2f120e5 V-USB: Fix initial dropped keypress (#11263) 2020-12-23 07:33:04 +11:00
SpacebarRacecar ce7d3855f4 Update to personal keymaps (#11171) 2020-12-23 06:28:34 +11:00
Nathan13888 4eebefada7 [Keyboard] YMD75 rev 3: fix BACKLIGHT_PIN (#11172)
* YMD75 rev 3:  fix BACKLIGHT_PIN

Update backlight LED pin used by QMK to control the per-key backlight for YMD75 rev 3

* YMD75 rev 3: fix BACKLIGHT_PIN - fix comments

* YMD75: move BACKLIGHT_PIN definitions to the respective versions

Signed-off-by: Nathan13888 <[email protected]>
2020-12-22 11:27:27 -08:00
cjcodell1andRyan 71b52416d8 [Keyboard] Add Nimrod (#11141)
Co-authored-by: Ryan <[email protected]>
2020-12-22 19:39:29 +01:00
Dmitry NosachevandRyan bf324c38e3 [Keyboard] add ASkeyboard Sono1 (#11114)
* handwired/sono1

* readme: addition

* Apply suggestions from code review

Co-authored-by: Ryan <[email protected]>

Co-authored-by: Ryan <[email protected]>
2020-12-22 10:10:56 -08:00
Joshua Diamond f40b564683 Partial fix for Issue #9405 - Caps Lock not working with Unicode Map's XP on Linux (#11232) 2020-12-23 04:51:47 +11:00
Jack 2843e7f995 [Keyboard] Add VIA keymap for the reviung41 (#11102)
* Add VIA keymap for reviung41

* Change VID for compatibility

* Add GPL header to config.h

* Enable link time optimization

* Remove config since it might not be needed
2020-12-22 09:40:04 -08:00
Joshua DiamondandRyan 54e2bf3ede Fix Issue #9533 - Delayed shift state handling (#11220)
Co-authored-by: Ryan <[email protected]>
2020-12-22 18:23:09 +01:00
kb-elmo 9453573080 [Keyboard] Add Axolstudio Yeti (#11051) 2020-12-22 01:14:28 -08:00
Zach White c0dcee96a8 Initial list of keyboards to exclude from CI (#11213) 2020-12-21 15:38:39 +01:00
4e0718a3b7 [Keyboard] add Lily58L keymap (#9870)
Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Erovia <[email protected]>
Co-authored-by: Ryan <[email protected]>
2020-12-21 15:34:40 +01:00
EroviaandRyan a380a26ad2 Split of the doctor codebase (#11255)
Co-authored-by: Ryan <[email protected]>
2020-12-21 13:29:36 +01:00
Ryan e3211e307e Fix small typo in V-USB configuration descriptor (#11253) 2020-12-21 13:12:07 +11:00
RyanandErovia 0239ce025a Doctor: add check for .git folder (#11208)
Co-authored-by: Erovia <[email protected]>
2020-12-20 15:46:01 +01:00
Nick Brassel 13bbeefc5a Follow symlinks when listing keyboards. (#11250) 2020-12-20 19:08:39 +11:00
Takeshi ISHII 63362a9c5e [Keymap] fix keyboards/helix/rev2/keymaps/default/oled_display.c (#11228)
Fixed the OLED display on the right side as it was showing some garbage.
右側のOLEDディスプレイにゴミが表示されていたのを修正しました。
2020-12-20 13:27:54 +11:00
MechMerlin 25b1367806 VIA Support: MF68 (#11030)
* add via support to mf68 pcb

* add license header
2020-12-19 13:14:41 -08:00
Zach White 624cafbfd2 Change keyboard json format to bring it inline with the current api (#11231) 2020-12-19 19:46:30 +01:00
5619b1d3db [Keyboard] Add drashna's dactyl manuform 5x6 with trackball (#11062)
Co-authored-by: James Young <[email protected]>
Co-authored-by: Erovia <[email protected]>
2020-12-19 19:43:00 +01:00
Zach White bded5f473c simplify qmk doctor to make room for #11208 (#11242) 2020-12-18 16:42:30 -08:00
precondition 6890090fbb Updated usage of qmk c2json (#11148) 2020-12-18 21:56:23 +01:00
Zach White 03cbee8637 Add the ability to exclude keyboards from travis builds (#11178)
* add the ability to exclude keyboards from travis builds

* add filtering to make all:

* only skip keyboards during make all:

* working implementation

* forego a CI_KEYBOARDS variable

* optimize the startup by only listing keyboards once

* add sort -u to all list_keyboard invocations

* move the if else if tree back to 1 level
2020-12-18 12:17:53 -08:00
Joel Challis a9f7d4dccc Various compilation fixes for avr-gcc 10 (#9269) 2020-12-18 17:28:29 +00:00
Ryan 6ea4b06f9f Run cformat and dos2unix manually (#11235) 2020-12-17 14:06:30 +00:00
maikong d9dcb716bf [Keyboard] add MT64RGB (#10865)
* Create mt64

* Create mt84rgb

* Delete mt64

* Add files via upload

* Create MK84RGB

* gx84

* add new keyboard

* new keyboard

* Delete MK84RGB

* Delete config.h

* Delete mt84.c

* Delete mt84.h

* Delete mt84rgb

* Delete rules.mk

* add info json

* Add files via upload

* Delete config.h

* Delete rules.mk

* Delete keymap.c

* Delete keymap.c

* Delete info.json

* Delete mt64rgb.c

* Delete mt64rgb.h

* Delete rules.mk

* add keyboard

* Delete config.h

* Delete info.json

* Delete mt64rgb.c

* Delete mt64rgb.h

* Delete rules.mk

* Delete rules.mk

* Delete keymap.c

* Delete keymap.c

* Delete config.h

* Delete mt84.c

* Delete mt84.h

* Delete rules.mk

* Delete rules.mk

* Delete keymap.c

* Delete keymap.c

* Delete info.json

* Add files via upload

* Delete keymap.c

* Add files via upload

* Delete keymap.c

* Add files via upload

* Delete rules.mk

* Add files via upload

* Delete config.h

* Add files via upload

* Update config.h

* Update keymap.c

* Update keymap.c

* Update and rename keyboards/mt64rgb/keymaps/default/keymap.c to 键盘/mt64rgb/按键图/默认/keymap.c

* Update mt64rgb.h

* Update mt64rgb.c

* Update and rename keyboards/mt64rgb/rules.mk to 键盘/mt64rgb/rules.mk

* Update config.h

* Update rules.mk

* Update readme.md

* Update keymap.c

* Create rules.mk

* Update keymap.c

* Create keymap.c

* Delete keymap.c

* Update keymap.c

* Update keymap.c

* Update mt64rgb.h

* Delete rules.mk

* Update readme.md

* Update rules.mk

* Update readme.md

* Update info.json

* Update keymap.c

* Update mt64rgb.c

* Update config.h

* Update keymap.c

* Update readme.md

* Update rules.mk

* Update keymap.c

* Update config.h

* Update readme.md

* Update rules.mk

* Update readme.md

* Update config.h
2020-12-17 01:50:42 -08:00
hekekee 8346151fe0 [Keymap] ISO layout for KBD67 rev 2.0 (#11136) 2020-12-16 22:47:12 -08:00
dc4c80eef4 [Keyboard] add Labyrinth75 (#11135)
* added Labyrinth75

* changed to lowercase inline with the PR checklist

* added a correctly formatted image to readme.md

* fixed imgur link

* fixed info.json

* Update keyboards/labyrinth75/keymaps/default/keymap.c

Co-authored-by: ridingqwerty <[email protected]>

* Update keyboards/labyrinth75/labyrinth75.h

Co-authored-by: ridingqwerty <[email protected]>

* remove superfluous backslashes

* Update keyboards/labyrinth75/config.h

Co-authored-by: Drashna Jaelre <[email protected]>

Co-authored-by: ridingqwerty <[email protected]>
Co-authored-by: Drashna Jaelre <[email protected]>
2020-12-16 22:45:21 -08:00
r-pufky c4aae0e93b [Keymap] Update based on massdrop/ctrl core changes n(#11134) 2020-12-16 22:43:49 -08:00
haierwangwei2005 49b6c5fd83 [Keyboard] Update config for 10 ble oled usbhub pad (#11066) 2020-12-16 21:56:17 -08:00
7938921f9e [Keyboard] Add POS78 keyboard (#11024)
* Add pos78 keyboard

* tidy up links

* Added missing commas

The missing commas were causing a compile error (Travis CI, #41934 failed).

* Added trailing commas 

On lines 10-14, just missed last line (15).

* Travis CI errors

Trying to correct errors from Travis CI #41951 failed

* Corrected(?) TG(_FN) from Travis CI failure

* Revert readme.md to original format

Fauxpark

Co-authored-by: Ryan <[email protected]>

* Remove trailing \ from keymap.c

Fauxpark

Co-authored-by: Ryan <[email protected]>

* Change Vendor and Product ID

How do I update the Product ID search tool if 0x7878 is used/good?

* Add  LAYOUT_ortho_6x13 Update keyboards/pos78/pos78.h

Co-authored-by: Drashna Jaelre <[email protected]>

* I bow to drashna's superior knowledge. Update keyboards/pos78/info.json

Co-authored-by: Drashna Jaelre <[email protected]>

* I bow to drashna's superior knowledge.  Update keyboards/pos78/keymaps/default/keymap.c

Co-authored-by: Drashna Jaelre <[email protected]>

* I bow to drashna's superior knowledge.   Update keyboards/pos78/keymaps/default/keymap.c

Co-authored-by: Drashna Jaelre <[email protected]>

* Added pic

* Add picture properly. Update keyboards/pos78/readme.md

Co-authored-by: Ryan <[email protected]>

* Remove Bootmagic_enable (fauxpark)

Co-authored-by: Ryan <[email protected]>

Co-authored-by: Ryan <[email protected]>
Co-authored-by: Drashna Jaelre <[email protected]>
2020-12-16 21:45:11 -08:00
58107ebedf [Keyboard] Add program_yoink (#10963)
* Add new keyboard: program_yoink

* Updated rules.mk

* Updated split_space keymap

Fixed split_space keymap and now builds with no errors.

* Update keyboards/program_yoink/config.h

Co-authored-by: Drashna Jaelre <[email protected]>

* Update keyboards/program_yoink/config.h

Co-authored-by: Drashna Jaelre <[email protected]>

* Update keyboards/program_yoink/rules.mk

Co-authored-by: Drashna Jaelre <[email protected]>

* Update keyboards/program_yoink/program_yoink.h

Co-authored-by: Drashna Jaelre <[email protected]>

* Update keyboards/program_yoink/program_yoink.h

Co-authored-by: Drashna Jaelre <[email protected]>

* Update keyboards/program_yoink/keymaps/default/keymap.c

Co-authored-by: Drashna Jaelre <[email protected]>

* Update keyboards/program_yoink/keymaps/default/keymap.c

Co-authored-by: Drashna Jaelre <[email protected]>

* Update keyboards/program_yoink/keymaps/split_bar/keymap.c

Co-authored-by: Drashna Jaelre <[email protected]>

* Update keyboards/program_yoink/keymaps/split_bar/keymap.c

Co-authored-by: Drashna Jaelre <[email protected]>

* Update keyboards/program_yoink/keymaps/split_bar/keymap.c

Co-authored-by: Drashna Jaelre <[email protected]>

* Update keyboards/program_yoink/keymaps/default/keymap.c

Co-authored-by: Drashna Jaelre <[email protected]>

* Update readme.md

* Apply suggestions from code review

Co-authored-by: Drashna Jaelre <[email protected]>

* Apply suggestions from code review

Co-authored-by: Joel Challis <[email protected]>

* Update keyboards/program_yoink/readme.md

per code review

* Apply suggestions from code review

* Update keyboards/program_yoink/rules.mk

Co-authored-by: Ryan <[email protected]>

* Update keyboards/program_yoink/config.h

Co-authored-by: Joel Challis <[email protected]>

Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Joel Challis <[email protected]>
Co-authored-by: Ryan <[email protected]>
2020-12-16 21:27:47 -08:00
d82ab56a14 [Keyboard] Box75 (#10949)
* Initial BOX75 PCB v1.0.6 PCB support

* New prototype firmware

* Correct column pin assignment

* Update README

* Update keyboards/box75/config.h

Remove USB description

Co-authored-by: Drashna Jaelre <[email protected]>

* Update keyboards/box75/rules.mk

Remove comment lines from BLUETOOTH_ENABLE and AUDIO_ENABLE

Co-authored-by: Ryan <[email protected]>

* Add VIA support

* Remove KC_NO define and use traditional one

* Update keyboards/box75/keymaps/default/keymap.c

Move KC_HOME location on keymap.c

Co-authored-by: James Young <[email protected]>

* Update keyboards/box75/box75.h

Move HOME key location on keymap.c

Co-authored-by: James Young <[email protected]>

* Changed F13 to print screen in default VIA firmware

Co-authored-by: Gondolindrim <[email protected]>
Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Ryan <[email protected]>
Co-authored-by: James Young <[email protected]>
2020-12-16 21:26:03 -08:00
Álvaro A. VolpatoandGondolindrim 14024fabeb [Keyboard] Iron180 (#10948)
* Initial CK60i support

* Initial Iron180 support

* Add PWM support

* Feedback from PCB protos

* Update README

* Remove CK60i references

* Remove KC_NO ____ definition and replaced with predefined

* Remove description field in USD descriptors

* Shorten bluetooth enable and audio output comments on rules.mk

* Initial VIA support

Co-authored-by: Gondolindrim <[email protected]>
2020-12-16 21:24:59 -08:00
d60031b321 [Keyboard] Technika (#10946)
* Initial technika support

* Updated README

* Update keyboards/technika/config.h

Remove DESCRIPTION from usb desciptor fields

Co-authored-by: Drashna Jaelre <[email protected]>

* Update keyboards/technika/rules.mk

Remove words from comments in rules.mk

Co-authored-by: Ryan <[email protected]>

* Remove old KC_NO definitions and used default one

* Use defines for num, caps and scroll lock LED pins

* Fix underscore KC_NO substitution in keymap

Co-authored-by: Gondolindrim <[email protected]>
Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Ryan <[email protected]>
2020-12-16 21:21:37 -08:00
Joel Challis c807695035 Yet another stab at trying to get github actions to push (#11230) 2020-12-16 23:00:02 +00:00
Alabahuy 11669bb45b [Keyboard] Add rart/rart4x4 with VIA support (#11095)
* Create config.h

* Create info.json

* Create rart4x4.c

* Create rart4x4.h

* Create readme.md

* Create rules.mk

* Create keymap.c

* Create keymap.c

* Rename keyboards/rart/rart4x4/default/keymap.c to keyboards/rart/rart4x4/keymaps/default/keymap.c

* Rename keyboards/rart/rart4x4/via/keymap.c to keyboards/rart/rart4x4/keymaps/via/keymap.c

* Create rules.mk

* Update info.json

* Update keymap.c

* Update rart4x4.h

* Update rules.mk
2020-12-16 13:02:47 -08:00
3295ac90ee New keyboard: wsk/alpha9 (#10430)
* adding alpha variants

* adding cajal layouts

* adding V2 PCB support

adding additional layouts for new PCB version, and correecting incorrect image in info file

* Cleanup master -- remove alpha9

* Cleanup master -- remove g4m3ralpha

* Cleanup master -- remove cajal & sl40

* Master cleanup -- re-add sl40

* Master cleanup -- correct SL40 image

* Add keyboard: wsk/alpha9

* Cleaned up default keymap

* Removed misleading keymap README

* Slight tweak to default keymap.c

* Added license attribution to .{c,h} files

* Update keyboards/wsk/alpha9/config.h

Co-authored-by: Joel Challis <[email protected]>

* Update keyboards/wsk/alpha9/alpha9.c

Co-authored-by: Joel Challis <[email protected]>

* Update keyboards/wsk/alpha9/rules.mk

Co-authored-by: Joel Challis <[email protected]>

* Update keyboards/wsk/alpha9/keymaps/default/keymap.c

Co-authored-by: Joel Challis <[email protected]>

* Update keyboards/wsk/alpha9/config.h

Co-authored-by: James Young <[email protected]>

* Update keyboards/wsk/alpha9/info.json

Co-authored-by: James Young <[email protected]>

* Update keyboards/wsk/alpha9/config.h

Co-authored-by: Drashna Jaelre <[email protected]>

* Update keyboards/wsk/alpha9/rules.mk

Co-authored-by: Ryan <[email protected]>

* Update keyboards/wsk/alpha9/alpha9.c

Co-authored-by: Drashna Jaelre <[email protected]>

* Update keyboards/wsk/alpha9/config.h

Co-authored-by: Drashna Jaelre <[email protected]>

Co-authored-by: worldspawn00 <[email protected]>
Co-authored-by: Joel Challis <[email protected]>
Co-authored-by: James Young <[email protected]>
Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Ryan <[email protected]>
2020-12-16 12:47:56 -05:00
0d42d7b87b Added Split Backspace Support for the Nemui (#11131)
* added nemui layout

* via support working

* added license headers for c and h files

* Update keyboards/nemui/keymaps/via/rules.mk

Co-authored-by: Drashna Jaelre <[email protected]>

* Update keyboards/nemui/nemui.c

Co-authored-by: Drashna Jaelre <[email protected]>

* Update keyboards/nemui/config.h

Co-authored-by: Ryan <[email protected]>

* Update keyboards/nemui/readme.md

Co-authored-by: Ryan <[email protected]>

* Update keyboards/nemui/rules.mk

Co-authored-by: Ryan <[email protected]>

* removed nemui.json as it was supposed to only be in via repo

* Update keyboards/nemui/keymaps/default/keymap.c

Co-authored-by: Ryan <[email protected]>

* Update keyboards/nemui/info.json

Co-authored-by: James Young <[email protected]>

* Update keyboards/nemui/info.json

Co-authored-by: James Young <[email protected]>

* Update keyboards/nemui/keymaps/via/keymap.c

Co-authored-by: James Young <[email protected]>

* Update keyboards/nemui/keymaps/via/keymap.c

Co-authored-by: James Young <[email protected]>

* added split backspace support for the nemui

* need to also update the qmk keymap

* fixed info.json to have the new keys

* vusb changes shouldn't have happened

Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Ryan <[email protected]>
Co-authored-by: James Young <[email protected]>
2020-12-16 12:36:57 -05:00
Ryan 9366ed7282 Normalise include statements in keyboard code (#11185) 2020-12-16 14:27:23 +11:00
37fb14f1b5 CLI-ify rgblight_breathing_table_calc.c (#11174)
Co-authored-by: Takeshi ISHII <[email protected]>
Co-authored-by: Zach White <[email protected]>
2020-12-16 14:24:42 +11:00
Ryan 3925ff5342 gh60/satan: fix indicator LED define (#11216) 2020-12-15 17:26:18 +00:00
MakotoKurauchiandmtei 0831a3181a [Keymap] Helix default keymap oled update (#11152)
* update keyboards/helix/rev2/local_features.mk - Improved parsing of the `HELIX =` option

* add 'is_mac_mode()' into keyboards/helix/rev2/rev2.c

* update helix/rev2/keymaps/default/keymap.c: use rgblight query functions

* Makes the OLED driver used by the helix:default keymap switchable.

* use TOP/drivers/oled/oled_driver.c
  `make  helix:default`
  or
  `make OLED_SELECT=core  helix:default`
* use helix/local_drivers/ssd1306.c
  `make OLED_SELECT=local  helix:default`

* Separated the OLED related code from keymap.c and moved it to oled_display.c.

* Change the 'led_test' keymap to follow the changes in the 'default' keymap.

* update helix/rev2/keymaps/default/oled_display.c

* add '#define OLED_UPDATE_INTERVAL 50' into keyboards/helix/rev2/config.h

* Support for OLED_UPDATE_INTERVAL, even for older types of OLED tasks

* add readme.md for helix/rev2

* Apply drashna's suggestions to rev2.c.

* Apply drashna's suggestions to rev3_4rows.c, rev3_5rows.c.

Co-authored-by: mtei <[email protected]>
2020-12-15 20:14:14 +09:00
labahuy ac8cddda22 [Keyboard] rart/rart45 (#11096)
* Create config.h

* Create info.json

* Create rart45.c

* Create rart45.h

* Create readme.md

* Create rules.mk

* Create keymap.c

* Create keymap.c

* Create rules.mk

* Update config.h

* Update rart45.c

* Update rart45.h

* Update rules.mk

* Update readme.md

* Update info.json
2020-12-14 14:26:30 -08:00
Yan-Fa Li e6217b6aa6 Selectively enable command and console for yanfali userspace (#11212)
* Remove command and console

 - these options prevent community layouts from being built on other
   keyboards. Selectively enable it on keyboards I own rather than on
   everything.

* Update users/yanfali/rules.mk
2020-12-14 11:13:00 -08:00
Joel Challis 795e82074d Another attempt to fix formatting workflow (#11187) 2020-12-13 21:47:20 +00:00
Xelus22andJoel Challis 70f40339c2 Add i2c 24LC64 eeprom (#11200)
* add 24LC64 eeprom

* docs update

* Update docs/eeprom_driver.md

Co-authored-by: Joel Challis <[email protected]>

Co-authored-by: Joel Challis <[email protected]>
2020-12-14 05:50:50 +11:00
Takeshi ISHII 10e4487ba3 Fix incorrect search order for rgblight_breathe_table.h that rgblight.c includes. (#11192)
When `rgblight.c` includes `rgblight_breathe_table.h`, the search order should be as follows.

* `keyboards/KEYBOARD/keymaps/USER/rgblight_breathe_table.h`
* `users/USER/rgblight_breathe_table.h`
* `quantum/rgblight_breathe_table.h`

However, the current implementation was wrong, so I fixed it.
2020-12-13 03:19:15 +09:00
Hedgestock 8ea7f4f45f Fixed french quotes on canadian multilingual (#11183) 2020-12-11 19:00:07 +00:00
Joel Challis 4b03b6f7f4 Nightingale Studios Hailey production fixes (#11180) 2020-12-11 13:49:31 +00:00
Joel Challis 1ebd243cdc CI automated format fixes (#11179)
* Format all C files for now, till diff logic works within CI

* Fix recursion of dos2unix
2020-12-11 13:49:03 +00:00
David Heck b185816717 Add XD75am as supported in XD75 readme (#11170) 2020-12-11 23:50:05 +11:00
Ryan 501f2fdef1 Normalise include statements in core code (#11153)
* Normalise include statements in core code

* Missed one
2020-12-11 13:45:24 +11:00
Joel Challis 5b5d74a267 Fix warning logic when running 'qmk format -a' (#11177) 2020-12-10 19:02:41 +00:00
Joel Challis 6c4b6531fe CI: Add workflow for codebase formatting (#7382)
* Add workflow for codebase formatting

* stash

* review comments

* Swap to a more complete push action
2020-12-10 17:01:51 +00:00
ojthetiny 82bb47a2f1 add Via keymap for beatervan (#11159)
* add via keymap for beatervan

* fixed error in rules.mk
2020-12-10 09:46:46 -05:00
ojthetiny 9517d90e84 add VIA keymap for edc40 (#11160)
* add via keymap for edc40

* fix error in keymap
2020-12-10 09:31:12 -05:00
Ryan 79d992d1e7 Use progmem.h for claw44 glcdfont (#11164) 2020-12-10 13:07:08 +11:00
Xelus22 cd67074f72 [Keyboard] Valor FRL TKL update - EEPROM change (#11163)
* valor fix

* change eeprom

* fix up eeprom
2020-12-09 09:28:58 -08:00
Nick Brassel 01c7108db5 Fixup config template to match <> instead of "" for includes. (#11166) 2020-12-09 19:55:43 +11:00
Ryan f440111b4b Fix titan60 and h660 error_log complaints (#11124) 2020-12-09 19:03:51 +11:00
Jay Greco 56933b9b9f [Keymap] Fix rules.mk for nullbits nibble oled keymap (#11142) 2020-12-08 17:49:10 -08:00
e03d72d71e [Keyboard] Geekboards Macropad V2 keyboard (#11045)
* Initial commit of Geekboards Macropad V2 keyboard

* Apply suggestions from code review

Co-authored-by: Joel Challis <[email protected]>

* Apply suggestions from code review: delete unnecessary files

* Fixed typos

* Apply suggestions from code review

Co-authored-by: Ryan <[email protected]>

* Change RGB_MATRIX config syntax following recent core changes

* Apply suggestions from drashna code review

* Remove unnecessary file (it is now defined in the core)

* Remove unnecessary code, due to PR 11084 approve

Co-authored-by: Joel Challis <[email protected]>
Co-authored-by: Ryan <[email protected]>
2020-12-08 15:58:32 -08:00
Borja López Jiménez 563723392f Fixed taleguers75 info.json (#11121) 2020-12-08 14:28:13 -05:00
Charles A Moonen 2ae700c8c8 Add missing hardware availability for Plank EZ (#11069)
Add missing information needed to mirror the supported hardware in the previous line
2020-12-08 14:12:41 -05:00
Kyle McCreery 666861dd6f [Keyboard] Big Dill Extended by MechWild (#11047)
* [Keyboard] New Keyboard - BDE

Added the Big Dill Extended by MechWild

* Corrected pinout for righty config

Corrected the copied line from the lefty config that had not been updated prior to this commit.

* Corrected the files that had been overwritten with old versions during testing.

* Update keyboards/mechwild/bde/lefty/config.h

* Made changes based on suggestions. Added GPL and split preference config.h lines into keymap level.

* Apply suggestions from code review

Readme cleanup

* Update keyboards/mechwild/bde/lefty/keymaps/fancy/config.h

* Update keyboards/mechwild/bde/lefty/keymaps/via/config.h

* Apply suggestions from code review

Corrects a stray style line in one of the readme files as well as correcting the name of the keymap layout from the inaccurate 3x14 name to just "layout"
2020-12-08 01:14:54 -08:00
kb-elmo 35f922df73 add via layout for aek2 usb pcb (#11125) 2020-12-08 13:51:07 +11:00
Evy Dekkers af03b92246 [Keyboard] Add nt980 (#11092)
* Add nt980

* update LED configuration
2020-12-07 18:20:48 -08:00
sithlord121andJoel Challis d354b1f0a4 [Keyboard] New keyboard SLZ40 (#11088)
* New SLZ40 keyboard

new keyboard added

* Update readme.md

* Update info.json

* Delete slz40_default.hex

* Update keyboards/slz40/keymaps/default/keymap.c

Co-authored-by: Joel Challis <[email protected]>

* Update keyboards/slz40/keymaps/default/keymap.c

Co-authored-by: Joel Challis <[email protected]>

* Update readme.md

* Update readme.md

Co-authored-by: Joel Challis <[email protected]>
2020-12-07 18:18:16 -08:00
95022bc366 [Keyboard] Add Bastyl keyboard (#11085)
* add bastyl

* no need to copy the folder anymore

* clean up according to PR rules

* remove via, fix disposition

* add reset button on right half

* Update readme.md

* Update keyboards/hidtech/bastyl/bastyl.h

Co-authored-by: Joel Challis <[email protected]>

* Update keyboards/hidtech/bastyl/rules.mk

Co-authored-by: Joel Challis <[email protected]>

* Update keyboards/hidtech/bastyl/config.h

Co-authored-by: Joel Challis <[email protected]>

* move json, remove via files

* Update keyboards/hidtech/bastyl/keymaps/default/keymap.c

Co-authored-by: Ryan <[email protected]>

* Update keyboards/hidtech/bastyl/keymaps/default/keymap.c

Co-authored-by: Ryan <[email protected]>

* Update keyboards/hidtech/bastyl/keymaps/default/keymap.c

Co-authored-by: Ryan <[email protected]>

* Update keyboards/hidtech/bastyl/keymaps/default/keymap.c

Co-authored-by: Ryan <[email protected]>

* add GPL to c and h files

* Update keyboards/hidtech/bastyl/info.json

Change order to match layout macro

Co-authored-by: Joel Challis <[email protected]>

* Update keyboards/hidtech/bastyl/config.h

Co-authored-by: Drashna Jaelre <[email protected]>

* serial define can be ommited, is used by default

Co-authored-by: Joel Challis <[email protected]>
Co-authored-by: Ryan <[email protected]>
Co-authored-by: Drashna Jaelre <[email protected]>
2020-12-07 18:16:28 -08:00
David HoelscherandRay 399be2a9b3 [Keyboard] Add customMK Genesis Macro Pad (#11080)
* Adding customMK Genesis keyboard and keymap files

* Updated readme.md

fixed a typo

* Fixed code for QMK PR

* Updated syntax in config.h and changed dfu to flash in readme

Co-authored-by: Ray <[email protected]>
2020-12-07 18:10:45 -08:00
stanrc85 ab2a43edb0 [Keymap] sneakbox keymap and userspace code (redo) (#10977)
* Add support for LAYOUT_alice to sneakbox pcb

* define variables for sneakbox led pins

* set rules for sneakbox pcb

* add rotary encoder to userspace

* fix rotary function

* add custom layer indicators for sneakbox

* Revert "Add support for LAYOUT_alice to sneakbox pcb"

This reverts commit 5ed94d8d897de6ef4f7a349368a6342cef5eff06.

* add license header

* Use  KEYBOARD_sneakbox_aliceclone

* cleaned up indicator code
2020-12-07 17:18:04 -08:00
Erovia d17caeb8ec Fix lineending in mt84 files (#11150) 2020-12-07 20:21:44 +00:00
maikongandDrashna Jaelre 10f7f6009d add mt84 keyboard (#10857)
Co-authored-by: Drashna Jaelre <[email protected]>
2020-12-07 19:39:18 +00:00
9346bd6f80 Eek! keyboard firmware merge into QMK (#11020)
Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Ryan <[email protected]>
Co-authored-by: Erovia <[email protected]>
2020-12-07 19:07:25 +00:00
monjebf a5a1f860c0 Add VIA support for E88 (#11065)
* Add VIA support for E88

* Update keyboards/e88/keymaps/via/keymap.c
2020-12-07 10:14:40 -08:00
encg 3a69d688f2 [Keymap] Adding encg keymap for 2% Milk keyboard (#11041)
* adding my keymap

* Updating coding convention and style for new keymap PR

* Added GPL license header and to-do list to readme
2020-12-06 12:04:22 -08:00
Joel Challis e2e6ff43ab Use patch bump for auto tagging workflow (#11137) 2020-12-06 19:57:28 +00:00
Dmitry NosachevandDrashna Jaelre b953a585d6 handwired/videowriter: oleg keymap update, via keymap (#10984)
* oleg keymap update, via keymap

* Apply suggestions from code review

Co-authored-by: Drashna Jaelre <[email protected]>

* via keymap use default bootloader

Co-authored-by: Drashna Jaelre <[email protected]>
2020-12-06 11:17:31 -08:00
dfeba3f9b6 [Keyboard] Add Lasgweloth (#10944)
* Initial Lasgweloth PCB support

* Fix column attribution

* Fix Col1 pin assignment

* New xoxotus layout and revised README

* Removed KC_NO definition

* Update keyboards/acheron/lasgweloth/config.h

Remove USB DESCRIPTION filed from config.h

Co-authored-by: Drashna Jaelre <[email protected]>

* Update keyboards/acheron/lasgweloth/rules.mk

Remove unnecessary comment lines on rules.mk

Co-authored-by: Ryan <[email protected]>

* Update readme.md

Update readme.md

Co-authored-by: Gondolindrim <[email protected]>
Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Ryan <[email protected]>
2020-12-06 10:56:48 -08:00
Ralph Azucenaandralphie02 df3a81b31e [Keyboard] Added a dactyl promicro rah (#10889)
* Added a dactyl promicro with a slightly different 6x6 layout

* updated keyboard layout

* Removed description as per code review

* refactored as per code review

* removed redundant config.h file

* removed and updated a couple of lines in rules.mk

* replaced symlink with copy of file

* removed lines in readme

* Update readme.md

Co-authored-by: ralphie02 <[email protected]>
2020-12-06 10:11:59 -08:00
haierwangwei2005 f1b082320e [Keyboard] Latin47ble bluetooth keyboard (#11023)
* Create rules.mk

* Create glcdfonr.c

* Create keymap.c

* Create keymap.c

* Create rules.mk

* Add files via upload

* Update readme.md

* Update readme.md

* Update readme.md

* Update config.h

* Update 10bleoledhub.h

* Update 10bleoledhub.c

* Update info.json

* Update keymap.c

* Update keymap.c

* Rename glcdfonr.c to glcdfont.c

* Update config.h

* Update config.h

* Update config.h

* Update rules.mk

* Update 10bleoledhub.c

* Update 10bleoledhub.h

* Update info.json

* Update config.h

* Update rules.mk

* Update keymap.c

* Update keymap.c

* Update glcdfont.c

* Update keyboards/10bleoledhub/rules.mk

* Update keyboards/10bleoledhub/keymaps/via/keymap.c

* Update keyboards/10bleoledhub/keymaps/default/keymap.c

* Update keyboards/10bleoledhub/config.h

* Update keyboards/10bleoledhub/config.h

* Update keyboards/10bleoledhub/10bleoledhub.h

* Create readme.md

* Create rules.mk

* Create latin47ble.h

* Create latin47ble.c

* Create info.json

* Create config.h

* Create keymap.c

* Create rules.mk

* Create keymap.c

* Update keymap.c

* Update keyboards/latin47ble/keymaps/default/keymap.c

* Update keymap.c

* Update keyboards/latin47ble/keymaps/via/keymap.c

* Update keyboards/latin47ble/rules.mk

* Update keyboards/latin47ble/rules.mk

* Update keyboards/latin47ble/rules.mk

* Update latin47ble.h

* Update latin47ble.c

* Update latin47ble.h

* Update latin47ble.c

* Update keymap.c

* Update keymap.c

* Update config.h

* Update keyboards/latin47ble/config.h

* Update keyboards/latin47ble/config.h

* Update keyboards/latin47ble/config.h

* Update keyboards/latin47ble/config.h

* Update keyboards/latin47ble/keymaps/via/keymap.c

* Update keyboards/latin47ble/rules.mk

* Delete info.json

* Update readme.md

* Update keymap.c

* Update keymap.c

* Update keyboards/latin47ble/config.h

* Update keyboards/latin47ble/config.h

* Update keyboards/latin47ble/keymaps/default/keymap.c

* Update keyboards/latin47ble/latin47ble.c

* Update keyboards/latin47ble/latin47ble.h

* Update keyboards/latin47ble/keymaps/via/keymap.c

* Update keymap.c

* Update keymap.c

* Update latin47ble.h

* Update keymap.c

* Update keymap.c

* Update keymap.c

* Update keymap.c

* Update keyboards/latin47ble/keymaps/default/keymap.c

* Update keyboards/latin47ble/keymaps/default/keymap.c

* Update keyboards/latin47ble/latin47ble.h

* Update keyboards/latin47ble/keymaps/default/keymap.c

* Update keyboards/latin47ble/keymaps/via/keymap.c

* Update keyboards/latin47ble/rules.mk
2020-12-06 09:37:32 -08:00
Joel Challis 8d6ad23b09 CI: Add workflow for tagging essential modified files (#7384)
* Add workflow for tagging essential modified files

* Update inline with recent actions

* align rules to labeler

* Update .github/workflows/auto_tag.yaml
2020-12-06 12:54:08 +00:00
MechMerlin a6a1289003 Revert back to the old matrix (Take the blue pill) (#10568)
* revert back to the old matrix.

* apparently I can't count, J is the 19th not the 20th column
2020-12-06 17:38:46 +11:00
Wilba 644dd9c388 Added WT60-G (#10876) 2020-12-06 17:31:41 +11:00
Jacob Jerrell 3076f86dc1 Bocaj - Third Annual Refactor (Redux) (#10295)
* Reset everything to upstream, reapply Bocaj changes

* Bocaj - address PR comments

* Just in time changes

* Bocaj - Several adjustments after using the layout for a while
2020-12-06 17:30:27 +11:00
Xelus22 6b1f96dca8 Update is31fl3731-simple (#7610)
* update simple

* Update is31fl3731-simple.c
2020-12-06 17:18:02 +11:00
c59f87a5d7 add definition WS2812_BYTE_ORDER to fix RGB LED issues (#10184)
* add define for WS2812B-2020 to fix RGB issues

* update driver doc

* add WS2812_BYTE_ORDER definition to correct RGB byte issues

* add definition variable thing

* update per PR request

* update per PR reqs

* update per PR request

* inital changes

* move defines to color.h and add rgbw incase

* Update docs/ws2812_driver.md

Co-authored-by: Ryan <[email protected]>

Co-authored-by: hineybush <[email protected]>
Co-authored-by: Xelus22 <[email protected]>
Co-authored-by: Ryan <[email protected]>
2020-12-06 17:15:48 +11:00
r-pufky 08bf9f9e74 Add definitions for RGB off/black. (#11132) 2020-12-06 17:10:58 +11:00
XScorpion2 cba76092eb Added OLED Initialized checks (#11129) 2020-12-06 12:53:47 +11:00
Dimitris PapavasiliouandDimitris Papavasiliou 5cf70f3993 Fix error handling in SPI master. (#11122)
Co-authored-by: Dimitris Papavasiliou <[email protected]>
2020-12-06 12:50:02 +11:00
Joel Challis 54b932e844 Initial Nightingale Studios Hailey support (#11116)
* Initial Nightingale Studios Hailey support

* Add info.json

* Fix bootmagic jump

* Add missing header

* Update default keymap
2020-12-05 21:48:02 +00:00
Alexander Dergachev 9971caa632 Add a custom keymap for Torn keyboard (#11017) 2020-12-05 22:14:50 +11:00
Ryan 15faffacf4 Omit serial number if not defined (#11104) 2020-12-05 21:14:19 +11:00
Sergey Omelchenko e3888281f4 Fix missing define to map rgb_matrix function set to rgblight. (#11084) 2020-12-05 17:00:58 +11:00
Evy Dekkers 1e7661651c add nt750 (#11091) 2020-12-05 16:45:59 +11:00
Nick Brassel f05b1b54a9 Add default early-init bootloader to F042/F072. (#11120) 2020-12-04 22:03:16 +11:00
Borja López JiménezandJoel Challis 59832e7654 [Keyboard] Added taleguers75 rev1 keyboard (#11052)
* Added taleguers75 rev1 keyboard

* Apply suggestions from code review

Co-authored-by: Joel Challis <[email protected]>

* Fixed VIA keymap

Co-authored-by: Joel Challis <[email protected]>
2020-12-03 20:59:41 -08:00
Andrew KannanandJoel Challis 0f086df89f Allow APM32 MCUs on certain CannonKeys PCBs (#10899)
* Allow APM32 MCUs on certain CannonKeys PCBs

* another one

* Update DFU suffix args

* missed one

* Apply suggestions from code review

Co-authored-by: Joel Challis <[email protected]>

Co-authored-by: Joel Challis <[email protected]>
2020-12-03 18:22:05 -08:00
James Young 6ab0a6e796 Hotfix for #11106 (#11118)
* Hotfix for #11106: Rework LAYOUT_alice support; add LAYOUT_alice_split_bs

Accidentally missed backwards compatibility on the sneakbox/aliceclone in #11106, which broke stanrc85's Community Layout keymap.

* sneakbox/aliceclone: move 2u Backspace to column 6
2020-12-03 18:17:15 -08:00
bbrfkrandRyan c1dc676d28 [Keyboard] add scatter42 by bbrfkr (#10893)
* add new keyboard scatter42 by bbrfkr

* mod info.json to work

* mod info.json

* mod readme

* Update keyboards/scatter42/keymaps/default/keymap.c

Co-authored-by: Ryan <[email protected]>

* Update keyboards/scatter42/keymaps/default/keymap.c

Co-authored-by: Ryan <[email protected]>

* Update keyboards/scatter42/scatter42.h

Co-authored-by: Ryan <[email protected]>

* Update keyboards/scatter42/config.h

Co-authored-by: Ryan <[email protected]>

Co-authored-by: Ryan <[email protected]>
2020-12-03 18:08:56 -08:00
James Young 138c3e7042 Rework LAYOUT_alice support; add LAYOUT_alice_split_bs (#11106)
* Add LAYOUT_alice support: fallacy

* Add LAYOUT_alice support: kb_elmo/sesame

* Add LAYOUT_alice support: cheshire/curiosity

* Add LAYOUT_alice support: evyd13/wonderland

* Add LAYOUT_alice support: mechlovin/adelais

* Update LAYOUT_alice support: projectkb/alice

The PR that added Alice community layout support for the projectkb/alice/rev2 simultaneously broke support for every other keyboard that supported LAYOUT_alice.

This commit partially reverts the offending PR. `LAYOUT_alice` for the projectkb/alice has been renamed to `LAYOUT_alice_split_bs`, and a correct 65-key `LAYOUT_alice` has been added.

Additionally, the `LAYOUTS` rule has been moved to keyboard level as the layout macros are shared between rev1 and rev2 boards, which means the layout options are the same for both revisions.

* Update ramonimbao/aelith info.json

Keyboard source was already correct to support LAYOUT_alice, but the layout tree was missing from info.json.

* Fork `alice` Community Layout...

... into Standard and Split Backspace versions

Also updates stanrc85's layout keymap to use 65 keys instead of the Split Backspace 66-key version.

* Update LAYOUT_alice support: sneakbox/aliceclone

Rework the sneakbox/aliceclone to use the Split Backspace Alice layout.

* Update LAYOUT_alice support: zoo/wampus

The layout macro that was `LAYOUT_alice` was 66 keys. This layout macro has been renamed to `LAYOUT_alice_split_bs`, and a 65-key `LAYOUT_alice` has been added.

Additionally, the 66-key macro has been rearranged to accept its keycodes in the intended order for Community Layout support.

* Update keyboards for `LAYOUT_alice_split_bs` support

* LAYOUT_alice_split_bs support: ergosaurus

* LAYOUT_alice_split_bs support: handwired/colorlice

* LAYOUT_alice(_split_bs) support: handwired/owlet60

* LAYOUT_alice_split_bs support: nightly_boards/alter/rev1

* LAYOUT_alice(_split_bs) support: sck/osa

* LAYOUT_alice_split_bs support: tgr/alice

* LAYOUT_alice(_split_bs) support: tkc/osav2

* LAYOUT_alice_split_bs support: xelus/valor/rev1
2020-12-03 14:07:41 -08:00
a5a65fb1e2 Add Via support to Plexus75 PCB (#11027)
* Add Via keymap

* Via Enable in Rules.mk

* Update config.h

added nasp before Plexus75 in PRODUCT to better follow Via naming convention

* Update keymap.c

changed KC_CTRL to KC_LCTL

* Update config.h

took out the manu repeat

* Update rules.mk

* Create rules.mk

changed location of rules.mk for supporting Via

* Apply suggestions from code review

Co-authored-by: Ryan <[email protected]>

* Update keyboards/plexus75/keymaps/via/rules.mk

Co-authored-by: Ryan <[email protected]>

* Apply suggestions from code review

Co-authored-by: Drashna Jaelre <[email protected]>

Co-authored-by: Ryan <[email protected]>
Co-authored-by: Drashna Jaelre <[email protected]>
2020-12-03 15:02:21 -05:00
a_p_u_r_o fc85ebecd4 [Keyboard] Fixed inconsistent MATRIX_COLS and MATRIX_COL_PINS: facew (#8115) 2020-12-04 06:38:26 +11:00
2989f9ce2b TKC TKL_A/B87: Initial support (#10943)
Co-authored-by: Joel Challis <[email protected]>
Co-authored-by: Ryan <[email protected]>
Co-authored-by: James Young <[email protected]>
2020-12-02 19:23:45 +00:00
Dustin Bosveld bcab02b654 [Keyboard] Fix issue with Kyria and RGB Light (#11070)
Add recommendation to default firmware https://docs.splitkb.com/hc/en-us/articles/360017633199-The-keyboard-behaves-erratically-after-changing-the-RGB-settings
2020-12-01 18:00:27 -08:00
Xelus22 3aae5300e2 Fix Valor default underglow (#11093) 2020-12-02 09:28:08 +11:00
Drashna Jaelre 41347cdcec [Keyboard] Fix compiler issues for handwired/6macro (#11098) 2020-12-01 19:55:32 +00:00
David Dai 33802ab5cd Add support for Drop + Ryloo Studio "Hello" M0110. (#11050) 2020-12-01 17:37:33 +00:00
Brandon ClaveriaandSwiftrax eaa8c18174 fix handwired/swiftrax/beegboy keymaps (#11071)
Co-authored-by: Swiftrax <[email protected]>
2020-12-01 22:49:52 +11:00
Brandon ClaveriaandSwiftrax 3a77ef5fa3 fix handwired/swiftrax/bebol keymaps (#11072)
Co-authored-by: Swiftrax <[email protected]>
2020-12-01 22:49:20 +11:00
Felix Jen 1124e51b11 Moved default LALT and LWIN for BKS65 (#11087) 2020-12-01 22:37:02 +11:00
c7dab4bb25 Adding bootleg and waffling60 rev b (#10846)
Co-authored-by: Ryan <[email protected]>
Co-authored-by: James Young <[email protected]>
Co-authored-by: Drashna Jaelre <[email protected]>
2020-12-01 22:23:58 +11:00
André Silva cc08e3082e nix-shell: add milc dependency (#11086) 2020-11-30 21:03:03 +00:00
Desp-KeyandRyan 02fb0de59b Added VIA keymap to YMDK bface keyboard (#11002)
Co-authored-by: Ryan <[email protected]>
2020-11-30 20:19:21 +00:00
Zach White 8724a70c4c Reduce travis load by replacing an exclusive grep with an inclusive grep (#10964)
* add -n to avoid compiling

* switch to an include rather than exclude strategy
2020-11-30 11:19:44 -08:00
XScorpion2 485e4524f4 Fix int wrapping for timer_expired macros and use MAX defines for consistency and clarity (#10996) 2020-11-30 21:18:19 +11:00
ojthetiny ce91dd4bf3 [Keyboard] Add edc40 keyboard (#11021)
* Re-adding edc40 keyboard branch/files

* Update keymap.c

* add default keymap for edc40

* removed redundant keymap

* added custom keymap for edc40

* fixed false update to settings.json

* fixed false update to settings.json

* added newline to info.json

* Update keyboards/edc40/config.h

* Update keyboards/edc40/readme.md

* Update keyboards/edc40/rules.mk

* Update rules.mk

* Update keyboards/edc40/info.json

* Update info.json

* Update info.json

* Update keyboards/edc40/config.h

* Update keyboards/edc40/info.json

* Update keyboards/edc40/readme.md

* Update keyboards/edc40/keymaps/default/keymap.c
2020-11-30 02:00:55 -08:00
MechMerlin 5909c243d4 KBD67 Rev2 VIA: Increase layer count from 2 to 4 (#11039) 2020-11-30 05:05:46 +11:00
Anand Babu (AB) PeriasamyandAnand Babu (AB) Periasamy 67976da039 map reset key to the correct location (#11037)
Co-authored-by: Anand Babu (AB) Periasamy <twitter.com/abperiasamy>
2020-11-30 05:04:52 +11:00
Felix Jen 05ac139a29 Updated README name (#11033) 2020-11-29 17:52:22 +00:00
James Young 81164c1663 Cozykeys Speedo Configurator fix (#11058)
* Cozykeys Speedo Configurator fix

Outgoing codebase worked when compiled locally, but not from QMK Configurator because its API requires an exact directory structure.

* fix make commands in the readme
2020-11-29 00:59:25 +00:00
James Young c66df16644 2020 November 28 Breaking Changes Update (#11053)
* Branch point for 2020 November 28 Breaking Change                                                

* Remove matrix_col_t to allow MATRIX_ROWS > 32 (#10183)                                           

* Add support for soft serial to ATmega32U2 (#10204)                                               

* Change MIDI velocity implementation to allow direct control of velocity value (#9940)            

* Add ability to build a subset of all keyboards based on platform.                                

* Actually use eeprom_driver_init().                                                               

* Make bootloader_jump weak for ChibiOS. (#10417)                                                  

* Joystick 16-bit support (#10439)                                                                 

* Per-encoder resolutions (#10259)                                                                 

* Share button state from mousekey to pointing_device (#10179)                                     

* Add hotfix for chibios keyboards not wake (#10088)                                               

* Add advanced/efficient RGB Matrix Indicators (#8564)                                             

* Naming change.                                                                                   

* Support for STM32 GPIOF,G,H,I,J,K (#10206)                                                       

* Add milc as a dependency and remove the installed milc (#10563)                                  

* ChibiOS upgrade: early init conversions (#10214)                                                 

* ChibiOS upgrade: configuration file migrator (#9952)                                             

* Haptic and solenoid cleanup (#9700)                                                              

* XD75 cleanup (#10524)                                                                            

* OLED display update interval support (#10388)                                                    

* Add definition based on currently-selected serial driver. (#10716)                               

* New feature: Retro Tapping per key (#10622)                                                      

* Allow for modification of output RGB values when using rgblight/rgb_matrix. (#10638)             

* Add housekeeping task callbacks so that keyboards/keymaps are capable of executing code for each main loop iteration. (#10530)

* Rescale both ChibiOS and AVR backlighting.                                                       

* Reduce Helix keyboard build variation (#8669)                                                    

* Minor change to behavior allowing display updates to continue between task ticks (#10750)        

* Some GPIO manipulations in matrix.c change to atomic. (#10491)                                   

* qmk cformat (#10767)                                                                             

* [Keyboard] Update the Speedo firmware for v3.0 (#10657)                                          

* Maartenwut/Maarten namechange to evyd13/Evy (#10274)                                             

* [quantum] combine repeated lines of code (#10837)                                                

* Add step sequencer feature (#9703)                                                               

* aeboards/ext65 refactor (#10820)                                                                 

* Refactor xelus/dawn60 for Rev2 later (#10584)                                                    

* add DEBUG_MATRIX_SCAN_RATE_ENABLE to common_features.mk (#10824)                                 

* [Core] Added `add_oneshot_mods` & `del_oneshot_mods` (#10549)                                    

* update chibios os usb for the otg driver (#8893)                                                 

* Remove HD44780 References, Part 4 (#10735)                                                       

* [Keyboard] Add Valor FRL TKL (+refactor) (#10512)                                                

* Fix cursor position bug in oled_write_raw functions (#10800)                                     

* Fixup version.h writing when using SKIP_VERSION=yes (#10972)                                     

* Allow for certain code in the codebase assuming length of string. (#10974)                       

* Add AT90USB support for serial.c (#10706)                                                        

* Auto shift: support repeats and early registration (#9826)                                       

* Rename ledmatrix.h to match .c file (#7949)                                                      

* Split RGB_MATRIX_ENABLE into _ENABLE and _DRIVER (#10231)                                        

* Split LED_MATRIX_ENABLE into _ENABLE and _DRIVER (#10840)                                        

* Merge point for 2020 Nov 28 Breaking Change
2020-11-28 12:02:18 -08:00
rainsff 15385d4113 rainkeeb info.json fix (#11048) 2020-11-27 21:10:10 -08:00
Drashna Jaelre 16d55b14b7 [Docs] Add VBUS hack for teensys (#10986) 2020-11-27 21:03:31 -08:00
rainsffandridingqwerty c41c8ff780 Add rainkeeb keyboard (#10875)
* Add rainkeeb

Add support for rainkeeb

* gpl license added

* updated

* Apply suggestions from code review

Co-authored-by: ridingqwerty <[email protected]>

* Apply suggestions from code review

Co-authored-by: ridingqwerty <[email protected]>

* Update info.json

* via keymap added

* updated keymap and .h to work properly

* fixed oled code oops

Co-authored-by: ridingqwerty <[email protected]>
2020-11-27 13:04:56 -05:00
Ryan c21d5a0973 Refactor qmk_install.sh (#10681) 2020-11-26 14:37:54 +00:00
Ryan 3afe0ea9b9 ST7565 tidyup (#10907) 2020-11-26 23:44:17 +11:00
rateandJoel Challis 1c0e8a6bb4 Add keyboard PistachioMacroPad (#10980)
Co-authored-by: Joel Challis <[email protected]>
2020-11-26 23:16:34 +11:00
jackytrabbit 10d9e8ed37 Add VIA Support for Dimple Plus (#11026)
Add VIA Support for Dimple Plus
2020-11-26 12:15:33 +00:00
d9613e6a33 [Keyboard] CapsUnlocked CU65 (#11006)
* CapsUnlocked CU65

* Remove spurious in 65_ansi keymap

* Fix key next to Enter in 65_iso

* Reviewed fixes for CU65

Config, layout, copyright, build rules and documentation tweaks

Co-authored-by: Joel Challis <[email protected]>

* KC_NUBS not KC_NUSH on the bottom row

* K104 is 2U backspace

* Small info.json and config.h tweaks

Co-authored-by: Ryan <[email protected]>

Co-authored-by: Joel Challis <[email protected]>
Co-authored-by: Ryan <[email protected]>
2020-11-25 14:08:38 -08:00
Wilba 9c2cfe5c27 [Keyboard] Add wilba.tech WT65-H1 (#10880)
* Added WT65-H1

* Fixed LAYOUT_all()

* Update keyboards/wilba_tech/wt65_h1/info.json

* Update keyboards/wilba_tech/wt65_h1/keymaps/default/keymap.c

* Update keyboards/wilba_tech/wt65_h1/keymaps/default/keymap.c

* Update keyboards/wilba_tech/wt65_h1/keymaps/default/keymap.c

* Update keyboards/wilba_tech/wt65_h1/keymaps/default/keymap.c

* Update keyboards/wilba_tech/wt65_h1/rules.mk

* Update keyboards/wilba_tech/wt65_h1/wt65_h1.h
2020-11-25 13:26:58 -08:00
pcurt854 f98e983141 Added pcurt854 keymap to Preonic keyboard (#10911) 2020-11-25 19:04:55 +00:00
Yoichiro Tanaka feae8f2980 VIA support for Lunakey Mini keyboard. (#11014) 2020-11-25 18:55:54 +00:00
J.FlanaganandRyan 35b329052c [Keyboard] Add Viktus Styrka (#10982)
* Initial Styrka Commit

Initial commit of basic working firmware.

- has basic 6.25u spacebar and fullsize backspace support in default keymap
- has basic 6.25u spacebar and split backspace support in split_bs keymap
- beginning work for via keymap (not complete)

* Viktus Styrka Update 1

First edit update for Viktus Styrka

- Corrected LAYOUT macros
- Updated keymaps
- Updated info.json to match LAYOUT macros
- Added and updated VIA keymap
- Added and updated ALL keymap
- Removed unused features from config
- Added more detailed board info to main readme

* Update info.json

Update info.json - missing end }

* Update to files in initial commit

As requested, changes made to:

- styrka.c
- rules.mk
- split_bs/keymap.c
- all/keymap.c
- info.json
- config.h

* Update keyboards/viktus/styrka/rules.mk

Co-authored-by: Ryan <[email protected]>

Co-authored-by: Ryan <[email protected]>
2020-11-25 10:48:12 -08:00
Felix Jen e8a65baf41 [Keyboard] Added Phantom Keyboard by Lucid (#10988)
* Added upcoming Phantom keyboard from Lucid

* syntax error

* updated layout name
2020-11-25 10:36:49 -08:00
dsanchezsecoandDrashna Jaelre d82e002737 Added VIA keymap to punk75 keyboard (#10927)
Co-authored-by: Drashna Jaelre <[email protected]>
2020-11-25 18:27:17 +00:00
c78ef391dc Boardrun Classic & Bizarre layouts (replaces PR 10934) (#10990)
Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Erovia <[email protected]>
Co-authored-by: Rossman360 <[email protected]>
Co-authored-by: Luke <[email protected]>
2020-11-25 18:24:58 +00:00
1bf657be41 [Keymap] Updates - Unikorn/Curiosity/Prime_E/Ferris/Corne (#10925)
* update keymap for unikorn

* add new map

* update keymap

* update keymap

* update map

* update the current keymap

* update keymap so it accounts for mouse keys as well

* add extra control and shift, for when we need to use the other keys

* get me square and curly braces

* remove unused macros

* update these changes so far

* update ilpse keymap

* rmove a layer and simplify my layers a bit

* I think there's a working keymap now for the corne. let's leave this here.

* I thought maybe that helped? but who knows

* save changes made so far

* update madhatter keymap to match what I want

* switch to use lcmd for main alt

* update my curiosity keymap

* make curiosity via enabled

* add via keymap

* Update keyboards/crkbd/keymaps/madhatter/keymap.c

Co-authored-by: Drashna Jaelre <[email protected]>

* Update keyboards/crkbd/keymaps/madhatter/keymap.c

Co-authored-by: Drashna Jaelre <[email protected]>

* Update keyboards/crkbd/keymaps/madhatter/keymap.c

Co-authored-by: Drashna Jaelre <[email protected]>

* Update keyboards/crkbd/keymaps/madhatter/keymap.c

Co-authored-by: Drashna Jaelre <[email protected]>

* Update keyboards/primekb/prime_e/keymaps/madhatter/keymap.c

Co-authored-by: Drashna Jaelre <[email protected]>

* Update keyboards/crkbd/keymaps/madhatter/keymap.c

Co-authored-by: Drashna Jaelre <[email protected]>

* stick to enum

* add bootmagic stuff and update keymap

* switch to bootmagic lite

* fix typo

* cleanup for writing to LED

* consistency

* fix led pins

* Update keyboards/crkbd/keymaps/madhatter/keymap.c

Co-authored-by: Ryan <[email protected]>

* Update keyboards/crkbd/keymaps/madhatter/keymap.c

Co-authored-by: Ryan <[email protected]>

* Update keyboards/crkbd/keymaps/madhatter/keymap.c

Co-authored-by: Ryan <[email protected]>

* Update keyboards/crkbd/keymaps/madhatter/keymap.c

Co-authored-by: Ryan <[email protected]>

* Update keyboards/crkbd/keymaps/madhatter/keymap.c

Co-authored-by: Ryan <[email protected]>

* Update keyboards/crkbd/keymaps/madhatter/keymap.c

Co-authored-by: Ryan <[email protected]>

* Update keyboards/crkbd/keymaps/madhatter/keymap.c

Co-authored-by: Ryan <[email protected]>

* Update keyboards/crkbd/keymaps/madhatter/keymap.c

Co-authored-by: Ryan <[email protected]>

* Update keyboards/crkbd/keymaps/madhatter/keymap.c

Co-authored-by: Ryan <[email protected]>

* Update keyboards/crkbd/keymaps/madhatter/keymap.c

Co-authored-by: Ryan <[email protected]>

* fix build issue

* Update keyboards/crkbd/keymaps/madhatter/keymap.c

Co-authored-by: Ryan <[email protected]>

* Update keyboards/crkbd/keymaps/madhatter/keymap.c

Co-authored-by: Ryan <[email protected]>

* Update keyboards/crkbd/keymaps/madhatter/keymap.c

Co-authored-by: Ryan <[email protected]>

* Update keyboards/crkbd/keymaps/madhatter/keymap.c

Co-authored-by: Ryan <[email protected]>

* Update keyboards/crkbd/keymaps/madhatter/keymap.c

Co-authored-by: Ryan <[email protected]>

* Update keyboards/crkbd/keymaps/madhatter/keymap.c

Co-authored-by: Ryan <[email protected]>

* Update keyboards/crkbd/keymaps/madhatter/keymap.c

Co-authored-by: Ryan <[email protected]>

* Update keyboards/crkbd/keymaps/madhatter/keymap.c

Co-authored-by: Ryan <[email protected]>

* Update keyboards/crkbd/keymaps/madhatter/keymap.c

Co-authored-by: Ryan <[email protected]>

Co-authored-by: Khader Syed <[email protected]>
Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Ryan <[email protected]>
2020-11-25 10:09:15 -08:00
r-pufky 8897ab9b11 [Keymap] Add personal massdrop/ctrl:r-pufky keymap. (#10887)
* Add personal massdrop/ctrl:r-pufky keymap.

* Added personal keymap per: https://docs.qmk.fm/#/contributing?id=keymaps

* Update massdrop/ctrl:r-pufky per review.

* Trimmed config.h
* Remove rules.mk
* Add copyright header to keymap.c
* Rename README.md to readme.md

* Remove files/lines per review.

* Removed keyboard-layout-editor.com json layouts.
* Removed keymap_config line.
2020-11-25 10:05:01 -08:00
50611bd814 [Keyboard] Fixes fox idb_60 keyboard (#10827)
* Fixed VIA keymap build warning on gcc 10.2.0, Fixed misleading LED function names, Fixed formatting

* Fix: Allow layer LED indicators to be overriden on the keymap level

* Implemented suggested change from led_set_kb callback to led_update_kb callback

* Apply suggestions from code review

Co-authored-by: Ryan <[email protected]>

* Update keyboards/idb/idb_60/idb_60.c

Co-authored-by: Drashna Jaelre <[email protected]>

Co-authored-by: Ryan <[email protected]>
Co-authored-by: Drashna Jaelre <[email protected]>
2020-11-25 09:10:42 -08:00
bt66tech 86b0acbae0 [Keyboard] add bt66tech60 handwired (#10867)
* Add files via upload

add handwired bt66tech keyboard

* Update info.json

* Update rules.mk

* Update info.json

* Update config.h

change #define DESCRIPTION

* Update bt66tech60.c

remove #include "bt66tech.h"

* Update config.h

remove #define DESCRIPTION A handwired 60% keyboard.

* Update keymap.c

remove \ and 
// Defines the keycodes used by our macros in process_record_user
enum custom_keycodes {
    QMKBEST = SAFE_RANGE,
    QMKURL
};

* Update readme.md

fill description

* Update rules.mk

apply suggestion

* Update keymap.c

remove bool process_record_user(uint16_t keycode, keyrecord_t *record) .....

* Update keymap.c

remove enter inline 25

* Update readme.md

remove *

* Update bt66tech60.c

remove all and add #include "bt66tech60.h"

* Update keymap.c

* Update rules.mk

remove enter

* Update info.json

chenge LAYOUT to LAYOUT_60_ansi

* Update readme.md

* Update rules.mk

add LAYOUTS = 60_ansi

* Update rules.mk

when add LAYOUTS = 60_ansi the pullrequest check say error so i'm remove it

* Update rules.mk

add LAYOUTS = 60_ansi

* Update rules.mk
2020-11-25 09:00:03 -08:00
Matthew DiasandJoel Challis 24a741649d [Keyboard] Add minim keyboard (#10970)
* Create minim firmware

* Cleanup and add configurator support

* PR Checklist Items

* Delete keymap.c

* Apply suggestions from code review

Co-authored-by: Joel Challis <[email protected]>

Co-authored-by: Joel Challis <[email protected]>
2020-11-25 08:57:58 -08:00
Felix Jen 0a9476bc2a [Keyboard] Added BKS65 Bolsa Supply PCB (#10933)
* Copied B65 and updated matrix

* Updated Caps LED Pin

* Updated most of the FW

* Updated errant names from Bolsa65 copy

* Keymap updates

* Moved to config.h LED indicators. Tested on PCB for functionality
2020-11-25 08:53:06 -08:00
3fadfb565d add dcompact layout for minivan (#10951)
Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Joel Challis <[email protected]>
Co-authored-by: Dan Herrera <[email protected]>
2020-11-24 20:11:28 +00:00
66b5c5eff2 Add M4cs Keymap for dekunukem/duckyPad (#10900)
* Add Keymap

* Fix Media Keys

* Add Keymap ASCII and Clean Up

* Add Readme

* Add GPL Headers, Clean Up Code Based on @drashna Suggestions

* Remove unnecessary include

* Add Layout for info.json and Readme.md

* Fix Layout for info.json

* Fix #endif Error

* Remove Tapping Term

* Add Default Keymap

* Add comments, fix readmes, clean up

* Fix README formatting

* Fix Timeout

* Fix I2C Rules

* Fix Comment Formatting, Multiline Breaks

* Add Sleep/Backlight Rules

* Clean Up README

* Clean Up Rules

* Fix Comments

* Add Pragmas

Co-authored-by: M4cs <[email protected]>
Co-authored-by: Max <[email protected]>
2020-11-24 13:46:23 +00:00
nopunin10did 6e97a4c8b9 Railroad fix (#10935)
* Fix Railroad build issues

* Update keyboards/nopunin10did/railroad/rev0/rules.mk

* Update keyboards/nopunin10did/railroad/rev0/rev0.h

* Add extra copy of readme to the rev0 folder

* Update keyboards/nopunin10did/railroad/rev0/readme.md
2020-11-24 01:59:22 -08:00
mechlovinandvuhopkep 429474d1c3 refactor adelais en ciel rev.2, mechlovin9 (#10930)
Co-authored-by: vuhopkep <[email protected]>
2020-11-23 19:47:01 +00:00
Danilo de Klerk 6f9934c669 Add rules.mk for ddeklerk split_3x6_3 keymap (#11008)
* Add rules.mk

In order for the media controls to work, a rules.mk file was necessary.
2020-11-22 23:57:32 -08:00
Yoichiro Tanaka c84650a147 Add a new keyboard: yoichiro/lunakey_mini (#10958)
* Add a new keyboard: yoichiro/lunakey_mini

* Modify the VENDOR and PRODUCT IDs.

* Remove unnecessary EOL characters.

* Remove unnecessary modified characters.

* Update the layer definition more simple.

* Change the product name.

* Change the LAYOUT name (append `_split_3x6_4`) and change keys order in info.json file.
2020-11-22 21:25:17 +00:00
30afa1ccd3 [Keyboard] Add Wampus (#10991)
* Configure new keyboard zoo/wampus

* Apply suggestions from code review

Update LED pins to defined defaults

Co-authored-by: Joel Challis <[email protected]>

* Apply suggestions from code review

- Remove unused layers from default.
- Remove chibios patch comment

Co-authored-by: Ryan <[email protected]>

Co-authored-by: Joel Challis <[email protected]>
Co-authored-by: Ryan <[email protected]>
2020-11-22 21:21:51 +00:00
Joel Challis b8443863c0 Remove references to ch-bootloader-jump.patch (#10998) 2020-11-22 21:12:30 +00:00
Zach White c731628946 identify the qmk-bot 2020-11-22 08:07:45 -08:00
Joel Challis ca9edc5fe3 Fix failed develop updates within CI (#11001)
* Fix inverted logic

* skip locked instead of fail
2020-11-22 07:50:14 -08:00
Mateusz Urbanek a952bf2d31 [Keyboard] Added Vagrant-10 keyboard (#10048)
* Initial commit for Vagrant-10

* Initial commit for Vagrant-10

* customized layout

* Fully working QMK config with default keymap

* Update info.json

* Update info.json

* Update readme.md

* prep

* fixed pull request issues

* Update keyboards/vagrant_10/keymaps/default/keymap.c

* Update keyboards/vagrant_10/keymaps/default/keymap.c

* Update keyboards/vagrant_10/vagrant_10.h

* Update keyboards/vagrant_10/vagrant_10.h

* Update keyboards/vagrant_10/config.h

* Update keyboards/vagrant_10/config.h

* Update keyboards/vagrant_10/rules.mk

* Update keyboards/vagrant_10/readme.md

* Update keyboards/vagrant_10/config.h

* Update keyboards/vagrant_10/info.json

* Update keyboards/vagrant_10/info.json

* Update keyboards/vagrant_10/vagrant_10.h

* Update keyboards/vagrant_10/keymaps/default/keymap.c

* Update keyboards/vagrant_10/config.h

* Update keyboards/vagrant_10/config.h

* Update keyboards/vagrant_10/readme.md

* Update keyboards/vagrant_10/config.h

* License header

* License header

* License header

* License header.

* Update keyboards/vagrant_10/config.h

* Update keyboards/vagrant_10/config.h

* Update keyboards/vagrant_10/config.h

* Update keyboards/vagrant_10/config.h

* Update keyboards/vagrant_10/vagrant_10.h
2020-11-21 23:42:58 -08:00
Zach White 44d1b2e717 push the API data for develop as well (#10852) 2020-11-21 20:06:33 +00:00
Zach White 8ddbb19df1 Rebase develop after a master push (#10812)
* rebase develop after a master push

* limit this to qmk/qmk_firmware

* change to a merge strategy

* GITHUB_TOKEN isn't needed

* check for .locked in develop

* break up into more steps
2020-11-21 11:48:13 -08:00
Joel Challis 95fd2ce81a Refactor to use led config - Part 4 (#10967)
* Refactor to use led config

* Refactor to use led_update_kb
2020-11-21 19:11:50 +00:00
Joel Challis 23222625c2 Refactor to use led config - Part 5 (#10975)
* Refactor to use led config

* Refactor to use led config

* Refactor to use led config
2020-11-21 19:11:24 +00:00
jonathanandRyan 4368611bfd Add layout_all to xd96 (#10913)
Co-authored-by: Ryan <[email protected]>
2020-11-21 19:06:55 +00:00
Wilba ccb15c2d29 [Keyboard] Added wilba.tech WT60-H1 (#10879)
* Added WT60-H1

* Update keyboards/wilba_tech/wt60_h1/info.json

* Update keyboards/wilba_tech/wt60_h1/keymaps/default/keymap.c

* Update keyboards/wilba_tech/wt60_h1/keymaps/default/keymap.c

* Update keyboards/wilba_tech/wt60_h1/keymaps/default/keymap.c

* Update keyboards/wilba_tech/wt60_h1/keymaps/default/keymap.c

* Update keyboards/wilba_tech/wt60_h1/rules.mk

* Update keyboards/wilba_tech/wt60_h1/wt60_h1.h
2020-11-20 01:42:34 -08:00
Matthew Dias 628d4a91b9 Add JNAO Via keymap (#9917)
* Add JNAO Via keymap

* Enable more layouts for via

* Apply suggestions from code review

* Remove extra layer

* Add license
2020-11-19 14:04:55 -08:00
9454f98099 [Keyboard]Add X-Bows Nature Keyboard (#10869)
Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Erovia <[email protected]>
Co-authored-by: Ryan <[email protected]>
2020-11-19 19:32:57 +00:00
64572b5c4b Add Nines by Ungodly Design (#10931)
Co-authored-by: Ryan <[email protected]>
Co-authored-by: Erovia <[email protected]>
Co-authored-by: Joel Challis <[email protected]>
2020-11-19 19:30:52 +00:00
776d1adc76 add unsplit (#10892)
Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Erovia <[email protected]>
Co-authored-by: Swiftrax <[email protected]>
2020-11-19 19:29:43 +00:00
386cff8cf5 Add Launch Pad by Ungodly Design (#10952)
Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Ryan <[email protected]>
Co-authored-by: Erovia <[email protected]>
2020-11-19 19:28:53 +00:00
Drashna Jaelre e7497b3fba Add references for is_keyboard_left() (#10850)
* Add references for is_keyboard_left()

* Remove proto from bootmagic_lite.c
2020-11-18 16:50:32 -08:00
elijahblake 6dc2d5956f [Keymap] add massdrop/alt:pregame (#8953)
Pulled some functionality from the endgame keymap for the Drop Ctrl.

* very shortened version of the Endgame keymap

* fixed pictures

* fixed link

* fixed link

* fix files

* add GREEN RGB

* fixed GREEN RGB

* not supposed to be in my fork...

* wasn't supposed to be in my fork.

* I have fixed the layer 0 RGB Settings; you can now apply layer using "COLOR" in the layout template.

* I've renamed to pregame, fixed several files

* added Underglow RGB layout, changed def
ault RGB color

* fixed the color of the default profile like i want it

* Added IRL Photo

* Update keymap.c

disabled debugging.

* Update keymap.c

* Update config.h

* Update README.md

* Update keymap.h

* Changed some settings on rules for clean up.

* Changed some settings on rules for clean up.

* fixed some errors, cleaned things up

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Fixed changes recommended by Fauxpark

* Added changes recommended by fauxpark

* trying to fix my repo

* Still trying to fix merge issues

* changed to lowercase

* Delete reading.md

* Trying to rebase my repo

* stuck in rebase loop trying to fix local files and update

* updating readme file
2020-11-18 15:54:53 -08:00
Drashna Jaelre 88a783a8a7 [Keyboard] PloopyCo update and fixes (#10936)
This is based on feedback talking with crop_octagon about the device.  Future trackballs will ship with ATMEL DFU for simplicity.  This also includes some fixes and optimizations based on code review and tinkering on my own devices.
2020-11-18 23:20:29 +01:00
Ari Madian 3aef2bef8f Add basic OLED keymap for nullbitsco/nibble (#10912) 2020-11-18 21:33:49 +00:00
j-zero 078586b21a Update one_shot_keys.md (#10917)
MOD_RSFT doesn't work. See: https://github.com/qmk/qmk_firmware/issues/10901
2020-11-18 21:31:21 +00:00
dsanchezseco 7bdc41b025 Changed personal keymap punk75:dsanchezseco (#10928)
added a dvorak layer with a numpad in the center
2020-11-18 21:29:35 +00:00
yonatanzungerandYonatan Zunger 66d52d8cd2 Update the melody96:zunger keymap (#10888)
* Update the melody96/zunger layout to make typing Romance languages easier.

Move the combining accents to fn + (keys used by Mac OS for that purpose),
and move the fn key to be the one adjacent to the space bar, since one needs
to type combinations of that a lot more than one needs to type Greek letters
in normal use. (As determined by experiment)

Also clean up the comments.

Co-authored-by: Yonatan  Zunger <[email protected]>
2020-11-18 13:03:40 -08:00
MechMerlinandJoel Challis 0f8b0d971f VIA Support: E6V2 BMC editions (#10969)
* update readme with relevant PCB versioning

* Add VIA keymap to e6v2 LE BMC

* add via keymap

* Update keyboards/exclusive/e6v2/le_bmc/keymaps/via/keymap.c

Co-authored-by: Joel Challis <[email protected]>

* Update keyboards/exclusive/e6v2/oe_bmc/keymaps/via/keymap.c

Co-authored-by: Joel Challis <[email protected]>

Co-authored-by: Joel Challis <[email protected]>
2020-11-18 20:16:18 +00:00
gtips 3270cbeb46 [Keymap]Add and Update keymap for reviung34 (#10915) 2020-11-18 19:47:29 +00:00
Wilba ad9674c5af [Keyboard] Add wilba.tech WT80-G (#10878)
* Added WT80-G

* Fixed keyboard name in info.json
2020-11-18 11:45:44 -08:00
Wilba e4aadf2c05 [Keyboard] Add wilba.tech WT65-G (#10877) 2020-11-18 11:35:55 -08:00
Joel Challis f00402a2f3 Refactor to use led config - Part 3 (#10966)
* Refactor to use led config

* Refactor to use led config

* Refactor to use led config

* Refactor to use led config
2020-11-18 17:51:53 +00:00
stanrc85andDrashna Jaelre e1e13c53ac Add support for LAYOUT_alice to sneakbox pcb (#10914)
Co-authored-by: Drashna Jaelre <[email protected]>
2020-11-18 17:47:45 +00:00
1512e07817 Add support for keyboard 'DimplePlus' (#10881)
Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Ryan <[email protected]>
2020-11-18 17:43:44 +00:00
pastapojkenandRyan ad5cbe5982 Added new keyboard - nack (#10940)
Co-authored-by: Ryan <[email protected]>
2020-11-18 16:56:59 +00:00
Jack 58f2e0439e Add VIA Keymap for boardsource/microdox (#10932) 2020-11-17 19:23:27 +00:00
Joel Challis ddcb1794fa Refactor to use led config - Part 1 (#10905)
* Refactor to use led config

* Refactor to use led config

* Refactor to use led config

* Refactor to use led config

* Refactor to use led config
2020-11-17 17:06:30 +00:00
Joel Challis adfd34c451 Refactor to use led config - Part 2 (#10906)
* Refactor to use led config

* Refactor to use led config

* Refactor to use led config
2020-11-17 17:06:23 +00:00
Leon Anavi 3c156e130b [Keymap] ANAVI Macro Pad 8 fix kodi and default (#10727)
Improvements and bug fixes for the keymaps kodi and default for
ANAVI Macro Pad 8:

- Add space to the end of string "Active layer: " for better
  visibility on the mini I2C OLED display for both keymaps
- Replace "Main" with "Kodi" for the Kodi keymap
- Add comment with reference to Kodi documentation for the
  available shortcuts in this keymap

Signed-off-by: Leon Anavi <[email protected]>
2020-11-16 21:35:23 -08:00
Salicylic-acid3 10782789be [Keymap] Update for jisplit89 (#10859)
Some symbols were not as intended, so they were corrected.
2020-11-16 21:25:53 -08:00
RelocksandRyan cf3b683232 [Keyboard] bm16s - Added Via Support (#10863)
* Added Via Support and Keymap

Via Specific Keymap for BM16s along with correction of the Vendor and Product ID.

* Made adjustments for PR 10863

Made adjustments based on feedback from Pull request 10853 for qmk master pull request

* Additional update for PR 10853

Same description as previous commit.

* Update .vscode/settings.json

Updating based on commit suggestion.

Co-authored-by: Ryan <[email protected]>

Co-authored-by: Ryan <[email protected]>
2020-11-16 21:25:00 -08:00
bghullandbghull a8967778d4 [Keymap] Add user keymaps to qmk master (#10870)
* Create user keymaps

* Prepare user keymaps for PR

Co-authored-by: bghull <[email protected]>
2020-11-16 21:21:24 -08:00
Kosuke Adachi 503b762538 Refactor the crkbd/via keymap and fix OLED bugs (#10354)
* Refactor the crkbd/via keymap and fix OLED bugs

* Revert "Refactor the crkbd/via keymap and fix OLED bugs"

This reverts commit dc9db029fc6b077fc7600b49e920b755c522d100.

* Fix OLED display bugs

* Remove unused functions

* Remove uncessary the key logger

* Add new lines at end of file

* Remove unnecesary extern for is_master

* Remove extern is_master from rev1.h

* Remove ssd1306 from common dir because its the legacy lib

* Update default keymap based the via keymap

* Remove foostan keymap because it will be legacy

* Revert Remove unnecesary extern for is_master

* Remove unnecessary backslashes.
2020-11-16 21:18:45 -08:00
MechMerlin 88c09aa892 [Keyboard] Add Titan 60 (#10886)
* initial commit

* fix up some documentation

* titan60 firmware

* add supported layouts

* fixup default keymap

* fixup via keymap

* fixup default keymap

* some code cleanups
2020-11-16 21:14:59 -08:00
James Young 69bb9b7386 Fox Lab Time80: add Configurator layout data (#10950) 2020-11-16 19:21:52 -08:00
ojthetinyandridingqwerty f3394139de [Keyboard] Add Beatervan keyboard (#10939)
* Added Beatervan Keyboard

* added files for beatervan

* Update keyboards/beatervan/beatervan.h

Co-authored-by: ridingqwerty <[email protected]>

* Update keyboards/beatervan/keymaps/default/keymap.c

Co-authored-by: ridingqwerty <[email protected]>

* Update keyboards/beatervan/beatervan.h

Co-authored-by: ridingqwerty <[email protected]>

* Update keyboards/beatervan/info.json

Co-authored-by: ridingqwerty <[email protected]>

* Update keyboards/beatervan/keymaps/default/keymap.c

Co-authored-by: ridingqwerty <[email protected]>

* Update keyboards/beatervan/keymaps/oj/keymap.c

Co-authored-by: ridingqwerty <[email protected]>

* Update keyboards/beatervan/config.h

Co-authored-by: ridingqwerty <[email protected]>

* Update keyboards/beatervan/keymaps/default/keymap.c

Co-authored-by: ridingqwerty <[email protected]>

* Update keyboards/beatervan/keymaps/default/keymap.c

Co-authored-by: ridingqwerty <[email protected]>

* Update keyboards/beatervan/keymaps/default/keymap.c

Co-authored-by: ridingqwerty <[email protected]>

* Update keyboards/beatervan/keymaps/default/keymap.c

Co-authored-by: ridingqwerty <[email protected]>

* Update keyboards/beatervan/rules.mk

Co-authored-by: ridingqwerty <[email protected]>

* Update keyboards/beatervan/keymaps/oj/keymap.c

Co-authored-by: ridingqwerty <[email protected]>

* Update keyboards/beatervan/keymaps/oj/keymap.c

Co-authored-by: ridingqwerty <[email protected]>

* Update keyboards/beatervan/keymaps/oj/keymap.c

Co-authored-by: ridingqwerty <[email protected]>

* Update keyboards/beatervan/keymaps/oj/keymap.c

Co-authored-by: ridingqwerty <[email protected]>

* Delete config.h

* Delete config.h

* Update keymap.c

* Update beatervan.c

* Update beatervan.h

* Update config.h

* Update keymap.c

* Update keymap.c

Co-authored-by: ridingqwerty <[email protected]>
2020-11-16 18:12:10 -08:00
Danny 3e0789c961 BDN9: Fix encoder direction, add 3rd encoder for Rev. 1.3 support (#10883) 2020-11-16 19:02:43 -05:00
Geoffrey BOTINandgbotin 2ffac90c99 Fix typo causing redefined error in keymap_french_osx (#10962)
Co-authored-by: gbotin <[email protected]>
2020-11-17 09:27:09 +11:00
Takeshi ISHII e6a13e0b1c [Keymap] clean up helix:five_rows keymap (#10866)
* Makes the OLED driver used by the helix:five_rows keymap switchable.

* use TOP/drivers/oled/oled_driver.c
  `make HELIX=stdole helix:five_rows`
* use helix/local_drivers/ssd1306.c
  `make HELIX=oled helix:five_rows`

* Separated the OLED related code from keymap.c and moved it to oled_display.c.

* scan rate without OLED
  * make HELIX=verbose,dispoff,scan helix/rev2:five_rows
    use Helix original code
    text   data    bss    dec    hex   filename
    18880    58    235  19173   4ae5   .build/helix_rev2_five_rows.elf
    matrix scan frequency: 1590

  * make HELIX=verbose,dispoff,scan,sc helix/rev2:five_rows
    use split_common code
    text   data    bss    dec    hex   filename
    18554    40    231  18825   4989   .build/helix_rev2_five_rows.elf
    matrix scan frequency: 1202

* scan rate with helix/local_drivers/ssd1306.c
  * make HELIX=verbose,dispoff,scan,oled helix/rev2:five_rows
    use Helix original code
    text   data    bss    dec    hex   filename
    24048   196    342  24586   600a   .build/helix_rev2_five_rows.elf
    matrix scan frequency: 739

  * make HELIX=verbose,dispoff,scan,sc,oled helix/rev2:five_rows
    use split_common code
    text   data    bss    dec    hex   filename
    23750   176    338  24264   5ec8   .build/helix_rev2_five_rows.elf
    matrix scan frequency: 642

* scan rate with drivers/oled/oled_driver.c
  * make HELIX=verbose,dispoff,scan,stdole helix/rev2:five_rows
    use Helix original code
    text   data    bss    dec    hex   filename
    24590   210    798  25598   63fe   .build/helix_rev2_five_rows.elf
    matrix scan frequency: 293

  * make HELIX=verbose,dispoff,scan,sc,stdole helix/rev2:five_rows
    use split_common code
    text   data    bss    dec    hex   filename
    24290   190    794  25274   62ba   .build/helix_rev2_five_rows.elf
    matrix scan frequency: 277

* clean up helix/rev2/keymaps/five_rows/keymap.c

* update five_rows/oled_display.c

* update helix/rev2/keymaps/five_rows/keymap.c: remove LAYOUT_kc()

* Ported the keymap from helix/rev2:five_rows to helix/rev3_5rows:five_rows.

* update five_rows/oled_display.c

* add License comment
2020-11-17 07:26:44 +09:00
Cole Helbling aaea5e24b6 [Keyboard] YMDK NP21: correct numpad layout matrix (#10874)
I noticed that my KC_PPLS and KC_PENT keys weren't actually doing
anything. By looking at the ortho_6x4 layout, I guessed that maybe the
pins were incorrect and guessed the proper ones. Now, my numpad is fully
functional.
2020-11-16 13:45:45 -08:00
Erovia b337ba798e CLI: Udev related fixes and improvements (#10736) 2020-11-16 21:09:32 +00:00
2826 changed files with 66921 additions and 21501 deletions

No files matched your search

+33
View File
@@ -0,0 +1,33 @@
name: Essential files modified
on:
push:
branches:
- master
paths:
- quantum/**/*
- tmk_core/**/*
- drivers/**/*
- tests/**/*
- util/**/*
- platforms/**/*
- Makefile
- '*.mk'
jobs:
tag:
runs-on: ubuntu-latest
# protect against those who develop with their fork on master
if: github.repository == 'qmk/qmk_firmware'
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Bump version and push tag
uses: anothrNick/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
DEFAULT_BUMP: 'patch'
+42
View File
@@ -0,0 +1,42 @@
name: Update Develop API Data
on:
push:
branches:
- develop
paths:
- 'keyboards/**'
- 'layouts/community/**'
jobs:
api_data:
runs-on: ubuntu-latest
container: qmkfm/base_container
# protect against those who work in their fork on develop
if: github.repository == 'qmk/qmk_firmware'
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 1
persist-credentials: false
- name: Generate API Data
run: qmk generate-api
- name: Install rsync
run: |
apt-get update && apt-get install -y rsync
- name: Upload API Data
uses: JamesIves/[email protected]
with:
ACCESS_TOKEN: ${{ secrets.API_TOKEN_GITHUB }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
BRANCH: main
FOLDER: api_data/v1
CLEAN: true
GIT_CONFIG_EMAIL: [email protected]
REPOSITORY_NAME: qmk/qmk_keyboards_devel
TARGET_FOLDER: v1
+37
View File
@@ -0,0 +1,37 @@
name: Update develop after master merge
on:
push:
branches:
- master
jobs:
develop_update:
runs-on: ubuntu-latest
if: github.repository == 'qmk/qmk_firmware'
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Checkout develop
run: |
git fetch origin master develop
git checkout develop
- name: Check if branch locked
id: check_locked
uses: andstor/file-existence-action@v1
with:
files: ".locked"
- name: Update develop from master
if: steps.check_locked.outputs.files_exists == 'false'
run: |
git config --global user.name "QMK Bot"
git config --global user.email "[email protected]"
git merge origin/master
git push origin develop
+37
View File
@@ -0,0 +1,37 @@
name: Format Codebase
on:
push:
branches:
- master
jobs:
format:
runs-on: ubuntu-latest
container: qmkfm/base_container
# protect against those who develop with their fork on master
if: github.repository == 'qmk/qmk_firmware'
steps:
- uses: actions/checkout@v2
with:
token: ${{ secrets.API_TOKEN_GITHUB }}
- name: Install dependencies
run: |
apt-get update && apt-get install -y dos2unix
- name: Format files
run: |
bin/qmk cformat -a
bin/qmk pyformat
bin/qmk fileformat
- name: Commit files
uses: stefanzweifel/git-auto-commit-action@v4
with:
commit_message: Format code according to conventions for $GITHUB_SHA
commit_user_name: QMK Bot
commit_user_email: [email protected]
commit_author: QMK Bot <[email protected]>
-1
View File
@@ -19,7 +19,6 @@ addons:
- llvm-toolchain-trusty-7 - llvm-toolchain-trusty-7
packages: packages:
- diffutils - diffutils
- dos2unix
- clang-format-7 - clang-format-7
- libstdc++-7-dev - libstdc++-7-dev
script: script:
+27 -106
View File
@@ -68,71 +68,15 @@ PATH_ELEMENTS := $(subst /, ,$(STARTING_DIR))
# Initialize the path elements list for further processing # Initialize the path elements list for further processing
$(eval $(call NEXT_PATH_ELEMENT)) $(eval $(call NEXT_PATH_ELEMENT))
# This function sets the KEYBOARD; KEYMAP and SUBPROJECT to the correct
# variables depending on which directory you stand in.
# It's really a very simple if else chain, if you squint enough,
# but the makefile syntax makes it very verbose.
# If we are in a subfolder of keyboards
#
# *** No longer needed **
#
# ifeq ($(CURRENT_PATH_ELEMENT),keyboards)
# $(eval $(call NEXT_PATH_ELEMENT))
# KEYBOARD := $(CURRENT_PATH_ELEMENT)
# $(eval $(call NEXT_PATH_ELEMENT))
# # If we are in a subfolder of keymaps, or in other words in a keymap
# # folder
# ifeq ($(CURRENT_PATH_ELEMENT),keymaps)
# $(eval $(call NEXT_PATH_ELEMENT))
# KEYMAP := $(CURRENT_PATH_ELEMENT)
# # else if we are not in the keyboard folder itself
# else ifneq ($(CURRENT_PATH_ELEMENT),)
# # the we can assume it's a subproject, as no other folders
# # should have make files in them
# SUBPROJECT := $(CURRENT_PATH_ELEMENT)
# $(eval $(call NEXT_PATH_ELEMENT))
# # if we are inside a keymap folder of a subproject
# ifeq ($(CURRENT_PATH_ELEMENT),keymaps)
# $(eval $(call NEXT_PATH_ELEMENT))
# KEYMAP := $(CURRENT_PATH_ELEMENT)
# endif
# endif
# endif
define GET_KEYBOARDS
ifndef ALT_GET_KEYBOARDS
All_RULES_MK := $$(patsubst $(ROOT_DIR)/keyboards/%/rules.mk,%,$$(wildcard $(ROOT_DIR)/keyboards/*/rules.mk))
All_RULES_MK += $$(patsubst $(ROOT_DIR)/keyboards/%/rules.mk,%,$$(wildcard $(ROOT_DIR)/keyboards/*/*/rules.mk))
All_RULES_MK += $$(patsubst $(ROOT_DIR)/keyboards/%/rules.mk,%,$$(wildcard $(ROOT_DIR)/keyboards/*/*/*/rules.mk))
All_RULES_MK += $$(patsubst $(ROOT_DIR)/keyboards/%/rules.mk,%,$$(wildcard $(ROOT_DIR)/keyboards/*/*/*/*/rules.mk))
KEYMAPS_MK := $$(patsubst $(ROOT_DIR)/keyboards/%/rules.mk,%,$$(wildcard $(ROOT_DIR)/keyboards/*/keymaps/*/rules.mk))
KEYMAPS_MK += $$(patsubst $(ROOT_DIR)/keyboards/%/rules.mk,%,$$(wildcard $(ROOT_DIR)/keyboards/*/*/keymaps/*/rules.mk))
KEYMAPS_MK += $$(patsubst $(ROOT_DIR)/keyboards/%/rules.mk,%,$$(wildcard $(ROOT_DIR)/keyboards/*/*/*/keymaps/*/rules.mk))
KEYMAPS_MK += $$(patsubst $(ROOT_DIR)/keyboards/%/rules.mk,%,$$(wildcard $(ROOT_DIR)/keyboards/*/*/*/*/keymaps/*/rules.mk))
KEYBOARDS := $$(sort $$(filter-out $$(KEYMAPS_MK), $$(All_RULES_MK)))
else
KEYBOARDS := $(shell find keyboards/ -type f -iname "rules.mk" | grep -v keymaps | sed 's!keyboards/\(.*\)/rules.mk!\1!' | sort | uniq)
endif
endef
$(eval $(call GET_KEYBOARDS))
# Only consider folders with makefiles, to prevent errors in case there are extra folders
#KEYBOARDS += $(patsubst $(ROOD_DIR)/keyboards/%/rules.mk,%,$(wildcard $(ROOT_DIR)/keyboards/*/*/rules.mk))
# Phony targets to enable a few simple make commands outside the main processing below.
.PHONY: list-keyboards .PHONY: list-keyboards
list-keyboards: list-keyboards:
echo $(KEYBOARDS) util/list_keyboards.sh | sort -u | tr '\n' ' '
define PRINT_KEYBOARD
$(info $(PRINTING_KEYBOARD))
endef
.PHONY: generate-keyboards-file .PHONY: generate-keyboards-file
generate-keyboards-file: generate-keyboards-file:
$(foreach PRINTING_KEYBOARD,$(KEYBOARDS),$(eval $(call PRINT_KEYBOARD))) util/list_keyboards.sh | sort -u
.PHONY: clean .PHONY: clean
clean: clean:
@@ -158,8 +102,6 @@ endif
# Uncomment these for debugging # Uncomment these for debugging
# $(info Keyboard: $(KEYBOARD)) # $(info Keyboard: $(KEYBOARD))
# $(info Keymap: $(KEYMAP)) # $(info Keymap: $(KEYMAP))
# $(info Subproject: $(SUBPROJECT))
# $(info Keyboards: $(KEYBOARDS))
# Set the default goal depending on where we are running make from # Set the default goal depending on where we are running make from
@@ -217,7 +159,6 @@ endef
# A recursive helper function for finding the longest match # A recursive helper function for finding the longest match
# $1 The list to be checked # $1 The list to be checked
# It works by always removing the currently matched item from the list # It works by always removing the currently matched item from the list
# and call itself recursively, until a match is found
define TRY_TO_MATCH_RULE_FROM_LIST_HELPER2 define TRY_TO_MATCH_RULE_FROM_LIST_HELPER2
# Stop the recursion when the list is empty # Stop the recursion when the list is empty
ifneq ($1,) ifneq ($1,)
@@ -272,16 +213,29 @@ endef
define PARSE_RULE define PARSE_RULE
RULE := $1 RULE := $1
COMMANDS := COMMANDS :=
REQUIRE_PLATFORM_KEY :=
# If the rule starts with all, then continue the parsing from # If the rule starts with all, then continue the parsing from
# PARSE_ALL_KEYBOARDS # PARSE_ALL_KEYBOARDS
ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,all),true) ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,all),true)
KEYBOARD_RULE=all KEYBOARD_RULE=all
$$(eval $$(call PARSE_ALL_KEYBOARDS)) $$(eval $$(call PARSE_ALL_KEYBOARDS))
else ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,all-avr),true)
KEYBOARD_RULE=all
REQUIRE_PLATFORM_KEY := avr
$$(eval $$(call PARSE_ALL_KEYBOARDS))
else ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,all-chibios),true)
KEYBOARD_RULE=all
REQUIRE_PLATFORM_KEY := chibios
$$(eval $$(call PARSE_ALL_KEYBOARDS))
else ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,all-arm_atsam),true)
KEYBOARD_RULE=all
REQUIRE_PLATFORM_KEY := arm_atsam
$$(eval $$(call PARSE_ALL_KEYBOARDS))
else ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,test),true) else ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,test),true)
$$(eval $$(call PARSE_TEST)) $$(eval $$(call PARSE_TEST))
# If the rule starts with the name of a known keyboard, then continue # If the rule starts with the name of a known keyboard, then continue
# the parsing from PARSE_KEYBOARD # the parsing from PARSE_KEYBOARD
else ifeq ($$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(KEYBOARDS)),true) else ifeq ($$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(shell util/list_keyboards.sh | sort -u)),true)
KEYBOARD_RULE=$$(MATCHED_ITEM) KEYBOARD_RULE=$$(MATCHED_ITEM)
$$(eval $$(call PARSE_KEYBOARD,$$(MATCHED_ITEM))) $$(eval $$(call PARSE_KEYBOARD,$$(MATCHED_ITEM)))
# Otherwise use the KEYBOARD variable, which is determined either by # Otherwise use the KEYBOARD variable, which is determined either by
@@ -398,26 +352,9 @@ endef
# if we are going to compile all keyboards, match the rest of the rule # if we are going to compile all keyboards, match the rest of the rule
# for each of them # for each of them
define PARSE_ALL_KEYBOARDS define PARSE_ALL_KEYBOARDS
$$(eval $$(call PARSE_ALL_IN_LIST,PARSE_KEYBOARD,$(KEYBOARDS))) $$(eval $$(call PARSE_ALL_IN_LIST,PARSE_KEYBOARD,$(shell util/list_keyboards.sh noci | sort -u)))
endef endef
# $1 Subproject
# When entering this, the keyboard and subproject are known, so now we need
# to determine which keymaps are going to get compiled
# define PARSE_SUBPROJECT
# endef
# If we want to parse all subprojects, but the keyboard doesn't have any,
# then use defaultsp instead
# define PARSE_ALL_SUBPROJECTS
# ifeq ($$(SUBPROJECTS),)
# $$(eval $$(call PARSE_SUBPROJECT,defaultsp))
# else
# $$(eval $$(call PARSE_ALL_IN_LIST,PARSE_SUBPROJECT,$$(SUBPROJECTS)))
# endif
# endef
# Prints a list of all known keymaps for the given keyboard # Prints a list of all known keymaps for the given keyboard
define LIST_ALL_KEYMAPS define LIST_ALL_KEYMAPS
COMMAND_true_LIST_KEYMAPS := \ COMMAND_true_LIST_KEYMAPS := \
@@ -447,7 +384,7 @@ define PARSE_KEYMAP
# Format it in bold # Format it in bold
KB_SP := $(BOLD)$$(KB_SP)$(NO_COLOR) KB_SP := $(BOLD)$$(KB_SP)$(NO_COLOR)
# Specify the variables that we are passing forward to submake # Specify the variables that we are passing forward to submake
MAKE_VARS := KEYBOARD=$$(CURRENT_KB) KEYMAP=$$(CURRENT_KM) MAKE_VARS := KEYBOARD=$$(CURRENT_KB) KEYMAP=$$(CURRENT_KM) REQUIRE_PLATFORM_KEY=$$(REQUIRE_PLATFORM_KEY)
# And the first part of the make command # And the first part of the make command
MAKE_CMD := $$(MAKE) -r -R -C $(ROOT_DIR) -f build_keyboard.mk $$(MAKE_TARGET) MAKE_CMD := $$(MAKE) -r -R -C $(ROOT_DIR) -f build_keyboard.mk $$(MAKE_TARGET)
# The message to display # The message to display
@@ -466,6 +403,8 @@ define BUILD
LOG=$$$$($$(MAKE_CMD) $$(MAKE_VARS) SILENT=true 2>&1) ; \ LOG=$$$$($$(MAKE_CMD) $$(MAKE_VARS) SILENT=true 2>&1) ; \
if [ $$$$? -gt 0 ]; \ if [ $$$$? -gt 0 ]; \
then $$(PRINT_ERROR_PLAIN); \ then $$(PRINT_ERROR_PLAIN); \
elif [ "$$$$LOG" = "skipped" ] ; \
then $$(PRINT_SKIPPED_PLAIN); \
elif [ "$$$$LOG" != "" ] ; \ elif [ "$$$$LOG" != "" ] ; \
then $$(PRINT_WARNING_PLAIN); \ then $$(PRINT_WARNING_PLAIN); \
else \ else \
@@ -557,12 +496,12 @@ if [ $$error_occurred -gt 0 ]; then $(HANDLE_ERROR); fi;
endef endef
# Let's match everything, we handle all the rule parsing ourselves # Catch everything and parse the command line ourselves.
.PHONY: % .PHONY: %
%: %:
# Check if we have the CMP tool installed # Check if we have the CMP tool installed
cmp $(ROOT_DIR)/Makefile $(ROOT_DIR)/Makefile >/dev/null 2>&1; if [ $$? -gt 0 ]; then printf "$(MSG_NO_CMP)"; exit 1; fi; cmp $(ROOT_DIR)/Makefile $(ROOT_DIR)/Makefile >/dev/null 2>&1; if [ $$? -gt 0 ]; then printf "$(MSG_NO_CMP)"; exit 1; fi;
# Ensure that bin/qmk works. This will be a failing check after the next develop merge on 2020 Aug 29. # Ensure that bin/qmk works. This will be a failing check after the next develop merge
if ! bin/qmk hello 1> /dev/null 2>&1; then printf "$(MSG_PYTHON_MISSING)"; fi if ! bin/qmk hello 1> /dev/null 2>&1; then printf "$(MSG_PYTHON_MISSING)"; fi
# Check if the submodules are dirty, and display a warning if they are # Check if the submodules are dirty, and display a warning if they are
ifndef SKIP_GIT ifndef SKIP_GIT
@@ -593,25 +532,6 @@ endif
$(foreach TEST,$(sort $(TESTS)),$(RUN_TEST)) $(foreach TEST,$(sort $(TESTS)),$(RUN_TEST))
if [ -f $(ERROR_FILE) ]; then printf "$(MSG_ERRORS)" & exit 1; fi; if [ -f $(ERROR_FILE) ]; then printf "$(MSG_ERRORS)" & exit 1; fi;
# These no longer work because of the colon system
# All should compile everything
# .PHONY: all
# all: all-keyboards test-all
# Define some shortcuts, mostly for compatibility with the old syntax
# .PHONY: all-keyboards
# all-keyboards: all\:all\:all
# .PHONY: all-keyboards-defaults
# all-keyboards-defaults: all\:default
# .PHONY: test
# test: test-all
# .PHONY: test-clean
# test-clean: test-all-clean
lib/%: lib/%:
git submodule sync $? git submodule sync $?
git submodule update --init $? git submodule update --init $?
@@ -637,12 +557,13 @@ else
endif endif
ifndef SKIP_VERSION ifndef SKIP_VERSION
BUILD_DATE := $(shell date +"%Y-%m-%d-%H:%M:%S") BUILD_DATE := $(shell date +"%Y-%m-%d-%H:%M:%S")
else
BUILD_DATE := 2020-01-01-00:00:00
endif
$(shell echo '#define QMK_VERSION "$(GIT_VERSION)"' > $(ROOT_DIR)/quantum/version.h) $(shell echo '#define QMK_VERSION "$(GIT_VERSION)"' > $(ROOT_DIR)/quantum/version.h)
$(shell echo '#define QMK_BUILDDATE "$(BUILD_DATE)"' >> $(ROOT_DIR)/quantum/version.h) $(shell echo '#define QMK_BUILDDATE "$(BUILD_DATE)"' >> $(ROOT_DIR)/quantum/version.h)
$(shell echo '#define CHIBIOS_VERSION "$(CHIBIOS_VERSION)"' >> $(ROOT_DIR)/quantum/version.h) $(shell echo '#define CHIBIOS_VERSION "$(CHIBIOS_VERSION)"' >> $(ROOT_DIR)/quantum/version.h)
$(shell echo '#define CHIBIOS_CONTRIB_VERSION "$(CHIBIOS_CONTRIB_VERSION)"' >> $(ROOT_DIR)/quantum/version.h) $(shell echo '#define CHIBIOS_CONTRIB_VERSION "$(CHIBIOS_CONTRIB_VERSION)"' >> $(ROOT_DIR)/quantum/version.h)
else
BUILD_DATE := NA
endif
include $(ROOT_DIR)/testlist.mk include $(ROOT_DIR)/testlist.mk
+1 -1
View File
@@ -30,4 +30,4 @@ $(TEST)_SRC += $(patsubst $(ROOTDIR)/%,%,$(wildcard $(TEST_PATH)/*.cpp))
$(TEST)_DEFS=$(TMK_COMMON_DEFS) $(OPT_DEFS) $(TEST)_DEFS=$(TMK_COMMON_DEFS) $(OPT_DEFS)
$(TEST)_CONFIG=$(TEST_PATH)/config.h $(TEST)_CONFIG=$(TEST_PATH)/config.h
VPATH+=$(TOP_DIR)/tests/test_common VPATH+=$(TOP_DIR)/tests/test_common
+13
View File
@@ -317,6 +317,13 @@ SRC += $(TMK_COMMON_SRC)
OPT_DEFS += $(TMK_COMMON_DEFS) OPT_DEFS += $(TMK_COMMON_DEFS)
EXTRALDFLAGS += $(TMK_COMMON_LDFLAGS) EXTRALDFLAGS += $(TMK_COMMON_LDFLAGS)
SKIP_COMPILE := no
ifneq ($(REQUIRE_PLATFORM_KEY),)
ifneq ($(REQUIRE_PLATFORM_KEY),$(PLATFORM_KEY))
SKIP_COMPILE := yes
endif
endif
include $(TMK_PATH)/$(PLATFORM_KEY).mk include $(TMK_PATH)/$(PLATFORM_KEY).mk
ifneq ($(strip $(PROTOCOL)),) ifneq ($(strip $(PROTOCOL)),)
include $(TMK_PATH)/protocol/$(strip $(shell echo $(PROTOCOL) | tr '[:upper:]' '[:lower:]')).mk include $(TMK_PATH)/protocol/$(strip $(shell echo $(PROTOCOL) | tr '[:upper:]' '[:lower:]')).mk
@@ -352,7 +359,13 @@ $(KEYBOARD_OUTPUT)_INC := $(PROJECT_INC) $(GFXINC)
$(KEYBOARD_OUTPUT)_CONFIG := $(PROJECT_CONFIG) $(KEYBOARD_OUTPUT)_CONFIG := $(PROJECT_CONFIG)
# Default target. # Default target.
ifeq ($(SKIP_COMPILE),no)
all: build check-size all: build check-size
else
all:
echo "skipped" >&2
endif
build: elf cpfirmware build: elf cpfirmware
check-size: build check-size: build
objs-size: build objs-size: build
+3 -3
View File
@@ -17,7 +17,7 @@ OUTPUTS := $(TEST_OBJ)/$(TEST) $(GTEST_OUTPUT)
GTEST_INC := \ GTEST_INC := \
$(LIB_PATH)/googletest/googletest/include\ $(LIB_PATH)/googletest/googletest/include\
$(LIB_PATH)/googletest/googlemock/include\ $(LIB_PATH)/googletest/googlemock/include\
GTEST_INTERNAL_INC :=\ GTEST_INTERNAL_INC :=\
$(LIB_PATH)/googletest/googletest\ $(LIB_PATH)/googletest/googletest\
$(LIB_PATH)/googletest/googlemock $(LIB_PATH)/googletest/googlemock
@@ -27,7 +27,7 @@ $(GTEST_OUTPUT)_SRC :=\
googletest/src/gtest_main.cc\ googletest/src/gtest_main.cc\
googlemock/src/gmock-all.cc googlemock/src/gmock-all.cc
$(GTEST_OUTPUT)_DEFS := $(GTEST_OUTPUT)_DEFS :=
$(GTEST_OUTPUT)_INC := $(GTEST_INC) $(GTEST_INTERNAL_INC) $(GTEST_OUTPUT)_INC := $(GTEST_INC) $(GTEST_INTERNAL_INC)
LDFLAGS += -lstdc++ -lpthread -shared-libgcc LDFLAGS += -lstdc++ -lpthread -shared-libgcc
@@ -49,6 +49,7 @@ endif
include common_features.mk include common_features.mk
include $(TMK_PATH)/common.mk include $(TMK_PATH)/common.mk
include $(QUANTUM_PATH)/sequencer/tests/rules.mk
include $(QUANTUM_PATH)/serial_link/tests/rules.mk include $(QUANTUM_PATH)/serial_link/tests/rules.mk
ifneq ($(filter $(FULL_TESTS),$(TEST)),) ifneq ($(filter $(FULL_TESTS),$(TEST)),)
include build_full_test.mk include build_full_test.mk
@@ -65,4 +66,3 @@ include $(TMK_PATH)/rules.mk
$(shell mkdir -p $(BUILD_DIR)/test 2>/dev/null) $(shell mkdir -p $(BUILD_DIR)/test 2>/dev/null)
$(shell mkdir -p $(TEST_OBJ) 2>/dev/null) $(shell mkdir -p $(TEST_OBJ) 2>/dev/null)
+1
View File
@@ -21,4 +21,5 @@ COMMON_VPATH += $(QUANTUM_PATH)/keymap_extras
COMMON_VPATH += $(QUANTUM_PATH)/audio COMMON_VPATH += $(QUANTUM_PATH)/audio
COMMON_VPATH += $(QUANTUM_PATH)/process_keycode COMMON_VPATH += $(QUANTUM_PATH)/process_keycode
COMMON_VPATH += $(QUANTUM_PATH)/api COMMON_VPATH += $(QUANTUM_PATH)/api
COMMON_VPATH += $(QUANTUM_PATH)/sequencer
COMMON_VPATH += $(DRIVER_PATH) COMMON_VPATH += $(DRIVER_PATH)
+68 -54
View File
@@ -21,6 +21,11 @@ QUANTUM_SRC += \
$(QUANTUM_DIR)/keymap_common.c \ $(QUANTUM_DIR)/keymap_common.c \
$(QUANTUM_DIR)/keycode_config.c $(QUANTUM_DIR)/keycode_config.c
ifeq ($(strip $(DEBUG_MATRIX_SCAN_RATE_ENABLE)), yes)
OPT_DEFS += -DDEBUG_MATRIX_SCAN_RATE
CONSOLE_ENABLE = yes
endif
ifeq ($(strip $(API_SYSEX_ENABLE)), yes) ifeq ($(strip $(API_SYSEX_ENABLE)), yes)
OPT_DEFS += -DAPI_SYSEX_ENABLE OPT_DEFS += -DAPI_SYSEX_ENABLE
OPT_DEFS += -DAPI_ENABLE OPT_DEFS += -DAPI_ENABLE
@@ -39,6 +44,13 @@ ifeq ($(strip $(AUDIO_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/audio/luts.c SRC += $(QUANTUM_DIR)/audio/luts.c
endif endif
ifeq ($(strip $(SEQUENCER_ENABLE)), yes)
OPT_DEFS += -DSEQUENCER_ENABLE
MUSIC_ENABLE = yes
SRC += $(QUANTUM_DIR)/sequencer/sequencer.c
SRC += $(QUANTUM_DIR)/process_keycode/process_sequencer.c
endif
ifeq ($(strip $(MIDI_ENABLE)), yes) ifeq ($(strip $(MIDI_ENABLE)), yes)
OPT_DEFS += -DMIDI_ENABLE OPT_DEFS += -DMIDI_ENABLE
MUSIC_ENABLE = yes MUSIC_ENABLE = yes
@@ -156,12 +168,14 @@ ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
endif endif
endif endif
VALID_MATRIX_TYPES := yes IS31FL3731 IS31FL3733 IS31FL3737 IS31FL3741 WS2812 custom
LED_MATRIX_ENABLE ?= no LED_MATRIX_ENABLE ?= no
ifneq ($(strip $(LED_MATRIX_ENABLE)), no) VALID_LED_MATRIX_TYPES := IS31FL3731 custom
ifeq ($(filter $(LED_MATRIX_ENABLE),$(VALID_MATRIX_TYPES)),) # TODO: IS31FL3733 IS31FL3737 IS31FL3741
$(error LED_MATRIX_ENABLE="$(LED_MATRIX_ENABLE)" is not a valid matrix type)
ifeq ($(strip $(LED_MATRIX_ENABLE)), yes)
ifeq ($(filter $(LED_MATRIX_DRIVER),$(VALID_LED_MATRIX_TYPES)),)
$(error LED_MATRIX_DRIVER="$(LED_MATRIX_DRIVER)" is not a valid matrix type)
else else
BACKLIGHT_ENABLE = yes BACKLIGHT_ENABLE = yes
BACKLIGHT_DRIVER = custom BACKLIGHT_DRIVER = custom
@@ -169,21 +183,22 @@ ifneq ($(strip $(LED_MATRIX_ENABLE)), no)
SRC += $(QUANTUM_DIR)/led_matrix.c SRC += $(QUANTUM_DIR)/led_matrix.c
SRC += $(QUANTUM_DIR)/led_matrix_drivers.c SRC += $(QUANTUM_DIR)/led_matrix_drivers.c
endif endif
endif
ifeq ($(strip $(LED_MATRIX_ENABLE)), IS31FL3731) ifeq ($(strip $(LED_MATRIX_DRIVER)), IS31FL3731)
OPT_DEFS += -DIS31FL3731 OPT_DEFS += -DIS31FL3731 -DSTM32_I2C -DHAL_USE_I2C=TRUE
COMMON_VPATH += $(DRIVER_PATH)/issi COMMON_VPATH += $(DRIVER_PATH)/issi
SRC += is31fl3731-simple.c SRC += is31fl3731-simple.c
QUANTUM_LIB_SRC += i2c_master.c QUANTUM_LIB_SRC += i2c_master.c
endif
endif endif
RGB_MATRIX_ENABLE ?= no RGB_MATRIX_ENABLE ?= no
VALID_RGB_MATRIX_TYPES := IS31FL3731 IS31FL3733 IS31FL3737 IS31FL3741 WS2812 custom
ifneq ($(strip $(RGB_MATRIX_ENABLE)), no) ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes)
ifeq ($(filter $(RGB_MATRIX_ENABLE),$(VALID_MATRIX_TYPES)),) ifeq ($(filter $(RGB_MATRIX_DRIVER),$(VALID_RGB_MATRIX_TYPES)),)
$(error RGB_MATRIX_ENABLE="$(RGB_MATRIX_ENABLE)" is not a valid matrix type) $(error "$(RGB_MATRIX_DRIVER)" is not a valid matrix type)
endif endif
OPT_DEFS += -DRGB_MATRIX_ENABLE OPT_DEFS += -DRGB_MATRIX_ENABLE
ifneq (,$(filter $(MCU), atmega16u2 atmega32u2)) ifneq (,$(filter $(MCU), atmega16u2 atmega32u2))
# ATmegaxxU2 does not have hardware MUL instruction - lib8tion must be told to use software multiplication routines # ATmegaxxU2 does not have hardware MUL instruction - lib8tion must be told to use software multiplication routines
@@ -194,51 +209,47 @@ endif
SRC += $(QUANTUM_DIR)/rgb_matrix_drivers.c SRC += $(QUANTUM_DIR)/rgb_matrix_drivers.c
CIE1931_CURVE := yes CIE1931_CURVE := yes
RGB_KEYCODES_ENABLE := yes RGB_KEYCODES_ENABLE := yes
endif
ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes) ifeq ($(strip $(RGB_MATRIX_DRIVER)), IS31FL3731)
RGB_MATRIX_ENABLE := IS31FL3731 OPT_DEFS += -DIS31FL3731 -DSTM32_I2C -DHAL_USE_I2C=TRUE
endif COMMON_VPATH += $(DRIVER_PATH)/issi
SRC += is31fl3731.c
QUANTUM_LIB_SRC += i2c_master.c
endif
ifeq ($(strip $(RGB_MATRIX_ENABLE)), IS31FL3731) ifeq ($(strip $(RGB_MATRIX_DRIVER)), IS31FL3733)
OPT_DEFS += -DIS31FL3731 -DSTM32_I2C -DHAL_USE_I2C=TRUE OPT_DEFS += -DIS31FL3733 -DSTM32_I2C -DHAL_USE_I2C=TRUE
COMMON_VPATH += $(DRIVER_PATH)/issi COMMON_VPATH += $(DRIVER_PATH)/issi
SRC += is31fl3731.c SRC += is31fl3733.c
QUANTUM_LIB_SRC += i2c_master.c QUANTUM_LIB_SRC += i2c_master.c
endif endif
ifeq ($(strip $(RGB_MATRIX_ENABLE)), IS31FL3733) ifeq ($(strip $(RGB_MATRIX_DRIVER)), IS31FL3737)
OPT_DEFS += -DIS31FL3733 -DSTM32_I2C -DHAL_USE_I2C=TRUE OPT_DEFS += -DIS31FL3737 -DSTM32_I2C -DHAL_USE_I2C=TRUE
COMMON_VPATH += $(DRIVER_PATH)/issi COMMON_VPATH += $(DRIVER_PATH)/issi
SRC += is31fl3733.c SRC += is31fl3737.c
QUANTUM_LIB_SRC += i2c_master.c QUANTUM_LIB_SRC += i2c_master.c
endif endif
ifeq ($(strip $(RGB_MATRIX_ENABLE)), IS31FL3737) ifeq ($(strip $(RGB_MATRIX_DRIVER)), IS31FL3741)
OPT_DEFS += -DIS31FL3737 -DSTM32_I2C -DHAL_USE_I2C=TRUE OPT_DEFS += -DIS31FL3741 -DSTM32_I2C -DHAL_USE_I2C=TRUE
COMMON_VPATH += $(DRIVER_PATH)/issi COMMON_VPATH += $(DRIVER_PATH)/issi
SRC += is31fl3737.c SRC += is31fl3741.c
QUANTUM_LIB_SRC += i2c_master.c QUANTUM_LIB_SRC += i2c_master.c
endif endif
ifeq ($(strip $(RGB_MATRIX_ENABLE)), IS31FL3741) ifeq ($(strip $(RGB_MATRIX_DRIVER)), WS2812)
OPT_DEFS += -DIS31FL3741 -DSTM32_I2C -DHAL_USE_I2C=TRUE OPT_DEFS += -DWS2812
COMMON_VPATH += $(DRIVER_PATH)/issi WS2812_DRIVER_REQUIRED := yes
SRC += is31fl3741.c endif
QUANTUM_LIB_SRC += i2c_master.c
endif
ifeq ($(strip $(RGB_MATRIX_ENABLE)), WS2812) ifeq ($(strip $(RGB_MATRIX_CUSTOM_KB)), yes)
OPT_DEFS += -DWS2812 OPT_DEFS += -DRGB_MATRIX_CUSTOM_KB
WS2812_DRIVER_REQUIRED := yes endif
endif
ifeq ($(strip $(RGB_MATRIX_CUSTOM_KB)), yes) ifeq ($(strip $(RGB_MATRIX_CUSTOM_USER)), yes)
OPT_DEFS += -DRGB_MATRIX_CUSTOM_KB OPT_DEFS += -DRGB_MATRIX_CUSTOM_USER
endif endif
ifeq ($(strip $(RGB_MATRIX_CUSTOM_USER)), yes)
OPT_DEFS += -DRGB_MATRIX_CUSTOM_USER
endif endif
ifeq ($(strip $(RGB_KEYCODES_ENABLE)), yes) ifeq ($(strip $(RGB_KEYCODES_ENABLE)), yes)
@@ -444,11 +455,14 @@ ifeq ($(strip $(SPLIT_KEYBOARD)), yes)
# Functions added via QUANTUM_LIB_SRC are only included in the final binary if they're called. # Functions added via QUANTUM_LIB_SRC are only included in the final binary if they're called.
# Unused functions are pruned away, which is why we can add multiple drivers here without bloat. # Unused functions are pruned away, which is why we can add multiple drivers here without bloat.
ifeq ($(PLATFORM),AVR) ifeq ($(PLATFORM),AVR)
QUANTUM_LIB_SRC += i2c_master.c \ ifneq ($(NO_I2C),yes)
i2c_slave.c QUANTUM_LIB_SRC += i2c_master.c \
i2c_slave.c
endif
endif endif
SERIAL_DRIVER ?= bitbang SERIAL_DRIVER ?= bitbang
OPT_DEFS += -DSERIAL_DRIVER_$(strip $(shell echo $(SERIAL_DRIVER) | tr '[:lower:]' '[:upper:]'))
ifeq ($(strip $(SERIAL_DRIVER)), bitbang) ifeq ($(strip $(SERIAL_DRIVER)), bitbang)
QUANTUM_LIB_SRC += serial.c QUANTUM_LIB_SRC += serial.c
else else
-1
View File
@@ -50,4 +50,3 @@ This document marks the inaugural Breaking Change merge. A list of changes follo
* `KC_DELT` was a redundant, undocumented alias for `KC_DELETE` * `KC_DELT` was a redundant, undocumented alias for `KC_DELETE`
* It has been removed and all its uses replaced with the more common `KC_DEL` alias * It has been removed and all its uses replaced with the more common `KC_DEL` alias
* Around 90 keymaps (mostly for ErgoDox boards) have been modified as a result * Around 90 keymaps (mostly for ErgoDox boards) have been modified as a result
+150
View File
@@ -0,0 +1,150 @@
# QMK Breaking Change - 2020 Nov 28 Changelog
Four times a year QMK runs a process for merging Breaking Changes. A Breaking Change is any change which modifies how QMK behaves in a way that is incompatible or potentially dangerous. We limit these changes to 4 times per year so that users can have confidence that updating their QMK tree will not break their keymaps.
## Changes Requiring User Action :id=changes-requiring-user-action
### Relocated Keyboards :id-relocated-keyboards
#### Reduce Helix keyboard build variation ([#8669](https://github.com/qmk/qmk_firmware/pull/8669))
The build commands for the Helix keyboard are:
```
make <helix_build_name>:<keymap_name>
```
For `<helix_build_name>`, specify the one in the rightmost column of the table below, such as `helix`,` helix/pico`.
| before Oct 17 2019 | Oct 17 2019 | Mar 10 2020 | Nov 28 2020 |
| ---------------------|-------------------------|-------------------------| ------------------------|
| helix/rev1 | helix/rev1 | helix/rev1 | helix/rev1 |
| helix/pico | helix/pico | helix/pico | helix/pico |
| | helix/pico/back | helix/pico/back | helix/pico/back |
| | helix/pico/under | helix/pico/under | helix/pico/under |
| | | helix/pico/sc | -- |
| | | helix/pico/sc/back | helix/pico/sc |
| | | helix/pico/sc/under | -- |
| helix/rev2 (=helix) | helix/rev2 (=helix) | helix/rev2 (=helix) | -- |
| | helix/rev2/back | helix/rev2/back | -- |
| | helix/rev2/back/oled | helix/rev2/back/oled | ( --> helix/rev2/back) |
| | helix/rev2/oled | helix/rev2/oled | helix/rev2 (=helix) |
| | helix/rev2/oled/back | helix/rev2/oled/back | helix/rev2/back |
| | helix/rev2/oled/under | helix/rev2/oled/under | helix/rev2/under |
| | | helix/rev2/sc | -- |
| | | helix/rev2/sc/back | -- |
| | | helix/rev2/sc/oled | -- |
| | | helix/rev2/sc/oledback | helix/rev2/sc |
| | | helix/rev2/sc/oledunder | -- |
| | | helix/rev2/sc/under | -- |
| | helix/rev2/under | helix/rev2/under | -- |
| | helix/rev2/under/oled | helix/rev2/under/oled | ( --> helix/rev2/under) |
#### Update the Speedo firmware for v3.0 ([#10657](https://github.com/qmk/qmk_firmware/pull/10657))
The Speedo keyboard has moved to `cozykeys/speedo/v2` as the designer prepares to release the Speedo v3.0.
| Previous Name | New Name |
| :------------ | :------------------------- |
| speedo | cozykeys/speedo/v2 |
| -- | cozykeys/speedo/v3 **new** |
#### Maartenwut/Maarten name change to evyd13/Evy ([#10274](https://github.com/qmk/qmk_firmware/pull/10274))
Maartenwut has rebranded as @evyd13, and all released Maartenwut boards have moved.
| Previous Name | New Name |
| :--------------------- | :----------------- |
| maartenwut/atom47/rev2 | evyd13/atom47/rev2 |
| maartenwut/atom47/rev3 | evyd13/atom47/rev3 |
| maartenwut/eon40 | evyd13/eon40 |
| maartenwut/eon65 | evyd13/eon65 |
| maartenwut/eon75 | evyd13/eon75 |
| maartenwut/eon87 | evyd13/eon87 |
| maartenwut/eon95 | evyd13/eon95 |
| maartenwut/gh80_1800 | evyd13/gh80_1800 |
| maartenwut/gh80_3700 | evyd13/gh80_3700 |
| maartenwut/minitomic | evyd13/minitomic |
| maartenwut/mx5160 | evyd13/mx5160 |
| maartenwut/nt660 | evyd13/nt660 |
| maartenwut/omrontkl | evyd13/omrontkl |
| maartenwut/plain60 | evyd13/plain60 |
| maartenwut/pockettype | evyd13/pockettype |
| maartenwut/quackfire | evyd13/quackfire |
| maartenwut/solheim68 | evyd13/solheim68 |
| maartenwut/ta65 | evyd13/ta65 |
| maartenwut/wasdat | evyd13/wasdat |
| maartenwut/wasdat_code | evyd13/wasdat_code |
| maartenwut/wonderland | evyd13/wonderland |
#### Xelus Valor and Dawn60 Refactors ([#10512](https://github.com/qmk/qmk_firmware/pull/10512), [#10584](https://github.com/qmk/qmk_firmware/pull/10584))
The Valor and Dawn60 keyboards by Xelus22 both now require their revisions to be specified when compiling.
| Previous Name | New Name |
| :------------ | :---------------- |
| xelus/dawn60 | xelus/dawn60/rev1 |
| xelus/valor | xelus/valor/rev1 |
### Updated Keyboard Codebases :id=keyboard-updates
#### AEboards EXT65 Refactor ([#10820](https://github.com/qmk/qmk_firmware/pull/10820))
The EXT65 codebase has been reworked so keymaps can be used with either revision.
## Core Changes :id=core-changes
### Fixes :id=core-fixes
* Reconnect the USB if users wake up a computer from the keyboard to restore the USB state ([#10088](https://github.com/qmk/qmk_firmware/pull/10088))
* Fix cursor position bug in oled_write_raw functions ([#10800](https://github.com/qmk/qmk_firmware/pull/10800))
### Additions and Enhancements :id=core-additions
* Allow MATRIX_ROWS to be greater than 32 ([#10183](https://github.com/qmk/qmk_firmware/pull/10183))
* Add support for soft serial to ATmega32U2 ([#10204](https://github.com/qmk/qmk_firmware/pull/10204))
* Allow direct control of MIDI velocity value ([#9940](https://github.com/qmk/qmk_firmware/pull/9940))
* Joystick 16-bit support ([#10439](https://github.com/qmk/qmk_firmware/pull/10439))
* Allow encoder resolutions to be set per encoder ([#10259](https://github.com/qmk/qmk_firmware/pull/10259))
* Share button state from mousekey to pointing_device ([#10179](https://github.com/qmk/qmk_firmware/pull/10179))
* Add advanced/efficient RGB Matrix Indicators ([#8564](https://github.com/qmk/qmk_firmware/pull/8564))
* OLED display update interval support ([#10388](https://github.com/qmk/qmk_firmware/pull/10388))
* Per-Key Retro Tapping ([#10622](https://github.com/qmk/qmk_firmware/pull/10622))
* Allow backlight duty cycle limit ([#10260](https://github.com/qmk/qmk_firmware/pull/10260))
* Add step sequencer feature ([#9703](https://github.com/qmk/qmk_firmware/pull/9703))
* Added `add_oneshot_mods` & `del_oneshot_mods` ([#10549](https://github.com/qmk/qmk_firmware/pull/10549))
* Add AT90USB support for serial.c ([#10706](https://github.com/qmk/qmk_firmware/pull/10706))
* Auto shift: support repeats and early registration (#9826)
### Clean-ups and Optimizations :id=core-optimizations
* Haptic and solenoid cleanup ([#9700](https://github.com/qmk/qmk_firmware/pull/9700))
* XD75 cleanup ([#10524](https://github.com/qmk/qmk_firmware/pull/10524))
* Minor change to behavior allowing display updates to continue between task ticks ([#10750](https://github.com/qmk/qmk_firmware/pull/10750))
* Change some GPIO manipulations in matrix.c to be atomic ([#10491](https://github.com/qmk/qmk_firmware/pull/10491))
* combine repeated lines of code for ATmega32U2, ATmega16U2, ATmega328 and ATmega328P ([#10837](https://github.com/qmk/qmk_firmware/pull/10837))
* Remove references to HD44780 ([#10735](https://github.com/qmk/qmk_firmware/pull/10735))
## QMK Infrastructure and Internals :id=qmk-internals
* Add ability to build a subset of all keyboards based on platform. ([#10420](https://github.com/qmk/qmk_firmware/pull/10420))
* Initialise EEPROM drivers at startup, instead of upon first execution ([#10438](https://github.com/qmk/qmk_firmware/pull/10438))
* Make bootloader_jump weak for ChibiOS ([#10417](https://github.com/qmk/qmk_firmware/pull/10417))
* Support for STM32 GPIOF,G,H,I,J,K ([#10206](https://github.com/qmk/qmk_firmware/pull/10206))
* Add milc as a dependency and remove the installed milc ([#10563](https://github.com/qmk/qmk_firmware/pull/10563))
* ChibiOS upgrade: early init conversions ([#10214](https://github.com/qmk/qmk_firmware/pull/10214))
* ChibiOS upgrade: configuration file migrator ([#9952](https://github.com/qmk/qmk_firmware/pull/9952))
* Add definition based on currently-selected serial driver. ([#10716](https://github.com/qmk/qmk_firmware/pull/10716))
* Allow for modification of output RGB values when using rgblight/rgb_matrix. ([#10638](https://github.com/qmk/qmk_firmware/pull/10638))
* Allow keyboards/keymaps to execute code at each main loop iteration ([#10530](https://github.com/qmk/qmk_firmware/pull/10530))
* qmk cformat ([#10767](https://github.com/qmk/qmk_firmware/pull/10767))
* Add a Make variable to easily enable DEBUG_MATRIX_SCAN_RATE on the command line ([#10824](https://github.com/qmk/qmk_firmware/pull/10824))
* update Chibios OS USB for the OTG driver ([#8893](https://github.com/qmk/qmk_firmware/pull/8893))
* Fixup version.h writing when using `SKIP_VERSION=yes` ([#10972](https://github.com/qmk/qmk_firmware/pull/10972), [#10974](https://github.com/qmk/qmk_firmware/pull/10974))
* Rename ledmatrix.h to match .c file ([#7949](https://github.com/qmk/qmk_firmware/pull/7949))
* Split RGB_MATRIX_ENABLE into _ENABLE and _DRIVER ([#10231](https://github.com/qmk/qmk_firmware/pull/10231))
* Split LED_MATRIX_ENABLE into _ENABLE and _DRIVER ([#10840](https://github.com/qmk/qmk_firmware/pull/10840))
+1 -1
View File
@@ -24,7 +24,7 @@ Totally new to QMK? There are two ways to get started:
## Make It Yours ## Make It Yours
QMK has lots of [features](features.md) to explore, and a good deal of reference documentation to dig through. Most features are taken advantage of by modifying your [keymap](keymap.md), and changing the [keycodes](keycodes.md). QMK has lots of features to explore, and a good deal of reference documentation to dig through. Most features are taken advantage of by modifying your [keymap](keymap.md), and changing the [keycodes](keycodes.md).
## Need help? ## Need help?
+2
View File
@@ -80,6 +80,7 @@
* [One Shot Keys](one_shot_keys.md) * [One Shot Keys](one_shot_keys.md)
* [Pointing Device](feature_pointing_device.md) * [Pointing Device](feature_pointing_device.md)
* [Raw HID](feature_rawhid.md) * [Raw HID](feature_rawhid.md)
* [Sequencer](feature_sequencer.md)
* [Swap Hands](feature_swap_hands.md) * [Swap Hands](feature_swap_hands.md)
* [Tap Dance](feature_tap_dance.md) * [Tap Dance](feature_tap_dance.md)
* [Tap-Hold Configuration](tap_hold.md) * [Tap-Hold Configuration](tap_hold.md)
@@ -119,6 +120,7 @@
* [Overview](breaking_changes.md) * [Overview](breaking_changes.md)
* [My Pull Request Was Flagged](breaking_changes_instructions.md) * [My Pull Request Was Flagged](breaking_changes_instructions.md)
* History * History
* [2020 Nov 28](ChangeLog/20201128.md)
* [2020 Aug 29](ChangeLog/20200829.md) * [2020 Aug 29](ChangeLog/20200829.md)
* [2020 May 30](ChangeLog/20200530.md) * [2020 May 30](ChangeLog/20200530.md)
* [2020 Feb 29](ChangeLog/20200229.md) * [2020 Feb 29](ChangeLog/20200229.md)
+8 -22
View File
@@ -6,6 +6,7 @@ The breaking change period is when we will merge PR's that change QMK in dangero
## What has been included in past Breaking Changes? ## What has been included in past Breaking Changes?
* [2020 Nov 28](ChangeLog/20201128.md)
* [2020 Aug 29](ChangeLog/20200829.md) * [2020 Aug 29](ChangeLog/20200829.md)
* [2020 May 30](ChangeLog/20200530.md) * [2020 May 30](ChangeLog/20200530.md)
* [2020 Feb 29](ChangeLog/20200229.md) * [2020 Feb 29](ChangeLog/20200229.md)
@@ -13,16 +14,16 @@ The breaking change period is when we will merge PR's that change QMK in dangero
## When is the next Breaking Change? ## When is the next Breaking Change?
The next Breaking Change is scheduled for November 28, 2020. The next Breaking Change is scheduled for February 27, 2021.
### Important Dates ### Important Dates
* [x] 2020 Aug 29 - `develop` is created. It will be rebased weekly. * [x] 2020 Nov 28 - `develop` is created. Each push to `master` is subsequently merged to `develop`
* [ ] 2020 Oct 31 - `develop` closed to new PR's. * [ ] 2021 Jan 30 - `develop` closed to new PR's.
* [ ] 2020 Oct 31 - Call for testers. * [ ] 2021 Jan 30 - Call for testers.
* [ ] 2020 Nov 26 - `master` is locked, no PR's merged. * [ ] 2021 Feb 25 - `master` is locked, no PR's merged.
* [ ] 2020 Nov 28 - Merge `develop` to `master`. * [ ] 2021 Feb 27 - Merge `develop` to `master`.
* [ ] 2020 Nov 28 - `master` is unlocked. PR's can be merged again. * [ ] 2021 Feb 27 - `master` is unlocked. PR's can be merged again.
## What changes will be included? ## What changes will be included?
@@ -39,21 +40,6 @@ Criteria for acceptance:
This section documents various processes we use when running the Breaking Changes process. This section documents various processes we use when running the Breaking Changes process.
## Rebase `develop` from `master`
This is run every Friday while `develop` is open.
Process:
```
cd qmk_firmware
git checkout master
git pull --ff-only
git checkout develop
git rebase master
git push --force
```
## Creating the `develop` branch ## Creating the `develop` branch
This happens immediately after the previous `develop` branch is merged. This happens immediately after the previous `develop` branch is merged.
+11 -1
View File
@@ -175,7 +175,7 @@ Creates a keymap.json from a keymap.c.
**Usage**: **Usage**:
``` ```
qmk c2json [--no-cpp] [-o OUTPUT] filename qmk c2json -km KEYMAP -kb KEYBOARD [-q] [--no-cpp] [-o OUTPUT] filename
``` ```
## `qmk lint` ## `qmk lint`
@@ -296,6 +296,16 @@ This command allows you to generate QMK documentation locally. It can be uses fo
qmk generate-docs qmk generate-docs
``` ```
## `qmk generate-rgb-breathe-table`
This command generates a lookup table (LUT) header file for the [RGB Lighting](feature_rgblight.md) feature's breathing animation. Place this file in your keyboard or keymap directory as `rgblight_breathe_table.h` to override the default LUT in `quantum/`.
**Usage**:
```
qmk generate-rgb-breathe-table [-q] [-o OUTPUT] [-m MAX] [-c CENTER]
```
## `qmk kle2json` ## `qmk kle2json`
This command allows you to convert from raw KLE data to QMK Configurator JSON. It accepts either an absolute file path, or a file name in the current directory. By default it will not overwrite `info.json` if it is already present. Use the `-f` or `--force` flag to overwrite. This command allows you to convert from raw KLE data to QMK Configurator JSON. It accepts either an absolute file path, or a file name in the current directory. By default it will not overwrite `info.json` if it is already present. Use the `-f` or `--force` flag to overwrite.
+5 -1
View File
@@ -29,7 +29,9 @@ This level contains all of the options for that particular keymap. If you wish t
This is a C header file that is one of the first things included, and will persist over the whole project (if included). Lots of variables can be set here and accessed elsewhere. The `config.h` file shouldn't be including other `config.h` files, or anything besides this: This is a C header file that is one of the first things included, and will persist over the whole project (if included). Lots of variables can be set here and accessed elsewhere. The `config.h` file shouldn't be including other `config.h` files, or anything besides this:
#include "config_common.h" ```c
#include "config_common.h"
```
## Hardware Options ## Hardware Options
@@ -135,6 +137,8 @@ If you define these options you will enable the associated feature, which may in
* `#define RETRO_TAPPING` * `#define RETRO_TAPPING`
* tap anyway, even after TAPPING_TERM, if there was no other key interruption between press and release * tap anyway, even after TAPPING_TERM, if there was no other key interruption between press and release
* See [Retro Tapping](tap_hold.md#retro-tapping) for details * See [Retro Tapping](tap_hold.md#retro-tapping) for details
* `#define RETRO_TAPPING_PER_KEY`
* enables handling for per key `RETRO_TAPPING` settings
* `#define TAPPING_TOGGLE 2` * `#define TAPPING_TOGGLE 2`
* how many taps before triggering the toggle * how many taps before triggering the toggle
* `#define PERMISSIVE_HOLD` * `#define PERMISSIVE_HOLD`
+8
View File
@@ -185,6 +185,14 @@ This function gets called at every matrix scan, which is basically as often as t
You should use this function if you need custom matrix scanning code. It can also be used for custom status output (such as LEDs or a display) or other functionality that you want to trigger regularly even when the user isn't typing. You should use this function if you need custom matrix scanning code. It can also be used for custom status output (such as LEDs or a display) or other functionality that you want to trigger regularly even when the user isn't typing.
# Keyboard housekeeping
* Keyboard/Revision: `void housekeeping_task_kb(void)`
* Keymap: `void housekeeping_task_user(void)`
This function gets called at the end of all QMK processing, before starting the next iteration. You can safely assume that QMK has dealt with the last matrix scan at the time that these functions are invoked -- layer states have been updated, USB reports have been sent, LEDs have been updated, and displays have been drawn.
Similar to `matrix_scan_*`, these are called as often as the MCU can handle. To keep your board responsive, it's suggested to do as little as possible during these function calls, potentially throtting their behaviour if you do indeed require implementing something special.
# Keyboard Idling/Wake Code # Keyboard Idling/Wake Code
+3 -1
View File
@@ -41,7 +41,9 @@ Bevorzugst Du es lieber auf der Befehlszeile zu debuggen? Dafür eignet sich das
Manchmal ist es hilfreich Debug-Nachrichten innerhalb deines eigenen [Custom Codes](de/custom_quantum_functions.md) zu drucken. Das ist ziemlich einfach. Beginne damit `print.h` am Anfang deiner Datei zu inkludieren: Manchmal ist es hilfreich Debug-Nachrichten innerhalb deines eigenen [Custom Codes](de/custom_quantum_functions.md) zu drucken. Das ist ziemlich einfach. Beginne damit `print.h` am Anfang deiner Datei zu inkludieren:
#include <print.h> ```c
#include "print.h"
```
Danach stehen dir verschiedene Druck-Funktionen zur Verfügung: Danach stehen dir verschiedene Druck-Funktionen zur Verfügung:
+37 -8
View File
@@ -14,16 +14,11 @@ Some keyboards may have specific instructions for entering the bootloader. For e
To put a device in bootloader mode with USBaspLoader, tap the `RESET` button while holding down the `BOOT` button. To put a device in bootloader mode with USBaspLoader, tap the `RESET` button while holding down the `BOOT` button.
Alternatively, hold `BOOT` while inserting the USB cable. Alternatively, hold `BOOT` while inserting the USB cable.
Zadig will automatically detect the bootloader device. You may sometimes need to check **Options → List All Devices**. Zadig should automatically detect the bootloader device, but you may sometimes need to check **Options → List All Devices** and select the device from the dropdown instead.
- For keyboards with Atmel AVR MCUs, the bootloader will be named something similar to `ATm32U4DFU`, and have a Vendor ID of `03EB`.
- USBasp bootloaders will appear as `USBasp`, with a VID/PID of `16C0:05DC`.
- AVR keyboards flashed with the QMK-DFU bootloader will be named `<keyboard name> Bootloader` and will also have the VID `03EB`.
- For most ARM keyboards, it will be called `STM32 BOOTLOADER`, and have a VID/PID of `0483:DF11`.
!> If Zadig lists one or more devices with the `HidUsb` driver, your keyboard is probably not in bootloader mode. The arrow will be colored orange and you will be asked to confirm modifying a system driver. **Do not** proceed if this is the case! !> If Zadig lists one or more devices with the `HidUsb` driver, your keyboard is probably not in bootloader mode. The arrow will be colored orange and you will be asked to confirm modifying a system driver. **Do not** proceed if this is the case!
If the arrow appears green, select the driver, and click **Install Driver**. The `libusb-win32` driver will usually work for AVR, and `WinUSB` for ARM, but if you still cannot flash the board, try installing a different driver from the list. USBAspLoader devices must use the `libusbK` driver. If the arrow appears green, select the driver, and click **Install Driver**. See the [list of known bootloaders](#list-of-known-bootloaders) for the correct driver to install.
![Zadig with a bootloader driver correctly installed](https://i.imgur.com/b8VgXzx.png) ![Zadig with a bootloader driver correctly installed](https://i.imgur.com/b8VgXzx.png)
@@ -43,6 +38,40 @@ Right-click it and hit **Uninstall device**. Make sure to tick **Delete the driv
![The Device Uninstall dialog, with the "delete driver" checkbox ticked](https://i.imgur.com/aEs2RuA.png) ![The Device Uninstall dialog, with the "delete driver" checkbox ticked](https://i.imgur.com/aEs2RuA.png)
Click **Action → Scan for hardware changes**. At this point, you should be able to type again. Double check in Zadig that the keyboard device(s) are using the `HidUsb` driver. If so, you're all done, and your board should be functional again! Click **Action → Scan for hardware changes**. At this point, you should be able to type again. Double check in Zadig that the keyboard device(s) are using the `HidUsb` driver. If so, you're all done, and your board should be functional again! Otherwise, repeat the process until Zadig reports the correct driver.
?> A full reboot of your computer may sometimes be necessary at this point, to get Windows to pick up the new driver. ?> A full reboot of your computer may sometimes be necessary at this point, to get Windows to pick up the new driver.
## List of Known Bootloaders
This is a list of known bootloader devices and their USB vendor and product IDs, as well as the correct driver to assign for flashing with QMK. Note that the usbser and HidUsb drivers are built in to Windows, and cannot be assigned with Zadig - if your device has an incorrect driver, you must use the Device Manager to uninstall it as described in the previous section.
The device name here is the name that appears in Zadig, and may not be what the Device Manager or QMK Toolbox displays.
|Bootloader |Device Name |VID/PID |Driver |
|-------------|------------------------------|--------------|-------|
|`atmel-dfu` |ATmega16u2 DFU |`03EB:2FEF` |libusb0|
|`atmel-dfu` |ATmega32U2 DFU |`03EB:2FF0` |libusb0|
|`atmel-dfu` |ATm16U4 DFU V1.0.2 |`03EB:2FF3` |libusb0|
|`atmel-dfu` |ATm32U4DFU |`03EB:2FF4` |libusb0|
|`atmel-dfu` |*none* (AT90USB64) |`03EB:2FF9` |libusb0|
|`atmel-dfu` |AT90USB128 DFU |`03EB:2FFB` |libusb0|
|`qmk-dfu` |(keyboard name) Bootloader |As `atmel-dfu`|libusb0|
|`halfkay` |*none* |`16C0:0478` |HidUsb |
|`caterina` |Pro Micro 3.3V |`1B4F:9203` |usbser |
|`caterina` |Pro Micro 5V |`1B4F:9205` |usbser |
|`caterina` |LilyPadUSB |`1B4F:9207` |usbser |
|`caterina` |Pololu A-Star 32U4 Bootloader |`1FFB:0101` |usbser |
|`caterina` |Arduino Leonardo |`2341:0036` |usbser |
|`caterina` |Arduino Micro |`2341:0037` |usbser |
|`caterina` |Adafruit Feather 32u4 |`239A:000C` |usbser |
|`caterina` |Adafruit ItsyBitsy 32u4 3V |`239A:000D` |usbser |
|`caterina` |Adafruit ItsyBitsy 32u4 5V |`239A:000E` |usbser |
|`caterina` |Arduino Leonardo |`2A03:0036` |usbser |
|`caterina` |Arduino Micro |`2A03:0037` |usbser |
|`bootloadHID`|HIDBoot |`16C0:05DF` |HidUsb |
|`USBasp` |USBasp |`16C0:05DC` |libusbK|
|`apm32-dfu` |??? |`314B:0106` |WinUSB |
|`stm32-dfu` |STM32 BOOTLOADER |`0483:DF11` |WinUSB |
|`kiibohd` |Kiibohd DFU Bootloader |`1C11:B007` |WinUSB |
|`stm32duino` |Maple 003 |`1EAF:0003` |WinUSB |
+1
View File
@@ -40,6 +40,7 @@ Module | Equivalent `#define` | Source
-----------------|---------------------------------|------------------------------------------ -----------------|---------------------------------|------------------------------------------
CAT24C512 EEPROM | `#define EEPROM_I2C_CAT24C512` | <https://www.sparkfun.com/products/14764> CAT24C512 EEPROM | `#define EEPROM_I2C_CAT24C512` | <https://www.sparkfun.com/products/14764>
RM24C512C EEPROM | `#define EEPROM_I2C_RM24C512C` | <https://www.sparkfun.com/products/14764> RM24C512C EEPROM | `#define EEPROM_I2C_RM24C512C` | <https://www.sparkfun.com/products/14764>
24LC64 EEPROM | `#define EEPROM_I2C_24LC64` | <https://www.microchip.com/wwwproducts/en/24LC64>
24LC128 EEPROM | `#define EEPROM_I2C_24LC128` | <https://www.microchip.com/wwwproducts/en/24LC128> 24LC128 EEPROM | `#define EEPROM_I2C_24LC128` | <https://www.microchip.com/wwwproducts/en/24LC128>
24LC256 EEPROM | `#define EEPROM_I2C_24LC256` | <https://www.sparkfun.com/products/525> 24LC256 EEPROM | `#define EEPROM_I2C_24LC256` | <https://www.sparkfun.com/products/525>
MB85RC256V FRAM | `#define EEPROM_I2C_MB85RC256V` | <https://www.adafruit.com/product/1895> MB85RC256V FRAM | `#define EEPROM_I2C_MB85RC256V` | <https://www.adafruit.com/product/1895>
-1
View File
@@ -33,4 +33,3 @@ Soporte para hasta 2 controladores. Cada controlador implementa 2 matrices charl
## IS31FL3733 ## IS31FL3733
Soporte para hasta un solo controlador con espacio para expansión. Cada controlador puede controlar 192 LEDs individuales o 64 LEDs RGB. Para obtener más información sobre cómo configurar el controlador, consulta la página de [Matriz RGB](feature_rgb_matrix.md). Soporte para hasta un solo controlador con espacio para expansión. Cada controlador puede controlar 192 LEDs individuales o 64 LEDs RGB. Para obtener más información sobre cómo configurar el controlador, consulta la página de [Matriz RGB](feature_rgb_matrix.md).
+3 -1
View File
@@ -41,7 +41,9 @@ Para plataformas compatibles, [QMK Toolbox](https://github.com/qmk/qmk_toolbox)
A veces, es útil imprimir mensajes de depuración desde tu [código personalizado](custom_quantum_functions.md). Hacerlo es bastante simple. Comienza incluyendo `print.h` al principio de tu fichero: A veces, es útil imprimir mensajes de depuración desde tu [código personalizado](custom_quantum_functions.md). Hacerlo es bastante simple. Comienza incluyendo `print.h` al principio de tu fichero:
#include <print.h> ```c
#include "print.h"
```
Después de eso puedes utilzar algunas funciones print diferentes: Después de eso puedes utilzar algunas funciones print diferentes:
+28 -14
View File
@@ -15,25 +15,31 @@ problem.
When you tap a key, it stays depressed for a short period of time before it is When you tap a key, it stays depressed for a short period of time before it is
then released. This depressed time is a different length for everyone. Auto Shift then released. This depressed time is a different length for everyone. Auto Shift
defines a constant `AUTO_SHIFT_TIMEOUT` which is typically set to twice your defines a constant `AUTO_SHIFT_TIMEOUT` which is typically set to twice your
normal pressed state time. When you press a key, a timer starts and then stops normal pressed state time. When you press a key, a timer starts, and if you
when you release the key. If the time depressed is greater than or equal to the have not released the key after the `AUTO_SHIFT_TIMEOUT` period, then a shifted
`AUTO_SHIFT_TIMEOUT`, then a shifted version of the key is emitted. If the time version of the key is emitted. If the time is less than the `AUTO_SHIFT_TIMEOUT`
is less than the `AUTO_SHIFT_TIMEOUT` time, then the normal state is emitted. time, or you press another key, then the normal state is emitted.
If `AUTO_SHIFT_REPEAT` is defined, there is keyrepeat support. Holding the key
down will repeat the shifted key, though this can be disabled with
`AUTO_SHIFT_NO_AUTO_REPEAT`. If you want to repeat the normal key, then tap it
once then immediately (within `TAPPING_TERM`) hold it down again (this works
with the shifted value as well if auto-repeat is disabled).
## Are There Limitations to Auto Shift? ## Are There Limitations to Auto Shift?
Yes, unfortunately. Yes, unfortunately.
1. Key repeat will cease to work. For example, before if you wanted 20 'a' You will have characters that are shifted when you did not intend on shifting, and
characters, you could press and hold the 'a' key for a second or two. This no other characters you wanted shifted, but were not. This simply comes down to
longer works with Auto Shift because it is timing your depressed time instead practice. As we get in a hurry, we think we have hit the key long enough for a
of emitting a depressed key state to your operating system. shifted version, but we did not. On the other hand, we may think we are tapping
2. You will have characters that are shifted when you did not intend on shifting, and the keys, but really we have held it for a little longer than anticipated.
other characters you wanted shifted, but were not. This simply comes down to
practice. As we get in a hurry, we think we have hit the key long enough Additionally, with keyrepeat the desired shift state can get mixed up. It will
for a shifted version, but we did not. On the other hand, we may think we are always 'belong' to the last key pressed. For example, keyrepeating a capital
tapping the keys, but really we have held it for a little longer than and then tapping something lowercase (whether or not it's an Auto Shift key)
anticipated. will result in the capital's *key* still being held, but shift not.
## How Do I Enable Auto Shift? ## How Do I Enable Auto Shift?
@@ -103,6 +109,14 @@ Do not Auto Shift numeric keys, zero through nine.
Do not Auto Shift alpha characters, which include A through Z. Do not Auto Shift alpha characters, which include A through Z.
### AUTO_SHIFT_REPEAT (simple define)
Enables keyrepeat.
### AUTO_SHIFT_NO_AUTO_REPEAT (simple define)
Disables automatically keyrepeating when `AUTO_SHIFT_TIMEOUT` is exceeded.
## Using Auto Shift Setup ## Using Auto Shift Setup
This will enable you to define three keys temporarily to increase, decrease and report your `AUTO_SHIFT_TIMEOUT`. This will enable you to define three keys temporarily to increase, decrease and report your `AUTO_SHIFT_TIMEOUT`.
+9 -8
View File
@@ -62,14 +62,15 @@ Valid driver values are `pwm`, `software`, `custom` or `no`. See below for help
To configure the backlighting, `#define` these in your `config.h`: To configure the backlighting, `#define` these in your `config.h`:
|Define |Default |Description | | Define | Default | Description |
|---------------------|-------------|-------------------------------------------------------------------------------------| |------------------------|---------------|-------------------------------------------------------------------------------------------------------------------|
|`BACKLIGHT_PIN` |*Not defined*|The pin that controls the LED(s) | | `BACKLIGHT_PIN` | *Not defined* | The pin that controls the LED(s) |
|`BACKLIGHT_LEVELS` |`3` |The number of brightness levels (maximum 31 excluding off) | | `BACKLIGHT_LEVELS` | `3` | The number of brightness levels (maximum 31 excluding off) |
|`BACKLIGHT_CAPS_LOCK`|*Not defined*|Enable Caps Lock indicator using backlight (for keyboards without dedicated LED) | | `BACKLIGHT_CAPS_LOCK` | *Not defined* | Enable Caps Lock indicator using backlight (for keyboards without dedicated LED) |
|`BACKLIGHT_BREATHING`|*Not defined*|Enable backlight breathing, if supported | | `BACKLIGHT_BREATHING` | *Not defined* | Enable backlight breathing, if supported |
|`BREATHING_PERIOD` |`6` |The length of one backlight "breath" in seconds | | `BREATHING_PERIOD` | `6` | The length of one backlight "breath" in seconds |
|`BACKLIGHT_ON_STATE` |`1` |The state of the backlight pin when the backlight is "on" - `1` for high, `0` for low| | `BACKLIGHT_ON_STATE` | `1` | The state of the backlight pin when the backlight is "on" - `1` for high, `0` for low |
| `BACKLIGHT_LIMIT_VAL ` | `255` | The maximum duty cycle of the backlight -- `255` allows for full brightness, any lower will decrease the maximum. |
Unless you are designing your own keyboard, you generally should not need to change the `BACKLIGHT_PIN` or `BACKLIGHT_ON_STATE`. Unless you are designing your own keyboard, you generally should not need to change the `BACKLIGHT_PIN` or `BACKLIGHT_ON_STATE`.
-1
View File
@@ -148,4 +148,3 @@ The following old names for existing algorithms will continue to be supported, h
* eager_pk - old name for sym_eager_pk * eager_pk - old name for sym_eager_pk
* sym_pk - old name for sym_defer_pk * sym_pk - old name for sym_defer_pk
* eager_pr - old name for sym_eager_pr * eager_pr - old name for sym_eager_pr
+8 -1
View File
@@ -32,13 +32,20 @@ Additionally, the resolution, which defines how many pulses the encoder register
#define ENCODER_RESOLUTION 4 #define ENCODER_RESOLUTION 4
``` ```
It can also be defined per-encoder, by instead defining:
```c
#define ENCODER_RESOLUTIONS { 4, 2 }
```
## Split Keyboards ## Split Keyboards
If you are using different pinouts for the encoders on each half of a split keyboard, you can define the pinout for the right half like this: If you are using different pinouts for the encoders on each half of a split keyboard, you can define the pinout (and optionally, resolutions) for the right half like this:
```c ```c
#define ENCODERS_PAD_A_RIGHT { encoder1a, encoder2a } #define ENCODERS_PAD_A_RIGHT { encoder1a, encoder2a }
#define ENCODERS_PAD_B_RIGHT { encoder1b, encoder2b } #define ENCODERS_PAD_B_RIGHT { encoder1b, encoder2b }
#define ENCODER_RESOLUTIONS_RIGHT { 2, 4 }
``` ```
## Callbacks ## Callbacks
+14 -7
View File
@@ -42,14 +42,21 @@ First you will need a build a circuit to drive the solenoid through a mosfet as
[Wiring diagram provided by Adafruit](https://playground.arduino.cc/uploads/Learning/solenoid_driver.pdf) [Wiring diagram provided by Adafruit](https://playground.arduino.cc/uploads/Learning/solenoid_driver.pdf)
| Settings | Default | Description | | Settings | Default | Description |
|--------------------------|---------------|-------------------------------------------------------| |----------------------------|----------------------|-------------------------------------------------------|
|`SOLENOID_PIN` | *Not defined* |Configures the pin that the Solenoid is connected to. | |`SOLENOID_PIN` | *Not defined* |Configures the pin that the Solenoid is connected to. |
|`SOLENOID_DEFAULT_DWELL` | `12` ms |Configures the default dwell time for the solenoid. | |`SOLENOID_DEFAULT_DWELL` | `12` ms |Configures the default dwell time for the solenoid. |
|`SOLENOID_MIN_DWELL` | `4` ms |Sets the lower limit for the dwell. | |`SOLENOID_MIN_DWELL` | `4` ms |Sets the lower limit for the dwell. |
|`SOLENOID_MAX_DWELL` | `100` ms |Sets the upper limit for the dwell. | |`SOLENOID_MAX_DWELL` | `100` ms |Sets the upper limit for the dwell. |
|`SOLENOID_DWELL_STEP_SIZE` | `1` ms |The step size to use when `HPT_DWL*` keycodes are sent |
|`SOLENOID_DEFAULT_BUZZ` | `0` (disabled) |On HPT_RST buzz is set "on" if this is "1" |
|`SOLENOID_BUZZ_ACTUATED` | `SOLENOID_MIN_DWELL` |Actuated-time when the solenoid is in buzz mode |
|`SOLENOID_BUZZ_NONACTUATED` | `SOLENOID_MIN_DWELL` |Non-Actuated-time when the solenoid is in buzz mode |
?> Dwell time is how long the "plunger" stays activated. The dwell time changes how the solenoid sounds. * If solenoid buzz is off, then dwell time is how long the "plunger" stays activated. The dwell time changes how the solenoid sounds.
* If solenoid buzz is on, then dwell time sets the length of the buzz, while `SOLENOID_BUZZ_ACTUATED` and `SOLENOID_BUZZ_NONACTUATED` set the (non-)actuation times withing the buzz period.
* With the current implementation, for any of the above time settings, the precision of these settings may be affected by how fast the keyboard is able to scan the matrix.
Therefore, if the keyboards scanning routine is slow, it may be preferable to set `SOLENOID_DWELL_STEP_SIZE` to a value slightly smaller than the time it takes to scan the keyboard.
Beware that some pins may be powered during bootloader (ie. A13 on the STM32F303 chip) and will result in the solenoid kept in the on state through the whole flashing process. This may overheat and damage the solenoid. If you find that the pin the solenoid is connected to is triggering the solenoid during bootloader/DFU, select another pin. Beware that some pins may be powered during bootloader (ie. A13 on the STM32F303 chip) and will result in the solenoid kept in the on state through the whole flashing process. This may overheat and damage the solenoid. If you find that the pin the solenoid is connected to is triggering the solenoid during bootloader/DFU, select another pin.
+6
View File
@@ -141,6 +141,12 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
} }
``` ```
### Axis Resolution
By default, the resolution of each axis is 8 bit, giving a range of -127 to +127. If you need higher precision, you can increase it by defining eg. `JOYSTICK_AXES_RESOLUTION 12` in your `config.h`. The resolution must be between 8 and 16.
Note that the supported AVR MCUs have a 10-bit ADC, and 12-bit for most STM32 MCUs.
### Triggering Joystick Buttons ### Triggering Joystick Buttons
Joystick buttons are normal Quantum keycodes, defined as `JS_BUTTON0` to `JS_BUTTON31`, depending on the number of buttons you have configured. Joystick buttons are normal Quantum keycodes, defined as `JS_BUTTON0` to `JS_BUTTON31`, depending on the number of buttons you have configured.
+2 -1
View File
@@ -10,7 +10,8 @@ If you want to use RGB LED's you should use the [RGB Matrix Subsystem](feature_r
There is basic support for addressable LED matrix lighting with the I2C IS31FL3731 RGB controller. To enable it, add this to your `rules.mk`: There is basic support for addressable LED matrix lighting with the I2C IS31FL3731 RGB controller. To enable it, add this to your `rules.mk`:
LED_MATRIX_ENABLE = IS31FL3731 LED_MATRIX_ENABLE = yes
LED_MATRIX_DRIVER = IS31FL3731
You can use between 1 and 4 IS31FL3731 IC's. Do not specify `LED_DRIVER_ADDR_<N>` defines for IC's that are not present on your keyboard. You can define the following items in `config.h`: You can use between 1 and 4 IS31FL3731 IC's. Do not specify `LED_DRIVER_ADDR_<N>` defines for IC's that are not present on your keyboard. You can define the following items in `config.h`:
+4 -2
View File
@@ -182,7 +182,9 @@ Which would send Left Control+`a` (Left Control down, `a`, Left Control up) - no
By default, it assumes a US keymap with a QWERTY layout; if you want to change that (e.g. if your OS uses software Colemak), include this somewhere in your keymap: By default, it assumes a US keymap with a QWERTY layout; if you want to change that (e.g. if your OS uses software Colemak), include this somewhere in your keymap:
#include <sendstring_colemak.h> ```c
#include "sendstring_colemak.h"
```
### Strings in Memory ### Strings in Memory
@@ -207,7 +209,7 @@ SEND_STRING(".."SS_TAP(X_END));
There are some functions you may find useful in macro-writing. Keep in mind that while you can write some fairly advanced code within a macro, if your functionality gets too complex you may want to define a custom keycode instead. Macros are meant to be simple. There are some functions you may find useful in macro-writing. Keep in mind that while you can write some fairly advanced code within a macro, if your functionality gets too complex you may want to define a custom keycode instead. Macros are meant to be simple.
?> You can also use the functions described in [Useful function](ref_functions.md) for additional functionality. For example `reset_keyboard()` allows you to reset the keyboard as part of a macro. ?> You can also use the functions described in [Useful functions](ref_functions.md) for additional functionality. For example `reset_keyboard()` allows you to reset the keyboard as part of a macro.
### `record->event.pressed` ### `record->event.pressed`
+4
View File
@@ -140,3 +140,7 @@ To use constant speed mode, you must at least define `MK_COMBINED` in your keyma
```c ```c
#define MK_COMBINED #define MK_COMBINED
``` ```
## Use with PS/2 Mouse and Pointing Device
Mouse keys button state is shared with [PS/2 mouse](feature_ps2_mouse.md) and [pointing device](feature_pointing_device.md) so mouse keys button presses can be used for clicks and drags.
+1
View File
@@ -150,6 +150,7 @@ void oled_task_user(void) {
|`OLED_IC` |`OLED_IC_SSD1306`|Set to `OLED_IC_SH1106` if you're using the SH1106 OLED controller. | |`OLED_IC` |`OLED_IC_SSD1306`|Set to `OLED_IC_SH1106` if you're using the SH1106 OLED controller. |
|`OLED_COLUMN_OFFSET` |`0` |(SH1106 only.) Shift output to the right this many pixels.<br />Useful for 128x64 displays centered on a 132x64 SH1106 IC.| |`OLED_COLUMN_OFFSET` |`0` |(SH1106 only.) Shift output to the right this many pixels.<br />Useful for 128x64 displays centered on a 132x64 SH1106 IC.|
|`OLED_BRIGHTNESS` |`255` |The default brightness level of the OLED, from 0 to 255. | |`OLED_BRIGHTNESS` |`255` |The default brightness level of the OLED, from 0 to 255. |
|`OLED_UPDATE_INTERVAL` |`0` |Set the time interval for updating the OLED display in ms. This will improve the matrix scan rate. |
## 128x64 & Custom sized OLED Displays ## 128x64 & Custom sized OLED Displays
+1 -1
View File
@@ -29,7 +29,7 @@ void raw_hid_receive(uint8_t *data, uint8_t length) {
} }
``` ```
`raw_hid_receive` can receive variable size packets from host with maximum length `RAW_EPSIZE`. `raw_hid_send` on the other hand can send packets to host of exactly `RAW_EPSIZE` length, therefore it should be used with data of length `RAW_EPSIZE`. These two functions send and receive packets of length `RAW_EPSIZE` bytes to and from the host (32 on LUFA/ChibiOS/V-USB, 64 on ATSAM).
Make sure to flash raw enabled firmware before proceeding with working on the host side. Make sure to flash raw enabled firmware before proceeding with working on the host side.
+20 -3
View File
@@ -11,7 +11,8 @@ If you want to use single color LED's you should use the [LED Matrix Subsystem](
There is basic support for addressable RGB matrix lighting with the I2C IS31FL3731 RGB controller. To enable it, add this to your `rules.mk`: There is basic support for addressable RGB matrix lighting with the I2C IS31FL3731 RGB controller. To enable it, add this to your `rules.mk`:
```makefile ```makefile
RGB_MATRIX_ENABLE = IS31FL3731 RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = IS31FL3731
``` ```
Configure the hardware via your `config.h`: Configure the hardware via your `config.h`:
@@ -62,7 +63,8 @@ Where `Cx_y` is the location of the LED in the matrix defined by [the datasheet]
There is basic support for addressable RGB matrix lighting with the I2C IS31FL3733 RGB controller. To enable it, add this to your `rules.mk`: There is basic support for addressable RGB matrix lighting with the I2C IS31FL3733 RGB controller. To enable it, add this to your `rules.mk`:
```makefile ```makefile
RGB_MATRIX_ENABLE = IS31FL3733 RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = IS31FL3733
``` ```
Configure the hardware via your `config.h`: Configure the hardware via your `config.h`:
@@ -112,7 +114,8 @@ Where `X_Y` is the location of the LED in the matrix defined by [the datasheet](
There is basic support for addressable RGB matrix lighting with a WS2811/WS2812{a,b,c} addressable LED strand. To enable it, add this to your `rules.mk`: There is basic support for addressable RGB matrix lighting with a WS2811/WS2812{a,b,c} addressable LED strand. To enable it, add this to your `rules.mk`:
```makefile ```makefile
RGB_MATRIX_ENABLE = WS2812 RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = WS2812
``` ```
Configure the hardware via your `config.h`: Configure the hardware via your `config.h`:
@@ -303,6 +306,12 @@ To declare new effects, create a new `rgb_matrix_user/kb.inc` that looks somethi
`rgb_matrix_user.inc` should go in the root of the keymap directory. `rgb_matrix_user.inc` should go in the root of the keymap directory.
`rgb_matrix_kb.inc` should go in the root of the keyboard directory. `rgb_matrix_kb.inc` should go in the root of the keyboard directory.
To use custom effects in your code, simply prepend `RGB_MATRIX_CUSTOM_` to the effect name specified in `RGB_MATRIX_EFFECT()`. For example, an effect declared as `RGB_MATRIX_EFFECT(my_cool_effect)` would be referenced with:
```c
rgb_matrix_mode(RGB_MATRIX_CUSTOM_my_cool_effect);
```
```c ```c
// !!! DO NOT ADD #pragma once !!! // // !!! DO NOT ADD #pragma once !!! //
@@ -482,6 +491,14 @@ void rgb_matrix_indicators_kb(void) {
} }
``` ```
In addition, there are the advanced indicator functions. These are aimed at those with heavily customized displays, where rendering every LED per cycle is expensive. Such as some of the "drashna" layouts. This includes a special macro to help make this easier to use: `RGB_MATRIX_INDICATOR_SET_COLOR(i, r, g, b)`.
```c
void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
RGB_MATRIX_INDICATOR_SET_COLOR(index, red, green, blue);
}
```
### Suspended state :id=suspended-state ### Suspended state :id=suspended-state
To use the suspend feature, make sure that `#define RGB_DISABLE_WHEN_USB_SUSPENDED true` is added to the `config.h` file. To use the suspend feature, make sure that `#define RGB_DISABLE_WHEN_USB_SUSPENDED true` is added to the `config.h` file.
+87
View File
@@ -0,0 +1,87 @@
# Sequencer
Since QMK has experimental support for MIDI, you can now turn your keyboard into a [step sequencer](https://en.wikipedia.org/wiki/Music_sequencer#Step_sequencers)!
!> **IMPORTANT:** This feature is highly experimental, it has only been tested on a Planck EZ so far. Also, the scope will be limited to support the drum machine use-case to start with.
## Enable the step sequencer
Add the following line to your `rules.mk`:
```make
SEQUENCER_ENABLE = yes
```
By default the sequencer has 16 steps, but you can override this setting in your `config.h`:
```c
#define SEQUENCER_STEPS 32
```
## Tracks
You can program up to 8 independent tracks with the step sequencer. Select the tracks you want to edit, enable or disable some steps, and start the sequence!
## Resolutions
While the tempo defines the absolute speed at which the sequencer goes through the steps, the resolution defines the granularity of these steps (from coarser to finer).
|Resolution |Description |
|---------- |----------- |
|`SQ_RES_2` |Every other beat |
|`SQ_RES_2T` |Every 1.5 beats |
|`SQ_RES_4` |Every beat |
|`SQ_RES_4T` |Three times per 2 beats|
|`SQ_RES_8` |Twice per beat |
|`SQ_RES_8T` |Three times per beat |
|`SQ_RES_16` |Four times per beat |
|`SQ_RES_16T` |Six times per beat |
|`SQ_RES_32` |Eight times per beat |
## Keycodes
|Keycode |Description |
|------- |----------- |
|`SQ_ON` |Start the step sequencer |
|`SQ_OFF` |Stop the step sequencer |
|`SQ_TOG` |Toggle the step sequencer playback |
|`SQ_SALL`|Enable all the steps |
|`SQ_SCLR`|Disable all the steps |
|`SQ_S(n)`|Toggle the step `n` |
|`SQ_TMPD`|Decrease the tempo |
|`SQ_TMPU`|Increase the tempo |
|`SQ_R(n)`|Set the resolution to n |
|`SQ_RESD`|Change to the slower resolution |
|`SQ_RESU`|Change to the faster resolution |
|`SQ_T(n)`|Set `n` as the only active track or deactivate all |
## Functions
|Function |Description |
|-------- |----------- |
|`bool is_sequencer_on(void);` |Return whether the sequencer is playing |
|`void sequencer_toggle(void);` |Toggle the step sequencer playback |
|`void sequencer_on(void);` |Start the step sequencer |
|`void sequencer_off(void);` |Stop the step sequencer |
|`bool is_sequencer_step_on(uint8_t step);` |Return whether the step is currently enabled |
|`void sequencer_set_step(uint8_t step, bool value);` |Enable or disable the step |
|`void sequencer_set_step_on();` |Enable the step |
|`void sequencer_set_step_off();` |Disable the step |
|`void sequencer_toggle_step(uint8_t step);` |Toggle the step |
|`void sequencer_set_all_steps(bool value);` |Enable or disable all the steps |
|`void sequencer_set_all_steps_on();` |Enable all the steps |
|`void sequencer_set_all_steps_off();` |Disable all the steps |
|`uint8_t sequencer_get_tempo(void);` |Return the current tempo |
|`void sequencer_set_tempo(uint8_t tempo);` |Set the tempo to `tempo` (between 1 and 255) |
|`void sequencer_increase_tempo(void);` |Increase the tempo |
|`void sequencer_decrease_tempo(void);` |Decrease the tempo |
|`sequencer_resolution_t sequencer_get_resolution(void);` |Return the current resolution |
|`void sequencer_set_resolution(sequencer_resolution_t resolution);` |Set the resolution to `resolution` |
|`void sequencer_increase_resolution(void);` |Change to the faster resolution |
|`void sequencer_decrease_resolution(void);` |Change to the slower resolution |
|`bool is_sequencer_track_active(uint8_t track);` |Return whether the track is active |
|`void sequencer_set_track_activation(uint8_t track, bool value);` |Activate or deactivate the `track` |
|`void sequencer_toggle_track_activation(uint8_t track);` |Toggle the `track` |
|`void sequencer_activate_track(uint8_t track);` |Activate the `track` |
|`void sequencer_deactivate_track(uint8_t track);` |Deactivate the `track` |
|`void sequencer_toggle_single_active_track(uint8_t track);` |Set `track` as the only active track or deactivate all |
+20
View File
@@ -237,6 +237,26 @@ This sets the maximum timeout when detecting master/slave when using `SPLIT_USB_
``` ```
This sets the poll frequency when detecting master/slave when using `SPLIT_USB_DETECT` This sets the poll frequency when detecting master/slave when using `SPLIT_USB_DETECT`
## Hardware Considerations and Mods
While most any Pro Micro can be used, micro controllers like the AVR Teensys and most (if not all) ARM boards require the Split USB Detect.
However, with the Teensy 2.0 and Teensy++ 2.0, there is a simple hardware mod that you can perform to add VBUS detection, so you don't need the Split USB detection option.
You'll only need a few things:
* A knife (x-acto knife, ideally)
* A solder station or hot air station
* An appropriate Schottky diode, such as the [PMEG2005EH](https://www.digikey.com/en/products/detail/nexperia-usa-inc/PMEG2005EH,115/1589924)
You'll need to cut the small trace between the 5V and center pads on the back of the Teensy.
Once you have done that, you will want to solder the diode from the 5V pad to the center pad.
You may need to use the 5V pad from the regulator block above as the pads were too small and placed too closely together to place the Schottky diode properly.
![Teensy++ 2.0](https://i.imgur.com/BPEC5n5.png)
## Additional Resources ## Additional Resources
Nicinabox has a [very nice and detailed guide](https://github.com/nicinabox/lets-split-guide) for the Let's Split keyboard, that covers most everything you need to know, including troubleshooting information. Nicinabox has a [very nice and detailed guide](https://github.com/nicinabox/lets-split-guide) for the Let's Split keyboard, that covers most everything you need to know, including troubleshooting information.
-1
View File
@@ -129,4 +129,3 @@ As defined in `keymap_steno.h`.
|`STN_RES1`||(GeminiPR only)| |`STN_RES1`||(GeminiPR only)|
|`STN_RES2`||(GeminiPR only)| |`STN_RES2`||(GeminiPR only)|
|`STN_PWR`||(GeminiPR only)| |`STN_PWR`||(GeminiPR only)|
+1 -1
View File
@@ -184,7 +184,7 @@ If you wanted to consolidate macros and other functions into your userspace for
First, you'd want to go through all of your `keymap.c` files and replace `process_record_user` with `process_record_keymap` instead. This way, you can still use keyboard specific codes on those boards, and use your custom "global" keycodes as well. You'll also want to replace `SAFE_RANGE` with `NEW_SAFE_RANGE` so that you wont have any overlapping keycodes First, you'd want to go through all of your `keymap.c` files and replace `process_record_user` with `process_record_keymap` instead. This way, you can still use keyboard specific codes on those boards, and use your custom "global" keycodes as well. You'll also want to replace `SAFE_RANGE` with `NEW_SAFE_RANGE` so that you wont have any overlapping keycodes
Then add `#include <name.h>` to all of your keymap.c files. This allows you to use these new keycodes without having to redefine them in each keymap. Then add `#include "<name>.h"` to all of your keymap.c files. This allows you to use these new keycodes without having to redefine them in each keymap.
Once you've done that, you'll want to set the keycode definitions that you need to the `<name>.h` file. For instance: Once you've done that, you'll want to set the keycode definitions that you need to the `<name>.h` file. For instance:
```c ```c
+3 -1
View File
@@ -42,7 +42,9 @@ Vous préférez une solution basée sur le terminal? [hid_listen](https://www.pj
Parfois, il est utile d'afficher des messages de débugage depuis votre [code custom](custom_quantum_functions.md). Le faire est assez simple. Commencez par ajouter `print.h` au début de votre fichier: Parfois, il est utile d'afficher des messages de débugage depuis votre [code custom](custom_quantum_functions.md). Le faire est assez simple. Commencez par ajouter `print.h` au début de votre fichier:
#include <print.h> ```c
#include "print.h"
```
Une fois fait, vous pouvez utiliser les fonctions print suivantes: Une fois fait, vous pouvez utiliser les fonctions print suivantes:
-1
View File
@@ -47,4 +47,3 @@ This configuration is from usbasploader's Makefile.
# | | +----- LB 2..1 (No memory lock features enabled) # | | +----- LB 2..1 (No memory lock features enabled)
# | +--------- BLB0 2..1 (No restrictions for SPM or LPM accessing the Application section) # | +--------- BLB0 2..1 (No restrictions for SPM or LPM accessing the Application section)
# +--------------- BLB1 2..1 (No restrictions for SPM or LPM accessing the Boot Loader section) # +--------------- BLB1 2..1 (No restrictions for SPM or LPM accessing the Boot Loader section)
+1 -1
View File
@@ -64,4 +64,4 @@
``` ```
מקמו את התיעוד שלכם בתוך `docs/feature_<my_cool_feature>.md`, והוסיפו קישור לקובץ זה במקום המתאים ב `docs/_sidebar.md`. אם הוספתם קודי מקשים נוספים, תקפידו להוסיף אותם ל- `docs/keycodes.md` עם לינק לעמוד היכולת שלכם. מקמו את התיעוד שלכם בתוך `docs/feature_<my_cool_feature>.md`, והוסיפו קישור לקובץ זה במקום המתאים ב `docs/_sidebar.md`. אם הוספתם קודי מקשים נוספים, תקפידו להוסיף אותם ל- `docs/keycodes.md` עם לינק לעמוד היכולת שלכם.
</div> </div>
+1 -1
View File
@@ -5,4 +5,4 @@
* [בנייה או קומפילציה של QMK](faq_build.md) * [בנייה או קומפילציה של QMK](faq_build.md)
* [דיבאגינג ופתרון בעיות של QMK](faq_debug.md) * [דיבאגינג ופתרון בעיות של QMK](faq_debug.md)
* [מיפוי מקשים](faq_keymap.md) * [מיפוי מקשים](faq_keymap.md)
</div> </div>
+1 -1
View File
@@ -14,4 +14,4 @@ TMK עוצב ומומש במקור ע״י [Jun Wako](https://github.com/tmk). QM
מנק׳ מבט של הפרוייקט וניהול הקהילה, TMK מנהל את כל המקלדות הנתמכות בעצמו, עם מעט תמיכה מהקהילה. כל אחד יכול לעשות פורק מהפרוייקט עבור מקלדות אחרות. רק מס׳ מיפויי מקשים נמצאים בברירת המחדל כך שאנשים בד״כ לא משתפים מיפויי מקשים זה עם זה. QMK מעודד את השיתוף של המקלדות וקודי המקשים דרך רפוזיטורי בניהול מרכזי, אשר מקבל את כל בקשות ה- Pull Requests שעומדות בסטנדרט האיכות. רובם מנוהלות ע״י הקהילה, אבל הצוות של QMK עוזר כשנדרש. מנק׳ מבט של הפרוייקט וניהול הקהילה, TMK מנהל את כל המקלדות הנתמכות בעצמו, עם מעט תמיכה מהקהילה. כל אחד יכול לעשות פורק מהפרוייקט עבור מקלדות אחרות. רק מס׳ מיפויי מקשים נמצאים בברירת המחדל כך שאנשים בד״כ לא משתפים מיפויי מקשים זה עם זה. QMK מעודד את השיתוף של המקלדות וקודי המקשים דרך רפוזיטורי בניהול מרכזי, אשר מקבל את כל בקשות ה- Pull Requests שעומדות בסטנדרט האיכות. רובם מנוהלות ע״י הקהילה, אבל הצוות של QMK עוזר כשנדרש.
לשתי הגישות יש יתרונות וחסרונות וקוד עובר בחופשיות בין TMK ל- QMK כשצריך. לשתי הגישות יש יתרונות וחסרונות וקוד עובר בחופשיות בין TMK ל- QMK כשצריך.
</div> </div>
+1 -1
View File
@@ -14,4 +14,4 @@
## סוגיות GitHub ## סוגיות GitHub
ניתן לפתוח [סוגייה ב-GitHub](https://github.com/qmk/qmk_firmware/issues). הדבר שימושי במיוחד כאשר הסוגיה דורשת דיון עמוק וארוך או דיבאגינג. ניתן לפתוח [סוגייה ב-GitHub](https://github.com/qmk/qmk_firmware/issues). הדבר שימושי במיוחד כאשר הסוגיה דורשת דיון עמוק וארוך או דיבאגינג.
</div> </div>
+1 -1
View File
@@ -7,4 +7,4 @@ QMK רצה על מגוון של חומרות. אם המעבד שלך יכול ל
* [מעבדי AVR](hardware_avr.md) * [מעבדי AVR](hardware_avr.md)
* מעבדי ARM (TBD) * מעבדי ARM (TBD)
* [מנהלי התקנים](hardware_drivers.md) * [מנהלי התקנים](hardware_drivers.md)
</div> </div>
+1 -1
View File
@@ -13,4 +13,4 @@
מקורות לפקודות שורה (Command Line): מקורות לפקודות שורה (Command Line):
* [מדריך טוב על Command Line](https://www.codecademy.com/learn/learn-the-command-line) * [מדריך טוב על Command Line](https://www.codecademy.com/learn/learn-the-command-line)
</div> </div>
+5
View File
@@ -126,6 +126,10 @@
headings: 'h1, h2', headings: 'h1, h2',
title: 'Table of Contents', title: 'Table of Contents',
}, },
tabs: {
persist : false,
tabComments: false,
},
plugins: [ plugins: [
function (hook, vm) { function (hook, vm) {
hook.beforeEach(function (html) { hook.beforeEach(function (html) {
@@ -148,6 +152,7 @@
<script src="//unpkg.com/docsify/lib/docsify.min.js"></script> <script src="//unpkg.com/docsify/lib/docsify.min.js"></script>
<script src="//unpkg.com/docsify/lib/plugins/search.min.js"></script> <script src="//unpkg.com/docsify/lib/plugins/search.min.js"></script>
<script src="//unpkg.com/docsify/lib/plugins/emoji.min.js"></script> <script src="//unpkg.com/docsify/lib/plugins/emoji.min.js"></script>
<script src="//unpkg.com/docsify-tabs@1"></script>
<script src="//unpkg.com/docsify-copy-code@2"></script> <script src="//unpkg.com/docsify-copy-code@2"></script>
<script src="//unpkg.com/[email protected]/dist/toc.js"></script> <script src="//unpkg.com/[email protected]/dist/toc.js"></script>
<script src="//unpkg.com/prismjs/components/prism-bash.min.js"></script> <script src="//unpkg.com/prismjs/components/prism-bash.min.js"></script>
+19
View File
@@ -21,3 +21,22 @@ The following functions can provide basic control of GPIOs and are found in `qua
## Advanced Settings :id=advanced-settings ## Advanced Settings :id=advanced-settings
Each microcontroller can have multiple advanced settings regarding its GPIO. This abstraction layer does not limit the use of architecture-specific functions. Advanced users should consult the datasheet of their desired device and include any needed libraries. For AVR, the standard avr/io.h library is used; for STM32, the ChibiOS [PAL library](http://chibios.sourceforge.net/docs3/hal/group___p_a_l.html) is used. Each microcontroller can have multiple advanced settings regarding its GPIO. This abstraction layer does not limit the use of architecture-specific functions. Advanced users should consult the datasheet of their desired device and include any needed libraries. For AVR, the standard avr/io.h library is used; for STM32, the ChibiOS [PAL library](http://chibios.sourceforge.net/docs3/hal/group___p_a_l.html) is used.
## Atomic Operation
The above functions are not always guaranteed to work atomically. Therefore, if you want to prevent interruptions in the middle of operations when using multiple combinations of the above functions, use the following `ATOMIC_BLOCK_FORCEON` macro.
eg.
```c
void some_function() {
// some process
ATOMIC_BLOCK_FORCEON {
// Atomic Processing
}
// some process
}
```
`ATOMIC_BLOCK_FORCEON` forces interrupts to be disabled before the block is executed, without regard to whether they are enabled or disabled. Then, after the block is executed, the interrupt is enabled.
Note that `ATOMIC_BLOCK_FORCEON` can therefore be used if you know that interrupts are enabled before the execution of the block, or if you know that it is OK to enable interrupts at the completion of the block.
+3 -1
View File
@@ -34,7 +34,9 @@ QMK での全ての利用可能な設定にはデフォルトがあります。
これは最初に include されるものの 1 つである C ヘッダファイルで、プロジェクト全体(もし含まれる場合)にわたって持続します。多くの変数をここで設定し、他の場所からアクセスすることができます。`config.h` ファイルでは、以下のもの以外の、他の `config.h` ファイルやその他のファイルの include をしないでください: これは最初に include されるものの 1 つである C ヘッダファイルで、プロジェクト全体(もし含まれる場合)にわたって持続します。多くの変数をここで設定し、他の場所からアクセスすることができます。`config.h` ファイルでは、以下のもの以外の、他の `config.h` ファイルやその他のファイルの include をしないでください:
#include "config_common.h" ```c
#include "config_common.h"
```
## ハードウェアオプション ## ハードウェアオプション
-2
View File
@@ -43,5 +43,3 @@ endif
* eager_pk - キーごとにデバウンスします。状態が変化すると、応答は即座に行われ、その後そのキーは ```DEBOUNCE``` ミリ秒の間入力されません。 * eager_pk - キーごとにデバウンスします。状態が変化すると、応答は即座に行われ、その後そのキーは ```DEBOUNCE``` ミリ秒の間入力されません。
* sym_g - キーボードごとにデバウンスします。状態が変化すると、グローバルタイマが設定されます。```DEBOUNCE``` ミリ秒の間何も変化がなければ、全ての入力の変更がプッシュされます。 * sym_g - キーボードごとにデバウンスします。状態が変化すると、グローバルタイマが設定されます。```DEBOUNCE``` ミリ秒の間何も変化がなければ、全ての入力の変更がプッシュされます。
* sym_pk - キーごとにデバウンスします。状態が変化すると、キーごとのタイマーが設定されます。```DEBOUNCE``` ミリ秒の間そのキーに変化がなければ、キーの状態の変更がプッシュされます。 * sym_pk - キーごとにデバウンスします。状態が変化すると、キーごとのタイマーが設定されます。```DEBOUNCE``` ミリ秒の間そのキーに変化がなければ、キーの状態の変更がプッシュされます。
+2 -1
View File
@@ -15,7 +15,8 @@ RGB LED を使いたい場合は、代わりに [RGB マトリックスサブシ
I2C IS31FL3731 RGB コントローラを使ったアドレス指定可能な LED マトリックスライトのための基本的なサポートがあります:有効にするには、`rules.mk` に以下を追加します: I2C IS31FL3731 RGB コントローラを使ったアドレス指定可能な LED マトリックスライトのための基本的なサポートがあります:有効にするには、`rules.mk` に以下を追加します:
LED_MATRIX_ENABLE = IS31FL3731 LED_MATRIX_ENABLE = yes
LED_MATRIX_DRIVER = IS31FL3731
1から4個の IS31FL3731 IC を使うことができます。キーボード上に存在しない IC の `LED_DRIVER_ADDR_<N>` 定義を指定しないでください。`config.h` に以下の項目を定義することができます: 1から4個の IS31FL3731 IC を使うことができます。キーボード上に存在しない IC の `LED_DRIVER_ADDR_<N>` 定義を指定しないでください。`config.h` に以下の項目を定義することができます:
+3 -1
View File
@@ -187,7 +187,9 @@ void post_process_record_user(uint16_t keycode, keyrecord_t *record) {
デフォルトでは、QWERTY レイアウトの US キーマップを想定しています; それを変更したい場合(例えば OS がソフトウェア Colemak を使う場合)、キーマップのどこかに以下を含めます: デフォルトでは、QWERTY レイアウトの US キーマップを想定しています; それを変更したい場合(例えば OS がソフトウェア Colemak を使う場合)、キーマップのどこかに以下を含めます:
#include <sendstring_colemak.h> ```c
#include "sendstring_colemak.h"
```
### メモリ内の文字列 ### メモリ内の文字列
+1 -1
View File
@@ -189,7 +189,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
最初に、全ての `keymap.c` ファイルを調べ、代わりに `process_record_user` を `process_record_keymap` に置き換えます。この方法では、これらのキーボードでキーボード固有のコードを使用でき、カスタムの "global" キーコードも使うことができます。また、`SAFE_RANGE` を `NEW_SAFE_RANGE` に置き換えて、キーコードが重複しないようにすることもできます。 最初に、全ての `keymap.c` ファイルを調べ、代わりに `process_record_user` を `process_record_keymap` に置き換えます。この方法では、これらのキーボードでキーボード固有のコードを使用でき、カスタムの "global" キーコードも使うことができます。また、`SAFE_RANGE` を `NEW_SAFE_RANGE` に置き換えて、キーコードが重複しないようにすることもできます。
次に、全ての keymap.c ファイルに `#include <name.h>` を追加します。これにより、各キーマップでそれらを再定義することなく新しいキーコードを使うことができます。 次に、全ての keymap.c ファイルに `#include "<name>.h"` を追加します。これにより、各キーマップでそれらを再定義することなく新しいキーコードを使うことができます。
それが完了したら、必要なキーコードの定義を `<name>.h` ファイルに設定します。例えば: それが完了したら、必要なキーコードの定義を `<name>.h` ファイルに設定します。例えば:
```c ```c
-1
View File
@@ -171,4 +171,3 @@
* `device` 関連するデバイス * `device` 関連するデバイス
* `func` 登録するコールバック関数 * `func` 登録するコールバック関数
+3 -1
View File
@@ -45,7 +45,9 @@ void keyboard_post_init_user(void) {
[custom code](ja/custom_quantum_functions.md)内からデバッグメッセージを出力すると便利な場合があります。それはとても簡単です。ファイルの先頭に`print.h`のインクルードを追加します: [custom code](ja/custom_quantum_functions.md)内からデバッグメッセージを出力すると便利な場合があります。それはとても簡単です。ファイルの先頭に`print.h`のインクルードを追加します:
#include <print.h> ```c
#include "print.h"
```
そのあとは、いくつかの異なった print 関数を使用することが出来ます。 そのあとは、いくつかの異なった print 関数を使用することが出来ます。
+11 -11
View File
@@ -124,17 +124,17 @@ See also: [Basic Keycodes](keycodes_basic.md)
|`KC_F22` | |F22 |✔ | |✔ | |`KC_F22` | |F22 |✔ | |✔ |
|`KC_F23` | |F23 |✔ | |✔ | |`KC_F23` | |F23 |✔ | |✔ |
|`KC_F24` | |F24 |✔ | |✔ | |`KC_F24` | |F24 |✔ | |✔ |
|`KC_EXECUTE` |`KC_EXEC` |Execute | | |✔ | |`KC_EXECUTE` |`KC_EXEC` |Execute | | |✔ |
|`KC_HELP` | |Help | | |✔ | |`KC_HELP` | |Help | | |✔ |
|`KC_MENU` | |Menu | | |✔ | |`KC_MENU` | |Menu | | |✔ |
|`KC_SELECT` |`KC_SLCT` |Select | | |✔ | |`KC_SELECT` |`KC_SLCT` |Select | | |✔ |
|`KC_STOP` | |Stop | | |✔ | |`KC_STOP` | |Stop | | |✔ |
|`KC_AGAIN` |`KC_AGIN` |Again | | |✔ | |`KC_AGAIN` |`KC_AGIN` |Again | | |✔ |
|`KC_UNDO` | |Undo | | |✔ | |`KC_UNDO` | |Undo | | |✔ |
|`KC_CUT` | |Cut | | |✔ | |`KC_CUT` | |Cut | | |✔ |
|`KC_COPY` | |Copy | | |✔ | |`KC_COPY` | |Copy | | |✔ |
|`KC_PASTE` |`KC_PSTE` |Paste | | |✔ | |`KC_PASTE` |`KC_PSTE` |Paste | | |✔ |
|`KC_FIND` | |Find | | |✔ | |`KC_FIND` | |Find | | |✔ |
|`KC__MUTE` | |Mute | |✔ |✔ | |`KC__MUTE` | |Mute | |✔ |✔ |
|`KC__VOLUP` | |Volume Up | |✔ |✔ | |`KC__VOLUP` | |Volume Up | |✔ |✔ |
|`KC__VOLDOWN` | |Volume Down | |✔ |✔ | |`KC__VOLDOWN` | |Volume Down | |✔ |✔ |
+71 -71
View File
@@ -144,48 +144,48 @@ The basic set of keycodes are based on the [HID Keyboard/Keypad Usage Page (0x07
## Commands ## Commands
|Key |Aliases |Description | |Key |Aliases |Description |
|------------------|------------------------------|------------------------------| |------------------|------------------------------|--------------------------------------|
|`KC_PSCREEN` |`KC_PSCR` |Print Screen | |`KC_PSCREEN` |`KC_PSCR` |Print Screen |
|`KC_PAUSE` |`KC_PAUS`, `KC_BRK`, `KC_BRMU`|Pause, Brightness Up (macOS) | |`KC_PAUSE` |`KC_PAUS`, `KC_BRK`, `KC_BRMU`|Pause, Brightness Up (macOS) |
|`KC_INSERT` |`KC_INS` |Insert | |`KC_INSERT` |`KC_INS` |Insert |
|`KC_HOME` | |Home | |`KC_HOME` | |Home |
|`KC_PGUP` | |Page Up | |`KC_PGUP` | |Page Up |
|`KC_DELETE` |`KC_DEL` |Forward Delete | |`KC_DELETE` |`KC_DEL` |Forward Delete |
|`KC_END` | |End | |`KC_END` | |End |
|`KC_PGDOWN` |`KC_PGDN` |Page Down | |`KC_PGDOWN` |`KC_PGDN` |Page Down |
|`KC_RIGHT` |`KC_RGHT` |Right Arrow | |`KC_RIGHT` |`KC_RGHT` |Right Arrow |
|`KC_LEFT` | |Left Arrow | |`KC_LEFT` | |Left Arrow |
|`KC_DOWN` | |Down Arrow | |`KC_DOWN` | |Down Arrow |
|`KC_UP` | |Up Arrow | |`KC_UP` | |Up Arrow |
|`KC_APPLICATION` |`KC_APP` |Application (Windows Menu Key)| |`KC_APPLICATION` |`KC_APP` |Application (Windows Context Menu Key)|
|`KC_POWER` | |System Power (macOS/Linux) | |`KC_POWER` | |System Power |
|`KC_EXECUTE` |`KC_EXEC` |Execute | |`KC_EXECUTE` |`KC_EXEC` |Execute |
|`KC_HELP` | |Help | |`KC_HELP` | |Help |
|`KC_MENU` | |Menu | |`KC_MENU` | |Menu |
|`KC_SELECT` |`KC_SLCT` |Select | |`KC_SELECT` |`KC_SLCT` |Select |
|`KC_STOP` | |Stop | |`KC_STOP` | |Stop |
|`KC_AGAIN` |`KC_AGIN` |Again | |`KC_AGAIN` |`KC_AGIN` |Again |
|`KC_UNDO` | |Undo | |`KC_UNDO` | |Undo |
|`KC_CUT` | |Cut | |`KC_CUT` | |Cut |
|`KC_COPY` | |Copy | |`KC_COPY` | |Copy |
|`KC_PASTE` |`KC_PSTE` |Paste | |`KC_PASTE` |`KC_PSTE` |Paste |
|`KC_FIND` | |Find | |`KC_FIND` | |Find |
|`KC__MUTE` | |Mute (macOS) | |`KC__MUTE` | |Mute |
|`KC__VOLUP` | |Volume Up (macOS) | |`KC__VOLUP` | |Volume Up |
|`KC__VOLDOWN` | |Volume Down (macOS) | |`KC__VOLDOWN` | |Volume Down |
|`KC_ALT_ERASE` |`KC_ERAS` |Alternate Erase | |`KC_ALT_ERASE` |`KC_ERAS` |Alternate Erase |
|`KC_SYSREQ` | |SysReq/Attention | |`KC_SYSREQ` | |SysReq/Attention |
|`KC_CANCEL` | |Cancel | |`KC_CANCEL` | |Cancel |
|`KC_CLEAR` |`KC_CLR` |Clear | |`KC_CLEAR` |`KC_CLR` |Clear |
|`KC_PRIOR` | |Prior | |`KC_PRIOR` | |Prior |
|`KC_RETURN` | |Return | |`KC_RETURN` | |Return |
|`KC_SEPARATOR` | |Separator | |`KC_SEPARATOR` | |Separator |
|`KC_OUT` | |Out | |`KC_OUT` | |Out |
|`KC_OPER` | |Oper | |`KC_OPER` | |Oper |
|`KC_CLEAR_AGAIN` | |Clear/Again | |`KC_CLEAR_AGAIN` | |Clear/Again |
|`KC_CRSEL` | |CrSel/Props | |`KC_CRSEL` | |CrSel/Props |
|`KC_EXSEL` | |ExSel | |`KC_EXSEL` | |ExSel |
## Media Keys ## Media Keys
@@ -193,34 +193,34 @@ These keycodes are not part of the Keyboard/Keypad usage page. The `SYSTEM_` key
?> Some of these keycodes may behave differently depending on the OS. For example, on macOS, the keycodes `KC_MEDIA_FAST_FORWARD`, `KC_MEDIA_REWIND`, `KC_MEDIA_NEXT_TRACK` and `KC_MEDIA_PREV_TRACK` skip within the current track when held, but skip the entire track when tapped. ?> Some of these keycodes may behave differently depending on the OS. For example, on macOS, the keycodes `KC_MEDIA_FAST_FORWARD`, `KC_MEDIA_REWIND`, `KC_MEDIA_NEXT_TRACK` and `KC_MEDIA_PREV_TRACK` skip within the current track when held, but skip the entire track when tapped.
|Key |Aliases |Description | |Key |Aliases |Description |
|-----------------------|---------|-----------------------------| |-----------------------|---------|-------------------|
|`KC_SYSTEM_POWER` |`KC_PWR` |System Power Down | |`KC_SYSTEM_POWER` |`KC_PWR` |System Power Down |
|`KC_SYSTEM_SLEEP` |`KC_SLEP`|System Sleep | |`KC_SYSTEM_SLEEP` |`KC_SLEP`|System Sleep |
|`KC_SYSTEM_WAKE` |`KC_WAKE`|System Wake | |`KC_SYSTEM_WAKE` |`KC_WAKE`|System Wake |
|`KC_AUDIO_MUTE` |`KC_MUTE`|Mute | |`KC_AUDIO_MUTE` |`KC_MUTE`|Mute |
|`KC_AUDIO_VOL_UP` |`KC_VOLU`|Volume Up | |`KC_AUDIO_VOL_UP` |`KC_VOLU`|Volume Up |
|`KC_AUDIO_VOL_DOWN` |`KC_VOLD`|Volume Down | |`KC_AUDIO_VOL_DOWN` |`KC_VOLD`|Volume Down |
|`KC_MEDIA_NEXT_TRACK` |`KC_MNXT`|Next Track | |`KC_MEDIA_NEXT_TRACK` |`KC_MNXT`|Next Track |
|`KC_MEDIA_PREV_TRACK` |`KC_MPRV`|Previous Track | |`KC_MEDIA_PREV_TRACK` |`KC_MPRV`|Previous Track |
|`KC_MEDIA_STOP` |`KC_MSTP`|Stop Track (Windows) | |`KC_MEDIA_STOP` |`KC_MSTP`|Stop Track |
|`KC_MEDIA_PLAY_PAUSE` |`KC_MPLY`|Play/Pause Track | |`KC_MEDIA_PLAY_PAUSE` |`KC_MPLY`|Play/Pause Track |
|`KC_MEDIA_SELECT` |`KC_MSEL`|Launch Media Player (Windows)| |`KC_MEDIA_SELECT` |`KC_MSEL`|Launch Media Player|
|`KC_MEDIA_EJECT` |`KC_EJCT`|Eject (macOS) | |`KC_MEDIA_EJECT` |`KC_EJCT`|Eject |
|`KC_MAIL` | |Launch Mail (Windows) | |`KC_MAIL` | |Launch Mail |
|`KC_CALCULATOR` |`KC_CALC`|Launch Calculator (Windows) | |`KC_CALCULATOR` |`KC_CALC`|Launch Calculator |
|`KC_MY_COMPUTER` |`KC_MYCM`|Launch My Computer (Windows) | |`KC_MY_COMPUTER` |`KC_MYCM`|Launch My Computer |
|`KC_WWW_SEARCH` |`KC_WSCH`|Browser Search (Windows) | |`KC_WWW_SEARCH` |`KC_WSCH`|Browser Search |
|`KC_WWW_HOME` |`KC_WHOM`|Browser Home (Windows) | |`KC_WWW_HOME` |`KC_WHOM`|Browser Home |
|`KC_WWW_BACK` |`KC_WBAK`|Browser Back (Windows) | |`KC_WWW_BACK` |`KC_WBAK`|Browser Back |
|`KC_WWW_FORWARD` |`KC_WFWD`|Browser Forward (Windows) | |`KC_WWW_FORWARD` |`KC_WFWD`|Browser Forward |
|`KC_WWW_STOP` |`KC_WSTP`|Browser Stop (Windows) | |`KC_WWW_STOP` |`KC_WSTP`|Browser Stop |
|`KC_WWW_REFRESH` |`KC_WREF`|Browser Refresh (Windows) | |`KC_WWW_REFRESH` |`KC_WREF`|Browser Refresh |
|`KC_WWW_FAVORITES` |`KC_WFAV`|Browser Favorites (Windows) | |`KC_WWW_FAVORITES` |`KC_WFAV`|Browser Favorites |
|`KC_MEDIA_FAST_FORWARD`|`KC_MFFD`|Next Track (macOS) | |`KC_MEDIA_FAST_FORWARD`|`KC_MFFD`|Next Track |
|`KC_MEDIA_REWIND` |`KC_MRWD`|Previous Track (macOS) | |`KC_MEDIA_REWIND` |`KC_MRWD`|Previous Track |
|`KC_BRIGHTNESS_UP` |`KC_BRIU`|Brightness Up | |`KC_BRIGHTNESS_UP` |`KC_BRIU`|Brightness Up |
|`KC_BRIGHTNESS_DOWN` |`KC_BRID`|Brightness Down | |`KC_BRIGHTNESS_DOWN` |`KC_BRID`|Brightness Down |
## Number Pad ## Number Pad
@@ -248,7 +248,7 @@ These keycodes are not part of the Keyboard/Keypad usage page. The `SYSTEM_` key
## Special Keys ## Special Keys
In addition to these, keycodes in the range of `0xA5-DF` are reserved for internal use by TMK. In addition to these, keycodes in the range of `0xA5-DF` are reserved for internal use.
|Key |Aliases |Description | |Key |Aliases |Description |
|----------------|--------------------|---------------------------------------| |----------------|--------------------|---------------------------------------|
+82 -17
View File
@@ -37,56 +37,111 @@ We've tried to make QMK as easy to set up as possible. You only have to prepare
[Must Know Linux Commands](https://www.guru99.com/must-know-linux-commands.html)<br> [Must Know Linux Commands](https://www.guru99.com/must-know-linux-commands.html)<br>
[Some Basic Unix Commands](https://www.tjhsst.edu/~dhyatt/superap/unixcmd.html) [Some Basic Unix Commands](https://www.tjhsst.edu/~dhyatt/superap/unixcmd.html)
### Windows <!-- tabs:start -->
You will need to install MSYS2, Git, and the QMK CLI. ### ** Windows **
Follow the installation instructions on the [MSYS2 homepage](http://www.msys2.org). Close any open MSYS terminals and open a new MinGW 64-bit terminal. **NOTE: This is *not* the same as the MSYS terminal that opens when installation is completed.** #### Prerequisites
Then, run the following: You will need to install MSYS2, Git and Python. Follow the installation instructions on https://www.msys2.org.
Once MSYS2 is installed, close any open MSYS terminals and open a new MinGW 64-bit terminal.
!> **NOTE:** The MinGW 64-bit terminal is *not* the same as the MSYS terminal that opens when installation is completed. Your prompt should say "MINGW64" in purple text, rather than "MSYS". See [this page](https://www.msys2.org/wiki/MSYS2-introduction/#subsystems) for more information on the differences.
Then run the following command:
pacman --needed --noconfirm --disable-download-timeout -S git mingw-w64-x86_64-toolchain mingw-w64-x86_64-python3-pip pacman --needed --noconfirm --disable-download-timeout -S git mingw-w64-x86_64-toolchain mingw-w64-x86_64-python3-pip
#### Installation
Install the QMK CLI by running:
python3 -m pip install qmk python3 -m pip install qmk
### macOS ### ** macOS **
You will need to install Homebrew. Follow the instructions on the [Homebrew homepage](https://brew.sh). QMK maintains a Homebrew tap and formula which will automatically install the CLI and all necessary dependencies.
After Homebrew is installed run this command: #### Prerequisites
You will need to install Homebrew. Follow the instructions on https://brew.sh.
#### Installation
Install the QMK CLI by running:
brew install qmk/qmk/qmk brew install qmk/qmk/qmk
### Linux ### ** Linux/WSL **
#### Prerequisites
You will need to install Git and Python. It's very likely that you already have both, but if not, one of the following commands should install them: You will need to install Git and Python. It's very likely that you already have both, but if not, one of the following commands should install them:
* Debian / Ubuntu / Devuan: `sudo apt install git python3 python3-pip` * Debian / Ubuntu / Devuan: `sudo apt install -y git python3-pip`
* Fedora / Red Hat / CentOS: `sudo yum install git python3 python3-pip` * Fedora / Red Hat / CentOS: `sudo yum -y install git python3-pip`
* Arch / Manjaro: `sudo pacman -S git python python-pip python-setuptools libffi` * Arch / Manjaro: `sudo pacman --needed --noconfirm -S git python-pip libffi`
* Void: `sudo xbps-install -y git python3-pip`
* Solus: `sudo eopkg -y install git python3`
* Sabayon: `sudo equo install dev-vcs/git dev-python/pip`
* Gentoo: `sudo emerge dev-vcs/git dev-python/pip`
Install the global CLI to bootstrap your system: #### Installation
`python3 -m pip install --user qmk` (on Arch-based distros you can also try the `qmk` package from AUR (**note**: it's maintained by a community member): `yay -S qmk`) Install the QMK CLI by running:
### FreeBSD python3 -m pip install --user qmk
On Arch-based distros you can also try the `qmk` package from AUR (**NOTE**: this package is maintained by a community member, and at the time of writing marks some dependencies as optional that should not be):
yay -S qmk
### ** FreeBSD **
#### Prerequisites
You will need to install Git and Python. It's possible that you already have both, but if not, run the following commands to install them: You will need to install Git and Python. It's possible that you already have both, but if not, run the following commands to install them:
pkg install git python3 pkg install git python3
Make sure that `$HOME/.local/bin` is added to your `$PATH` so that locally install Python packages are available. Make sure that `$HOME/.local/bin` is added to your `$PATH` so that locally installed Python packages are available.
Once installed, you can install QMK CLI: #### Installation
Install the QMK CLI by running:
python3 -m pip install --user qmk python3 -m pip install --user qmk
<!-- tabs:end -->
## 3. Run QMK Setup :id=set-up-qmk ## 3. Run QMK Setup :id=set-up-qmk
<!-- tabs:start -->
### ** Windows **
After installing QMK you can set it up with this command: After installing QMK you can set it up with this command:
qmk setup qmk setup
In most situations you will want to answer Yes to all of the prompts. In most situations you will want to answer `y` to all of the prompts.
### ** macOS **
After installing QMK you can set it up with this command:
qmk setup
In most situations you will want to answer `y` to all of the prompts.
### ** Linux/WSL **
After installing QMK you can set it up with this command:
qmk setup
In most situations you will want to answer `y` to all of the prompts.
?>**Note on Debian, Ubuntu and their derivatives**: ?>**Note on Debian, Ubuntu and their derivatives**:
It's possible, that you will get an error saying something like: `bash: qmk: command not found`. It's possible, that you will get an error saying something like: `bash: qmk: command not found`.
@@ -94,12 +149,22 @@ This is due to a [bug](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=839155)
Sadly, Ubuntu reitroduced this bug and is [yet to fix it](https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1588562). Sadly, Ubuntu reitroduced this bug and is [yet to fix it](https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1588562).
Luckily, the fix is easy. Run this as your user: `echo 'PATH="$HOME/.local/bin:$PATH"' >> $HOME/.bashrc && source $HOME/.bashrc` Luckily, the fix is easy. Run this as your user: `echo 'PATH="$HOME/.local/bin:$PATH"' >> $HOME/.bashrc && source $HOME/.bashrc`
### ** FreeBSD **
After installing QMK you can set it up with this command:
qmk setup
In most situations you will want to answer `y` to all of the prompts.
?>**Note on FreeBSD**: ?>**Note on FreeBSD**:
It is suggested to run `qmk setup` as a non-`root` user to start with, but this will likely identify packages that need to be installed to your It is suggested to run `qmk setup` as a non-`root` user to start with, but this will likely identify packages that need to be installed to your
base system using `pkg`. However the installation will probably fail when run as an unprivileged user. base system using `pkg`. However the installation will probably fail when run as an unprivileged user.
To manually install the base dependencies, run `./util/qmk_install.sh` either as `root`, or with `sudo`. To manually install the base dependencies, run `./util/qmk_install.sh` either as `root`, or with `sudo`.
Once that completes, re-run `qmk setup` to complete the setup and checks. Once that completes, re-run `qmk setup` to complete the setup and checks.
<!-- tabs:end -->
?> If you already know [how to use GitHub](getting_started_github.md), we recommend that you create your own fork and use `qmk setup <github_username>/qmk_firmware` to clone your personal fork. If you don't know what that means you can safely ignore this message. ?> If you already know [how to use GitHub](getting_started_github.md), we recommend that you create your own fork and use `qmk setup <github_username>/qmk_firmware` to clone your personal fork. If you don't know what that means you can safely ignore this message.
## 4. Test Your Build Environment ## 4. Test Your Build Environment
+3 -1
View File
@@ -36,7 +36,9 @@ Prefer a terminal based solution? [hid_listen](https://www.pjrc.com/teensy/hid_l
Sometimes it's useful to print debug messages from within your [custom code](custom_quantum_functions.md). Doing so is pretty simple. Start by including `print.h` at the top of your file: Sometimes it's useful to print debug messages from within your [custom code](custom_quantum_functions.md). Doing so is pretty simple. Start by including `print.h` at the top of your file:
#include <print.h> ```c
#include "print.h"
```
After that you can use a few different print functions: After that you can use a few different print functions:
+1 -1
View File
@@ -22,7 +22,7 @@ Sometimes, you want to activate a one-shot key as part of a macro or tap dance r
For one shot layers, you need to call `set_oneshot_layer(LAYER, ONESHOT_START)` on key down, and `clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED)` on key up. If you want to cancel the oneshot, call `reset_oneshot_layer()`. For one shot layers, you need to call `set_oneshot_layer(LAYER, ONESHOT_START)` on key down, and `clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED)` on key up. If you want to cancel the oneshot, call `reset_oneshot_layer()`.
For one shot mods, you need to call `set_oneshot_mods(MOD)` to set it, or `clear_oneshot_mods()` to cancel it. For one shot mods, you need to call `set_oneshot_mods(MOD_BIT(KC_*))` to set it, or `clear_oneshot_mods()` to cancel it.
!> If you're having issues with OSM translating over Remote Desktop Connection, this can be fixed by opening the settings, going to the "Local Resources" tap, and in the keyboard section, change the drop down to "On this Computer". This will fix the issue and allow OSM to function properly over Remote Desktop. !> If you're having issues with OSM translating over Remote Desktop Connection, this can be fixed by opening the settings, going to the "Local Resources" tap, and in the keyboard section, change the drop down to "On this Computer". This will fix the issue and allow OSM to function properly over Remote Desktop.
+1 -1
View File
@@ -61,4 +61,4 @@ To implement your own version of this function, in your keyboard's source files:
void board_init(void) { void board_init(void) {
// initialize anything that requires ChibiOS // initialize anything that requires ChibiOS
} }
``` ```
+17
View File
@@ -27,3 +27,20 @@
.markdown-section hr, .search { .markdown-section hr, .search {
border-bottom: 1px solid #777 !important; border-bottom: 1px solid #777 !important;
} }
:root {
--docsifytabs-border-color: #555;
--docsifytabs-tab-highlight-color: var(--theme-color,#ea6f5a);
--docsifytabs-tab-background: #444;
--docsifytabs-tab-background-active: #3f3f3f;
}
.docsify-tabs__tab:focus {
outline: none !important;
}
.docsify-tabs__content .anchor {
transition: none;
}
+17
View File
@@ -28,3 +28,20 @@
.markdown-section pre { .markdown-section pre {
padding: 0; padding: 0;
} }
:root {
--docsifytabs-border-color: #ddd;
--docsifytabs-tab-highlight-color: var(--theme-color, #0074d9);
--docsifytabs-tab-background: #f8f8f8;
--docsifytabs-tab-background-active: transparent;
}
.docsify-tabs__tab:focus {
outline: none !important;
}
.docsify-tabs__content .anchor {
transition: none;
}
+19
View File
@@ -179,6 +179,25 @@ Holding and releasing a dual function key without pressing another key will resu
For instance, holding and releasing `LT(2, KC_SPACE)` without hitting another key will result in nothing happening. With this enabled, it will send `KC_SPACE` instead. For instance, holding and releasing `LT(2, KC_SPACE)` without hitting another key will result in nothing happening. With this enabled, it will send `KC_SPACE` instead.
For more granular control of this feature, you can add the following to your `config.h`:
```c
#define RETRO_TAPPING_PER_KEY
```
You can then add the following function to your keymap:
```c
bool get_retro_tapping(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case LT(2, KC_SPACE):
return true;
default:
return false;
}
}
```
## Why do we include the key record for the per key functions? ## Why do we include the key record for the per key functions?
One thing that you may notice is that we include the key record for all of the "per key" functions, and may be wondering why we do that. One thing that you may notice is that we include the key record for all of the "per key" functions, and may be wondering why we do that.
+11
View File
@@ -28,6 +28,17 @@ The default setting is 280 µs, which should work for most cases, but this can b
#define WS2812_TRST_US 80 #define WS2812_TRST_US 80
``` ```
#### Byte Order
Some variants of the WS2812 may have their color components in a different physical or logical order. For example, the WS2812B-2020 has physically swapped red and green LEDs, which causes the wrong color to be displayed, because the default order of the bytes sent over the wire is defined as GRB.
In this case, you can change the byte order by defining `WS2812_BYTE_ORDER` as one of the following values:
| Byte order | Known devices |
|-----------------------------------|-------------------------------|
| `WS2812_BYTE_ORDER_GRB` (default) | Most WS2812's, SK6812, SK6805 |
| `WS2812_BYTE_ORDER_RGB` | WS2812B-2020 |
### Bitbang ### Bitbang
Default driver, the absence of configuration assumes this driver. To configure it, add this to your rules.mk: Default driver, the absence of configuration assumes this driver. To configure it, add this to your rules.mk:
+3 -1
View File
@@ -34,7 +34,9 @@ void keyboard_post_init_user(void) {
有时用[custom code](custom_quantum_functions.md)发送自定义调试信息很有用. 这么做很简单. 首先在你文件头部包含`print.h`: 有时用[custom code](custom_quantum_functions.md)发送自定义调试信息很有用. 这么做很简单. 首先在你文件头部包含`print.h`:
#include <print.h> ```c
#include "print.h"
```
之后,您可以使用一些不同的打印功能: 之后,您可以使用一些不同的打印功能:
+2 -4
View File
@@ -1,5 +1,3 @@
#ifndef LCD_H
#define LCD_H
/************************************************************************* /*************************************************************************
Title : C include file for the HD44780U LCD library (lcd.c) Title : C include file for the HD44780U LCD library (lcd.c)
Author: Peter Fleury <pfleury@gmx.ch> http://tinyurl.com/peterfleury Author: Peter Fleury <pfleury@gmx.ch> http://tinyurl.com/peterfleury
@@ -43,6 +41,8 @@
*/ */
#pragma once
#include <inttypes.h> #include <inttypes.h>
#include <avr/pgmspace.h> #include <avr/pgmspace.h>
@@ -346,5 +346,3 @@ extern void lcd_data(uint8_t data);
#define lcd_puts_P(__s) lcd_puts_p(PSTR(__s)) #define lcd_puts_P(__s) lcd_puts_p(PSTR(__s))
/**@}*/ /**@}*/
#endif // LCD_H
+1 -4
View File
@@ -17,8 +17,7 @@
* GitHub repository: https://github.com/g4lvanix/I2C-master-lib * GitHub repository: https://github.com/g4lvanix/I2C-master-lib
*/ */
#ifndef I2C_MASTER_H #pragma once
#define I2C_MASTER_H
#define I2C_READ 0x01 #define I2C_READ 0x01
#define I2C_WRITE 0x00 #define I2C_WRITE 0x00
@@ -42,5 +41,3 @@ i2c_status_t i2c_receive(uint8_t address, uint8_t* data, uint16_t length, uint16
i2c_status_t i2c_writeReg(uint8_t devaddr, uint8_t regaddr, const uint8_t* data, uint16_t length, uint16_t timeout); i2c_status_t i2c_writeReg(uint8_t devaddr, uint8_t regaddr, const uint8_t* data, uint16_t length, uint16_t timeout);
i2c_status_t i2c_readReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout); i2c_status_t i2c_readReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout);
void i2c_stop(void); void i2c_stop(void);
#endif // I2C_MASTER_H
+1 -4
View File
@@ -20,8 +20,7 @@
Read or write to the necessary buffer according to the opperation. Read or write to the necessary buffer according to the opperation.
*/ */
#ifndef I2C_SLAVE_H #pragma once
#define I2C_SLAVE_H
#define I2C_SLAVE_REG_COUNT 30 #define I2C_SLAVE_REG_COUNT 30
@@ -29,5 +28,3 @@ extern volatile uint8_t i2c_slave_reg[I2C_SLAVE_REG_COUNT];
void i2c_slave_init(uint8_t address); void i2c_slave_init(uint8_t address);
void i2c_slave_stop(void); void i2c_slave_stop(void);
#endif // I2C_SLAVE_H
+97 -42
View File
@@ -20,50 +20,111 @@
#ifdef SOFT_SERIAL_PIN #ifdef SOFT_SERIAL_PIN
# ifdef __AVR_ATmega32U4__ # if !(defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB647__) || defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__) || defined(__AVR_ATmega16U2__) || defined(__AVR_ATmega32U2__) || defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__))
// if using ATmega32U4 I2C, can not use PD0 and PD1 in soft serial. # error serial.c is not supported for the currently selected MCU
# ifdef USE_AVR_I2C # endif
# if SOFT_SERIAL_PIN == D0 || SOFT_SERIAL_PIN == D1 // if using ATmega32U4/2, AT90USBxxx I2C, can not use PD0 and PD1 in soft serial.
# error Using ATmega32U4 I2C, so can not use PD0, PD1 # if defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__) || defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB647__) || defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__)
# endif # if defined(USE_AVR_I2C) && (SOFT_SERIAL_PIN == D0 || SOFT_SERIAL_PIN == D1)
# error Using I2C, so can not use PD0, PD1
# endif # endif
# endif
// PD0..PD3, common config
# if SOFT_SERIAL_PIN == D0
# define EIMSK_BIT _BV(INT0)
# define EICRx_BIT (~(_BV(ISC00) | _BV(ISC01)))
# define SERIAL_PIN_INTERRUPT INT0_vect
# define EICRx EICRA
# elif SOFT_SERIAL_PIN == D1
# define EIMSK_BIT _BV(INT1)
# define EICRx_BIT (~(_BV(ISC10) | _BV(ISC11)))
# define SERIAL_PIN_INTERRUPT INT1_vect
# define EICRx EICRA
# elif SOFT_SERIAL_PIN == D2
# define EIMSK_BIT _BV(INT2)
# define EICRx_BIT (~(_BV(ISC20) | _BV(ISC21)))
# define SERIAL_PIN_INTERRUPT INT2_vect
# define EICRx EICRA
# elif SOFT_SERIAL_PIN == D3
# define EIMSK_BIT _BV(INT3)
# define EICRx_BIT (~(_BV(ISC30) | _BV(ISC31)))
# define SERIAL_PIN_INTERRUPT INT3_vect
# define EICRx EICRA
# endif
# define setPinInputHigh(pin) (DDRx_ADDRESS(pin) &= ~_BV((pin)&0xF), PORTx_ADDRESS(pin) |= _BV((pin)&0xF)) // ATmegaxxU2 specific config
# define setPinOutput(pin) (DDRx_ADDRESS(pin) |= _BV((pin)&0xF)) # if defined(__AVR_ATmega16U2__) || defined(__AVR_ATmega32U2__)
# define writePinHigh(pin) (PORTx_ADDRESS(pin) |= _BV((pin)&0xF)) // PD4(INT5), PD6(INT6), PD7(INT7), PC7(INT4)
# define writePinLow(pin) (PORTx_ADDRESS(pin) &= ~_BV((pin)&0xF)) # if SOFT_SERIAL_PIN == D4
# define readPin(pin) ((bool)(PINx_ADDRESS(pin) & _BV((pin)&0xF))) # define EIMSK_BIT _BV(INT5)
# define EICRx_BIT (~(_BV(ISC50) | _BV(ISC51)))
# define SERIAL_PIN_INTERRUPT INT5_vect
# define EICRx EICRB
# elif SOFT_SERIAL_PIN == D6
# define EIMSK_BIT _BV(INT6)
# define EICRx_BIT (~(_BV(ISC60) | _BV(ISC61)))
# define SERIAL_PIN_INTERRUPT INT6_vect
# define EICRx EICRB
# elif SOFT_SERIAL_PIN == D7
# define EIMSK_BIT _BV(INT7)
# define EICRx_BIT (~(_BV(ISC70) | _BV(ISC71)))
# define SERIAL_PIN_INTERRUPT INT7_vect
# define EICRx EICRB
# elif SOFT_SERIAL_PIN == C7
# define EIMSK_BIT _BV(INT4)
# define EICRx_BIT (~(_BV(ISC40) | _BV(ISC41)))
# define SERIAL_PIN_INTERRUPT INT4_vect
# define EICRx EICRB
# endif
# endif
# if SOFT_SERIAL_PIN >= D0 && SOFT_SERIAL_PIN <= D3 // ATmegaxxU4 specific config
# if SOFT_SERIAL_PIN == D0 # if defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__)
# define EIMSK_BIT _BV(INT0) // PE6(INT6)
# define EICRx_BIT (~(_BV(ISC00) | _BV(ISC01))) # if SOFT_SERIAL_PIN == E6
# define SERIAL_PIN_INTERRUPT INT0_vect # define EIMSK_BIT _BV(INT6)
# elif SOFT_SERIAL_PIN == D1 # define EICRx_BIT (~(_BV(ISC60) | _BV(ISC61)))
# define EIMSK_BIT _BV(INT1) # define SERIAL_PIN_INTERRUPT INT6_vect
# define EICRx_BIT (~(_BV(ISC10) | _BV(ISC11))) # define EICRx EICRB
# define SERIAL_PIN_INTERRUPT INT1_vect # endif
# elif SOFT_SERIAL_PIN == D2 # endif
# define EIMSK_BIT _BV(INT2)
# define EICRx_BIT (~(_BV(ISC20) | _BV(ISC21))) // AT90USBxxx specific config
# define SERIAL_PIN_INTERRUPT INT2_vect # if defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB647__) || defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__)
# elif SOFT_SERIAL_PIN == D3 // PE4..PE7(INT4..INT7)
# define EIMSK_BIT _BV(INT3) # if SOFT_SERIAL_PIN == E4
# define EICRx_BIT (~(_BV(ISC30) | _BV(ISC31))) # define EIMSK_BIT _BV(INT4)
# define SERIAL_PIN_INTERRUPT INT3_vect # define EICRx_BIT (~(_BV(ISC40) | _BV(ISC41)))
# endif # define SERIAL_PIN_INTERRUPT INT4_vect
# define EICRx EICRB
# elif SOFT_SERIAL_PIN == E5
# define EIMSK_BIT _BV(INT5)
# define EICRx_BIT (~(_BV(ISC50) | _BV(ISC51)))
# define SERIAL_PIN_INTERRUPT INT5_vect
# define EICRx EICRB
# elif SOFT_SERIAL_PIN == E6 # elif SOFT_SERIAL_PIN == E6
# define EIMSK_BIT _BV(INT6) # define EIMSK_BIT _BV(INT6)
# define EICRx_BIT (~(_BV(ISC60) | _BV(ISC61))) # define EICRx_BIT (~(_BV(ISC60) | _BV(ISC61)))
# define SERIAL_PIN_INTERRUPT INT6_vect # define SERIAL_PIN_INTERRUPT INT6_vect
# else # define EICRx EICRB
# error invalid SOFT_SERIAL_PIN value # elif SOFT_SERIAL_PIN == E7
# define EIMSK_BIT _BV(INT7)
# define EICRx_BIT (~(_BV(ISC70) | _BV(ISC71)))
# define SERIAL_PIN_INTERRUPT INT7_vect
# define EICRx EICRB
# endif # endif
# else
# error serial.c now support ATmega32U4 only
# endif # endif
# ifndef SERIAL_PIN_INTERRUPT
# error invalid SOFT_SERIAL_PIN value
# endif
# define setPinInputHigh(pin) (DDRx_ADDRESS(pin) &= ~_BV((pin)&0xF), PORTx_ADDRESS(pin) |= _BV((pin)&0xF))
# define setPinOutput(pin) (DDRx_ADDRESS(pin) |= _BV((pin)&0xF))
# define writePinHigh(pin) (PORTx_ADDRESS(pin) |= _BV((pin)&0xF))
# define writePinLow(pin) (PORTx_ADDRESS(pin) &= ~_BV((pin)&0xF))
# define readPin(pin) ((bool)(PINx_ADDRESS(pin) & _BV((pin)&0xF)))
# define ALWAYS_INLINE __attribute__((always_inline)) # define ALWAYS_INLINE __attribute__((always_inline))
# define NO_INLINE __attribute__((noinline)) # define NO_INLINE __attribute__((noinline))
# define _delay_sub_us(x) __builtin_avr_delay_cycles(x) # define _delay_sub_us(x) __builtin_avr_delay_cycles(x)
@@ -210,15 +271,9 @@ void soft_serial_target_init(SSTD_t *sstd_table, int sstd_table_size) {
Transaction_table_size = (uint8_t)sstd_table_size; Transaction_table_size = (uint8_t)sstd_table_size;
serial_input_with_pullup(); serial_input_with_pullup();
// Enable INT0-INT3,INT6 // Enable INT0-INT7
EIMSK |= EIMSK_BIT; EIMSK |= EIMSK_BIT;
# if SOFT_SERIAL_PIN == E6 EICRx &= EICRx_BIT;
// Trigger on falling edge of INT6
EICRB &= EICRx_BIT;
# else
// Trigger on falling edge of INT0-INT3
EICRA &= EICRx_BIT;
# endif
} }
// Used by the sender to synchronize timing with the reciver. // Used by the sender to synchronize timing with the reciver.
+11 -5
View File
@@ -140,27 +140,33 @@ spi_status_t spi_read() {
} }
spi_status_t spi_transmit(const uint8_t *data, uint16_t length) { spi_status_t spi_transmit(const uint8_t *data, uint16_t length) {
spi_status_t status = SPI_STATUS_ERROR; spi_status_t status;
for (uint16_t i = 0; i < length; i++) { for (uint16_t i = 0; i < length; i++) {
status = spi_write(data[i]); status = spi_write(data[i]);
if (status < 0) {
return status;
}
} }
return status; return SPI_STATUS_SUCCESS;
} }
spi_status_t spi_receive(uint8_t *data, uint16_t length) { spi_status_t spi_receive(uint8_t *data, uint16_t length) {
spi_status_t status = SPI_STATUS_ERROR; spi_status_t status;
for (uint16_t i = 0; i < length; i++) { for (uint16_t i = 0; i < length; i++) {
status = spi_read(); status = spi_read();
if (status > 0) { if (status >= 0) {
data[i] = status; data[i] = status;
} else {
return status;
} }
} }
return (status < 0) ? status : SPI_STATUS_SUCCESS; return SPI_STATUS_SUCCESS;
} }
void spi_stop(void) { void spi_stop(void) {
+1 -4
View File
@@ -1,5 +1,4 @@
#ifndef SSD1306_H #pragma once
#define SSD1306_H
#include <stdbool.h> #include <stdbool.h>
#include <stdio.h> #include <stdio.h>
@@ -86,5 +85,3 @@ void matrix_write_char(struct CharacterMatrix *matrix, uint8_t c);
void matrix_write(struct CharacterMatrix *matrix, const char *data); void matrix_write(struct CharacterMatrix *matrix, const char *data);
void matrix_write_P(struct CharacterMatrix *matrix, const char *data); void matrix_write_P(struct CharacterMatrix *matrix, const char *data);
void matrix_render(struct CharacterMatrix *matrix); void matrix_render(struct CharacterMatrix *matrix);
#endif
+1 -1
View File
@@ -16,7 +16,7 @@
#include "quantum.h" #include "quantum.h"
#include "analog.h" #include "analog.h"
#include "ch.h" #include <ch.h>
#include <hal.h> #include <hal.h>
#if !HAL_USE_ADC #if !HAL_USE_ADC
+13 -8
View File
@@ -58,18 +58,23 @@ static i2c_status_t chibios_to_qmk(const msg_t* status) {
} }
__attribute__((weak)) void i2c_init(void) { __attribute__((weak)) void i2c_init(void) {
// Try releasing special pins for a short time static bool is_initialised = false;
palSetPadMode(I2C1_SCL_BANK, I2C1_SCL, PAL_MODE_INPUT); if (!is_initialised) {
palSetPadMode(I2C1_SDA_BANK, I2C1_SDA, PAL_MODE_INPUT); is_initialised = true;
chThdSleepMilliseconds(10); // Try releasing special pins for a short time
palSetPadMode(I2C1_SCL_BANK, I2C1_SCL, PAL_MODE_INPUT);
palSetPadMode(I2C1_SDA_BANK, I2C1_SDA, PAL_MODE_INPUT);
chThdSleepMilliseconds(10);
#if defined(USE_GPIOV1) #if defined(USE_GPIOV1)
palSetPadMode(I2C1_SCL_BANK, I2C1_SCL, I2C1_SCL_PAL_MODE); palSetPadMode(I2C1_SCL_BANK, I2C1_SCL, I2C1_SCL_PAL_MODE);
palSetPadMode(I2C1_SDA_BANK, I2C1_SDA, I2C1_SDA_PAL_MODE); palSetPadMode(I2C1_SDA_BANK, I2C1_SDA, I2C1_SDA_PAL_MODE);
#else #else
palSetPadMode(I2C1_SCL_BANK, I2C1_SCL, PAL_MODE_ALTERNATE(I2C1_SCL_PAL_MODE) | PAL_STM32_OTYPE_OPENDRAIN); palSetPadMode(I2C1_SCL_BANK, I2C1_SCL, PAL_MODE_ALTERNATE(I2C1_SCL_PAL_MODE) | PAL_STM32_OTYPE_OPENDRAIN);
palSetPadMode(I2C1_SDA_BANK, I2C1_SDA, PAL_MODE_ALTERNATE(I2C1_SDA_PAL_MODE) | PAL_STM32_OTYPE_OPENDRAIN); palSetPadMode(I2C1_SDA_BANK, I2C1_SDA, PAL_MODE_ALTERNATE(I2C1_SDA_PAL_MODE) | PAL_STM32_OTYPE_OPENDRAIN);
#endif #endif
}
} }
i2c_status_t i2c_start(uint8_t address) { i2c_status_t i2c_start(uint8_t address) {
+1 -1
View File
@@ -24,7 +24,7 @@
*/ */
#pragma once #pragma once
#include "ch.h" #include <ch.h>
#include <hal.h> #include <hal.h>
#ifdef I2C1_BANK #ifdef I2C1_BANK
+1 -1
View File
@@ -6,7 +6,7 @@
#include "serial.h" #include "serial.h"
#include "wait.h" #include "wait.h"
#include "hal.h" #include <hal.h>
// TODO: resolve/remove build warnings // TODO: resolve/remove build warnings
#if defined(RGBLIGHT_ENABLE) && defined(RGBLED_SPLIT) && defined(PROTOCOL_CHIBIOS) && defined(WS2812_DRIVER_BITBANG) #if defined(RGBLIGHT_ENABLE) && defined(RGBLED_SPLIT) && defined(PROTOCOL_CHIBIOS) && defined(WS2812_DRIVER_BITBANG)
+3 -3
View File
@@ -1,9 +1,9 @@
#include "quantum.h" #include "quantum.h"
#include "serial.h" #include "serial.h"
#include "printf.h" #include "print.h"
#include "ch.h" #include <ch.h>
#include "hal.h" #include <hal.h>
#ifndef USART_CR1_M0 #ifndef USART_CR1_M0
# define USART_CR1_M0 USART_CR1_M // some platforms (f1xx) dont have this so # define USART_CR1_M0 USART_CR1_M // some platforms (f1xx) dont have this so
+16 -11
View File
@@ -22,21 +22,26 @@ static pin_t currentSlavePin = NO_PIN;
static SPIConfig spiConfig = {false, NULL, 0, 0, 0, 0}; static SPIConfig spiConfig = {false, NULL, 0, 0, 0, 0};
__attribute__((weak)) void spi_init(void) { __attribute__((weak)) void spi_init(void) {
// Try releasing special pins for a short time static bool is_initialised = false;
palSetPadMode(PAL_PORT(SPI_SCK_PIN), PAL_PAD(SPI_SCK_PIN), PAL_MODE_INPUT); if (!is_initialised) {
palSetPadMode(PAL_PORT(SPI_MOSI_PIN), PAL_PAD(SPI_MOSI_PIN), PAL_MODE_INPUT); is_initialised = true;
palSetPadMode(PAL_PORT(SPI_MISO_PIN), PAL_PAD(SPI_MISO_PIN), PAL_MODE_INPUT);
chThdSleepMilliseconds(10); // Try releasing special pins for a short time
palSetPadMode(PAL_PORT(SPI_SCK_PIN), PAL_PAD(SPI_SCK_PIN), PAL_MODE_INPUT);
palSetPadMode(PAL_PORT(SPI_MOSI_PIN), PAL_PAD(SPI_MOSI_PIN), PAL_MODE_INPUT);
palSetPadMode(PAL_PORT(SPI_MISO_PIN), PAL_PAD(SPI_MISO_PIN), PAL_MODE_INPUT);
chThdSleepMilliseconds(10);
#if defined(USE_GPIOV1) #if defined(USE_GPIOV1)
palSetPadMode(PAL_PORT(SPI_SCK_PIN), PAL_PAD(SPI_SCK_PIN), PAL_MODE_STM32_ALTERNATE_PUSHPULL); palSetPadMode(PAL_PORT(SPI_SCK_PIN), PAL_PAD(SPI_SCK_PIN), PAL_MODE_STM32_ALTERNATE_PUSHPULL);
palSetPadMode(PAL_PORT(SPI_MOSI_PIN), PAL_PAD(SPI_MOSI_PIN), PAL_MODE_STM32_ALTERNATE_PUSHPULL); palSetPadMode(PAL_PORT(SPI_MOSI_PIN), PAL_PAD(SPI_MOSI_PIN), PAL_MODE_STM32_ALTERNATE_PUSHPULL);
palSetPadMode(PAL_PORT(SPI_MISO_PIN), PAL_PAD(SPI_MISO_PIN), PAL_MODE_STM32_ALTERNATE_PUSHPULL); palSetPadMode(PAL_PORT(SPI_MISO_PIN), PAL_PAD(SPI_MISO_PIN), PAL_MODE_STM32_ALTERNATE_PUSHPULL);
#else #else
palSetPadMode(PAL_PORT(SPI_SCK_PIN), PAL_PAD(SPI_SCK_PIN), PAL_MODE_ALTERNATE(SPI_SCK_PAL_MODE) | PAL_STM32_OTYPE_PUSHPULL | PAL_STM32_OSPEED_HIGHEST); palSetPadMode(PAL_PORT(SPI_SCK_PIN), PAL_PAD(SPI_SCK_PIN), PAL_MODE_ALTERNATE(SPI_SCK_PAL_MODE) | PAL_STM32_OTYPE_PUSHPULL | PAL_STM32_OSPEED_HIGHEST);
palSetPadMode(PAL_PORT(SPI_MOSI_PIN), PAL_PAD(SPI_MOSI_PIN), PAL_MODE_ALTERNATE(SPI_MOSI_PAL_MODE) | PAL_STM32_OTYPE_PUSHPULL | PAL_STM32_OSPEED_HIGHEST); palSetPadMode(PAL_PORT(SPI_MOSI_PIN), PAL_PAD(SPI_MOSI_PIN), PAL_MODE_ALTERNATE(SPI_MOSI_PAL_MODE) | PAL_STM32_OTYPE_PUSHPULL | PAL_STM32_OSPEED_HIGHEST);
palSetPadMode(PAL_PORT(SPI_MISO_PIN), PAL_PAD(SPI_MISO_PIN), PAL_MODE_ALTERNATE(SPI_MISO_PAL_MODE) | PAL_STM32_OTYPE_PUSHPULL | PAL_STM32_OSPEED_HIGHEST); palSetPadMode(PAL_PORT(SPI_MISO_PIN), PAL_PAD(SPI_MISO_PIN), PAL_MODE_ALTERNATE(SPI_MISO_PAL_MODE) | PAL_STM32_OTYPE_PUSHPULL | PAL_STM32_OSPEED_HIGHEST);
#endif #endif
}
} }
bool spi_start(pin_t slavePin, bool lsbFirst, uint8_t mode, uint16_t divisor) { bool spi_start(pin_t slavePin, bool lsbFirst, uint8_t mode, uint16_t divisor) {
+1 -1
View File
@@ -18,7 +18,7 @@
#include <ch.h> #include <ch.h>
#include <hal.h> #include <hal.h>
#include <quantum.h> #include "quantum.h"
#ifndef SPI_DRIVER #ifndef SPI_DRIVER
# define SPI_DRIVER SPID2 # define SPI_DRIVER SPID2
+9 -2
View File
@@ -1,7 +1,7 @@
#include "quantum.h" #include "quantum.h"
#include "ws2812.h" #include "ws2812.h"
#include "ch.h" #include <ch.h>
#include "hal.h" #include <hal.h>
/* Adapted from https://github.com/bigjosh/SimpleNeoPixelDemo/ */ /* Adapted from https://github.com/bigjosh/SimpleNeoPixelDemo/ */
@@ -89,9 +89,16 @@ void ws2812_setleds(LED_TYPE *ledarray, uint16_t leds) {
for (uint8_t i = 0; i < leds; i++) { for (uint8_t i = 0; i < leds; i++) {
// WS2812 protocol dictates grb order // WS2812 protocol dictates grb order
#if (WS2812_BYTE_ORDER == WS2812_BYTE_ORDER_GRB)
sendByte(ledarray[i].g); sendByte(ledarray[i].g);
sendByte(ledarray[i].r); sendByte(ledarray[i].r);
sendByte(ledarray[i].b); sendByte(ledarray[i].b);
#elif (WS2812_BYTE_ORDER == WS2812_BYTE_ORDER_RGB)
sendByte(ledarray[i].r);
sendByte(ledarray[i].g);
sendByte(ledarray[i].b);
#endif
#ifdef RGBW #ifdef RGBW
sendByte(ledarray[i].w); sendByte(ledarray[i].w);
#endif #endif
+43 -4
View File
@@ -1,6 +1,6 @@
#include "ws2812.h" #include "ws2812.h"
#include "quantum.h" #include "quantum.h"
#include "hal.h" #include <hal.h>
/* Adapted from https://github.com/joewa/WS2812-LED-Driver_ChibiOS/ */ /* Adapted from https://github.com/joewa/WS2812-LED-Driver_ChibiOS/ */
@@ -107,6 +107,7 @@
*/ */
#define WS2812_BIT(led, byte, bit) (24 * (led) + 8 * (byte) + (7 - (bit))) #define WS2812_BIT(led, byte, bit) (24 * (led) + 8 * (byte) + (7 - (bit)))
#if (WS2812_BYTE_ORDER == WS2812_BYTE_ORDER_GRB)
/** /**
* @brief Determine the index in @ref ws2812_frame_buffer "the frame buffer" of a given red bit * @brief Determine the index in @ref ws2812_frame_buffer "the frame buffer" of a given red bit
* *
@@ -117,7 +118,7 @@
* *
* @return The bit index * @return The bit index
*/ */
#define WS2812_RED_BIT(led, bit) WS2812_BIT((led), 1, (bit)) # define WS2812_RED_BIT(led, bit) WS2812_BIT((led), 1, (bit))
/** /**
* @brief Determine the index in @ref ws2812_frame_buffer "the frame buffer" of a given green bit * @brief Determine the index in @ref ws2812_frame_buffer "the frame buffer" of a given green bit
@@ -129,7 +130,7 @@
* *
* @return The bit index * @return The bit index
*/ */
#define WS2812_GREEN_BIT(led, bit) WS2812_BIT((led), 0, (bit)) # define WS2812_GREEN_BIT(led, bit) WS2812_BIT((led), 0, (bit))
/** /**
* @brief Determine the index in @ref ws2812_frame_buffer "the frame buffer" of a given blue bit * @brief Determine the index in @ref ws2812_frame_buffer "the frame buffer" of a given blue bit
@@ -141,7 +142,45 @@
* *
* @return The bit index * @return The bit index
*/ */
#define WS2812_BLUE_BIT(led, bit) WS2812_BIT((led), 2, (bit)) # define WS2812_BLUE_BIT(led, bit) WS2812_BIT((led), 2, (bit))
#elif (WS2812_BYTE_ORDER == WS2812_BYTE_ORDER_RGB)
/**
* @brief Determine the index in @ref ws2812_frame_buffer "the frame buffer" of a given red bit
*
* @note The red byte is the middle byte in the color packet
*
* @param[in] led: The led index [0, @ref RGBLED_NUM)
* @param[in] bit: The bit number [0, 7]
*
* @return The bit index
*/
# define WS2812_RED_BIT(led, bit) WS2812_BIT((led), 0, (bit))
/**
* @brief Determine the index in @ref ws2812_frame_buffer "the frame buffer" of a given green bit
*
* @note The red byte is the first byte in the color packet
*
* @param[in] led: The led index [0, @ref RGBLED_NUM)
* @param[in] bit: The bit number [0, 7]
*
* @return The bit index
*/
# define WS2812_GREEN_BIT(led, bit) WS2812_BIT((led), 1, (bit))
/**
* @brief Determine the index in @ref ws2812_frame_buffer "the frame buffer" of a given blue bit
*
* @note The red byte is the last byte in the color packet
*
* @param[in] led: The led index [0, @ref RGBLED_NUM)
* @param[in] bit: The bit index [0, 7]
*
* @return The bit index
*/
# define WS2812_BLUE_BIT(led, bit) WS2812_BIT((led), 2, (bit))
#endif
/* --- PRIVATE VARIABLES ---------------------------------------------------- */ /* --- PRIVATE VARIABLES ---------------------------------------------------- */
+6
View File
@@ -62,9 +62,15 @@ static uint8_t get_protocol_eq(uint8_t data, int pos) {
static void set_led_color_rgb(LED_TYPE color, int pos) { static void set_led_color_rgb(LED_TYPE color, int pos) {
uint8_t* tx_start = &txbuf[PREAMBLE_SIZE]; uint8_t* tx_start = &txbuf[PREAMBLE_SIZE];
#if (WS2812_BYTE_ORDER == WS2812_BYTE_ORDER_GRB)
for (int j = 0; j < 4; j++) tx_start[BYTES_FOR_LED * pos + j] = get_protocol_eq(color.g, j); for (int j = 0; j < 4; j++) tx_start[BYTES_FOR_LED * pos + j] = get_protocol_eq(color.g, j);
for (int j = 0; j < 4; j++) tx_start[BYTES_FOR_LED * pos + BYTES_FOR_LED_BYTE + j] = get_protocol_eq(color.r, j); for (int j = 0; j < 4; j++) tx_start[BYTES_FOR_LED * pos + BYTES_FOR_LED_BYTE + j] = get_protocol_eq(color.r, j);
for (int j = 0; j < 4; j++) tx_start[BYTES_FOR_LED * pos + BYTES_FOR_LED_BYTE * 2 + j] = get_protocol_eq(color.b, j); for (int j = 0; j < 4; j++) tx_start[BYTES_FOR_LED * pos + BYTES_FOR_LED_BYTE * 2 + j] = get_protocol_eq(color.b, j);
#elif (WS2812_BYTE_ORDER == WS2812_BYTE_ORDER_RGB)
for (int j = 0; j < 4; j++) tx_start[BYTES_FOR_LED * pos + j] = get_protocol_eq(color.r, j);
for (int j = 0; j < 4; j++) tx_start[BYTES_FOR_LED * pos + BYTES_FOR_LED_BYTE + j] = get_protocol_eq(color.g, j);
for (int j = 0; j < 4; j++) tx_start[BYTES_FOR_LED * pos + BYTES_FOR_LED_BYTE * 2 + j] = get_protocol_eq(color.b, j);
#endif
} }
void ws2812_init(void) { void ws2812_init(void) {
+1 -11
View File
@@ -42,14 +42,6 @@
# include "debug.h" # include "debug.h"
#endif // DEBUG_EEPROM_OUTPUT #endif // DEBUG_EEPROM_OUTPUT
static inline void init_i2c_if_required(void) {
static int done = 0;
if (!done) {
i2c_init();
done = 1;
}
}
static inline void fill_target_address(uint8_t *buffer, const void *addr) { static inline void fill_target_address(uint8_t *buffer, const void *addr) {
uintptr_t p = (uintptr_t)addr; uintptr_t p = (uintptr_t)addr;
for (int i = 0; i < EXTERNAL_EEPROM_ADDRESS_SIZE; ++i) { for (int i = 0; i < EXTERNAL_EEPROM_ADDRESS_SIZE; ++i) {
@@ -58,7 +50,7 @@ static inline void fill_target_address(uint8_t *buffer, const void *addr) {
} }
} }
void eeprom_driver_init(void) {} void eeprom_driver_init(void) { i2c_init(); }
void eeprom_driver_erase(void) { void eeprom_driver_erase(void) {
#if defined(CONSOLE_ENABLE) && defined(DEBUG_EEPROM_OUTPUT) #if defined(CONSOLE_ENABLE) && defined(DEBUG_EEPROM_OUTPUT)
@@ -80,7 +72,6 @@ void eeprom_read_block(void *buf, const void *addr, size_t len) {
uint8_t complete_packet[EXTERNAL_EEPROM_ADDRESS_SIZE]; uint8_t complete_packet[EXTERNAL_EEPROM_ADDRESS_SIZE];
fill_target_address(complete_packet, addr); fill_target_address(complete_packet, addr);
init_i2c_if_required();
i2c_transmit(EXTERNAL_EEPROM_I2C_ADDRESS((uintptr_t)addr), complete_packet, EXTERNAL_EEPROM_ADDRESS_SIZE, 100); i2c_transmit(EXTERNAL_EEPROM_I2C_ADDRESS((uintptr_t)addr), complete_packet, EXTERNAL_EEPROM_ADDRESS_SIZE, 100);
i2c_receive(EXTERNAL_EEPROM_I2C_ADDRESS((uintptr_t)addr), buf, len, 100); i2c_receive(EXTERNAL_EEPROM_I2C_ADDRESS((uintptr_t)addr), buf, len, 100);
@@ -98,7 +89,6 @@ void eeprom_write_block(const void *buf, void *addr, size_t len) {
uint8_t * read_buf = (uint8_t *)buf; uint8_t * read_buf = (uint8_t *)buf;
uintptr_t target_addr = (uintptr_t)addr; uintptr_t target_addr = (uintptr_t)addr;
init_i2c_if_required();
while (len > 0) { while (len > 0) {
uintptr_t page_offset = target_addr % EXTERNAL_EEPROM_PAGE_SIZE; uintptr_t page_offset = target_addr % EXTERNAL_EEPROM_PAGE_SIZE;
int write_length = EXTERNAL_EEPROM_PAGE_SIZE - page_offset; int write_length = EXTERNAL_EEPROM_PAGE_SIZE - page_offset;
+5
View File
@@ -49,6 +49,11 @@
# define EXTERNAL_EEPROM_PAGE_SIZE 64 # define EXTERNAL_EEPROM_PAGE_SIZE 64
# define EXTERNAL_EEPROM_ADDRESS_SIZE 2 # define EXTERNAL_EEPROM_ADDRESS_SIZE 2
# define EXTERNAL_EEPROM_WRITE_TIME 5 # define EXTERNAL_EEPROM_WRITE_TIME 5
#elif defined(EEPROM_I2C_24LC64)
# define EXTERNAL_EEPROM_BYTE_COUNT 8192
# define EXTERNAL_EEPROM_PAGE_SIZE 32
# define EXTERNAL_EEPROM_ADDRESS_SIZE 2
# define EXTERNAL_EEPROM_WRITE_TIME 5
#elif defined(EEPROM_I2C_MB85RC256V) #elif defined(EEPROM_I2C_MB85RC256V)
# define EXTERNAL_EEPROM_BYTE_COUNT 32768 # define EXTERNAL_EEPROM_BYTE_COUNT 32768
# define EXTERNAL_EEPROM_PAGE_SIZE 128 # define EXTERNAL_EEPROM_PAGE_SIZE 128
+1 -13
View File
@@ -55,14 +55,6 @@
# include "debug.h" # include "debug.h"
#endif // CONSOLE_ENABLE #endif // CONSOLE_ENABLE
static void init_spi_if_required(void) {
static int done = 0;
if (!done) {
spi_init();
done = 1;
}
}
static bool spi_eeprom_start(void) { return spi_start(EXTERNAL_EEPROM_SPI_SLAVE_SELECT_PIN, EXTERNAL_EEPROM_SPI_LSBFIRST, EXTERNAL_EEPROM_SPI_MODE, EXTERNAL_EEPROM_SPI_CLOCK_DIVISOR); } static bool spi_eeprom_start(void) { return spi_start(EXTERNAL_EEPROM_SPI_SLAVE_SELECT_PIN, EXTERNAL_EEPROM_SPI_LSBFIRST, EXTERNAL_EEPROM_SPI_MODE, EXTERNAL_EEPROM_SPI_CLOCK_DIVISOR); }
static spi_status_t spi_eeprom_wait_while_busy(int timeout) { static spi_status_t spi_eeprom_wait_while_busy(int timeout) {
@@ -91,7 +83,7 @@ static void spi_eeprom_transmit_address(uintptr_t addr) {
//---------------------------------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------------------------
void eeprom_driver_init(void) {} void eeprom_driver_init(void) { spi_init(); }
void eeprom_driver_erase(void) { void eeprom_driver_erase(void) {
#if defined(CONSOLE_ENABLE) && defined(DEBUG_EEPROM_OUTPUT) #if defined(CONSOLE_ENABLE) && defined(DEBUG_EEPROM_OUTPUT)
@@ -110,8 +102,6 @@ void eeprom_driver_erase(void) {
} }
void eeprom_read_block(void *buf, const void *addr, size_t len) { void eeprom_read_block(void *buf, const void *addr, size_t len) {
init_spi_if_required();
//------------------------------------------------- //-------------------------------------------------
// Wait for the write-in-progress bit to be cleared // Wait for the write-in-progress bit to be cleared
bool res = spi_eeprom_start(); bool res = spi_eeprom_start();
@@ -154,8 +144,6 @@ void eeprom_read_block(void *buf, const void *addr, size_t len) {
} }
void eeprom_write_block(const void *buf, void *addr, size_t len) { void eeprom_write_block(const void *buf, void *addr, size_t len) {
init_spi_if_required();
bool res; bool res;
uint8_t * read_buf = (uint8_t *)buf; uint8_t * read_buf = (uint8_t *)buf;
uintptr_t target_addr = (uintptr_t)addr; uintptr_t target_addr = (uintptr_t)addr;
+1 -1
View File
@@ -17,7 +17,7 @@
#include <stdint.h> #include <stdint.h>
#include <string.h> #include <string.h>
#include "hal.h" #include <hal.h>
#include "eeprom_driver.h" #include "eeprom_driver.h"
#include "eeprom_stm32_L0_L1.h" #include "eeprom_stm32_L0_L1.h"
+1 -4
View File
@@ -21,8 +21,6 @@
#include <math.h> #include <math.h>
uint8_t DRV2605L_transfer_buffer[2]; uint8_t DRV2605L_transfer_buffer[2];
uint8_t DRV2605L_tx_register[0];
uint8_t DRV2605L_read_buffer[0];
uint8_t DRV2605L_read_register; uint8_t DRV2605L_read_register;
void DRV_write(uint8_t drv_register, uint8_t settings) { void DRV_write(uint8_t drv_register, uint8_t settings) {
@@ -32,8 +30,7 @@ void DRV_write(uint8_t drv_register, uint8_t settings) {
} }
uint8_t DRV_read(uint8_t regaddress) { uint8_t DRV_read(uint8_t regaddress) {
i2c_readReg(DRV2605L_BASE_ADDRESS << 1, regaddress, DRV2605L_read_buffer, 1, 100); i2c_readReg(DRV2605L_BASE_ADDRESS << 1, regaddress, &DRV2605L_read_register, 1, 100);
DRV2605L_read_register = (uint8_t)DRV2605L_read_buffer[0];
return DRV2605L_read_register; return DRV2605L_read_register;
} }
+1 -1
View File
@@ -403,4 +403,4 @@ typedef union DRVREG_CTRL5 { /* register 0x1F */
uint8_t C5_LRA_AUTO_OPEN_LOOP : 1; uint8_t C5_LRA_AUTO_OPEN_LOOP : 1;
uint8_t C5_AUTO_OL_CNT : 2; uint8_t C5_AUTO_OL_CNT : 2;
} Bits; } Bits;
} DRVREG_CTRL5; } DRVREG_CTRL5;
+39 -14
View File
@@ -33,11 +33,18 @@ void haptic_init(void) {
eeconfig_init(); eeconfig_init();
} }
haptic_config.raw = eeconfig_read_haptic(); haptic_config.raw = eeconfig_read_haptic();
if (haptic_config.mode < 1) { #ifdef SOLENOID_ENABLE
haptic_config.mode = 1; solenoid_set_dwell(haptic_config.dwell);
} #endif
if (!haptic_config.mode) { if ((haptic_config.raw == 0)
dprintf("No haptic config found in eeprom, setting default configs\n"); #ifdef SOLENOID_ENABLE
|| (haptic_config.dwell == 0)
#endif
) {
// this will be called, if the eeprom is not corrupt,
// but the previous firmware didn't have haptic enabled,
// or the previous firmware didn't have solenoid enabled,
// and the current one has solenoid enabled.
haptic_reset(); haptic_reset();
} }
#ifdef SOLENOID_ENABLE #ifdef SOLENOID_ENABLE
@@ -118,25 +125,37 @@ void haptic_mode_decrease(void) {
} }
void haptic_dwell_increase(void) { void haptic_dwell_increase(void) {
uint8_t dwell = haptic_config.dwell + 1;
#ifdef SOLENOID_ENABLE #ifdef SOLENOID_ENABLE
int16_t next_dwell = ((int16_t)haptic_config.dwell) + SOLENOID_DWELL_STEP_SIZE;
if (haptic_config.dwell >= SOLENOID_MAX_DWELL) { if (haptic_config.dwell >= SOLENOID_MAX_DWELL) {
dwell = 1; // if it's already at max, we wrap back to min
next_dwell = SOLENOID_MIN_DWELL;
} else if (next_dwell > SOLENOID_MAX_DWELL) {
// if we overshoot the max, then cap at max
next_dwell = SOLENOID_MAX_DWELL;
} }
solenoid_set_dwell(dwell); solenoid_set_dwell(next_dwell);
#else
int16_t next_dwell = ((int16_t)haptic_config.dwell) + 1;
#endif #endif
haptic_set_dwell(dwell); haptic_set_dwell(next_dwell);
} }
void haptic_dwell_decrease(void) { void haptic_dwell_decrease(void) {
uint8_t dwell = haptic_config.dwell - 1;
#ifdef SOLENOID_ENABLE #ifdef SOLENOID_ENABLE
if (haptic_config.dwell < SOLENOID_MIN_DWELL) { int16_t next_dwell = ((int16_t)haptic_config.dwell) - SOLENOID_DWELL_STEP_SIZE;
dwell = SOLENOID_MAX_DWELL; if (haptic_config.dwell <= SOLENOID_MIN_DWELL) {
// if it's already at min, we wrap to max
next_dwell = SOLENOID_MAX_DWELL;
} else if (next_dwell < SOLENOID_MIN_DWELL) {
// if we go below min, then we cap to min
next_dwell = SOLENOID_MIN_DWELL;
} }
solenoid_set_dwell(dwell); solenoid_set_dwell(next_dwell);
#else
int16_t next_dwell = ((int16_t)haptic_config.dwell) - 1;
#endif #endif
haptic_set_dwell(dwell); haptic_set_dwell(next_dwell);
} }
void haptic_reset(void) { void haptic_reset(void) {
@@ -150,6 +169,12 @@ void haptic_reset(void) {
#ifdef SOLENOID_ENABLE #ifdef SOLENOID_ENABLE
uint8_t dwell = SOLENOID_DEFAULT_DWELL; uint8_t dwell = SOLENOID_DEFAULT_DWELL;
haptic_config.dwell = dwell; haptic_config.dwell = dwell;
haptic_config.buzz = SOLENOID_DEFAULT_BUZZ;
solenoid_set_dwell(dwell);
#else
// This is to trigger haptic_reset again, if solenoid is enabled in the future.
haptic_config.dwell = 0;
haptic_config.buzz = 0;
#endif #endif
eeconfig_update_haptic(haptic_config.raw); eeconfig_update_haptic(haptic_config.raw);
xprintf("haptic_config.feedback = %u\n", haptic_config.feedback); xprintf("haptic_config.feedback = %u\n", haptic_config.feedback);
+2 -10
View File
@@ -15,7 +15,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
#include <timer.h> #include "timer.h"
#include "solenoid.h" #include "solenoid.h"
#include "haptic.h" #include "haptic.h"
@@ -32,14 +32,6 @@ void solenoid_buzz_off(void) { haptic_set_buzz(0); }
void solenoid_set_buzz(int buzz) { haptic_set_buzz(buzz); } void solenoid_set_buzz(int buzz) { haptic_set_buzz(buzz); }
void solenoid_dwell_minus(uint8_t solenoid_dwell) {
if (solenoid_dwell > 0) solenoid_dwell--;
}
void solenoid_dwell_plus(uint8_t solenoid_dwell) {
if (solenoid_dwell < SOLENOID_MAX_DWELL) solenoid_dwell++;
}
void solenoid_set_dwell(uint8_t dwell) { solenoid_dwell = dwell; } void solenoid_set_dwell(uint8_t dwell) { solenoid_dwell = dwell; }
void solenoid_stop(void) { void solenoid_stop(void) {
@@ -73,7 +65,7 @@ void solenoid_check(void) {
// Check whether to buzz the solenoid on and off // Check whether to buzz the solenoid on and off
if (haptic_config.buzz) { if (haptic_config.buzz) {
if (elapsed / SOLENOID_MIN_DWELL % 2 == 0) { if ((elapsed % (SOLENOID_BUZZ_ACTUATED + SOLENOID_BUZZ_NONACTUATED)) < SOLENOID_BUZZ_ACTUATED) {
if (!solenoid_buzzing) { if (!solenoid_buzzing) {
solenoid_buzzing = true; solenoid_buzzing = true;
writePinHigh(SOLENOID_PIN); writePinHigh(SOLENOID_PIN);
+16 -2
View File
@@ -29,6 +29,22 @@
# define SOLENOID_MIN_DWELL 4 # define SOLENOID_MIN_DWELL 4
#endif #endif
#ifndef SOLENOID_DWELL_STEP_SIZE
# define SOLENOID_DWELL_STEP_SIZE 1
#endif
#ifndef SOLENOID_DEFAULT_BUZZ
# define SOLENOID_DEFAULT_BUZZ 0
#endif
#ifndef SOLENOID_BUZZ_ACTUATED
# define SOLENOID_BUZZ_ACTUATED SOLENOID_MIN_DWELL
#endif
#ifndef SOLENOID_BUZZ_NONACTUATED
# define SOLENOID_BUZZ_NONACTUATED SOLENOID_MIN_DWELL
#endif
#ifndef SOLENOID_PIN #ifndef SOLENOID_PIN
# error SOLENOID_PIN not defined # error SOLENOID_PIN not defined
#endif #endif
@@ -37,8 +53,6 @@ void solenoid_buzz_on(void);
void solenoid_buzz_off(void); void solenoid_buzz_off(void);
void solenoid_set_buzz(int buzz); void solenoid_set_buzz(int buzz);
void solenoid_dwell_minus(uint8_t solenoid_dwell);
void solenoid_dwell_plus(uint8_t solenoid_dwell);
void solenoid_set_dwell(uint8_t dwell); void solenoid_set_dwell(uint8_t dwell);
void solenoid_stop(void); void solenoid_stop(void);
+9 -8
View File
@@ -63,7 +63,7 @@ uint8_t g_twi_transfer_buffer[20];
// buffers and the transfers in IS31FL3731_write_pwm_buffer() but it's // buffers and the transfers in IS31FL3731_write_pwm_buffer() but it's
// probably not worth the extra complexity. // probably not worth the extra complexity.
uint8_t g_pwm_buffer[LED_DRIVER_COUNT][144]; uint8_t g_pwm_buffer[LED_DRIVER_COUNT][144];
bool g_pwm_buffer_update_required = false; bool g_pwm_buffer_update_required[LED_DRIVER_COUNT] = {false};
/* There's probably a better way to init this... */ /* There's probably a better way to init this... */
#if LED_DRIVER_COUNT == 1 #if LED_DRIVER_COUNT == 1
@@ -75,7 +75,7 @@ uint8_t g_led_control_registers[LED_DRIVER_COUNT][18] = {{0}, {0}, {0}};
#elif LED_DRIVER_COUNT == 4 #elif LED_DRIVER_COUNT == 4
uint8_t g_led_control_registers[LED_DRIVER_COUNT][18] = {{0}, {0}, {0}, {0}}; uint8_t g_led_control_registers[LED_DRIVER_COUNT][18] = {{0}, {0}, {0}, {0}};
#endif #endif
bool g_led_control_registers_update_required = false; bool g_led_control_registers_update_required[LED_DRIVER_COUNT] = {false};
// This is the bit pattern in the LED control registers // This is the bit pattern in the LED control registers
// (for matrix A, add one to register for matrix B) // (for matrix A, add one to register for matrix B)
@@ -190,8 +190,8 @@ void IS31FL3731_set_value(int index, uint8_t value) {
is31_led led = g_is31_leds[index]; is31_led led = g_is31_leds[index];
// Subtract 0x24 to get the second index of g_pwm_buffer // Subtract 0x24 to get the second index of g_pwm_buffer
g_pwm_buffer[led.driver][led.v - 0x24] = value; g_pwm_buffer[led.driver][led.v - 0x24] = value;
g_pwm_buffer_update_required = true; g_pwm_buffer_update_required[led.driver] = true;
} }
} }
@@ -213,20 +213,21 @@ void IS31FL3731_set_led_control_register(uint8_t index, bool value) {
g_led_control_registers[led.driver][control_register] &= ~(1 << bit_value); g_led_control_registers[led.driver][control_register] &= ~(1 << bit_value);
} }
g_led_control_registers_update_required = true; g_led_control_registers_update_required[led.driver] = true;
} }
void IS31FL3731_update_pwm_buffers(uint8_t addr, uint8_t index) { void IS31FL3731_update_pwm_buffers(uint8_t addr, uint8_t index) {
if (g_pwm_buffer_update_required) { if (g_pwm_buffer_update_required[index]) {
IS31FL3731_write_pwm_buffer(addr, g_pwm_buffer[index]); IS31FL3731_write_pwm_buffer(addr, g_pwm_buffer[index]);
g_pwm_buffer_update_required = false; g_pwm_buffer_update_required[index] = false;
} }
} }
void IS31FL3731_update_led_control_registers(uint8_t addr, uint8_t index) { void IS31FL3731_update_led_control_registers(uint8_t addr, uint8_t index) {
if (g_led_control_registers_update_required) { if (g_led_control_registers_update_required[index]) {
for (int i = 0; i < 18; i++) { for (int i = 0; i < 18; i++) {
IS31FL3731_write_register(addr, i, g_led_control_registers[index][i]); IS31FL3731_write_register(addr, i, g_led_control_registers[index][i]);
} }
g_led_control_registers_update_required[index] = false;
} }
} }
+45 -5
View File
@@ -119,6 +119,9 @@ uint32_t oled_timeout;
#if OLED_SCROLL_TIMEOUT > 0 #if OLED_SCROLL_TIMEOUT > 0
uint32_t oled_scroll_timeout; uint32_t oled_scroll_timeout;
#endif #endif
#if OLED_UPDATE_INTERVAL > 0
uint16_t oled_update_timeout;
#endif
// Internal variables to reduce math instructions // Internal variables to reduce math instructions
@@ -268,6 +271,10 @@ static void rotate_90(const uint8_t *src, uint8_t *dest) {
} }
void oled_render(void) { void oled_render(void) {
if (!oled_initialized) {
return;
}
// Do we have work to do? // Do we have work to do?
oled_dirty &= OLED_ALL_BLOCKS_MASK; oled_dirty &= OLED_ALL_BLOCKS_MASK;
if (!oled_dirty || oled_scrolling) { if (!oled_dirty || oled_scrolling) {
@@ -468,8 +475,9 @@ void oled_write_raw_byte(const char data, uint16_t index) {
} }
void oled_write_raw(const char *data, uint16_t size) { void oled_write_raw(const char *data, uint16_t size) {
if (size > OLED_MATRIX_SIZE) size = OLED_MATRIX_SIZE; uint16_t cursor_start_index = oled_cursor - &oled_buffer[0];
for (uint16_t i = 0; i < size; i++) { if ((size + cursor_start_index) > OLED_MATRIX_SIZE) size = OLED_MATRIX_SIZE - cursor_start_index;
for (uint16_t i = cursor_start_index; i < cursor_start_index + size; i++) {
if (oled_buffer[i] == data[i]) continue; if (oled_buffer[i] == data[i]) continue;
oled_buffer[i] = data[i]; oled_buffer[i] = data[i];
oled_dirty |= ((OLED_BLOCK_TYPE)1 << (i / OLED_BLOCK_SIZE)); oled_dirty |= ((OLED_BLOCK_TYPE)1 << (i / OLED_BLOCK_SIZE));
@@ -511,8 +519,9 @@ void oled_write_ln_P(const char *data, bool invert) {
} }
void oled_write_raw_P(const char *data, uint16_t size) { void oled_write_raw_P(const char *data, uint16_t size) {
if (size > OLED_MATRIX_SIZE) size = OLED_MATRIX_SIZE; uint16_t cursor_start_index = oled_cursor - &oled_buffer[0];
for (uint16_t i = 0; i < size; i++) { if ((size + cursor_start_index) > OLED_MATRIX_SIZE) size = OLED_MATRIX_SIZE - cursor_start_index;
for (uint16_t i = cursor_start_index; i < cursor_start_index + size; i++) {
uint8_t c = pgm_read_byte(data++); uint8_t c = pgm_read_byte(data++);
if (oled_buffer[i] == c) continue; if (oled_buffer[i] == c) continue;
oled_buffer[i] = c; oled_buffer[i] = c;
@@ -522,6 +531,10 @@ void oled_write_raw_P(const char *data, uint16_t size) {
#endif // defined(__AVR__) #endif // defined(__AVR__)
bool oled_on(void) { bool oled_on(void) {
if (!oled_initialized) {
return oled_active;
}
#if OLED_TIMEOUT > 0 #if OLED_TIMEOUT > 0
oled_timeout = timer_read32() + OLED_TIMEOUT; oled_timeout = timer_read32() + OLED_TIMEOUT;
#endif #endif
@@ -538,6 +551,10 @@ bool oled_on(void) {
} }
bool oled_off(void) { bool oled_off(void) {
if (!oled_initialized) {
return !oled_active;
}
static const uint8_t PROGMEM display_off[] = {I2C_CMD, DISPLAY_OFF}; static const uint8_t PROGMEM display_off[] = {I2C_CMD, DISPLAY_OFF};
if (oled_active) { if (oled_active) {
if (I2C_TRANSMIT_P(display_off) != I2C_STATUS_SUCCESS) { if (I2C_TRANSMIT_P(display_off) != I2C_STATUS_SUCCESS) {
@@ -552,6 +569,10 @@ bool oled_off(void) {
bool is_oled_on(void) { return oled_active; } bool is_oled_on(void) { return oled_active; }
uint8_t oled_set_brightness(uint8_t level) { uint8_t oled_set_brightness(uint8_t level) {
if (!oled_initialized) {
return oled_brightness;
}
uint8_t set_contrast[] = {I2C_CMD, CONTRAST, level}; uint8_t set_contrast[] = {I2C_CMD, CONTRAST, level};
if (oled_brightness != level) { if (oled_brightness != level) {
if (I2C_TRANSMIT(set_contrast) != I2C_STATUS_SUCCESS) { if (I2C_TRANSMIT(set_contrast) != I2C_STATUS_SUCCESS) {
@@ -591,6 +612,10 @@ void oled_scroll_set_speed(uint8_t speed) {
} }
bool oled_scroll_right(void) { bool oled_scroll_right(void) {
if (!oled_initialized) {
return oled_scrolling;
}
// Dont enable scrolling if we need to update the display // Dont enable scrolling if we need to update the display
// This prevents scrolling of bad data from starting the scroll too early after init // This prevents scrolling of bad data from starting the scroll too early after init
if (!oled_dirty && !oled_scrolling) { if (!oled_dirty && !oled_scrolling) {
@@ -605,6 +630,10 @@ bool oled_scroll_right(void) {
} }
bool oled_scroll_left(void) { bool oled_scroll_left(void) {
if (!oled_initialized) {
return oled_scrolling;
}
// Dont enable scrolling if we need to update the display // Dont enable scrolling if we need to update the display
// This prevents scrolling of bad data from starting the scroll too early after init // This prevents scrolling of bad data from starting the scroll too early after init
if (!oled_dirty && !oled_scrolling) { if (!oled_dirty && !oled_scrolling) {
@@ -619,6 +648,10 @@ bool oled_scroll_left(void) {
} }
bool oled_scroll_off(void) { bool oled_scroll_off(void) {
if (!oled_initialized) {
return !oled_scrolling;
}
if (oled_scrolling) { if (oled_scrolling) {
static const uint8_t PROGMEM display_scroll_off[] = {I2C_CMD, DEACTIVATE_SCROLL}; static const uint8_t PROGMEM display_scroll_off[] = {I2C_CMD, DEACTIVATE_SCROLL};
if (I2C_TRANSMIT_P(display_scroll_off) != I2C_STATUS_SUCCESS) { if (I2C_TRANSMIT_P(display_scroll_off) != I2C_STATUS_SUCCESS) {
@@ -650,9 +683,16 @@ void oled_task(void) {
return; return;
} }
#if OLED_UPDATE_INTERVAL > 0
if (timer_elapsed(oled_update_timeout) >= OLED_UPDATE_INTERVAL) {
oled_update_timeout = timer_read();
oled_set_cursor(0, 0);
oled_task_user();
}
#else
oled_set_cursor(0, 0); oled_set_cursor(0, 0);
oled_task_user(); oled_task_user();
#endif
#if OLED_SCROLL_TIMEOUT > 0 #if OLED_SCROLL_TIMEOUT > 0
if (oled_dirty && oled_scrolling) { if (oled_dirty && oled_scrolling) {
+2 -2
View File
@@ -28,11 +28,11 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
#include "micro_oled.h" #include "micro_oled.h"
#include <print.h> #include "print.h"
#include <stdlib.h> #include <stdlib.h>
#include "util/font5x7.h" #include "util/font5x7.h"
#include "util/font8x16.h" #include "util/font8x16.h"
#include "string.h" #include <string.h>
#define TOTALFONTS 2 #define TOTALFONTS 2
const unsigned char* fonts_pointer[] = {font5x7, font8x16}; const unsigned char* fonts_pointer[] = {font5x7, font8x16};
+1 -1
View File
@@ -1,3 +1,3 @@
GFXINC += drivers/ugfx/gdisp/is31fl3731c GFXINC += drivers/ugfx/gdisp/is31fl3731c
GFXSRC += drivers/ugfx/gdisp/is31fl3731c/gdisp_is31fl3731c.c GFXSRC += drivers/ugfx/gdisp/is31fl3731c/gdisp_is31fl3731c.c
GDISP_DRIVER_LIST += GDISPVMT_IS31FL3731C_QMK GDISP_DRIVER_LIST += GDISPVMT_IS31FL3731C_QMK
@@ -8,8 +8,9 @@
#ifndef _GDISP_LLD_BOARD_H #ifndef _GDISP_LLD_BOARD_H
#define _GDISP_LLD_BOARD_H #define _GDISP_LLD_BOARD_H
#define ST7565_LCD_BIAS ST7565_LCD_BIAS_9 // actually 6 #include "quantum.h"
#define ST7565_ADC ST7565_ADC_NORMAL
#define ST7565_LCD_BIAS ST7565_LCD_BIAS_7
#define ST7565_COM_SCAN ST7565_COM_SCAN_DEC #define ST7565_COM_SCAN ST7565_COM_SCAN_DEC
#define ST7565_PAGE_ORDER 0, 1, 2, 3 #define ST7565_PAGE_ORDER 0, 1, 2, 3
/* /*
@@ -17,19 +18,12 @@
* #define ST7565_PAGE_ORDER 4,5,6,7,0,1,2,3 * #define ST7565_PAGE_ORDER 4,5,6,7,0,1,2,3
*/ */
#define ST7565_GPIOPORT GPIOC #define ST7565_A0_PIN C7
#define ST7565_PORT PORTC #define ST7565_RST_PIN C8
#define ST7565_A0_PIN 7 #define ST7565_MOSI_PIN C6
#define ST7565_RST_PIN 8 #define ST7565_SCLK_PIN C5
#define ST7565_MOSI_PIN 6 #define ST7565_SS_PIN C4
#define ST7565_SLCK_PIN 5
#define ST7565_SS_PIN 4
#define palSetPadModeRaw(portname, bits) ST7565_PORT->PCR[ST7565_##portname##_PIN] = bits
#define palSetPadModeNamed(portname, portmode) palSetPadMode(ST7565_GPIOPORT, ST7565_##portname##_PIN, portmode)
#define ST7565_SPI_MODE PORTx_PCRn_DSE | PORTx_PCRn_MUX(2)
// DSPI Clock and Transfer Attributes // DSPI Clock and Transfer Attributes
// Frame Size: 8 bits // Frame Size: 8 bits
// MSB First // MSB First
@@ -38,9 +32,9 @@ static const SPIConfig spi1config = {
// Operation complete callback or @p NULL. // Operation complete callback or @p NULL.
.end_cb = NULL, .end_cb = NULL,
// The chip select line port - when not using pcs. // The chip select line port - when not using pcs.
.ssport = ST7565_GPIOPORT, .ssport = PAL_PORT(ST7565_SS_PIN),
// brief The chip select line pad number - when not using pcs. // brief The chip select line pad number - when not using pcs.
.sspad = ST7565_SS_PIN, .sspad = PAL_PAD(ST7565_SS_PIN),
// SPI initialization data. // SPI initialization data.
.tar0 = SPIx_CTARn_FMSZ(7) // Frame size = 8 bytes .tar0 = SPIx_CTARn_FMSZ(7) // Frame size = 8 bytes
| SPIx_CTARn_ASC(1) // After SCK Delay Scaler (min 50 ns) = 55.56ns | SPIx_CTARn_ASC(1) // After SCK Delay Scaler (min 50 ns) = 55.56ns
@@ -66,13 +60,14 @@ static GFXINLINE void release_bus(GDisplay *g) {
static GFXINLINE void init_board(GDisplay *g) { static GFXINLINE void init_board(GDisplay *g) {
(void)g; (void)g;
palSetPadModeNamed(A0, PAL_MODE_OUTPUT_PUSHPULL); setPinOutput(ST7565_A0_PIN);
palSetPad(ST7565_GPIOPORT, ST7565_A0_PIN); writePinHigh(ST7565_A0_PIN);
palSetPadModeNamed(RST, PAL_MODE_OUTPUT_PUSHPULL); setPinOutput(ST7565_RST_PIN);
palSetPad(ST7565_GPIOPORT, ST7565_RST_PIN); writePinHigh(ST7565_RST_PIN);
palSetPadModeRaw(MOSI, ST7565_SPI_MODE); setPinOutput(ST7565_SS_PIN);
palSetPadModeRaw(SLCK, ST7565_SPI_MODE);
palSetPadModeNamed(SS, PAL_MODE_OUTPUT_PUSHPULL); palSetPadMode(PAL_PORT(ST7565_MOSI_PIN), PAL_PAD(ST7565_MOSI_PIN), PAL_MODE_ALTERNATIVE_2);
palSetPadMode(PAL_PORT(ST7565_SCLK_PIN), PAL_PAD(ST7565_SCLK_PIN), PAL_MODE_ALTERNATIVE_2);
spiInit(); spiInit();
spiStart(&SPID1, &spi1config); spiStart(&SPID1, &spi1config);
@@ -83,19 +78,18 @@ static GFXINLINE void post_init_board(GDisplay *g) { (void)g; }
static GFXINLINE void setpin_reset(GDisplay *g, bool_t state) { static GFXINLINE void setpin_reset(GDisplay *g, bool_t state) {
(void)g; (void)g;
if (state) { writePin(ST7565_RST_PIN, !state);
palClearPad(ST7565_GPIOPORT, ST7565_RST_PIN);
} else {
palSetPad(ST7565_GPIOPORT, ST7565_RST_PIN);
}
} }
static GFXINLINE void enter_data_mode(GDisplay *g) { palSetPad(ST7565_GPIOPORT, ST7565_A0_PIN); } static GFXINLINE void write_cmd(GDisplay *g, gU8 cmd) {
static GFXINLINE void enter_cmd_mode(GDisplay *g) { palClearPad(ST7565_GPIOPORT, ST7565_A0_PIN); }
static GFXINLINE void write_data(GDisplay *g, uint8_t *data, uint16_t length) {
(void)g; (void)g;
writePinLow(ST7565_A0_PIN);
spiSend(&SPID1, 1, &cmd);
}
static GFXINLINE void write_data(GDisplay *g, gU8 *data, gU16 length) {
(void)g;
writePinHigh(ST7565_A0_PIN);
spiSend(&SPID1, length, data); spiSend(&SPID1, length, data);
} }
+1 -1
View File
@@ -1,3 +1,3 @@
GFXINC += drivers/ugfx/gdisp/st7565 GFXINC += drivers/ugfx/gdisp/st7565
GFXSRC += drivers/ugfx/gdisp/st7565/gdisp_lld_ST7565.c GFXSRC += drivers/ugfx/gdisp/st7565/gdisp_lld_ST7565.c
GDISP_DRIVER_LIST += GDISPVMT_ST7565_QMK GDISP_DRIVER_LIST += GDISPVMT_ST7565_QMK
+34 -52
View File
@@ -49,31 +49,15 @@
# define ST7565_COM_SCAN ST7565_COM_SCAN_INC # define ST7565_COM_SCAN ST7565_COM_SCAN_INC
# endif # endif
# ifndef ST7565_PAGE_ORDER # ifndef ST7565_PAGE_ORDER
# define ST7565_PAGE_ORDER 0, 1, 2, 3 # define ST7565_PAGE_ORDER 0, 1, 2, 3, 4, 5, 6, 7
# endif # endif
/*===========================================================================*/ /*===========================================================================*/
/* Driver local functions. */ /* Driver local functions. */
/*===========================================================================*/ /*===========================================================================*/
typedef struct {
bool_t buffer2;
uint8_t data_pos;
uint8_t data[16];
uint8_t ram[GDISP_SCREEN_HEIGHT * GDISP_SCREEN_WIDTH / 8];
} PrivData;
// Some common routines and macros // Some common routines and macros
# define PRIV(g) ((PrivData *)g->priv) # define RAM(g) ((gU8 *)g->priv)
# define RAM(g) (PRIV(g)->ram)
static GFXINLINE void write_cmd(GDisplay *g, uint8_t cmd) { PRIV(g)->data[PRIV(g)->data_pos++] = cmd; }
static GFXINLINE void flush_cmd(GDisplay *g) {
write_data(g, PRIV(g)->data, PRIV(g)->data_pos);
PRIV(g)->data_pos = 0;
}
# define write_cmd2(g, cmd1, cmd2) \ # define write_cmd2(g, cmd1, cmd2) \
{ \ { \
write_cmd(g, cmd1); \ write_cmd(g, cmd1); \
@@ -106,9 +90,10 @@ static GFXINLINE void flush_cmd(GDisplay *g) {
LLDSPEC bool_t gdisp_lld_init(GDisplay *g) { LLDSPEC bool_t gdisp_lld_init(GDisplay *g) {
// The private area is the display surface. // The private area is the display surface.
g->priv = gfxAlloc(sizeof(PrivData)); g->priv = gfxAlloc(GDISP_SCREEN_HEIGHT * GDISP_SCREEN_WIDTH / 8);
PRIV(g)->buffer2 = false; if (!g->priv) {
PRIV(g)->data_pos = 0; return gFalse;
}
// Initialise the board interface // Initialise the board interface
init_board(g); init_board(g);
@@ -119,25 +104,33 @@ LLDSPEC bool_t gdisp_lld_init(GDisplay *g) {
setpin_reset(g, FALSE); setpin_reset(g, FALSE);
gfxSleepMilliseconds(20); gfxSleepMilliseconds(20);
acquire_bus(g); acquire_bus(g);
enter_cmd_mode(g);
write_cmd(g, ST7565_RESET);
write_cmd(g, ST7565_LCD_BIAS); write_cmd(g, ST7565_LCD_BIAS);
write_cmd(g, ST7565_ADC); write_cmd(g, ST7565_ADC);
write_cmd(g, ST7565_COM_SCAN); write_cmd(g, ST7565_COM_SCAN);
write_cmd(g, ST7565_RESISTOR_RATIO | 0x1);
write_cmd2(g, ST7565_CONTRAST, GDISP_INITIAL_CONTRAST);
// turn on internal power supply (VC=1, VR=1, VF=1)
write_cmd(g, ST7565_POWER_CONTROL | 0x07);
write_cmd(g, ST7565_INVERT_DISPLAY);
write_cmd(g, ST7565_ALLON_NORMAL);
write_cmd(g, ST7565_START_LINE | 0); write_cmd(g, ST7565_START_LINE | 0);
write_cmd2(g, ST7565_CONTRAST, GDISP_INITIAL_CONTRAST * 64 / 101);
write_cmd(g, ST7565_RESISTOR_RATIO | 0x1);
// turn on voltage converter (VC=1, VR=0, VF=0)
write_cmd(g, ST7565_POWER_CONTROL | 0x04);
delay_ms(50);
// turn on voltage regulator (VC=1, VR=1, VF=0)
write_cmd(g, ST7565_POWER_CONTROL | 0x06);
delay_ms(50);
// turn on voltage follower (VC=1, VR=1, VF=1)
write_cmd(g, ST7565_POWER_CONTROL | 0x07);
delay_ms(50);
write_cmd(g, ST7565_DISPLAY_ON);
write_cmd(g, ST7565_ALLON_NORMAL);
write_cmd(g, ST7565_INVERT_DISPLAY); // Disable Inversion of display.
write_cmd(g, ST7565_RMW); write_cmd(g, ST7565_RMW);
flush_cmd(g);
// Finish Init // Finish Init
post_init_board(g); post_init_board(g);
@@ -163,22 +156,14 @@ LLDSPEC void gdisp_lld_flush(GDisplay *g) {
if (!(g->flags & GDISP_FLG_NEEDFLUSH)) return; if (!(g->flags & GDISP_FLG_NEEDFLUSH)) return;
acquire_bus(g); acquire_bus(g);
enter_cmd_mode(g); gU8 pagemap[] = {ST7565_PAGE_ORDER};
unsigned dstOffset = (PRIV(g)->buffer2 ? 4 : 0); for (p = 0; p < sizeof(pagemap); p++) {
for (p = 0; p < 4; p++) { write_cmd(g, ST7565_PAGE | pagemap[p]);
write_cmd(g, ST7565_PAGE | (p + dstOffset));
write_cmd(g, ST7565_COLUMN_MSB | 0); write_cmd(g, ST7565_COLUMN_MSB | 0);
write_cmd(g, ST7565_COLUMN_LSB | 0); write_cmd(g, ST7565_COLUMN_LSB | 0);
write_cmd(g, ST7565_RMW); write_cmd(g, ST7565_RMW);
flush_cmd(g);
enter_data_mode(g);
write_data(g, RAM(g) + (p * GDISP_SCREEN_WIDTH), GDISP_SCREEN_WIDTH); write_data(g, RAM(g) + (p * GDISP_SCREEN_WIDTH), GDISP_SCREEN_WIDTH);
enter_cmd_mode(g);
} }
unsigned line = (PRIV(g)->buffer2 ? 32 : 0);
write_cmd(g, ST7565_START_LINE | line);
flush_cmd(g);
PRIV(g)->buffer2 = !PRIV(g)->buffer2;
release_bus(g); release_bus(g);
g->flags &= ~GDISP_FLG_NEEDFLUSH; g->flags &= ~GDISP_FLG_NEEDFLUSH;
@@ -243,6 +228,7 @@ LLDSPEC color_t gdisp_lld_get_pixel_color(GDisplay *g) {
} }
# endif # endif
# if GDISP_HARDWARE_BITFILLS
LLDSPEC void gdisp_lld_blit_area(GDisplay *g) { LLDSPEC void gdisp_lld_blit_area(GDisplay *g) {
uint8_t *buffer = (uint8_t *)g->p.ptr; uint8_t *buffer = (uint8_t *)g->p.ptr;
int linelength = g->p.cx; int linelength = g->p.cx;
@@ -268,6 +254,7 @@ LLDSPEC void gdisp_lld_blit_area(GDisplay *g) {
} }
g->flags |= GDISP_FLG_NEEDFLUSH; g->flags |= GDISP_FLG_NEEDFLUSH;
} }
# endif
# if GDISP_NEED_CONTROL && GDISP_HARDWARE_CONTROL # if GDISP_NEED_CONTROL && GDISP_HARDWARE_CONTROL
LLDSPEC void gdisp_lld_control(GDisplay *g) { LLDSPEC void gdisp_lld_control(GDisplay *g) {
@@ -279,16 +266,12 @@ LLDSPEC void gdisp_lld_control(GDisplay *g) {
case powerSleep: case powerSleep:
case powerDeepSleep: case powerDeepSleep:
acquire_bus(g); acquire_bus(g);
enter_cmd_mode(g);
write_cmd(g, ST7565_DISPLAY_OFF); write_cmd(g, ST7565_DISPLAY_OFF);
flush_cmd(g);
release_bus(g); release_bus(g);
break; break;
case powerOn: case powerOn:
acquire_bus(g); acquire_bus(g);
enter_cmd_mode(g);
write_cmd(g, ST7565_DISPLAY_ON); write_cmd(g, ST7565_DISPLAY_ON);
flush_cmd(g);
release_bus(g); release_bus(g);
break; break;
default: default:
@@ -318,12 +301,11 @@ LLDSPEC void gdisp_lld_control(GDisplay *g) {
return; return;
case GDISP_CONTROL_CONTRAST: case GDISP_CONTROL_CONTRAST:
g->g.Contrast = (unsigned)g->p.ptr & 63; if ((unsigned)g->p.ptr > 100) g->p.ptr = (void *)100;
acquire_bus(g); acquire_bus(g);
enter_cmd_mode(g); write_cmd2(g, ST7565_CONTRAST, ((((unsigned)g->p.ptr) << 6) / 101) & 0x3F);
write_cmd2(g, ST7565_CONTRAST, g->g.Contrast);
flush_cmd(g);
release_bus(g); release_bus(g);
g->g.Contrast = (unsigned)g->p.ptr;
return; return;
} }
} }
Loaded 100 of 2826 files, more files were not shown because too many files have changed in this diff. Show more