Compare commits

...

377 Commits

Author SHA1 Message Date
Joel Challis
64b7cfe735 Refactor ps2avrgb i2c ws2812 to core (#7183)
* Refactor ps2avrgb i2c ws2812 to core

* Refactor jj40 to use ws2812 i2c driver

* Refactor ps2avrgb template to use ws2812 i2c driver

* Add ws2812 stub files

* clang-format and driver config

* Add ws2812 driver docs

* Fix default config values

* Update tmk_core/protocol/vusb/main.c

Co-Authored-By: Drashna Jaelre <drashna@live.com>
2019-10-29 15:53:11 -07:00
Spaceman
908aede957 Update feature_bluetooth.md (#7193)
* Update feature_bluetooth.md

* Update feature_bluetooth.md

* Update docs/feature_bluetooth.md

Co-Authored-By: Joel Challis <git@zvecr.com>

* Update docs/feature_bluetooth.md

Co-Authored-By: fauxpark <fauxpark@gmail.com>
2019-10-30 09:43:01 +11:00
Wermeille Bastien
cb3b5563e4 [Docs] Fix some misspells in French documentation (#7171)
* Fix some spelling mistakes

* Fix some misspell in french documentation

* Small misspell fix in French in ChangeLog
2019-10-29 15:42:19 -07:00
Toshihiro Suzuki
d624690135 [Keymap] Add keymaps for myself (#7141)
* [zinc] add toshi0383 qwerty layout

* Add dvorak like keymap

* update keymap

* update keymap

* update

* Add my keymap for reviung39

* cleanup

* fix RESET button position

* add rgb_mod to raise

* Update keyboards/reviung39/keymaps/toshi0383/readme.md

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/zinc/keymaps/toshi0383/keymap.c

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/zinc/keymaps/toshi0383/keymap.c

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* remove unnecessary code

* improve comment

* Update keyboards/reviung39/keymaps/toshi0383/keymap.c

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* Update keyboards/zinc/keymaps/toshi0383/keymap.c

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* remove unused function

* cleanup

* refactor using MO
2019-10-29 15:41:37 -07:00
Dominic Fleckner
f164016566 [Docs] Translated "CLI" documentation to German (#7178)
* Translated "CLI" documentation to German

> * Weise den User an, die Umgebungs-Variable `QMK_HOME` zu setzen, um die Firmware-Quelle anders einzustellen als `~/qmk_firmware`.
- I wasn't quite sure with this translation, as I didn't understand the context in the original English docs.
- The link to the CLI Configuration page is currently not working, due to it being missing in German.

* Update docs/de/cli.md - typo

* Update docs/de/cli.md - added Installation option into documentation

* Update docs/de/cli.md - changed article for CLI

* Update docs/de/cli.md Spelling

* Update docs/de/cli.md Spelling

* Update docs/de/cli.md de-anglicization

* Update docs/de/cli.md Spelling

* Update docs/de/cli.md Synonym

* Update docs/de/cli.md Added Installation option

* Cleaned up installation option duplicate

Co-Authored-By: kuchosauronad0 <22005492+kuchosauronad0@users.noreply.github.com>
2019-10-29 13:33:09 -07:00
Drashna Jaelre
0e6f78547e [Docs] Update flashing information to include :flash target (#6999)
* Update Newbs Flashing guide

For the newbs that want to start flashing

* Update flashing docs

* Misc flashing

* Attempt at flashing in french

Lets hope I didn't butcher this too badly with machine transations

* Update docs/feature_userspace.md

* Apply language suggestions from code review

* Apply suggestions from code review

* Apply additional fr lang suggestions from code review

* Apply suggestions from code review

Co-Authored-By: fauxpark <fauxpark@gmail.com>
Co-Authored-By: Noan Mousy <4sstylz@protonmail.ch>
Co-Authored-By: Xavier Hahn <xavier.hahn@gmail.com>
Co-Authored-By: Vincent LE GOFF <vince.legoff@gmail.com>
2019-10-29 13:15:03 -07:00
Christoffer Holmberg
476f556613 [Keymap] Update layout for my nyquist (#7188)
* Add layer for gaming without fancy Shift & Ctrl keys

* Add default layer select to ARRW layer

* Define layers with an enum to save fw space
2019-10-29 01:39:15 -07:00
St. John Johnson
e0e26957d4 Fix the CLI docs (#6979)
- Sort the commands alphabetically
- Add missing `json_keymap`
- Correct underscore to dash
2019-10-29 01:24:36 +00:00
Jonathan Rascher
afc5cb7f0a Fix Lily58 build with link-time optimization (#7181) 2019-10-29 01:08:48 +00:00
Joel Challis
e48fdebe5a Reduce duplication for ARM/AVR ws2812 RGB Matrix driver (#7180)
* Reduce duplication for ARM/AVR ws2812 rgb_matrix driver

* Reduce duplication for ARM/AVR ws2812 rgb_matrix driver - Fix setled_all use of r,g,b
2019-10-29 01:00:03 +00:00
Chris Alves
1b06ea0c86 [Keymap] Added new custom keymap for the DZ60 (#6948)
* Added custom dz60 keymap

* Update readme.md

* Updated pictures in README.md

* README.md fixes

* Updated mouse layout/ added ` key

* Changed bkspc key to del in mod

* Changed picture

* Updated keymap

* Removed default dz60 config.h

* Updated Readme

* Added Devorak Keymap

* Re-added Default Config File

* Updated Flash Command

* Cleaned Up Custom Config File

* Added Lock Security Layer

* Updated Readme Picture
2019-10-28 17:25:11 -07:00
J.Flanagan
c7a8cab883 [Keyboard] Add M0116b keyboard (#7162)
* initial commit

restart of m0116b development

* initial commit

restart of m0116b development

* Major and minor changes for new PCB design

Changed matrix_row_pins and matrix_sol_pins to match new PCB design
Changed layout matrix to match new PCB design
Minor changes to settings in rules.mk
Minor changes to readme.md files

* Update rules.mk

Changed settings in rules.mk

* major and minor changes

added a default keymap (copy of the m0116 keymap, just to have a default option)
changes to the info.json

* initial commit

restart of m0116b development

* Major and minor changes for new PCB design

Changed matrix_row_pins and matrix_sol_pins to match new PCB design
Changed layout matrix to match new PCB design
Minor changes to settings in rules.mk
Minor changes to readme.md files

* Update rules.mk

Changed settings in rules.mk

* major and minor changes

added a default keymap (copy of the m0116 keymap, just to have a default option)
changes to the info.json

* Update keyboards/sck/m0116b/keymaps/default/keymap.c

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/sck/m0116b/keymaps/default/keymap.c

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/sck/m0116b/keymaps/m0116/keymap.c

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/sck/m0116b/keymaps/m0116/keymap.c

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/sck/m0116b/keymaps/m0118/keymap.c

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/sck/m0116b/m0116b.h

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/sck/m0116b/m0116b.h

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/sck/m0116b/keymaps/m0118/keymap.c

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Requested changes

Changes per requests

* Changes to keymaps

Changes as discussed

corrected location of custom_keycodes declaration and changed custom keycode in keymap per request and discussion.
2019-10-28 16:57:16 -07:00
Drashna Jaelre
947e61eaeb [Keyboard] Change Corne RGB Matrix split handling (#7117)
* [Keyboard] Change Corne RGB Matrix split handling

This uses the "is_master" detection to set the led matrix, rather than a define at compile time.

This means that the same hex can be used for both halves, not just one or the other.  The caveat is that this costs ~240 bytes to do.
However, I feel that this is a good trade-off, not just lazy.

* Update documentation for RGB Matrix on the Corne
2019-10-28 16:29:00 -07:00
Yan-Fa Li
a096453259 [Keyboard] Fix matrix for Tsangan (#7159)
- 1st mod after space bar was wrong position
2019-10-28 16:26:59 -07:00
Christoffer Holmberg
e376aa284d [Keymap] Layout update for my ergodox (#7187)
* Add KC_ESC to normal location and move SE_HALF to ARRW layer

* Add `<` and `>` to SYMB layer as standalone keys
2019-10-28 16:26:13 -07:00
Nikita Titov
4fef3b23e4 [Docs] started Russian translation of Newbs Guide (partial) (#6967)
* started Russian translation

* added translation of some newbs docs

* do not translate firmware word in name and transliterate names keeping original ones in brackets

* addressed review comments

* addressed more review comments

Co-Authored-By: nabokovas <bbkv@bk.ru>
2019-10-28 16:22:58 -07:00
Xyverz
f19c8b2d5d [Keymap] Updating keymaps (#7170)
* Added WOW layer

* Initial commit for this branch. Still a work in progress.

* Added Rorschach keyboard layout.

* Simplified keymap

Removed the media layer to help simplify things. Also corrected some
keymap mistakes in the Qwerty and Colemak layers.

* Added ErgoTravel keymap.

* reverted to previous layout.

* Added Sol keyboard layout.

* Minor changes to keymap.

* more changes

* Added sol graphic by Kagerufu and Cardiactuna

* Added colemak layer because I can.

* more changes to sol layout

* Streamlined Sol layout

* minor tweaks to sol layout

* further revisions to sol keymap.

* Removing deprecated #include statements from my keymaps

* Standardizing keymap `include` lines.

* Minor change to keymap.

Swapped ESC with GRV on all alpha layers.

* Tweaks to Atreus62 Keymap

Added a layer for FPS RPG Loot Shooters.

* Fixed readme.md for Atreus keymap.

Replaced "Keymap" with "Layer" in illustrations for continuity's sake

* More readme.md clean-up

More clarification in the Atreus readme file.

* Next verse, same as the first.

* Changes to Sol layout

Bringing my Sol layout more in line with my other Orthos.

* Fixed keymap GUI.

Replaced left-hand "RGUI" with "LGUI" on all layers as it should be.

* Added ALPS64 keymap

* Formatting corrections

* fixes to config.h and keymap.c

* Fixed errors

This commit fixes a pathing issue in keyboards/orthodox/keymaps/xyverz/config.h
and removes an stupid comma at the end of each LAYOUT stanza in
keyboards/rgbkb/sol/keymaps/xyverz/keymap.c left there by me.

* Fixed orthodox keymap config.h file

I hope this one fixes the problem. *sigh*

* Making suggested changes for PR#6192

Thanks to noroadsleft, fauxpark, and drashna. Still have
more work to do, but at least these suggestions have been applied.

* Fixing build errors

Travis has shown me the error of my ways...

* More fixes and corrections

Those pesky semicolons...

* More Fixes.

* Removing unneeded code snippet.

* fixed omitted semicolons

* Code updates to my keymaps

Updating the code for my Iris, Atreus62, and Atreus keymaps.

* Fixed Atreus62 Keymap

I forgot to add in the aliases for LOWER, RAISE, and ADJUST.

* Added userspace

Also made changes to Atreus62 Keymap to turn the red LEDs off on the ProMicro

* Fixing code that disables LEDs on ProMicros
Also tidied up my ErgoTravel keymap.

* Moving userspace to new branch

Moving my userspace to a new branch for the sake of keeping things
clean on the master branch.

* Added F13-F15 to Atreus62 Layout.

* Update readme.md.

* Updated Phantom keymap to current keymap standards

* Phantom keymap updates

Further updates - tidying and removing cruft.
Thank you zvecr on Discord for the help!

* Standards Updates

Bringing my Kinesis keymap up to current code standards

* Adding a readme

* Bring GH60 code to standard

* Utilizing layouts for 60_ansi and tkl_ansi

Moving my GH60 and Phantom keymaps into layouts/community/

* Alps64 layout removal

Removing my Alps64 keymap now that I've setup my 60_ansi layout.

* Moved Clueboard layout to community/66_ansi.

* Additions to 66_ansi config.h

* Bringing keymaps up to standard.

* More updates to keymaps.

* Syntax updates

* Revert "Syntax updates"

This reverts commit a892b2d9fc.

* Moved WIP keymaps

Moved my WIP keymaps to my wip_keymaps branch to keep my master clean

* Updates requested by noroadsleft

* more changes per noroadsleft

More fixes as requested by noroadsleft. Further tidy-up and
standardization of my keymap code.
2019-10-28 16:09:01 -07:00
fauxpark
8ab7f1f39e Fix formatting for sendstring LUTs (#7176) 2019-10-28 15:54:05 -07:00
Yadunand Prem
917ab71c52 Clean macos install script (#7186) 2019-10-28 22:13:07 +00:00
fauxpark
6d7c6d4fd6 Cleanup rules.mk for 32U4 keyboards, R-S (#7182) 2019-10-28 19:08:00 +00:00
Joel Challis
8bc90ee20c Fix travis build failures for namecard2x4 (#7189) 2019-10-28 19:05:27 +00:00
Adam Perlman
1971f22285 Update split i2c docs for example of when pull-ups are required (#7143) 2019-10-28 18:10:25 +00:00
Arda Kılıçdağı
24cf6dc7f4 aranck handwired keyboard added (#7151)
* aranck handwired keyboard added

* layer enum updated

* layout optimisations and general fixes done

* Readme updated

* Readme updated

* Readme updated
2019-10-28 18:04:37 +00:00
J.Flanagan
84ac03bbab [Keyboard] Add NEISO Macro Pad (#7163)
* Initial Commit

Initial commit of the N-E-ISO Pad

* Changes to keymap.c

Minor Changes to keymap.c

* Major Changes

Changes to config.h, neiso.c, neiso.h, readme.md, rules.mk, info.json

* Updated readme.md

Changed wording of redme.md

* Initial Commit

Initial commit of the N-E-ISO Pad

* Changes to keymap.c

Minor Changes to keymap.c

* Major Changes

Changes to config.h, neiso.c, neiso.h, readme.md, rules.mk, info.json

* Updated readme.md

Changed wording of redme.md

* Update keyboards/sck/neiso/info.json

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/sck/neiso/info.json

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/sck/neiso/keymaps/default/keymap.c

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

* Update keyboards/sck/neiso/neiso.h

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

* Changes per request

Removed lines 55-60 from default/keymap.c per request
2019-10-28 17:57:15 +00:00
Yan-Fa Li
5777177cec [keyboard] yanfali fruity60 prototype (#7021)
* initial commit

* README

* Unique id

* info.json

* layotus

* br

* Move to handwired

* cleanup

* Disable command for fruity out of flash space

* Old compiler

turn off command
2019-10-28 16:47:48 +00:00
Jonathan Rascher
92be2439ec Couple more minor Lily58 keymap tweaks (#7175)
* Move grave/tilde and backslash/pipe to left hand

* Shift media keys to be aligned with home row

* Update KLE images

* Mention new media key location in readme

* Turn off a couple more features for explicitness
2019-10-28 02:53:49 +00:00
Yadunand Prem
d5316e9714 Update URL for 60-keyboard.hwdb (#7185) 2019-10-28 02:41:22 +00:00
Salicylic-acid3
85688f926a [Keyboard] Add keyboard Naked64 (#7144)
* [Keyboard] Add keyboard Naked64

Add Naekd64 keyboard.

A 64 keys Ortholinear + Alice Layout keyboard.
Salicylic-acid3

* Update keyboards/naked64/readme.md

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/naked64/readme.md

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/naked64/rev1/rev1.c

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/naked64/rev1/rev1.h

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/naked64/keymaps/default_with_setta21/keymap.c

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/naked64/keymaps/salicylic_with_setta21/keymap.c

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/naked64/keymaps/salicylic_with_setta21/keymap.c

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/naked64/keymaps/salicylic_with_setta21/keymap.c

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

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

Co-Authored-By: Drashna Jaelre <drashna@live.com>

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

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* Update keyboards/naked64/keymaps/default_with_setta21/keymap.c

Co-Authored-By: Drashna Jaelre <drashna@live.com>

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

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* Update keyboards/naked64/keymaps/default_with_setta21/keymap.c

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* Update keyboards/naked64/keymaps/salicylic/keymap.c

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* Update keyboards/naked64/keymaps/salicylic/keymap.c

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* Update keyboards/naked64/keymaps/salicylic_with_setta21/keymap.c

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* Update keyboards/naked64/keymaps/salicylic_with_setta21/keymap.c

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* Update keyboards/naked64/keymaps/salicylic_with_setta21/keymap.c

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* Update keyboards/naked64/keymaps/default_with_setta21/keymap.c

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* Update keyboards/naked64/rev1/rev1.h

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

* Update keyboards/naked64/keymaps/salicylic/keymap.c

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* Update keyboards/naked64/keymaps/default_with_setta21/keymap.c

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/naked64/keymaps/default_with_setta21/keymap.c

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/naked64/keymaps/default_with_setta21/keymap.c

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/naked64/keymaps/default_with_setta21/keymap.c

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/naked64/keymaps/salicylic_with_setta21/keymap.c

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/naked64/keymaps/salicylic_with_setta21/keymap.c

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/naked64/keymaps/salicylic_with_setta21/keymap.c

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/naked64/keymaps/salicylic_with_setta21/keymap.c

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Modify info.json and rule.mk

rule.mk modifies comments.
info.json is changed to Layout without angle.

* Update info.json

Puts the keys in the correct sequence.
2019-10-26 18:10:50 -07:00
fauxpark
40de65eac4 Backslash-escape pipe character in keycode lists (#7157) 2019-10-26 06:10:03 +01:00
fauxpark
5d34e70cf7 Cleanup rules.mk for 32U4 keyboards, N-Q (#7147) 2019-10-25 18:32:18 -07:00
fauxpark
006ec86786 [Keyboard] Fix Print Screen key for XT to USB converter (#7039)
* Fix Print Screen key for XT to USB converter

* While I'm here, get rid of led.c as it does absolutely nothing

* Fix info.json too

* "]" key is 1.25U and stepped on the Model F XT
2019-10-25 18:23:11 -07:00
Gouty
19f73483d8 [Docs] Fixed internal links on Handwire page (#7154)
Some of the links were not playing nice on docs.qmk.fm, I think this fixes it.
2019-10-25 18:16:17 -07:00
Rys Sommefeldt
50202bc222 [Keymap] Align top and bottom layers to make it easier to map between them (#7153) 2019-10-25 18:14:21 -07:00
Rys Sommefeldt
a30ccc025e [Keymap] Personal layout for the RAMA M6-A (#7152) 2019-10-25 18:07:49 -07:00
Joel Challis
d03303ab74 Revert "Initial actions/labeler config (#7091)" (#7156)
This reverts commit 32fdf4805a.
2019-10-26 00:27:17 +01:00
Michael B. Hix
ad5ead24c3 [Keyboard] musl/add-chiron-keyboard (#7146)
* Add the Chiron keyboard

* Add link to case repo

* Update keyboards/handwired/chiron/readme.md

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

* Update keyboards/handwired/chiron/keymaps/default/config.h

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/handwired/chiron/rules.mk

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/handwired/chiron/rules.mk

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/handwired/chiron/rules.mk

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/handwired/chiron/readme.md

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/handwired/chiron/rules.mk

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/handwired/chiron/rules.mk

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Clean up rules.mk for the configurator
2019-10-25 15:48:57 -07:00
Ethan Madden
b2a6329376 [Keymap] Fix some formatting, add blink on lock example (#7145)
* Double backspace + changed layer detection

* Blink on capslock

* updated with feedback from @drashna
2019-10-25 15:34:55 -07:00
Gouty
3fd919c536 [Docs] Update hand wire guide (#7044)
* Reorganised Hand Wire Guide

Added some images and put the "Matrix" section in a hidden <details> section

* Actually adding images this time

removed .jpg from .gitignore

* Hand wire guide updated

Incomplete, but started making the guide more general.  Will continue to add images (in imgur as requested)

* Removed some more images from gitignore

* testing image changes (temporary)

* Update hand_wire.md

* added techniques table

* Tweaking the table

* Finished soldering guide

* Fixed some links, change image scaling

* More of the same

* resizing images

* updated images

* Update hand_wire.md

* Resizing images

* Update hand_wire.md

* Update hand_wire.md

* Create ribbon_cable.jpg

* Minor updates to links

* Updated firmware and flashing guidelines

* Updated images to imgur links and re-added images to gitignore

* Implemented requested changes.  Improved wording

* Added handwire helpers info and split KB info

* Update hand_wire.md

* Removed "the" from "the QMK toolbox"

* Fixed handwire helper table and image size

* Fixed a heading
2019-10-25 11:48:59 -07:00
Daniel Shields
0f30a4d2ca Save a few bytes with build options and rgb effect removal. (#7149) 2019-10-25 19:16:46 +01:00
Joel Challis
32fdf4805a Initial actions/labeler config (#7091)
* Initial actions/labeler config

* Initial actions/labeler config - add extra from review
2019-10-25 14:34:54 +01:00
QMK Bot
581a8fa058 format code according to conventions [skip ci] 2019-10-25 06:31:02 +00:00
Álvaro A. Volpato
23048798dd [Keyboard] Add SharkPCB rev Alpha support (#7090)
* Add SharkPCB rev Alpha support

* Solve PWM pin assignment 

- Solve PWM pin configuration for the SharkPCB rev.Alpha, which backlight pin is B0

* Update shark.c copyright name

* Update shark.h copyright section

* Apply suggestions from code review

Suggestions from @zvecr and @drashna were accepted and applied for neater code. Also fixed typos and removed unused comments. See [pull request](https://github.com/qmk/qmk_firmware/pull/7090/files#diff-70c0a1f44287ae5810170b4180cdaa5d) for more information.

Co-Authored-By: Joel Challis <git@zvecr.com>
Co-Authored-By: Drashna Jaelre <drashna@live.com>

* Update PRODUCT_ID into config.h

* Update metadata info.json

Fields "keyboard_name", "keyboard_folder", "url", "maintainer" were updated
2019-10-24 23:27:43 -07:00
Theodore S Lindsey
e8453bbc12 copied atreus astar to mirrored, set PCBDOWN flag (#7137)
* copied atreus astar to mirrored, set PCBDOWN flag

* re-pointed include

* mirrored layout will always be true here
2019-10-24 22:16:24 +01:00
noroadsleft
71d64c85d6 [Keyboard] reviung34: Configurator layout fix (#7138) 2019-10-24 13:55:30 -07:00
Erkki Halinen
323635da06 [Keyboard] Add support for Sticc14 macropad (#7134)
* Push Sticc14 default keymap

* Update READMEs to conform to guidelines

* Requested changes

* Requested changes

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/handwired/sticc14/readme.md

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/handwired/sticc14/readme.md

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Remove useless enum and function overrides
2019-10-24 13:53:26 -07:00
fauxpark
e96cac0814 Cleanup rules.mk for 32U4 keyboards, L-M (#7120)
* Cleanup rules.mk for 32U4 keyboards, L-M

* Move some stuff to keyboard level
2019-10-24 13:50:13 -07:00
Drashna Jaelre
335dd0271e Fix Tap Dance name for consistency and to match docs (#7136) 2019-10-24 20:08:29 +01:00
Erovia
a5a31a5fc0 MILC: Use dashes instead of underscores for subcommands
The subcommand functions' name follows the Python convention of using
snake case, but looks odd on the command line.
Fix it by converting underscores to dashes, eg.: list_keyboards ->
list-keyboards.
2019-10-23 22:46:30 -07:00
J.Flanagan
4da9d2ef6f [Keyboard] Add GTM Pad macropad (#7123)
* initial commit

begin development of Grand Theft Macro Pad (2key2crawl clone)

* Minor Changes

Changes to readme.md

Changes to config.h matrix pins

Changes to gtm.h layout

Changes to rules.mk

* initial commit

begin development of Grand Theft Macro Pad (2key2crawl clone)

* Minor Changes

Changes to readme.md

Changes to config.h matrix pins

Changes to gtm.h layout

Changes to rules.mk

* Update keyboards/sck/gtm/readme.md

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

* Update keyboards/sck/gtm/readme.md

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

* Update keyboards/sck/gtm/rules.mk

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

* Update keyboards/sck/gtm/rules.mk

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

* Update keyboards/sck/gtm/rules.mk

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

* Update keyboards/sck/gtm/rules.mk

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

* Update keyboards/sck/gtm/rules.mk

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

* Update keyboards/sck/gtm/rules.mk

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

* Update keyboards/sck/gtm/rules.mk

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

* Update keyboards/sck/gtm/rules.mk

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

* Changes to gtm.h

Changes to layout to be correct for matrix_cols and matrix_col_pins

* Minor Changes

Removed rotary encoder index in keymaps per suggestion
2019-10-23 21:36:40 -07:00
skullydazed
9160405d39 Support for the upcoming 1UP Keyboards Sweet 16 rev2 (#7125)
* Support for the upcoming 1up Keyboards Sweet 16 rev2

* Update keyboards/1upkeyboards/sweet16/rev1/readme.md

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/1upkeyboards/sweet16/rev1/readme.md

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/1upkeyboards/sweet16/rev2/promicro/readme.md

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/1upkeyboards/sweet16/rev2/proton_c/readme.md

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/1upkeyboards/sweet16/readme.md

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/1upkeyboards/sweet16/rev1/rev1.c

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

* Update keyboards/1upkeyboards/sweet16/rev1/rev1.c

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

* Update keyboards/1upkeyboards/sweet16/rev1/rev1.c

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

* Update keyboards/1upkeyboards/sweet16/rev1/rev1.c

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

* Update keyboards/1upkeyboards/sweet16/rev1/rev1.c

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

* Update keyboards/1upkeyboards/sweet16/rev1/rev1.c

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

* Update keyboards/1upkeyboards/sweet16/rules.mk

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

* Update keyboards/1upkeyboards/sweet16/rules.mk

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

* Update keyboards/1upkeyboards/sweet16/rules.mk

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

* Update keyboards/1upkeyboards/sweet16/rules.mk

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

* Update keyboards/1upkeyboards/sweet16/rev1/rules.mk

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* Update keyboards/1upkeyboards/sweet16/rev2/promicro/rules.mk

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* tweak readme wording per @noroadsleft

* Change rev to V

* remove extraneous info.json files
2019-10-23 21:14:00 -07:00
vuhopkep
23f89ff7cf [Keyboard] add new keyboard hnah40rgb (#7083)
* add new keyboard hnah40rgb

* update

* Update hnah40rgb.c

* update
2019-10-23 16:38:44 -07:00
Eriq M. Adams
e264f0151d [Keyboard] Blackplum a.k.a IMKG68 - new 68% mechanical keyboard (#7122)
* Add blackplum firmware

blackplum firmware

* Delete blackplum.c

* Delete blackplum.h

* Delete config.h

* Delete info.json

* Delete rules.mk

* Delete keymap.c

* Update readme.md

* Delete readme.md

* Add Blackplum

* Add image: blackplum layout

* Update readme.md

* Update readme.md

* remove _WINLCK layer, replaced with custom_keycodes

* change #define LAYOUT_68 to #define LAYOUT_68_ansi

* change  DEBOUNCING_DELAY to DEBOUNCE, remove IS_COMMAND()

* change keyboard_name, maintainer, url, width height

* change some comments

* Update readme

* LAYOUTS = 68_ansi

* update layout_68_ansi

* Change LAYOUT_68 to LAYOUT_68_ansi

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

* Fix Bug

* remove extern keymap_config_t keymap_config;

* Update config.h

* Update config.h

* Update config.h

* Update keyboards/blackplum/rules.mk

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

* Update rules.mk

* Update rules.mk

* Update readme.md

* Update readme.md
2019-10-23 16:34:44 -07:00
skullydazed
b62ee65c6d Support for the Clueboard California macropad (#7127)
* Support for the Clueboard California macropad

* Update keyboards/clueboard/california/config.h

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>
2019-10-23 14:18:12 -07:00
Salicylic-acid3
68cf2725aa [Keyboard] Naked48/60 Configurator bugfix (#7131)
Support for QMK configurator of keyboard Naked48 / 60.
Related: Pull request to configurator
[Keyboard] Add keyboard Naked48 / 60 # 549
2019-10-23 10:18:59 -07:00
noroadsleft
6d95082cbf [Keyboard] 1up60rgb: fix LAYOUT_60_iso json tree (#7126)
ISO Enter was out of sequence.
2019-10-23 08:44:20 -07:00
Pentti Laitinen
6799937a3c [Keymap] Updating Nordic ergo keymap (#7107)
* Update ergodox infinity nordic_ergo keymap

- Add missing important keys to base layer.
- Move arrow keys around as the original position was not optimal.
- Fix some code styling issues.

* Fix indentation to 4 spaces

* More code style fixes

- Formated the methods in the nordic ergo keymap.

* Fix QMK code style issues

- Change layer defines to enums.
- Split enums to multi-line.
- Remove non required switch case.
2019-10-23 00:54:14 -07:00
just-another-jxliu
51bf3ba3e6 Fix held key getting stuck when NKRO is toggled (#6570)
* Fix held key getting stuck when NKRO is toggled

* Updated file to latest qmk version and added fix to cases MAGIC_UNHOST_NKRO & MAGIC_HOST_NKRO as well.

* Revert merged quantum.c
2019-10-22 13:03:39 -07:00
noroadsleft
c8fd015618 [Keyboard] Owlet60 Updates (#7103)
* Owlet60 updates

Co-Authored-By: noroadsleft <xxiinophobia@yahoo.com>

* fix url in info.json
2019-10-22 10:59:56 -07:00
Salicylic-acid3
737bca8e51 [Keyboard] Keyboard Naked60 Update (#7106)
* [Keyboard] Keyboard Naked60 Update

Support for SPLIT_KEYBOARD
Keymap updates

* Update keyboards/naked60/readme.md

Co-Authored-By: Joel Challis <git@zvecr.com>

* Update keyboards/naked60/rev1/config.h

Co-Authored-By: Joel Challis <git@zvecr.com>

* Update keyboards/naked60/rev1/rev1.h

Co-Authored-By: Joel Challis <git@zvecr.com>

* Update keyboards/naked60/rev1/rev1.h

Co-Authored-By: Joel Challis <git@zvecr.com>
2019-10-22 10:54:53 -07:00
Michael Guterl
d99f6e95e1 [Keymap] Add userspace and personal keymaps (#7093)
* Add Planck keymap and custom keycodes to userspace

* Add Preonic keymap and extract common ortho layers and keycodes

* Add Leaf60 WKL keymap

* Add M60-A keymap

* Add Levinson keymap

* Fix links in personal readmes

* Use flash target

* Remove duplicate definition

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

* Remove superfluous line endings

* Planck and preonic encoder should have the same behavior

* Use higher level API

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

* Use layouts to reduce planck/levinson duplication

* Update flash instructions for levinson
2019-10-22 10:41:14 -07:00
fauxpark
e214f2826e Add ISO layout macro for KBD67 rev2 (#7113) 2019-10-22 06:44:50 -07:00
Josh Hinnebusch
d60b193932 update VID and PID for h87a (#7100) 2019-10-22 14:39:15 +01:00
Reid Sox-Harris
454c99d128 add bdn9/eosti keymap (#7105) 2019-10-22 14:37:29 +01:00
Max Rumpf
f87908228a Remove apostrophe from various abbreviations' plural forms (#7050)
While this was historically a valid possibility, nowadays, it reads
kinda weird, and the [Oxford Dictionaries Online suggests to avoid it](https://english.stackexchange.com/a/56010).

Thus, I removed it everywhere I found it.
2019-10-22 13:47:43 +01:00
fauxpark
2ee961c9e8 Cleanup rules.mk for 32U4 keyboards, I-K (#7097)
* Cleanup rules.mk for 32U4 keyboards, I-K

* Clean up ivy rules.mk
2019-10-21 21:43:18 -07:00
Deckweiss
c44aff5f18 [Keyboard] Added layout, configured bluetooth (Hacked Motospeed handwired) (#7084)
* Added more intuitive layout with bluetooth commands
2019-10-21 21:34:43 -07:00
halvves
4b47abc737 [Keymap] add halvves let's split keymap (#7063)
* add halvves let's split keymap

* [cr] - review requests from @fauxpark

* cleanup spacing, add transparent for spaces in util layer

* [cr] - use new core funcs / @fauxpark & @drashna

* enable EE_HANDS

* [cr] - switch to definable mask for layer state (@drashna)
2019-10-21 20:38:53 -07:00
Adam Perlman
0ab8edb523 [Keymap] Ergodox EZ and dactyl-manuform keymaps for rishka (#7051)
* Setup keymaps and userspace for Rishka

* Creates a keymap for Ergodox Ez, bdn9 and Dactyl Manuform 5x6

* Update bdn9 config with suggested change

* Add pragma to other header files

* Apply suggestions from code review

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

* Updates from review from fauxpark

* Updates from review

Swap to keyboard_post_init, layer_state_t and use layer state for encoder

* Updates from review

Swap to keyboard_post_init, layer_state_t and use layer state for encoder

* Add missing change from review
2019-10-21 20:37:33 -07:00
kuchosauronad0
80ded60cad Add a short explanation to Zadig the troubleshooting section (#7110)
* Add a short explanation to the troubleshooting section

While translating I noticed that the troubleshooting section could use a
little bit more explanation. @Yanfali was so kind to chime in on this on
discord and explained that this was ment for people who accidently
forget to put their board in bootloader mode, so I added this as a
possible common mistake.

Also fixed the spelling of Msys2 to MSYS2 and Halfkay to HalfKay as
these are the official spellings they use themselves.

* Update driver_installation_zadig.md

* Update driver_installation_zadig.md

English is hard.

* Update docs/driver_installation_zadig.md

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

* Update docs/driver_installation_zadig.md

Co-Authored-By: fauxpark <fauxpark@gmail.com>
2019-10-22 14:05:33 +11:00
Arda Kılıçdağı
f033d8113d [Keyboard] 40percentclub 4 pack macropad keyboard (#7088)
* 4 pack macropad layout added

* Update keyboards/40percentclub/4pack/keymaps/default/readme.md

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/40percentclub/4pack/readme.md

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/40percentclub/4pack/readme.md

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/40percentclub/4pack/readme.md

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/40percentclub/4pack/readme.md

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* remove unnecessary comments, remove firmware impact numbers, align comments

* remove unnecessary readme paragraphs

* pinout changed with direct pins instead of matrix

* typo fixed on led method name

* leds are now handled by backlight feture, led.c removed, info.json added, flash instructions updated
2019-10-21 19:27:26 -07:00
Rys Sommefeldt
267be40793 [Keymap] Personal layout for the Wonderland (#7095) 2019-10-21 18:48:45 -07:00
fauxpark
af03c5f7fa Change V60 Polestar RGB timer to 3 (#7099) 2019-10-22 02:01:03 +01:00
noroadsleft
165020a670 Naked60 Configurator bugfix (#7108)
* remove extra commas

* fix label for comma key

* switch to debug linting (one key per line)
2019-10-22 00:34:37 +01:00
fauxpark
97b8ade1aa [Keyboard] Use GPIO macros for E6 LED in Planck and Preonic default keymaps (#7098) 2019-10-20 22:38:22 -07:00
Catriel Müller
1533483bb2 [Keymap] catrielmuller keymap for the dztech/dz65rgb (#7015)
* Catriel Müller - Dz65rgb personal keymap

* - Removed backslashes
- Changed IS_LED_ON to IS_HOST_LED_ON
- Removed empty unused hooks
2019-10-20 12:55:36 -07:00
fauxpark
3dbf08b655 Cleanup rules.mk for 32U4 keyboards, H (#7030)
* Cleanup rules.mk for 32U4 keyboards, H

* Change some boards incorrectly assumed to be halfkay
2019-10-20 12:51:37 -07:00
Sid Carter
bc073b817a [Keymap] updates to madhatter keymap - project keyboard alice pcb (#7092)
* change arrows keys around

* move arrows and layer tap

* mouse keys and other mods

* add readme and add media keys too
2019-10-20 12:26:41 -07:00
Salicylic-acid3
233a1e9bcd [Keyboard] Keyboard Naked48 Update (#7085)
* Keyboard Naked48 Update

Support for SPLIT_KEYBOARD
Readme updates
Keymap updates
Support for RGB matrix (salicylic keymap)

* Keymap Update

Change KC_NO to KC_TRANSPARENT.
Update the old part.
2019-10-20 12:03:46 -07:00
Jonathan Rascher
a41066beed [Keymap] Assorted personal keymap and layout updates (#7082)
* Enable PERMISSIVE_HOLD and TAPPING_FORCE_HOLD

* Fix indentation in userspace

* Shuffle around more Lily58 symbol keys

* Reformat KBD67 keymap and KLE images

* Fix Lily58 lower layer image

* Reformat Quefrency keymap and KLE images

* Fix KBD67 KLE images... again

* Add KLE links for Quefrency

* Reformat 60% layouts and KLE images

* Move Super key back to right half of Lily58

* Move Lily58 ins/del out of the way of numbers

* Fix bottom row of Lily58 KLE image
2019-10-20 11:41:36 -07:00
Romain Gehrig
a4c008fe90 [Keymap] Romain's Preonic layout (#7067)
* Add customized preonic layout

* Add a README detailing a bit the differences from the default preonic layout

* Apply suggestions from code review

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

* Remove unnecessary end-of-line backslashes

* Import fix for startup sound (thanks @drashna)

* Remove unnecessary layers and keycodes

* Bring back the _QWERTY layer code

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>
2019-10-20 11:20:01 -07:00
Reid Sox-Harris
4c90277236 [Keymap] add iris/eosti keymap (#7056) 2019-10-20 11:12:23 -07:00
Yet Another Developer
3d53ea439c [Keymap] Ergodash keymap for yet-another-developer (#7046)
* Initialize ergodash rev 1 keymap

./util/new_keymap.sh ergodash/rev1 yet-another-developer

* Add user space configurations referenced from drashna

* Start community layout for ergodash in ortho_5x14

* Remove unused layers

* Add userspace layers

* Add Userspace gitignore

Hide Secrets

* Remove userspace unused drashna features

* Scrap default keymap and follow drashna's template

* Add code referenced from kuchosauronad0

* Make sure that the author is named Developer

* Replace middle keys del and bksp with curly brace

* Reduce ONESHOT_TIMEOUT from 3sec to 2sec

* Remove adjust key AG_SWAP

* Disable UNICODEMAP_ENABLE, remove code causing build fail

* Increase TAPPING_TERM to 240

Reason:  Because Space is also LOWER, space sometimes not registering.
PS: I dont want to #define RETRO_TAPPING yet

* Update KC_MAKE to use :flash

* Remove TAP_ONCE, use tap_code

Signed-off-by: Developer <anotherdeveloper@icloud.com>

* Remove redundant code implementation of keyboard_post_init_user

https://github.com/qmk/qmk_firmware/pull/7046

users/yet-another-developer/leader.c
```
  static bool has_ran_yet;
  if (!has_ran_yet) {
    has_ran_yet = true;
    startup_user();
```
Comment for lines +11  – +14
 @drashna: Not needed anymore. You can use keyboard_post_init_user now.

Signed-off-by: Developer <anotherdeveloper@icloud.com>
2019-10-20 11:07:56 -07:00
Harry Wada
f64d9b0621 Fix detection of ModemManager (#7076) 2019-10-20 15:33:58 +01:00
Alan Berndt
8baed70ed1 Add pok3r-like keymap for dz60. (#7078)
* Add pok3r-like keymap for dz60.

* Replace KC_TRNS with underscores
2019-10-20 00:56:03 +11:00
vuhopkep
9bfacc7c76 [Keyboard] update encoder function, info.json data (#7035)
* update encoder function, info.json data

* Update rules.mk
2019-10-18 18:18:39 -07:00
tominabox1
c26faed2b6 [Keymap] Tominabox1 userspace creation (#7014)
* rebaselined the whole fork and added cool matrix animations

* Updated dfu bootloader rules, oleds working on test map

* Moving test branch into main

moving my _test branch files into the main since the repo is now in the dev branch, don't see any reason to keep separate folders.

* Update keymap.c

Adding DOT to number layer

* added LED sleeping

* working on getting matrix rgb to sleep upon usb suspend

uploading to github for qmk staff help

* Added master sleep on usb suspend

Unfortunately the sleep function does not work on the slave side so will probably revert this change later

* bringing hhkb config up to current with other tominabox1 configs

* Update config.h

since master side is the only one that sleeps, going to disable this for now.

* testing oled stuff

* Update rules.mk

* tinkering with oled still

* Finally fixed custom image with corne doug

* Adding keymap to dimple instead of screwing up the upstream references.

* Changed oled image to peepo ggers

* working on oled sleep

* Update keymap.c

* fixes oled wake/sleep issues

* Adding 🅱️ and BEPIS macros

* Update .gitignore

* Cleaning up and improving documentation

* Update keymap.c

* Adding my minivan keymap

* Fixed error on keymap

* fixed OLEDs not turning on and moved tapping term to the keymap file

* Changed tapping term from 200 to 250

* Revised Fkey layers, arrows, question mark locations

* Update keymap.c

* tweaked tapping term and types on CRKBD, revised layout on HHKB

* Update keymap.c

* general code cleanup, keymap displays

* Set up userspace for common keymap elements

* tapping term stuff for shift

* testing

* Fixed new tapdance for accessing number and fkey layers

* Update tominabox1.h

* stuff

* fixing function calls for userspace

* cleaning up crkbd config and moving stuff to userspace

* finally fixed oled lightup issues

* cleaning up a few maps and rules

* Removing permissive hold and returning spacefn to all boards.

* Settting up wrapper keymaps for Dimple, Minivan, and Corne

Wrappers

* small tweaks

* Update wrappers.h

* finishing wrappers on Minivan and Dimple

* Revised tapping term definition

Providing additional tapping term config for CRKBD only.

* Code cleanup and documentation

* Update readme.md

* Update readme.md

* Wrapers and continued code cleanup and documentation

* moved oled py scripts to user folder
* completed wrapper implementation of CRKBD
* added matrix startup mode - not working yet pending upstream changes
* removed unused code in tominabox1.c

* Fixing custom keycodes and tap dance indices

fixed custom keycodes and tap dance indices
Adding beginning of dimple RGB matrix definition
changed oled on corne to scrolling matrix thing
Added copy pasta

* Secondary layer tweaks

Swapping hands of numbers and symbols as well as tweaking tapping terms accordingly

* Update tominabox1.c

Continued refinement of tapping term to support better right hand symbol access.

* Fixes from pr 7014

Removed gitignore data from qmk master
Reverted changes to Drashna's crkbd keymap
Accepted changes to crkbd keymap
Added ignore to hhkb keymap - I think I need this because Teensy. Will revisit another time

* Removing hhkb keymap for rework

* Adding back hhkb keymap

Re-adding hhkb folder with ignores

* Reverting changes to Dimple default

totally did not intend to modify these

* Update keymap.c

Reverting changes to Drashna's corne map

* Accepting recommended changes

* Reduced tap hold caps delay
moved bootmagic enable to general usage
Revised tapping terms
Removed unused keycode defs

* bootmagic

* Update rules.mk

* Fixed permissions (support 7014) and bootmagic addition

Fixed permissions on Drashna's keymap and Dimple default keymap files.
Adding bootmagic to my crkbd config.

* Fixing permissions
2019-10-18 18:15:57 -07:00
Amber Holly
b23f6011c3 Remove build option firmware size impacts (#6947)
* Update rules.mk template to remove build option size impacts

* Add rules.mk cleaning script

* Update all rules.mk files to remove build option firmware size impact messages

* Remove references to feature filesize in documentation

* Revert "Update all rules.mk files to remove build option firmware size impact messages"

This reverts commit 7cfe70976b.

* Fix regex in cleanup script and exclude keymaps/ directories

* Update quantum/template/avr/rules.mk

Fixed missing tabs/spaces.

Co-Authored-By: fauxpark <fauxpark@gmail.com>
2019-10-18 18:14:49 -07:00
Endemoniada
1b1e0977e0 [Keymap] Mekberg kbd6x keymap (#7061)
* First draft of my layout

* Improved layout and cleanup of files

* Update keymap and add rules

* Add keymap.h with permissive_hold setting

* Rename keymap.h to correct name config.h

* Add next/prev and special lock key to Fn layer

* Use correct modifier in MY_LOCK command

* Removed unnecessary filler defines

* Add build instructions to README

* Move RGB controls to more logical up/down key positions, move next/prev controls, remove del from Fn layer

* Fix wrong placeholders and fix up formatting

* Remove unused code

* Clarify comments on custom defines

* Update keyboards/kbdfans/kbd6x/keymaps/mekberg/rules.mk

Co-Authored-By: fauxpark <fauxpark@gmail.com>
2019-10-18 17:37:16 -07:00
KL1RL
d263579781 [Keymap] Initial commit of KL1RL keyboard layout (#7060)
* Inital commit

* Add changes suggest by fauxpark.  Tested for normal function
2019-10-18 17:36:22 -07:00
Yang Li
5c1b7fb502 Add python-pip as package dependency for archlinux (#7041) 2019-10-18 17:22:54 -07:00
Andy Smith
5b311965f8 [Keymap] Custom Planck layout for the Planck (#7036)
* Version 1 of keymappings

* Adding updated keymappings

* Adding hash/pound symbol to layer

* Removing broken macros

* Adding to readme. Amending value of pound sign

* Changing language in readme

* Addressing PR comments. Removing unneeded code, corrected syntax

* Removing commented out code and fixing white space issues

* Small clean up to readme
2019-10-18 17:21:40 -07:00
Drashna Jaelre
22cc56bc97 [Docs] Fix incorrect spacing on Coding Conventions page (#7058) 2019-10-18 16:59:03 -07:00
Yan-Fa Li
de5cadd636 Caps lock indicator moved from keymap (#7070)
- to keyboard so it works in configurator
2019-10-18 10:32:43 -07:00
Yan-Fa Li
f66b2b1f27 Add a via compatible keymap (#7062)
* Add a via compatible keymap

* Disable VIA on default for configurator

 - use the via keymap if you want via support

* Move wilba dep to keymap avoid breaking community

 - moves via specific includes into the _via keymap
 - fixes configurator builds
2019-10-18 07:18:40 -07:00
Joel Challis
5dc91ddc60 SPLIT - Remove NO_USB_STARTUP_CHECK requirement for usb detection (#7053)
* Avoid NO_USB_STARTUP_CHECK - Disable USB as checks seem to enable it somehow

* Update quantum/split_common/split_util.c

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

* Also remove NO_USB_STARTUP_CHECK from vitamins_included/rev1
2019-10-17 23:37:37 +01:00
Mikkel Jeppesen
550435c1c9 [Keyboard] Move vitamins included rev1 to split_common (#7052)
* Initial work to move to split_common

* Fixed serial pin
2019-10-17 18:53:06 +01:00
Joel Challis
abfd6ed961 Move tmk_core/common/backlight to quantum/backlight (#6710)
* Move tmk_core/common/backlight to quantum/backlight

* Add guards to backlight inclusion

* Add guards to backlight inclusion

* Update backlight guards on clueboard/60

* Use full paths to avoid vpath issues
2019-10-17 17:48:58 +01:00
Drashna Jaelre
e3a21348c3 [Keymap] Drashna's Hardware Features Experimentations (#6920)
* Change RGBLight pin for Planck Light

Move it to A0, so that the SPI? pins are available for BT hackery

* Add QMK DFU bootloader info

* Add Solenoid

* Disable annoying white LED on bottom

* Enable Solenoid on Corne

* Remove bounds for animations

* Increase debounce for Ergodox EZ to reduce repeat key issues

* Set swap hands key to be a hold-tap key

This way, it's not ANNOYING and doesn't swap the hands inteniontally

* Move MT Alt in Corne keymap

* Re-Add fine tuned control of secrets

* Squash mods to single row

* Add LRA settings to haptic feedback settings for Rev6

* Fix issue with non-Planck EZ keymaps

* Add 40 Percent Nano with Analog Joystick

* Add Collide39 keymap

* Fix OLED printing to be more flavorful

* Fix up Iris GamePad and come cleanup

* Expand OLED char map further

* Add modded characters to keylogger

* Here be dragons

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Fix up rules for community layouts

* Some more OLED tweaks

* Add mod mask check function

* Change QMK DFU Audio pin to be correct

* Use manual STM config instead of CTPC for Collide 39
2019-10-16 13:11:22 -07:00
Jonathan Rascher
7662ee71f0 [Keymap] Various improvements to my Lily58 keymap (#7045)
* Fix off-by-one error in Lily58 function keys

* Swap number and symbol layers

* Move grave/tilde to the left of brackets/braces

* Add KLE links

* Move function keys to Raise layer

* Move symbols nearer to home row

* Add readme for Lily58 layout
2019-10-16 12:08:45 -07:00
MakotoKurauchi
881f27b461 [Keyboard] Cleanup helix rules options (#6952)
* add temporary test shell-spript

* Use LINK_TIME_OPTIMIZATION_ENABLE instead of Link_Time_Optimization

No change in build result.

* Helix config.h use '#pragma once'

No change in build result.

* Helix helix.h,rev?/rev?.h,pico/pico.h use '#pragma once'

No change in build result.

* Use drivers/avr/pro_micro.h instead of keyboards/helix/pro_micro.h

No change in build result.

* remove keyboards/helix/{rev2|pico}/serial_config.h

No change in build result.

* 'HELIX_ROWS' macro is now referenced only in rev1/config.h and rev2/config.h.

No change in build result.

* The contents of helix/rules.mk were distributed to subdirectories.

This is a preparation to create a new subdirectory for helix code using split_common.

No change in build result.

remove 'USE_I2C = yes', 'SUBPROJECT_rev1 = no' from keyboards/helix/rules.mk.
follow code move from keyboards/helix/rules.mk to keyboards/helix/{rev1,rev2,pico}/rules.mk.

----
 SRC += i2c.c
 SRC += serial.c
 SRC += ssd1306.c

 CUSTOM_MATRIX = yes
---

* helix/{i2c.[ch], serial.[ch], ssd1306.[ch]} move into helix/local_drivers/

No change in build result.

* Simplified 'helix/pico/keymap/*/rules.mk' using KEYBOARD_LOCAL_FEATURES_MK.

No change in build result.

 * add keyboards/helix/pico/local_features.mk
 * add 'KEYBOARD_LOCAL_FEATURES_MK := $(dir $(lastword $(MAKEFILE_LIST)))local_features.mk' into keyboards/helix/pico/rules.mk
 * remove HELIX_CUSTOMISE_MSG from keyboards/helix/pico/keymaps/*/rules.mk
 * remove HELIX= process from keyboards/helix/pico/keymaps/*/rules.mk
 * remove convert code(helix to standaerd) from keyboards/helix/pico/keymaps/*/rules.mk
 * add 'include $(strip $(KEYBOARD_LOCAL_FEATURES_MK))' into keyboards/helix/pico/keymaps/*/rules.mk

* Simplified 'helix/rev2/keymap/*/rules.mk' using KEYBOARD_LOCAL_FEATURES_MK.

No change in build result.

* add keyboards/helix/rev2/local_features.mk
* add 'KEYBOARD_LOCAL_FEATURES_MK := $(dir $(lastword $(MAKEFILE_LIST)))local_features.mk' into keyboards/helix/rev2/rules.mk
* remove HELIX_CUSTOMISE_MSG from keyboards/helix/rev2/keymaps/*/rules.mk
* remove HELIX= process from keyboards/helix/rev2/keymaps/*/rules.mk
* remove convert code(helix to standaerd) from keyboards/helix/rev2/keymaps/*/rules.mk
* add 'include $(strip $(KEYBOARD_LOCAL_FEATURES_MK))' into keyboards/helix/rev2/keymaps/*/rules.mk

* Added helix keyboard build NEW method.

No change in build result.

 ## Helix build
 $ make helix:default            ## no oled, no backlight, no underglow
 $ make helix/rev2/back:default  ## no oled, with backlight, no underglow
 $ make helix/rev2/under:default ## no oled, no backlight, with underglow
 $ make helix/rev2/oled:default  ## with oled, no backlight, not underglow
 $ make helix/rev2/oled/back:default  ## with oled, with backlight, no underglow
 $ make helix/rev2/back/oled:default  ## with oled, with backlight, no underglow
 $ make helix/rev2/oled/under:default ## with oled, no backlight, with underglow
 $ make helix/rev2/under/oled:default ## with oled, no backlight, with underglow

 ## Helix pico build
 $ make helix/pico:default       ## no oled, no backlight, no underglow
 $ make helix/pico/back:default  ## no oled, with backlight, no underglow
 $ make helix/pico/under:default ## no oled, no backlight, with underglow
 $ make helix/pico/oled:default  ## with oled, no backlight, not underglow

* add temporary test shell-spript

* test end remove test script. Revert "add temporary test shell-spript"

This reverts commit 5dac20cd0f.

* test end remove test script. Revert "add temporary test shell-spript"

This reverts commit ec49f63b2d.

* Extended the 'HELIX=' option. add keyword 'verbose', 'no_ani'.

No change in build result.

* update keyboards/helix/{rev2,pico}/keymaps/default/readme.md

* rename KEYBOARD_TOP_DIR to HELIX_TOP_DIR in rules.mk

* update keyboards/helix/{rev2,pico}/keymaps/default/readme_jp.md

* rm keyboards/helix/pico/oled/rules.mk

* update helix's readmes. All the ':avrdude' was replaced with ':flash'.

* remove F_CPU, ARCH, F_USB, INTERRUPT_CONTROL_ENDPOINT from helix/rules.mk

No change in build result.
2019-10-16 11:01:49 -07:00
Manassarn "Noom" Manoonchai
81f36ab74d [Keymap] Add narze keymap for usb-usb converter (#6881)
* Revert raise/backspace mod tap to just backspace

* Initialize usb_usb/narze

* Modify keys

* Add readme

* Support Right shift to )

* Add Dev layer

* Use Dev layer on holding z key

* Add Dev layer for Ergodox

* Update keyboards/converter/usb_usb/keymaps/narze/README.md

Fix the command & close the code block as suggested

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* Reduce rules
2019-10-16 10:48:37 -07:00
Endemoniada
7677e8adde [Keymap] Add Endemoniada keymaps (#6875)
* Add dz60 keymap

* Add my TADA68 layout

* Fix descriptions and formatting

* Formatting fixes

* Add readme file

* Formatting

* move caps lock to correct key, add F-keys to both layers

* Add readme for dz60

* First draft of custom Let's Split layout

* Some more keys

* Finalized keymap

* Added a bunch of custom shortcuts to make layout easier to read

* Add PERMISSIVE_HOLD option to modtap behavior

* Add lock and sleep shortcuts, formatting

* Minor fixes and adjustments

* Add PERMISSIVE_HOLD option, add sleep/lock shortcuts, minor fixes

* Add sleep/lock shortcuts, minor fixes

* fixups

* Major simplification of lets_split layout into more standard raise/lower/special layers

* Remove layer songs, add to readme

* Formatting

* Switch a few keys around for reachability

* Add windows/mac specific layers

* simplify layers

* Update README

* Fix legends

* Invert numpad and put Del in upper right corner

* Disable arrow keys on Raise, add build instructions

* Move dz60 keymap to its own branch

* Remove redundant configuration

* Change volume and sleep keycodes to standard

* Removing empty rules.mk

* Changing layer defines to enum

* Adding comment to explain reason for swapping KC_TRNS and KC_NO fillers
2019-10-16 10:48:00 -07:00
hvp
162dd3fe19 [Keymap] Corne keyap with tap dance Swedish support (#6857)
* Adding profile for Corne with tap dance Swedish support.

* Remove extern keymap_config_t keymap_config as no longer needed

* Changed to use tap_code over register_code

* Removed persistent_default_layer_set

* Moved macros to hvp user space ink tap dance code

* Removed not used functions

* Moved to an ifbased include statement

* Removed not needed characters
2019-10-16 10:44:43 -07:00
nrtkbb
9b07098dbd [Keyboard] Add uzu42 keyboard (#6842)
* initial commit

* OLEDに表示するロゴをuzuのものに差し替えた

* delete undefault keymaps

* delete info.json

* delete pro_micro.h

* remove USE_Link_Time_Optimization check

* Moved constant defined for each keymap.c to rev1.h

* update layer_state_reader.c

* Rename Uzu42 to uzu42

* remove bootloader.h include

* LAYOUT_kc to LAYOUT

* delete keymap level rules.mk

* update readme.md

* remove persistent_default_layer_set function.

* try refactor to use split_common and use OLED driver

* Revert "try refactor to use split_common and use OLED driver"

This reverts commit 5a9afceacb.

* Update keyboards/uzu42/rev1/config.h

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

* Update keyboards/uzu42/rev1/rev1.h

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

* Update keyboards/uzu42/rev1/rev1.h

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

* Update keyboards/uzu42/rules.mk

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

* Remove lines already defined in QMK

* Update keyboards/uzu42/rules.mk

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

* Update keyboards/uzu42/rules.mk

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

* Update keyboards/uzu42/rules.mk

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

* replaced comment block

* Update keyboards/uzu42/config.h

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* Revert "Revert "try refactor to use split_common and use OLED driver""

This reverts commit a7849216f4.

* fix setting for RGBLED

* The default of OLED_DRIVER_ENABLE has been changed to no.

* Delete unuse block.

* Remove unnecessary keycode definitions.

* Remove unuse custom keycode.

* Remove not needed code.

* Remove not called code.

* Remove code overwritten by the core.

* Remove LAYOUT_kc macro.

* Moved the definition of the layer block to keymap.c.

* Removed unuse variable.

* Remove code overwritten by the core too.

* incorporate layer changes

* Moved src rule to keymap from rev1.

* Removed rgb_state_reader.c from lib folder and the code move to the keymap.c

* Removed layer_state_reader.c from lib folder and the code move to the keymap.c

* Removed logo_reader.c from lib folder and the code move to the keymap.c

* Removed keylogger.c from lib folder and the code move to the keymap.c

* Moved glcdfont_uzu42.c from lib folder to the default keymaps folder.

* Removed unused files.
2019-10-16 10:42:06 -07:00
Salicylic-acid3
f360c27f93 [Keyboard] Add keyboard Naked60 (#6527)
* Add Naked60

* readme Update

* Update keyboards/naked60/rules.mk

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Updated keymaps

Changed the alias.

* updated rule.mk

Unnecessary part was deleted and explanation was added to the boot loader.

* Update keyboards/naked60/rules.mk

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

* Update keyboards/naked60/rules.mk

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

* Update keyboards/naked60/rev1/rev1.h

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

* Update keyboards/naked60/rev1/rev1.h

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

* Update keyboards/naked60/rev1/config.h

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

* Update keyboards/naked60/rev1/config.h

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

* Updated keymaps rules.mk.

Cleaned up declarations in rules.mk.

* Updated keymap

Changed remaining aliases.

* Update rev1.c

Cleaned up declarations in rev1.c.

* Update readme

The appearance has been adjusted.

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

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/naked60/keymaps/default_with_nafuda/readme.md

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/naked60/keymaps/default_with_nafuda/readme.md

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/naked60/keymaps/salicylic/readme.md

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/naked60/keymaps/salicylic/rules.mk

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/naked60/keymaps/salicylic_with_nafuda/rules.mk

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/naked60/keymaps/salicylic_with_nafuda/rules.mk

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/naked60/keymaps/salicylic_with_setta21/rules.mk

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/naked60/keymaps/salicylic_with_setta21/rules.mk

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/naked60/rev1/rev1.c

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/naked60/rules.mk

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/naked60/rules.mk

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/naked60/keymaps/default_with_nafuda/rules.mk

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/naked60/keymaps/salicylic/rules.mk

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/naked60/keymaps/default_with_nafuda/rules.mk

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/naked60/keymaps/default_with_setta21/rules.mk

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/naked60/keymaps/default_with_setta21/rules.mk

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Updated keymaps

The appearance has been adjusted.
Unnecessary rules.mk was deleted.

* Update keyboards/naked60/readme.md

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

* Update readme

Changed to markdown format.

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

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

* Update keyboards/naked60/keymaps/salicylic/readme.md

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

* Update keyboards/naked60/keymaps/salicylic/readme.md

Co-Authored-By: fauxpark <fauxpark@gmail.com>
2019-10-16 10:26:43 -07:00
Duncan Elliot
2fc3494fd9 [Keyboard] Update formatting of README for usb_usb (#7037)
Minor updates to make the README a little more readable.
2019-10-16 01:22:28 -07:00
fauxpark
63f4806d7a Fix bug in do_code16() (#6935)
* Fix bug in `do_code16()`

* Remove qk_ mods functions
2019-10-16 00:02:09 +01:00
Catriel Müller
4522519079 Milk 2% - Unicode Keymap Fix and Improvements (#7013)
* - Enabled Unicode Feature to fix the build
- Added TapDance Feature to improve the functionality of the Keyboard
- Added the ability to switch between the Unicodes Modes
- Added more Emojis thanks to the tap dance feature

* Fix Format
2019-10-15 23:29:33 +01:00
Drashna Jaelre
feb116c4f3 [Docs] Replace Switch Hitter link with Wayback Machine link (#7009)
* [Docs] Replace Switch Hitter link with Wayback Machine link

* Add QMK Configurator link as well

To appease yan
2019-10-15 23:21:05 +01:00
theVDude
5a3aefed8d Fix small hiccup in snake animation (#6858) 2019-10-15 23:13:13 +01:00
Deckweiss
eac6ccff98 Added uart config for using rn42 with at90usb1286 (#6582)
* Added uart config for using rn42 with at90usb1286

* Updated quantum/config_common.h

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

* Update quantum/config_common.h

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

* Update quantum/config_common.h

Co-Authored-By: fauxpark <fauxpark@gmail.com>
2019-10-16 09:10:23 +11:00
Joel Challis
2ac4197b73 Add binary support to tinyprintf (#7024) 2019-10-15 13:33:06 +01:00
Joel Challis
cc5edb9eeb Port DEBUG_MATRIX_SCAN_RATE to core (#7029)
* Port DEBUG_MATRIX_SCAN_RATE to core

* Remove duplicate DEBUG_MATRIX_SCAN_RATE implementations

* Remove duplicate DEBUG_MATRIX_SCAN_RATE implementation from handwired/xealous

* Add console logic from ergodox_ez
2019-10-15 13:32:52 +01:00
Joel Challis
e1de0d74a6 Move running pytest to travis_test (#7005) 2019-10-14 17:57:53 +01:00
makenova
6560dffc05 update one shot keys link (#7020) 2019-10-14 01:26:03 +01:00
Joel Challis
e796d7b49e Update splittest/teensy_2 to use SPLIT_USB_DETECT (#7028) 2019-10-14 00:05:41 +01:00
fauxpark
2e7cd98c06 Cleanup rules.mk for 32U4 keyboards, G (#6971)
* Cleanup rules.mk for 32U4 keyboards, G

* Update keyboards/gray_studio/cod67/rules.mk
2019-10-12 23:57:57 +01:00
Joel Challis
a48468590a Remove i2c logic for STM32F103xB in favour of USE_I2CV1 (#6926)
* Remove i2c logic for STM32F103xB in favour of USE_I2CV1

* Remove i2c logic for STM32F103xB in favour of USE_I2CV1
2019-10-12 23:23:36 +01:00
Leo Batyuk
23178d73fc [Keymap] Add soundmonster's keymap for crkbd (#6964)
* Add soundmonster's layout for crkbd

* Incorporate feedback from review

* Remove unneeded base layer-related code
2019-10-11 22:08:03 -07:00
MechMerlin
bb43010170 Fix broken link to ps2avrgb flashing instructions (#7011) 2019-10-11 22:04:00 -07:00
MechMerlin
7becbfb44a [Keyboard] New Keyboard: BM43A (#6997)
* new keyboard bm43a

* Thanks to noroads for generating this with his online tool

* add QMK Configurator support thanks to noroads

* turn on bootmagic lite

* update readme

* remove unneeded comments
2019-10-11 21:44:38 -07:00
fauxpark
076d8babbb [CLI] qmk docs graceful shutdown on Ctrl+C (#6989) 2019-10-11 21:41:58 -07:00
Leivince John Marte
c54d2cbe02 [Keymap] Feature/keymap/projectkb/alice/devinceble (#6986)
* Added KBD6X Vimwarrior HHKB TOFU Personal Layout

* Added Readme.md for Vimwarrior HHKB Tofu Keymap

* Added DZ60 Vimwarrior WKL Tofu Keymap

* Update Rename keymaps to devinceble_hhkb_tofu and devinceble_wkl_tofu

* Update rules.mk Added BOOTLOADER config.

* [Keymap] Added Devinceble Personal Keymap for ProjectKeyboard Alice

* Update Remove Backslashes
2019-10-11 21:38:49 -07:00
Wilba
e47ab6a575 [Keyboard] wilba.tech PCB refactoring (#6982)
* Cleanup

* Refactor VIA rules.mk

* WT mono backlight refactor, VIA support

* Added WT75-C

* Fixed compile error

* Cleanup rules.mk

* Review changes

* Review changes
2019-10-11 21:37:03 -07:00
Laurent Lao
22aa2ce6b2 [Keymap] laurentlaurent's preonic keymap (#6977)
* Removed ugfx binary because of antivirus

* Created laurent's keymap

* Made QWERTY Mac and QWERTY Windows

* Rev 1.0, added _PUNC, _NAV, _EXTRA

* REV 1.1, Dynamic macros start/stop now plays a sound, Lower acts like backspace on tap

* Formatting fixes

* Added Intellisense macro, fixed formatting

* Improved ergonomics/muscle mem on punctuation lay

* Added Raise Tap to Backspace

* Mirrored Ergodox, added One-Handed

* Added layers in README.md, added Caps lock, Scroll lock

* Moved Caps to better location

* Added ErgoDox link

* Edit Readme.md with more layer switching information

* Modified _PUNC for muscle memory

* Reverted .gitignore and .vscode settings.json to reflect master

* Improved formatting according to PR review

* QMK_KEYBOARD_H def for Intellisense fixed->rev3.h

* .gitignore diff fix

* Fixing settings.json diff

* Update settings.json

* Update keyboards/preonic/keymaps/laurentlaurent/keymap.c

Co-Authored-By: fauxpark <fauxpark@gmail.com>
2019-10-11 21:35:53 -07:00
Joel Challis
76378d74f5 ARM split - detect USB to select master/slave (#6424)
* Initial split refactor to allow usb master detection

* Add split USB detect docs

* Add SPLIT_USB_DETECT demo mode limitation

* fix rebase issues

* clang-format
2019-10-11 23:25:43 -04:00
Joel Challis
64c075ed2c Fix CONVERT_TO_PROTON_C_RXLED pins (#7007) 2019-10-11 12:11:47 +01:00
Olivierko
094aa7c24b added new layout and Olivierko keymap for dz60 (#6996)
* - added new layout for dz60
- created personal keymap using new layout

* - changes based on pr feedback from @noroadsleft

* - further readme formatting

* Apply suggestions from code review

applied changes based on review feedback

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

* - readme formatting

* Apply suggestions from code review

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>
2019-10-11 08:52:16 +11:00
Leivince John Marte
918f13a4ac Fix/projectkb/alice/right spacebar layout size from 2.25 to 2.7… (#6984)
* Added KBD6X Vimwarrior HHKB TOFU Personal Layout

* Added Readme.md for Vimwarrior HHKB Tofu Keymap

* Added DZ60 Vimwarrior WKL Tofu Keymap

* Update Rename keymaps to devinceble_hhkb_tofu and devinceble_wkl_tofu

* Update rules.mk Added BOOTLOADER config.

* [Keymap] Added devinceble keymap for TADA68

* Fix projectkb/alice Right Spacebar Size to 2.75 not a bug though but confusing

* Update Right Alt for Layout Fix
2019-10-11 08:48:03 +11:00
noroadsleft
5156a7e05c fix DZ60 info.json (#7000) 2019-10-10 07:58:38 -07:00
fauxpark
ed1bf3afa2 Prevent clang-format messing up placeholder tokens within keyboard templates (#6790)
* Use .template file extension for keyboard template files

* Filter out .template files completely before passing to clang-format

* Undo file extension stuff; just ignore quantum/template dir
2019-10-10 11:48:37 +01:00
Jono Warren
528ddb7987 [Keyboard] Added new layout for DZ60 and keymap (#6854)
* Added new layout

Added my preferred layout

* Added my keymap

* Update info.json

Added LAYOUT_60_stand_stag_all

* Update README.md

Removed image from the keymap I based this layout from.

* Update keyboards/dz60/keymaps/iso_vim_arrow_split_rs/keymap.c

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/dz60/keymaps/iso_vim_arrow_split_rs/keymap.c

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/dz60/info.json

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/dz60/dz60.h

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/dz60/info.json

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/dz60/keymaps/iso_vim_arrow_split_rs/keymap.c

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/dz60/dz60.h

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

* Update rules.mk

Removed verbose rules.mk
2019-10-09 15:55:27 -07:00
Xavier Hahn
da3ff89fac [Docs] French translation - Breaking Changes section (#6966)
* Translated breaking_changes.md in French

* Translated ChangeLog/20190830.md to French

* Update docs/fr-FR/breaking_changes.md

Co-Authored-By: Max Rumpf <max.rumpf1998@gmail.com>

* Fix comments from @zekth

Co-Authored-By: Vincent LE GOFF <g_n_s@hotmail.fr>
2019-10-09 15:45:41 -07:00
Drashna Jaelre
e58343596a Keyboard/ergodox debounce (#6994)
* Set default debounce to 30

Lower debounce causes issues, and even 15 isn't lowe enough for the EZ

* Cleanup ergodox ez matrix
2019-10-09 23:23:57 +01:00
Gary Zhao
4e23c700f1 [Keymap] Adding garyjzhao's Iris keymap (#6980)
* Added Gary's user files

* Added Gary's Iris Keymap files

* Added Gary's Iris Keymap files

* updated readme

* removed comments

* Cleaned up code even more
2019-10-09 12:05:31 -07:00
MechMerlin
531ff70e0d [Keyboard] Satisfaction75 Configurator support (info.json) (#6833)
* add configurator support for rev1 s75

* add configurator support for prototype

* Update keyboards/cannonkeys/satisfaction75/prototype/info.json

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/cannonkeys/satisfaction75/rev1/info.json

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/cannonkeys/satisfaction75/rev1/info.json

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/cannonkeys/satisfaction75/rev1/info.json

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/cannonkeys/satisfaction75/rev1/info.json

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/cannonkeys/satisfaction75/rev1/info.json

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* fixup layouts

* Update keyboards/cannonkeys/satisfaction75/rev1/info.json

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/cannonkeys/satisfaction75/rev1/info.json

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>
2019-10-09 11:03:33 -07:00
MechMerlin
3cb216f381 [Keyboard] New Keyboard: Exent (#6985)
* initial commit

* thank you mr keebs for making this easy. Added 65_ansi macro made from mrkeebs kle2qmk tool.

* split backspace requires an additional row

* change k43 to k42

* add in split space bar support for LAYOUT_all

* add QMK Configurator support

* make default keymap more usable

* update readme

* Update keyboards/exent/info.json

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

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

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

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

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

* Update keyboards/exent/rules.mk

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>
2019-10-09 10:23:38 -07:00
Leivince John Marte
23cac6a606 [Keymap] Feature/keymap/tada68 (#6983)
* Added KBD6X Vimwarrior HHKB TOFU Personal Layout

* Added Readme.md for Vimwarrior HHKB Tofu Keymap

* Added DZ60 Vimwarrior WKL Tofu Keymap

* Update Rename keymaps to devinceble_hhkb_tofu and devinceble_wkl_tofu

* Update rules.mk Added BOOTLOADER config.

* [Keymap] Added devinceble keymap for TADA68

* Update Reduce down rules.mk to just MOUSEKEY_ENABLE
2019-10-09 09:58:39 -07:00
noroadsleft
1f2ad80c16 Gray Studio Space65 Configurator Layout fix (#6987)
- LAYOUT_65_ansi_blocker data was actually LAYOUT's data.
- added actual LAYOUT_65_ansi_blocker data
2019-10-09 07:09:57 -07:00
noroadsleft
db3d4a92ae Kingly Keys Little Foot Configurator layout fix (#6988)
* fix Kingly Keys Little Foot info.json

Was missing a closing curly bracket.

* clean up the indenting

White-space-only change.
2019-10-09 06:48:29 -07:00
Ethan Durrant
8da25dd6e3 [Docs] removed unneeded line of code in Tap Dance documentation (#6981) 2019-10-08 22:01:56 -07:00
shu_numata
8991d9ab3a [Docs] Fix missing link in readme (#6958) 2019-10-08 21:59:11 -07:00
Max Rumpf
1c07d4e7ef [Docs] Clean up docs/newbs_flashing.md (#6973)
* [Docs] Clean up docs/newbs_flashing.md

See #6930

* Fix typo
2019-10-08 21:55:44 -07:00
Xavier Hahn
0ea4e86175 [Docs] French translation of QMK Basics (#6925)
* Adds the files that will be translated

* Start translate cli_configuration.md in French

* Translated cli.md in French

* Translated getting_started_getting_help.md in French

* /getting_started_github.md

* Translated first part of contributing.md in French

* Finish translation of contributing.md

* Translated the getting_started_introduction.md in French

* Corrected issues from @zekth review

Co-Authored-By: Vincent LE GOFF <g_n_s@hotmail.fr>
2019-10-08 13:27:45 -07:00
fauxpark
4335b97a07 Reorder Raw HID interface to match what the USB spec expects (#6801) 2019-10-08 11:47:37 -07:00
Pittyolo
89fe8d2d87 [Keymap] Adding my keymaps for Preonic and XD75 (#6874)
* Added my keymaps

* Update to readmes

* Update keyboards/preonic/keymaps/pitty/config.h

Thanks!

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* Update keyboards/preonic/keymaps/pitty/config.h

Thanks!

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* Update keyboards/preonic/keymaps/pitty/config.h

Thanks!

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* Update config.h

* Update keyboards/preonic/keymaps/pitty/keymap.c

Thanks!

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Removed copyrighted material

* Update keyboards/xd75/keymaps/pitty/keymap.c

Thanks!

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update config.h

* Update config.h

* Update config.h

* Update keymap.c

* Update keymap.c

* Update config.h

* Update keymap.c

* Update keyboards/preonic/keymaps/pitty/config.h

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/preonic/keymaps/pitty/config.h

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>
2019-10-08 11:26:17 -07:00
Garret G
9fe7b406cb [Keyboard] Move existing boards to Kingly_Keys and add more boards (#6879)
* try to fix and orginize to Kingly_Keys subfolder and add various keyboard support

* fixed layout nomenclature and rules.mk pref

* modified readme for smd_milk

* fixed layout name in little_foot.h

* Update keyboards/kingly_keys/romac_plus/keymaps/default/keymap.c

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* Update keyboards/kingly_keys/romac_plus/keymaps/default/keymap.c

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* Update keyboards/kingly_keys/romac_plus/keymaps/default/keymap.c

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* remove old stand-alone keyboard folders

* Fixed missing comma in littlefoot keymap

* remove OLED code in romac_plus.c

* Update rules.mk

* Update readme.md

* Apply suggestions from code review

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

* Update rules.mk

* Update rules.mk

* Update keymap.c

* Update keymap.c

* Update keymap.c

* fix little_foot.h layouts, delete smd_milk readme.md

* Fix ALpha Edits

* Fix ALpha Edits p.2

* update little_foot.h

* fix little_foot.h p.2

* Update keyboards/kingly_keys/little_foot/little_foot.h

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/kingly_keys/little_foot/keymaps/default/keymap.c

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* Update keyboards/kingly_keys/romac_plus/keymaps/default/keymap.c

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* Update keyboards/kingly_keys/romac_plus/keymaps/default/keymap.c

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* Update keyboards/kingly_keys/romac_plus/keymaps/default/keymap.c

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* Update keyboards/kingly_keys/romac_plus/keymaps/default/keymap.c

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* Update keyboards/kingly_keys/romac_plus/keymaps/default/keymap.c

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* Modify config.h for cleaned up PCB.
2019-10-08 11:24:20 -07:00
dsanchezseco
19584b92c5 [Keymap] keymaps for planck and crkbd (#6895)
* using similar keymaps (with vim in mind) for planck and crkbd

* changed to rgb matrix and lower max brightness to prevent unresponsiveness

* readme and default rgb mode

* disable all the not wanted effects and activate the framebuffer ones

* changed effects

* changed custom keycodes to defines

* fixed comment
2019-10-08 11:16:38 -07:00
fauxpark
2707652c98 [Docs] CLI command to serve docs locally (#6956)
* CLI command to serve docs locally

* Document it

* Default port

* Use `with` and subclass `SimpleHTTPRequestHandler` to set working dir

* Apply suggestions from code review

Co-Authored-By: skullydazed <skullydazed@users.noreply.github.com>

* Update docs/cli.md
2019-10-08 11:06:26 -07:00
Xavier Hahn
e7d95701bf [Docs] French translation of Complete Newbs Guide (#6901)
* Translated _summary.md + newbs.md

* Translated news_best_practices.md in French

* Translated newbs_building_firmware_configurator.md in French

* Translated the file newbs_building_firmware.md in French

* Translated page newbs_flashing.md in French

* Translated the page newbs_getting_started.md in French

* Translated the page newbs_learn_more_resources.md in French

* Translated the page newbs_testing_debugging.md in French

* Change translation of split from 'séparé' to 'scindé'

* Adding the lang file for gitbook and some others tranme other translation

* Correcting typos after Gimly's review

* Some others sections on the summary

* Fix first comments from @zekth

* Fix some issues from @4sStylZ

* Fix other issues from @4sStylZ

* Fix weird phrase

* Replaced all uses of  'téléverser' by 'flash'

* Replaced all planches by board

* Fix other PR comments

* Fix comment
2019-10-08 10:45:34 -07:00
yiancar
5e43f87956 [Keyboard] RGB updates on NK65 and HS60 (#6795)
* RGB update commit

* Convert caps lock indicator check to IS_LED_ON

* ISSI3733 minor change
2019-10-08 09:03:51 -07:00
lucwastiaux
d00326ecb3 [Keymap] modify ergodox_ez / dvorak_42_key layout (#6832)
* add macros for windows 10 workspace switching

* change debounce settings

* add comment

* remove debounce
2019-10-08 08:43:54 -07:00
kuchosauronad0
49fdd386b2 [Docs] Clean up docs/newbs_building_firmware.md (#6930)
* Clean up the blocks in the second section so that macOS & Windows are in the same block with the command

* As suggested by fauxpark
2019-10-07 20:08:05 -07:00
Ethan Durrant
e2ec5790b7 [Docs] updated and cleaned up documentation for Tap Dance (#6949) 2019-10-07 19:28:48 -07:00
Yan-Fa Li
8fe15fa17a [Keymap] Overly greedy community keymap build userspace (#6969)
- this fixes breakage in instant60 pcb sorry @upas
2019-10-07 19:23:59 -07:00
Drashna Jaelre
403c139b34 [Docs] Add AVR and ARM examples to GPIO Commands (#6942)
* [Docs] Add AVR and ARM examples to GPIO Commands

Add examples for reference for people not as well versed in microcontroller coding, such as myself.

* Apply suggestions from code review

Co-Authored-By: fauxpark <fauxpark@gmail.com>
Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>
2019-10-07 19:08:14 -07:00
Lukas Werling
dc5876a8e6 [Keymap] katana60: Fix = key in default keymap (#6941)
The top-right key should be = and not the shifted pseudo-key +. This
matches the sample layout from the picture in the readme [0].

[0]: https://i.imgur.com/xVkODOu.jpg
2019-10-07 17:18:18 -07:00
Janne Peippo
93767540e1 [Keymap] Add new TADA68 keymap (#6938)
* Add new TADA68 keymap

* Remove unnecessary backlashes

* Change from MacOS specific to generic volume keycodes
2019-10-07 17:15:59 -07:00
Max Rumpf
5bb3fe7a35 Remove unanswered/unnecessary FAQ item
As discussed in #6957, closes #6957
2019-10-07 15:43:42 -07:00
fauxpark
3e22af92ee [Docs] Add an important note about modifying user code (#6959)
* Add an important note about modifying user code

* Update docs/contributing.md

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>
2019-10-07 14:50:10 -07:00
NoshBar
2c51d14223 [Keyboard] Cannon Keys Satisfaction75: Fix buffer sizes for sprintfs. (#6954)
sprintf always adds a NULL terminator at the end of the buffer it works on.
A few places made just enough space for the resulting string, but not the terminator.
So this just adds one to the buffer size to make room for it.
2019-10-07 14:35:28 -07:00
Yan-Fa Li
6bed239486 [Keymap] Community layout for hhkb (#6961) 2019-10-07 13:31:11 -07:00
Dylan Khor
c2709a7ca4 [Keymap] Clean up / adjust khord let's split keymap (#6951)
Remove unneeded lines and change right side mouse buttons on raise layer back to media control
2019-10-07 12:35:37 -07:00
Diego
26fe4e44d5 [Keymap] Fix talljoe-gherkin keymap typo (#6950) 2019-10-07 11:57:35 -07:00
Ethan Durrant
b5b057ad95 [Keymap] MF68 keymap LED pins fixed (#6946)
* fixing LED pins to accurately use the Pro Micro LEDs

* fixing trailing whitespace
2019-10-07 11:42:12 -07:00
Dan McClain
f04e58dad6 [CLI] Add qmk list_keyboards (#6927)
`list_keyboards` replicates the `make list-keyboards` by globbing for all paths
that include `rules.mk` and then removing the paths that include `keymaps`.

This basis of this cli command could be reused in the future as a util, but is
not done so here since this would be the only place that would use it currently

Resolves #6911
2019-10-07 11:32:30 -07:00
Jesper Nellemann Jakobsen
d9b056486b [Keymap] Move brightness controls one key over (#6945)
I forgot to count the extra ISO-only key next to left shift when
initially adding these brightness controls.
2019-10-07 11:17:08 -07:00
Jonas Avellana
2881f53dd4 [Keymap] updating ninjonas userspace (#6903)
* [refactor] updating ninjonas layout blocks and standardized LOWER & ADJUST

* [feat] added new macro M_TERM to open MacOS terminal app

* [feat] introducing mod-tap functionality on keymap

* [fix] fixing oled turning on when it feels like it. thanks @drashna for helping

* [feat] updating OLED to rotate logo 180 degrees

* [feat] updating keymaps to reflect VSCode frequent habits

* [refactor] converting crkbd modifier keys to layer blocks

* [fix(#6903)] converting _delay_ms to wait_ms on launching terminal macro
2019-10-07 10:42:03 -07:00
Erdem Efe Erol
d0ef139749 [Docs] Typo fix for feature_hd44780.md (#6917)
* Typo fix

Fixed a typo.

* Update feature_hd44780.md

* Update feature_hd44780.md
2019-10-06 16:39:23 -07:00
Erovia
60cd12f8a4 Dimple: Fix Caps Lock LED behaviour (#6936)
* Dimple: Fix Caps Lock LED behaviour

* Dimple: fix helper functions and cleanup unnecessary code
2019-10-07 05:15:17 +11:00
Erdem Efe Erol
c73d6f6ac8 [Docs] Removed dead link (#6922)
Removed an old link and fixed a typo
2019-10-06 07:56:35 -07:00
Janne Peippo
f73f71db9c [Keymap] Add new Cyclops keymap (#6923) 2019-10-06 07:44:02 -07:00
Daniel Klug
345d3cc046 [Keymap] dactyl_left (#6775)
* [keymap] dactyl_left

Special layout for the left side of the ergodox dactyl.

* [keymap] dactyl_left

Special layout for the left side of the ergodox dactyl.

* Updated readme.md

* Update keyboards/handwired/dactyl_left/readme.md

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/handwired/dactyl_left/readme.md

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/handwired/dactyl_left/info.json

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/handwired/dactyl_left/info.json

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/handwired/dactyl_left/info.json

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Addressing changes for PR

removed layers.json and 15-24 from rules.mk

* Updating keymap for better a default

Hopefully this works as a starting point
2019-10-05 23:58:23 -07:00
St. John Johnson
78f01eef2e Use keymap instead of username variable for qmk new_keymap (#6885)
Username is not defined and this causes `qmk new_keymap` to error.  This
appears to have originated from a partial update in
https://github.com/qmk/qmk_firmware/pull/6708/files#diff-d5208bcbc79aa428556a743b6ff41086.  This change completes the migration from `username` to `keymap`
2019-10-05 23:41:15 -07:00
Kaiede
f3f7f941dc [Keyboard] Whitefox Aria Layout Support (#6915)
* [Keyboard] Add Whitefox Aria Layout

* [Keyboard] Add Whitefox Aria to info.json

* [Keyboard] Apply Whitefox.h Suggestions from Review

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>
2019-10-05 19:59:16 -07:00
Max Rumpf
60267fe2ca [Keyboard] Add Phoebe, a keyboard by Maxr1998 (#6870)
* Add Phoebe, a keyboard by Maxr1998

* Improve include-guard

* Remove unused functions

* Remove unused extern

* Add image

* Some more fixes
2019-10-05 16:44:22 -07:00
Josh Benavides
18a0e6fedc [Keymap] Add HHKB-based keymap for DZ60 (#6907)
* Created personal keymap for dz60 hhkb layout.

* Renamed directory joooosh to joooosh_hhkb... Removed redundant KC_TRNS alias #define... Updated to use KC_TRNS alias defined in QMK_KEYBOARD_H.
2019-10-05 16:24:31 -07:00
gtips
8cf1491d04 [Keyboard] Add keyboard Reviung34 (#6847) 2019-10-05 16:10:27 -07:00
Jonathan Rascher
c23581d985 [Keymap] Initial personal keymap for Lily58 (#6908)
* Initial Lily58 keymap

* Still not sure if these thumb key placements are optimal or not. I
might want to move space (enter) one key to the left (right),
respectively.

* Also unsure how I feel about Esc on a mod tap key with Ctrl... might
move it back to its own key and relocate the = key.

* Missing bindings for Print Screen, Scroll Lock, Pause/Break.

* Make Lily58 layout support operation without numrow

* Move some Lily58 modifiers around

* Move nav keys to more consistent locations

* Rebinding shift on Raise is stupid

* Don't stomp Ctrl on the Lower layer

* Tweak bottom row a little bit
2019-10-05 12:40:08 -07:00
Matthew Lyon
03c132b331 [Keymap] finally committing my updates (#6904) 2019-10-05 12:22:52 -07:00
Nikita Titov
3e20697a33 removed deprecated option for Travis (#6896) 2019-10-05 12:04:46 -07:00
Colai
b91874454d [Keymap] dz60 Iso de 5x1u split right shift (#6889)
* add ISO-DE layout with 5x1u and split right shift

* cleaning up

* renamed readme.md and layout. added underglow

* change layout name in info.json

* rename readme.md

* renamed layout in comment. added rgb keys to visualisation

* change Layout name in dz60.h visualization
2019-10-05 11:56:11 -07:00
Leivince John Marte
e02383fa1f [Keymap] Added KBD6X Vimwarrior HHKB TOFU Personal Keymap (#6878)
* Added KBD6X Vimwarrior HHKB TOFU Personal Layout

* Added Readme.md for Vimwarrior HHKB Tofu Keymap

* Added DZ60 Vimwarrior WKL Tofu Keymap

* Update Rename keymaps to devinceble_hhkb_tofu and devinceble_wkl_tofu

* Update rules.mk Added BOOTLOADER config.
2019-10-05 11:17:36 -07:00
fauxpark
e8b65d0170 Cleanup rules.mk for 32U4 keyboards, A-F (#6804)
* Cleanup rules.mk for 32U4 keyboards, A-F

* Put back stuff in VIA keymaps
2019-10-05 11:09:35 -07:00
J.Flanagan
19b60c273a [Keyboard] Add OSA keyboard (#6849)
* initial commit

restart of osa development

* minor changes

Minor changes
mostly changing naming and comment out rgb modes

* initial commit

restart of osa development

* minor changes

Minor changes
mostly changing naming and comment out rgb modes

* more minor changes

comment out some functions
correct some spelling errors
change some of the descriptive text

* Minor Changes

Minor changers per PR requests

* Minor Changes

Minor changes per PR suggestions

* Major Changes

Per PR suggestion from noroadsleft:

- changed macro to LAYOUT_all in info.json, dualsplit/keymap.c and ocm/keymap.c, and osa.h

- added osa.h macros for other layouts per suggestion and used suggested naming

-  changed naming of layout macros to correspond to macros and naming in default/keymap.c, dualsplit/keymap.c, ocm/keymap.c, splitbs/keymap.c, and splitrs/keymap.c

- removed duplicate layers from all keymaps and edited per suggestions

- compiled each keymap to check for and correct any potential errors. all compiled with no errors

* Minor Change

- fixed imgur image link in readme.md to be correct format

* Minor Changes

changes to macro layouts in osa.h
changes to dualsplit/keymap.c - added arrows to layer 1

* Changes

- Made changes to info.json to match osa.h
- changes to osa.c enabling indicator LEDs
- changed "dualsplit" directory name to "all" to match keymap naming in osa.h, info.json, and keymap.c
- minor changes to all/keymap.c

* Update keyboards/sck/osa/rules.mk

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

* Update keyboards/sck/osa/readme.md

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Changes to info.json

- revert to info.json from version in b3b49c3 per requested changes
2019-10-05 10:44:55 -07:00
MechMerlin
dbce3f648b Budget96 Production PCB Fix (#6900)
* production version of the PCB has the top two right most keys swapped around. There are only 6 protos in existence and one of them is mine so we can just do this.

* update readme by adding backticks
2019-10-06 04:19:49 +11:00
Joel Challis
38aefaf78e ARM - Initial backlight support (#6487)
* Move AVR backlight to own file, add borrowed ARM implementation

* Tiny fix for backlight custom logic

* Remove duplicate board from rebase

* Fix f303 onekey example

* clang-format

* clang-format

* Remove backlight keymap debug

* Initial pass of ARM backlight docs

* Initial pass of ARM backlight docs - resolve todos

* fix rules validation logic

* Add f072 warning

* Add f072 warning

* tidy up breathing in backlight keymap

* tidy up breathing in backlight keymap

* add missing break to backlight keymap
2019-10-05 16:57:00 +01:00
MechMerlin
60b2a9a5ea [Keyboard] Preliminary Support for Duck Orion V3 (#6892)
* initial commit

* fixup init_rows and read_rows routine

* fixup matrix based on Marcus's tracing info

* add a temporary keymap

* add notes

* use a standard tkl ansi keymap

* turn on that last column

* backslash and backspace row left to fix

* reorg from backslash to pgdn

* got the matrix done but the backspace location at K4N is still suspect

* add reset info into readme

* add qmk configurator support

* add community layout support

* remove uneeded keymap readme

* add a new column just for the reset switch

* change copyright dates

* add cautionary message to readme as we don't know about the lighting condition yet

* Update keyboards/duck/orion/v3/v3.c

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

* Update keyboards/duck/orion/v3/v3.c

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

* Update keyboards/duck/orion/v3/v3.c

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

* change bootloader comments
2019-10-04 22:06:57 -07:00
hvp
537623c9db [Keymap] Added my version of the alpha28 layout. Usable. (#6862)
* Added my version of the alpha28 layout. Usable.

* Added enum. Test ok
2019-10-04 22:04:08 -07:00
MechMerlin
ec053c8283 [Keyboard] Percent Skog Lite (#6882)
* initial commit of skog_lite

* add layout macro from misterkeeb's tool

* add default keymap

* add pins used

* rgb support

* add tkl ansi community support

* update readmes

* add new layouts and configurator support
2019-10-04 22:03:10 -07:00
Louis Orleans
c5ffd182c8 [Keymap] update my keymap for Infinity Ergodox (#6864)
* 🎉 Building simple flasher

* 🎉 Flashing works

* 🎨 Cleaning up

* 🐛 Being more specific with board identity

* 🐛 Flashing correct keymap

* 🎉 Adding keymap

*  Updating keymap

* 🚨 RGB

*  Revert "🚨 RGB"

This reverts commit 9ceabfb267.

*  Improvements to flasher

*  Layout tweaks

* 💄 Messing around with LCD

* 💄 Enabling LCD backlight matching

* 🔧 Updating layout

* 🐛 Fixing console logging

* 🎨 Cleaning up indentation

* 🔧 Adding editorconfig

*  Adding game layer

* 💄 Changing numpad layout

* 🔥 redoing entire layout

It's now more similar to the Planck default layout

*  add workman and dvorak layouts

* 🐛 fix numpad

* 🐛 fix layer orders

* 🐛 fix layer toggling

* 🐛 fix tri-layer switching

* 🐛 fix LCD colors for adjustment layers

* 🔥 remove old flasher project

* 🔥 remove simple_visualizer

* 💄 update LCD colors

* 📝 fix layout comments

* 💄  swapping 2u buttons

* 🔥🔧 removing editorconfig

* 🚨 using 2 spaces

* 📝 add README

*  Revert "💄 Enabling LCD backlight matching"

This reverts commit 51577903df.

*  Revert "💄 Messing around with LCD"

This reverts commit fdd9acdae5.

* 🐛 fix thumb inconsistency in QWERTY

* 🐛 fix media keys

*  add F# shortcuts to vertical 1.5u buttons

*  hold enter for RShift

*  hold for numpad

* 🎨 remove unnecessary breaks

* 🎨 reoganizing layers

*  add Colmak layer

* 🚧🔧 add basic config

*  use more standard numpad layout

* 💄 change layer orders

*  add caps lock on adjust layer

* 🔥 disable space cadet

* 📝 update README

* 🔨 use userspace config

* 🎨 clean up a bit

* 🐛 undefine tapping toggle from base config

* 🔨 rename LED functions

* 💩 someone commited Windows line endings

*  left hand thumb is space

* ♻️ extract layers def to new file

* 🔥 remove unnecessary hooks

* 💄 set LCD text and color by layer

* 💄 update keymap

removing layer buttons that I don't really use

*  set backlight to full brightness on boot

* 🔥 remove unnecessary includes
2019-10-04 20:32:52 -07:00
Griffin J Rademacher
93bce83255 [Keymap] 🗺️ Adds massdrop/alt/favorable-mutation keymap (#6893)
Features:

* Tap space for space, hold for cmd
* Tap caps lock for esc, hold for ctrl
* Dedicated key for entering default mode of yabai window manager
* Who needs arrow keys, anyways???
* Method for clearing all stuck-down mods
2019-10-04 12:56:01 -07:00
Dimitri Krassovski
b0b433f3cf [Keyboard] Match dactyl-manufom 4x5 layout in doc to actual (#6867)
* Match doc layout to actual

Raise and Lower were swapped, and there is no "10" button :)

* Make mouse button 2 really 2, not a clone of MB1
2019-10-04 12:00:14 -07:00
vuhopkep
3e6f7bc6bf [Keyboard] Add Stella keyboard (#6848)
* Add Stella keyboard

Tenkeyless keyboard for VGS Community

* Update keymap.c

* update
2019-10-04 11:55:54 -07:00
Max Rumpf
f166a22c98 [Keyboard] Add image for Pulse 4k (#6869) 2019-10-04 11:22:30 -07:00
fauxpark
41b9be560d Wrap util.h functions in extern "C" (#6762) 2019-10-04 09:24:47 +10:00
Richard Baptist
4f01c8623f Clean up default crkbd keymap (#6887)
* Put spacing into CRKBD keymap

* Change KC_NO to XXXXXXX

This makes it easier to see at a glance that the key does nothing
2019-10-03 12:34:00 -07:00
Ayman Bagabas
9067dc817a Fix qmk doctor 'bytes-like object is required' on linux
This fixes the following issue related to encoding on linux systems. Add
`universal_newlines=True` to subprocess.

<class 'TypeError'>
☒ a bytes-like object is required, not 'str'
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/milc.py", line 564, in __call__
    return self.__call__()
  File "/usr/local/lib/python3.7/site-packages/milc.py", line 569, in __call__
    return self._entrypoint(self)
  File "$HOME/qmk_firmware/lib/python/qmk/cli/doctor.py", line 56, in doctor
    for line in mm_check.stdout.split('\n'):
TypeError: a bytes-like object is required, not 'str'
2019-10-03 10:27:20 -07:00
Silvio Gulizia
afb93b7f48 Fix quantum keymapextra italian (#6779)
* remove IT_PIPE duplicate and add IT_GRAD

IT_PIPE was declared 2 times, ones as ° and once as |. I changed the first declaration and called it IT_GRAD. I even fixed the definition because the ° in Italian is obtained with LSFT(IT_AACC)

* rename IT_GRAD to IT_DEGR

* add    missing plus_and_minus

* fix missing IT_ACUT definition

* change KC_LALT(KC_LSFT to LALT(LSFT

* Fix alignment

* remove leftover

* fix issue generated with chars while pushing

* fix typo

* fix LCBR and RCBR

* fix euro symbol

* fix RBRC

* change IT_LESS form KC_NUBS to KC_GRAVE

* add IT_TILDE and change IT_GRAV to IT_GRAVE

* add missing legends for accented vowels

* format for readability

* revert to commit befor I edit it

* initial commit

* edited to be easier to compare to _ansi.h

* remove keymap_italian_osx_iso.h and rename with edits keymap_italian_osx_ansi.h to keymap_italian_osx.h

I found out there were no difference at all

* fix missing #endif

* rename quantum/keymap_extras/keymap_italian_osx.h to quantum/keymap_extras/keymap_italian_ansi.h

Now this file is a clone of the keymap_italian.h that appears to be working only for ISO keyboards. It also contains a few improvements for IT_PIPE (defined two times) and IT_ACUT (missing definition). Additionally it redefines LCBR and RCBR to LSFT(IT_LBRC) and LSFT(IT_RBRC)

* rename file

* redefines IT_BKSL and IT_PIPE based on KC_BKSL

* add new osx_iso and osx_ansi version for italian.h and align BKSL to BSLS, fix double definition of PIPE
2019-10-03 10:27:01 +10:00
Konstantin Đorđević
99f5d6c56d Update personal userspace and keymaps (#6876)
* Align bottom row in KBD6X keymap to match LAYOUT macro

* Remove TAP_HOLD_CAPS_DELAY override in userspace

* Change default USB polling rate to 1000 Hz

* Move media controls to nav cluster on Wasdat

* Add dz60:konstantin_b keymap
2019-10-03 09:46:27 +10:00
Erik Doffagne
de386e5972 Fixed typos in documentation (#6871)
* Fixed typos in documentation

* Update docs/arm_debugging.md

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

* Update docs/arm_debugging.md

Co-Authored-By: fauxpark <fauxpark@gmail.com>
2019-10-02 16:41:32 -04:00
Richard Baptist
482ec79e59 [Keymap] Add personal CRKBD keymap (#6843)
* Add personal keymap

* Additional readme note

* Fix typo's in readme

* Additional layer key info in readme

* Update keyboards/crkbd/keymaps/rpbaptist/config.h

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* Update keyboards/crkbd/keymaps/rpbaptist/rules.mk

Co-Authored-By: Drashna Jaelre <drashna@live.com>

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

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

* Remove redundant config

* Remove disabling of NO_ACTION_MACRO and NO_ACTION_FUNCTION

* Remove layer keycode macros

* Use layer_state_t instead of uint32_t

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* Use get_highest_layer instead of biton32

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* OLED_ROTATION_90 instead of 180

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* Use get_highest_layer instead of biton32

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* Use get_highest_layer instead of biton32

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* Revert "OLED_ROTATION_90 instead of 180"

This reverts commit f14a4353ab.

It messed up the logo on slave

* Use IS_LED_ON function to check LED status

Co-Authored-By: fauxpark <fauxpark@gmail.com>
2019-10-02 09:39:43 -07:00
Anton Lindström
fa8359fa1a [Keymap] Add antonlindstrom iris keymap (#6853)
This adds a keymap for the Iris keymap for antonlindstrom. The
keymap is based on the swedish keymap and thus contains the åäö
characters.
2019-10-02 22:11:39 +10:00
worthlessowl
0c5b3826d1 [Keyboard] Add Owlet60 Keyboard to qmk_firmware/keyboards/handwired (#6803)
* first commit, skeleton code, not sure if working

* Owlet 60 working firmware, json not sure

* use json from kle to qmk converter

* deleted temporary text from owlet60.h

* owlet60 working oled and led firmware

* moved owlet60 to handwired

* updated readme.md

* Revert "owlet60 working oled and led firmware"

This reverts commit 27f9465aab.

* Revert "moved owlet60 to handwired"

This reverts commit 9b8e8344fc.

* revert changes, moved owlet60 to handwired, updated copyright blurb

* fixed readme.md

* removed duplicate items

* resolve merge artifact

* Update keyboards/handwired/owlet60/readme.md

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

* check out merge artifacts with qmk master

* Update keyboards/handwired/owlet60/matrix.c

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

* Update keyboards/handwired/owlet60/matrix.c

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

* Update keyboards/handwired/owlet60/matrix.c

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

* Update keyboards/handwired/owlet60/matrix.c

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

* removed redundant rule on oled_testing/rules.mk, refactored mux switching code on matrix.c
2019-10-01 21:26:39 -07:00
Ethan Durrant
da5b4ec733 editing fn layer and minimizing the Caps layer (#6850) 2019-10-01 12:50:54 -07:00
Jack Humbert
68072e931a Expose zh-cn docs, delete bad zh docs, add docs for adding translations (#6855)
* expose zh-cn docs, delete bad zh docs, add docs for adding translations

* Update docs/translating.md

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update docs/translating.md

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* update for python 3
2019-10-01 13:51:23 -04:00
Amber Holly
c7b28bffc1 [Keyboard] Add Wraith keyboard (#6810)
* start wraith firmware

* completed initial setup

* added amber keymap to wraith

* fixed LEDs, wrote readme files

* reverted bootloader type after troubleshooting

* decapitalised files and directory as per qmk standards

* Update Wraith keyboard folder

- Add timer keymap with documentation
- Remove boilerplate in rules.mk, ready for pull request
- Update info.json with ISO and ANSI layouts, ready for QMK Configurator

* Add Wraith image to readme.md

* Fix Wraith keyboard's QMK Configurator support

- Update info.json
- Add layout macros in wraith.h
- Update keymap.c files to use LAYOUT_all
- Fix readme formatting
2019-09-30 18:34:12 -07:00
fauxpark
c47fa31a00 Port drivers.txt changes from the Toolbox (#6786) 2019-09-30 17:45:44 -07:00
Jan Christoph Ebersbach
edf8552970 [Keyboard] Signum 3 0 enable kinetic speed (#6740)
* Enable kinetic speed

* Update keymap
2019-09-30 12:28:51 -07:00
Simon R
ab3fba2cdf [Keyboard][Fix] budget96 RGB light-switches (#6840)
Adding code to make the RGB switching work. Taken from the singa (singa.c).

Signed-off-by: Simon R <me@dieideeistgut.de>
2019-09-30 10:59:34 -07:00
kakunpc
c6c7aec85d [Keymap] update hecomi/kakunpc keymap (#6839)
* update hecomi alpha/kakunpc keymap

* remove unused define.
2019-09-30 10:57:01 -07:00
Jordan Egstad
8c1b8cf3a3 [Keymap] Adds Egstad Preonic Profile (#6837)
* setup local build config, created npm build script to speed things up

* removed some profiles and gutted readme

* began configuring default and lower layout

* lower: fixed right arrow and added music toggle

* began configuring default and lower layout

* changed startup song

* updated comment typos

* I did that thing where i basically refactored everything :)

* Converted 2U key to 1U's

* Reorganized and tidied up

* Reorganized and tidied up

* space now changes layers

* updated numbpad

* updated readme

* removed unwanted files

* addressed change requests
2019-09-30 10:55:02 -07:00
Jonas Avellana
cffe671a61 [Keymap] Updating crkbd RGB keymap implementation & ninjonas userspace updates (#6834)
* [keymap] Updating crkbd RGB implementation & ninjonas userspace updates

* [chore] adding process_record_oled method to process_records.h
2019-09-30 10:50:27 -07:00
Homerow Co
f418efcaf5 [Keymap] correct keebs keymap for wonderland (#6838) 2019-09-29 18:49:59 -07:00
fougner
714cf021a4 [Keyboard] support tkl_iso community layout (#6778)
* support tkl_iso community layout

* fix comments from review

* fix review comments

* LAYOUT is an alias for LAYOUT_all
* add keymap default_iso
* revert changes to default keymap
2019-09-29 15:33:48 -07:00
Homerow Co
5d41db6308 correct default keymap for wonderland (#6835)
tested
2019-09-28 19:10:02 -07:00
kakunpc
20a16d29fe [Keyboard] update angel17 (#6831) 2019-09-28 11:59:33 -07:00
Joel Challis
17794e0b25 ARM split - Add support for dfu-util EE_HANDS flashing (#6543)
* Initial stab at some fake dfu-util-split-left behaviour

* Apply suggestions from code review

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

* Clang format fixes

* Fake eeprom init for both left and right hand
2019-09-27 21:33:55 +01:00
Flutterlice
92cb0b6f2f [Keymap] Personal xd75 keymap "Odyssey" (#6830) 2019-09-27 06:58:05 -07:00
noroadsleft
9496d11b06 [Keyboard] cKeys theDora: Configurator fix (#6828)
Make the layout actually match the orientation.
2019-09-27 06:56:28 -07:00
Yan-Fa Li
0f7be8b458 [Keymap] Use 75_ansi and community layout for xd84 (#6821)
* Use 75_ansi and community layout for xd84

 - work around flash issues by disabling most of the animations

* Remove rules.mk
2019-09-26 10:12:49 -07:00
Zachary J. Slater
178ceba735 Minor link fix in Clueboard README (#6823)
Small change to fix the README link to go to the actual 66_hotswap instead of just the 66%.
2019-09-26 07:37:26 -07:00
Yan-Fa Li
d143ddc062 [Keymap] Port personal keymap to 60_tsangan_hhkb (#6820)
* Port personal keymap to 60_tsangan_hhkb

 - add 60_tsangan_hhkb layout to plain60
 - Fix bug in split rs in plain60
 - use community and user based layout for 60_tsangan_hhkb
   - set up audio for plain60 only

* Add LAYOUT_60_ansi_split_bs_rshift
2019-09-25 21:35:54 -07:00
noroadsleft
b3d41d9d6d [Keyboard] Reviung39: Configurator layout support (#6819) 2019-09-25 21:34:37 -07:00
Mikkel Jeppesen
e6d8a6111b [Keyboard] Added QMK-DFU config to Vitamins Included rev2 (#6818) 2019-09-25 21:34:01 -07:00
Jeong Arm
297a7fe0d1 [Keymap] Add preonic/kjwon15 layout (#6812)
* Add my custom keymap

* Remove del key on left, Add pscr

* Move Audio MOD key to pass ctrl

* Change startup song

* Enable clicky sound

* Swap alt and gui

* Fix semitones

* Add mouse layer

* Change startup song

Additionally, fixup 5 halftones

* Add ctrl key to ctrl+click

* Move media keys to restore raise number keys

* Move mouse key layer switch

* Swap media keys as normal

* Fix music map

* Move mouse speed limit to correct position

* Move prtscr

* Align keycodes

* Add ctrl/esc, swap smart space keys

* Change colemak, dvorak into custom layout

* Fix pure mode (left space)

* Fix mouse mode interrupt

* Add Middle mouse click

* Add Lefthand mouse scroll

* Temporarily disable mouse speed

* Rename custom layout to kjwon15

* Change readme

* Apply suggestions from code review

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

* Apply suggestions from code review

* Apply suggestions from code review

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

* Update from default keymap's function
2019-09-25 21:32:14 -07:00
Jonas Avellana
ff854565ce [Keymap] ninjonas keymap for crkbd & ninjonas userspace updates (#6797)
* [keymap(crkbd)] introducing crkbd keymap on ninjonas profile

* [keymap(crkbd)] introducing crkbd keymap on ninjonas profile

* [refactor(crkbd)] reducing file size by selecting RGB animations

* [refactor(crkbd)] added shiftit key

* [refactor(crkbd)] added shiftit key

* [chore(crkbd)] adding SLEEP_LED_ENABLE on rules.mk

* [refactor(crkbd)] added keylog & removed static rainbow RGB

* [feat(crkbd)] introduced em-dash '—' keymap

* [feat(crkbd)] added screenshot functionality

* [refactor(lily58,pinky3)] moving media keys

* [refactor(lily58)] Added emdash key

* [chore] removing NUMBERS & FUNCTIONS layers as they're useless

* [chore] removing NUMBERS & FUNCTIONS layers as they're useless

* [chore(crkbd,lily48)] Updating README.md

* [feat] added K_LAPP & K_RAPP to mimic command + tab

* [feat] added K_LAPP & K_RAPP to mimic command + tab

* [fix(#6797)] resolving changes requested by @drashna

* [fix(#6797)] first cut on using QMK OLED Driver

* [fix(#6797)] cleaning up rules.mk

* [fix(#6797)] making scrolling logo work

* [fix(#6797)] Using OLED Driver for Lily58

* [fix(#6797)] Moved OLED driver implementation to ninjonas userspace

* [fix(#6797)] Bringing back crkbd & lily58 logos

* [fix(#6797)] Turning off OLED based off @drashna's workaround in #5982

* [fix(#6797)] whoops! forgot to checkin crkbd/config.h

* [fix(#6797)] fixing issue with OLED randomly turning on

* [fix(#6797)] using default glcdfont.c for lily58 & crkbd

* [fix(#6797)] Using LINK_TIME_OPTIMIZATION_ENABLE rather than EXTRAFLAGS as per code review

* [fix(#6797)] updating M_MALL macro as per code review by @fauxpark
2019-09-25 21:28:06 -07:00
Cody Bender
2a948e7771 [Keyboard] Add Crossed Keys/Keyhive Nightmare (#6796)
* initial draft of nightmare files

* fixed pins

* fixed MT keycodes

* updated READMEs

* updated title in main readme

* updated for split space

* added OPT_TAB

* fixed layer 1 keymap

* Add DEL to keymap

* Update Bootmagic pins

* Update Keymap

* Fix missing )

* Update Up arrow on keymap

* Add hosted image for Nightmare render

* Update info.json for Nightmare layout

* Resolve suggestions from drashna

* Add split space layout in nightmare.h and info.json
2019-09-25 14:20:20 -07:00
senseored
983c93fe81 [Keymap] Added two different Swedish layouts for the Niu Mini 40% and Preonic 50%. (#6793)
* added preonic keymap senseored

* added niu_mini/tobias

* Changed readme's to explain that these are swedish layouts

* Apply suggestions from code review

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* Update keyboards/niu_mini/keymaps/tobias/keymap.c

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* Made changes according to drashna's suggestions

* Changed to tap_code(KC_NLCK)

* Added #define RGBLIGHT_SLEEP

* Added #define RGBLIGHT_SLEEP

* Removed include config.h
2019-09-25 13:20:33 -07:00
noroadsleft
dccafb64e6 [Keyboard] Subatomic refactor (#3194)
* Refactor: matrix

* New readme file

* Configurator support

* change info.json to debug linting

* use an enum to manage the layers

* readme cleanup

file header, docs links

* use #pragma once in keyboard header file

* use new-style OLKB layout macro naming scheme

* fix layout macro references in keymap.c

* correct Keyboard Maintainer
2019-09-25 13:17:29 -07:00
Amber Holly
475f832b0f [Keyboard] Add Efreet keyboard (#6811)
* start wraith firmware

* completed initial setup

* added amber keymap to wraith

* fixed LEDs, wrote readme files

* reverted bootloader type after troubleshooting

* decapitalised files and directory as per qmk standards

* Update Wraith keyboard folder

- Add timer keymap with documentation
- Remove boilerplate in rules.mk, ready for pull request
- Update info.json with ISO and ANSI layouts, ready for QMK Configurator

* Add Efreet keyboard

* Remove unnecessary keyboard folders

* Enable community layout support for Efreet

- Rename LAYOUT macro to LAYOUT_ortho_4x12
- Add layout macro named LAYOUT_planck_mit
- Remove unnecessary magic key command, as we are using the default
- Fix readme.md formatting for GitHub

* Fix community layout support for Efreet

- Fix 2u spacebar keycodes in LAYOUT_planck_mit to denote absence of switch
- Turn on Community Layouts in rules.mk

* Update default keymap.c to use community layout
2019-09-25 13:06:57 -07:00
noroadsleft
a76a79b827 [Keyboard] Rabbit68: Configurator layout support (#6809) 2019-09-25 13:00:27 -07:00
Manassarn "Noom" Manoonchai
f8e4f7ea80 [Keymap] Add Z-layer to narze layouts (#6806)
* Revert raise/backspace mod tap to just backspace

* Add Dev layer

* Use Dev layer on holding z key

* Add Dev layer for Ergodox
2019-09-25 12:57:49 -07:00
MechMerlin
0850a8cb63 65 ansi blocker everywhere (everywhere I can find) (#6805)
* e6.5 actually already had a 65_ansi_blocker LAYOUT macro, so just had to enable in rules.

* Add the 65_ansi_blocker LAYOUT macro and enable in rules.mk

* rename LAYOUT macro in .h and in the keymap.c as it was only a default keymap. Also enable in rules.mk

* rename but also had to define the existing LAYOUT macro as the new one to prevent breakage of existing keymaps

* add 65_ansi_blocker support for vinta

* forgot to update the info.json on these

* add new default layout 65_ansi_blocker support to alt

* add 65_ansi_blocker support

* undo changes
2019-09-25 12:55:27 -07:00
Yaotian Feng
c61d7d7cb0 [Keyboard] Added support for ErgoDox with STM32 Microcontroller (#5398)
* Began Work On STM32 Ergodox
 Changes to be committed:
	new file:   keyboards/ergodox_stm32/config.h
	new file:   keyboards/ergodox_stm32/rules.mk

* test

* Now it compile. Not linking thou

* Screw this Linker. It links now!

* Blinkly Keyboard

* bootloader test code

* Working on matrix / i2c stuff

* Progress (LED Blink)

* Progress on MCP_23017 Status Flag

* [WIP]

* update

* Works! Remeber to change back the bootloader address when the new bootloadrer is ready.

* Time to go debug the i2c

* Finally, it now works with PCB Rev 1.0.2

* updated for rev.2 pcb

* minor compilation fix

* Why when debugger is enabled then everything works.

* Remeber to call init functions.

* Update arm i2c driver to support STM32F103 series device.

* fix include once header. Replaced with #pragma once.

* complication test
2019-09-25 11:52:17 -07:00
ishtob
eac4ce972d [Keymap] update personal keymap (#6817) 2019-09-25 10:05:48 -07:00
Daniel Shields
00abe5d8ed [Keymap] Various enhancements for dshields user space and keymaps. (#6816)
- Add oneshot mod/layer unlocking
- Fix Planck rev 3 backlight breathing
- Fix Planck rev 6 build with arm gcc 9.2.0
- General code clean up
2019-09-25 09:21:07 -07:00
MechMerlin
0f9e2659c9 [Keyboard] Add additional LAYOUT macros to Noxary 260 (#6815)
* add default LAYOUT_60_ansi

* add LAYOUT_60_hhkb support

* add tsangan_hhkb support

* add ISO support and rename LAYOUT to LAYOUT_all

* formatting

* add community layouts support

* remove unneeded code

* missed a LAYOUT rename

* add link time optimization to reduce firmware size for some people's keymaps
2019-09-25 09:18:09 -07:00
Brad
acec007dfa [Keymap] add keymap broswen for kbd75 (#6814) 2019-09-25 02:01:58 -07:00
Sid Carter
6c37798aac [Keymap] New keymap for the DZ65RGB (#6792)
* new keymap for my chocolate tofu65 with dz65rgb

* consistent with a tada68 layout

* remove extra layer, add swap keycodes and mouse keycodes

* fix the tabs and spaces

* fix the left shift
2019-09-25 01:54:32 -07:00
noroadsleft
df9388fb8a Bathroom Epiphanies Pegasus Hoof: add LAYOUT_tkl_jis data to QMK Configurator (#6802)
* Bathroom Epiphanies Pegasus Hoof: add LAYOUT_tkl_jis data

* use normal English labels
2019-09-24 11:36:23 -07:00
MechMerlin
460da06ce4 [Keyboard] KBD67 Mk.II RGB info.json missing a column (#6807)
* looks like configurator layout was missing a column

* add a key count
2019-09-24 11:26:17 -07:00
MechMerlin
494fc51812 Merlin's Community Layout Updates (#6798)
* readme updates for 60_ansi and split variations

* add new community layout for mechmerlin for the new default layout 65_ansi_blocker

* change path now that kbd67 has been updated

* fix up spacing
2019-09-24 11:01:40 -07:00
Joel Challis
ad8dbd5ca5 ARM split - Add bootmagic/magic keycodes for setting handedness (#6545)
* Add docs on bootmagic/magic keycodes for setting handedness

* Clang format fixes

* Maintain backwards compatibility

* Maintain backwards compatibility
2019-09-24 15:24:12 +01:00
fauxpark
237147ca23 Cleanup rules.mk for 32U4 keyboards, 0-9 (#6789) 2019-09-24 00:59:17 -07:00
MechMerlin
37b6a2abbd Refactor the KBD67 Mk.II RGB (#6799)
* move kbd67mkiirgb into kbd67 directory as mkiirgb

* rename files

* rename LAYOUT to LAYOUT_65_ansi_blocker

* add support for default layout

* update readme for new build target

* update parent readme with the fourth variant
2019-09-23 23:34:59 -07:00
QMK Bot
efb7f3cc3a format code according to conventions [skip ci] 2019-09-24 01:18:18 +00:00
mikethetiger
61b5d0e0c5 [Keymap] mikethetiger's milk keymap (#6611)
* Added my Preonic keymap

* Update keyboards/preonic/keymaps/mikethetiger/keymap.c

Co-Authored-By: mikethetiger <30720424+mikethetiger@users.noreply.github.com>

* Update keyboards/preonic/keymaps/mikethetiger/keymap.c

Co-Authored-By: mikethetiger <30720424+mikethetiger@users.noreply.github.com>

* Added my Preonic keymap

* Added my Preonic keymap

* mikethetigers lets slpit eh keymap

* mikethetiger's milk keymap

* Update rules.mk

* Update keyboards/thevankeyboards/minivan/keymaps/mikethetiger/keymap.c

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

* Update rules.mk

Better?
2019-09-23 18:14:55 -07:00
MechMerlin
8eb0aefb60 [Keyboard] 65_ansi_blocker support for Doro67 (#6791)
* rename LAYOUT to LAYOUT_65_blocker_ansi

* rename LAYOUT macro

* enable LAYOUT_65_blocker_ansi community layout support and remove uneeded lines of code

* rename LAYOUT to LAYOUT_65_blocker_ansi

* rename LAYOUT macro

* enable LAYOUT_65_blocker_ansi community layout support

* enable LAYOUT_65_blocker_ansi support

* fix rename mess up

* add QMK Configurator support with the new rename

* rename blocker_ansi to ansi_blocker as it rolls off the tongue easier
2019-09-23 15:56:24 -07:00
Callum Hart
ced8c554e6 [Keyboard] Fix pinout on the copenhagen clickpad (#6788) 2019-09-23 15:49:55 -07:00
MechMerlin
e41feddf57 New Default Layout: 65_blocker_ansi (#6782)
* initial commit

* rename 65_ansi to 65_blocker_ansi

* remove one key to account for blocker
2019-09-22 13:50:18 -07:00
skullydazed
d569f08771 Configuration system for CLI (#6708)
* Rework how bin/qmk handles subcommands

* qmk config wip

* Code to show all configs

* Fully working `qmk config` command

* Mark some CLI arguments so they don't pollute the config file

* Fleshed out config support, nicer subcommand support

* sync with installable cli

* pyformat

* Add a test for subcommand_modules

* Documentation for the `qmk config` command

* split config_token on space so qmk config is more predictable

* Rework how subcommands are imported

* Document `arg_only`

* Document deleting from CLI

* Document how multiple operations work

* Add cli config to the doc index

* Add tests for the cli commands

* Make running the tests more reliable

* Be more selective about building all default keymaps

* Update new-keymap to fit the new subcommand style

* Add documentation about writing CLI scripts

* Document new-keyboard

* Update docs/cli_configuration.md

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update docs/cli_development.md

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update docs/cli_development.md

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update docs/cli_development.md

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Address yan's comments.

* Apply suggestions from code review

suggestions from @noahfrederick

Co-Authored-By: Noah Frederick <code@noahfrederick.com>

* Apply suggestions from code review

Co-Authored-By: Noah Frederick <code@noahfrederick.com>

* Remove pip3 from the test runner
2019-09-22 13:25:33 -07:00
XScorpion2
2f49cae9bc Fixing wrapping math logic for timer_expired functions (#6746) 2019-09-23 00:52:33 +10:00
Burak Can
29d7f9b163 Correct casing for DS_Store in .gitignore (#6787) 2019-09-22 21:32:52 +10:00
Francis St-Amour
e05b32d894 add python3 to shell.nix (#6774) 2019-09-21 11:59:18 -07:00
skullydazed
0e96068d23 Update the breaking changes process so we always have a future branch (#6785) 2019-09-21 11:58:06 -07:00
noroadsleft
42bf60751e [Keyboard] fix OLKB layout macro aliases (#6761) 2019-09-21 11:32:08 -07:00
MechMerlin
fd19795879 [Keyboard] Move more percent boards into the percent directory (#6781)
* move canoe into percent directory

* update readme for new make path

* move skog into percent directory

* update readme for new path and new instructions

* update readme

* fix error in naming
2019-09-21 11:27:53 -07:00
Drashna Jaelre
f069e9fc09 Generalize Tap Dance Layer functions (#6629)
* made tapdance dual_role general

* updated original dual_role functionality

* added toggling layer example

* Fix dual role and add alias

* Update docs about new layer tap dances

* Fix up based on feedback
2019-09-21 11:22:27 -07:00
Daniel Shields
63a0b1241d [Keymap] Move common code and configuration to userspace for dshields keymaps. (#6537) 2019-09-21 11:04:27 -07:00
Benjamin
75c9747787 [Keymap] Bonta keymap for massdrop/ALT (#6391)
* Added new bonta keymap.

* Added a note.

* Made map more mac like.
2019-09-21 10:13:44 -07:00
fauxpark
2df3799e3d Add list-keymaps make target (#5563) 2019-09-21 00:00:58 -07:00
jlquinn
ea96c4b787 [Keyboard] Update Stapelberg readme.md (#5557)
Previously suggested parts are hard to find or non-existent.  Update with available part numbers.
2019-09-20 23:59:16 -07:00
Sorixelle
7f65323e10 Add support for Void Linux systems to the qmk_install.sh script (#5526)
* Add support for Void Linux systems to the qmk_install.sh script

* Fix typos + grammatical edits in comments

* Sort distributions by alphabetical order in linux_install.sh

* Revert previous commit and sort Void packages in alphabetical order

* Fix permissions on `util/linux_install.sh`
2019-09-20 23:55:51 -07:00
fauxpark
3642a82d37 Add support for 328P hardware backlight on B1/B2 (#6776) 2019-09-20 22:11:15 -07:00
coseyfannitutti
c7d0262be7 [Keyboard] Add Discipad, Update Zadig doc for USBaspLoader (#6771)
* add discipad

* Update driver_installation_zadig.md

* Update keyboards/coseyfannitutti/discipad/info.json

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/coseyfannitutti/discipad/readme.md

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update rules.mk

* Update keyboards/coseyfannitutti/discipad/rules.mk

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update docs/driver_installation_zadig.md

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

* Update keyboards/coseyfannitutti/discipad/discipad.c

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

* Update docs/driver_installation_zadig.md

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

* Update docs/driver_installation_zadig.md

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

* Update rules.mk

* Update discipad.c

* Update driver_installation_zadig.md

* Update config.h
2019-09-20 22:07:21 -07:00
fauxpark
de4a47f1cc Cleanup rules.mk for 32A and 328P keyboards (#6767) 2019-09-20 22:06:32 -07:00
Konstantin Đorđević
beb4a12c9d Add reset instructions for boards that use Command to the Zadig driver installation guide (#6770)
* Add reset instructions for boards that use Command to the Zadig driver installation guide

* -> → →

* Apply suggestions from code review

Replace shorthand keycode names with full names

Co-Authored-By: fauxpark <fauxpark@gmail.com>
2019-09-19 17:29:23 -07:00
Brian Lou
59000f491f [Keymap] Added my personal keymaps for dz60 and TMO50. (#6772)
* Added ottodokto keymaps for dz60 and tmo50.

* moved placement of keymaps to proper directory

* fixed accidental deletion of semicolon for tmo50 map

* fix to use short form codes

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>
2019-09-19 16:38:42 -07:00
fauxpark
44c5be0a3e Cleanup rules.mk for 16U2 and 32U2 keyboards (#6768)
* Cleanup rules.mk for 16U2 and 32U2 keyboards

* Add back Tap Dance build option
2019-09-19 09:55:14 -07:00
fauxpark
f34299efd7 Cleanup rules.mk for USB64 and USB128 keyboards (#6769) 2019-09-19 09:55:03 -07:00
MechMerlin
911b8915cc DRV2605L Continuous Haptic Feedback Support (#6461)
* provide means to turn on RTP mode and set the amplitude

* new keycode HPT_CONT to turn RTP off/on

* introduce new keycodes HPT_CONI, and HPT_COND for Haptic Continuous Increase and Decrease

* support for continuous mode amplitude increase and decrease

* code cleanup

* update docs to reference new keycodes and functionality

* don't touch the keymaps

* add function prototypes

* add proper guards

* cleanup guards

* remove extra reserved
2019-09-19 09:42:33 -07:00
MechMerlin
7a5a2591eb [Keyboard] 1up60hte cleanup + bugfix (#6763)
* move caps lock led to keyboard level so even QMK Configurator users have access to it

* set bootloader correctly to atmel-dfu

* clean up extra carriage return
2019-09-18 18:42:53 -07:00
Alex Mayer
7142b60405 [Keymap] Update Planck Layer Diagram To Match Layer (#6712) 2019-09-18 18:38:56 -07:00
XScorpion2
095b88bca5 Smoother Linear Light Table (#6764) 2019-09-18 18:32:38 -07:00
XScorpion2
46c49ae4e6 Updated split encoders so indexes are based on left hand encoders first (#6382)
* Updated encoder.c so that split encoders are indexed based on left hand encoders first.
This ensures when swapping master sides that code logic based on encoder index doesn't change.

PR Review fixes

* Removed extra define
2019-09-18 17:56:11 -07:00
Andrew Kannan
e5aa28455e [Keyboard] 201909 s75 custom encoder (#6745)
* Handle custom encoder configuration

* Whitespace changes

* Undo broken stuff

* more

* Remove printfs

* fix the dumb bug
2019-09-18 17:41:46 -07:00
Adrien Tétar
6f5f943bb9 [Keyboard] Introduce AT-AT 660M (#6729)
* Introduce AT-AT 660M

* PR feedback

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

* Add dfu-util args

* Add URL
2019-09-18 11:14:49 -07:00
vuhopkep
7d8dea30a4 [Keyboard] add personal fullsize pcb hnah108 (#6759)
* add personal fullsize pcb hnah108

* Update keymap.c
2019-09-17 23:36:05 -07:00
Drashna Jaelre
37c2996137 [Keyboard] Fix compile issues for OLKB Default keymaps (#6751) 2019-09-18 09:50:04 +10:00
fauxpark
54503168c9 Update bootloader.mk (#6698) 2019-09-18 09:48:58 +10:00
fougner
23186d32a3 [Keyboard] xd87: add capslock led support (#6758) 2019-09-17 10:37:01 -07:00
noroadsleft
12cdcd5e10 [Keyboard] Freyr: Configurator bugfixes (#6756)
- rebuild LAYOUT_all tree (key count mismatch)
- correct keyboard dimensions and key positioning
- complete key object labels
- debug linting (one key object per line; changes white space only)
2019-09-17 10:36:18 -07:00
noroadsleft
86d59f1034 [Keyboard] KBD75 refactor (#6755)
* convert codebase to #pragma once

* fix file includes

- quantum.h is included at keyboard level, redundant at revision level
- keyboard-level path is accessible at revision level, remove relative pathing

* duplicate common layout macros from rev1 to rev2

Add the layout macros supported by both rev1 and rev2 to rev2.h directly, which exposes these layouts to QMK Configurator.

* enable community layout support (75_ansi, 75_iso)

* add LAYOUT_75_iso layout data

It needs its own tree because its keys are in a different order from LAYOUT_iso_1u even though the physical layout is the same.

* minimize rules.mk files (use QMK defaults)

* use atmel-dfu bootloader rule

* fix typo on rev1 info.json
2019-09-17 10:34:52 -07:00
XScorpion2
c427023b31 [Keymap][Xulkal] User code update (#6752)
* Updating rgb menu behavior

* Fixing toggle keycode to work how I want it

* Enabling auto scroll timeout
2019-09-17 10:28:02 -07:00
Jason Thigpen
2493eecc7b [Keymap] Fix e65 7u WK layout and add crd's personal keymap (#6750)
* Add e65 keymap for crd

* Fix e65 7u wk layout
2019-09-17 10:27:07 -07:00
Drew Smathers
bb3569dce3 [Keymap] idobo/drewdobo keymap v1 (#6744) 2019-09-17 10:24:15 -07:00
vuhopkep
b364a40e60 [Keyboard] Correct info.json data for vn66 (#6741)
* Correct info.json data for vn66

* update .json file data

* Update info.json
2019-09-17 10:23:13 -07:00
Ethan Durrant
d137fdea78 [Keyboard] Adding YMDK "Bface" keyboard (#6731)
* making a new board setup for ymdk bface clone

* removing extra keymaps that copied over

* documentation and edits for new ymdk_bface board

* cleaning up config and keymaps

* removed extra keymap and working on READMEs

* readme edits

* shorter aliexpress link in ymdk_bface readme

* added images to readmes and edited the keymaps

* more flashing directions

* Mac directions formatting

* editing and creating the all layout

* cleanign up ymdk_bface keymaps

* fixed typos in layout

* removed tabs

* cleaned up the LED and Backlight configuration.

* adding more to info.josn and cleaning up readme

* fixing JSON typos

* made a ymdk folder and moved the bface into it.

* fixing file names for the new folder structure
2019-09-17 10:19:16 -07:00
Noan Mousy
ab48ffd5c5 [Keyboard] Adding AEK64 keyboard (#6725)
* Adding AEK64 keyboard

* Deleting useless layout definition

* Resolving many code review issues

* Documenting my 4sStylZ keymap

* Adding default keymap

* Apply suggestions from code review

Code review corrections

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>
Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/handwired/aek64/readme.md

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Correcting the NKRO implementation
2019-09-17 10:17:03 -07:00
IanGC
32b2486c6b [Keymap] Plaid Keymap for Programmers (#6706)
* map programmer qwerty

* clarify and fix typo

* finishing touches

* use qmk
s templates for readme

* update copyright notice

* remove unnecessary code

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* remove unnecessary code

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* Update keyboards/plaid/keymaps/thehalfdeafchef/keymap.c

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* fix documentation

* reformat code

* Apply suggestions from code review

Co-Authored-By: Drashna Jaelre <drashna@live.com>
2019-09-17 10:15:07 -07:00
Wilba
55432d0d91 [Keyboard] Fixed EEPROM start address for firmware using VIA (#6757) 2019-09-17 09:59:34 -07:00
Andrew Kannan
59af2cbe64 Add Chimera65 Keyboard (#6670)
* Add chimera board

* info json start

* Update keyboards/cannonkeys/chimera65/config.h

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* Apply suggestions from code review

Co-Authored-By: Drashna Jaelre <drashna@live.com>
Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/cannonkeys/chimera65/config.h

Co-Authored-By: Drashna Jaelre <drashna@live.com>
2019-09-16 19:37:51 -07:00
noroadsleft
7c1bb9decf Percent Studio Booster: Configurator fix (#6743) 2019-09-16 08:20:44 -07:00
Xerpocalypse
140c08e521 [Keymap] Added Xerpocalypse's layout (#6732)
* Added Xerpocalypse's layout

+ Number row and symbols are switched compared to default TMO50 layout
+ Right-hand spacebar acts as backspace and a hold-layer for layer 2.

* Update keyboards/tmo50/keymaps/xerpocalypse/keymap.c

Removed unnecessary #define

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/tmo50/keymaps/xerpocalypse/keymap.c

Changed keymap to use KC_UNDS instead of custom-defined keycode

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>
2019-09-15 21:32:34 -07:00
Michael Torres
a9c1a5a873 remove accidental characters in default preonic keymap (#6748) 2019-09-16 14:13:44 +10:00
xster
3b4b54f6ed Clarify the backlight_level API doc slightly (#6733)
* Clarify the backlight_level API doc slightly

* review
2019-09-15 19:22:02 +10:00
vuhopkep
9c280089aa add VN66 keyboard (#6722)
* add VN66 keyboard

* update

* Update readme.md

* Update readme.md

* add hnah108 personal pcb

* delete hnah108

* Update vn66.c
2019-09-15 19:13:19 +10:00
noroadsleft
38a0a6a092 [Keyboard] TheVanKeyboards Caravan: Configurator layout support (#6737) 2019-09-14 20:16:26 -07:00
GreenShadowMaker
8294a0de2c [Keymap] style cleanup of GreenShadowMaker's keymap (#6736) 2019-09-14 20:15:56 -07:00
xster
65c4b6cff1 [Keymap] Yet another xd75 keymap (#6734)
* add a keymap for xd75

* add colors, change some keys, add reactive modifier hold, key press

* add readme

* permissive hold
2019-09-14 20:14:16 -07:00
MechMerlin
9508b3f333 [Keyboard] Alps64 Refactor (#6723)
* get rid of custom matrix that is no longer being used

* remove _kc LAYOUT

* remove ifdefs and replace with pragma once

* cleanup rules and use bootmagic lite

* get rid of led.c

* Update keyboards/alps64/alps64.c

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* remove unneeded configurations
2019-09-14 20:03:11 -07:00
Drashna Jaelre
6c871408df [Keyboard] Fix default keymaps for OLKB boards to play Startup Sound (#6721)
* Fix Planck default keymap to play sounds on rev6

The dip_switch_update callback was overriding the default startup sound.  This should prevent that from happening, and still allow it to play sounds, or stop them, when appropriate.

* Fix Preonic default keymap to play sounds on Rev 3

The dip_switch_update callback was overriding the default startup sound.  This should prevent that from happening, and still allow it to play sounds, or stop them, when appropriate.
2019-09-14 19:59:44 -07:00
Drashna Jaelre
265d8abee1 Fix enables for Haptic Feedback (#6707)
* Fix enables for Haptic Feedback

If you enabled bothe DRV2605 and SOLENOID, it would only enable one of these, not both. 

This fixes the check so that you can enable both options.

* Fix check for haptic feature
2019-09-14 19:57:07 -07:00
Fedde Schaeffer
d13e0b5cfc [Keymap] Fix Georgi's RZ key in NKRO fake-steno mode (#6701)
It was sending a comma keypress, while I believe that the targeted
stenography software (at least on systems that generally use
US-International keyboard layout) expects a single-quote/apostrophe key.
2019-09-14 19:55:23 -07:00
m47ch4n
a4581e6620 [Keymap] Added m47ch4n keymap (#6673)
* Add m47ch4n's keymap

* Modify keymap

* Format m47ch4n keymap.c using clang-format

* Modify layer updater

* Fix wrong key repeating bug

* Add readme and QMK Configurator json

* Fix layer updateter

* Add Raise layer

* Add kana keys
2019-09-14 19:53:52 -07:00
J.Flanagan
0cbe1eb433 [Keyboard] Add 2key2crawl (#6727)
* adding working 2key2crawl

Adding working 2key2crawl files
edited files in accordance with original PR comments

* Changes

Changes and updates

* Update readme.md

* Update config.h

removed IS_COMMAND block that was missed in previous commit

* Changes to vol/keymap.c

Removed unneccesary function
2019-09-14 14:03:14 -07:00
Drashna Jaelre
969dd8be56 Fix Corne keyboard matrix configuration (#6684) 2019-09-14 17:46:14 +10:00
Drashna Jaelre
1620066475 Add to VSCode's recommended extensions (#6656)
This includes a number of recommended extensions from the VS Code doc page that should make coding things a lot easier for QMK Firmware.
2019-09-13 18:18:31 -04:00
Ethan Durrant
b4161ac190 [Keymap] adding emdarcher's keymap for mf68 and tada68 (#6718)
* adding a custom mf68 keymap

* added custom tada68 keymap

* readme edit on tada68 map

* added mac fast-forward and rewind keybindings to tada68 emdarcher keymap

* tada68 keymap documentation and edits

* cleanup and edits

* typo fix in emdarcher's tada68 keymap

* cleaning up emdarcher keymap for tada68

* cleaned up emdarcher keymap for mf68
2019-09-12 15:47:30 -07:00
Papop
b9de27161a [Keymap] xunz layout for dz60rgb (#6716)
* [Update] Add xunz layout for dz60rgb

* [Update] Update layout.json and Readme.md

* [Delete] Delete unnecessary files

* [Create] Create new readme.md

* Update keyboards/dztech/dz60rgb/keymaps/xunz/rules.mk

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* [Update] Delete some unnecessary code in config.h

* Update keyboards/dztech/dz60rgb/keymaps/xunz/config.h

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

* Update keyboards/dztech/dz60rgb/keymaps/xunz/config.h

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

* Update keyboards/dztech/dz60rgb/keymaps/xunz/rules.mk

Co-Authored-By: fauxpark <fauxpark@gmail.com>
2019-09-12 15:46:24 -07:00
Joel Challis
ad3e4d6c13 Tidy up backlight header use to avoid build issues (#6714) 2019-09-11 23:15:39 +01:00
zvecr
251b4fb79d Fix boards being skipped during make all 2019-09-10 21:15:48 -07:00
Francis St-Amour
68dbf92d9e remove synthing conflict file (#6717) 2019-09-11 12:51:21 +10:00
Kenny Hoang
595232ec98 Created new_keymap.py, python version of new_keymap.sh (#6066)
* Created python version of new_keymap.sh: new_keymap.py

* Updated usage message

* Updated new_keymap.py to use python3.5+ syntax & be more similar to new_keyboard.sh

* Updated complete message

* Updated usage in argparser and removed incorrect usage_message

* Reverted the fstrings back to strings that use .format() & updated docstring convention

* Added helper to recursively cd .. until at qmk_firmware root directory

* Revert "Added helper to recursively cd .. until at qmk_firmware root directory"

This reverts commit 61a0ff3b25f91901287bec8d58eb51a1f126e2ad.

* Updated new_keymap.py to use printf-style format strings

* First draft lib/python/qmk/cli/new/keymap.py with milc

* Removed shebang & syspath appending lines

* Added optional args & resolved some cr comemnts

* Added a docstring and updated strings
2019-09-10 05:14:25 -07:00
Jonathan Cameron
2e521b509c [Keyboard] Added a simple 2x5 Keypad with 4 layers (#6699)
* Added new 2x5 Keypad with 3 LEDs to indicate the selected layer.  By Jonathan Cameron.

* Minor refactor from suggestions from qmk team

* Added

* Moved to 'handwired' directory

* Update readme.md

* Update readme.md

* Update readme.md

* Update keyboards/handwired/2x5keypad/readme.md

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

* Switch to image offsite

* Moved image offsite

* Update keyboards/handwired/2x5keypad/keymaps/default/keymap.h

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

* Update keyboards/handwired/2x5keypad/2x5keypad.h

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

* Moved functions into .c file per suggestions

* Cosmetic

* Fixed function called, per suggestions.

* Update keyboards/handwired/2x5keypad/2x5keypad.h

Ok

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

* Moved LED functions to the top level since they can be used it various flavors

* Declare those moved LED functions!

* Update keyboards/handwired/2x5keypad/config.h

Co-Authored-By: Drashna Jaelre <drashna@live.com>
2019-09-09 22:03:33 -07:00
MechMerlin
00225b77e5 [Keyboard] Waldo RGB Enable (#6711)
* enable rgb animations

* clean up code
2019-09-09 21:57:45 -07:00
Manassarn Manoonchai
9dae7f7d85 [Keymap] Update to narze keymaps (#6694)
Use Right GUI as backspace key & 1ms polling interval on narze keymaps

* Refactor & reimplement mod tap macros

* Reduce tapping term

* Update readme

* Add narze userspace

* Make use of narze userspace

* Extract Superduper mode

* Refactor Superduper mode

* (Ergodox Infinity) Prevent stuck modifiers

* Update ergodox_infinity/narze likewise

* Add warning for building Infinity with docker

* Fix include eeprom.h in superduper

* Try enabling superduper mode with combo for ergodox infinity

* Apply suggestions on #4546

* Convert to 4 spaces

* Map backlight step key

* Replace PLAY_NOTE_ARRAY

* Fix superduper toggle

* Re enable audio in planck rev4

* Use perform_space_cadet

* Remove superduper mod tap triggers

* Add readme for planck light firmware flashing command

* Remove unused layers

* Remove unused keycodes

* Add backlight toggle

* Remove unused songs & use DEFAULT_LAYER_SONGS

* Update readme

* Move includes to header file

* Set RGUI & raise as backspace & unbind actual backspace

* tmp

* Fix qwerty doc

* Use 1ms polling rate
2019-09-09 21:44:08 -07:00
Brice Figureau
a88b6db682 [Keyboard] Add the E6.5 keyboard (#6693)
The E6.5 is the new 65% keyboard made by Exclusive.
This changeset adds its PCB to QMK, including all the bottom row
variants and iso/ansi/split BS layouts.
2019-09-09 21:42:21 -07:00
MechMerlin
22a7e71fb3 [Keyboard] Add DP60 keyboard (#6679)
* add dp60 keyboard

* fixup wording in readme

* fix layout name in default keymap. I was missing an r

* Add QMK Configurator support for the additional layouts

* Update keyboards/dp60/config.h

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* Update keyboards/dp60/config.h

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* Update keyboards/dp60/config.h

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* Update keyboards/dp60/config.h

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* Update keyboards/dp60/config.h

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* strip out the VIA enabling from default rules.mk

* add a VIA only keymap
2019-09-09 21:38:08 -07:00
Kai Eckert
88908888b8 [Keyboard] Add Rabbit68 Keyboard w/ default,kaiec keymaps. (#6676)
* Add Rabbit68 Keyboard w/ default,kaiec keymaps.

* Requested changes by @fauxpark

* Change flash command, as suggested by @drashna

* Update keyboards/rabbit/rabbit68/readme.md

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* Add link to Github repo 

As I per suggestion changed the link above to an image, I added now the link to the project page to the Open Source text, where it actually makes the most sense.
2019-09-09 21:36:32 -07:00
MechMerlin
99e58eab0f [Keyboard] Feature/dz60rgb cleanups (#6697)
* change LAYOUT_ANSI to LAYOUT_60_ansi

* change QMK Configurator layout to LAYOUT_60_ansi as well

* add 60_ansi support so I can make my userspace =)

* update readme

* Very strange. ISO keymap is still using 60_ansi LAYOUT macro. But then again....no ISO hottswap dz60 has been released
2019-09-08 10:27:01 -07:00
vuhopkep
d2f87df7f4 [Keyboard] Add Freyr keyboard (#6664)
* Add Freyr keyboard

Add new Freyr tkl keyboard

* add comunity layout

* Update info.json

* Update readme.md

* Update info.json

* Update keymap.c
2019-09-08 08:48:54 -07:00
Callum Hart
ff118bce6a Add Copenhagen Click Pad (#6681)
* Add Copenhagen Click Pad

* Update keyboards/copenhagen_click/click_pad_v1/rules.mk

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

* Removing left over boilerplate

* Update keyboards/copenhagen_click/click_pad_v1/config.h

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* Update keyboards/copenhagen_click/click_pad_v1/readme.md

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

* Update readme.md
2019-09-08 10:34:39 +10:00
Drashna Jaelre
02f77e7215 Actually use correct bootloader not found message (#6695) 2019-09-08 09:55:18 +10:00
Drashna Jaelre
44fd317a87 Move Bootloader not found message to global variable (#6688)
* Move Bootloader not found message to global variable

* Apply suggestions from code review

Co-Authored-By: fauxpark <fauxpark@gmail.com>
2019-09-08 02:06:39 +10:00
Annihilator6000
0728c0fa4e [Keymap] UT47.2 Planck-style layout switching (#6669)
* UT47.2 keymap/updates for Planck style layout switching

* UT47.2 keymap for Planck-style layout switching / code clean up

* UT47.2 keymap for Planck-style layout switching: Qwerty, Workman, Colemak, Colemak Mod-DH, and Dvorak added / code clean up

* Change the layout info to match the keymap

* Edit readme to contain relevant info for layout switching

* Edit readme to contain relevant info for layout switching

* Edit readme to contain relevant info for layout switching

* Edit readme to contain relevant info for layout switching. Add QMK Configurator file.

* Update readme.md with make information

* Undo breaking change in config.h

* Code cleanup

* Code cleanup

* Code cleanup

* More code cleanup
2019-09-07 09:04:31 -07:00
Jonathan Rascher
d90038eb9c [Keymap] Assorted personal keymap/userspace updates (#6691)
* Turn off more unnecessary features by default

* Double TAP_CODE_DELAY due to more media key issues

Even with this change, some of the rotary encoder turns on my BDN9's
volume knob still seem to get dropped. It's possible there's something
wrong with the encoder itself. (Maybe the TAP_CODE_DELAY actually causes
QMK to miss an encoder turn? Unclear.) The other knob (backlight
brightness) works fine, FWIW....

* Restructure userspace config.h a bit

* Hack around Instant60 Via EEPROM conflict

Remove this when #6589 is fixed for Via boards.

* Add backlight breathing and (EEPROM) reset to BDN9

* Add keymap for 9-Key macropad
2019-09-07 08:58:17 -07:00
Drashna Jaelre
e88f80a891 [Keymap] Big Drashna code update (#6639)
* Add a quefrency keymap

* New Alt-ernate layouts

* Enable Per Key Tapping Term to preserve sanity

* Use underglow and mod lights for status on Corne

* Update the drashna_ms keymap for quefrency

* Disable Audio since there isn't enough space

* Update KC_MAKE to ues :flash target

* Cleanup ergodox layout

* Enable i2c support for Iris

* Add keymap support for CG_SWAP

* Enable RGB Matrix Shutdown mode

* enable heatmap

* Update gitlab CI to install python3

* Remove game macros

These are no longer needed, and haven't been used in ages

* Cleanup planck layout

* Add RGB Matrix fun and RGB cleanup

* Add keycode and config for RGB Matrix idle animations

* Clean up rgb idle animation code

* Add rgb idle keycode to keymaps

* Fix issues with rgb matrix idle animation

* Fix some handling for idle animation

* Reduce idle animation timeout to 15s to be more reasonable

* fix up rgb stuff

* Fix isses with rgb functions not being called for matrix

* Use custom EEPROM Magic Number so testing is easier

* Extend Default Layer macro to support a lot more layers

* Fix bjohnson macropad

* Adjust KC_MAKE to process mods for more consistent behavior

* Fix up rgb stuff on corne

* Corne OLED Overhaul

* Fixes a number of issues with weirdness.
* Fixes issues with keylogger (should be more reliable now)
* Modulaize the OLED render sections
* Rewrite layer display code
* Update URL for Font Editor

Due to odd issues, I ended up rewriting from scratch.  And using PROGMEM versions, since I think I was getting memory overflows.

* Update polling rate on all keebs

* Fix planck ez layout config

* Remove macros from Viterbi
2019-09-07 08:57:30 -07:00
Nshan Petrosyan
79a6c6eda5 [Keymap] Update nshanpetrosyan keymap (#6683)
* Update keymap.c

Additional functionality added to layers.

* Error fix

Fixed missing key in layer 5, fixed brightness keys with universal codes, made code more readable.

* fix missing commas

fixed missing commas on line 19 and line 23

* fix Indicator LED sticking on RGB off toggle.

fixes issue: LED indicators stay on when toggling RGB off
2019-09-07 08:25:25 -07:00
fauxpark
490a13a02e Add 328P to mcu_selection.mk (#6682) 2019-09-07 08:24:19 -07:00
fauxpark
0d94730da0 Adafruit BLE: Set SPI2X bit only when F_CPU is 8MHz (#6671) 2019-09-07 08:18:05 -07:00
fauxpark
91bd2117df Banish some more magic numbers (#6662) 2019-09-07 08:12:46 -07:00
Manassarn Manoonchai
c21281c593 [Keymap] Add narze userspace (#6652)
* Refactor & reimplement mod tap macros

* Reduce tapping term

* Update readme

* Add narze userspace

* Make use of narze userspace

* Extract Superduper mode

* Refactor Superduper mode

* (Ergodox Infinity) Prevent stuck modifiers

* Update ergodox_infinity/narze likewise

* Add warning for building Infinity with docker

* Fix include eeprom.h in superduper

* Try enabling superduper mode with combo for ergodox infinity

* Apply suggestions on #4546

* Convert to 4 spaces

* Map backlight step key

* Replace PLAY_NOTE_ARRAY

* Fix superduper toggle

* Re enable audio in planck rev4

* Use perform_space_cadet

* Remove superduper mod tap triggers

* Add readme for planck light firmware flashing command

* Remove unused layers

* Remove unused keycodes

* Add backlight toggle

* Remove unused songs & use DEFAULT_LAYER_SONGS

* Update readme

* Move includes to header file
2019-09-07 08:06:30 -07:00
skullY
6ca29f2b9b Run the python tests inside docker 2019-09-07 07:58:41 -07:00
skullY
16366dd23d add missing apostrophes 2019-09-07 07:58:41 -07:00
skullY
18690ddaea filter python from the list of things that trigger default builds 2019-09-07 07:58:41 -07:00
skullY
1013ae2d34 Add python tests to the travis check 2019-09-07 07:58:41 -07:00
skullY
deb6fa6a87 Add a command to format python code 2019-09-07 07:58:41 -07:00
skullY
533d6d6a46 Make the modem manager check more pythonic 2019-09-07 07:58:41 -07:00
skullY
c7eede2249 run yapf on the code 2019-09-07 07:58:41 -07:00
skullY
5b7a5b2a76 Setup a python test framework 2019-09-07 07:58:41 -07:00
Konstantin Đorđević
4d339b7b5d Update docker_build.sh: indentation fix, error echo function (#6659)
* Replace spaces with tab in docker_build.sh

* Use errcho instead of echo >&2
2019-09-07 18:17:54 +10:00
jotix
736bdc7e97 Jotix (#6687)
* jotix ortho_4x12

* add shifted symbols

* jotix ortho_4x12 layot
2019-09-07 18:05:14 +10:00
MechMerlin
fc5fb2fc15 CA66 R1/R2 Cleanup (#6678)
* fixup readme to adhere to QMK standards and to also have more information

* use pragma once

* strip out the custom bootmagic lite routine as it is the same as QMK's default bootmagic lite routine. Also add the caps lock led indicator

* turn on bootmagic lite

* update default keymap

* Update keyboards/playkbtw/ca66/ca66.c

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

* remove lines 4 thru 37 and add bootloader
2019-09-07 18:04:48 +10:00
Silvio Gulizia
ac8f8a8914 fix missing music mode legend (#6686) 2019-09-07 07:36:40 +10:00
fauxpark
7ffed07310 Make USB polling rate configurable with a define (#6668) 2019-09-06 07:41:24 -07:00
Mikkel Jeppesen
f8bf1d1b16 Changed to 1209 PID (#6677) 2019-09-06 14:34:37 +10:00
Danny
f0ad3fc68a [Keyboard] Add Iris Rev 4 (#6660)
* Add Iris Rev. 4

* Fix EEPROM addresses
2019-09-05 20:10:57 -07:00
fauxpark
98599173d7 Add 16U2, 16U4 and USB646 to mcu_selection.mk (#6566) 2019-09-05 14:50:43 -07:00
Xelus22
12812fa6a4 led fix (#6672) 2019-09-05 13:41:01 +10:00
Konstantin Đorđević
6d191635d0 Add personal Doro67 multi keymap, fix bug in KBD6X keymap (#6674)
* Add missing void parameter declarations to *_light functions

* Add doro67/multi:konstantin keymap

* Allow FNLK to be canceled with Esc

* Function layer → Fn layer in keymap comments
2019-09-05 13:38:54 +10:00
fauxpark
df5b2d204b [Keyboard] Missed a JTAG disable (#6667) 2019-09-03 20:26:01 -07:00
Vega Deftwing
7372ce6afd added ability to change unicode input method (#6666) 2019-09-04 09:03:16 +10:00
bwhelm
fa71c4c91e Fix battery level code in adafruit_ble.cpp (#6648)
* Fix battery level code in adafruit_ble.cpp

The code in tsk_core/protocol/lufa/adafluit_ble.cpp that polls the
battery level for the Adafruit feather BLE controller reads the
regulated voltage, not the raw voltage coming from the battery. To do
that, the Adafruit Feather docs say you should read from pin A9:
https://learn.adafruit.com/adafruit-feather-32u4-basic-proto/power-management#measuring-battery-4-9.
(See also
https://learn.adafruit.com/adafruit-feather-32u4-bluefruit-le/pinouts#logic-pins-2-9.)

I'm not sure why, but analogRead(9); doesn't read the correct pin.
Checking all available analog pins experimentally, it turns out that
analogRead(7); returns the correct value. So the code above should read:

    state.vbat = analogRead(7);

* Update tmk_core/protocol/lufa/adafruit_ble.cpp

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* Remove old comment

* Fix linking error

* Remove `#ifdef` around `#include analog.h`.

* Really fix linking error
2019-09-04 04:29:23 +10:00
Elliot Powell
e6a6b1f122 [Docs] Update i2c_driver.md (#6665)
Fix missing arg of i2c_start
2019-09-03 10:09:58 -07:00
Konstantin Đorđević
c522009816 [Keyboard] Doro67 cleanup (#6514)
Add spacing to LAYOUT macros, add layout comments, improve consistency, fix ISO layout bug

* Remove placeholder comments in regular.h and rgb.h

* Change K## to k## in multi.h and regular.h

* Add alignment whitespace in Doro67 LAYOUT macros

* Update multi default keymaps and add layout comments

* Update rgb default keymap and add layout comments

* Add RESET to Fn layer in multi default keymaps

* Replace KC_GESC with KC_ESC in rgb default keymap for consistency with other Doro keymaps

* Update regular default keymap and add layout comments

* WIP

* Replace odd F1, F2 with proper split LShift/Backspace keys in default_multi

* Minor fixes and tweaks in multi default keymaps

* Fix Enter and NUHS positions in multi LAYOUT_iso

* Return true in process_record_user in rgb default keymap

* Update Enter position in multi info.json

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update labels in multi info.json to match the default keymaps
2019-09-03 09:05:29 -07:00
Danny
5c324ee104 [Keyboard] Add Tukey board (#6657) 2019-09-03 08:43:25 -07:00
Konstantin Đorđević
d633cf3ccb [Keymap] Update personal userspace and keymaps (#6654)
* Enable Fn layer tap dances only if LAYER_FN is defined

* Update KBD6X keymap spacing to match LAYOUT spacing

* Add regular FNLK to userspace, update keymap comment labels

* Rename KC_BRK → BREAK, KC_SYSR → SYSRQ in userspace

* Change mousekey positions in KBD6X

* Disable Console in KBD6X to reduce firmware size

* Return false in process_record_* only when overriding existing keys

* Fix Caps light not working after LSFT_FN

* Refactor Fn/Caps light, fix sequencing issues
2019-09-03 08:42:05 -07:00
Benjamin Grosse
55bae0a5b4 [Keymap] Satan GH60 with command prompt animation, react to keypresses (#6636)
Co-Authored-By: fauxpark <fauxpark@gmail.com>
Signed-off-by: Benjamin Große <benjamin@midokura.com>
2019-09-03 08:35:43 -07:00
Drashna Jaelre
dab4967f1b Add Dip Switch as a core feature (#6140)
* Add Dip Switches as a core feature

* Add documentation for Dip Switch feature

* Update Preonic Rev3 to use new feature and remove custom matrix

* Apply suggestions from code review

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Remove custom matrix line completely

Rather than just disabling it

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

* DIP changes

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

* Use better check for DIP Switch configuration

* Add to show features

* Add bitmask callback for dip switch

* Fix OLKB Boards dip switch config

* Update docs to include bitmask example

* Fix comments/documentation

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

* Fix issues with docs and use example from @tuzonghua

* Fix wording

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

* Fix example to use proper formatting

Bad, BAAAAAAD drashna!!!

* Handle dip switch initialization better
2019-09-03 08:34:31 -07:00
Drashna Jaelre
9f46606dff Update submodule check to include LUFA (#6661)
As LUFA is now a submodule, we should be checking it.
2019-09-03 17:56:02 +10:00
Jonas Avellana
f2ea65db6b [keymap] ninjonas userspace and keymaps for hotdox, lily58, & pinky3 (#6649)
* [keyboard] introducing ninjonas userspace & keymaps for hotdox, lily58, and pinky3

* [fix(#6649)] removed M_EPRM and used builtin EEP_RST keycode as-per review.

* [chore(#6649)] forgot to update keymap legend on lily58
2019-09-02 07:40:01 -07:00
Sid Carter
0e153781f0 [Keymap] Update keymap for alice and fix for ctrl and os swap (#6642)
* update map for alice and fix for via boards

* enable bootmagic
2019-09-02 07:36:00 -07:00
fauxpark
27b3f3141b Fix typo in Open Graph description for docs (#6641) 2019-09-02 07:35:02 -07:00
Louis D
d653e55461 [Keyboard] add rgb led configuration for xd87 (#6635)
* add rgb led configuration for xd87

* Add RGB underglow to a separate keymap

* rename keymap and make small review changes
2019-09-02 07:33:04 -07:00
Cory Watson
05d0e8c09e Add dfu-programmer to pacman -S (#6619)
* Add `dfu-programmer` to `pacman -S` (#6618)

`dfu-programmer` now resides at `extra/dfu-programmer` and is no longer
in the AUR

* Add `--needed` option to `pacman -S` for efficiency

* Fix

* Update util/linux_install.sh

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>
2019-09-02 07:32:14 -07:00
Alex Schroeder
19e85a503c [Keyboard] Atreus: Flip the middle two keys when PCBDOWN is set. (#6616)
Flipping the columns isn't enough for the Atreus keyboard, since these
two keys are distinguished by row on the same column electrically.
2019-09-02 07:30:35 -07:00
fauxpark
5095a999b7 Fix msys2 not installing any packages because it can't find clang (#6655) 2019-09-02 10:09:09 -04:00
Drashna Jaelre
bf558e42fd Run dos2unix on whole repo (#6644) 2019-09-01 09:09:43 -07:00
Drashna Jaelre
3fae3076ce Always run util/travis_compiled_push.sh (#6640)
Specifically, the `util/travis_compiled_push.sh` runs a number of cleanup and deployment routines. This includes `dos2unix` that fixes the line endings for sanity's sake.   However, it only runs on successful builds.  That would be fine, except some builds WILL fail (community layouts, yay), which is a problem. 

This should change the behavior to always run the post compile checks. 

However, in the long run, we should break up this script into more parts.
2019-09-01 09:09:19 -07:00
noroadsleft
4c4ee4a26b NIU Mini Settings update and Refactor (#6651)
* update codebase to four-space indent

* update codebase to use #pragma once

* refactor config.h

* change info.json to debug linting

* refactor readme

- file header
- update docs links

* minimize and lint rules.mk

* change features

- enable mousekeys and nkro

* use GPIO commands for Status LED

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

* use IS_LED_ON macro

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

* update compile/flash examples in readme

* :flash doesn't use QMK Toolbox
2019-09-01 17:54:13 +10:00
Jarred Steenvoorden
f59d076898 [Keymap] Add leaf60 and tada68 keymaps (#6645)
* Add leaf60 and tada68 keymaps

* Cleanup files for pull request

* Cleanup tada68 keymap
2019-08-31 11:20:10 -07:00
Sid Carter
d12c024dde [Keymap] Combo keymap update - For planck and dz60rgb (#6643)
* update my planck layout

* update me planck layout

* For my purple Tofu60 with dz60rgb
2019-08-31 11:14:17 -07:00
skullY
2d688ad14e readability enhancements 2019-08-31 08:50:25 -07:00
skullY
1784d1bfac Add support for passing files at the command line 2019-08-31 08:50:25 -07:00
skullY
9547774962 CLI command to format C code 2019-08-31 08:50:25 -07:00
2275 changed files with 72693 additions and 35535 deletions

4
.gitignore vendored
View File

@@ -25,7 +25,7 @@ quantum/version.h
CMakeLists.txt
cmake-build-debug
doxygen/
.DS_STORE
.DS_Store
/util/wsl_downloaded
/util/win_downloaded
/keyboards/*/Makefile
@@ -60,8 +60,8 @@ util/Win_Check_Output.txt
# ignore image files
*.png
*.jpg
*.gif
*.jpg
# Do not ignore MiniDox left/right hand eeprom files
!keyboards/minidox/*.eep

View File

@@ -1,6 +1,5 @@
os: linux
dist: trusty
sudo: required
group: edge
language: c
branches:
@@ -27,7 +26,7 @@ addons:
- diffutils
- dos2unix
- doxygen
after_success:
after_script:
bash util/travis_compiled_push.sh
notifications:
webhooks:

View File

@@ -1,6 +1,11 @@
// Suggested extensions
{
"recommendations": [
"EditorConfig.EditorConfig"
"EditorConfig.EditorConfig",
"xaver.clang-format",
"ms-vscode.cpptools",
"bierner.github-markdown-preview",
"donjayamanne.git-extension-pack",
"CoenraadS.bracket-pair-colorizer-2"
]
}

12
.vscode/settings.json vendored
View File

@@ -8,10 +8,12 @@
"**/*.hex": true
},
"files.associations": {
"*.h": "c",
"*.c": "c",
"*.cpp": "cpp",
"*.hpp": "cpp",
"xstddef": "c"
"*.h": "c",
"*.c": "c",
"*.cpp": "cpp",
"*.hpp": "cpp",
"xstddef": "c",
"type_traits": "c",
"utility": "c"
}
}

View File

@@ -371,6 +371,9 @@ define PARSE_KEYBOARD
# The same if all was specified
else ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,all),true)
$$(eval $$(call PARSE_ALL_KEYMAPS))
# List all keymaps for the given keyboard
else ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,list-keymaps),true)
$$(eval $$(call LIST_ALL_KEYMAPS))
# Try to match the specified keyamp with the list of known keymaps
else ifeq ($$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(KEYMAPS)),true)
$$(eval $$(call PARSE_KEYMAP,$$(MATCHED_ITEM)))
@@ -407,6 +410,16 @@ endef
# endif
# endef
# Prints a list of all known keymaps for the given keyboard
define LIST_ALL_KEYMAPS
COMMAND_true_LIST_KEYMAPS := \
printf "$$(KEYMAPS)\n";
COMMAND_false_LIST_KEYMAPS := \
printf "$$(MSG_AVAILABLE_KEYMAPS)\n"; \
printf "$$(KEYMAPS)\n";
COMMANDS += LIST_KEYMAPS
endef
# $1 Keymap
# This is the meat of compiling a keyboard, when entering this, everything is known
# keyboard, subproject, and keymap
@@ -548,6 +561,7 @@ ifndef SKIP_GIT
if [ ! -e lib/chibios ]; then git submodule sync lib/chibios && git submodule update --depth 1 --init lib/chibios; fi
if [ ! -e lib/chibios-contrib ]; then git submodule sync lib/chibios-contrib && git submodule update --depth 1 --init lib/chibios-contrib; fi
if [ ! -e lib/ugfx ]; then git submodule sync lib/ugfx && git submodule update --depth 1 --init lib/ugfx; fi
if [ ! -e lib/lufa ]; then git submodule sync lib/lufa && git submodule update --depth 1 --init lib/lufa; fi
git submodule status --recursive 2>/dev/null | \
while IFS= read -r x; do \
case "$$x" in \

86
bin/qmk
View File

@@ -4,10 +4,8 @@
import os
import subprocess
import sys
from glob import glob
from time import strftime
from importlib import import_module
from importlib.util import find_spec
from time import strftime
# Add the QMK python libs to our path
script_dir = os.path.dirname(os.path.realpath(__file__))
@@ -15,12 +13,8 @@ qmk_dir = os.path.abspath(os.path.join(script_dir, '..'))
python_lib_dir = os.path.abspath(os.path.join(qmk_dir, 'lib', 'python'))
sys.path.append(python_lib_dir)
# Change to the root of our checkout
os.environ['ORIG_CWD'] = os.getcwd()
os.chdir(qmk_dir)
# Make sure our modules have been setup
with open('requirements.txt', 'r') as fd:
with open(os.path.join(qmk_dir, 'requirements.txt'), 'r') as fd:
for line in fd.readlines():
line = line.strip().replace('<', '=').replace('>', '=')
@@ -32,66 +26,58 @@ with open('requirements.txt', 'r') as fd:
module = line.split('=')[0] if '=' in line else line
if not find_spec(module):
print('Your QMK build environment is not fully setup!\n')
print('Please run `./util/qmk_install.sh` to setup QMK.')
print('Could not find module %s!', module)
print('Please run `pip3 install -r requirements.txt` to install the python dependencies.')
exit(255)
# Figure out our version
# TODO(skullydazed/anyone): Find a method that doesn't involve git. This is slow in docker and on windows.
command = ['git', 'describe', '--abbrev=6', '--dirty', '--always', '--tags']
result = subprocess.run(command, universal_newlines=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
result = subprocess.run(command, universal_newlines=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
if result.returncode == 0:
os.environ['QMK_VERSION'] = 'QMK ' + result.stdout.strip()
os.environ['QMK_VERSION'] = result.stdout.strip()
else:
os.environ['QMK_VERSION'] = 'QMK ' + strftime('%Y-%m-%d-%H:%M:%S')
os.environ['QMK_VERSION'] = 'nogit-' + strftime('%Y-%m-%d-%H:%M:%S') + '-dirty'
# Setup the CLI
import milc
milc.EMOJI_LOGLEVELS['INFO'] = '{fg_blue}Ψ{style_reset_all}'
# If we were invoked as `qmk <cmd>` massage sys.argv into `qmk-<cmd>`.
# This means we can't accept arguments to the qmk script itself.
script_name = os.path.basename(sys.argv[0])
if script_name == 'qmk':
if len(sys.argv) == 1:
milc.cli.log.error('No subcommand specified!\n')
if len(sys.argv) == 1 or sys.argv[1] in ['-h', '--help']:
milc.cli.echo('usage: qmk <subcommand> [...]')
milc.cli.echo('\nsubcommands:')
subcommands = glob(os.path.join(qmk_dir, 'bin', 'qmk-*'))
for subcommand in sorted(subcommands):
subcommand = os.path.basename(subcommand).split('-', 1)[1]
milc.cli.echo('\t%s', subcommand)
milc.cli.echo('\nqmk <subcommand> --help for more information')
@milc.cli.entrypoint('QMK Helper Script')
def qmk_main(cli):
"""The function that gets run when no subcommand is provided.
"""
cli.print_help()
def main():
"""Setup our environment and then call the CLI entrypoint.
"""
# Change to the root of our checkout
os.environ['ORIG_CWD'] = os.getcwd()
os.chdir(qmk_dir)
# Import the subcommands
import qmk.cli
# Execute
return_code = milc.cli()
if return_code is False:
exit(1)
if sys.argv[1] in ['-V', '--version']:
milc.cli.echo(os.environ['QMK_VERSION'])
exit(0)
elif return_code is not True and isinstance(return_code, int):
if return_code < 0 or return_code > 255:
milc.cli.log.error('Invalid return_code: %d', return_code)
exit(255)
sys.argv[0] = script_name = '-'.join((script_name, sys.argv[1]))
del sys.argv[1]
exit(return_code)
# Look for which module to import
if script_name == 'qmk':
milc.cli.print_help()
exit(0)
elif not script_name.startswith('qmk-'):
milc.cli.log.error('Invalid symlink, must start with "qmk-": %s', script_name)
else:
subcommand = script_name.replace('-', '.').replace('_', '.').split('.')
subcommand.insert(1, 'cli')
subcommand = '.'.join(subcommand)
try:
import_module(subcommand)
except ModuleNotFoundError as e:
if e.__class__.__name__ != subcommand:
raise
milc.cli.log.error('Invalid subcommand! Could not import %s.', subcommand)
exit(1)
if __name__ == '__main__':
milc.cli()
main()

View File

@@ -1 +0,0 @@
qmk

View File

@@ -1 +0,0 @@
qmk

View File

@@ -1 +0,0 @@
qmk

View File

@@ -1 +0,0 @@
qmk

View File

@@ -19,12 +19,14 @@
#
# Sets the bootloader defined in the keyboard's/keymap's rules.mk
# Current options:
# atmel-dfu
# lufa-dfu
# qmk-dfu
# halfkay
# caterina
# bootloadHID
#
# halfkay PJRC Teensy
# caterina Pro Micro (Sparkfun/generic)
# atmel-dfu Atmel factory DFU
# lufa-dfu LUFA DFU
# qmk-dfu QMK DFU (LUFA + blinkenlight)
# bootloadHID HIDBootFlash compatible (ATmega32A)
# USBasp USBaspLoader (ATmega328P)
#
# BOOTLOADER_SIZE can still be defined manually, but it's recommended
# you add any possible configuration to this list
@@ -32,40 +34,40 @@
ifeq ($(strip $(BOOTLOADER)), atmel-dfu)
OPT_DEFS += -DBOOTLOADER_ATMEL_DFU
OPT_DEFS += -DBOOTLOADER_DFU
ifeq ($(strip $(MCU)), atmega32u4)
BOOTLOADER_SIZE = 4096
ifneq (,$(filter $(MCU), at90usb646 atmega16u2 atmega16u4 atmega32u2 atmega32u4))
BOOTLOADER_SIZE = 4096
endif
ifeq ($(strip $(MCU)), at90usb1286)
BOOTLOADER_SIZE = 8192
BOOTLOADER_SIZE = 8192
endif
endif
ifeq ($(strip $(BOOTLOADER)), lufa-dfu)
OPT_DEFS += -DBOOTLOADER_LUFA_DFU
OPT_DEFS += -DBOOTLOADER_DFU
ifeq ($(strip $(MCU)), atmega32u4)
BOOTLOADER_SIZE = 4096
ifneq (,$(filter $(MCU), at90usb646 atmega16u2 atmega16u4 atmega32u2 atmega32u4))
BOOTLOADER_SIZE = 4096
endif
ifeq ($(strip $(MCU)), at90usb1286)
BOOTLOADER_SIZE = 8192
BOOTLOADER_SIZE = 8192
endif
endif
ifeq ($(strip $(BOOTLOADER)), qmk-dfu)
OPT_DEFS += -DBOOTLOADER_QMK_DFU
OPT_DEFS += -DBOOTLOADER_DFU
ifeq ($(strip $(MCU)), atmega32u4)
BOOTLOADER_SIZE = 4096
ifneq (,$(filter $(MCU), at90usb646 atmega16u2 atmega16u4 atmega32u2 atmega32u4))
BOOTLOADER_SIZE = 4096
endif
ifeq ($(strip $(MCU)), at90usb1286)
BOOTLOADER_SIZE = 8192
BOOTLOADER_SIZE = 8192
endif
endif
ifeq ($(strip $(BOOTLOADER)), halfkay)
OPT_DEFS += -DBOOTLOADER_HALFKAY
ifeq ($(strip $(MCU)), atmega32u4)
BOOTLOADER_SIZE = 512
BOOTLOADER_SIZE = 512
endif
ifeq ($(strip $(MCU)), at90usb1286)
BOOTLOADER_SIZE = 1024
BOOTLOADER_SIZE = 1024
endif
endif
ifeq ($(strip $(BOOTLOADER)), caterina)

View File

@@ -23,5 +23,5 @@ endif
# Generate the keymap.c
ifneq ("$(KEYMAP_JSON)","")
_ = $(shell test -e $(KEYMAP_C) || bin/qmk-json-keymap $(KEYMAP_JSON) -o $(KEYMAP_C))
_ = $(shell test -e $(KEYMAP_C) || bin/qmk json-keymap $(KEYMAP_JSON) -o $(KEYMAP_C))
endif

View File

@@ -112,7 +112,7 @@ ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
ifeq ($(strip $(RGBLIGHT_CUSTOM_DRIVER)), yes)
OPT_DEFS += -DRGBLIGHT_CUSTOM_DRIVER
else
SRC += ws2812.c
WS2812_DRIVER_REQUIRED = yes
endif
endif
@@ -176,7 +176,7 @@ endif
ifeq ($(strip $(RGB_MATRIX_ENABLE)), WS2812)
OPT_DEFS += -DWS2812
SRC += ws2812.c
WS2812_DRIVER_REQUIRED = yes
endif
ifeq ($(strip $(RGB_MATRIX_CUSTOM_KB)), yes)
@@ -229,13 +229,57 @@ ifeq ($(strip $(LCD_ENABLE)), yes)
CIE1931_CURVE = yes
endif
ifeq ($(strip $(BACKLIGHT_ENABLE)), yes)
# backward compat
ifeq ($(strip $(BACKLIGHT_CUSTOM_DRIVER)), yes)
BACKLIGHT_ENABLE = custom
endif
VALID_BACKLIGHT_TYPES := yes custom
BACKLIGHT_ENABLE ?= no
ifneq ($(strip $(BACKLIGHT_ENABLE)), no)
ifeq ($(filter $(BACKLIGHT_ENABLE),$(VALID_BACKLIGHT_TYPES)),)
$(error BACKLIGHT_ENABLE="$(BACKLIGHT_ENABLE)" is not a valid backlight type)
endif
ifeq ($(strip $(VISUALIZER_ENABLE)), yes)
CIE1931_CURVE = yes
endif
ifeq ($(strip $(BACKLIGHT_CUSTOM_DRIVER)), yes)
COMMON_VPATH += $(QUANTUM_DIR)/backlight
SRC += $(QUANTUM_DIR)/backlight/backlight.c
OPT_DEFS += -DBACKLIGHT_ENABLE
ifeq ($(strip $(BACKLIGHT_ENABLE)), custom)
OPT_DEFS += -DBACKLIGHT_CUSTOM_DRIVER
endif
ifeq ($(PLATFORM),AVR)
SRC += $(QUANTUM_DIR)/backlight/backlight_avr.c
else
SRC += $(QUANTUM_DIR)/backlight/backlight_arm.c
endif
endif
VALID_WS2812_DRIVER_TYPES := bitbang pwm spi i2c
WS2812_DRIVER ?= bitbang
ifeq ($(strip $(WS2812_DRIVER_REQUIRED)), yes)
ifeq ($(filter $(WS2812_DRIVER),$(VALID_WS2812_DRIVER_TYPES)),)
$(error WS2812_DRIVER="$(WS2812_DRIVER)" is not a valid WS2812 driver)
endif
ifeq ($(strip $(WS2812_DRIVER)), bitbang)
SRC += ws2812.c
else
SRC += ws2812_$(strip $(WS2812_DRIVER)).c
endif
# add extra deps
ifeq ($(strip $(WS2812_DRIVER)), i2c)
QUANTUM_LIB_SRC += i2c_master.c
endif
endif
ifeq ($(strip $(CIE1931_CURVE)), yes)
@@ -267,20 +311,21 @@ ifeq ($(strip $(ENCODER_ENABLE)), yes)
OPT_DEFS += -DENCODER_ENABLE
endif
ifeq ($(strip $(HAPTIC_ENABLE)), DRV2605L)
COMMON_VPATH += $(DRIVER_PATH)/haptic
SRC += haptic.c
HAPTIC_ENABLE ?= no
ifneq ($(strip $(HAPTIC_ENABLE)),no)
COMMON_VPATH += $(DRIVER_PATH)/haptic
SRC += haptic.c
OPT_DEFS += -DHAPTIC_ENABLE
endif
ifneq ($(filter DRV2605L, $(HAPTIC_ENABLE)), )
SRC += DRV2605L.c
QUANTUM_LIB_SRC += i2c_master.c
OPT_DEFS += -DHAPTIC_ENABLE
OPT_DEFS += -DDRV2605L
endif
ifeq ($(strip $(HAPTIC_ENABLE)), SOLENOID)
COMMON_VPATH += $(DRIVER_PATH)/haptic
SRC += haptic.c
ifneq ($(filter SOLENOID, $(HAPTIC_ENABLE)), )
SRC += solenoid.c
OPT_DEFS += -DHAPTIC_ENABLE
OPT_DEFS += -DSOLENOID_ENABLE
endif
@@ -358,3 +403,9 @@ ifeq ($(strip $(SPACE_CADET_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/process_keycode/process_space_cadet.c
OPT_DEFS += -DSPACE_CADET_ENABLE
endif
ifeq ($(strip $(DIP_SWITCH_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/dip_switch.c
OPT_DEFS += -DDIP_SWITCH_ENABLE
endif

View File

@@ -1,4 +0,0 @@
# Languages
* [English](/)
* [Chinese](zh/)

5
docs/_langs.md Normal file
View File

@@ -0,0 +1,5 @@
- Translations
- [:uk: English](/)
- [:cn: 中文](/zh-cn/)
- [:fr: Français](/fr-fr/)
- [:ru: Русский](/ru-ru/)

View File

@@ -9,6 +9,7 @@
* [QMK Basics](README.md)
* [QMK Introduction](getting_started_introduction.md)
* [QMK CLI](cli.md)
* [QMK CLI Config](cli_configuration.md)
* [Contributing to QMK](contributing.md)
* [How to Use Github](getting_started_github.md)
* [Getting Help](getting_started_getting_help.md)
@@ -48,7 +49,7 @@
* [Useful Functions](ref_functions.md)
* [Configurator Support](reference_configurator_support.md)
* [info.json Format](reference_info_json.md)
* [Python Development](python_development.md)
* [Python CLI Development](cli_development.md)
* [Features](features.md)
* [Basic Keycodes](keycodes_basic.md)
@@ -63,6 +64,7 @@
* [Combos](feature_combo.md)
* [Command](feature_command.md)
* [Debounce API](feature_debounce_type.md)
* [DIP Switch](feature_dip_switch.md)
* [Dynamic Macros](feature_dynamic_macros.md)
* [Encoders](feature_encoders.md)
* [Grave Escape](feature_grave_esc.md)
@@ -96,6 +98,7 @@
* [ISP Flashing Guide](isp_flashing_guide.md)
* [ARM Debugging Guide](arm_debugging.md)
* [I2C Driver](i2c_driver.md)
* [WS2812 Driver](ws2812_driver.md)
* [GPIO Controls](internals_gpio_control.md)
* [Proton C Conversion](proton_c_conversion.md)
@@ -107,6 +110,7 @@
* [Using Eclipse with QMK](other_eclipse.md)
* [Using VSCode with QMK](other_vscode.md)
* [Support](support.md)
* [How to add translations](translating.md)
* QMK Internals (In Progress)
* [Defines](internals_defines.md)

View File

@@ -6,15 +6,15 @@ This guide is catered towards advance users and assumes you can compile an ARM c
## Installing the software
The main objective here is to get the MCU Eclipse IDE correcly installed on our machine. The necesarry instructions are derived from [this](https://gnu-mcu-eclipse.github.io/install/) install guide.
The main objective here is to get the MCU Eclipse IDE correctly installed on our machine. The necessary instructions are derived from [this](https://gnu-mcu-eclipse.github.io/install/) install guide.
### The xPack Manager
This tool is a software package manager and it is used to help us get the necesarry depencencies.
This tool is a software package manager and it is used to help us get the necessary dependencies.
XPM runs using Node.js so grab that form [here](https://nodejs.org/en/). After installation, open a terminal and type `npm -v`. A reply with the version number means that the instalation was successful.
XPM runs using Node.js so grab that from [here](https://nodejs.org/en/). After installation, open a terminal and type `npm -v`. A reply with the version number means that the installation was successful.
XPM instalation instructions can be found [here](https://www.npmjs.com/package/xpm) and are OS specific. Entering `xpm --version` to your terminal should return the software version.
XPM installation instructions can be found [here](https://www.npmjs.com/package/xpm) and are OS specific. Entering `xpm --version` to your terminal should return the software version.
### The ARM Toolchain
@@ -26,10 +26,10 @@ If you are using windows you need to install this!
`xpm install --global @gnu-mcu-eclipse/windows-build-tools`
### Programer/Debugger Drivers
### Programmer/Debugger Drivers
Now its the time to install your programer's drivers. This tutorial was made using an ST-Link v2 which you can get from almost anywhere.
If you have an ST-Link the drivers can be found [here](https://www.st.com/en/development-tools/stsw-link009.html) otherwise consult the manufuturer of your tool.
Now it's time to install your programmer's drivers. This tutorial was made using an ST-Link v2 which you can get from almost anywhere.
If you have an ST-Link the drivers can be found [here](https://www.st.com/en/development-tools/stsw-link009.html) otherwise consult the manufacturer of your tool.
### OpenOCD
@@ -84,4 +84,4 @@ Reset your keyboard.
Press the bug icon and if all goes well you should soon find yourself in the debug perspective. Here the program counter will pause at the beginning of the main function and way for you to press Play. Most of the features of all debuggers work on ARM MCUs but for exact details google is your friend!
Happy debugging!
Happy debugging!

View File

@@ -14,7 +14,7 @@ The next Breaking Change is scheduled for Nov 29.
### Important Dates
* [ ] 2019 Oct 04 - `future` is created. It will be rebased weekly.
* [x] 2019 Sep 21 - `future` is created. It will be rebased weekly.
* [ ] 2019 Nov 01 - `future` closed to new PR's.
* [ ] 2019 Nov 01 - Call for testers.
* [ ] 2019 Nov 27 - `master` is locked, no PR's merged.
@@ -51,7 +51,9 @@ git rebase master
git push --force
```
## 8 Weeks Before Merge
## Creating the `future` branch
This happens immediately after the previous `future` branch is merged.
* `qmk_firmware` git commands
* [ ] `git checkout master`
@@ -65,9 +67,6 @@ git push --force
* [ ] `git tag <next_version>` # Prevent the breakpoint tag from confusing version incrementing
* [ ] `git push origin future`
* [ ] `git push --tags`
* GitHub Actions
* [ ] Switch all [breaking_change PR's](https://github.com/qmk/qmk_firmware/pulls?utf8=%E2%9C%93&q=is%3Apr+is%3Aopen+label%3Abreaking_change) to `future`
* [ ] Any that have a ChangeLog entry may be merged immediately.
## 4 Weeks Before Merge

View File

@@ -4,22 +4,80 @@ This page describes how to setup and use the QMK CLI.
# Overview
The QMK CLI makes building and working with QMK keyboards easier. We have provided a number of commands to help you work with QMK:
The QMK CLI makes building and working with QMK keyboards easier. We have provided a number of commands to simplify and streamline tasks such as obtaining and compiling the QMK firmware, creating keymaps, and more.
* `qmk compile`
* `qmk doctor`
* [Global CLI](#global-cli)
* [Local CLI](#local-cli)
* [CLI Commands](#cli-commands)
# Setup
# Requirements
Simply add the `qmk_firmware/bin` directory to your `PATH`. You can run the `qmk` commands from any directory.
The CLI requires Python 3.5 or greater. We try to keep the number of requirements small but you will also need to install the packages listed in [`requirements.txt`](https://github.com/qmk/qmk_firmware/blob/master/requirements.txt).
# Global CLI
QMK provides an installable CLI that can be used to setup your QMK build environment, work with QMK, and which makes working with multiple copies of `qmk_firmware` easier. We recommend installing and updating this periodically.
## Install Using Homebrew (macOS, some Linux)
If you have installed [Homebrew](https://brew.sh) you can tap and install QMK:
```
export PATH=$PATH:$HOME/qmk_firmware/bin
brew tap qmk/qmk
brew install qmk
export QMK_HOME='~/qmk_firmware' # Optional, set the location for `qmk_firmware`
qmk setup # This will clone `qmk/qmk_firmware` and optionally set up your build environment
```
You may want to add this to your `.profile`, `.bash_profile`, `.zsh_profile`, or other shell startup scripts.
## Install Using easy_install or pip
# Commands
If your system is not listed above you can install QMK manually. First ensure that you have python 3.5 (or later) installed and have installed pip. Then install QMK with this command:
```
pip3 install qmk
export QMK_HOME='~/qmk_firmware' # Optional, set the location for `qmk_firmware`
qmk setup # This will clone `qmk/qmk_firmware` and optionally set up your build environment
```
## Packaging For Other Operating Systems
We are looking for people to create and maintain a `qmk` package for more operating systems. If you would like to create a package for your OS please follow these guidelines:
* Follow best practices for your OS when they conflict with these guidelines
* Document why in a comment when you do deviate
* Install using a virtualenv
* Instruct the user to set the environment variable `QMK_HOME` to have the firmware source checked out somewhere other than `~/qmk_firmware`.
# Local CLI
If you do not want to use the global CLI there is a local CLI bundled with `qmk_firmware`. You can find it in `qmk_firmware/bin/qmk`. You can run the `qmk` command from any directory and it will always operate on that copy of `qmk_firmware`.
**Example**:
```
$ ~/qmk_firmware/bin/qmk hello
Ψ Hello, World!
```
## Local CLI Limitations
There are some limitations to the local CLI compared to the global CLI:
* The local CLI does not support `qmk setup` or `qmk clone`
* The local CLI always operates on the same `qmk_firmware` tree, even if you have multiple repositories cloned.
* The local CLI does not run in a virtualenv, so it's possible that dependencies will conflict
# CLI Commands
## `qmk cformat`
This command formats C code using clang-format. Run it with no arguments to format all core code, or pass filenames on the command line to run it on specific files.
**Usage**:
```
qmk cformat [file1] [file2] [...] [fileN]
```
## `qmk compile`
@@ -36,3 +94,83 @@ qmk compile <configuratorExport.json>
```
qmk compile -kb <keyboard_name> -km <keymap_name>
```
## `qmk config`
This command lets you configure the behavior of QMK. For the full `qmk config` documentation see [CLI Configuration](cli_configuration.md).
**Usage**:
```
qmk config [-ro] [config_token1] [config_token2] [...] [config_tokenN]
```
## `qmk docs`
This command starts a local HTTP server which you can use for browsing or improving the docs. Default port is 8936.
**Usage**:
```
qmk docs [-p PORT]
```
## `qmk doctor`
This command examines your environment and alerts you to potential build or flash problems.
**Usage**:
```
qmk doctor
```
## `qmk json-keymap`
Creates a keymap.c from a QMK Configurator export.
**Usage**:
```
qmk json-keymap [-o OUTPUT] filename
```
## `qmk list-keyboards`
This command lists all the keyboards currently defined in `qmk_firmware`
**Usage**:
```
qmk list-keyboards
```
## `qmk new-keymap`
This command creates a new keymap based on a keyboard's existing default keymap.
**Usage**:
```
qmk new-keymap [-kb KEYBOARD] [-km KEYMAP]
```
## `qmk pyformat`
This command formats python code in `qmk_firmware`.
**Usage**:
```
qmk pyformat
```
## `qmk pytest`
This command runs the python test suite. If you make changes to python code you should ensure this runs successfully.
**Usage**:
```
qmk pytest
```

121
docs/cli_configuration.md Normal file
View File

@@ -0,0 +1,121 @@
# QMK CLI Configuration
This document explains how `qmk config` works.
# Introduction
Configuration for QMK CLI is a key/value system. Each key consists of a subcommand and an argument name separated by a period. This allows for a straightforward and direct translation between config keys and the arguments they set.
## Simple Example
As an example let's look at the command `qmk compile --keyboard clueboard/66/rev4 --keymap default`.
There are two command line arguments that could be read from configuration instead:
* `compile.keyboard`
* `compile.keymap`
Let's set these now:
```
$ qmk config compile.keyboard=clueboard/66/rev4 compile.keymap=default
compile.keyboard: None -> clueboard/66/rev4
compile.keymap: None -> default
Ψ Wrote configuration to '/Users/example/Library/Application Support/qmk/qmk.ini'
```
Now I can run `qmk compile` without specifying my keyboard and keymap each time.
## Setting User Defaults
Sometimes you want to share a setting between multiple commands. For example, multiple commands take the argument `--keyboard`. Rather than setting this value for every command you can set a user value which will be used by any command that takes that argument.
Example:
```
$ qmk config user.keyboard=clueboard/66/rev4 user.keymap=default
user.keyboard: None -> clueboard/66/rev4
user.keymap: None -> default
Ψ Wrote configuration to '/Users/example/Library/Application Support/qmk/qmk.ini'
```
# CLI Documentation (`qmk config`)
The `qmk config` command is used to interact with the underlying configuration. When run with no argument it shows the current configuration. When arguments are supplied they are assumed to be configuration tokens, which are strings containing no spaces with the following form:
<subcommand|general|default>[.<key>][=<value>]
## Setting Configuration Values
You can set configuration values by putting an equal sign (=) into your config key. The key must always be the full `<section>.<key>` form.
Example:
```
$ qmk config default.keymap=default
default.keymap: None -> default
Ψ Wrote configuration to '/Users/example/Library/Application Support/qmk/qmk.ini'
```
## Reading Configuration Values
You can read configuration values for the entire configuration, a single key, or for an entire section. You can also specify multiple keys to display more than one value.
### Entire Configuration Example
qmk config
### Whole Section Example
qmk config compile
### Single Key Example
qmk config compile.keyboard
### Multiple Keys Example
qmk config user compile.keyboard compile.keymap
## Deleting Configuration Values
You can delete a configuration value by setting it to the special string `None`.
Example:
```
$ qmk config default.keymap=None
default.keymap: default -> None
Ψ Wrote configuration to '/Users/example/Library/Application Support/qmk/qmk.ini'
```
## Multiple Operations
You can combine multiple read and write operations into a single command. They will be executed and displayed in order:
```
$ qmk config compile default.keymap=default compile.keymap=None
compile.keymap=skully
compile.keyboard=clueboard/66_hotswap/gen1
default.keymap: None -> default
compile.keymap: skully -> None
Ψ Wrote configuration to '/Users/example/Library/Application Support/qmk/qmk.ini'
```
# User Configuration Options
| Key | Default Value | Description |
|-----|---------------|-------------|
| user.keyboard | None | The keyboard path (Example: `clueboard/66/rev4`) |
| user.keymap | None | The keymap name (Example: `default`) |
| user.name | None | The user's github username. |
# All Configuration Options
| Key | Default Value | Description |
|-----|---------------|-------------|
| compile.keyboard | None | The keyboard path (Example: `clueboard/66/rev4`) |
| compile.keymap | None | The keymap name (Example: `default`) |
| hello.name | None | The name to greet when run. |
| new_keyboard.keyboard | None | The keyboard path (Example: `clueboard/66/rev4`) |
| new_keyboard.keymap | None | The keymap name (Example: `default`) |

175
docs/cli_development.md Normal file
View File

@@ -0,0 +1,175 @@
# QMK CLI Development
This document has useful information for developers wishing to write new `qmk` subcommands.
# Overview
The QMK CLI operates using the subcommand pattern made famous by git. The main `qmk` script is simply there to setup the environment and pick the correct entrypoint to run. Each subcommand is a self-contained module with an entrypoint (decorated by `@cli.subcommand()`) that performs some action and returns a shell returncode, or None.
# Subcommands
[MILC](https://github.com/clueboard/milc) is the CLI framework `qmk` uses to handle argument parsing, configuration, logging, and many other features. It lets you focus on writing your tool without wasting your time writing glue code.
Subcommands in the local CLI are always found in `qmk_firmware/lib/python/qmk/cli`.
Let's start by looking at an example subcommand. This is `lib/python/qmk/cli/hello.py`:
```python
"""QMK Python Hello World
This is an example QMK CLI script.
"""
from milc import cli
@cli.argument('-n', '--name', default='World', help='Name to greet.')
@cli.subcommand('QMK Hello World.')
def hello(cli):
"""Log a friendly greeting.
"""
cli.log.info('Hello, %s!', cli.config.hello.name)
```
First we import the `cli` object from `milc`. This is how we interact with the user and control the script's behavior. We use `@cli.argument()` to define a command line flag, `--name`. This also creates a configuration variable named `hello.name` (and the corresponding `user.name`) which the user can set so they don't have to specify the argument. The `cli.subcommand()` decorator designates this function as a subcommand. The name of the subcommand will be taken from the name of the function.
Once inside our function we find a typical "Hello, World!" program. We use `cli.log` to access the underlying [Logger Object](https://docs.python.org/3.5/library/logging.html#logger-objects), whose behavior is user controllable. We also access the value for name supplied by the user as `cli.config.hello.name`. The value for `cli.config.hello.name` will be determined by looking at the `--name` argument supplied by the user, if not provided it will use the value in the `qmk.ini` config file, and if neither of those is provided it will fall back to the default supplied in the `cli.argument()` decorator.
# User Interaction
MILC and the QMK CLI have several nice tools for interacting with the user. Using these standard tools will allow you to colorize your text for easier interactions, and allow the user to control when and how that information is displayed and stored.
## Printing Text
There are two main methods for outputting text in a subcommand- `cli.log` and `cli.echo()`. They operate in similar ways but you should prefer to use `cli.log.info()` for most general purpose printing.
You can use special tokens to colorize your text, to make it easier to understand the output of your program. See [Colorizing Text](#colorizing-text) below.
Both of these methods support built-in string formatting using python's [printf style string format operations](https://docs.python.org/3.5/library/stdtypes.html#old-string-formatting). You can use tokens such as `%s` and `%d` within your text strings then pass the values as arguments. See our Hello, World program above for an example.
You should never use the format operator (`%`) directly, always pass values as arguments.
### Logging (`cli.log`)
The `cli.log` object gives you access to a [Logger Object](https://docs.python.org/3.5/library/logging.html#logger-objects). We have configured our log output to show the user a nice emoji for each log level (or the log level name if their terminal does not support unicode.) This way the user can tell at a glance which messages are most important when something goes wrong.
The default log level is `INFO`. If the user runs `qmk -v <subcommand>` the default log level will be set to `DEBUG`.
| Function | Emoji |
|----------|-------|
| cli.log.critical | `{bg_red}{fg_white}¬_¬{style_reset_all}` |
| cli.log.error | `{fg_red}☒{style_reset_all}` |
| cli.log.warning | `{fg_yellow}⚠{style_reset_all}` |
| cli.log.info | `{fg_blue}Ψ{style_reset_all}` |
| cli.log.debug | `{fg_cyan}☐{style_reset_all}` |
| cli.log.notset | `{style_reset_all}¯\\_(o_o)_/¯` |
### Printing (`cli.echo`)
Sometimes you simply need to print text outside of the log system. This is appropriate if you are outputting fixed data or writing out something that should never be logged. Most of the time you should prefer `cli.log.info()` over `cli.echo`.
### Colorizing Text
You can colorize the output of your text by including color tokens within text. Use color to highlight, not to convey information. Remember that the user can disable color, and your subcommand should still be usable if they do.
You should generally avoid setting the background color, unless it's integral to what you are doing. Remember that users have a lot of preferences when it comes to their terminal color, so you should pick colors that work well against both black and white backgrounds.
Colors prefixed with 'fg' will affect the foreground (text) color. Colors prefixed with 'bg' will affect the background color.
| Color | Background | Extended Background | Foreground | Extended Foreground|
|-------|------------|---------------------|------------|--------------------|
| Black | {bg_black} | {bg_lightblack_ex} | {fg_black} | {fg_lightblack_ex} |
| Blue | {bg_blue} | {bg_lightblue_ex} | {fg_blue} | {fg_lightblue_ex} |
| Cyan | {bg_cyan} | {bg_lightcyan_ex} | {fg_cyan} | {fg_lightcyan_ex} |
| Green | {bg_green} | {bg_lightgreen_ex} | {fg_green} | {fg_lightgreen_ex} |
| Magenta | {bg_magenta} | {bg_lightmagenta_ex} | {fg_magenta} | {fg_lightmagenta_ex} |
| Red | {bg_red} | {bg_lightred_ex} | {fg_red} | {fg_lightred_ex} |
| White | {bg_white} | {bg_lightwhite_ex} | {fg_white} | {fg_lightwhite_ex} |
| Yellow | {bg_yellow} | {bg_lightyellow_ex} | {fg_yellow} | {fg_lightyellow_ex} |
There are also control sequences that can be used to change the behavior of
ANSI output:
| Control Sequences | Description |
|-------------------|-------------|
| {style_bright} | Make the text brighter |
| {style_dim} | Make the text dimmer |
| {style_normal} | Make the text normal (neither `{style_bright}` nor `{style_dim}`) |
| {style_reset_all} | Reset all text attributes to default. (This is automatically added to the end of every string.) |
| {bg_reset} | Reset the background color to the user's default |
| {fg_reset} | Reset the foreground color to the user's default |
# Arguments and Configuration
QMK handles the details of argument parsing and configuration for you. When you add a new argument it is automatically incorporated into the config tree based on your subcommand's name and the long name of the argument. You can access this configuration in `cli.config`, using either attribute-style access (`cli.config.<subcommand>.<argument>`) or dictionary-style access (`cli.config['<subcommand>']['<argument>']`).
Under the hood QMK uses [ConfigParser](https://docs.python.org/3/library/configparser.html) to store configurations. This gives us an easy and straightforward way to represent the configuration in a human-editable way. We have wrapped access to this configuration to provide some nicities that ConfigParser does not normally have.
## Reading Configuration Values
You can interact with `cli.config` in all the ways you'd normally expect. For example the `qmk compile` command gets the keyboard name from `cli.config.compile.keyboard`. It does not need to know whether that value came from the command line, an environment variable, or the configuration file.
Iteration is also supported:
```
for section in cli.config:
for key in cli.config[section]:
cli.log.info('%s.%s: %s', section, key, cli.config[section][key])
```
## Setting Configuration Values
You can set configuration values in the usual ways.
Dictionary style:
```
cli.config['<section>']['<key>'] = <value>
```
Attribute style:
```
cli.config.<section>.<key> = <value>
```
## Deleting Configuration Values
You can delete configuration values in the usual ways.
Dictionary style:
```
del(cli.config['<section>']['<key>'])
```
Attribute style:
```
del(cli.config.<section>.<key>)
```
## Writing The Configuration File
The configuration is not written out when it is changed. Most commands do not need to do this. We prefer to have the user change their configuration deliberitely using `qmk config`.
You can use `cli.save_config()` to write out the configuration.
## Excluding Arguments From Configuration
Some arguments should not be propagated to the configuration file. These can be excluded by adding `arg_only=True` when creating the argument.
Example:
```
@cli.argument('-o', '--output', arg_only=True, help='File to write to')
@cli.argument('filename', arg_only=True, help='Configurator JSON file')
@cli.subcommand('Create a keymap.c from a QMK Configurator export.')
def json_keymap(cli):
pass
```
You will only be able to access these arguments using `cli.args`. For example:
```
cli.log.info('Reading from %s and writing to %s', cli.args.filename, cli.args.output)
```

View File

@@ -31,17 +31,17 @@ Here is an example for easy reference:
```c
/* Enums for foo */
enum foo_state {
FOO_BAR,
FOO_BAZ,
FOO_BAR,
FOO_BAZ,
};
/* Returns a value */
int foo(void) {
if (some_condition) {
return FOO_BAR;
} else {
return -1;
}
if (some_condition) {
return FOO_BAR;
} else {
return -1;
}
}
```

View File

@@ -91,8 +91,10 @@ This is a C header file that is one of the first things included, and will persi
* tries to keep switch state consistent with keyboard LED state
* `#define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT)`
* key combination that allows the use of magic commands (useful for debugging)
* `#define USB_MAX_POWER_CONSUMPTION`
* `#define USB_MAX_POWER_CONSUMPTION 500`
* sets the maximum power (in mA) over USB for the device (default: 500)
* `#define USB_POLLING_INTERVAL_MS 10`
* sets the USB polling rate in milliseconds for the keyboard, mouse, and shared (NKRO/media keys) interfaces
* `#define F_SCL 100000L`
* sets the I2C clock rate speed for keyboards using I2C. The default is `400000L`, except for keyboards using `split_common`, where the default is `100000L`.
@@ -222,6 +224,7 @@ There are a few different ways to set handedness for split keyboards (listed in
2. Set `EE_HANDS` and flash `eeprom-lefthand.eep`/`eeprom-righthand.eep` to each half
* For boards with DFU bootloader you can use `:dfu-split-left`/`:dfu-split-right` to flash these EEPROM files
* For boards with Caterina bootloader (like stock Pro Micros), use `:avrdude-split-left`/`:avrdude-split-right`
* For boards with ARM DFU bootloader (like Proton C), use `:dfu-util-split-left`/`:dfu-util-split-right`
3. Set `MASTER_RIGHT`: Half that is plugged into the USB port is determined to be the master and right half (inverse of the default)
4. Default: The side that is plugged into the USB port is the master half and is assumed to be the left half. The slave side is the right half
@@ -264,6 +267,14 @@ There are a few different ways to set handedness for split keyboards (listed in
* 4: about 26kbps
* 5: about 20kbps
* `#define SPLIT_USB_DETECT`
* Detect (with timeout) USB connection when delegating master/slave
* Default behavior for ARM
* Required for AVR Teensy
* `#define SPLIT_USB_TIMEOUT 2500`
* Maximum timeout when detecting master/slave when using `SPLIT_USB_DETECT`
# The `rules.mk` File
This is a [make](https://www.gnu.org/software/make/manual/make.html) file that is included by the top-level `Makefile`. It is used to set some information about the MCU that we will be compiling for as well as enabling and disabling certain features.
@@ -299,13 +310,13 @@ This is a [make](https://www.gnu.org/software/make/manual/make.html) file that i
Use these to enable or disable building certain features. The more you have enabled the bigger your firmware will be, and you run the risk of building a firmware too large for your MCU.
* `BOOTMAGIC_ENABLE`
* Virtual DIP switch configuration(+1000)
* Virtual DIP switch configuration
* `MOUSEKEY_ENABLE`
* Mouse keys(+4700)
* Mouse keys
* `EXTRAKEY_ENABLE`
* Audio control and System control(+450)
* Audio control and System control
* `CONSOLE_ENABLE`
* Console for debug(+400)
* Console for debug
* `COMMAND_ENABLE`
* Commands for debug and configuration
* `COMBO_ENABLE`
@@ -337,7 +348,7 @@ Use these to enable or disable building certain features. The more you have enab
* `NO_USB_STARTUP_CHECK`
* Disables usb suspend check after keyboard startup. Usually the keyboard waits for the host to wake it up before any tasks are performed. This is useful for split keyboards as one half will not get a wakeup call but must send commands to the master.
* `LINK_TIME_OPTIMIZATION_ENABLE`
= Enables Link Time Optimization (`LTO`) when compiling the keyboard. This makes the process take longer, but can significantly reduce the compiled size (and since the firmware is small, the added time is not noticable). However, this will automatically disable the old Macros and Functions features automatically, as these break when `LTO` is enabled. It does this by automatically defining `NO_ACTION_MACRO` and `NO_ACTION_FUNCTION`
= Enables Link Time Optimization (`LTO`) when compiling the keyboard. This makes the process take longer, but can significantly reduce the compiled size (and since the firmware is small, the added time is not noticable). However, this will automatically disable the old Macros and Functions features automatically, as these break when `LTO` is enabled. It does this by automatically defining `NO_ACTION_MACRO` and `NO_ACTION_FUNCTION`
## USB Endpoint Limitations

View File

@@ -63,11 +63,11 @@ Most of our style is pretty easy to pick up on. If you are familiar with either
We have a few different types of changes in QMK, each requiring a different level of rigor. We'd like you to keep the following guidelines in mind no matter what type of change you're making.
* Separate PR's into logical units. For example, do not submit one PR covering two separate features, instead submit a separate PR for each feature.
* Separate PRs into logical units. For example, do not submit one PR covering two separate features, instead submit a separate PR for each feature.
* Check for unnecessary whitespace with `git diff --check` before committing.
* Make sure your code change actually compiles.
* Keymaps: Make sure that `make keyboard:your_new_keymap` does not return an error
* Keyboards: Make sure that `make keyboard:all` does not return any errors
* Keymaps: Make sure that `make keyboard:your_new_keymap` does not return any errors.
* Keyboards: Make sure that `make keyboard:all` does not return any errors.
* Core: Make sure that `make all` does not return any errors.
* Make sure commit messages are understandable on their own. You should put a short description (no more than 70 characters) on the first line, the second line should be empty, and on the 3rd and later lines you should describe your commit in detail, if required. Example:
@@ -79,6 +79,8 @@ The kerpleplork was intermittently failing with error code 23. The root cause wa
Limited experimentation on the devices I have available shows that 7 is high enough to avoid confusing the kerpleplork, but I'd like to get some feedback from people with ARM devices to be sure.
```
!> **IMPORTANT:** If you would like to contribute a bugfix or improvement to user code, such as non-default keymaps, userspace and layouts, be sure to tag the original submitter of the code in your PR. Many users, regardless of skill level with Git and GitHub, may be confused or frustrated at their code being modified without their knowledge.
## Documentation
Documentation is one of the easiest ways to get started contributing to QMK. Finding places where the documentation is wrong or incomplete and fixing those is easy! We also very badly need someone to edit our documentation, so if you have editing skills but aren't sure where or how to jump in please [reach out for help](#where-can-i-go-for-help)!

169
docs/de/cli.md Normal file
View File

@@ -0,0 +1,169 @@
# QMK CLI (Kommandozeile)
Diese Seite beschreibt die Einrichtung und den Umgang mit dem QMK CLI (Kommandozeile).
# Übersicht
Die QMK CLI vereinfacht das Zusammenbauen und Arbeiten mit QMK Tastaturen. Hier findest Du wichtige Befehle, um beispielsweise das Herunterladen und Kompilieren der QMK Firmware oder das Erstellen von Tastaturbelegungen (und vieles mehr) zu erleichtern.
* [Globale CLI](#globale-cli)
* [Lokale CLI](#lokale-cli)
* [CLI-Befehle](#cli-befehle)
# System-Anforderungen
Die CLI benötigt Python 3.5 oder höher. Außerdem ist es nötig, die Packages laut [`requirements.txt`](https://github.com/qmk/qmk_firmware/blob/master/requirements.txt) zu installieren.
# Globale CLI
QMK bietet ein installierbares CLI, das Du zum Einrichten Deiner QMK Build-Umgebung verwenden kannst. Dieses ermöglicht Dir das Arbeiten mit QMK, und erleichtert das Arbeiten mit mehreren Kopien der `qmk_firmware`. Wir empfehlen, dieses CLI zu installieren und regelmäßig upzudaten.
## Installation mit Homebrew (macOS, manche Linux)
Solltest Du [Homebrew](https://brew.sh) installiert haben, kannst Du QMK per tap installieren:
```
brew tap qmk/qmk
brew install qmk
export QMK_HOME='~/qmk_firmware' # Optional: setzt den Installationsort für `qmk_firmware`
qmk setup # Dies klont `qmk/qmk_firmware` und richtet optional auch Deine Build-Umgebung ein
```
## Installation mit easy_install oder pip
Falls Du kein Homebrew hast, kannst Du QMK auch manuell installieren. Zuerst musst Du sicherstellen, dass Python 3.5 (oder höher) und pip installiert ist. Dann installiere QMK mit diesem Befehl:
```
pip3 install qmk
export QMK_HOME='~/qmk_firmware' # Optional: setzt den Installationsort für `qmk_firmware`
qmk setup # Dies klont `qmk/qmk_firmware` und richtet optional auch Deine Build-Umgebung ein
```
## Installation mit git Repo
`git clone https://github.com/qmk/qmk_cli.git && cd qmk_cli && python3 setup.py install`
## Packaging für andere Betriebssysteme
Wir suchen nach Freiwilligen, die ein `qmk`-Package für weitere Betriebssysteme erstellen und pflegen. Falls Du ein Package für Dein OS erstellen möchtest, bitte befolge diese Richtlinien:
* Verwende "Best Practices" für Dein OS, sollten sie mit diesen Richtlinien in Konflikt stehen.
* Dokumentiere den Grund in einem Kommentar, wenn Du abweichen musstest.
* Installiere mit einem [virtualenv](https://virtualenv.pypa.io/en/latest/).
* Weise den User an, die Umgebungs-Variable `QMK_HOME` zu setzen, um die Firmware-Quelle anders einzustellen als `~/qmk_firmware`.
# Lokale CLI
Wenn Du die globale CLI nicht verwenden möchtest, beinhaltet `qmk_firmware` auch eine lokale CLI. Du kannst sie hier finden: `qmk_firmware/bin/qmk`. Du kannst den `qmk`-Befehl aus irgendeinem Datei-Verzeichnis ausführen und es wird immer auf dieser Kopie von `qmk_firmware` arbeiten.
**Beispiel**:
```
$ ~/qmk_firmware/bin/qmk hello
Ψ Hello, World!
```
## Einschränkungen der lokalen CLI
Hier ein Vergleich mit der globalen CLI:
* Die lokale CLI unterstützt kein `qmk setup` oder `qmk clone`.
* Die lokale CLI arbeitet immer innerhalb der selben `qmk_firmware`-Verzeichnisstruktur, auch wenn Du mehrere Repositories geklont hast.
* Die lokale CLI läuft nicht in einer virtualenv. Daher ist es möglich, dass Abhängigkeiten (dependencies) miteinander in Konflikt kommen/stehen.
# CLI-Befehle
## `qmk compile`
Dieser Befehl erlaubt es dir, die Firmware - aus egal welchem Datei-Verzeichnis - zu compilen. Du kannst JSON-Exporte von <https://config.qmk.fm> oder Keymaps in der Repo kompilen.
**Anwendung für Konfigurations-Exports**:
```
qmk compile <configuratorExport.json>
```
**Anwendung für Keymaps**:
```
qmk compile -kb <keyboard_name> -km <keymap_name>
```
## `qmk cformat`
Dieser Befehl formatiert C-Code im clang-Format. Benutze ihn ohne Argumente, um den core-Code zu formatieren, oder benutze Namen von Dateien in der CLI, um den Befehl auf bestimmte Dateien anzuwenden.
**Anwendung**:
```
qmk cformat [file1] [file2] [...] [fileN]
```
## `qmk config`
Dieser Befehl konfiguriert das Verhalten von QMK. Für die volle `qmk config`-Dokumentation gehe zu [CLI-Konfiguration](cli_configuration.md).
**Anwendung**:
```
qmk config [-ro] [config_token1] [config_token2] [...] [config_tokenN]
```
## `qmk docs`
Dieser Befehl startet einen lokalen HTTP-Server, den Du zum Browsen oder Verbessern der Dokumentation verwenden kannst. Der Default-Port ist 8936.
**Anwendung**:
```
qmk docs [-p PORT]
```
## `qmk doctor`
Dieser Befehl untersucht Deine Umgebung und warnt Dich vor potentiellen Build- oder Flash-Problemen.
**Anwendung**:
```
qmk doctor
```
## `qmk list-keyboards`
Dieser Befehl listet alle zurzeit in `qmk_firmware` definierten Tastaturen/Keyboards auf.
**Anwendung**:
```
qmk list-keyboards
```
## `qmk new-keymap`
Dieser Befehl erstellt eine neue Keymap basierend auf einer existierenden Standard-Keymap eines bestimmten Keyboards.
**Anwendung**:
```
qmk new-keymap [-kb KEYBOARD] [-km KEYMAP]
```
## `qmk pyformat`
Dieser Befehl formatiert Python-Code in `qmk_firmware`.
**Anwendung**:
```
qmk pyformat
```
## `qmk pytest`
Dieser Befehl führt die Python Test Suite aus. Wenn Du Python-Code veränderst, solltest Du sicherstellen, dass der Test erfolgreich ausgeführt wurde.
**Anwendung**:
```
qmk pytest
```

View File

@@ -2,16 +2,20 @@
QMK presents itself to the host as a regular HID keyboard device, and as such requires no special drivers. However, in order to flash your keyboard on Windows, the bootloader device that appears when you reset the board often *does*.
There are two notable exceptions: the Caterina bootloader, usually seen on Pro Micros, and the Halfkay bootloader shipped with PJRC Teensys, appear as a serial port and a generic HID device respectively, and so do not require a driver.
There are two notable exceptions: the Caterina bootloader, usually seen on Pro Micros, and the HalfKay bootloader shipped with PJRC Teensys, appear as a serial port and a generic HID device respectively, and so do not require a driver.
We recommend the use of the [Zadig](https://zadig.akeo.ie/) utility. If you have set up the development environment with Msys2 or WSL, the `qmk_install.sh` script will have asked if you want it to install the drivers for you.
We recommend the use of the [Zadig](https://zadig.akeo.ie/) utility. If you have set up the development environment with MSYS2 or WSL, the `qmk_install.sh` script will have asked if you want it to install the drivers for you.
## Installation
Place your keyboard into the bootloader mode, either by hitting the `RESET` keycode (which may be on a different layer), or by pressing the reset switch usually located on the underside of the board. If your keyboard has neither, try holding Escape, or Space+`B`, as you plug it in (see the [Bootmagic](feature_bootmagic.md) docs for more details).
Some keyboards may have specific instructions for entering the bootloader, for example the [Bootmagic Lite](feature_bootmagic.md#bootmagic-lite) key (Escape) might be on a different key, such as Left Control. Refer to the board's README if you are unsure.
Put your keyboard into bootloader mode, either by hitting the `RESET` keycode (which may be on a different layer), or by pressing the reset switch that's usually located on the underside of the board. If your keyboard has neither, try holding Escape or Space+`B` as you plug it in (see the [Bootmagic](feature_bootmagic.md) docs for more details). Some boards use [Command](feature_command.md) instead of Bootmagic; in this case, you can enter bootloader mode by hitting Left Shift+Right Shift+`B` or Left Shift+Right Shift+Escape at any point while the keyboard is plugged in.
Some keyboards may have specific instructions for entering the bootloader. For example, the [Bootmagic Lite](feature_bootmagic.md#bootmagic-lite) key (default: Escape) might be on a different key, e.g. Left Control; or the magic combination for Command (default: Left Shift+Right Shift) might require you to hold something else, e.g. Left Control+Right Control. Refer to the board's README file if you are unsure.
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.
Zadig will automatically detect the bootloader device. You may sometimes need to check **Options → List All Devices**.
Zadig will automatically detect the bootloader device. You may sometimes need to check **Options -> List All Devices**.
- 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`.
@@ -19,7 +23,7 @@ Zadig will automatically detect the bootloader device. You may sometimes need to
!> 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.
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. For flashing a USBaspLoader device via command line with msys2, the `libusbk` driver is recommended, otherwise `libusb-win32` will work fine if you are using QMK Toolbox for flashing.
![Zadig with a bootloader driver correctly installed](https://i.imgur.com/b8VgXzx.png)
@@ -27,7 +31,7 @@ Finally, unplug and replug the keyboard to make sure the new driver has been loa
## Recovering from Installation to Wrong Device
If you find that you can no longer type with the keyboard, you may have installed the driver onto the keyboard itself instead of the bootloader. You can easily confirm this in Zadig - a healthy keyboard has the `HidUsb` driver installed on all of its interfaces:
If you find that you can no longer type with the keyboard, you may have accidentally replaced the driver for the keyboard itself instead of for the bootloader. This can happen when the keyboard is not in the bootloader mode. You can easily confirm this in Zadig - a healthy keyboard has the `HidUsb` driver installed on all of its interfaces:
![A healthy keyboard as seen by Zadig](https://i.imgur.com/Hx0E5kC.png)
@@ -39,4 +43,6 @@ 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)
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!
?> A full reboot of your computer may sometimes be necessary at this point, to get Windows to pick up the new driver.

View File

@@ -4,10 +4,6 @@
[QMK](https://github.com/qmk), short for Quantum Mechanical Keyboard, is a group of people building tools for custom keyboards. We started with the [QMK firmware](https://github.com/qmk/qmk_firmware), a heavily modified fork of [TMK](https://github.com/tmk/tmk_keyboard).
### Why the Name Quantum?
<!-- FIXME -->
## What Differences Are There Between QMK and TMK?
TMK was originally designed and implemented by [Jun Wako](https://github.com/tmk). QMK started as [Jack Humbert](https://github.com/jackhumbert)'s fork of TMK for the Planck. After a while Jack's fork had diverged quite a bit from TMK, and in 2015 Jack decided to rename his fork to QMK.

View File

@@ -1,6 +1,8 @@
# Backlighting
Many keyboards support backlit keys by way of individual LEDs placed through or underneath the keyswitches. QMK is able to control the brightness of these LEDs by switching them on and off rapidly in a certain ratio, a technique known as *Pulse Width Modulation*, or PWM. By altering the duty cycle of the PWM signal, it creates the illusion of dimming.
Many keyboards support backlit keys by way of individual LEDs placed through or underneath the keyswitches. This feature is distinct from both the [RGB underglow](feature_rgblight.md) and [RGB matrix](feature_rgb_matrix.md) features as it usually allows for only a single colour per switch, though you can obviously install multiple different single coloured LEDs on a keyboard.
QMK is able to control the brightness of these LEDs by switching them on and off rapidly in a certain ratio, a technique known as *Pulse Width Modulation*, or PWM. By altering the duty cycle of the PWM signal, it creates the illusion of dimming.
The MCU can only supply so much current to its GPIO pins. Instead of powering the backlight directly from the MCU, the backlight pin is connected to a transistor or MOSFET that switches the power to the LEDs.
@@ -12,9 +14,8 @@ Most keyboards have backlighting enabled by default if they support it, but if i
BACKLIGHT_ENABLE = yes
```
You should then be able to use the keycodes below to change the backlight level.
## Keycodes
Once enabled the following keycodes below can be used to change the backlight level.
|Key |Description |
|---------|------------------------------------------|
@@ -26,22 +27,24 @@ You should then be able to use the keycodes below to change the backlight level.
|`BL_DEC` |Decrease the backlight level |
|`BL_BRTG`|Toggle backlight breathing |
## Caveats
## AVR driver
This feature is distinct from both the [RGB underglow](feature_rgblight.md) and [RGB matrix](feature_rgb_matrix.md) features as it usually allows for only a single colour per switch, though you can obviously use multiple different coloured LEDs on a keyboard.
### Caveats
Hardware PWM is supported according to the following table:
|Backlight Pin|AT90USB64/128|ATmega16/32U4|ATmega16/32U2|ATmega32A|
|-------------|-------------|-------------|-------------|---------|
|`B5` |Timer 1 |Timer 1 | | |
|`B6` |Timer 1 |Timer 1 | | |
|`B7` |Timer 1 |Timer 1 |Timer 1 | |
|`C4` |Timer 3 | | | |
|`C5` |Timer 3 | |Timer 1 | |
|`C6` |Timer 3 |Timer 3 |Timer 1 | |
|`D4` | | | |Timer 1 |
|`D5` | | | |Timer 1 |
|Backlight Pin|AT90USB64/128|ATmega16/32U4|ATmega16/32U2|ATmega32A|ATmega328P|
|-------------|-------------|-------------|-------------|---------|----------|
|`B1` | | | | |Timer 1 |
|`B2` | | | | |Timer 1 |
|`B5` |Timer 1 |Timer 1 | | | |
|`B6` |Timer 1 |Timer 1 | | | |
|`B7` |Timer 1 |Timer 1 |Timer 1 | | |
|`C4` |Timer 3 | | | | |
|`C5` |Timer 3 | |Timer 1 | | |
|`C6` |Timer 3 |Timer 3 |Timer 1 | | |
|`D4` | | | |Timer 1 | |
|`D5` | | | |Timer 1 | |
All other pins will use software PWM. If the [Audio](feature_audio.md) feature is disabled or only using one timer, the backlight PWM can be triggered by a hardware timer:
@@ -56,9 +59,9 @@ All other pins will use software PWM. If the [Audio](feature_audio.md) feature i
When both timers are in use for Audio, the backlight PWM will not use a hardware timer, but will instead be triggered during the matrix scan. In this case, breathing is not supported, and the backlight might flicker, because the PWM computation may not be called with enough timing precision.
## Configuration
### AVR Configuration
To change the behaviour of the backlighting, `#define` these in your `config.h`:
To change the behavior of the backlighting, `#define` these in your `config.h`:
|Define |Default |Description |
|---------------------|-------------|-------------------------------------------------------------------------------------------------------------|
@@ -70,14 +73,14 @@ To change the behaviour of the backlighting, `#define` these in your `config.h`:
|`BREATHING_PERIOD` |`6` |The length of one backlight "breath" in seconds |
|`BACKLIGHT_ON_STATE` |`0` |The state of the backlight pin when the backlight is "on" - `1` for high, `0` for low |
## Backlight On State
### Backlight On State
Most backlight circuits are driven by an N-channel MOSFET or NPN transistor. This means that to turn the transistor *on* and light the LEDs, you must drive the backlight pin, connected to the gate or base, *high*.
Sometimes, however, a P-channel MOSFET, or a PNP transistor is used. In this case, when the transistor is on, the pin is driven *low* instead.
This functionality is configured at the keyboard level with the `BACKLIGHT_ON_STATE` define.
## Multiple backlight pins
### Multiple backlight pins
Most keyboards have only one backlight pin which control all backlight LEDs (especially if the backlight is connected to an hardware PWM pin).
In software PWM, it is possible to define multiple backlight pins. All those pins will be turned on and off at the same time during the PWM duty cycle.
@@ -85,13 +88,13 @@ This feature allows to set for instance the Caps Lock LED (or any other controll
To activate multiple backlight pins, you need to add something like this to your user `config.h`:
~~~c
```c
#define BACKLIGHT_LED_COUNT 2
#undef BACKLIGHT_PIN
#define BACKLIGHT_PINS { F5, B2 }
~~~
```
## Hardware PWM Implementation
### Hardware PWM Implementation
When using the supported pins for backlighting, QMK will use a hardware timer configured to output a PWM signal. This timer will count up to `ICRx` (by default `0xFFFF`) before resetting to 0.
The desired brightness is calculated and stored in the `OCRxx` register. When the counter reaches this value, the backlight pin will go low, and is pulled high again when the counter resets.
@@ -100,7 +103,7 @@ In this way `OCRxx` essentially controls the duty cycle of the LEDs, and thus th
The breathing effect is achieved by registering an interrupt handler for `TIMER1_OVF_vect` that is called whenever the counter resets, roughly 244 times per second.
In this handler, the value of an incrementing counter is mapped onto a precomputed brightness curve. To turn off breathing, the interrupt handler is simply disabled, and the brightness reset to the level stored in EEPROM.
## Software PWM Implementation
### Software PWM Implementation
When `BACKLIGHT_PIN` is not set to a hardware backlight pin, QMK will use a hardware timer configured to trigger software interrupts. This time will count up to `ICRx` (by default `0xFFFF`) before resetting to 0.
When resetting to 0, the CPU will fire an OVF (overflow) interrupt that will turn the LEDs on, starting the duty cycle.
@@ -109,6 +112,29 @@ In this way `OCRxx` essentially controls the duty cycle of the LEDs, and thus th
The breathing effect is the same as in the hardware PWM implementation.
## ARM Driver
### Caveats
Currently only hardware PWM is supported, and does not provide automatic configuration.
?> STMF072 support is being investigated.
### ARM Configuration
To change the behavior of the backlighting, `#define` these in your `config.h`:
|Define |Default |Description |
|------------------------|-------------|-------------------------------------------------------------------------------------------------------------|
|`BACKLIGHT_PIN` |`B7` |The pin that controls the LEDs. Unless you are designing your own keyboard, you shouldn't need to change this|
|`BACKLIGHT_PWM_DRIVER` |`PWMD4` |The PWM driver to use, see ST datasheets for pin to PWM timer mapping. Unless you are designing your own keyboard, you shouldn't need to change this|
|`BACKLIGHT_PWM_CHANNEL` |`3` |The PWM channel to use, see ST datasheets for pin to PWM channel mapping. Unless you are designing your own keyboard, you shouldn't need to change this|
|`BACKLIGHT_PAL_MODE` |`2` |The pin alternative function to use, see ST datasheets for pin AF mapping. Unless you are designing your own keyboard, you shouldn't need to change this|
|`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_BREATHING` |*Not defined*|Enable backlight breathing, if supported |
|`BREATHING_PERIOD` |`6` |The length of one backlight "breath" in seconds |
## Backlight Functions
|Function |Description |
@@ -119,7 +145,8 @@ The breathing effect is the same as in the hardware PWM implementation.
|`backlight_step()` |Cycle through backlight levels |
|`backlight_increase()` |Increase the backlight level |
|`backlight_decrease()` |Decrease the backlight level |
|`backlight_level(x)` |Sets the backlight level to specified level |
|`backlight_level(x)` |Sets the backlight level, from 0 to |
| |`BACKLIGHT_LEVELS` |
|`get_backlight_level()` |Return the current backlight level |
|`is_backlight_enabled()`|Return whether the backlight is currently on |

View File

@@ -2,18 +2,18 @@
## Bluetooth Known Supported Hardware
Currently Bluetooth support is limited to AVR based chips. For Bluetooth 2.1 Qmk has support for RN-42 HID Firmware and Bluefruit EZ Key the later of which is not produced anymore. For more recent BLE protocols currently only the Adafruit Bluefruit SPI friend is directly supported. BLE is needed to connect to iOS devices. Note iOS does not support Mouse Input.
Currently Bluetooth support is limited to AVR based chips. For Bluetooth 2.1, QMK has support for RN-42 modules and the Bluefruit EZ-Key, the latter of which is not produced anymore. For more recent BLE protocols, currently only the Adafruit Bluefruit SPI Friend is directly supported. BLE is needed to connect to iOS devices. Note iOS does not support mouse input.
|Board |Bluetooth Protocol |Connection Type |Rules.mk |Bluetooth Chip|
|Board |Bluetooth Protocol |Connection Type |rules.mk |Bluetooth Chip|
|----------------------------------------------------------------|----------------------------|----------------|---------------------------|--------------|
|[Adafruit EzKey HID]("https://www.adafruit.com/product/1535") |Bluetooth Classic | UART | BLUETOOTH = AdafruitEZKey | |
|Rover Networks RN-42 (Sparkfun Bluesmirf) |Bluetooth Classic | UART | BLUETOOTH = RN42 | RN-42 |
|[Bluefruit LE SPI Friend](https://www.adafruit.com/product/2633)|Bluetooth Low Energy | SPI | BLUETOOTH = AdafruitBLE | nRF5182 |
|[Adafruit EZ-Key HID](https://www.adafruit.com/product/1535) |Bluetooth Classic | UART |`BLUETOOTH = AdafruitEZKey` | |
|Roving Networks RN-42 (Sparkfun Bluesmirf) |Bluetooth Classic | UART |`BLUETOOTH = RN42` | RN-42 |
|[Bluefruit LE SPI Friend](https://www.adafruit.com/product/2633)|Bluetooth Low Energy | SPI |`BLUETOOTH = AdafruitBLE` | nRF51822 |
Not Supported Yet but possible:
* [Bluefruit LE UART Friend](https://www.adafruit.com/product/2479). [Possible tmk implementation found in](https://github.com/tmk/tmk_keyboard/issues/514)
* HC-05 boards flashed with RN-42 firmware. They apparently both use the CSR BC417 Chip. Flashing it with RN-42 firmware gives it HID capability.
* [Sparkfun Bluetooth mate](https://www.sparkfun.com/products/14839)
* Sparkfun Bluetooth Mate
* HM-13 based boards
### Adafruit BLE SPI Friend

View File

@@ -34,6 +34,8 @@ Hold down the Bootmagic key (Space by default) and the desired hotkey while plug
|`X` |Toggle key matrix debugging |
|`K` |Toggle keyboard debugging |
|`M` |Toggle mouse debugging |
|`L` |Set "Left Hand" for EE_HANDS handedness |
|`R` |Set "Right Hand" for EE_HANDS handedness |
|Backspace |Clear the EEPROM |
|Caps Lock |Toggle treating Caps Lock as Left Control |
|Left Control |Toggle swapping Caps Lock and Left Control |
@@ -83,6 +85,8 @@ Hold down the Bootmagic key (Space by default) and the desired hotkey while plug
|`MAGIC_UNSWAP_LCTL_LGUI` | |Unswap Left Control and Left GUI |
|`MAGIC_SWAP_RCTL_RGUI` | |Swap Right Control and Right GUI |
|`MAGIC_UNSWAP_RCTL_RGUI` | |Unswap Right Control and Right GUI |
|`MAGIC_EE_HANDS_LEFT` | |Set "Left Hand" for EE_HANDS handedness |
|`MAGIC_EE_HANDS_RIGHT` | |Set "Right Hand" for EE_HANDS handedness |
## Configuration
@@ -98,6 +102,8 @@ If you would like to change the hotkey assignments for Bootmagic, `#define` thes
|`BOOTMAGIC_KEY_DEBUG_MATRIX` |`KC_X` |Toggle matrix debugging |
|`BOOTMAGIC_KEY_DEBUG_KEYBOARD` |`KC_K` |Toggle keyboard debugging |
|`BOOTMAGIC_KEY_DEBUG_MOUSE` |`KC_M` |Toggle mouse debugging |
|`BOOTMAGIC_KEY_EE_HANDS_LEFT` |`KC_L` |Set "Left Hand" for EE_HANDS handedness |
|`BOOTMAGIC_KEY_EE_HANDS_RIGHT` |`KC_R` |Set "Right Hand" for EE_HANDS handedness |
|`BOOTMAGIC_KEY_SWAP_CONTROL_CAPSLOCK` |`KC_LCTRL` |Swap Left Control and Caps Lock |
|`BOOTMAGIC_KEY_CAPSLOCK_TO_CONTROL` |`KC_CAPSLOCK`|Toggle treating Caps Lock as Left Control |
|`BOOTMAGIC_KEY_SWAP_LALT_LGUI` |`KC_LALT` |Toggle swapping Left Alt and Left GUI (for macOS) |

View File

@@ -0,0 +1,90 @@
# DIP Switches
DIP switches are supported by adding this to your `rules.mk`:
DIP_SWITCH_ENABLE = yes
and this to your `config.h`:
```c
#define DIP_SWITCH_PINS { B14, A15, A10, B9 }
```
## Callbacks
The callback functions can be inserted into your `<keyboard>.c`:
```c
void dip_switch_update_kb(uint8_t index, bool active) {
dip_switch_update_user(index, active);
}
```
or `keymap.c`:
```c
void dip_switch_update_user(uint8_t index, bool active) {
switch (index) {
case 0:
if(active) { audio_on(); } else { audio_off(); }
break;
case 1:
if(active) { clicky_on(); } else { clicky_off(); }
break;
case 2:
if(active) { music_on(); } else { music_off(); }
break;
case 3:
if (active) {
#ifdef AUDIO_ENABLE
PLAY_SONG(plover_song);
#endif
layer_on(_PLOVER);
} else {
#ifdef AUDIO_ENABLE
PLAY_SONG(plover_gb_song);
#endif
layer_off(_PLOVER);
}
break;
}
}
```
Additionally, we support bit mask functions which allow for more complex handling.
```c
void dip_switch_update_mask_kb(uint32_t state) {
dip_switch_update_mask_user(state);
}
```
or `keymap.c`:
```c
void dip_switch_update_mask_user(uint32_t state) {
if (state & (1UL<<0) && state & (1UL<<1)) {
layer_on(_ADJUST); // C on esc
} else {
layer_off(_ADJUST);
}
if (state & (1UL<<0)) {
layer_on(_TEST_A); // A on ESC
} else {
layer_off(_TEST_A);
}
if (state & (1UL<<1)) {
layer_on(_TEST_B); // B on esc
} else {
layer_off(_TEST_B);
}
}
```
## Hardware
One side of the DIP switch should be wired directly to the pin on the MCU, and the other side to ground. It should not matter which side is connected to which, as it should be functionally the same.

View File

@@ -29,6 +29,9 @@ Not all keycodes below will work depending on which haptic mechanism you have ch
|`HPT_BUZ` | Toggle solenoid buzz on/off |
|`HPT_MODI` | Go to next DRV2605L waveform |
|`HPT_MODD` | Go to previous DRV2605L waveform |
|`HPT_CONT` | Toggle continuous haptic mode on/off |
|`HPT_CONI` | Increase DRV2605L continous haptic strength |
|`HPT_COND` | Decrease DRV2605L continous haptic strength |
|`HPT_DWLI` | Increase Solenoid dwell time |
|`HPT_DWLD` | Decrease Solenoid dwell time |
@@ -145,3 +148,7 @@ If haptic feedback is enabled, the keyboard will vibrate to a specific sqeuence
#define DRV_MODE_DEFAULT *sequence name or number*
```
This will set what sequence HPT_RST will set as the active mode. If not defined, mode will be set to 1 when HPT_RST is pressed.
### DRV2605L Continuous Haptic Mode
This mode sets continuous haptic feedback with the option to increase or decrease strength.

View File

@@ -2,11 +2,12 @@
This is an integration of Peter Fleury's LCD library. This page will explain the basics. [For in depth documentation visit his page.](http://homepage.hispeed.ch/peterfleury/doxygen/avr-gcc-libraries/group__pfleury__lcd.html)
You can enable support for HD44780 Displays by setting the `HD44780_ENABLE` flag in your keyboards `rules.mk` to yes. This will use about 400 KB of extra space.
You can enable support for HD44780 Displays by setting the `HD44780_ENABLE` flag in your keyboards `rules.mk` to yes.
## Configuration
You will need to configure the pins used by your display and its number of lines and collumn in your keyboards `config.h`.
You will need to configure the pins used by your display, and its number of lines and columns in your keyboard's `config.h`.
Uncomment the section labled HD44780 and change the parameters as needed.
````
@@ -25,7 +26,7 @@ Uncomment the section labled HD44780 and change the parameters as needed.
#define LCD_DATA3_PORT LCD_PORT //< port for 4bit data bit 3
#define LCD_DATA0_PIN 4 //< pin for 4bit data bit 0
#define LCD_DATA1_PIN 5 //< pin for 4bit data bit 1
#define LCD_DATA2_PIN 6 //< pin for 4bit data bit 2
#define LCD_DATA2_PIN 6 //< pin for 4bit data bit 2
#define LCD_DATA3_PIN 7 //< pin for 4bit data bit 3
#define LCD_RS_PORT LCD_PORT //< port for RS line
#define LCD_RS_PIN 3 //< pin for RS line
@@ -38,14 +39,14 @@ Uncomment the section labled HD44780 and change the parameters as needed.
Should you need to configure other properties you can copy them from `quantum/hd44780.h` and set them in your `config.h`
## Usage
## Usage
To initialize your display call lcd_init() with one of these parameters:
To initialize your display, call `lcd_init()` with one of these parameters:
````
LCD_DISP_OFF : display off
LCD_DISP_ON : display on, cursor off
LCD_DISP_ON_CURSOR : display on, cursor on
LCD_DISP_ON_CURSOR_BLINK : display on, cursor on flashing
LCD_DISP_ON_CURSOR_BLINK : display on, cursor on flashing
````
This is best done in your keyboards `matrix_init_kb` or your keymaps `matrix_init_user`.
It is advised to clear the display before use.
@@ -53,4 +54,4 @@ To do so call `lcd_clrsrc()`.
To now print something to your Display you first call `lcd_gotoxy(column, line)`. To go to the start of the first line you would call `lcd_gotoxy(0, 0)` and then print a string with `lcd_puts("example string")`.
There are more posible methods to control the display. [For in depth documentation please visit the linked page.](http://homepage.hispeed.ch/peterfleury/doxygen/avr-gcc-libraries/group__pfleury__lcd.html)
There are more methods available to control the display. [For in depth documentation please visit the linked page.](http://homepage.hispeed.ch/peterfleury/doxygen/avr-gcc-libraries/group__pfleury__lcd.html)

View File

@@ -16,7 +16,7 @@ First, enable Key Lock by setting `KEY_LOCK_ENABLE = yes` in your `rules.mk`. Th
## Caveats
Key Lock is only able to hold standard action keys and [One Shot modifier](quantum_keycodes.md#one-shot-keys) keys (for example, if you have your Shift defined as `OSM(KC_LSFT)`).
Key Lock is only able to hold standard action keys and [One Shot modifier](feature_advanced_keycodes.md#one-shot-keys) keys (for example, if you have your Shift defined as `OSM(KC_LSFT)`).
This does not include any of the QMK special functions (except One Shot modifiers), or shifted versions of keys such as `KC_LPRN`. If it's in the [Basic Keycodes](keycodes_basic.md) list, it can be held.
Switching layers will not cancel the Key Lock.

View File

@@ -149,7 +149,7 @@ In your keyboard config.h:
#### PS/2 Mouse Features
These enable settings supported by the PS/2 mouse protocol: http://www.computer-engineering.org/ps2mouse/
These enable settings supported by the PS/2 mouse protocol.
```
/* Use remote mode instead of the default stream mode (see link) */
@@ -202,7 +202,7 @@ Note: you can also use `ps2_mouse_set_resolution` for the same effect (not suppo
#### Scroll Button
If you're using a trackpoint, you will likely want to be able to use it for scrolling.
Its possible to enable a "scroll button/s" that when pressed will cause the mouse to scroll instead of moving.
It's possible to enable a "scroll button/s" that when pressed will cause the mouse to scroll instead of moving.
To enable the feature, you must set a scroll button mask as follows:
```

View File

@@ -47,7 +47,7 @@ The 3 wires of the TRS/TRRS cable need to connect GND, VCC, and D0 (aka PDO or p
The 4 wires of the TRRS cable need to connect GND, VCC, and SCL and SDA (aka PD0/pin 3 and PD1/pin 2, respectively) between the two Pro Micros.
The pull-up resistors may be placed on either half. It is also possible to use 4 resistors and have the pull-ups in both halves, but this is unnecessary in simple use cases.
The pull-up resistors may be placed on either half. If you wish to use the halves independently, it is also possible to use 4 resistors and have the pull-ups in both halves.
![I2C wiring](https://i.imgur.com/Hbzhc6E.png)
@@ -96,6 +96,8 @@ However, you'll have to flash the EEPROM files for the correct hand to each cont
* `:avrdude-split-right`
* `:dfu-split-left`
* `:dfu-split-right`
* `:dfu-util-split-left`
* `:dfu-util-split-right`
This setting is not changed when re-initializing the EEPROM using the `EEP_RST` key, or using the `eeconfig_init()` function. However, if you reset the EEPROM outside of the firmware's built in options (such as flashing a file that overwrites the `EEPROM`, like how the [QMK Toolbox]()'s "Reset EEPROM" button works), you'll need to re-flash the controller with the `EEPROM` files.
@@ -188,6 +190,18 @@ This sets how many LEDs are directly connected to each controller. The first nu
?> This setting implies that `RGBLIGHT_SPLIT` is enabled, and will forcibly enable it, if it's not.
```c
#define SPLIT_USB_DETECT
```
This option changes the startup behavior to detect an active USB connection when delegating master/slave. If this operation times out, then the half is assume to be a slave. This is the default behavior for ARM, and required for AVR Teensy boards (due to hardware limitations).
?> This setting will stop the ability to demo using battery packs.
```c
#define SPLIT_USB_TIMEOUT 2500
```
This sets the maximum timeout when detecting master/slave when using `SPLIT_USB_DETECT`.
## 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.

View File

@@ -30,7 +30,9 @@ Next, you will want to define some tap-dance keys, which is easiest to do with t
After this, you'll want to use the `tap_dance_actions` array to specify what actions shall be taken when a tap-dance key is in action. Currently, there are five possible options:
* `ACTION_TAP_DANCE_DOUBLE(kc1, kc2)`: Sends the `kc1` keycode when tapped once, `kc2` otherwise. When the key is held, the appropriate keycode is registered: `kc1` when pressed and held, `kc2` when tapped once, then pressed and held.
* `ACTION_TAP_DANCE_DUAL_ROLE(kc, layer)`: Sends the `kc` keycode when tapped once, or moves to `layer`. (this functions like the `TO` layer keycode).
* `ACTION_TAP_DANCE_LAYER_MOVE(kc, layer)`: Sends the `kc` keycode when tapped once, or moves to `layer`. (this functions like the `TO` layer keycode).
* This is the same as `ACTION_TAP_DANCE_DUAL_ROLE`, but renamed to something that is clearer about its functionality. Both names will work.
* `ACTION_TAP_DANCE_LAYER_TOGGLE(kc, layer)`: Sends the `kc` keycode when tapped once, or toggles the state of `layer`. (this functions like the `TG` layer keycode).
* `ACTION_TAP_DANCE_FN(fn)`: Calls the specified function - defined in the user keymap - with the final tap count of the tap dance action.
* `ACTION_TAP_DANCE_FN_ADVANCED(on_each_tap_fn, on_dance_finished_fn, on_dance_reset_fn)`: Calls the first specified function - defined in the user keymap - on every tap, the second function when the dance action finishes (like the previous option), and the last function when the tap dance action resets.
* `ACTION_TAP_DANCE_FN_ADVANCED_TIME(on_each_tap_fn, on_dance_finished_fn, on_dance_reset_fn, tap_specific_tapping_term)`: This functions identically to the `ACTION_TAP_DANCE_FN_ADVANCED` function, but uses a custom tapping term for it, instead of the predefined `TAPPING_TERM`.
@@ -420,7 +422,7 @@ Tap Dance can be used to mimic MO(layer) and TG(layer) functionality. For this e
The first step is to include the following code towards the beginning of your `keymap.c`:
```
```c
typedef struct {
bool is_press_action;
int state;
@@ -445,41 +447,22 @@ int cur_dance (qk_tap_dance_state_t *state);
//Functions associated with individual tap dances
void ql_finished (qk_tap_dance_state_t *state, void *user_data);
void ql_reset (qk_tap_dance_state_t *state, void *user_data);
//Declare variable to track which layer is active
int active_layer;
```
The above code is similar to that used in previous examples. The one point to note is that you need to declare a variable to keep track of what layer is currently the active layer. We'll see why shortly.
Towards the bottom of your `keymap.c`, include the following code:
```
//Update active_layer
uint32_t layer_state_set_user(uint32_t state) {
switch (biton32(state)) {
case 1:
active_layer = 1;
break;
case 2:
active_layer = 2;
break;
case 3:
active_layer = 3;
break;
default:
active_layer = 0;
break;
}
return state;
}
```c
//Determine the current tap dance state
int cur_dance (qk_tap_dance_state_t *state) {
if (state->count == 1) {
if (!state->pressed) {return SINGLE_TAP;}
else return SINGLE_HOLD;
} else if (state->count == 2) {return DOUBLE_TAP;}
if (!state->pressed) {
return SINGLE_TAP;
} else {
return SINGLE_HOLD;
}
} else if (state->count == 2) {
return DOUBLE_TAP;
}
else return 8;
}
@@ -493,16 +476,30 @@ static tap ql_tap_state = {
void ql_finished (qk_tap_dance_state_t *state, void *user_data) {
ql_tap_state.state = cur_dance(state);
switch (ql_tap_state.state) {
case SINGLE_TAP: tap_code(KC_QUOT); break;
case SINGLE_HOLD: layer_on(_MY_LAYER); break;
case SINGLE_TAP:
tap_code(KC_QUOT);
break;
case SINGLE_HOLD:
layer_on(_MY_LAYER);
break;
case DOUBLE_TAP:
if (active_layer==_MY_LAYER) {layer_off(_MY_LAYER);}
else layer_on(_MY_LAYER);
//check to see if the layer is already set
if (layer_state_is(_MY_LAYER)) {
//if already set, then switch it off
layer_off(_MY_LAYER);
} else {
//if not already set, then switch the layer on
layer_on(_MY_LAYER);
}
break;
}
}
void ql_reset (qk_tap_dance_state_t *state, void *user_data) {
if (ql_tap_state.state==SINGLE_HOLD) {layer_off(_MY_LAYER);}
//if the key was held down and now is released then switch off the layer
if (ql_tap_state.state==SINGLE_HOLD) {
layer_off(_MY_LAYER);
}
ql_tap_state.state = 0;
}
@@ -512,7 +509,7 @@ qk_tap_dance_action_t tap_dance_actions[] = {
};
```
The is where the real logic of our tap dance key gets worked out. Since `layer_state_set_user()` is called on any layer switch, we use it to update `active_layer`. Our example is assuming that your `keymap.c` includes 4 layers, so adjust the switch statement here to fit your actual number of layers.
The above code is similar to that used in previous examples. The one point to note is that we need to be able to check which layers are active at any time so we can toggle them if needed. To do this we use the `layer_state_is( layer )` function which returns `true` if the given `layer` is active.
The use of `cur_dance()` and `ql_tap_state` mirrors the above examples.

View File

@@ -1,6 +1,6 @@
# Terminal
> This feature is currently *huge* at 4400 bytes, and should probably only be put on boards with a lot of memory, or for fun.
> This feature is currently *huge*, and should probably only be put on boards with a lot of memory, or for fun.
The terminal feature is a command-line-like interface designed to communicate through a text editor with keystrokes. It's beneficial to turn off auto-indent features in your editor.
@@ -56,7 +56,7 @@ Outputs the last 5 commands entered
1. help
2. about
3. keymap 0
4. help
4. help
5. flush-buffer
```

View File

@@ -211,15 +211,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if ( (temp_mod | temp_osm) & MOD_MASK_SHIFT )
#endif
{ //
#if defined(__arm__) // only run for ARM boards
SEND_STRING(":dfu-util");
#elif defined(BOOTLOADER_DFU) // only run for DFU boards
SEND_STRING(":dfu");
#elif defined(BOOTLOADER_HALFKAY) // only run for teensy boards
SEND_STRING(":teensy");
#elif defined(BOOTLOADER_CATERINA) // only run for Pro Micros
SEND_STRING(":avrdude");
#endif // bootloader options
SEND_STRING(":flash");
}
if ( (temp_mod | temp_osm) & MOD_MASK_CTRL) {
SEND_STRING(" -j8 --output-sync");
@@ -244,7 +236,7 @@ endif
This will add a new `KC_MAKE` keycode that can be used in any of your keymaps. And this keycode will output `make <keyboard>:<keymap>`, making frequent compiling easier. And this will work with any keyboard and any keymap as it will output the current boards info, so that you don't have to type this out every time.
Also, holding `shift` will add the appropriate flashing command (`:dfu`, `:teensy`, `:avrdude`, `:dfu-util`) for a majority of keyboards. Holding `control` will add some commands that will speed up compiling time by processing multiple files at once.
Also, holding Shift will add the flash target (`:flash`) to the command. Holding Control will add some commands that will speed up compiling time by processing multiple files at once.
And for the boards that lack a shift key, or that you want to always attempt the flashing part, you can add `FLASH_BOOTLOADER = yes` to the `rules.mk` of that keymap.

View File

@@ -12,6 +12,7 @@ QMK has a staggering number of features for building your keyboard. It can take
* [Combos](feature_combo.md) - Custom actions for multiple key holds.
* [Command](feature_command.md) - Runtime version of bootmagic (Formerly known as "Magic").
* [Debounce API](feature_debounce_type.md) - Customization of debouncing algorithms, and the ability to add more/custom debouncing.
* [DIP Switch](feature_dip_switch.md) - Toggle switches for customizing board function.
* [Dynamic Macros](feature_dynamic_macros.md) - Record and playback macros from the keyboard itself.
* [Encoders](feature_encoders.md) - Rotary encoders!
* [Grave Escape](feature_grave_esc.md) - Lets you use a single key for Esc and Grave.

View File

@@ -10,11 +10,17 @@ Atmel's DFU bootloader comes on all atmega32u4 chips by default, and is used by
To ensure compatibility with the DFU bootloader, make sure this block is present your `rules.mk` (optionally with `lufa-dfu` or `qmk-dfu` instead):
# Bootloader
# This definition is optional, and if your keyboard supports multiple bootloaders of
# different sizes, comment this out, and the correct address will be loaded
# automatically (+60). See bootloader.mk for all options.
BOOTLOADER = atmel-dfu
```make
# Bootloader selection
# Teensy halfkay
# Pro Micro caterina
# Atmel DFU atmel-dfu
# LUFA DFU lufa-dfu
# QMK DFU qmk-dfu
# ATmega32A bootloadHID
# ATmega328P USBasp
BOOTLOADER = atmel-dfu
```
Compatible flashers:
@@ -64,11 +70,17 @@ Arduino boards and their clones use the [Caterina bootloader](https://github.com
To ensure compatibility with the Caterina bootloader, make sure this block is present your `rules.mk`:
# Bootloader
# This definition is optional, and if your keyboard supports multiple bootloaders of
# different sizes, comment this out, and the correct address will be loaded
# automatically (+60). See bootloader.mk for all options.
BOOTLOADER = caterina
```make
# Bootloader selection
# Teensy halfkay
# Pro Micro caterina
# Atmel DFU atmel-dfu
# LUFA DFU lufa-dfu
# QMK DFU qmk-dfu
# ATmega32A bootloadHID
# ATmega328P USBasp
BOOTLOADER = caterina
```
Compatible flashers:
@@ -87,11 +99,16 @@ or
make <keyboard>:<keymap>:avrdude
or if you want to flash multiple boards, use the following command
make <keyboard>:<keymap>:avrdude-loop
#### Caterina commands
There are a number of DFU commands that you can use to flash firmware to a DFU device:
* `:avrdude` - This is the normal option which waits until a Caterina device is available (by detecting a new COM port), and then flashes the firmware.
* `:avrdude-loop` - This runs the same command as `:avrdude`, but after each device is flashed, it will attempt to flash again. This is useful for bulk flashing. _This requires you to manually escape the loop by hitting Ctrl+C._
* `:avrdude-split-left` - This flashes the normal firmware, just like the default option (`:avrdude`). However, this also flashes the "Left Side" EEPROM file for split keyboards. _This is ideal for Pro Micro based split keyboards._
* `:avrdude-split-right` - This flashes the normal firmware, just like the default option (`:avrdude`). However, this also flashes the "Right Side" EEPROM file for split keyboards. _This is ideal for Pro Micro based split keyboards._
When you're done flashing boards, you'll need to hit Ctrl + C or whatever the correct keystroke is for your operating system to break the loop.
## Halfkay
@@ -100,11 +117,17 @@ Halfkay is a super-slim protocol developed by PJRC that uses HID, and come on al
To ensure compatibility with the Halfkay bootloader, make sure this block is present your `rules.mk`:
# Bootloader
# This definition is optional, and if your keyboard supports multiple bootloaders of
# different sizes, comment this out, and the correct address will be loaded
# automatically (+60). See bootloader.mk for all options.
BOOTLOADER = halfkay
```make
# Bootloader selection
# Teensy halfkay
# Pro Micro caterina
# Atmel DFU atmel-dfu
# LUFA DFU lufa-dfu
# QMK DFU qmk-dfu
# ATmega32A bootloadHID
# ATmega328P USBasp
BOOTLOADER = halfkay
```
Compatible flashers:
@@ -125,11 +148,17 @@ USBasploader is a bootloader developed by matrixstorm. It is used in some non-US
To ensure compatibility with the USBasploader bootloader, make sure this block is present in your `rules.mk`:
# Bootloader
# This definition is optional, and if your keyboard supports multiple bootloaders of
# different sizes, comment this out, and the correct address will be loaded
# automatically (+60). See bootloader.mk for all options.
BOOTLOADER = USBasp
```make
# Bootloader selection
# Teensy halfkay
# Pro Micro caterina
# Atmel DFU atmel-dfu
# LUFA DFU lufa-dfu
# QMK DFU qmk-dfu
# ATmega32A bootloadHID
# ATmega328P USBasp
BOOTLOADER = USBasp
```
Compatible flashers:
@@ -150,11 +179,17 @@ BootloadHID is a USB bootloader for AVR microcontrollers. The uploader tool requ
To ensure compatibility with the bootloadHID bootloader, make sure this block is present your `rules.mk`:
# Bootloader
# This definition is optional, and if your keyboard supports multiple bootloaders of
# different sizes, comment this out, and the correct address will be loaded
# automatically (+60). See bootloader.mk for all options.
BOOTLOADER = bootloadHID
```make
# Bootloader selection
# Teensy halfkay
# Pro Micro caterina
# Atmel DFU atmel-dfu
# LUFA DFU lufa-dfu
# QMK DFU qmk-dfu
# ATmega32A bootloadHID
# ATmega328P USBasp
BOOTLOADER = bootloadHID
```
Compatible flashers:
@@ -201,5 +236,7 @@ Flashing sequence:
There are a number of DFU commands that you can use to flash firmware to a STM32 device:
* `:dfu-util` - The default command for flashing to STM32 devices.
* `:st-link-cli` - This allows you to flash the firmware via ST-LINK's CLI utility, rather than dfu-util.
* `:dfu-util` - The default command for flashing to STM32 devices, and will wait until an STM32 bootloader device is present.
* `:dfu-util-split-left` - This flashes the normal firmware, just like the default option (`:dfu-util`). However, this also configures the "Left Side" EEPROM setting for split keyboards.
* `:dfu-util-split-right` - This flashes the normal firmware, just like the default option (`:dfu-util`). However, this also configures the "Right Side" EEPROM setting for split keyboards.
* `:st-link-cli` - This allows you to flash the firmware via ST-LINK's CLI utility, rather than dfu-util.

View File

@@ -0,0 +1,52 @@
# QMK Breaking Change - 30 août 2019
Quatre fois par an, QMK lance un processus pour fusionner les Breaking Changes. Un Breaking Change est un changement qui modifie la manière dont QMK fonctionne introduisant des incompatibilités ou des comportements dangereux. Nous n'effectuons ces changements que 4 fois par an afin que les utilisateurs n'aient pas peur de casser leurs keymaps en mettant à jour leur version de QMK.
Ce document présente les fusions de Breaking Change. Voici la liste des changements.
## Formattage de code Core avec clang-format
* Tous les fichiers core (`drivers/`, `quantum/`, `tests/`, et `tmk_core/`) seront formatés avec clang-format
* Un processus travis pour reformatter les PRs lors de la fusion a été mis en place
* Vous pouvez utiliser la nouvelle commande CLI `qmk cformat` afin de formater avant de soumettre votre PR si vous le souhaitez.
## Nettoyage des descripteurs LUFA USB
* Nettoyage du code lié aux descripteurs USB HID sur les claviers AVR, afin de les rendre plus simple à lire et compréhensibles
* Plus d'information: https://github.com/qmk/qmk_firmware/pull/4871
* Normalement pas de changement de fonctionnement et aucune keymap modifiée.
## Migration des entrées de `ACTION_LAYER_MOMENTARY()` dans `fn_actions` vers des keycodes `MO()`
* `fn_actions` est déprécié, et ses fonctionnalités ont été remplacées par des keycodes directs et `process_record_user()`
* Supprimer cette fonctionnalité obsolète devrait aboutir à une réduction importante de la taille du firmware et de la complexité du code
* Il est recommandé que toutes les keymaps affectées remplacent `fn_actions` vers les fonctionnalités de [keycode custom](https://docs.qmk.fm/#/custom_quantum_functions) et [macro](https://docs.qmk.fm/#/feature_macros)
## Mise à jour Atreus vers les conventions de codage courantes
* Les doublons include guards ont contourné le comportement de traitement des headers attendu
* Il est recommandé pour toutes les keymaps affectées de supprimer le doublon de `<keyboard>/config.h` et `<keyboard>/keymaps/<user>/config.h` et de ne garder que des surcharges au niveau keymap
## Récupération des changements de fichier keymap langage de la fork ZSA
* Corrige une issue dans le fichier `keymap_br_abnt2.h` qui inclut la mauvaise souce (`keymap_common.h` au lieu de `keymap.h`)
* Met à jour le fichier `keymap_swedish.h` afin d'être spécifique au suédois et plus "nordique" en général.
* Toutes les keymaps qui utilisent ceci devront supprimer `NO_*` et le remplacer par `SE_*`.
## Mise à jour du repo afin d'utiliser LUFA comme un sous-module git
* `/lib/LUFA` supprimé du dépôt
* LUFA, définis comme un sous-module, pointe vers qmk/lufa
* Ceci devrait ajouter plus de flexibilité vers LUFA, et nous permet de garder le sous-module à jour bien plus facilement. Il avait environ 2 ans de retard, sans manière simple de corriger. Ce changement devrait simplifier la mise à jour dans le futur.
## Migration des entrées `ACTION_BACKLIGHT_*()` dans `fn_actions` vers des keycodes `BL_`
* `fn_actions` est déprécié, et ses fonctionnalités ont été remplacées par des keycodes directs et `process_record_user()`
* Toutes les keymaps utilisant ces actions doivent avoir les clés `KC_FN*` remplacées par les clés `BL_*` équivalentes
* Si vous utilisez actuellement `KC_FN*` vous devrez remplacer `fn_actions` avec les fonctionnalités de [keycode custom](https://docs.qmk.fm/#/custom_quantum_functions) et [macro](https://docs.qmk.fm/#/feature_macros)
## Remplacer l'alias `KC_DELT` par `KC_DEL`
* `KC_DELT` était un alias redondant et non documenté pour `KC_DELETE`
* Il a été supprimé et toutes ses utilisations ont été remplacées par l'alias plus courant `KC_DEL`
* Environ 90 keymaps (surtout des boards ErgoDox) ont été modifiées à cette fin

32
docs/fr-FR/README.md Normal file
View File

@@ -0,0 +1,32 @@
# Quantum Mechanical Keyboard Firmware
[![Version courante](https://img.shields.io/github/tag/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/tags)
[![Statut du build](https://travis-ci.org/qmk/qmk_firmware.svg?branch=master)](https://travis-ci.org/qmk/qmk_firmware)
[![Discord](https://img.shields.io/discord/440868230475677696.svg)](https://discord.gg/Uq7gcHh)
[![Statut de la doc](https://img.shields.io/badge/docs-ready-orange.svg)](https://docs.qmk.fm)
[![Contributeurs Github](https://img.shields.io/github/contributors/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/pulse/monthly)
[![Forks Github](https://img.shields.io/github/forks/qmk/qmk_firmware.svg?style=social&label=Fork)](https://github.com/qmk/qmk_firmware/)
## Qu'est-ce que QMK Firmware?
QMK (*Quantum Mechanical Keyboard*) est une communauté open source qui maintient le firmware QMK, la QMK Toolbox (*Boite à outil*), qmk.fm et leurs documentations. QMKFirmware est un firmware dédié aux claviers qui est basé sur [tmk\_keyboard](http://github.com/tmk/tmk_keyboard). Il offre des fonctionnalités très utiles pour les contrôleurs Atmel AVR, et, plus spécifiquement pour [les produits d'OLKB](http://olkb.com), le clavier [ErgoDox EZ](http://www.ergodox-ez.com), et pour les [produits Clueboard](http://clueboard.co/). Il prend désormais aussi en charge les processeurs ARM qui utilisent ChibiOS. Vous pouvez l'utiliser pour contrôler un clavier personnalisé soudé à la main ou alors sur un clavier avec un PCB personnalisé.
## Comment l'obtenir
Si vous souhaitez contribuer à une disposition de clavier (keymap), ou à des fonctionnalités de QMK alors le plus simple est de [forker le dépôt avec Github](https://github.com/qmk/qmk_firmware#fork-destination-box) puis cloner le dépôt localement pour y faire des changements. Vous pourrez pousser vos changements sur github puis ouvrir un [Pull Request](https://github.com/qmk/qmk_firmware/pulls) depuis votre fork Github.
Sinon, vous pouvez aussi le télécharger directement en ([zip](https://github.com/qmk/qmk_firmware/zipball/master), [tar](https://github.com/qmk/qmk_firmware/tarball/master)), ou le cloner avec git en ssh (`git@github.com:qmk/qmk_firmware.git`), ou https (`https://github.com/qmk/qmk_firmware.git`).
## Comment le compiler
Avant d'être prêt à compiler vous allez devoir [installer un environnement](getting_started_build_tools.md) pour les développements AVR et/ou ARM. Une fois ceci fait, vous pourrez utiliser la commande `make` pour compiler le clavier et la disposition avec une commande de ce type :
make planck/rev4:default
Cette commande compilera la révision `rev4` du clavier `planck` avec la disposition `default`. Notez que tous les claviers n'ont pas forcément de révisions (aussi appelées sous-projects ou dossiers, ou en anglais «subprojects» ou «folder»). Cette option peut donc être omise:
make preonic:default
## Comment le personnaliser
QMK a beaucoup de [fonctionnalités](features.md) à explorer, et [une documentation](http://docs.qmk.fm) très abondante que vous pourrez parcourir. La plupart des fonctionnalités vous permettrons de modifier vos [dispositions](keymap.md) (keymaps) et de changer [les codes de caractères](keycodes.md) (keycodes).

125
docs/fr-FR/_summary.md Normal file
View File

@@ -0,0 +1,125 @@
**En Français**
* [Guide pour débutant complet](fr-FR/newbs.md)
* [Pour débuter](fr-FR/newbs_getting_started.md)
* [Compiler son premier firmware](fr-FR/newbs_building_firmware.md)
* [Flasher le Firmware](fr-FR/newbs_flashing.md)
* [Test et Débuggage](fr-FR/newbs_testing_debugging.md)
* [Bonnes pratiques Git](fr-FR/newbs_best_practices.md)
* [Ressources d'apprentissage](fr-FR/newbs_learn_more_resources.md)
* [Les bases de QMK](fr-FR/README.md)
* [Indroduction à QMK](fr-FR/getting_started_introduction.md)
* [QMK CLI](fr-FR/cli.md)
* [Configuration de la CLI QMK](fr-FR/cli_configuration.md)
* [Contribuer à QMK](fr-FR/contributing.md)
* [Comment utiliser GitHub](fr-FR/getting_started_github.md)
* [Trouver de l'aide](fr-FR/getting_started_getting_help.md)
* [Breaking changes](fr-FR/breaking_changes.md)
* [30 août 2019](fr-FR/ChangeLog/20190830.md)
**En Anglais**
* [FAQ](faq.md)
* [FAQ Générale](faq_general.md)
* [Compiler QMK](faq_build.md)
* [Débugguer / Dépanner QMK](faq_debug.md)
* [Keymap / Disposition](faq_keymap.md)
* [Installer les drivers avec Zadig](driver_installation_zadig.md)
* Guides détaillés
* [Installation des outils de compilation](getting_started_build_tools.md)
* [Guide Vagrant](getting_started_vagrant.md)
* [Commandes de compilations](getting_started_make_guide.md)
* [Flasher les firmwares](fr-fr/flashing.md)
* [Personnaliser les fonctionnalités](custom_quantum_functions.md)
* [Aperçu des fonctionnalités des dispositions](keymap.md)
* [Hardware](hardware.md)
* [Processeurs AVR](hardware_avr.md)
* [Pilotes / Drivers](hardware_drivers.md)
* Réferences
* [Lignes de conduite des claviers](hardware_keyboard_guidelines.md)
* [Options de configurations](config_options.md)
* [Keycodes / Codes des caractères](keycodes.md)
* [Conventions de codage - C](coding_conventions_c.md)
* [Conventions de codage - Python](coding_conventions_python.md)
* [Meilleurs pratiques sur la documentation](documentation_best_practices.md)
* [Modèles de documentation](documentation_templates.md)
* [Glossaire](reference_glossary.md)
* [Tests unitaires](unit_testing.md)
* [Fonctions utiles](ref_functions.md)
* [Support de configuration](reference_configurator_support.md)
* [Format du fichier info.json](reference_info_json.md)
* [Développer la CLI en Python](cli_development.md)
* [Fonctionnalités](features.md)
* [Keycodes basiques](keycodes_basic.md)
* [Touches utilisées avec Shift (US ANSI)](keycodes_us_ansi_shifted.md)
* [Keycodes quantiques](quantum_keycodes.md)
* [Keycodes avancés](feature_advanced_keycodes.md)
* [Fonctionnalités audio](feature_audio.md)
* [Majuscule automatique](feature_auto_shift.md)
* [Rétroéclairage](feature_backlight.md)
* [Bluetooth](feature_bluetooth.md)
* [Bootmagic](feature_bootmagic.md)
* [Combos](feature_combo.md)
* [Commande](feature_command.md)
* [API anti-rebond](feature_debounce_type.md)
* [DIP Switch](feature_dip_switch.md)
* [Macros dynamiques](feature_dynamic_macros.md)
* [Interrupteurs rotatifs](feature_encoders.md)
* [Grave Escape](feature_grave_esc.md)
* [Retour haptique](feature_haptic_feedback.md)
* [Contrôleur LCD HD44780](feature_hd44780.md)
* [Touche à verrou / Lock-key](feature_key_lock.md)
* [Dispositions / layouts](feature_layouts.md)
* [Touche leader](feature_leader_key.md)
* [Matrice LED](feature_led_matrix.md)
* [Macros](feature_macros.md)
* [Boutons de souris](feature_mouse_keys.md)
* [Pilotes / Drivers OLED](feature_oled_driver.md)
* [Touche one-shot](feature_advanced_keycodes.md#one-shot-keys)
* [Périphériques de pointage](feature_pointing_device.md)
* [Souris PS/2](feature_ps2_mouse.md)
* [Éclairage RGB](feature_rgblight.md)
* [Matrice RGB](feature_rgb_matrix.md)
* [Space Cadet](feature_space_cadet.md)
* [Claviers scindés / splittés](feature_split_keyboard.md)
* [Stenographie](feature_stenography.md)
* [Inversion des mains](feature_swap_hands.md)
* [Tap Dance](feature_tap_dance.md)
* [Terminale](feature_terminal.md)
* [Imprimante thermique](feature_thermal_printer.md)
* [Caractères unicodes](feature_unicode.md)
* [Dossier utilisateur](feature_userspace.md)
* [Velocikey](feature_velocikey.md)
* Pour les makers et les bricoleurs
* [Guide des claviers soudés à la main](hand_wire.md)
* [Guide de flash de lISP](isp_flashing_guide.md)
* [Guide du débogage ARM](arm_debugging.md)
* [Drivers i2c](i2c_driver.md)
* [Contrôles des GPIO](internals_gpio_control.md)
* [Conversion en Proton C](proton_c_conversion.md)
* Pour aller plus loin
* [Comment fonctionnent les claviers](how_keyboards_work.md)
* [Comprendre QMK](understanding_qmk.md)
* Autres sujets
* [Utiliser Eclipse avec QMK](other_eclipse.md)
* [Utiliser VSCode avec QMK](other_vscode.md)
* [Support](support.md)
* [Comment ajouter des traductions](translating.md)
* À lintérieur de QMK (En cours de documentation)
* [Définitions](internals_defines.md)
* [Input Callback Reg](internals_input_callback_reg.md)
* [Appareils Midi](internals_midi_device.md)
* [Installation dun appareil Midi](internals_midi_device_setup_process.md)
* [Utilitaires Midi](internals_midi_util.md)
* [Fonctions Midi](internals_send_functions.md)
* [Outils Sysex](internals_sysex_tools.md)

View File

@@ -0,0 +1,107 @@
# Breaking changes
Ce document décrit le processus de QMK pour la gestion des breaking changes. Un breaking change est un changement qui modifie la manière dont QMK fonctionne introduisant des incompatibilités ou des comportements dangereux. Nous limitons ces changements afin que les utilisateurs n'aient pas peur de casser leurs keymaps en mettant à jour leur version de QMK.
La période de breaking change est quand nous allons fusionner un PR qui change QMK d'une manière dangereuse ou inattendue. Il y a une période interne de test afin de nous assurer que les problèmes résiduels sont rares ou impossible à prévoir.
## Qu'est-ce qui a été inclus dans des Breaking Changes précédents?
* [30 août 2019](ChangeLog/20190830.md)
## Quand va être le prochain Breaking Change?
Le prochain Breaking Change est planifié pour le 29 novembre.
### Dates importantes
* [x] 21 septembre 2019 - `future` est créé. Il va être rebasé de manière hebdomadaire.
* [ ] 01 novembre 2019 - `future` fermé aux nouveaux PRs.
* [ ] 01 novembre 2019 - Appel aux testeurs.
* [ ] 27 novembre 2019 - `master` est bloqué, pas de PRs fusionnés.
* [ ] 29 novembre 2019 - `future` est fusionné dans `master`.
* [ ] 30 novembre 2019 - `master` est débloqué. Les PRs peuvent à nouveau être fusionnés.
## Quels changements seront inclus?
Pour voir une liste de candidats de breaking changes, vous pouvez regarder la liste des [labels `breaking_change`](https://github.com/qmk/qmk_firmware/pulls?q=is%3Aopen+label%3Abreaking_change+is%3Apr). De nouveaux changements peuvent être ajoutés entre maintenant et lorsque `future` est fermée, et un PR avec ce label n'est pas garanti d'être fusionné.
Si vous souhaitez que votre breaking change soit inclus dans ce tour, vous devez créer un PR avec le label `breaking_change` et faire en sorte qu'il soit accepté avant que `future` ne soit fermé. Une fois `future` fermé, aucun nouveau breaking change sera accepté.
Critère d'acceptation:
* Le PR est complété et prêt à fusionner
* Le PR a un ChangeLog
# Checklists
Cette section documente plusieurs processus que nous utilisons en lançant le processus de Breaking Change.
## Rebase `future` de `master`
Ceci est lancé chaque vendredi tant que `future` est ouvert.
Processus:
```
cd qmk_firmware
git checkout master
git pull --ff-only
git checkout future
git rebase master
git push --force
```
## Créer la branche `future`
Ceci est fait immédiatement après la fusion de la branche `future` précédente.
* `qmk_firmware` git commands
* [ ] `git checkout master`
* [ ] `git pull --ff-only`
* [ ] `git checkout -b future`
* [ ] Modifie `readme.md`
* [ ] Ajoute un message en haut qui indique que c'est une branche de test.
* [ ] Ajoute un lien vers ce document
* [ ] `git commit -m 'Branch point for <DATE> Breaking Change'`
* [ ] `git tag breakpoint_<YYYY>_<MM>_<DD>`
* [ ] `git tag <next_version>` # Evite que le label point d'arrêt soit confondu par un incrément de version
* [ ] `git push origin future`
* [ ] `git push --tags`
## 4 Semaines Avant la Fusion
* `future` est maintenant fermé aux nouveaux PRs, seul des correctifs pour les PRs courants peuvent être mergés
* Envoi de l'appel aux testeurs
* [ ] Discord
* [ ] GitHub PR
* [ ] https://reddit.com/r/olkb
## 1 Semaine Avant la Fusion
* Annonce que master sera fermée entre <2 jours avant> à <Jour de la fusion>
* [ ] Discord
* [ ] GitHub PR
* [ ] https://reddit.com/r/olkb
## 2 Jours Avant la Fusion
* Annonce que master est fermé pour 2 jours
* [ ] Discord
* [ ] GitHub PR
* [ ] https://reddit.com/r/olkb
## Jour de la fusion
* `qmk_firmware` git commands
* [ ] `git checkout future`
* [ ] `git pull --ff-only`
* [ ] `git rebase origin/master`
* [ ] Modifie `readme.md`
* [ ] Supprimer les notes à propos de `future`
* [ ] Regroupe ChangeLog dans un fichier.
* [ ] `git commit -m 'Merge point for <DATE> Breaking Change'`
* [ ] `git push origin future`
* Actions sur Github
* [ ] Crée un PR pour `future`
* [ ] S'assurer que Travis ne relève aucun problème
* [ ] Fusion le PR `future`

146
docs/fr-FR/cli.md Normal file
View File

@@ -0,0 +1,146 @@
# La CLI de QMK
Cette page décrit comment configurer et utiliser la CLI QMK.
# Vue d'ensemble
La CLI de QMK permet de simplifier la compilation et l'interaction avec les claviers QMK. Nous avons défini plusieurs commandes pour simplifier et rationaliser les tâches telles qu'obtenir et compiler le firmware QMK, créer de nouvelles keymaps, et plus.
* [CLI globale](#global-cli)
* [CLI locale](#local-cli)
* [Les commandes CLI](#cli-commands)
# Pré-requis
La CLI nécessite Python 3.5 ou plus récent. Nous essayons de limiter le nombre de pré-requis, mais vous allez aussi devoir installer les paquets listés dans le fichier [`requirements.txt`](https://github.com/qmk/qmk_firmware/blob/master/requirements.txt).
# CLI globale
QMK met à disposition une CLI installable qui peut être utilisée pour configurer votre environnement de compilation QMK, fonctionne avec QMK, et qui rend l'utilisation de plusieurs copies de `qmk_firmware` plus simple. Nous recommandons d'installer et de mettre à jour ceci régulièrement.
## Installer en utilisant Homebrew (macOS, quelques Linux)
Si vous avez installé [Homebrew](https://brew.sh) vous pouvez entrer ce qui suit et installer QMK:
```
brew tap qmk/qmk
brew install qmk
export QMK_HOME='~/qmk_firmware' # Optional, set the location for `qmk_firmware`
qmk setup # This will clone `qmk/qmk_firmware` and optionally set up your build environment
```
## Installer en utilisant easy_install ou pip
Si votre système n'est pas listé ci-dessus, vous pouvez installer QMK manuellement. Premièrement, vérifiez que vous avez bien installé Python 3.5 (ou plus récent) et pip. Ensuite, installez QMK avec cette commande:
```
pip3 install qmk
export QMK_HOME='~/qmk_firmware' # Optional, set the location for `qmk_firmware`
qmk setup # This will clone `qmk/qmk_firmware` and optionally set up your build environment
```
## Paquets pour d'autres systèmes d'exploitation
Nous recherchons des gens pour créer et maintenir un paquet `qmk` pour plus de systèmes d'exploitation. Si vous voulez créer un paquet pour votre système d'exploitation, suivez ces directives:
* Suivez les bonnes pratiques pour votre système d'exploitation lorsqu'elles entrent en conflit avec ces directives
* Documentez pourquoi dans un commentaire lorsque vous ne les suivez pas
* Installez en utilisant un virtualenv
* Expliquez à l'utilisateur de définir la variable d'environnement `QMK_Home` pour "check out" les sources du firmware à un autre endroit que `~/qmk_firmware`.
# CLI locale
Si vous ne voulez pas utiliser la CLI globale, il y a une CLI locale empaquetée avec `qmk_firmware`. Vous pouvez le trouver dans `qmk_firmware/bin/qmk`. Vous pouvez lancer la commande `qmk` depuis n'importe quel répertoire et elle fonctionnera toujours sur cette copie de `qmk_firmware`.
**Exemple**:
```
$ ~/qmk_firmware/bin/qmk hello
Ψ Hello, World!
```
## Limitations de la CLI locale
Il y a quelques limitations à la CLI locale comparé à la globale:
* La CLI locale ne supporte pas `qmk setup` ou `qmk clone`
* La CLI locale n'opère pas sur le même arbre `qmk_firmware`, même si vous avez plusieurs dépôts clonés.
* La CLI locale ne s'exécute pas dans un virtualenv, donc il y a des risques que des dépendances seront en conflit
# Les commandes CLI
## `qmk compile`
Cette commande permet de compiler le firmware de n'importe quel répertoire. Vous pouvez compiler des exports JSON de <https://config.qmk.fm> ou compiler des keymaps du dépôt.
**Utilisation pour les exports de configuration**:
```
qmk compile <configuratorExport.json>
```
**Utilisation pour les Keymaps**:
```
qmk compile -kb <keyboard_name> -km <keymap_name>
```
## `qmk cformat`
Cette commande formatte le code C en utilisant clang-format. Lancez-la sans arguments pour formatter tout le code core, ou passez les noms de fichiers à la ligne de commande pour la lancer sur des fichiers spécifiques.
**Utilisation**:
```
qmk cformat [file1] [file2] [...] [fileN]
```
## `qmk config`
Cette commande vous permet de configurer le comportement de QMK. Pour la documentation complète de `qmk config`, regardez [Configuration de CLI](cli_configuration.md).
**Utilisation**:
```
qmk config [-ro] [config_token1] [config_token2] [...] [config_tokenN]
```
## `qmk doctor`
Cette commande examine votre environnement et vous alertes des potentiels problèmes de compilation ou de flash.
**Utilisation**:
```
qmk doctor
```
## `qmk new-keymap`
Cette commande crée une nouvelle keymap basée sur une keymap par défaut d'un clavier existant.
**Utilisation**:
```
qmk new-keymap [-kb KEYBOARD] [-km KEYMAP]
```
## `qmk pyformat`
Cette commande formate le code python dans `qmk_firmware`.
**Utilisation**:
```
qmk pyformat
```
## `qmk pytest`
Cette commande démarre la suite de test python. Si vous faites des changements dans le code Python, assurez-vous que les tests se lancent avec succès.
**Utilisation**:
```
qmk pytest
```

View File

@@ -0,0 +1,121 @@
# Configuration de QMK CLI
Ce document explique comment fonctionne la commande `qmk config`.
# Introduction
La configuration pour QMK CLI est un système clé/valeur. Chaque clé est composée d'une sous-commande et d'un argument séparé par une virgule. Cela permet une traduction simple et directe entre les clés de configuration et l'argument qu'elle définit.
## Exemple simple
Comme exemple, regardons la commande `qmk compile --keyboard clueboard/66/rev4 --keymap default`.
Il y a deux arguments de ligne de commande qui peuvent être lu de la configuration:
* `compile.keyboard`
* `compile.keymap`
Essayons de les définir:
```shell
$ qmk config compile.keyboard=clueboard/66/rev4 compile.keymap=default
compile.keyboard: None -> clueboard/66/rev4
compile.keymap: None -> default
Ψ Wrote configuration to '/Users/example/Library/Application Support/qmk/qmk.ini'
```
Maintenant, je peux lancer la commande `qmk compile` sans avoir à spécifier mon clavier et keymap à chaque fois.
## Définir les options par défaut
Parfois, il est utile de partager une configuration entre plusieurs commandes. Par exemple, plusieurs commandes prennent un argument `--keyboard`. Plutôt que de devoir définir cette valeur pour chaque commande, vous pouvez définir une valeur d'utilisateur qui sera utilisée par toutes les commandes qui prennent cet argument.
Exemple:
```
$ qmk config user.keyboard=clueboard/66/rev4 user.keymap=default
user.keyboard: None -> clueboard/66/rev4
user.keymap: None -> default
Ψ Wrote configuration to '/Users/example/Library/Application Support/qmk/qmk.ini'
```
# CLI Documentation (`qmk config`)
La commande `qmk config` est utilisée pour interagir avec la configuration sous-jacente. Lancée sans argument, elle affiche la configuration courante. Lorsque des arguments sont définis, ils sont considérés comme étant des jetons de configuration, qui sont des chaînes de caractère ne contenant aucun espace avec le format suivant:
<subcommand|general|default>[.<key>][=<value>]
## Définir des valeurs de configuration
Vous pouvez définir des valeurs de configuration en mettant le caractère égal (=) dans votre clé de configuration. La clé doit toujours être dans le format complet `<section>.<key>`.
Exemple:
```
$ qmk config default.keymap=default
default.keymap: None -> default
Ψ Wrote configuration to '/Users/example/Library/Application Support/qmk/qmk.ini'
```
## Lire des valeurs de configuration
Vous pouvez lire les valeurs de configuration pour la totalité de la configuration, une seule clé, ou une section entière. Vous pouvez aussi spécifier plusieurs clés pour afficher plus d'une valeur.
### Exemple avec la totalité de la configuration
qmk config
### Exemple avec une section entière
qmk config compile
### Exemple avec une clé unique
qmk config compile.keyboard
### Exemple avec plusieurs clés
qmk config user compile.keyboard compile.keymap
## Supprimer des valeurs de configuration
Vous pouvez supprimer une valeur de configuration en la définissant avec la chaîne spéciale `None`.
Exemple:
```
$ qmk config default.keymap=None
default.keymap: default -> None
Ψ Wrote configuration to '/Users/example/Library/Application Support/qmk/qmk.ini'
```
## Plusieurs opérations
Vous pouvez combiner plusieurs opérations d'écriture et de lecture en une seule commande. Elles seront exécutées et affichées dans l'ordre:
```
$ qmk config compile default.keymap=default compile.keymap=None
compile.keymap=skully
compile.keyboard=clueboard/66_hotswap/gen1
default.keymap: None -> default
compile.keymap: skully -> None
Ψ Wrote configuration to '/Users/example/Library/Application Support/qmk/qmk.ini'
```
# Options de configuration utilisateur
| Clé | Valeur par défaut | Description |
|-----|---------------|-------------|
| user.keyboard | None | Le chemin d'accès vers le clavier (Exemple: `clueboard/66/rev4`) |
| user.keymap | None | Le nom de la keymap (Exemple: `default`) |
| user.name | None | Le nom d'utilisateur GitHub de l'utilisateur. |
# Toutes les options de configuration
| Clé | Valeur par défaut | Description |
|-----|---------------|-------------|
| compile.keyboard | None | Le chemin d'accès vers le clavier (Exemple: `clueboard/66/rev4`) |
| compile.keymap | None | Le nom de la keymap (Exemple: `default`) |
| hello.name | None | Le nom à saluer lorsque démarré. |
| new_keyboard.keyboard | None | Le chemin d'accès vers le clavier (Exemple: `clueboard/66/rev4`) |
| new_keyboard.keymap | None | Le nom de la keymap (Example: `default`) |

154
docs/fr-FR/contributing.md Normal file
View File

@@ -0,0 +1,154 @@
# Comment contribuer
👍🎉 Premièrement, merci de prendre le temps de lire ceci et de contribuer! 🎉👍
Les contributions de tiers nous aide à améliorer et faire grandir QMK. Nous voulons rendre les pull requests et le processus de contribution utile et simple à la fois pour les contributeurs et les mainteneurs. C'est pourquoi nous avons mis en places des directives pour les contributeurs afin que votre pull request puisse être accepté sans changement majeur.
* [Aperçu du projet](#project-overview)
* [Conventions de codage](#coding-conventions)
* [Directives générales](#general-guidelines)
* [Que veut dire le code de conduite pour moi?](#what-does-the-code-of-conduct-mean-for-me)
## Je ne veux pas lire tout ce pavé! J'ai juste une question!
Si vous voulez poser une question sur QMK, vous pouvez le faire sur le [sous-reddit OLKB](https://reddit.com/r/olkb) ou sur [Discord](https://discord.gg/Uq7gcHh).
Merci de garder ceci en tête:
* Cela peut prendre plusieurs heures pour que quelqu'un réponde à votre question. Merci d'être patient!
* Tous ceux impliqués avec QMK fait don de son temps et de son énergie. Nous ne sommes pas payés pour travailler sur ou répondre aux questions concernant QMK.
* Essayez de poser vos questions de manière à ce qu'elles soient le plus simple à répondre possible. Si vous n'êtes pas sûrs de savoir comment faire, voici quelques bon guides (en anglais):
* https://opensource.com/life/16/10/how-ask-technical-questions
* http://www.catb.org/esr/faqs/smart-questions.html
# Aperçu du projet
QMK est majoritairement écrit en C, avec quelques fonctions et parties spécifiques écrites en C++. Il est destiné aux processeurs intégrés que l'on trouve dans des clavier, particulièrement AVR ([LUFA](http://www.fourwalledcubicle.com/LUFA.php)) et ARM ([ChibiOS](http://www.chibios.com)). Si vous maîtrisez déjà la programmation sur Arduino, vous trouverez beaucoup de concepts et de limitations familiers. Une expérience préalable avec les Arduino n'est pas nécessaire à contribuer avec succès à QMK.
<!-- FIXME: We should include a list of resources for learning C here. -->
# Où trouver de l'aide?
Si vous avez besoin d'aide, vous pouvez [ouvrir une issue](https://github.com/qmk/qmk_firmware/issues) ou [un chat sur Discord](https://discord.gg/Uq7gcHh).
# Comment contribuer?
Vous n'avez encore jamais contribué à un projet open source? Vous vous demandez comment les contributions dans QMK fonctionnent? Voici un aperçu rapide!
0. Enregistrez-vous sur [GitHub](https://github.com).
1. Définissez une keymap à contribuer, [trouvez une issue](https://github.com/qmk/qmk_firmware/issues) que vous souhaitez corriger, ou [une fonction](https://github.com/qmk/qmk_firmware/issues?q=is%3Aopen+is%3Aissue+label%3Afeature) que vous voulez ajouter.
2. Créez un fork sur le dépôt associé avec une issue sur votre compte GitHub. Cela veut dire que vous allez avoir une copie du dépôt sous `votre-login-GitHub/qmk_firmware`.
3. Clonez le dépôt sur votre machine locale en utilisant `git clone https://github.com/login-github/repository-name.git`.
4. Si vous travaillez sur une nouvelle fonctionnalité, pensez à ouvrir une issue pour parler avec nous du travail que vous souhaitez démarrer.
5. Créez une nouvelle branche pour votre correctif en utilisant `git checkout -b nom-de-branche`.
6. Faites les changements nécessaires pour corriger le problème ou ajouter la fonctionnalité.
7. Utilisez `git add chemin-de-fichier` pour ajouter les contenus des fichiers modifiés au "snapshot" que git utilise pour gérer l'état du projet, appelé aussi l'index.
8. Utilisez `git commit -m "Insérez une description courte des changements (en anglais)"` pour enregistrer le contenu de l'index avec un message descriptif.
9. Poussez les changements vers votre dépôt sur GitHub en utilisant `git push origin nom-de-branche`.
10. Créez un pull request sur [QMK Firmware](https://github.com/qmk/qmk_firmware/pull/new/master).
11. Donnez un titre à votre pull request en utilisant une description courte des changements que vous avez fait et ajoutez le numéro de l'issue ou du bug associé avec votre changement. Les commentaires de PR devraient se faire en anglais de préférence. Par exemple, vous pouvez utiliser un titre tel que celui-là: "Added more log outputting to resolve #4352".
12. Dans la description du pull request, expliquez les changements que vous avez fait et tous les problèmes qui existent, selon vous, sur le pull request que vous avez fait. Vous pouvez aussi utiliser la description pour poser des questions au mainteneur. Il n'est pas nécessaire que votre pull request soit parfait (aucun pull request ne l'est), le reviewer sera là pour vous aider à résoudre les problèmes et l'améliorer!
13. Attendez que le pull request soit revu par un mainteneur.
14. Faites des changements au pull request si le mainteneur le recommande.
15. Célébrez votre succès une fois votre pull request fusionné!
# Conventions de codage
La grande majorité de notre style est plutôt simple à comprendre. Si vous connaissez C ou Python, vous ne devriez pas avoir trop de difficulté avec notre style.
* [Conventions de codage - C](coding_conventions_c.md)
* [Conventions de codage - Python](coding_conventions_python.md)
# Directives générales
Nous avons un certain nombre de type de changements dans QMK, chacun nécessitant un niveau de rigueur différent. Nous voulons que vous gardiez les directives suivantes en tête quel que soit le changement que vous êtes en train de faire.
* Séparez les PR dans des unités logiques. Par exemple, ne soumettez pas un PR qui couvre deux fonctionnalités séparées, soumettez plutôt un PR pour chaque fonctionnalité.
* Vérifiez les espaces blancs non nécessaires avec `git diff --check` avant de commit.
* Assurez-vous que votre code compile.
* Keymaps: Assurez-vous que `make keyboard:your_new_keymap` ne renvoie pas d'erreur.
* Claviers: Assurez-vous que `make keyboard:all` ne renvoie pas d'erreur.
* Core: Assurez-vous que `make all` ne renvoie pas d'erreur.
* Assurez-vous que les messages de commit soient compréhensibles d'eux-mêmes. Vous devriez écrire une description simple (pas plus de 70 caractères) sur la première ligne, suivi d'une ligne vide, suivi d'un détail de votre commit, si nécessaire. Exemple:
```
Adjust the fronzlebop for the kerpleplork
The kerpleplork was intermittently failing with error code 23. The root cause was the fronzlebop setting, which causes the kerpleplork to activate every N iterations.
Limited experimentation on the devices I have available shows that 7 is high enough to avoid confusing the kerpleplork, but I'd like to get some feedback from people with ARM devices to be sure.
```
## Documentation
La documentation est l'une des manières les plus simples de démarrer la contribution sur QMK. Il est simple de trouver des endroits où la documentation est fausse ou incomplète, et il est tout aussi simple de la corriger! Nous avons aussi grandement besoin de quelqu'un pour éditer notre documentation, donc si vous avez des compétences en édition mais que vous n'êtes pas sûr de savoir où aller, n'hésitez pas [demandez de l'aide](#where-can-i-go-for-help)!
Vous trouverez toute notre documentation dans le répertoire `qmk_firmware/docs`, ou si vous préférez utiliser des outils web, vous pouvez cliquer sur le bouton "Suggest An Edit" en haut de chaque page sur http://docs.qmk.fm/.
Lorsque vous donnez des exemples de code dans la documentation, essayez de suivre les conventions de nommage utilisées ailleurs dans la documentation. Par exemple, standardisez les enums en utilisant `my_layers` ou `my_keycodes` afin de garder une consistance:
```c
enum my_layers {
_FIRST_LAYER,
_SECOND_LAYER
};
enum my_keycodes {
FIRST_LAYER = SAFE_RANGE,
SECOND_LAYER
};
```
## Keymaps
La plupart des contributeurs débutants démarrent avec leurs keymaps personnelles. Nous essayons de garder les standards pour les keymaps pluôt simple (les keymaps reflètent, après tout, la personnalité de leurs créateurs) mais nous demandons que vous suiviez les directives suivantes afin que d'autres puissent découvrir et apprendre de votre keymap.
* Ecrivez un fichier `readme.md` en utilisant [la template](documentation_templates.md).
* Tous les PR de keymaps doivent être "squashés", donc si la manière dont vos commits sont squashés vous est important, vous devez le faire vous-même.
* Ne regroupez pas des fonctionnalités avec votre PR de keymap. Envoyez d'abord votre fonctionnalité, puis créez un second PR pour la keymap.
* N'incluez pas de fichier `Makefile` dans votre dossier de keymap (ils ne sont plus utilisés)
* Mettez à jour les copyrights dans les en-têtes de fichiers (cherchez `%YOUR_NAME%`)
## Claviers
Les claviers sont la raison d'être de QMK. Certains claviers sont maintenus par la communauté, alors que d'autre sont maintenus par les gens responsables de la création du clavier. Le fichier `readme.md` devrait vous informer de qui maintient le clavier. Si vous avez des questions concernant un clavier en particulier, vous pouvez [Ouvrir une issue](https://github.com/qmk/qmk_firmware/issues) et tagger le mainteneur dans votre question.
Nous vous demandons aussi que vous suiviez ces directives:
* Ecrivez un fichier `readme.md` en utilisant [le template](documentation_templates.md).
* Gardez un nombre de commits raisonnable, ou nous squasherons votre PR.
* Ne regroupez pas des fonctionnalités avec le PR pour votre clavier. Envoyez d'abord votre fonctionnalité, puis créez un second PR pour le clavier.
* Appelez les fichiers `.c`/`.h` du nom du dossier parent, par exemple `/keyboards/<kb1>/<kb2>/<kb2>.[ch]`
* N'incluez pas de fichier `Makefile` dans votre dossier de keymap (ils ne sont plus utilisés)
* Mettez à jour les copyrights dans les en-têtes de fichiers (cherchez `%YOUR_NAME%`)
## Quantum/TMK Core
Faites attention d'être sûr d'implémenter votre nouvelle fonctionnalité de la meilleure manière qu'il soit avant d'investir beaucoup de travail à son développement. Vous pouvez apprendre les bases de QMK en lisant [Comprendre QMK](understanding_qmk.md), qui vous donnera une idée du flux du programme QMK. A partir de là, parlez nous afin de définir la meilleure façon d'implémenter votre idée. Il y a deux façons principale de le faire:
* [Chat sur Discord](https://discord.gg/Uq7gcHh)
* [Ouvrir une Issue](https://github.com/qmk/qmk_firmware/issues/new)
Les PR de nouvelles fonctionnalités de de correction de bug affectent tous les claviers. Nous sommes aussi dans un processus de restructuration de QMK. Pour cette raison, il est absolument nécessaire que tout changement important ou significatif soit discuté avant que l'implémentation soit faite. Si vous ouvrez un PR sans nous avoir parlé, préparez-vous à faire des refontes significatives si vos changements ne sont pas compatibles avec ce que nous avons planifié.
Voici quelques choses à garder en tête lorsque vous travaillez sur une fonctionnalité ou un bug fix.
* **Désactivé par défaut** - la mémoire est plutôt limitée sur la plupart des puces que QMK supporte, et il est important que les keymaps courantes ne soient pas cassées. S'il vous plaît faites que vos features doivent être **activées** plutôt que désactivées. Si vous pensez qu'elle devrait être activée par défaut, ou que cela réduit la taille du code, parlez-nous-en.
* **Compilez localement avant de soumettre** - Cela devrait aller sans dire, mais votre code doit compiler! Notre système Travis devrait relever les problèmes, mais il est généralement plus rapide de compiler quelques claviers en local plutôt que d'attendre le retour des résultats
* **Faites attention aux révisions et différentes bases de puces** - beaucoup de claviers ont des révisions qui permettent des changements de configuration mineurs, voir des bases de chip différentes. Essayez de faire que votre fonctionnalité soit supportée à la fois sur ARM et AVR, ou désactivez-là automatiquement sur les plateformes non supportées.
* **Expliquez votre fonctionnalité** - Documentez-là dans `docs/`, soit dans un nouveau fichier, ou dans une partie d'un fichier existant. Si vous ne la documentez pas, personne ne pourra bénéficier de votre dur labeur.
Nous vous demandons aussi de suivre ces directives:
* Gardez un nombre de commits raisonnable, ou nous squasherons votre PR.
* Ne regroupez pas des claviers ou des keymaps avec des changements core. Soumettez vos changements core en premier.
* Ecrivez des [Tests Unitaires](unit_testing.md) pour votre fonctionnalité.
* Suivez le style du fichier que vous modifiez. Si le style n'est pas clair ou qu'il y a un mélange de fichiers, vous devriez vous conformer aux [conventions de codage](#coding-conventions) au dessus.
## Refactoriser
Afin de maintenir une vision claire sur comment les choses sont architectuées dans QMK, nous essayons de planifier des refactorisations en profondeur et qu'un collaborateur fasse le changement. Si vous avez une idée de refactorisation, ou une suggestion, [ouvrez une issue] [open an issue](https://github.com/qmk/qmk_firmware/issues), nous adorons discuter de comment améliorer QMK.
# Que veut dire le code de conduite pour moi?
Note [Code De Conduite](https://github.com/qmk/qmk_firmware/blob/master/CODE_OF_CONDUCT.md) veut dire que vous avez la responsabilité de traiter tout le monde dans le projet avec respect et courtoisie, peu importe leur identité. Si vous êtes victime d'une attitude ou de commentaires inappropriés, tels que décrit dans notre Code de Conduite, nous sommes là pour vous et nous ferons de notre mieux pour nous assurer que le fautif soit réprimandé, tel que décrit dans notre code.

239
docs/fr-FR/flashing.md Normal file
View File

@@ -0,0 +1,239 @@
# Instructions pour flasher et informations sur les bootloader
Les claviers utilisent différents types de bootloaders et certains doivent être flashés différement. Heureusement, certains projets comme la [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) ont pour objectifs de permettre de flasher les différents bootloader sans trop se faire de soucis et ça peu importe les manières de les flasher.
Si vous avez un bootloader sélectionné avec la variable `BOOTLOADER` dans votre fichier `rules.mk` alors QMK vas automatiquement calculer si votre fichier .hex n'est pas trop grand pour être flashé sur votre appareil, et il affichera la taille finale du firmware. Pour vérifier la taille manuellement, vous pouvez aussi compiler le firmware avec l'option `check-size`. Exemple : `make planck/rev4:default:check-size`.
## DFU
Le bootloader pour les processeurs Atmel DFU est fourni par défaut sur tous les processeurs atmega32u4. Celui-ci est utilisé par beaucoup de claviers plus vieux que les OLKB et Clueboard qui ont leur propre ICs sur leurs PCBs. D'autres claviers utilisent le bootloader DFU de LUFA (ou son fork QMK), notamment les nouveaux claviers OLKB. Ce dernier ajoute des fonctionnalités spécifiques sur le matériel.
Pour vérifier la compatibilité avec le bootloader DFU, vérifiez que ce bloc de code est présent dans votre fichier `rules.mk`. Parfois il peut être inscrit `lufa-dfu` ou `qmk-dfu` à la place.
```make
# Bootloader selection
# Teensy halfkay
# Pro Micro caterina
# Atmel DFU atmel-dfu
# LUFA DFU lufa-dfu
# QMK DFU qmk-dfu
# ATmega32A bootloadHID
# ATmega328P USBasp
BOOTLOADER = atmel-dfu
```
Méthodes de flash compatibles :
* [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) (interface graphique recommandé)
* [dfu-programmer](https://github.com/dfu-programmer/dfu-programmer) / `:dfu` avec QMK (outil en ligne de commande recommandé)
* [Atmel's Flip](http://www.microchip.com/developmenttools/productdetails.aspx?partno=flip) (non recommandé)
Ordre des actions:
1. Pressez le keycode `RESET`, ou appuyez sur le bouton physique RESET ou alors créez un contact entre RST et GND.
2. Attendez que l'OS detecte l'appareil.
3. Éffacez la mémoire, cela peut être fait automatiquement.
4. Flasher le fichier .hex.
5. Redémarrez l'appareil en mode «application», cela peut être fait automatiquement.
Alternativement:
make <keyboard>:<keymap>:dfu
### DFU QMK
QMK a un fork du bootloader LUFA DFU qui vous permet de faire un simple scan de la matrice pour quitter le bootloader et retourner à l'application. En même temps que le flash se produira, il est possible de faire flasher un led ou de produire un son via un haut parleur. Pour activer ces fonctionnalités, vous pouvez utiliser ce bloc dans votre fichier `config.h` (La touche permettant de quitter le bootloader a besoin d'être reliée entre les ports définis en INPUT et OUTPUT ici):
#define QMK_ESC_OUTPUT F1 // usually COL
#define QMK_ESC_INPUT D5 // usually ROW
#define QMK_LED E6
#define QMK_SPEAKER C6
Le fabricant et le nom du produit proviennent de vos définitions dans fichier `config.h`, et la chaîne de caractère «bootloader» est ajoutée au nom du produit.
Pour génerer le bootloader, utilisez la cible `bootloader`. Exemple:`make planck/rev4:default:bootloader`.
Pour génerer un fichier .hex prêt pour la production qui contiendra tant l'application que le bootloader, utilisez la cible `production`. Exemple:`make planck/rev4:default:production`.
### Commandes DFU
Il y a plusieurs commandes DFU que vous pouvez utiliser pour flasher le firmware sur un appareil DFU.
* `:dfu` - C'est l'option normale qui attend qu'un appareil DFU soit disponible et qui flashe le firmware dès que c'est le cas. La vérification sera faite toutes les 5 secondes.
* `:dfu-ee` - Cette option flash un fichier `.eep` à la place d'un fichier `.hex`. Ce cas est plutôt rare.
* `:dfu-split-left` - Cette option flashe le firmware normal comme avec l'option (`:dfu`). Mais cela aussi flash le coté gauche du fichier EEPROM pour les claviers scindés. _C'est l'option idéale pour un clavier scindé basé sur le Elite C_
* `:dfu-split-right` - Cette option flashe le firmware normal comme avec l'option (`:dfu`). Mais cela aussi flash le coté droite du fichier EEPROM pour les claviers scindés. _C'est l'option idéale pour un clavier scindé basé sur le Elite C_
## Caterina
Les cartes arduinos et leurs clones utilisent le [bootloader Caterina](https://github.com/arduino/ArduinoCore-avr/tree/master/bootloaders/caterina) (tous les claviers utilisant un Pro Micro, ou un clone). Ils utilisent aussi le protocole avr109 pour communiquer en virtuellement en série (serial en anglais). Les bootloaders comme le [A-Star](https://www.pololu.com/docs/0J61/9) sont basés sur Caterina.
Pour vérifier la compatibilité avec un bootloader Caterina, vérifiez que ce bloc est présent dans votre fichier `rules.mk`:
```make
# Bootloader selection
# Teensy halfkay
# Pro Micro caterina
# Atmel DFU atmel-dfu
# LUFA DFU lufa-dfu
# QMK DFU qmk-dfu
# ATmega32A bootloadHID
# ATmega328P USBasp
BOOTLOADER = caterina
```
Flashers compatibles:
* [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) (Interface graphique recommandée)
* [avrdude](http://www.nongnu.org/avrdude/) avec avr109 / `:avrdude` (Outil en ligne de commande recommandé)
* [AVRDUDESS](https://github.com/zkemble/AVRDUDESS)
Séquence de flash :
1. Pressez la touche avec le keycode `RESET`, ou reliez les ports GND et RST. Vous n'avez que 7 secondes pour flasher une fois que l'opération a été faite.
2. Attendez que l'OS détecte l'appareil.
3. Flasher le fichier .hex.
4. Attendez que l'appareil redémarre automatiquement.
ou, utilisez:
make <keyboard>:<keymap>:avrdude
#### Commandes Caterina
Il existe un certain nombre de commandes DFU que vous pouvez utiliser pour mettre à jour le firmware sur un périphérique DFU:
* `: avrdude` - Il sagit de loption normale. Le script va attendre quun appareil Caterina soit disponible. Dès que cest le cas, il flash le firmware. Il attendra de détecter un nouveau port COM pour le flasher.
* `: avrdude-loop` - Cela fonctionne de la même manière que`: avrdude`, mais une fois que chaque périphérique est flashé, il tentera de flasher à nouveau. Cela peut être utile pour flasher plusieurs claviers à la suite. _Cela implique de sortir manuellement de la boucle en appuyant sur Ctrl + C, Cmd + C ou un raccourci équivalent selon votre OS_
* `: avrdude-split-left` - Cela fonctionne de la même manière que la fonction (`: avrdude`). Toutefois, cela permet aussi de flasher le coté gauche de l'EEPROM des claviers splittés / divisés. C'est donc la méthode recommandée pour les claviers splittés avec Pro Micro.
* `: avrdude-split-right` - Cela fonctionne de la même manière que la fonction (`: avrdude`). Toutefois, cela permet aussi de flasher le coté droite de l'EEPROM des claviers splittés / divisés. C'est donc la méthode recommandée pour les claviers splittés avec Pro Micro.
## Halfkay
Halfkay est un protocole ultra-simple développé par PJRC qui utilise HID et qui est fourni avec tous les Teensys après le modèle 2.0.
Pour vérifier la compatibilité avec le booloader Halfkay, vérifiez que ce bloc est présent dans votre fichier `rules.mk`:
```make
# Bootloader selection
# Teensy halfkay
# Pro Micro caterina
# Atmel DFU atmel-dfu
# LUFA DFU lufa-dfu
# QMK DFU qmk-dfu
# ATmega32A bootloadHID
# ATmega328P USBasp
BOOTLOADER = halfkay
```
Flasher compatibles:
* [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) (Interface graphique recomandée)
* [Teensy Loader](https://www.pjrc.com/teensy/loader.html) (petit utilitaire ultra simple)
[Teensy Loader en ligne de commande](https://www.pjrc.com/teensy/loader_cli.html) (Outil en ligne de commande recommandé)
Séquence de flash:
1. Pressez la touche du keycode `RESET`, ou reliez les ports RST et GND rapidement. Vous avez ensuite 7 secondes pour réaliser le flash.
2. Attendez que l'OS détecte l'appareil.
3. Flasher le fichier .hex.
4. Redémarrez l'appareil en mode «application». Cela peut être fait automatiquement.
## USBasploader
USBasploader est un bootloader développé par matrixstorm. Il est utilisé sur des processeurs AVR non-USB comme le ATmega328P, qui fonctionne grâce à V-USB.
Pour vérifier la compatibilité avec le booloader USBasploader, vérifiez que ce bloc est présent dans votre fichier `rules.mk`:
```make
# Bootloader selection
# Teensy halfkay
# Pro Micro caterina
# Atmel DFU atmel-dfu
# LUFA DFU lufa-dfu
# QMK DFU qmk-dfu
# ATmega32A bootloadHID
# ATmega328P USBasp
BOOTLOADER = USBasp
```
Flashers compatibles:
* [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) (Interface graphique recommandé)
* [avrdude](http://www.nongnu.org/avrdude/) avec le programmeur `usbasp`.
* [AVRDUDESS](https://github.com/zkemble/AVRDUDESS)
Séquence de flash:
1. Pressez la touche du keycode `RESET`, ou reliez le port de boot pendant que RST et GND snt reliés. Cela doit être fait très rapidement.
2. Attendez que l'OS détecte l'appareil.
3. Flasher le fichier .hex.
4. Redémarrez l'appareil en mode «application». Cela peut être fait automatiquement.
## BootloadHID
BootloadHID est un bootloader pour les microcontrôleurs AVR. L'utilitaire de téleversement ne demande pas de drivers au niveau du kernel et peut être lancé sans installer aucune DLLs.
Pour vérifier la compatibilité avec le bootloader bootloadHID, vérifiez que ce bloc existe dans votre fichier `rules.mk` :
```make
# Bootloader selection
# Teensy halfkay
# Pro Micro caterina
# Atmel DFU atmel-dfu
# LUFA DFU lufa-dfu
# QMK DFU qmk-dfu
# ATmega32A bootloadHID
# ATmega328P USBasp
BOOTLOADER = bootloadHID
```
Utilitaires de flash compatibles:
* [HIDBootFlash](http://vusb.wikidot.com/project:hidbootflash) (Utilitaire avec interface graphique recommandé)
* [bootloadhid Command Line](https://www.obdev.at/products/vusb/bootloadhid.html) / `:BootloadHID` avec QMK (utilitaire en ligne de commande recommandé)
Séquence de flash
1. Entrez dans le bootloader en utilisant l'une de ces méthodes:
* Pressez la touche du keycode `RESET` (Cela ne fonctionnera pas sur certains appareils).
* Verrouillez la touche «Salt» tout en branchant le clavier (Généralement ce principe est documenté dans le fichier readme du clavier)
2. Attendez que l'OS détecte l'appareil.
3. Flasher le fichier .hex.
4. Redémarrez l'appareil en mode «application». Cela peut être fait automatiquement.
Ou alors:
make <keyboard>:<keymap>:bootloadHID
## STM32
Tous les processeurs STM32 contiennent un bootloader installé en usine qui ne peut pas être modifié ou supprimé. Certains processeurs STM32 ont des bootloaders qui ne peuvent pas être programmés par USB (ex:STM32F103) mais le processus reste le même.
Pour le moment, aucune variable `BOOTLOADER` n'est nécessaire dans le fichier `rules.mk`.
Flashers compatibles:
* [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) (interface graphique recommandé)
* [dfu-util](https://github.com/Stefan-Schmidt/dfu-util) / `:dfu-util` (utilitaire en ligne de commande recommandé)
Séquence pour flasher:
1. Entrez dans le bootloader en utilisant l'une de ces méthodes:
* Utilisez une touche sur laquelle le keycode `RESET` (Cela peut ne pas fonctionner sur les appareils STM32F042)
* Si un circuit de réinitialisation (Reset) est présent alors utilisé le bouton qui lui est dédié.
* Autrement, vous devez réaliser une liaison entre BOOT0 et VCC (en appuyant sur le bouton ou à l'aide d'un pont) puis faire un pont entre RESET et GND et enfin relacher le pont BOOT0.
2. Attendre que l'os détecte l'appareil.
3. Flasher un fichier `.bin`.h
* Vous allez recevoir un avertissement à propos de la signature DFU. Ignorez-la.
4. Réinitialisez l'appareil en mode «application». Cela peut être fait automatiquement.
* Si vous êtes en train de travailler en ligne de commande, par exemple avec un `make planck/rev6:default:dfu-util` alors soyez bien sur que l'argument `:leave` est passé aux arguments DFU grâce à la variable `DFU_ARGS` à l'intérieur de votre fichier `rules.mk` (Ex:`DFU_ARGS = -d 0483:df11 -a 0 -s 0x08000000:leave`) afin que votre appareil redémarre après avoir été flashé.
### Commandes STM32
Il y a différentes commandes que vous pouvez utiliser pour flasher un firmware dans un appareil STM32:
* `:dfu-util` - C'est l'option standard pour flasher un appareil STM32. Le script attendra qu'un bootloader STM32 soit présent.
* `:dfu-util-split-left` - Permet de flasher un firmware normalement, tout comme l'option précédente mais permet de configurer le côté gauche des paramètres EEPROM sur un clavier scindé.
* `:dfu-util-split-right` - Permet de flasher un firmware normalement, tout comme l'option précédente mais permet de configurer le côté droit des paramètres EEPROM sur un clavier scindé.
* `:st-link-cli` - Cela permet de flasher le firmware avec l'utilitaire en ligne de commande ST-LINK's plutôt que d'utiliser dfu-util.

View File

@@ -0,0 +1,15 @@
# Trouver de l'aide
Il y a beaucoup de ressources pour trouver de l'aide avec QMK.
## Chat temps-réel
Vous trouverez des développeurs QMK et des utilisateurs sur notre [Serveur Discord](https://discord.gg/Uq7gcHh) principal. Il y a des canaux spécifiques dans le serveur pour discuter des firmwares, toolbox, hardware et configurateurs.
## Sous-Reddit OLKB
Le forum officiel de QMK est [/r/olkb](https://reddit.com/r/olkb) sur [reddit.com](https://reddit.com).
## Tickets GitHub
Vous pouvez ouvrir un [ticket sur GitHub](https://github.com/qmk/qmk_firmware/issues). Ceci est spécialement pratique lorsque votre problème demande une discussion sur le long terme ou un débugage.

View File

@@ -0,0 +1,61 @@
# Comment utiliser GitHub avec QMK
GitHub peut être un peu compliqué pour ceux qui n'y sont pas familier. Ce guide va vous expliquer chaque étape de "fork", clone et envoi d'un pull request avec QMK.
?> Ce guide part du principe que vous êtes suffisamment à l'aise pour envoyer commandes sur la ligne de commande et que vous avez Git installé sur votre système.
Commencez par la [page GitHub de QMK](https://github.com/qmk/qmk_firmware), et vous verrez un bouton dans le coin en haut à droite qui indique "Fork":
![Fork on Github](http://i.imgur.com/8Toomz4.jpg)
Si vous faites partie d'une organisation, vous aurez besoin de savoir quel compte utiliser pour le fork. Dans la plupart des cas, vous voudrez créer le fork dans votre compte personnel. Une fois le fork complet (cela peut quelques fois prendre un peu de temps), appuyez sur le bouton "Clone or download":
![Download from Github](http://i.imgur.com/N1NYcSz.jpg)
Faites attention à sélectionner "HTTPS", et sélectionnez le lien et copiez-le:
![HTTPS link](http://i.imgur.com/eGO0ohO.jpg)
Ensuite, entrez `git clone` dans la ligne de commande, et collez votre lien:
```
user@computer:~$ git clone https://github.com/whoeveryouare/qmk_firmware.git
Cloning into 'qmk_firmware'...
remote: Counting objects: 46625, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 46625 (delta 0), reused 0 (delta 0), pack-reused 46623
Receiving objects: 100% (46625/46625), 84.47 MiB | 3.14 MiB/s, done.
Resolving deltas: 100% (29362/29362), done.
Checking out files: 100% (2799/2799), done.
```
Vous avez maintenant votre fork QMK sur votre machine locale, vous pouvez ajouter votre keymap, la compiler et la flasher sur votre board. Une fois heureux avec vos changements, vous pouvez les ajouter, commit, et pousser vers votre fork comme suit:
```
user@computer:~$ git add .
user@computer:~$ git commit -m "adding my keymap"
[master cccb1608] adding my keymap
1 file changed, 1 insertion(+)
create mode 100644 keyboards/planck/keymaps/mine/keymap.c
user@computer:~$ git push
Counting objects: 1, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (1/1), done.
Writing objects: 100% (1/1), 1.64 KiB | 0 bytes/s, done.
Total 1 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), completed with 1 local objects.
To https://github.com/whoeveryouare/qmk_firmware.git
+ 20043e64...7da94ac5 master -> master
```
Vos changements existent maintenant dans votre fork sur GitHub. Si vous allez à cette adresse (`https://github.com/<whoeveryouare>/qmk_firmware`), vous pouvez créer un nouveau "Pull Request" en cliquant sur ce bouton:
![New Pull Request](http://i.imgur.com/DxMHpJ8.jpg)
Maintenant, vous pourrez voir exactement ce que vous avez commité. Si ça vous semble bien, vous pouvez le finaliser en cliquant sur "Create Pull Request":
![Create Pull Request](http://i.imgur.com/Ojydlaj.jpg)
Une fois transmis, nous pourrons vous parler de vos changements, vous demander de faire des changements, et éventuellement de les accepter!
Merci de contribuer à QMK :)

View File

@@ -0,0 +1,62 @@
# Introduction
Le but de cette page est d'expliquer les informations de base qui vous serons nécessaire pour travailler sur le projet QMK. Il a pour pré-requis que vous soyez familier à la navigation à l'aide d'un shell Unix, mais ne s'attend pas à ce que vous soyez familier avec C ou la compilation en utilisant make.
## Structure de base de QMK
QMK est un fork du projet [tmk_keyboard](https://github.com/tmk/tmk_keyboard) créé par [Jun Wako](https://github.com/tmk). Le code originel de TMK, avec quelques modifications, se trouve dans le dossier `tmk`. Les additions que QMK amène au projet se trouvent dans le dossier `quantum`. Les projets de clavier se trouvent dans les dossiers `handwired` et `keyboard`.
### Structure du Userspace
Dans le dossier `users` se trouve un répertoire pour chaque utilisateur. C'est un endroit où les utilisateurs peuvent mettre du code qui serait partagé entre plusieurs claviers. Merci de lire la documentation [Fonctionnalité Userspace](feature_userspace.md) pour plus d'information.
### Structure du projet clavier
Dans le dossier `keyboards`, son sous-dossier `handwired` et ses sous-dossiers pour les revendeurs et fabriquants (par exemple `clueboard`) se trouve un répertoire pour chaque projet clavier. Par exemple `qmk_firmware/keyboards/clueboard/2x1800`.
A l'intérieur, vous trouverez la structure suivante:
* `keymaps/`: différentes keymaps qui peuvent être compilées
* `rules.mk`: Ce fichier définit les options "make" par défaut. Ne modifiez pas ce fichier directement, utilisez à la place un `rules.mk` spécifique à la keymap.
* `config.h`: Ce fichier définit les options de compilation par défaut. Ne modifiez pas ce fichier directement, utilisez à la place un `config.h` spécifique à la keymap.
* `info.json`: Le fichier utilisé pour définir les options de layout de QMK Configurator. Voyez [Support Configurator](reference_configurator_support.md) pour plus d'information.
* `readme.md`: une brève description du clavier.
* `<keyboardName>.h`: Ce fichier définit le layout du fichier par rapport à la matrice de commutation.
* `<keyboardName>.c`: Ce fichier définit du code custom pour le clavier.
Pour plus d'information sur la structure du projet, voyez [Directives clavier QMK](hardware_keyboard_guidelines.md).
### Structure d'une Keymap
Dans chaque dossier keymap, vous allez trouver les fichiers suivants. Seul le fichier `keymap.c` est nécessaire, et si le reste des fichiers n'existent pas, les options par défaut seront choisies.
* `config.h`: les options de configuration de votre keymap
* `keymap.c`: tout le code de votre keymap, requis
* `rules.mk`: les features de QMK qui sont activées
* `readme.md`: une description de votre keymap, comment d'autres l'utiliseront, et des explications des fonctionnalités. Uploadez les images vers un service comme imgur.
# Le fichier `config.h`
Le fichier `config.h` peut être mis à 3 endroits:
* keyboard (`/keyboards/<keyboard>/config.h`)
* userspace (`/users/<user>/config.h`)
* keymap (`/keyboards/<keyboard>/keymaps/<keymap>/config.h`)
Le système de compilation cherche automatiquement les fichiers de configuration dans l'ordre au-dessus. Si vous souhaitez surcharger une configuration définie par un `config.h` précédent, vous devrez d'abord ajouter le code suivant.
```
#pragma once
```
Ensuite, pour surcharger l'option du fichier `config.h` précédent, vous devez `#undef` puis `#define` l'option à nouveau.
Voici à quoi l'ensemble du code ressemble une fois regroupé:
```
#pragma once
// overrides go here!
#undef MY_SETTING
#define MY_SETTING 4
```

23
docs/fr-FR/newbs.md Normal file
View File

@@ -0,0 +1,23 @@
# Le Guide pour débutant complet à QMK
QMK est un firmware Open Source pour votre clavier mécanique. Vous pouvez utiliser QMK pour customiser votre clavier de manière simple et puissante. Tout le monde, du débutant complet au développeur avancé, ont utilisé avec succès QMK pour customiser leur clavier. Ce guide vous aidera à faire de même, quelles que soient vos compétences.
Vous voulez savoir si votre clavier peut utiliser QMK? Si c'est un clavier mécanique que vous avez vous-même construit, il y a de bonnes chances que vous pouvez. Nous supportons un [grand nombre de "hobbyist boards"](http://qmk.fr/keyboards), donc même si votre clavier ne peut pas utiliser QMK, vous ne devriez pas avoir trop de problème pour en trouver un qui vous convienne.
## Vue d'ensemble
Il y a 7 sections principales dans ce guide:
* [Pour débuter](fr-FR/newbs_getting_started.md)
* [Compiler votre premier firmware en utilisant la ligne de commande](fr-FR/newbs_building_firmware.md)
* [Compiler votre premier firmware en utilisant l'interface graphique en ligne](fr-FR/newbs_building_firmware_configurator.md)
* [Flasher le Firmware](fr-FR/newbs_flashing.md)
* [Test et Débuggage](fr-FR/newbs_testing_debugging.md)
* [Bonnes pratiques Git](fr-FR/newbs_best_practices.md)
* [Ressources d'apprentissage](fr-FR/newbs_learn_more_resources.md)
Ce guide a pour but principal d'aider quelqu'un qui n'a jamais compilé de logiciel avant. Les recommandations et les choix qu'il contient vont donc dans ce sens. Il y a des méthodes alternatives pour beaucoup de ces procédures, et nous supportons la plupart de ces alternatives. Si vous avez un doute sur comment accomplir une tâche, vous pouvez [nous demander de l'aide](fr-FR/getting_started_getting_help.md).
## Ressources additionnelles
* [Thomas Baart's QMK Basics Blog](https://thomasbaart.nl/category/mechanical-keyboards/firmware/qmk/qmk-basics/) Un blog créé par un utilisateur qui couvre les bases de l'utilisation du Firmware QMK, vue d'un point de vue d'un nouvel utilisateur (anglais).

View File

@@ -0,0 +1,161 @@
# Bonnes Pratiques
## Ou, "Comment j'ai appris à ne plus m'en faire et aimer Git."
Ce document a pour but d'apprendre aux novices les meilleures solutions pour faciliter la contribution à QMK. Nous allons étudier le processus de contribution à QMK, détaillant quelques moyens de rendre cette tâche plus simple. Nous allons faire quelques erreurs afin de vous apprendre à les résoudre.
Ce document suppose les choses suivantes:
1. Vous avez un compte GitHub, et avez [créé un "fork" pour le dépôt qmk_firmware](fr-FR/getting_started_github.md) avec votre compte.
2. Vous avez [configuré votre environnement de compilation](fr-FR/newbs_getting_started.md?id=environment-setup).
## La branche master de votre fork: Mettre à jour souvent, ne jamais commit
Il est hautement recommandé pour le développement de QMK, peu importe ce qui est fait ou où, de garder votre branche `master` à jour, mais de ne ***jamais*** commit dessus. A la place, faites tous vos changements dans une branche de développement et crééz des "pull requests" de votre branche lorsque vous développez.
Pour réduire les chances de conflits de fusion (merge) &mdash; des cas où deux ou plus d'utilisateurs ont édité la même section d'un fichier en parallèle &mdash; gardez votre branche `master` relativement à jour et démarrez chaque nouveau développement en créant une nouvelle branche.
### Mettre à jour votre branche master
Pour garder votre branche `master` à jour, il est recommandé d'ajouter le dépôt du firmware QMK comme un dépôt distant (remote) dans git. pour se faire, ouvrez votre interface de ligne de commande Git et entrez:
```bash
git remote add upstream https://github.com/qmk/qmk_firmware.git
```
Pour vérifier que le dépôt a bien été ajouté, lancez la commande `git remote -v`, qui devrait retourner le résultat suivant:
```bash
$ git remote -v
origin https://github.com/<your_username>/qmk_firmware.git (fetch)
origin https://github.com/<your_username>/qmk_firmware.git (push)
upstream https://github.com/qmk/qmk_firmware.git (fetch)
upstream https://github.com/qmk/qmk_firmware.git (push)
```
Maintenant que c'est fait, vous pouvez vérifier les mises à jour au dépôt en lançant `git fetch upstream`. Cela récupère les branches et les tags &mdash; appelé de manière générale "refs" &mdash; du dépôt QMK, qui a maintenant le surnom `upstream`. Nous pouvons maintenant comparer les données sur notre "fork" `origin` à celles contenues par QMK.
Pour mettre à jour la branche master de votre "fork", lancez les commandes suivantes (en appuyant sur Enter après chaque ligne):
```bash
git checkout master
git fetch upstream
git pull upstream master
git push origin master
```
Cela vous change la branche courante en master, synchronise les données de références du dépôt QMK vers votre ordinateur. La commande pull tire les données de références vers votre branche courante puis les y téleverse. La commande push permet de pousser la branche courante (master) vers votre fork github.
### Faire des changements
Pour faire des changements, créez une nouvelle branche en entrant:
```bash
git checkout -b dev_branch
git push --set-upstream origin dev_branch
```
Ceci crée une branche nommée `dev_branch`, bascule vers cette branche, et ensuite sauvegarde cette nouvelle branche vers votre fork. L'argument `--set-upstream` demande à git d'utiliser votre fork et la branche `dev_branch` à chaque fois que vous utilisez `git push` ou `git pull` depuis cette branche. Vous ne devez l'utiliser que pour le premier "push", après cela, vous pouvez utiliser simplement `git push` ou `git pull`, sans le reste des arguments.
!> Avec `git push`, vous pouvez utiliser `-u` à la place de `--set-upstream` &mdash; `-u` est un alias pour `--set-upstream`.
Vous pouvez appeler votre branche à peu près comme vous voulez, toutefois il est recommandé d'utiliser un nom qui est lié aux changements que vous allez faire.
Par défaut, `git checkout -b` va faire de la branche actuelle la branche de base de votre nouvelle branche. Vous pouvez définir la base de votre nouvelle branche comme étant n'importe quelle branche existante qui n'est pas la courante en utilisant la commande:
```bash
git checkout -b dev_branch master
```
Maintenant que vous avez une branche de développement, ouvrez votre éditeur de texte et faites vos changements. Il est recommandé de faire beaucoup de petits commits dans votre branche. Ainsi, un changement qui crée un problème peut être plus facilement retracé et annulé si nécessaire. Pour faire un changement, éditez et sauvez n'importe quel fichier qui doit être mis à jour, ajoutez les à la *zone de staging* de Git, et commitez les vers votre branche:
```bash
git add path/to/updated_file
git commit -m "My commit message."
```
`git add` ajoute les fichiers qui ont été changés dans la *zone de staging* de Git, qui est sa "zone de chargement". Elle contient tous les changements qui vont être *validés* (committed) par `git commit`, qui sauvegarde les changements vers le dépôt. Utilisez des messages de validation descriptifs afin que vous puissiez savoir ce qui a changé d'un coup d'oeil.
!> Si vous changez beaucoup de fichiers, mais tous les fichiers font partie du même changement, vous pouvez utiliser `git add .` pour ajouter tous les fichiers changés dans le répertoire courant, plutôt que d'avoir à ajouter chaque fichier individuellement.
### Publier Vos Changements
La dernière étape est de pousser vos changements vers votre fork. Pour ce faire, entrez `git push`. Git publie maintenant l'état courant de `dev_branch` vers votre fork.
## Résoudre Les Conflits De Merge
Parfois, lorsque votre travail sur une branche met beaucoup de temps à se compléter, des changements réalisés par d'autres peuvent entrer en conflit avec les changements que vous avez fait sur votre branche au moment où vous avez ouvert un pull request. Ceci est appelé un *conflit de merge*, et c'est ce qui arrive lorsque plusieurs personnes modifient les mêmes parties de mêmes fichiers.
### Rebaser Vos Changements
Un *rebase* est la manière pour Git de prendre les changements qui ont été faits à un point, les annuler, et les réappliquer sur un autre point. Dans le cas d'un conflit de merge, vous pouvez rebaser votre branche pour récupérer les changements qui ont été faits entre le moment où vous avez créé votre branche et le présent.
Pour démarrer, lancez les commandes suivantes:
```bash
git fetch upstream
git rev-list --left-right --count HEAD...upstream/master
```
La commande `git rev-list` retourne le nombre de commits qui diffère entre la branche courante et la branche master de QMK. Nous lançons `git fetch` en premier afin d'être sûr que les refs qui représentent l'état courant du dépôt upstream soient à jour. Le résultat de la commande `git rev-list` retourne deux nombres:
```bash
$ git rev-list --left-right --count HEAD...upstream/master
7 35
```
Le premier nombre représente combien il y a eu de commits sur la branche courante depuis qu'elle a été créée, et le second nombre est combien de commits ont été faits sur la branche `upstream/master` depuis que la branche a été créée et, ainsi, les changements qui ne sont pas enregistrés sur la branche courante.
Maintenant que l'état actuel de la branche courante et la branche upstream sont connus, nous pouvons maintenant démarrer une opération de rebase:
```bash
git rebase upstream/master
```
Ceci dit à Git d'annuler les commits de la branche courante puis de les réappliquer sur la branche master de QMK.
```bash
$ git rebase upstream/master
First, rewinding head to replay your work on top of it...
Applying: Commit #1
Using index info to reconstruct a base tree...
M conflicting_file_1.txt
Falling back to patching base and 3-way merge...
Auto-merging conflicting_file_1.txt
CONFLICT (content): Merge conflict in conflicting_file_1.txt
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch' to see the failed patch
Patch failed at 0001 Commit #1
Resolve all conflicts manually, mark them as resolved with
"git add/rm <conflicted_files>", then run "git rebase --continue".
You can instead skip this commit: run "git rebase --skip".
To abort and get back to the state before "git rebase", run "git rebase --abort".
```
Ceci nous dit que nous avons un conflit de merge, et nous donne le nom du fichier en conflit. Ouvrez le fichier conflictuel dans votre éditeur de texte et, quelque part dans le fichier, vous trouverez quelque chose comme ça:
```bash
<<<<<<< HEAD
<p>For help with any issues, email us at support@webhost.us.</p>
=======
<p>Need help? Email support@webhost.us.</p>
>>>>>>> Commit #1
```
La ligne `<<<<<<< HEAD` montre le début d'un conflit de merge et la ligne `>>>>>>> Commit #1` indique la fin, avec les sections conflictuelles séparées par `=======`. La partie du côté `HEAD` vient de la version du fichier provenant de la branche master de QMK, et la partie marquée avec le numéro du commit provient de la branche courrante.
Parce que Git suis *les changements des fichiers*, plutôt que les contenus des fichiers directement, si Git ne peut pas trouver le texte qu'il y avait dans le fichier avant que le commit soit fait, il ne saura pas comment modifier le fichier. Modifier le fichier à nouveau va résoudre le conflit. Faites votre changement, et sauvez le fichier.
```bash
<p>Need help? Email support@webhost.us.</p>
```
Maintenant, lancez:
```bash
git add conflicting_file_1.txt
git rebase --continue
```
Git enregistre le changement dans le fichier conflictuel, et continue à appliquer les commits depuis votre branche jusqu'à ce qu'il arrive à la fin.

View File

@@ -0,0 +1,81 @@
# Compiler Votre Premier Firmware
Maintenant que vous avez configuré votre environnement de build, vous être prêts à compiler un firmware customisé. Pour cette section, nous allons utiliser trois programmes différents: votre explorateur de fichier, votre éditeur de texte et votre fenêtre de terminal. Gardez les 3 ouverts jusqu'à ce que vous ayez terminé et soyez content de votre firmware de clavier.
Si vous avez fermé et rouvert votre fenêtre de terminal depuis le démarrage de ce guide, n'oubliez pas de `cd qmk_firmware` afin que votre terminal soit dans le bon répertoire.
## Naviguez vers votre répertoire keymaps
Démarrez par naviguer dans le répertoire `keymaps` de votre clavier.
?> Si vous êtes sous macOS ou Windows, il y a des commandes que vous pouvez utiliser pour facilement ouvrir le dossier keymaps.
?> macOS:
open keyboards/<keyboard_folder>/keymaps
?> Windows:
start .\\keyboards\\<keyboard_folder>\\keymaps
## Créez une copie de la keymap `default`
Une fois le dossier `keymaps` ouvert, créez une copie du répertoire `default`. Nous vous recommandons de nommer ce répertoire de la même manière que votre nom d'utilisateur GitHub. Vous pouvez aussi utiliser le nom que vous voulez, tant qu'il contient uniquement des lettres minuscules, des nombres et le caractère souligné (_).
Afin d'automatiser ce processus, vous avez aussi l'option de lancer le script `new_keymap.sh`.
Naviguez vers le répertoire `qmk_firmware/util` et tapez ce qui suit:
```
./new_keymap.sh <keyboard path> <username>
```
Par exemple, pour un utilisateur s'appeleant John, essayant de créer une nouvelle keymap pour le 1up60hse, il taperait:
```
./new_keymap.sh 1upkeyboards/1up60hse john
```
## Ouvrez `keymap.c` dans votre éditeur de texte préféré
Ouvrez votre fichier `keymap.c`. Dans ce fichier, vous trouverez la structure qui contrôle comment votre clavier se comporte. En haut du fichier `keymap.c` il peut y avoir quelques `defines` et `enums` qui rendent la keymap plus simple à lire. Plus bas, vous trouverez une ligne telle que celle-ci:
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
Cette ligne indique le début d'une liste de calques (layers). En dessous, vous trouverez des lignes contenant soit `LAYOUT`, soit `KEYMAP` et ces lignes indiquent le début d'un calque. En dessous de cette ligne se trouve la liste des touches qui comprennent ce calque particulier.
!> Lorsque vous éditez votre fichier keymap, faites attention à ne pas ajouter ou enlever une virgule. Si vous le faites, vous aller empêcher votre firmware de compiler et il ne sera pas facile de trouver où la virgule est manquante ou en trop.
## Customisez le layout à votre goût
Libre à vous de choisir comment compléter cette étape. Faites le petit changement qui vous dérange ou retravaillez tout de zéro. Vous pouvez supprimer des calques si vous ne les utilisez pas tous, ou ajouter des calques jusqu'à un maximum de 32. Vérifiez la documentation suivante pour trouver ce que vous pouvez définir ici:
* [Keycodes](keycodes.md)
* [Fonctionnalités](features.md)
* [FAQ](faq.md)
?> Lorsque vous découvrez comment des keymaps fonctionnent, faites de petits changements. De gros changements rendent le débuggage des problèmes éventuels plus difficile.
## Compilez votre firmware
Lorsque les changements de votre keymap sont complets, vous allez devoir compiler le firmware. Pour ce faire, retournez à votre terminal et lancez la commande de compilation:
make <my_keyboard>:<my_keymap>
Par exemple, si votre keymap s'appelle "xyverz" et vous compilez une keymap pour une plank rev5, vous allez utiliser cette commande:
make planck/rev5:xyverz
Durant la compilation, vous allez avoir beaucoup de messages sur l'écran vous informant de quels fichiers sont en train d'être compilés. Il devrait se terminer avec des messages qui ressemblent comme suit:
```
Linking: .build/planck_rev5_xyverz.elf [OK]
Creating load file for flashing: .build/planck_rev5_xyverz.hex [OK]
Copying planck_rev5_xyverz.hex to qmk_firmware folder [OK]
Checking file size of planck_rev5_xyverz.hex [OK]
* File size is fine - 18392/28672
```
## Flasher votre firmware
Allez sur la page [Flasher le firmware](fr-FR/newbs_flashing.md) pour apprendre comment écrire votre nouveau firmware sur votre clavier.

View File

@@ -0,0 +1,105 @@
# Configurateur de QMK
Le [Configurateur de QMK](https://config.qmk.fm) est une interface graphique en ligne permettant de générer des fichiers "hex" du firmware de QMK.
?> **S'il vous plaît, suivez les étapes suivantes dans l'ordre.**
Regardez le [Tutoriel vidéo](https://youtu.be/tx54jkRC9ZY)
Le configurateur de QMK fonctionne mieux avec Chrome et Firefox.
!> **Les fichiers d'autres outils, tels que KLE ou kbfirmware ne seront pas compatibles avec le configurateur QMK. Ne les chargez pas, ne les importez pas. Le configurateur QMK est un outil DIFFERENT.**
## Sélectionner votre clavier
Cliquez la boîte déroulante et sélectionnez le clavier pour lequel vous voulez créer une keymap.
?> Si votre clavier a plusieurs versions, faites attention à utiliser la bonne.
Je vais le répéter, parce que c'est important
!> **FAITES ATTENTION A UTILISER LA BONNE VERSION !**
Si votre clavier est annoncé comme fonctionnant grâce à QMK mais n'est pas dans la liste, il y a des chances que le développeur ne l'ait pas encore fait, ou que nous n'avons pas encore eu le temps de le merger. Ajoutez un problème (issue) sur [qmk_firmware](https://github.com/qmk/qmk_firmware/issues) demandant le support de votre clavier, s'il n'y a pas de [Pull Request](https://github.com/qmk/qmk_firmware/pulls?q=is%3Aopen+is%3Apr+label%3Akeyboard) ouvert pour lui. Il y a aussi des claviers alimentés par QMK qui sont sur le compte GitHub du fabricant, il est bon de le vérifier aussi.
## Sélectionner la disposition de votre clavier
Choisissez la disposition (layout) qui représente le mieux la keymap que vous voulez créer. Certains claviers n'ont pas encore assez de dispositions ou des dispositions incorrectes. Ils seront supportés dans le future.
## Nom de la Keymap
Appelez cette keymap comme vous voulez.
?> Si vous rencontrez des problèmes lors de la compilation, il peut être utile de changer ce nom, il peut déjà exister dans le dépôt du firmware QMK.
## Créer votre keymap
Entrer un keycode peut s'accomplir de 3 façons différentes.
1. Glisser déposer
2. Cliquer sur un endroit vide sur le layout et cliquer sur le keycode souhaité
3. Cliquer sur un endroit vide sur le layout et appuyer sur une touche physique de votre clavier.
Passez votre souris au dessus d'une touche et un affichage vous dira quel est le rôle du keycode. Pour une version plus verbeuse suivre:
[Référence Keycode basique](https://docs.qmk.fm/#/keycodes_basic)
[Référence Keycode avancé](https://docs.qmk.fm/#/feature_advanced_keycodes)
Dans le cas où vous ne trouvez pas une disposition qui supporte votre keymap, par exemple trois places pour une barre d'espace, ou deux places pour retour clavier, ou deux places pour shift, etc. etc. remplissez les TOUTES.
### Exemples
3 places pour la barre d'espace: Remplissez les TOUTES avec la barre d'espace
2 places pour un retour clavier: Remplissez les DEUX avec un retour clavier
2 places pour un shift droit: Remplissez les DEUX avec un shift droit
1 place pour un shift gauche et 1 place pour le support ISO: Remplissez les deux avec un shift gauche
5 places, mais seulement 4 touches: Deviner et vérifier, ou demander à quelqu'un qui l'a déjà fait.
## Sauvez votre keymap pour des éditions futures
Une fois satisfait de votre keymap, ou si vous souhaitez revenir travailler dessus plus tard, appuyez sur le bouton `Export Keymap`. Il vous permettra de sauvegarder votre keymap avec le nom choisi au dessus suivi de .json.
Vous pouvez ensuite charger ce fichier .json à nouveau en appuxant sur le bouton `Import Keymap`.
!> **ATTENTION** Ce n'est pas le même type de fichier .json utilisé pour kbfirmware.com ou n'importe quel autre outil. Si vous essayez d'utiliser ce fichier pour d'autres outil, ou le fichier .json d'autres outils avec le configurateur QMK, il y a des chances que votre clavier **explose**.
## Générer votre fichier firmware
Appuyez sur le bouton `Compile`.
Une fois la compilation terminée, vous pourrez appuyer sur le bouton vert `Download Firmware`.
## Ecrire votre firmware sur votre clavier
Merci de vous référer à [Flasher le Firmware](fr-FR/newbs_flashing.md)
## Dépannage
#### Mon fichier json ne fonctionne pas
Si le fichier .json a été généré par le configurateur QMK, bravo vous avez trouvé un bug. Merci d'ouvrir une issue sur [qmk_configurator](https://github.com/qmk/qmk_configurator/issues)
Sinon... vous avez raté mon message écris en gras qui dit de ne pas utiliser d'autres fichiers .json?
#### Il y a des espaces en trop dans mon alyout? Qu'est-ce que je fais?
Si vous voulez dire que vous avez trois places pour une barre d'espace, le mieux est de les remplir tous avec une barre d'espace. Vous pouvez faire de même avec les retour clavier et les shift.
#### C'est quoi le keycode pour .......
Merci de regarder
[Référence keycode basique](https://docs.qmk.fm/#/keycodes_basic)
[Référence keycode avancé](https://docs.qmk.fm/#/feature_advanced_keycodes)
#### Ca ne compile pas?
Merci de vérifier les autres dispositions de votre keymap afin d'être sûr qu'il n'y a pas de touches aléatoires.
## Problèmes et Bugs
Nous acceptons toujours les demandes des clients et les rapports de bugs. Merci de les remplirs sur [qmk_configurator](https://github.com/qmk/qmk_configurator/issues)

View File

@@ -0,0 +1,367 @@
# Flasher votre clavier
Maintenant que vous avez compilé un firmware custom, vous allez vouloir le flasher dans votre clavier.
## Flasher votre clavier avec QMK Toolbox
La manière la plus simple de flasher votre clavier est avec [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases).
Toutefois, la QMK Toolbox n'est actuellement disponible que pour Windows et macOS. Si vous utilisez Linux (ou préférez flasher le firmware depuis la ligne de commande), vous devrez utiliser [la métode décrite ci-dessous](newbs_flashing.md#flash-your-keyboard-from-the-command-line).
### Charger le fichier dans QMK Toolbox
Démarrez en ouvrant l'application QMK Toolbox. Cherchez le fichier de firmware dans Finder ou Explorer. Vore firmware de clavier peut être dans un de deux formats `.hex` ou `.bin`. QMK essaye de copier le bon format pour votre clavier du répertoire racine `qmk_firmware`.
?> Si vous êtes sous Windows ou macOS il y a des commandes que vous pouvez utiliser pour facilement ouvrir le répertoire firmware dans Explorer ou Finder.
?> Windows:
start .
?> macOS:
open .
Le fichier firmware suit toujours ce format de nommage:
<keyboard_name>_<keymap_name>.{bin,hex}
Par exemple, le `plank/rev5` avec une keymap `default` aura ce nom de fichier:
planck_rev5_default.hex
Une fois que vous aurez trouvé votre fichier de firmware, glissez le dans la boîte "Local file" sur QMK Toolbox, ou cliquez sur "Open" et naviguez où votre firmware est enregistré.
### Mettez votre clavier en mode DFU (Bootloader)
Afin de flasher votre firmware custom, vous devez mettre votre clavier dans un mode spécial. Lorsqu'il sera dans ce mode, vous ne pourrez pas taper ou utiliser votre clavier. Il est très important que vous ne débranchiez pas votre clavier ou n'arrêtiez pas le processus d'écriture du firmware.
Chaque clavier a une manière différente d'entrer dans ce mode spécial. Si votre clavier tourne actuellement QMK ou TMK et vous n'avez pas reçu d'instruction spécifiques, essayez, dans cet ordre:
* Enfoncez les deux touches shift et appuyez sur `Pause`
* Enfoncez les deux touches shift et appuyez sur `B`
* Débranchez votre clavier, gardez shift la barre d'espace et `B` en même temps, branchez votre clavier et attendez une seconde avant de relâcher les touches.
* Appuyez la touche physique `RESET` en bas du PCB
* Trouvez les pins sur le PCB marquées `BOOT0` ou `RESET`, court circuitez ces pins en branchant votre PCB
Lorsque vous aurez réussi, vous verrez le message suivant dans QMK Toolbox:
```
*** Clueboard - Clueboard 66% HotSwap disconnected -- 0xC1ED:0x2390
*** DFU device connected
```
### Flasher votre clavier
Appuyez sur le boutton `Flash` dans QMK Toolbox. Vous verrez un résultat similaire à ce qui suit:
```
*** Clueboard - Clueboard 66% HotSwap disconnected -- 0xC1ED:0x2390
*** DFU device connected
*** Attempting to flash, please don't remove device
>>> dfu-programmer atmega32u4 erase --force
Erasing flash... Success
Checking memory from 0x0 to 0x6FFF... Empty.
>>> dfu-programmer atmega32u4 flash /Users/skully/qmk_firmware/clueboard_66_hotswap_gen1_skully.hex
Checking memory from 0x0 to 0x55FF... Empty.
0% 100% Programming 0x5600 bytes...
[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] Success
0% 100% Reading 0x7000 bytes...
[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] Success
Validating... Success
0x5600 bytes written into 0x7000 bytes memory (76.79%).
>>> dfu-programmer atmega32u4 reset
*** DFU device disconnected
*** Clueboard - Clueboard 66% HotSwap connected -- 0xC1ED:0x2390
```
## Flashez votre clavier à l'aide de la ligne de commande
C'est désormais relativement simple. Lorsque vous êtes prêt à compiler et à flasher votre firmware, ouvrez la fenêtre de votre terminal et exécutez la commande de build :
make <my_keyboard>:<my_keymap>:flash
Par exemple, si votre keymap s'appelle "xyverz" et que vous fabriquez une keymap pour un clavier `planck` de version `rev5` vous devrez utiliser cette commande:
make planck/rev5:xyverz:flash
La commande va vérifier la configuration du clavier, puis tentera de le flasher en fonction du bootloader (chargeur damorçage) spécifié. Cela signifie que vous n'avez pas besoin de savoir quel bootloader votre clavier utilise. Exécutez simplement la commande et laissez-le faire le gros du travail.
Cependant, tout dépend du bootloader qui est installé sur le clavier. Si cette information nest pas configurée ou si vous tentez de flasher un clavier qui ne permet pas dêtre flashé alors vous obtiendrez cette erreur :
WARNING: This board's bootloader is not specified or is not supported by the ":flash" target at this time.
Dans ce cas, vous devrez choisir le bootloader.
Il y a cinq bootloaders principaux. Les Pro-Micro et les clones utilisent Caterina, les Teensy utilisent Halfkay, les claviers AVR dOLKB utilisent QMK-DFU, certains controleurs atmega32u4 utilisent DFU et la plupart des controlleurs ARM utilisent ARM DFU.
Vous pouvez trouver plus d'information à propos des bootloaders sur la page [Instructions de flash et information sur le Bootloader](flashing.md).
Si vous savez quel bootloader vous utilisez, lorsque vous compilez le firmware, vous pouvez ajouter quelques options à la commande `make` pour automatiser le processus de flash.
### DFU
Pour le bootloader DFU, lorsque vous êtes prêts à compiler et flasher votre firmware, ouvrez votre fenêtre de terminal et lancez la commande de compilation:
make <my_keyboard>:<my_keymap>:dfu
Par exemple, si vous keymap s'appelle "xyverz" et vous compilez une keymap pour une plank rev5, vous utiliserez cette commande:
make planck/rev5:xyverz:dfu
Une fois la compilation terminée, le résultat devrait être le suivant:
```
Linking: .build/planck_rev5_xyverz.elf [OK]
Creating load file for flashing: .build/planck_rev5_xyverz.hex [OK]
Copying planck_rev5_xyverz.hex to qmk_firmware folder [OK]
Checking file size of planck_rev5_xyverz.hex
* File size is fine - 18574/28672
```
Une fois arrivé à ce stade, le script de compilation va chercher le bootloader DFU toutes les 5 secondes. Il va répéter les messages suivants jusqu'à ce que l'appareil soit trouvé ou que vous l'annuliez.
dfu-programmer: no device present.
Error: Bootloader not found. Trying again in 5s.
Une fois terminé, vous devrez mettre à zéro le contrôleur. Vous allez voir un résultat similaire à ceci:
```
*** Attempting to flash, please don't remove device
>>> dfu-programmer atmega32u4 erase --force
Erasing flash... Success
Checking memory from 0x0 to 0x6FFF... Empty.
>>> dfu-programmer atmega32u4 flash /Users/skully/qmk_firmware/clueboard_66_hotswap_gen1_skully.hex
Checking memory from 0x0 to 0x55FF... Empty.
0% 100% Programming 0x5600 bytes...
[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] Success
0% 100% Reading 0x7000 bytes...
[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] Success
Validating... Success
0x5600 bytes written into 0x7000 bytes memory (76.79%).
>>> dfu-programmer atmega32u4 reset
```
?> Si vous avez des soucis concernant ceci - par exemple `dfu-programmer: no device present` - merci de regarder [Foires Aux Questions de Compilation](faq_build.md).
#### Commandes DFU
Il y aun certain nombre de commandes du DFU que vous pouvez utiliser pour flasher un firmware sur un device DFU:
* `:dfu` - C'est l'option standard qui attends jusqu'à e qu'un appareil DFU soit disponible, puis flash le firmware. Il va vérifier toutes les 5 secondes, afin de voir si un appareil DFU est apparu.
* `:dfu-ee` - Ceci flash un fichier `eep` à la place du standard hex, peu commun.
* `:dfu-split-left` - Ceci flash le firmware standard, comme la commande standard (`:dfu`). Toutefois, elle flash aussi les fichiers EEPROM du "côté gauche" pour les claviers scindés. _C'est l'option idéale pour les claviers scindés basés sur Elite C._
* `:dfu-split-right` - Ceci flash le firmware standard, comme la commande standard (`:dfu`). Toutefois, elle flash aussi les fichiers EEPROM du "côté droit" pour les claviers scindés. _C'est l'option idéale pour les claviers scindés basés sur Elite C._
### Caterina
Pour les boards Arduino et leurs clones (tel que le SparkFun ProMicro), lorsque vous êtes prêt à compiler et flasher votre firmware, ouvrez votre terminal et lancer la commande de compilation:
make <my_keyboard>:<my_keymap>:avrdude
Par exemple, si votre keymap se nomme "xyverz" et que vous compilez une keymap pour un Lets Split rev2, vous utiliserez la commande suivante:
make lets_split/rev2:xyverz:avrdude
Une fois le firmware compilé, vous aurez le résultat suivant:
```
Linking: .build/lets_split_rev2_xyverz.elf [OK]
Creating load file for flashing: .build/lets_split_rev2_xyverz.hex [OK]
Checking file size of lets_split_rev2_xyverz.hex [OK]
* File size is fine - 27938/28672
Detecting USB port, reset your controller now..............
```
Une fois ceci fait, réinitialisez votre board et le script va détecter et flasher le firmware. La sortie devrait ressembler à quelque chose comme ça:
```
Detected controller on USB port at /dev/ttyS15
Connecting to programmer: .
Found programmer: Id = "CATERIN"; type = S
Software Version = 1.0; No Hardware Version given.
Programmer supports auto addr increment.
Programmer supports buffered memory access with buffersize=128 bytes.
Programmer supports the following devices:
Device code: 0x44
avrdude.exe: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude.exe: Device signature = 0x1e9587 (probably m32u4)
avrdude.exe: NOTE: "flash" memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude.exe: erasing chip
avrdude.exe: reading input file "./.build/lets_split_rev2_xyverz.hex"
avrdude.exe: input file ./.build/lets_split_rev2_xyverz.hex auto detected as Intel Hex
avrdude.exe: writing flash (27938 bytes):
Writing | ################################################## | 100% 2.40s
avrdude.exe: 27938 bytes of flash written
avrdude.exe: verifying flash memory against ./.build/lets_split_rev2_xyverz.hex:
avrdude.exe: load data flash data from input file ./.build/lets_split_rev2_xyverz.hex:
avrdude.exe: input file ./.build/lets_split_rev2_xyverz.hex auto detected as Intel Hex
avrdude.exe: input file ./.build/lets_split_rev2_xyverz.hex contains 27938 bytes
avrdude.exe: reading on-chip flash data:
Reading | ################################################## | 100% 0.43s
avrdude.exe: verifying ...
avrdude.exe: 27938 bytes of flash verified
avrdude.exe: safemode: Fuses OK (E:CB, H:D8, L:FF)
avrdude.exe done. Thank you.
```
Si vous avez un souci, essayez de faire ceci:
sudo make <my_keyboard>:<my_keymap>:avrdude
#### Commandes Caterina
Il existe un certain nombre de commandes DFU que vous pouvez utiliser pour mettre à jour le firmware sur un périphérique DFU:
* `: avrdude` - Il sagit de loption normale. Elle attend quun appareil Caterina soit disponible, puis tente de flasher le firmware. Il attendra de détecter un autre port COM, puis il flashera à nouveau.
* `: avrdude-loop` - Cela fonctionne de la même manière que `: avrdude`, mais une fois que chaque périphérique est flashé, il tentera de flasher à nouveau. Cela peut être utile pour flasher plusieurs claviers à la suite. _Cela implique de sortir manuellement de la boucle en appuyant sur Ctrl + C, Cmd + C ou un raccourci équivalent selon votre OS_
* `: avrdude-split-left` - Cela fonctionne de la même manière que la fonction (`: avrdude`). Toutefois, cela permet aussi de flasher le coté gauche de l'EEPROM des claviers splittés / divisés. C'est donc la méthode recommandée pour les claviers splittés avec Pro Micro.
* `: avrdude-split-right` - Cela fonctionne de la même manière que la fonction (`: avrdude`). Toutefois, cela permet aussi de flasher le coté droite de l'EEPROM des claviers splittés / divisés. C'est donc la méthode recommandée pour les claviers splittés avec Pro Micro.
### HalfKay
Pour les composants PJRC (les Teensy), lorsque vous êtes prêts à compiler et flasher votre firmware, ouvrez votre fenêtre de terminal et lancez la commande de compilation suivante:
make <my_keyboard>:<my_keymap>:teensy
Par exemple, si vous keymap s'appelle "xyverz" et vous compilez une keymap pour un Ergodox ou un Ergodox EZ, vous utiliserez cette commande:
make ergodox_ez:xyverz:teensy
Une fois la compilation du firmware terminée, votre sortie devrait ressembler à ça:
```
Linking: .build/ergodox_ez_xyverz.elf [OK]
Creating load file for flashing: .build/ergodox_ez_xyverz.hex [OK]
Checking file size of ergodox_ez_xyverz.hex [OK]
* File size is fine - 25584/32256
Teensy Loader, Command Line, Version 2.1
Read "./.build/ergodox_ez_xyverz.hex": 25584 bytes, 79.3% usage
Waiting for Teensy device...
(hint: press the reset button)
```
Une fois terminé, réinitialisez votre board. Une fois fait, vous verrez une sortie comme ça:
```
Found HalfKay Bootloader
Read "./.build/ergodox_ez_xyverz.hex": 28532 bytes, 88.5% usage
Programming............................................................................................................................................................................
...................................................
Booting
```
### STM32 (ARM)
Pour la majorité des boards ARM (incluant les Proton C, Planck Rev 6, et Preonic Rev 3), lorsque vous êtes prêt à compiler et flasher votre firmware, ouvrez la fenêtre de terminal et lancez la commande de compilation:
make <my_keyboard>:<my_keymap>:dfu-util
Par exemple, si votre keymap s'appelle "xyverz" et vous compilez une keymap pour le clavier Plank Revision 6, vous utiliserez cette commande et redémarrerez le clavier vers le bootloader (avant que la compilation soit terminée):
make planck/rev6:xyverz:dfu-util
Une fois le firmware compilé, il va afficher quelque chose comme ça:
```
Linking: .build/planck_rev6_xyverz.elf [OK]
Creating binary load file for flashing: .build/planck_rev6_xyverz.bin [OK]
Creating load file for flashing: .build/planck_rev6_xyverz.hex [OK]
Size after:
text data bss dec hex filename
0 41820 0 41820 a35c .build/planck_rev6_xyverz.hex
Copying planck_rev6_xyverz.bin to qmk_firmware folder [OK]
dfu-util 0.9
Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2016 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/
Invalid DFU suffix signature
A valid DFU suffix will be required in a future dfu-util release!!!
Opening DFU capable USB device...
ID 0483:df11
Run-time device DFU version 011a
Claiming USB DFU Interface...
Setting Alternate Setting #0 ...
Determining device status: state = dfuERROR, status = 10
dfuERROR, clearing status
Determining device status: state = dfuIDLE, status = 0
dfuIDLE, continuing
DFU mode device DFU version 011a
Device returned transfer size 2048
DfuSe interface name: "Internal Flash "
Downloading to address = 0x08000000, size = 41824
Download [=========================] 100% 41824 bytes
Download done.
File downloaded successfully
Transitioning to dfuMANIFEST state
```
#### Commandes STM32
Il y aun certain nombre de commandes du DFU que vous pouvez utiliser pour flasher un firmware sur un device STM32:
* `:dfu-util` - C'est l'option standard pour flasher un appareil STM32. Elle attendra qu'un bootloader STM32 soit présent et tentera de lutiliser.
* `:dfu-util-left` - Ceci flasher le firmware standard, comme la commande standard (`:dfu-util`). Toutefois, elle flasher aussi les fichiers EEPROM du "côté gauche" pour les claviers scindés.
* `:dfu-util-right` - Ceci flash le firmware standard, comme la commande standard (`:dfu-util`). Toutefois, elle flash aussi les fichiers EEPROM du "côté droit" pour les claviers scindés.
* `:st-link-cli` - Cela permet de flasher le firmware avec l'utilitaire en ligne de commande ST-LINK's plutôt que d'utiliser dfu-util.
### BootloadHID
Pour les claviers basés sur Bootmapper Client(BMC)/bootloadHID/ATmega32A, si vous êtes prêts à compiler et flasher le firmware, ouvrez votre fenêtre de terminal et lancez la commande suivante :
make <my_keyboard>:<my_keymap>:bootloaderHID
Par exemple, si votre keymap s'appelle "xyverz" et que vous compilez une keymap pour un jj40, utilisez cette commande:
make jj40:xyverz:bootloaderHID
Une fois le firmware compilé, vous aurez cette sortie:
```
Linking: .build/jj40_default.elf [OK]
Creating load file for flashing: .build/jj40_default.hex [OK]
Copying jj40_default.hex to qmk_firmware folder [OK]
Checking file size of jj40_default.hex [OK]
* The firmware size is fine - 21920/28672 (6752 bytes free)
```
A ce stade, le script de build va chercher le bootloader DFU toutes les 5 secondes. Il répétera l affichage de ce message jusqu'à ce que lappareil soit trouvé ou que vous annuliez l'opération```
```
Error opening HIDBoot device: The specified device was not found
Trying again in 5s.
```
Une fois ce résultat obtenu, réinitialisez le contrôleur. Le résultat suivant devrait safficher :
```
Page size = 128 (0x80)
Device size = 32768 (0x8000); 30720 bytes remaining
Uploading 22016 (0x5600) bytes starting at 0 (0x0)
0x05580 ... 0x05600
```
## Faites l'essai!
Bravo! Votre firmware customisé a été programmé sur votre clavier!
Essayez-le et vérifiez qu'il fonctionne comme vous le souhaitez. Nous avons écrit [Tester et débugger](newbs_testing_debugging.md) pour compléter le guide du débutant, alors allez voir là-bas pour apprendre comment dépanner vos fonctionnalités custom.

View File

@@ -0,0 +1,101 @@
# Introduction
Votre clavier d'ordinateur contient un processeur, proche de celui dans votre ordinateur. Ce processeur exécute un logiciel responsable de détecter les touches appuyées et envoie des rapports à propos de l'état du clavier lorsque les touches sont appuyées et relâchées. QMK prend le rôle de ce logiciel, détectant les appuis des boutons et passant cette information à l'ordinateur hôte. Lorsque vous construisez votre keymap customisée, vous créez l'équivalent d'un programme exécutable pour votre clavier.
QMK essaie de rendre les choses simples faciles, et les choses difficiles possibles. Vous n'avez pas à savoir programmer pour créer des keymaps puissantes - vous devez seulement suivre quelques règles de syntaxe simples.
# Guide de démarrage
Avant de pouvoir construire des keymaps, vous devez installer quelques logiciels et configurer votre environnement de compilation. Ceci n'a besoin d'être fait seulement une fois, peu importe le nombre de clavier pour lesquels vous compter compiler un firmware.
Si vous préférez une approche plus proche d'une interface graphique, considérez utiliser l'outil en ligne [QMK Configurator](https://config.qmk.fm). Référez-vous à [Construire votre premier firmware en utilisant l'interface graphique en ligne](newbs_building_firmware_configurator.md).
## Logiciels à télécharger
### Editeur de texte
Vous allez avoir besoin d'un programme qui peut éditer et sauvegarder des fichiers **plain text**. Si vous êtes sur Windows, vous pouvez utiliser notepad et sur Linux vous pouvez utiliser gedit. Ces deux options sont des éditeurs de texte simples mais fonctionnels. Sur macOS, faites attention avec l'application par défaut TextEdit: elle ne sauvegardera pas les fichiers en mode "plain text" sauf si vous sélectionnez explicitement _Make Plain Text_ à partir du menu _Format_.
Vous pouvez aussi télécharger et installer un éditeur de texte dédié comme [Sublime Text](https://www.sublimetext.com/) ou [VS Code](https://code.visualstudio.com/). C'est probablement la meilleure solution peu importe la plateforme car ce sont des programmes conçus spécifiquement pour éditer du code.
?> Pas sûr de quel éditeur de texte utiliser? Laurence Bradford a écrit une [excellente introduction](https://learntocodewith.me/programming/basics/text-editors/) au sujet.
### QMK Toolbox
QMK Toolbox est un programme graphique optionnel pour Windows et macOS qui permet à la fois de programmer et débugger votre clavier customisé. Il vous sera probablement très utile pour facilement flasher votre clavier et analyser ses messages de débugage.
[Télécharger la dernière version ici.](https://github.com/qmk/qmk_toolbox/releases/latest)
* Pour Windows: `qmk_toolbox.exe` (portable) or `qmk_toolbox_install.exe` (installeur)
* Pour macOS: `QMK.Toolbox.app.zip` (portable) or `QMK.Toolbox.pkg` (installeur)
## Configurez votre environnement
Nous avons essayé de rendre QMK aussi simple que possible à configurer. Vous avez uniquement à préparer votre environnment Linux ou Unix et laisser QMK installer le reste.
?> Si vous n'avez jamais travaillé avec la ligne de commande Linux/Unix, il y a un certain nombre de concepts basiques et de commandes que vous devriez apprendre. Ces ressources vous apprendrons suffisemment pour travailler avec QMK:<br>
[Commandes Linux à savoir](https://www.guru99.com/must-know-linux-commands.html)<br>
[Commandes Unix de base](https://www.tjhsst.edu/~dhyatt/superap/unixcmd.html)
### Windows
Vous devez installer MSYS2 et Git.
* Suivez les instructions d'installation sur la [page de MSYS2](http://www.msys2.org).
* Fermez tous les terminaux MSYS2 éventuellement ouverts et ouvrez un nouveau terminal MSYS2 MinGW 64-bit.
* Installez Git en lançant la commande: `pacman -S git`.
### macOS
Vous devez installer Homebew. Suivez les instructions sur la [page de Homebrew](https://brew.sh).
Une fois Homebrew installé, continuez avec _Configurer QMK_. Dans cette étape, nous lancerons un script qui va installer d'autres paquets.
### Linux
Vous devez installer Git. Il est très probable que vous l'ayez déjà installé, mais sinon, une des commandes suivantes devrait l'installer:
* Debian / Ubuntu / Devuan: `apt-get install git`
* Fedora / Red Hat / CentOS: `yum install git`
* Arch: `pacman -S git`
?> Docker est aussi une option sur toutes les plateformes. [Appuyez ici pour plus de détail.](getting_started_build_tools.md#docker)
## Configurer QMK
Une fois votre environnement Linux/Unix configuré, vous êtes prêt à télécharger QMK. Nous allons le faire en utilisant Git pour "cloner" le dépôt de QMK. Ouvrez un terminal ou une fenêtre MSYS2 MinGW et gardez le ouvert pour le reste de ce guide. Dans ce terminal, lancez ces deux commandes:
```shell
git clone --recurse-submodules https://github.com/qmk/qmk_firmware.git
cd qmk_firmware
```
?> Si vous savez déjà [comment utiliser GitHub](getting_started_github.md), nous recommandons que vous créez et clonez votre propre fork. Si vous ne savez pas ce que cela veut dire, vous pouvez sans problème ignorer ce message.
QMK vient avec un script pour vous aider à configurer le reste de ce que vous aurez besoin. Vous devez le lancer en tapant la ligne de commande suivante:
util/qmk_install.sh
## Testez votre environnement de compilation
Maintenant que votre environnement de compilation de QMK est configuré, vous pouvez compiler un firmware pour votre clavier. Démarrez en compilant la keymap par défaut du clavier. Vous devriez pouvoir le faire avec une commande de ce format:
make <keyboard>:default
Par exemple, pour compiler un firmware pour une Clueboard 66%, vous utiliserez:
make clueboard/66/rev3:default
Une fois ceci fait, vous devriez avoir beaucoup d'information dans votre sortie qui devrait se terminer par quelque chose de similaire à ça:
```
Linking: .build/clueboard_66_rev3_default.elf [OK]
Creating load file for flashing: .build/clueboard_66_rev3_default.hex [OK]
Copying clueboard_66_rev3_default.hex to qmk_firmware folder [OK]
Checking file size of clueboard_66_rev3_default.hex [OK]
* The firmware size is fine - 26356/28672 (2316 bytes free)
```
# Créer votre Keymap
Vous êtes maintenant prêt à créer votre propre keymap! Passez à l'étape [Compiler votre premier firmware](newbs_building_firmware.md) pour ce faire.

View File

@@ -0,0 +1,14 @@
# Ressources d'apprentissage
Ces ressources permettent de donner aux nouveaux membres de la communauté QMK plus de compréhension aux informations données dans la documentation Newbs.
Ressources Git:
* [Tutoriel général](https://www.codecademy.com/learn/learn-git)
* [Jeu Git pour apprendre avec des exemples](https://learngitbranching.js.org/)
* [Des ressources Git pour en savoir plus à propos de GitHub](getting_started_github.md)
* [Des ressources Git spécifiques à QMK](contributing.md)
Ressources sur les lignes de commande:
* [Bon tutoriel général sur la ligne de commande](https://www.codecademy.com/learn/learn-the-command-line)

View File

@@ -0,0 +1,102 @@
# Test et débugage
Une fois votre clavier configuré avec un firmware custom, vous êtes prêt à le tester. Avec un peu de chance, tout fonctionne parfaitement bien, dans le cas contraire, ce document vous aidera à trouver où se trouve le problème.
## Tester
Tester votre clavier est normalement assez simple. Appuyez chaque touche de votre clavier et assurez-vous qu'il envoie les touches auquel vous vous attendiez. Il existe même des programmes qui vous aideront à vérifier qu'aucune touche ne soit oubliée.
Note: ces programmes ne sont ni fournis ni approuvés par QMK.
* [QMK Configurator](https://config.qmk.fm/#/test/) (Web)
* [Switch Hitter](https://web.archive.org/web/20190413233743/https://elitekeyboards.com/switchhitter.php) (Windows seulement)
* [Keyboard Viewer](https://www.imore.com/how-use-keyboard-viewer-your-mac) (Mac seulement)
* [Keyboard Tester](http://www.keyboardtester.com) (Web)
* [Keyboard Checker](http://keyboardchecker.com) (Web)
## Débuguer
Votre clavier va envoyer des informations de débugage si vous avez `CONSOLE_ENABLE = yes` dans votre fichier `rules.mk`. Par défaut, la sortie est très limitée, mais vous pouvez activer le mode debug pour augmenter la quantité de sortie de débugage. Utilisez le keycode `DEBUG` dans votre keymap, utilisez la fonction [Commande](feature_command.md) pour activer le mode debug ou ajoutez le code suivant à votre keymap.
```c
void keyboard_post_init_user(void) {
// Customise these values to desired behaviour
debug_enable=true;
debug_matrix=true;
//debug_keyboard=true;
//debug_mouse=true;
}
```
### Débuguer avec QMK Toolbox
Pour les plateformes compatibles, [QMK Toolbox](https://github.com/qmk/qmk_toolbox) peut être utilisé pour afficher les messages de débugage pour votre clavier.
### Débuguer avec hid_listen
Vous préférez une solution basée sur le terminal? [hid_listen](https://www.pjrc.com/teensy/hid_listen.html), fourni par PJRC, peut aussi être utilisé pour afficher des messages de débugage. Des versions compilées pour Windows, Linux et MacOS sont disponibles.
<!-- FIXME: Describe the debugging messages here. -->
## Envoyer vos propres messages de débugage
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>
Une fois fait, vous pouvez utiliser les fonctions print suivantes:
* `print("string")`: Affiche une simple chaîne de caractères.
* `uprintf("%s string", var)`: Affiche une chaîne de caractères formatée.
* `dprint("string")` Affiche une chaîne de caractère simple, mais uniquement lorsque le mode debug est activé.
* `dprintf("%s string", var)`: Affiche une chaîne de caractère formatée, mais uniquement lorsque le mode debug est activé.
## Exemples de debugage
Si dessous se trouve une liste d'exemples réels de débugage. Pour plus d'information, référez-vous à [Débuguer/Dépanner QMK](faq_debug.md).
### A quelle position de la matrice se trouve cette activation de touche?
Lors du portage ou lorsque vous essayez de diagnostiquer un problème de PCB, il est utile de savoir si une activation de touche est enregistrée correctement. Pour activer le log de ce scénario, ajoutez le code suivant à votre fichier keymaps `keymap.c`.
```c
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
// If console is enabled, it will print the matrix position and status of each key pressed
#ifdef CONSOLE_ENABLE
uprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed);
#endif
return true;
}
```
Exemple de sortie
```text
Waiting for device:.......
Listening:
KL: kc: 169, col: 0, row: 0, pressed: 1
KL: kc: 169, col: 0, row: 0, pressed: 0
KL: kc: 174, col: 1, row: 0, pressed: 1
KL: kc: 174, col: 1, row: 0, pressed: 0
KL: kc: 172, col: 2, row: 0, pressed: 1
KL: kc: 172, col: 2, row: 0, pressed: 0
```
### Combien de temps cela a pris pour une activation de touche?
Lorsque vous testez des problèmes de performance, il peut être utile de savoir à quelle fréquence la matrice est scannée. Pour activer le log dans ce scénario, ajoutez la ligne suivante à votre fichier `config.h` de votre keymaps.
```c
#define DEBUG_MATRIX_SCAN_RATE
```
Exemple de sortie
```text
> matrix scan frequency: 315
> matrix scan frequency: 313
> matrix scan frequency: 316
> matrix scan frequency: 316
> matrix scan frequency: 316
> matrix scan frequency: 316
```

View File

@@ -145,7 +145,7 @@ util/docker_build.sh
There is also support for building _and_ flashing the keyboard straight from Docker by specifying the `target` as well:
```bash
util/docker_build.sh keyboard:keymap:target
# For example: util/docker_build.sh planck/rev6:default:dfu-util
# For example: util/docker_build.sh planck/rev6:default:flash
```
If you're on Linux, this should work out of the box. On Windows and macOS, it requires [Docker Machine](http://gw.tnode.com/docker/docker-machine-with-usb-support-on-windows-macos/) to be running. This is tedious to set up, so it's not recommended; use [QMK Toolbox](https://github.com/qmk/qmk_toolbox) instead.

View File

@@ -14,8 +14,8 @@ The full syntax of the `make` command is `<keyboard_folder>:<keymap>:<target>`,
The `<target>` means the following
* If no target is given, then it's the same as `all` below
* `all` compiles as many keyboard/revision/keymap combinations as specified. For example, `make planck/rev4:default` will generate a single .hex, while `make planck/rev4:all` will generate a hex for every keymap available to the planck.
* `dfu`, `teensy`, `avrdude`, `dfu-util` or `bootloadHID`, compile and upload the firmware to the keyboard. If the compilation fails, then nothing will be uploaded. The programmer to use depends on the keyboard. For most keyboards it's `dfu`, but for ChibiOS keyboards you should use `dfu-util`, and `teensy` for standard Teensys. To find out which command you should use for your keyboard, check the keyboard specific readme.
* **Note**: some operating systems need root access for these commands to work, so in that case you need to run for example `sudo make planck/rev4:default:dfu`.
* `flash`, `dfu`, `teensy`, `avrdude`, `dfu-util`, or `bootloadHID` compile and upload the firmware to the keyboard. If the compilation fails, then nothing will be uploaded. The programmer to use depends on the keyboard. For most keyboards it's `dfu`, but for ChibiOS keyboards you should use `dfu-util`, and `teensy` for standard Teensys. To find out which command you should use for your keyboard, check the keyboard specific readme.
* **Note**: some operating systems need root access for these commands to work, so in that case you need to run for example `sudo make planck/rev4:default:flash`.
* `clean`, cleans the build output folders to make sure that everything is built from scratch. Run this before normal compilation if you have some unexplainable problems.
You can also add extra options at the end of the make command line, after the target
@@ -31,7 +31,7 @@ Here are some examples commands
* `make all:all` builds everything (all keyboard folders, all keymaps). Running just `make` from the `root` will also run this.
* `make ergodox_infinity:algernon:clean` will clean the build output of the Ergodox Infinity keyboard.
* `make planck/rev4:default:dfu COLOR=false` builds and uploads the keymap without color output.
* `make planck/rev4:default:flash COLOR=false` builds and uploads the keymap without color output.
## `rules.mk` Options
@@ -41,8 +41,6 @@ Set these variables to `no` to disable them, and `yes` to enable them.
This allows you to hold a key and the salt key (space by default) and have access to a various EEPROM settings that persist over power loss. It's advised you keep this disabled, as the settings are often changed by accident, and produce confusing results that makes it difficult to debug. It's one of the more common problems encountered in help sessions.
Consumes about 1000 bytes.
`MOUSEKEY_ENABLE`
This gives you control over cursor movements and clicks via keycodes/custom functions.
@@ -67,8 +65,6 @@ To see the text, open `hid_listen` and enjoy looking at your printed messages.
**NOTE:** Do not include *uprint* messages in anything other than your keymap code. It must not be used within the QMK system framework. Otherwise, you will bloat other people's .hex files.
Consumes about 400 bytes.
`COMMAND_ENABLE`
This enables magic commands, typically fired with the default magic key combo `LSHIFT+RSHIFT+KEY`. Magic commands include turning on debugging messages (`MAGIC+D`) or temporarily toggling NKRO (`MAGIC+N`).
@@ -125,11 +121,9 @@ Use this to debug changes to variable values, see the [tracing variables](unit_t
This enables using the Quantum SYSEX API to send strings (somewhere?)
This consumes about 5390 bytes.
`KEY_LOCK_ENABLE`
This enables [key lock](feature_key_lock.md). This consumes an additional 260 bytes.
This enables [key lock](feature_key_lock.md).
`SPLIT_KEYBOARD`

View File

@@ -1,19 +1,18 @@
# Quantum Hand-Wiring Guide
# Hand-Wiring Guide
Parts list:
* *x* keyswitches (MX, Matias, Gateron, etc)
* *x* diodes
* Keyboard plate (metal, plastic, cardboard, etc)
* Wire (strained for wiring to the Teensy, anything for the rows/columns)
* Soldering iron set at 600ºF or 315ºC (if temperature-controlled)
* Rosin-cored solder (leaded or lead-free)
* Adequate ventilation/a fan
* Tweezers (optional)
* Wire cutters/snippers
## Preamble: How a Keyboard Matrix Works (and why we need diodes)
## How the Matrix Works (Why We Need Diodes)
The collapsible section below covers why keyboards are wired the way they are, as outlined in this guide. It isn't required reading to make your own hand wired keyboard, but provides background information.
The microcontroller (in this case, the Teensy 2.0) will be setup up via the firmware to send a logical 1 to the columns, one at a time, and read from the rows, all at once - this process is called matrix scanning. The matrix is a bunch of open switches that, by default, don't allow any current to pass through - the firmware will read this as no keys being pressed. As soon as you press one key down, the logical 1 that was coming from the column the keyswitch is attached to gets passed through the switch and to the corresponding row - check out the following 2x2 example:
<details>
<summary>Click for details</summary>
Without a matrix circuit each switch would require its own wire directly to the controller.
Simply put, when the circuit is arranged in rows and columns, if a key is pressed, a column wire makes contact with a row wire and completes a circuit. The keyboard controller detects this closed circuit and registers it as a key press.
The microcontroller will be setup up via the firmware to send a logical 1 to the columns, one at a time, and read from the rows, all at once - this process is called matrix scanning. The matrix is a bunch of open switches that, by default, don't allow any current to pass through - the firmware will read this as no keys being pressed. As soon as you press one key down, the logical 1 that was coming from the column the keyswitch is attached to gets passed through the switch and to the corresponding row - check out the following 2x2 example:
Column 0 being scanned Column 1 being scanned
x x
@@ -100,30 +99,132 @@ Things act as they should! Which will get us the following data:
The firmware can then use this correct data to detect what it should do, and eventually, what signals it needs to send to the OS.
# The Actual Hand-Wiring
Further reading:
- [Wikipedia article](https://en.wikipedia.org/wiki/Keyboard_matrix_circuit)
- [Deskthority article](https://deskthority.net/wiki/Keyboard_matrix)
- [Keyboard Matrix Help by Dave Dribin (2000)](https://www.dribin.org/dave/keyboard/one_html/)
- [How Key Matrices Works by PCBheaven](http://pcbheaven.com/wikipages/How_Key_Matrices_Works/) (animated examples)
- [How keyboards work - QMK documentation](how_keyboards_work.md)
## Getting Things in Place
</details>
When starting this, you should have all of your stabilisers and keyswitches already installed (and optionally keycaps). If you're using a Cherry-type stabiliser (plate-mounted only, obviously), you'll need to install that before your keyswitches. If you're using Costar ones, you can installed them afterwards.
To make things easier on yourself, make sure all of the keyswitches are oriented the same way (if they can be - not all layouts support this). Despite this, it's important to remember that the contacts on the keyswitches are completely symmetrical. We'll be using the keyswitch's left side contact for wiring the rows, and the right side one for wiring the columns.
## Parts list
Get your soldering iron heated-up and collect the rest of the materials from the part list at the beginning of the guide. Place your keyboard so that the bottoms of the keyswitches are accessible - it may be a good idea to place it on a cloth to protect your keyswitches/keycaps.
You will need: (where *x* is the number of keys on your planned keyboard)
Before continuing, plan out where you're going to place your Teensy. If you're working with a board that has a large (6.25u) spacebar, it may be a good idea to place it in-between switches against the plate. Otherwise, you may want to trim some of the leads on the keyswitches where you plan on putting it - this will make it a little harder to solder the wire/diodes, but give you more room to place the Teensy.
* QMK compatible microcontroller board (Teensy, Pro-Micro, QMK Proton C etc.)
* *x* keyswitches (MX, Matias, Gateron, etc)
* *x* through hole diodes
* Keyboard plate and plate mount stabilisers
* Wire
* Soldering iron
* Rosin-cored solder
* Adequate ventilation/a fan
* Wire cutters/snippers
## Preparing the Diodes
Optional but useful:
It's a little easier to solder the diodes in place if you bend them at a 90º angle immediately after the black line - this will help to make sure you put them on the right way (direction matters), and in the correct position. The diodes will look like this when bent (with longer leads):
* Wire strippers/a sharp knife
* Tweezers and/or small needle nose pliers
* Soldering station/Helping hands
```
┌─────┬─┐
───┤ │ ├─┐
└─────┴─┘ │
```
## Starting the build
We'll be using the long lead at the bent end to connect it to the elbow (bent part) of the next diode, creating the row.
There are many ways to hand wire a PCB matrix, this guide will describe the fundamentals as well as some recommended ways to go about it.
As we are dealing with hand wiring, it is assumed that you already have a plate. If you are planning a completely custom layout, tools such as [ai03 Plate Generator](https://kbplate.ai03.me/) and [Swillkb Plate & Case Builder](http://builder.swillkb.com/) can help when designing one.
Start by installing the switches and stabilisers in the plate. Depending on the thickness and material this may also involve hot gluing it in place.
## Planning the matrix
If you are following a pre-existing handwire guide (e.g. for the keyboards in the [handwire firmware section](https://github.com/qmk/qmk_firmware/tree/master/keyboards/handwired) you can skip this step, just ensure you wire the matrix as described.
What you want to achieve is one leg from each switch being attached to the corresponding switches next to it (rows) and the other leg being attached to the switches above and below it (columns) and a diode to one of the legs, mosy commonly this will be the leg attached to the rows, and the diode will face away from it (Column to Row) i.e. with the wire furthest from the black line on the diode connected to the switch (as current will only travel in one direction through a diode)
It is fairly simple to plan for an ortholinear keyboard (like a Planck).
![Example planck matrix](https://i.imgur.com/FRShcLD.png)
Image from [RoastPotatoes' "How to hand wire a Planck"](https://blog.roastpotatoes.co/guide/2015/11/04/how-to-handwire-a-planck/)
But the larger and more complicated your keyboard, the more complex the matrix. [Keyboard Firmware Builder](https://kbfirmware.com/) can help you plan your matrix layout (shown here with a basic fullsize ISO keyboard imported from [Keyboard Layout Editor](http://www.keyboard-layout-editor.com).
![Example ISO matrix](https://i.imgur.com/UlJ4ZDP.png)
Bear in mind that the number of rows plus the number of columns can not exceed the number of I/O pins on your controller. So the fullsize matrix shown above would be possible on a Proton C or Teensy++, but not on a regular Teensy or Pro Micro
#### Common Microcontroller Boards
| Board | Controller | # I/O | Pinout |
| :------------ |:-------------:| ------:| ------ |
| Pro Micro* | ATmega32u4 | 20 | [link](https://learn.sparkfun.com/tutorials/pro-micro--fio-v3-hookup-guide/hardware-overview-pro-micro#Teensy++_2.0) |
| Teensy 2.0 | ATmega32u4 | 25 | [link](https://www.pjrc.com/teensy/pinout.html) |
| [QMK Proton C](https://qmk.fm/proton-c/) | STM32F303xC | 36 | [link 1](https://i.imgur.com/RhtrAlc.png), [2](https://deskthority.net/wiki/QMK_Proton_C) |
| Teensy++ 2.0 | AT90USB1286 | 46 | [link](https://www.pjrc.com/teensy/pinout.html#Teensy_2.0) |
*Elite C is essentially the same as a pro micro with a USB-C instead of Micro-USB
There are also a number of boards designed specifically for handwiring that mount directly to a small number of switches and offer pinouts for the rest. Though these are generally more expensive and may be more difficult to get hold of.
<img src="https://i.imgur.com/QiA3ta6.jpg" alt="Postage board mini mounted in place" width="500"/>
| Board | Controller | # I/O |
| :------------ |:-------------:| ------:|
| [Swiss helper](https://www.reddit.com/r/MechanicalKeyboards/comments/8jg5d6/hand_wiring_this_might_help/) | ATmega32u4 | 20 |
| [Postage board](https://github.com/LifeIsOnTheWire/Postage-Board/)| ATmega32u4| 25 |
| [Postage board mini](https://geekhack.org/index.php?topic=101460.0)| ATmega32u4| 25 |
## Wiring the matrix
There is no one right way to do this. What you want to achieve is good connection at all of the joints planned and no unintentional shorts.
Established materials and techniques include:
| Technique | Examples | Pros | Cons | Image
| :-----------| :------- | :------ | :--- | :---
| Lengths of wire with stripped segments | [Sasha Solomon's Dactyl](https://medium.com/@sachee/building-my-first-keyboard-and-you-can-too-512c0f8a4c5f) and [Cribbit's modern hand wire](https://geekhack.org/index.php?topic=87689.0) | Neat and tidy | Some effort in stripping the wire | ![Stripped wire](https://i.imgur.com/0GNIYY0.jpg)
| Short lengths of wire | [u/xicolinguada's ortho build](https://www.reddit.com/r/MechanicalKeyboards/comments/c39k4f/my_first_hand_wired_keyboard_its_not_perfect_but/) | Easier to strip the wire | More difficult to place | ![individual wire lengths](https://i.imgur.com/mBe5vkL.jpg)
| Magnet/Enamelled wire | [Brett Kosinski's handwired alpha](http://blog.b-ark.ca/Blog-2019-01-27) and [fknraiden's custom board](https://geekhack.org/index.php?topic=74223.0) | Can be directly soldered onto (insulation burns off with heat) | Appearance? | ![Magnet wire](https://i.imgur.com/b4b7KDb.jpg)
| Bending the legs of the diodes for the rows | [Matt3o's Brownfox](https://deskthority.net/viewtopic.php?f=7&t=6050) | Fewer solder joints required | Uninsulated | ![Bent diode legs](https://i.imgur.com/aTnG8TV.jpg)
| Using ridid wiring (e.g. brass tube) | [u/d_stilgar's invisible hardline](https://www.reddit.com/r/MechanicalKeyboards/comments/8aw5j2/invisible_hardline_keyboard_progress_update_april/) and [u/jonasfasler's first attempt](https://www.reddit.com/r/MechanicalKeyboards/comments/de1jyv/my_first_attempt_at_handwiring_a_keyboard/) | Very pretty | More difficult. No physical insulation | ![Hardline hand wire](https://i.imgur.com/CnASmPo.jpg)
| Bare wire with insulation added after (e.g. kapton tape) | [Matt3o's 65% on his website](https://matt3o.com/hand-wiring-a-custom-keyboard/) | Easier (no wire stripping required) | Not as attractive | ![Bare wire](https://i.imgur.com/AvXZShD.jpg)
| Copper tape | [ManuForm Dactyl](https://github.com/tshort/dactyl-keyboard) | Very easy | Only really works when your plate/case aligns with the bottom of your switches | ![Copper tape](https://i.imgur.com/RFyNMlL.jpg)
Note that these methods can be combined. Prepare your lengths of wire before moving on to soldering.
### A note on split keyboards
If you are planning a split keyboard (e.g. Dactyl) each half will require a controller and a means of communicating between them (like a TRRS or hardwired cable). Further information can be found in the [QMK split keyboard documentation.](feature_split_keyboard.md)
### Soldering
There are a lot of soldering guides and tips available elsewhere but here are some of the most useful and relevant for hand wiring:
To ensure a strong solder joint you want a good amount of contact between the solder and the 2 peices of metal you are connecting, a good way of doing this (though not required) is looping around pins or twisting wires together before applying solder.
<img src="https://i.imgur.com/eHJjmnU.jpg" alt="Looped around rod" width="200"/> <img src="https://i.imgur.com/8nbxmmr.jpg?1" alt="Looped diode leg" width="200"/>
If your diodes are on a packaging strip and need a bend in them (either the start of a loop or for connecting to its neighbour) this can easily done by bending it over something straight like the edge of a box, table, or ruler. This also helps keep track of the direction of the diode as all the bends will be on the same side.
<img src="https://i.imgur.com/oITudbX.jpg" alt="Bent diode legs" width="200"/>
If your iron has temperature control, set it to 315ºC (600ºF).
Once heated, tin your soldering iron - this means melting a small amount of solder on the end of the iron and then quickly wiping it off on a wet sponge or wire cleaning pad, leaving a shiny silvery coating on the end which helps keep oxidisation at bay and helps solder to flow.
When you come to apply the solder, hold the soldering iron against the two surfaces for a second to heat it, then apply a small amount of solder to join the two pieces together. Heating the surfaces ensures that the solder adheres to it and that it does not cool too quickly.
Don't hold the iron on the solder/joint longer than necessary. Heat will be conducted through the surfaces and can damage components (melt switch housings etc.). Also, solder contains flux, which aids in ["wetting"](https://en.m.wikipedia.org/wiki/Wetting). The longer heat is applied to the solder the more flux will evaporate meaning you may end up with a bad solder joint with peaks which, apart from looking bad, may also increase the risk of electrical shorts.
The following collapsible section describes in detail how to solder rows using the bent diode technique and columns using short lengths of wire.
<details>
<summary>Click for details</summary>
## Soldering the Diodes
@@ -169,34 +270,52 @@ Before beginning to solder, it helps to have your wire pre-bent (if using single
If you're not using any insulation, you can try to keep the column wires elevated, and solder them near the tips of the keyswitch contacts - if the wires are sturdy enough, they won't short out to the row wiring an diodes.
## Wiring Things to the Teensy
</details>
Now that the matrix itself is complete, it's time to connect what you've done to the Teensy. You'll be needing the number of pins equal to your number of columns + your number of rows. There are some pins on the Teensy that are special, like D6 (the LED on the chip), or some of the UART, SPI, I2C, or PWM channels, but only avoid those if you're planning something in addition to a keyboard. If you're unsure about wanting to add something later, you should have enough pins in total to avoid a couple.
# Wiring up the controller
The pins you'll absolutely have to avoid are: GND, VCC, AREF, and RST - all the others are usable and accessible in the firmware.
Now that the matrix itself is complete, it's time to connect what you've done to the microcontroller board.
Place the Teensy where you plan to put it - you'll have to cut wires to length in the next step, and you'll want to make sure they reach.
Place the microcontroller where you want it to be located, give thought to mounting and case alignment. Bear in mind that the location of the USB socket can be different from the controller by using a short male to female cable if required,.
Starting with the first column on the right side, measure out how much wire you'll need to connect it to the first pin on the Teensy - it helps to pick a side that you'll be able to work down, to keep the wires from overlapping too much. It may help to leave a little bit of slack so things aren't too tight. Cut the piece of wire, and solder it to the Teensy, and then the column - you can solder it anywhere along the column, but it may be easiest at the keyswitch. Just be sure the wire doesn't separate from the keyswitch when soldering.
Find the pinout/documentation for your microcontroller board ([links here](#common-microcontroller-boards)) and make a note of all the digital I/O pins on it (note that on some controllers, like the teensy, analogue I/O can double as digital) as these are the pins you want to connect your wires to.
As you move from column to column, it'll be helpful to write the locations of the pins down. We'll use this data to setup the matrix in the future.
<details>
When you're done with the columns, start with the rows in the same process, from top to bottom, and write them all down. Again, you can solder anywhere along the row, as long as it's after the diode - soldering before the diode (on the keyswitch side) will cause that row not to work.
<summary>Specific instructions for the Teensy 2.0</summary>
As you move along, be sure that the Teensy is staying in place - recutting and soldering the wires is a pain!
There are some pins on the Teensy that are special, like D6 (the LED on the chip), or some of the UART, SPI, I2C, or PWM channels, but only avoid those if you're planning something in addition to a keyboard. If you're unsure about wanting to add something later, you should have enough pins in total to avoid a couple.
## Additional guides
The pins you'll absolutely have to avoid, as with any controller, are: GND, VCC, AREF, and RST - all the others are usable and accessible in the firmware.
</details>
Cut wires to the length of the distance from the a point on each column/row to the controller. You can solder anywhere along the row, as long as it's after the diode - soldering before the diode (on the keyswitch side) will cause that row not to work.
Ribbon cable can be used to keep this extra tidy. You may also want to consider routing the wires beneath the exisiting columns/rows.
<img src="https://i.imgur.com/z2QlKfB.jpg" alt="Ribbon Cable" width="350"/>
As you solder the wires to the controller make a note of which row/column is going to which pin on the controller as we'll use this data to setup the matrix when we create the firmware.
As you move along, be sure that the controller is staying in place - recutting and soldering the wires is a pain!
If you're more of a visual learner, or want some additional tips and something more to follow along, these two visual step by step guides may be helpful:
- [BrownFox's step by step guide](https://deskthority.net/viewtopic.php?f=7&t=6050)
- [Cribbit's modern hand wiring guide](https://geekhack.org/index.php?topic=87689.0)
# Getting Some Basic Firmware Set Up
From here, you should have a working keyboard once you program a firmware. Before we attach the Teensy permanently to the keyboard, let's quickly get some firmware loaded onto the Teensy so we can test each keyswitch.
From here, you should have a working keyboard once you program a firmware.
To start out, download [the firmware](https://github.com/qmk/qmk_firmware/) - we'll be using my (Jack's) fork of TMK called QMK/Quantum. We'll be doing a lot from the Terminal/command prompt, so get that open, along with a decent text editor like [Sublime Text](http://www.sublimetext.com/) (paid) or [Visual Studio Code](https://code.visualstudio.com) (free).
Simple firmware can be created easily using the [Keyboard Firmware Builder](https://kbfirmware.com/) website. Recreate your layout using [Keyboard Layout Editor](http://www.keyboard-layout-editor.com), import it and recreate the matrix (if not already done as part of [planning the matrix](#planning-the-matrix).
Go through the rest of the tabs, assigning keys until you get to the last one where you can compile and download your firmware. The .hex file can be flashed straight onto your keyboard, and the .zip of source files can be modified for advanced functionality and compiled locally using the method described in the collapsable section below, or using the more comprehensive [getting started guide.](newbs_getting_started)
<details>
<summary>Creating and compiling your firmware locally (command line method)</summary>
To start out, download [the firmware](https://github.com/qmk/qmk_firmware/) - We'll be doing a lot from the Terminal/command prompt, so get that open, along with a decent text editor like [Sublime Text](http://www.sublimetext.com/) (paid) or [Visual Studio Code](https://code.visualstudio.com) (free).
The first thing we're going to do is create a new keyboard. In your terminal, run this command, which will ask you some questions and generate a basic keyboard project:
@@ -319,9 +438,22 @@ Once everything is installed, running `make` in the terminal should get you some
Once you have your `<project_name>.hex` file, open up the Teensy loader application, and click the file icon. From here, navigate to your `QMK/keyboards/<project_name>/` folder, and select the `<project_name>.hex` file. Plug in your keyboard and press the button on the Teensy - you should see the LED on the device turn off once you do. The Teensy Loader app will change a little, and the buttons should be clickable - click the download button (down arrow), and then the reset button (right arrow), and your keyboard should be ready to go!
</details>
## Flashing the Firmware
Install [QMK toolbox](https://github.com/qmk/qmk_toolbox).
![QMK Toolbox](https://i.imgur.com/86Cz30H.png)
Under "Local File" navigate to your newly created .hex file. Under "Microcontroller", select the corresponding one for your controller board (common ones available [here](#common-microcontroller-boards)).
Plug in your keyboard and press the reset button (or short the Reset and Ground pins if there is no button) and click the "Flash" button in QMK toolbox.
## Testing Your Firmware
Carefully flip your keyboard over, open up a new text document, and try typing - you should get the characters that you put into your keymap. Test each key, and note the ones that aren't working. Here's a quick trouble-shooting guide for non-working keys:
Use a website such as [keyboard tester](https://www.keyboardtester.com/tester.html)/[keyboard checker](http://keyboardchecker.com/) or just open a text editor and try typing - you should get the characters that you put into your keymap. Test each key, and make a note of the ones that aren't working. Here's a quick trouble-shooting guide for non-working keys:
0. Flip the keyboard back over and short the keyswitch's contacts with a piece wire - this will eliminate the possibility of the keyswitch being bad and needing to be replaced.
1. Check the solder points on the keyswitch - these need to be plump and whole. If you touch it with a moderate amount of force and it comes apart, it's not strong enough.
@@ -330,11 +462,25 @@ Carefully flip your keyboard over, open up a new text document, and try typing -
4. Check the solder joints on both sides of the wires going to/from the Teensy - the wires need to be fully soldered and connect to both sides.
5. Check the `<project_name>.h` file for errors and incorrectly placed `KC_NO`s - if you're unsure where they should be, instead duplicate a k*xy* variable.
6. Check to make sure you actually compiled the firmware and flashed the Teensy correctly. Unless you got error messages in the terminal, or a pop-up during flashing, you probably did everything correctly.
7. Use a multimeter to check that the switch is actually closing when actuated (completing the circuit when pressed down).
If you've done all of these things, keep in mind that sometimes you might have had multiple things affecting the keyswitch, so it doesn't hurt to test the keyswitch by shorting it out at the end.
# Securing the Teensy, Finishing Your Hardware, Getting Fancier Firmware
# Finishing up
Once you have confirmed that the keyboard is working, if you have used a seperate (non handwire specific) controller you will want to secure it in place. This can be done in many different ways e.g. hot glue, double sided sticky tape, 3D printed caddy, electrical tape.
If you found this fullfilling you could experiment by adding additional features such as [in switch LEDs](https://geekhack.org/index.php?topic=94258.0), [in switch RGB](https://www.reddit.com/r/MechanicalKeyboards/comments/5s1l5u/photoskeyboard_science_i_made_a_handwired_rgb/), [RGB underglow](https://medium.com/@DavidNZ/hand-wired-custom-keyboard-cdd14429c7b3#.7a1ovebsk) or even an [OLED display!](https://www.reddit.com/r/olkb/comments/5zy7og/adding_ssd1306_oled_display_to_your_build/)
There are a lot of possibilities inside the firmware - explore [docs.qmk.fm](http://docs.qmk.fm) for a full feature list, and dive into the different keyboards to see how people use all of them. You can always stop by [the OLKB subreddit](http://reddit.com/r/olkb) or [QMK Discord](https://discord.gg/Uq7gcHh) for help!
# Links to other guides:
- [matt3o's step by step guide (BrownFox build)](https://deskthority.net/viewtopic.php?f=7&t=6050) also his [website](https://matt3o.com/hand-wiring-a-custom-keyboard/) and [video guide](https://www.youtube.com/watch?v=LVzpsjFWPP4)
- [Cribbit's "Modern hand wiring guide - stronger, cleaner, easier"](https://geekhack.org/index.php?topic=87689.0)
- [Sasha Solomon's "Building my first Keyboard"](https://medium.com/@sachee/building-my-first-keyboard-and-you-can-too-512c0f8a4c5f)
- [RoastPotatoes' "How to hand wire a Planck"](https://blog.roastpotatoes.co/guide/2015/11/04/how-to-handwire-a-planck/)
- [Masterzen's "Handwired keyboard build log"](http://www.masterzen.fr/2018/12/16/handwired-keyboard-build-log-part-1/)
Now that you have a working board, it's time to get things in their permanent positions. I've often used liberal amounts of hot glue to secure and insulate things, so if that's your style, start spreading that stuff like butter. Otherwise, double-sided tape is always an elegant solution, and electrical tape is a distant second. Due to the nature of these builds, a lot of this part is up to you and how you planned (or didn't plan) things out.
There are a lot of possibilities inside the firmware - explore [docs.qmk.fm](http://docs.qmk.fm) for a full feature list, and dive into the different keyboards (Planck, Clueboard, Ergodox EZ, etc) to see how people use all of them. You can always stop by [the OLKB subreddit for help!](http://reddit.com/r/olkb)

View File

@@ -1,6 +1,6 @@
# Keyboards with AVR Processors
This page describes the support for for AVR processors in QMK. AVR processors include the atmega32u4, atmega32u2, at90usb1286, and other processors from Atmel Corporation. AVR processors are 8-bit MCU's that are designed to be easy to work with. The most common AVR processors in keyboards have on-board USB and plenty of GPIO for supporting large keyboard matrices. They are the most popular MCU for use in keyboards today.
This page describes the support for for AVR processors in QMK. AVR processors include the atmega32u4, atmega32u2, at90usb1286, and other processors from Atmel Corporation. AVR processors are 8-bit MCUs that are designed to be easy to work with. The most common AVR processors in keyboards have on-board USB and plenty of GPIO for supporting large keyboard matrices. They are the most popular MCU for use in keyboards today.
If you have not yet you should read the [Keyboard Guidelines](hardware_keyboard_guidelines.md) to get a sense of how keyboards fit into QMK.

View File

@@ -20,7 +20,7 @@ Support for SSD1306 based OLED displays. For more information see the [OLED Driv
## uGFX
You can make use of uGFX within QMK to drive character and graphic LCD's, LED arrays, OLED, TFT, and other display technologies. This needs to be better documented, if you are trying to do this and reading the code doesn't help please [open an issue](https://github.com/qmk/qmk_firmware/issues/new) and we can help you through the process.
You can make use of uGFX within QMK to drive character and graphic LCDs, LED arrays, OLED, TFT, and other display technologies. This needs to be better documented, if you are trying to do this and reading the code doesn't help please [open an issue](https://github.com/qmk/qmk_firmware/issues/new) and we can help you through the process.
## WS2812 (AVR Only)

View File

@@ -67,7 +67,7 @@ The presence of this file means that the folder is a keyboard target and can be
### `<keyboard_name.c>`
This is where you will write custom code for your keyboard. Typically you will write code to initialize and interface with the hardware in your keyboard. If your keyboard consists of only a key matrix with no LEDs, speakers, or other auxillary hardware this file can be blank.
This is where you will write custom code for your keyboard. Typically you will write code to initialize and interface with the hardware in your keyboard. If your keyboard consists of only a key matrix with no LEDs, speakers, or other auxiliary hardware this file can be blank.
The following functions are typically defined in this file:

View File

@@ -35,7 +35,7 @@ USB for a given key.
## 3. What the Event Input/Kernel Does
The *scancode* is mapped to a *keycode* dependent on the keyboard [60-keyboard.hwdb at Master](https://github.com/systemd/systemd/blob/master/hwdb/60-keyboard.hwdb). Without this mapping, the operating system will not receive a valid keycode and will be unable to do anything useful with that key press.
The *scancode* is mapped to a *keycode* dependent on the keyboard [60-keyboard.hwdb at Master](https://github.com/systemd/systemd/blob/master/hwdb.d/60-keyboard.hwdb). Without this mapping, the operating system will not receive a valid keycode and will be unable to do anything useful with that key press.
## 4. What the Operating System Does

View File

@@ -7,7 +7,7 @@ The I2C Master drivers used in QMK have a set of common functions to allow porta
|Function |Description |
|------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|`void i2c_init(void);` |Initializes the I2C driver. This function should be called once before any transaction is initiated. |
|`uint8_t i2c_start(uint8_t address);` |Starts an I2C transaction. Address is the 7-bit slave address without the direction bit. |
|`uint8_t i2c_start(uint8_t address, uint16_t timeout);` |Starts an I2C transaction. Address is the 7-bit slave address without the direction bit. |
|`uint8_t i2c_transmit(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout);` |Transmit data over I2C. Address is the 7-bit slave address without the direction. Returns status of transaction. |
|`uint8_t i2c_receive(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout);` |Receive data over I2C. Address is the 7-bit slave address without the direction. Saves number of bytes specified by `length` in `data` array. Returns status of transaction. |
|`uint8_t i2c_writeReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout);` |Same as the `i2c_transmit` function but `regaddr` sets where in the slave the data will be written. |

View File

@@ -3,12 +3,13 @@
<head>
<meta charset="UTF-8">
<title>QMK Firmware</title>
<link rel="icon" type="image/png" href="gitbook/images/favicon.png">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta name="description" content="Description">
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta property="og:title" content="QMK Firmware Docs">
<meta property="og:type" content="website">
<meta property="og:description" content="The full documenation of the open-source firmware">
<meta property="og:description" content="The full documentation of the open-source firmware">
<meta property="og:image" content="https://i.imgur.com/svjvIrw.jpg">
<meta property="og:url" content="https://docs.qmk.fm">
<meta name="twitter:card" content="summary_large_image">
@@ -20,19 +21,50 @@
<div id="app"></div>
<script>
window.$docsify = {
alias : {
'/en/(.*)': '/$1',
'/en-us/(.*)': '/$1',
'/en-gb/(.*)': '/$1',
'/.*/_langs.md': '/_langs.md',
},
basePath: '/',
name: 'QMK Firmware',
nameLink: 'https://qmk.fm/',
nameLink: '/',
repo: 'qmk/qmk_firmware',
loadSidebar: '_summary.md',
loadNavbar: '_langs.md',
mergeNavbar: true,
auto2top: true,
formatUpdated: '{YYYY}/{MM}/{DD} {HH}:{mm}',
search: {
paths: 'auto',
placeholder: 'Search Documentation...',
noData: 'We could not find any documents matching your search.',
placeholder: {
'/zh-cn/': '搜索',
'/': 'Search'
},
noData: {
'/zh-cn/': '没有结果!',
'/': 'No results!'
},
depth: 6
},
fallbackLanguages: ['zh']
plugins: [
function (hook, vm) {
hook.beforeEach(function (html) {
if (/githubusercontent\.com/.test(vm.route.file)) {
url = vm.route.file
.replace('raw.githubusercontent.com', 'github.com')
.replace(/\/master/, '/blob/master')
} else {
url = 'https://github.com/qmk/qmk_firmware/blob/master/docs/' + vm.route.file
}
var editHtml = '[:memo: Edit Document](' + url + ')\n'
return html
+ '\n\n----\n\n'
+ editHtml
})
},
]
}
</script>
<script src="//unpkg.com/docsify/lib/docsify.min.js"></script>

View File

@@ -6,18 +6,17 @@ QMK has a GPIO control abstraction layer which is microcontroller agnostic. This
The following functions can provide basic control of GPIOs and are found in `quantum/quantum.h`.
|Function |Description |
|----------------------|------------------------------------------------------------------|
|`setPinInput(pin)` |Set pin as input with high impedance (High-Z) |
|`setPinInputHigh(pin)`|Set pin as input with build in pull-up |
|`setPinInputLow(pin)` |Set pin as input with build in pull-down (Supported only on STM32)|
|`setPinOutput(pin)` |Set pin as output |
|`writePinHigh(pin)` |Set pin level as high, assuming it is an output |
|`writePinLow(pin)` |Set pin level as low, assuming it is an output |
|`writePin(pin, level)`|Set pin level, assuming it is an output |
|`readPin(pin)` |Returns the level of the pin |
|Function |Description | Old AVR Examples | Old ChibiOS/ARM Examples |
|----------------------|------------------------------------------------------------------|------------------------------------------------|-------------------------------------------------|
|`setPinInput(pin)` |Set pin as input with high impedance (High-Z) | `DDRB &= ~(1<<2)` | `palSetLineMode(pin, PAL_MODE_INPUT)` |
|`setPinInputHigh(pin)`|Set pin as input with builtin pull-up resistor | `DDRB &= ~(1<<2); PORTB \|= (1<<2)` | `palSetLineMode(pin, PAL_MODE_INPUT_PULLUP)` |
|`setPinInputLow(pin)` |Set pin as input with builtin pull-down resistor | N/A (Not supported on AVR) | `palSetLineMode(pin, PAL_MODE_INPUT_PULLDOWN)` |
|`setPinOutput(pin)` |Set pin as output | `DDRB \|= (1<<2)` | `palSetLineMode(pin, PAL_MODE_OUTPUT_PUSHPULL)` |
|`writePinHigh(pin)` |Set pin level as high, assuming it is an output | `PORTB \|= (1<<2)` | `palSetLine(pin)` |
|`writePinLow(pin)` |Set pin level as low, assuming it is an output | `PORTB &= ~(1<<2)` | `palClearLine(pin)` |
|`writePin(pin, level)`|Set pin level, assuming it is an output | `(level) ? PORTB \|= (1<<2) : PORTB &= ~(1<<2)` | `(level) ? palSetLine(pin) : palClearLine(pin)` |
|`readPin(pin)` |Returns the level of the pin | `_SFR_IO8(pin >> 4) & _BV(pin & 0xF)` | `palReadLine(pin)` |
## 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.

View File

@@ -55,7 +55,7 @@ This is a reference only. Each group of keys links to the page documenting their
|`KC_EQUAL` |`KC_EQL` |`=` and `+` |
|`KC_LBRACKET` |`KC_LBRC` |`[` and `{` |
|`KC_RBRACKET` |`KC_RBRC` |`]` and `}` |
|`KC_BSLASH` |`KC_BSLS` |`\` and <code>&#124;</code> |
|`KC_BSLASH` |`KC_BSLS` |`\` and `\|` |
|`KC_NONUS_HASH` |`KC_NUHS` |Non-US `#` and `~` |
|`KC_SCOLON` |`KC_SCLN` |`;` and `:` |
|`KC_QUOTE` |`KC_QUOT` |`'` and `"` |
@@ -106,7 +106,7 @@ This is a reference only. Each group of keys links to the page documenting their
|`KC_KP_9` |`KC_P9` |Keypad `9` and Page Up |
|`KC_KP_0` |`KC_P0` |Keypad `0` and Insert |
|`KC_KP_DOT` |`KC_PDOT` |Keypad `.` and Delete |
|`KC_NONUS_BSLASH` |`KC_NUBS` |Non-US `\` and <code>&#124;</code> |
|`KC_NONUS_BSLASH` |`KC_NUBS` |Non-US `\` and `\|` |
|`KC_APPLICATION` |`KC_APP` |Application (Windows Menu Key) |
|`KC_POWER` | |System Power (macOS) |
|`KC_KP_EQUAL` |`KC_PEQL` |Keypad `=` |
@@ -143,7 +143,7 @@ This is a reference only. Each group of keys links to the page documenting their
|`KC_KP_EQUAL_AS400` | |Keypad `=` on AS/400 keyboards |
|`KC_INT1` |`KC_RO` |JIS `\` and `_` |
|`KC_INT2` |`KC_KANA` |JIS Katakana/Hiragana |
|`KC_INT3` |`KC_JYEN` |JIS `¥` and <code>&#124;</code> |
|`KC_INT3` |`KC_JYEN` |JIS `¥` and `\|` |
|`KC_INT4` |`KC_HENK` |JIS Henkan |
|`KC_INT5` |`KC_MHEN` |JIS Muhenkan |
|`KC_INT6` | |JIS Numpad `,` |
@@ -257,35 +257,37 @@ This is a reference only. Each group of keys links to the page documenting their
## [Bootmagic](feature_bootmagic.md)
|Key |Aliases |Description |
|----------------------------------|---------|------------------------------------|
|`MAGIC_SWAP_CONTROL_CAPSLOCK` | |Swap Caps Lock and Left Control |
|`MAGIC_CAPSLOCK_TO_CONTROL` | |Treat Caps Lock as Control |
|`MAGIC_SWAP_LCTL_LGUI` | |Swap Left Control and GUI |
|`MAGIC_SWAP_RCTL_RGUI` | |Swap Right Control and GUI |
|`MAGIC_SWAP_LALT_LGUI` | |Swap Left Alt and GUI |
|`MAGIC_SWAP_RALT_RGUI` | |Swap Right Alt and GUI |
|`MAGIC_NO_GUI` | |Disable the GUI key |
|`MAGIC_SWAP_GRAVE_ESC` | |Swap <code>&#96;</code> and Escape |
|`MAGIC_SWAP_BACKSLASH_BACKSPACE` | |Swap `\` and Backspace |
|`MAGIC_HOST_NKRO` | |Force NKRO on |
|`MAGIC_SWAP_ALT_GUI` |`AG_SWAP`|Swap Alt and GUI on both sides |
|Key |Aliases |Description |
|----------------------------------|---------|-------------------------------------------|
|`MAGIC_SWAP_CONTROL_CAPSLOCK` | |Swap Caps Lock and Left Control |
|`MAGIC_CAPSLOCK_TO_CONTROL` | |Treat Caps Lock as Control |
|`MAGIC_SWAP_LCTL_LGUI` | |Swap Left Control and GUI |
|`MAGIC_SWAP_RCTL_RGUI` | |Swap Right Control and GUI |
|`MAGIC_SWAP_LALT_LGUI` | |Swap Left Alt and GUI |
|`MAGIC_SWAP_RALT_RGUI` | |Swap Right Alt and GUI |
|`MAGIC_NO_GUI` | |Disable the GUI key |
|`MAGIC_SWAP_GRAVE_ESC` | |Swap <code>&#96;</code> and Escape |
|`MAGIC_SWAP_BACKSLASH_BACKSPACE` | |Swap `\` and Backspace |
|`MAGIC_HOST_NKRO` | |Force NKRO on |
|`MAGIC_SWAP_ALT_GUI` |`AG_SWAP`|Swap Alt and GUI on both sides |
|`MAGIC_SWAP_CTL_GUI` |`CG_SWAP`|Swap Ctrl and GUI on both sides (for macOS)|
|`MAGIC_UNSWAP_CONTROL_CAPSLOCK` | |Unswap Caps Lock and Left Control |
|`MAGIC_UNCAPSLOCK_TO_CONTROL` | |Stop treating Caps Lock as Control |
|`MAGIC_UNSWAP_LCTL_LGUI` | |Unswap Left Control and GUI |
|`MAGIC_UNSWAP_RCTL_RGUI` | |Unswap Right Control and GUI |
|`MAGIC_UNSWAP_LALT_LGUI` | |Unswap Left Alt and GUI |
|`MAGIC_UNSWAP_RALT_RGUI` | |Unswap Right Alt and GUI |
|`MAGIC_UNNO_GUI` | |Enable the GUI key |
|`MAGIC_UNSWAP_GRAVE_ESC` | |Unswap <code>&#96;</code> and Escape|
|`MAGIC_UNSWAP_BACKSLASH_BACKSPACE`| |Unswap `\` and Backspace |
|`MAGIC_UNHOST_NKRO` | |Force NKRO off |
|`MAGIC_UNSWAP_ALT_GUI` |`AG_NORM`|Unswap Alt and GUI on both sides |
|`MAGIC_UNSWAP_CTL_GUI` |`CG_NORM`|Unswap Ctrl and GUI on both sides |
|`MAGIC_TOGGLE_ALT_GUI` |`AG_TOGG`|Toggle Alt and GUI swap on both sides |
|`MAGIC_TOGGLE_CTL_GUI` |`CG_TOGG`|Toggle Ctrl and GUI swap on both sides |
|`MAGIC_TOGGLE_NKRO` | |Turn NKRO on or off |
|`MAGIC_UNSWAP_CONTROL_CAPSLOCK` | |Unswap Caps Lock and Left Control |
|`MAGIC_UNCAPSLOCK_TO_CONTROL` | |Stop treating Caps Lock as Control |
|`MAGIC_UNSWAP_LCTL_LGUI` | |Unswap Left Control and GUI |
|`MAGIC_UNSWAP_RCTL_RGUI` | |Unswap Right Control and GUI |
|`MAGIC_UNSWAP_LALT_LGUI` | |Unswap Left Alt and GUI |
|`MAGIC_UNSWAP_RALT_RGUI` | |Unswap Right Alt and GUI |
|`MAGIC_UNNO_GUI` | |Enable the GUI key |
|`MAGIC_UNSWAP_GRAVE_ESC` | |Unswap <code>&#96;</code> and Escape |
|`MAGIC_UNSWAP_BACKSLASH_BACKSPACE`| |Unswap `\` and Backspace |
|`MAGIC_UNHOST_NKRO` | |Force NKRO off |
|`MAGIC_UNSWAP_ALT_GUI` |`AG_NORM`|Unswap Alt and GUI on both sides |
|`MAGIC_UNSWAP_CTL_GUI` |`CG_NORM`|Unswap Ctrl and GUI on both sides |
|`MAGIC_TOGGLE_ALT_GUI` |`AG_TOGG`|Toggle Alt and GUI swap on both sides |
|`MAGIC_TOGGLE_CTL_GUI` |`CG_TOGG`|Toggle Ctrl and GUI swap on both sides |
|`MAGIC_TOGGLE_NKRO` | |Turn NKRO on or off |
|`MAGIC_EE_HANDS_LEFT` | |Set "Left Hand" for EE_HANDS handedness |
|`MAGIC_EE_HANDS_RIGHT` | |Set "Right Hand" for EE_HANDS handedness |
## [Bluetooth](feature_bluetooth.md)
@@ -418,29 +420,29 @@ This is a reference only. Each group of keys links to the page documenting their
## [US ANSI Shifted Symbols](keycodes_us_ansi_shifted.md)
|Key |Aliases |Description |
|------------------------|-------------------|-------------------|
|`KC_TILDE` |`KC_TILD` |`~` |
|`KC_EXCLAIM` |`KC_EXLM` |`!` |
|`KC_AT` | |`@` |
|`KC_HASH` | |`#` |
|`KC_DOLLAR` |`KC_DLR` |`$` |
|`KC_PERCENT` |`KC_PERC` |`%` |
|`KC_CIRCUMFLEX` |`KC_CIRC` |`^` |
|`KC_AMPERSAND` |`KC_AMPR` |`&` |
|`KC_ASTERISK` |`KC_ASTR` |`*` |
|`KC_LEFT_PAREN` |`KC_LPRN` |`(` |
|`KC_RIGHT_PAREN` |`KC_RPRN` |`)` |
|`KC_UNDERSCORE` |`KC_UNDS` |`_` |
|`KC_PLUS` | |`+` |
|`KC_LEFT_CURLY_BRACE` |`KC_LCBR` |`{` |
|`KC_RIGHT_CURLY_BRACE` |`KC_RCBR` |`}` |
|`KC_PIPE` | |<code>&#124;</code>|
|`KC_COLON` |`KC_COLN` |`:` |
|`KC_DOUBLE_QUOTE` |`KC_DQUO`, `KC_DQT`|`"` |
|`KC_LEFT_ANGLE_BRACKET` |`KC_LABK`, `KC_LT` |`<` |
|`KC_RIGHT_ANGLE_BRACKET`|`KC_RABK`, `KC_GT` |`>` |
|`KC_QUESTION` |`KC_QUES` |`?` |
|Key |Aliases |Description|
|------------------------|-------------------|-----------|
|`KC_TILDE` |`KC_TILD` |`~` |
|`KC_EXCLAIM` |`KC_EXLM` |`!` |
|`KC_AT` | |`@` |
|`KC_HASH` | |`#` |
|`KC_DOLLAR` |`KC_DLR` |`$` |
|`KC_PERCENT` |`KC_PERC` |`%` |
|`KC_CIRCUMFLEX` |`KC_CIRC` |`^` |
|`KC_AMPERSAND` |`KC_AMPR` |`&` |
|`KC_ASTERISK` |`KC_ASTR` |`*` |
|`KC_LEFT_PAREN` |`KC_LPRN` |`(` |
|`KC_RIGHT_PAREN` |`KC_RPRN` |`)` |
|`KC_UNDERSCORE` |`KC_UNDS` |`_` |
|`KC_PLUS` | |`+` |
|`KC_LEFT_CURLY_BRACE` |`KC_LCBR` |`{` |
|`KC_RIGHT_CURLY_BRACE` |`KC_RCBR` |`}` |
|`KC_PIPE` | |`\|` |
|`KC_COLON` |`KC_COLN` |`:` |
|`KC_DOUBLE_QUOTE` |`KC_DQUO`, `KC_DQT`|`"` |
|`KC_LEFT_ANGLE_BRACKET` |`KC_LABK`, `KC_LT` |`<` |
|`KC_RIGHT_ANGLE_BRACKET`|`KC_RABK`, `KC_GT` |`>` |
|`KC_QUESTION` |`KC_QUES` |`?` |
## [One Shot Keys](feature_advanced_keycodes.md#one-shot-keys)

View File

@@ -85,7 +85,7 @@ The basic set of keycodes are based on the [HID Keyboard/Keypad Usage Page (0x07
|`KC_EQUAL` |`KC_EQL` |`=` and `+` |
|`KC_LBRACKET` |`KC_LBRC` |`[` and `{` |
|`KC_RBRACKET` |`KC_RBRC` |`]` and `}` |
|`KC_BSLASH` |`KC_BSLS` |`\` and <code>&#124;</code> |
|`KC_BSLASH` |`KC_BSLS` |`\` and `\|` |
|`KC_NONUS_HASH` |`KC_NUHS` |Non-US `#` and `~` |
|`KC_SCOLON` |`KC_SCLN` |`;` and `:` |
|`KC_QUOTE` |`KC_QUOT` |`'` and `"` |
@@ -93,7 +93,7 @@ The basic set of keycodes are based on the [HID Keyboard/Keypad Usage Page (0x07
|`KC_COMMA` |`KC_COMM` |`,` and `<` |
|`KC_DOT` | |`.` and `>` |
|`KC_SLASH` |`KC_SLSH` |`/` and `?` |
|`KC_NONUS_BSLASH`|`KC_NUBS` |Non-US `\` and <code>&#124;</code> |
|`KC_NONUS_BSLASH`|`KC_NUBS` |Non-US `\` and `\|` |
## Lock Keys
@@ -121,26 +121,26 @@ The basic set of keycodes are based on the [HID Keyboard/Keypad Usage Page (0x07
## International
|Key |Aliases |Description |
|----------|---------|-------------------------------|
|`KC_INT1` |`KC_RO` |JIS `\` and `_` |
|`KC_INT2` |`KC_KANA`|JIS Katakana/Hiragana |
|`KC_INT3` |`KC_JYEN`|JIS `¥` and <code>&#124;</code>|
|`KC_INT4` |`KC_HENK`|JIS Henkan |
|`KC_INT5` |`KC_MHEN`|JIS Muhenkan |
|`KC_INT6` | |JIS Numpad `,` |
|`KC_INT7` | |International 7 |
|`KC_INT8` | |International 8 |
|`KC_INT9` | |International 9 |
|`KC_LANG1`|`KC_HAEN`|Hangul/English |
|`KC_LANG2`|`KC_HANJ`|Hanja |
|`KC_LANG3`| |JIS Katakana |
|`KC_LANG4`| |JIS Hiragana |
|`KC_LANG5`| |JIS Zenkaku/Hankaku |
|`KC_LANG6`| |Language 6 |
|`KC_LANG7`| |Language 7 |
|`KC_LANG8`| |Language 8 |
|`KC_LANG9`| |Language 9 |
|Key |Aliases |Description |
|----------|---------|---------------------|
|`KC_INT1` |`KC_RO` |JIS `\` and `_` |
|`KC_INT2` |`KC_KANA`|JIS Katakana/Hiragana|
|`KC_INT3` |`KC_JYEN`|JIS `¥` and `\|` |
|`KC_INT4` |`KC_HENK`|JIS Henkan |
|`KC_INT5` |`KC_MHEN`|JIS Muhenkan |
|`KC_INT6` | |JIS Numpad `,` |
|`KC_INT7` | |International 7 |
|`KC_INT8` | |International 8 |
|`KC_INT9` | |International 9 |
|`KC_LANG1`|`KC_HAEN`|Hangul/English |
|`KC_LANG2`|`KC_HANJ`|Hanja |
|`KC_LANG3`| |JIS Katakana |
|`KC_LANG4`| |JIS Hiragana |
|`KC_LANG5`| |JIS Zenkaku/Hankaku |
|`KC_LANG6`| |Language 6 |
|`KC_LANG7`| |Language 7 |
|`KC_LANG8`| |Language 8 |
|`KC_LANG9`| |Language 9 |
## Commands

View File

@@ -12,26 +12,26 @@ To fix this, open Remote Desktop Connection, click on "Show Options", open the t
## Keycodes
|Key |Aliases |Description |
|------------------------|-------------------|-------------------|
|`KC_TILDE` |`KC_TILD` |`~` |
|`KC_EXCLAIM` |`KC_EXLM` |`!` |
|`KC_AT` | |`@` |
|`KC_HASH` | |`#` |
|`KC_DOLLAR` |`KC_DLR` |`$` |
|`KC_PERCENT` |`KC_PERC` |`%` |
|`KC_CIRCUMFLEX` |`KC_CIRC` |`^` |
|`KC_AMPERSAND` |`KC_AMPR` |`&` |
|`KC_ASTERISK` |`KC_ASTR` |`*` |
|`KC_LEFT_PAREN` |`KC_LPRN` |`(` |
|`KC_RIGHT_PAREN` |`KC_RPRN` |`)` |
|`KC_UNDERSCORE` |`KC_UNDS` |`_` |
|`KC_PLUS` | |`+` |
|`KC_LEFT_CURLY_BRACE` |`KC_LCBR` |`{` |
|`KC_RIGHT_CURLY_BRACE` |`KC_RCBR` |`}` |
|`KC_PIPE` | |<code>&#124;</code>|
|`KC_COLON` |`KC_COLN` |`:` |
|`KC_DOUBLE_QUOTE` |`KC_DQUO`, `KC_DQT`|`"` |
|`KC_LEFT_ANGLE_BRACKET` |`KC_LABK`, `KC_LT` |`<` |
|`KC_RIGHT_ANGLE_BRACKET`|`KC_RABK`, `KC_GT` |`>` |
|`KC_QUESTION` |`KC_QUES` |`?` |
|Key |Aliases |Description|
|------------------------|-------------------|-----------|
|`KC_TILDE` |`KC_TILD` |`~` |
|`KC_EXCLAIM` |`KC_EXLM` |`!` |
|`KC_AT` | |`@` |
|`KC_HASH` | |`#` |
|`KC_DOLLAR` |`KC_DLR` |`$` |
|`KC_PERCENT` |`KC_PERC` |`%` |
|`KC_CIRCUMFLEX` |`KC_CIRC` |`^` |
|`KC_AMPERSAND` |`KC_AMPR` |`&` |
|`KC_ASTERISK` |`KC_ASTR` |`*` |
|`KC_LEFT_PAREN` |`KC_LPRN` |`(` |
|`KC_RIGHT_PAREN` |`KC_RPRN` |`)` |
|`KC_UNDERSCORE` |`KC_UNDS` |`_` |
|`KC_PLUS` | |`+` |
|`KC_LEFT_CURLY_BRACE` |`KC_LCBR` |`{` |
|`KC_RIGHT_CURLY_BRACE` |`KC_RCBR` |`}` |
|`KC_PIPE` | |`\|` |
|`KC_COLON` |`KC_COLN` |`:` |
|`KC_DOUBLE_QUOTE` |`KC_DQUO`, `KC_DQT`|`"` |
|`KC_LEFT_ANGLE_BRACKET` |`KC_LABK`, `KC_LT` |`<` |
|`KC_RIGHT_ANGLE_BRACKET`|`KC_RABK`, `KC_GT` |`>` |
|`KC_QUESTION` |`KC_QUES` |`?` |

View File

@@ -8,15 +8,15 @@ If you have closed and reopened your terminal window since following the first p
Start by navigating to the `keymaps` folder for your keyboard.
?> If you are on macOS or Windows there are commands you can use to easily open the keymaps folder.
If you are on macOS or Windows there are commands you can use to easily open the keymaps folder.
?> macOS:
### macOS:
open keyboards/<keyboard_folder>/keymaps
``` open keyboards/<keyboard_folder>/keymaps ```
?> Windows:
### Windows:
start .\\keyboards\\<keyboard_folder>\\keymaps
``` start .\\keyboards\\<keyboard_folder>\\keymaps ```
## Create a Copy Of The `default` Keymap

View File

@@ -12,23 +12,31 @@ However, the QMK Toolbox is only available for Windows and macOS currently. If
Begin by opening the QMK Toolbox application. You'll want to locate the firmware file in Finder or Explorer. Your keyboard firmware may be in one of two formats- `.hex` or `.bin`. QMK tries to copy the appropriate one for your keyboard into the root `qmk_firmware` directory.
?> If you are on Windows or macOS there are commands you can use to easily open the current firmware folder in Explorer or Finder.
If you are on Windows or macOS there are commands you can use to easily open the current firmware folder in Explorer or Finder.
?> Windows:
#### Windows
start .
```
start .
```
?> macOS:
#### macOS
open .
```
open .
```
The firmware file always follows this naming format:
<keyboard_name>_<keymap_name>.{bin,hex}
```
<keyboard_name>_<keymap_name>.{bin,hex}
```
For example, the `plank/rev5` with a `default` keymap will have this filename:
For example, the `planck/rev5` with a `default` keymap will have this filename:
planck_rev5_default.hex
```
planck_rev5_default.hex
```
Once you have located your firmware file drag it into the "Local file" box in QMK Toolbox, or click "Open" and navigate to where your firmware file is stored.
@@ -78,7 +86,23 @@ Click the `Flash` button in QMK Toolbox. You will see output similar to the foll
## Flash your Keyboard from the Command Line
First thing you'll need to know is which bootloader that your keyboard uses. There are four main bootloaders that are used, usually. Pro-Micro and clones use CATERINA, and Teensy's use Halfkay, OLKB boards use QMK-DFU, and other atmega32u4 chips use DFU.
This has been made pretty simple compared to what it used to be. When you are ready to compile and flash your firmware, open up your terminal window and run the build command:
make <my_keyboard>:<my_keymap>:flash
For example, if your keymap is named "xyverz" and you're building a keymap for a rev5 planck, you'll use this command:
make planck/rev5:xyverz:flash
This will check the keyboard's configuration, and then attempt to flash it based on the specified bootloader. This means that you don't need to know which bootloader that your keyboard uses. Just run the command, and let the command do the heavy lifting.
However, this does rely on the bootloader being set by the keyboard. If this information is not configured, or you're using a board that doesn't have a supported target to flash it, you will see this error:
WARNING: This board's bootloader is not specified or is not supported by the ":flash" target at this time.
In this case, you'll have to fall back on specifying the bootloader.
There are five main bootloaders that are used. Pro Micro and clones use Caterina, Teensys use HalfKay, OLKB's AVR boards use QMK-DFU, other ATmega32U4 boards use DFU, and most ARM boards use ARM DFU.
You can find more information about the bootloaders in the [Flashing Instructions and Bootloader Information](flashing.md) page.
@@ -109,7 +133,7 @@ After it gets to this point, the build script will look for the DFU bootloader e
dfu-programmer: no device present.
Error: Bootloader not found. Trying again in 5s.
Once it does this, you'll want to reset the controller. It should then show output similiar to this:
Once it does this, you'll want to reset the controller. It should then show output similar to this:
```
*** Attempting to flash, please don't remove device
@@ -208,14 +232,17 @@ If you have any issues with this, you may need to this:
sudo make <my_keyboard>:<my_keymap>:avrdude
Additionally, if you want to flash multiple boards, use the following command:
#### Caterina commands
make <keyboard>:<keymap>:avrdude-loop
There are a number of DFU commands that you can use to flash firmware to a DFU device:
When you're done flashing boards, you'll need to hit Ctrl + C or whatever the correct keystroke is for your operating system to break the loop.
* `:avrdude` - This is the normal option which waits until a Caterina device is available (by detecting a new COM port), and then flashes the firmware.
* `:avrdude-loop` - This runs the same command as `:avrdude`, but after each device is flashed, it will attempt to flash again. This is useful for bulk flashing. _This requires you to manually escape the loop by hitting Control+C._
* `:avrdude-split-left` - This flashes the normal firmware, just like the default option (`:avrdude`). However, this also flashes the "Left Side" EEPROM file for split keyboards. _This is ideal for Pro Micro based split keyboards._
* `:avrdude-split-right` - This flashes the normal firmware, just like the default option (`:avrdude`). However, this also flashes the "Right Side" EEPROM file for split keyboards. _This is ideal for Pro Micro based split keyboards._
## HalfKay
### HalfKay
For the PJRC devices (Teensy's), when you're ready to compile and flash your firmware, open up your terminal window and run the build command:
@@ -248,43 +275,7 @@ Programming.....................................................................
Booting
```
## BootloadHID
For Bootmapper Client(BMC)/bootloadHID/ATmega32A based boards, when you're ready to compile and flash your firmware, open up your terminal window and run the build command:
make <my_keyboard>:<my_keymap>:bootloaderHID
For example, if your keymap is named "xyverz" and you're building a keymap for a jj40, you'll use this command:
make jj40:xyverz:bootloaderHID
Once the firmware finishes compiling, it will output something like this:
```
Linking: .build/jj40_default.elf [OK]
Creating load file for flashing: .build/jj40_default.hex [OK]
Copying jj40_default.hex to qmk_firmware folder [OK]
Checking file size of jj40_default.hex [OK]
* The firmware size is fine - 21920/28672 (6752 bytes free)
```
After it gets to this point, the build script will look for the DFU bootloader every 5 seconds. It will repeat the following until the device is found or you cancel it.
```
Error opening HIDBoot device: The specified device was not found
Trying again in 5s.
```
Once it does this, you'll want to reset the controller. It should then show output similar to this:
```
Page size = 128 (0x80)
Device size = 32768 (0x8000); 30720 bytes remaining
Uploading 22016 (0x5600) bytes starting at 0 (0x0)
0x05580 ... 0x05600
```
## STM32 (ARM)
### STM32 (ARM)
For a majority of ARM boards (including the Proton C, Planck Rev 6, and Preonic Rev 3), when you're ready to compile and flash your firmware, open up your terminal window and run the build command:
@@ -334,6 +325,52 @@ File downloaded successfully
Transitioning to dfuMANIFEST state
```
#### STM32 Commands
There are a number of DFU commands that you can use to flash firmware to a STM32 device:
* `:dfu-util` - The default command for flashing to STM32 devices, and will wait until an STM32 bootloader is present. .
* `:dfu-util-split-left` - This flashes the normal firmware, just like the default option (`:dfu-util`). However, this also configures the "Left Side" EEPROM setting for split keyboards.
* `:dfu-util-split-right` - This flashes the normal firmware, just like the default option (`:dfu-util`). However, this also configures the "Right Side" EEPROM setting for split keyboards.
* `:st-link-cli` - This allows you to flash the firmware via ST-LINK's CLI utility, rather than dfu-util.
### BootloadHID
For Bootmapper Client(BMC)/bootloadHID/ATmega32A based boards, when you're ready to compile and flash your firmware, open up your terminal window and run the build command:
make <my_keyboard>:<my_keymap>:bootloaderHID
For example, if your keymap is named "xyverz" and you're building a keymap for a jj40, you'll use this command:
make jj40:xyverz:bootloaderHID
Once the firmware finishes compiling, it will output something like this:
```
Linking: .build/jj40_default.elf [OK]
Creating load file for flashing: .build/jj40_default.hex [OK]
Copying jj40_default.hex to qmk_firmware folder [OK]
Checking file size of jj40_default.hex [OK]
* The firmware size is fine - 21920/28672 (6752 bytes free)
```
After it gets to this point, the build script will look for the DFU bootloader every 5 seconds. It will repeat the following until the device is found or you cancel it.
```
Error opening HIDBoot device: The specified device was not found
Trying again in 5s.
```
Once it does this, you'll want to reset the controller. It should then show output similar to this:
```
Page size = 128 (0x80)
Device size = 32768 (0x8000); 30720 bytes remaining
Uploading 22016 (0x5600) bytes starting at 0 (0x0)
0x05580 ... 0x05600
```
## Test It Out!
Congrats! Your custom firmware has been programmed to your keyboard!

View File

@@ -8,7 +8,8 @@ Testing your keyboard is usually pretty straightforward. Press every single key
Note: These programs are not provided by or endorsed by QMK.
* [Switch Hitter](https://elitekeyboards.com/switchhitter.php) (Windows Only)
* [QMK Configurator](https://config.qmk.fm/#/test/) (Web Based)
* [Switch Hitter](https://web.archive.org/web/20190413233743/https://elitekeyboards.com/switchhitter.php) (Windows Only)
* [Keyboard Viewer](https://www.imore.com/how-use-keyboard-viewer-your-mac) (Mac Only)
* [Keyboard Tester](http://www.keyboardtester.com) (Web Based)
* [Keyboard Checker](http://keyboardchecker.com) (Web Based)

View File

@@ -1,45 +0,0 @@
# Python Development in QMK
This document gives an overview of how QMK has structured its python code. You should read this before working on any of the python code.
## Script directories
There are two places scripts live in QMK: `qmk_firmware/bin` and `qmk_firmware/util`. You should use `bin` for any python scripts that utilize the `qmk` wrapper. Scripts that are standalone and not run very often live in `util`.
We discourage putting anything into `bin` that does not utilize the `qmk` wrapper. If you think you have a good reason for doing so please talk to us about your use case.
## Python Modules
Most of the QMK python modules can be found in `qmk_firmware/lib/python`. This is the path that we append to `sys.path`.
We have a module hierarchy under that path:
* `qmk_firmware/lib/python`
* `milc.py` - The CLI library we use. Will be pulled out into its own module in the future.
* `qmk` - Code associated with QMK
* `cli` - Modules that will be imported for CLI commands.
* `errors.py` - Errors that can be raised within QMK apps
* `keymap.py` - Functions for working with keymaps
## CLI Scripts
We have a CLI wrapper that you should utilize for any user facing scripts. We think it's pretty easy to use and it gives you a lot of nice things for free.
To use the wrapper simply place a module into `qmk_firmware/lib/python/qmk/cli`, and create a symlink to `bin/qmk` named after your module. Dashes in command names will be converted into dots so you can use hierarchy to manage commands.
When `qmk` is run it checks to see how it was invoked. If it was invoked as `qmk` the module name is take from `sys.argv[1]`. If it was invoked as `qmk-<module-name>` then everything after the first dash is taken as the module name. Dashes and underscores are converted to dots, and then `qmk.cli` is prepended before the module is imported.
The module uses `@cli.entrypoint()` and `@cli.argument()` decorators to define an entrypoint, which is where execution starts.
## Example CLI Script
We have provided a QMK Hello World script you can use as an example. To run it simply run `qmk hello` or `qmk-hello`. The source code is listed below.
```
from milc import cli
@cli.argument('-n', '--name', default='World', help='Name to greet.')
@cli.entrypoint('QMK Python Hello World.')
def main(cli):
cli.echo('Hello, %s!', cli.config.general.name)
```

View File

@@ -43,6 +43,10 @@
{
"from": "unicode.html",
"to": "feature_unicode.html"
},
{
"from": "python_development.html",
"to": "cli_development.html"
}
]
}

View File

@@ -1,16 +1,16 @@
# Glossary of QMK Terms
## ARM
A line of 32-bit MCU's produced by a number of companies, such as Atmel, Cypress, Kinetis, NXP, ST, and TI.
A line of 32-bit MCUs produced by a number of companies, such as Atmel, Cypress, Kinetis, NXP, ST, and TI.
## AVR
A line of 8-bit MCU's produced by [Atmel](http://www.microchip.com/). AVR was the original platform that TMK supported.
A line of 8-bit MCUs produced by [Atmel](http://www.microchip.com/). AVR was the original platform that TMK supported.
## AZERTY
The standard Français (French) keyboard layout. Named for the first 6 keys on the keyboard.
## Backlight
A generic term for lighting on a keyboard. The backlight is typically, but not always, an array of LED's that shine through keycaps and/or switches.
A generic term for lighting on a keyboard. The backlight is typically, but not always, an array of LEDs that shine through keycaps and/or switches.
## Bluetooth
A short range peer to peer wireless protocol. Most common wireless protocol for a keyboard.
@@ -147,7 +147,7 @@ A feature that lets you assign multiple keycodes to the same key based on how ma
A low-cost AVR development board that is commonly used for hand-wired builds. A teensy is often chosen despite costing a few dollars more due to its halfkay bootloader, which makes flashing very simple.
## Underlight
A generic term for LEDs that light the underside of the board. These LED's typically shine away from the bottom of the PCB and towards the surface the keyboard rests on.
A generic term for LEDs that light the underside of the board. These LEDs typically shine away from the bottom of the PCB and towards the surface the keyboard rests on.
## Unicode
In the larger computer world Unicode is a set of encoding schemes for representing characters in any language. As it relates to QMK it means using various OS schemes to send unicode codepoints instead of scancodes.

32
docs/ru-ru/README.md Normal file
View File

@@ -0,0 +1,32 @@
# Quantum Mechanical Keyboard Firmware
[![Current Version](https://img.shields.io/github/tag/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/tags)
[![Build Status](https://travis-ci.org/qmk/qmk_firmware.svg?branch=master)](https://travis-ci.org/qmk/qmk_firmware)
[![Discord](https://img.shields.io/discord/440868230475677696.svg)](https://discord.gg/Uq7gcHh)
[![Docs Status](https://img.shields.io/badge/docs-ready-orange.svg)](https://docs.qmk.fm)
[![GitHub contributors](https://img.shields.io/github/contributors/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/pulse/monthly)
[![GitHub forks](https://img.shields.io/github/forks/qmk/qmk_firmware.svg?style=social&label=Fork)](https://github.com/qmk/qmk_firmware/)
## Что такое QMK Firmware?
QMK (*Quantum Mechanical Keyboard*) — это сообщество, работающее над ПО с открытым исходным кодом, которое разрабатывает QMK Firmware, QMK Toolbox, qmk.fm и эту документацию. QMK Firmware — это прошивка для клавиатур, основанная на [tmk\_keyboard](http://github.com/tmk/tmk_keyboard) с множеством полезных функций для микроконтроллеров Atmel AVR, а именно, для продуктов компаний [OLKB](http://olkb.com), [ErgoDox EZ](http://www.ergodox-ez.com) и [Clueboard](http://clueboard.co/). Она также была портирована на чипы ARM при помощи ChibiOS. Вы можете использовать ее для клавиатуры, собранной вручную или имеющей нестандартную печатную плату.
## Как скачать
Если вы собираетесь добавить раскладку, клавиатуру или новые функции в QMK, то самый простой путь реализации — это [сделать форк репозитория на GitHub](https://github.com/qmk/qmk_firmware#fork-destination-box), клонировать ваш репозиторий локально для дальнейшего внесения изменений, сделать пуш изменений, а затем открыть [пулреквест](https://github.com/qmk/qmk_firmware/pulls) из вашего форка.
Также вы можете либо скачать репозиторий ([zip](https://github.com/qmk/qmk_firmware/zipball/master), [tar](https://github.com/qmk/qmk_firmware/tarball/master)), либо клонировать его через git (`git@github.com:qmk/qmk_firmware.git`) или https (`https://github.com/qmk/qmk_firmware.git`).
## Как скомпилировать
Перед компиляцией вам необходимо [настроить окружение](ru-ru/getting_started_build_tools.md) разработчика для AVR или/и ARM. После этого используйте команду `make` со следующим синтаксисом, чтобы собрать клавиатуру и раскладку:
make planck/rev4:default
Данная команда соберет ревизию `rev4` клавиатуры `planck` с раскладкой `default`. Не все клавиатуры имеют ревизии (они также называются subprojects или folders), в этом случае она может быть опущена:
make preonic:default
## Как настроить
QMK обладает множеством [функций](ru-ru/features.md) для исследования, и [справочная документация](http://docs.qmk.fm) может стать хорошей отправной точкой для знакомства с ними. Большинством функций можно воспользоваться модифицируя [раскладку](ru-ru/keymap.md) и изменяя [коды клавиш](ru-ru/keycodes.md).

View File

@@ -0,0 +1,168 @@
# Установка инструментов для сборки
Данная страница описывает процесс установки окружения для сборки QMK. Эти инструкции относятся к процессорам AVR (таким как atmega32u4).
<!-- FIXME: Нужно написать и добавить куда-нибудь инструкции для ARM. -->
**Примечание:** Если вы здесь впервые, ознакомьтесь с [Руководством для полных новичков](ru-ru/newbs.md).
Прежде, чем продолжить, убедитесь, что у вас обновлены подмодули (сторонние библиотеки), выполнив `make git-submodule`.
## Linux
Чтобы всегда быть уверенными, что у вас установлены последние версии ПО, можно просто выполнить команду `sudo util/qmk_install.sh`. Она должна установить все необходимые зависимости. **Это выполнит `apt-get upgrade`.**
Вы также можете устанавливать все вручную, но в данной документации список требований может не всегда быть актуальным.
Текущие требования представлены ниже, но не все они могут быть необходимы, так как зависят от того, что вы делаете. Также стоит отметить, что в некоторых системах не все зависимости доступны в виде пакетов, или они могут называться по-другому.
```
build-essential
gcc
unzip
wget
zip
gcc-avr
binutils-avr
avr-libc
dfu-programmer
dfu-util
gcc-arm-none-eabi
binutils-arm-none-eabi
libnewlib-arm-none-eabi
git
```
Установите все зависимости при помощи вашего любимого менеджера пакетов.
Пример для Debian / Ubuntu:
sudo apt-get update
sudo apt-get install gcc unzip wget zip gcc-avr binutils-avr avr-libc dfu-programmer dfu-util gcc-arm-none-eabi binutils-arm-none-eabi libnewlib-arm-none-eabi
Пример для Fedora / Red Hat:
sudo dnf install gcc unzip wget zip dfu-util dfu-programmer avr-gcc avr-libc binutils-avr32-linux-gnu arm-none-eabi-gcc-cs arm-none-eabi-binutils-cs arm-none-eabi-newlib
Пример для Arch / Manjaro:
pacman -S base-devel gcc unzip wget zip avr-gcc avr-binutils avr-libc dfu-util arm-none-eabi-gcc arm-none-eabi-binutils arm-none-eabi-newlib git dfu-programmer dfu-util
## Nix
Если вы используете [NixOS](https://nixos.org/), или у вас установлена Nix в Linux или macOS, выполните `nix-shell` из корня репозитория, чтобы настроить окружение для сборки.
По умолчанию, это скачает компиляторы для AVR и ARM. Если вам не нужны они оба, отключите `avr` или `arm` с помощью аргумента, например:
nix-shell --arg arm false
## macOS
Если вы пользуетесь [Homebrew](https://brew.sh/), вы можете использовать следующие команды:
brew tap osx-cross/avr
brew tap PX4/homebrew-px4
brew update
brew install avr-gcc@8
brew link --force avr-gcc@8
brew install dfu-programmer
brew install dfu-util
brew install gcc-arm-none-eabi
brew install avrdude
Данный метод является рекомендуемым. Если у вас нет Homebrew, [установите его!](http://brew.sh/) Он очень сильно пригодится тем, кто работает с командной строкой. Стоит отметить, что часть с `make` и `make install` во время установки `avr-gcc@8` из Homebrew может занимать более 20 минут и сильно нагружать CPU.
## Windows с MSYS2 (рекомендуется)
Наилучшим окружение для Windows Vista и всех последующих версий (тестировалось с 7 и 10) является [MSYS2](https://www.msys2.org).
* Для установки MSYS2, скачайте его и следуйте дальнейшим указаниям отсюда: http://www.msys2.org
* Откройте ``MSYS2 MingGW 64-bit`` ярлык
* Перейдите в свой репозиторий QMK. Например, если он находится в корне вашего диска C:
* `$ cd /c/qmk_firmware`
* Запустите `util/qmk_install.sh` и следуйте подсказкам
## Windows 10 (устарело)
Это устаревшие инструкции для Windows 10. Мы рекомендуем использовать [MSYS2, как сказано выше](#windows-с-msys2-рекомендуется).
### Обновление для дизайнеров (Creators Update)
Если у вас Windows 10 с Обновлением для дизайнеров или новее, вы можете собрать прошивку и прошить ей напрямую. До Обновления для дизайнеров было возможно только собрать прошивку. Если у вас его еще нет, или вы не уверены, следуйте [этим инструкциям](https://support.microsoft.com/en-us/instantanswers/d4efb316-79f0-1aa1-9ef3-dcada78f3fa0/get-the-windows-10-creators-update).
### Подсистема Windows для Linux (Windows Subsystem for Linux, WSL)
В дополнение к Обновлению для дизайнеров вам необходима подсистема Windows для Linux, поэтому установите ее, следуя [иснтрукциям здесь](http://www.howtogeek.com/249966/how-to-install-and-use-the-linux-bash-shell-on-windows-10/). Если у вас уже есть подсистема Windows для Linux из Юбилейного обновления (Anniversary update), рекомендуется ее [обновить](https://betanews.com/2017/04/14/upgrade-windows-subsystem-for-linux/) до 16.04LTS, потому что некоторые клавиатуры не компилируются с набором инструментов из 14.04LTS. Стоит отметить, что вы четко должны понимать, что вы делаете, если выбрали метод `sudo do-release-upgrade`.
### Git
Если вы уже клонировали репозиторий в файловую систему Windows, вы можете пропустить данную секцию.
Вам нужно клонировать репозиторий в файловую систему Windows при помощи обычного Git для Windows, а **не** WSL Git. Так что, если вы ещё не установили Git, [скачайте](https://git-scm.com/download/win) и установите его. Затем [настройте его](https://git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup). Важно указать свой адрес электронной почты и имя пользователя, особенно если вы планируете вносить свой вклад в проект.
Как только Git будет установлен, откройте командную строку Git Bash и поменяйте директорию на ту, в которую хотите клонировать QMK; обратите внимание, что вы должны использовать косую черту, и что доступ к вашему диску C осуществляется примерно так: `/c/path/to/where/you/want/to/go`. Затем выполните `git clone --recurse-submodules https://github.com/qmk/qmk_firmware`, это создаст новую папку `qmk_firmware` в текущей директории.
### Установка инструментов (Toolchain)
Установка инструментов (Toolchain) осуществляется через подсистему Windows для Linux, и процесс полностью автоматизирован. Если вы хотите выполнить установку вручную, то не существует никакой другой инструкции помимо самого скрипта. Однако, вы всегда можете открыть ишью и запросить дополнительную информацию.
1. Откройте "Bash On Ubuntu On Windows" в меню Пуск.
2. Перейдите в папку, в которую клонирована `qmk_firmware`. Обратите внимание, что пути начинаются с `/mnt/` в WSL, так что вы должны написать, например, `cd /mnt/c/path/to/qmk_firmware`.
3. Запустите `util/wsl_install.sh` и следуйте инструкциям на экране.
4. Закройте окно командной строки Bash, и откройте его снова.
5. Все готово, чтобы скомпилировать прошивку и прошить ей!
### Несколько важных вещей, которые надо запомнить
* Вы можете запустить `util/wsl_install.sh` еще раз, чтобы установить все последние обновления.
* Ваш репозиторий QMK должен находиться в файловой системе Windows, поскольку WSL не может запускать выполняемые файлы извне.
* WSL Git **не** совместим с Windows Git, поэтому используйте Windows Git Bash или Windows Git GUI для всех операций с Git.
* Вы можете изменять файлы как внутри WSL, так и просто через Windows. Но обратите внимание, что если вы изменяете makefiles или сценарии командной строки, вы должны убедиться, что используете текстовый редактор, который сохраняет файлы с переводом строки в стиле Unix (Unix line endings). В противном случае компиляция может не работать.
## Windows (Vista и новее) (устарело)
Это устаревшие инструкции для Windows Vista и более новых версий. Мы рекомендуем использовать [MSYS2, как сказано выше](#windows-с-msys2-рекомендуется).
1. Если вы когда-то устанавливали WinAVR, удалите его.
2. Установите [MHV AVR Tools](https://infernoembedded.com/sites/default/files/project/MHV_AVR_Tools_20131101.exe). Отключите smatch, но **оставьте галочку напротив опции добавления инструмента в PATH**.
3. Если вы собираетесь прошивать клавиатуры на базе Infinity, вам нужно установить dfu-util. Обратитесь к инструкциям от [Input Club](https://github.com/kiibohd/controller/wiki/Loading-DFU-Firmware).
4. Установите [MinGW](https://sourceforge.net/projects/mingw/files/Installer/mingw-get-setup.exe/download). Во время установки отключите опцию установки графического пользовательского интерфейса. **НЕ ИЗМЕНЯЙТЕ директорию для установки по умолчанию.** Скрипты зависят от расположения по умолчанию.
5. Выполните клонирование данного репозитория. [Эта ссылка скачает его в виде zip-файла, который вам нужно будет разархивировать.](https://github.com/qmk/qmk_firmware/archive/master.zip) Откройте извлеченную папку в проводнике Windows.
6. Перейдите в папку `\util`.
7. Запустите двойным щелчком пакетный файл сценария `1-setup-path-win`. Вам нужно будет согласиться с уведомлением контроля учетных записей пользователей (User Account Control, UAC). Нажмите пробел, чтобы закрыть появившееся сообщение об успешном выполнении операции в командной строке.
8. Кликните правой кнопкой по пакетному файлу сценария `2-setup-environment-win`, выберите "Запуск от имени администратора" и согласитесь с уведомлением UAC. Это может занять пару минут, и вам потребуется подтвердить установку драйвера. Как только сценарий завершит свою работу, ваше окружение будет готово!
Если у вас возникли проблемы и вам нужна помощь, будет полезно сгенерировать файл *Win_Check_Output.txt*, запустив `Win_Check.bat` в папке `\util`.
## Docker
Если это немного сложновато для вас, Docker может стать готовым решением, которое вы ищите. После установки [Docker CE](https://docs.docker.com/install/#supported-platforms) выполните следующую команду из директории `qmk_firmware`, чтобы собрать клавиатуру/раскладку:
```bash
util/docker_build.sh keyboard:keymap
# Например: util/docker_build.sh ergodox_ez:steno
```
Это скомпилирует указанную клавиатуру/раскладку и создаст для вас `.hex` или `.bin` файл с результатом, готовым к процессу прошивки, в директории QMK. Если опустить `:keymap`, будет использована раскладка `default`. Заметьте, что формат параметров такой же, как и в случае сборки командой `make`.
Вы также можете запустить скрипт без параметров. Тогда он попросит вас ввести поочередно параметры сборки. Возможно, вам это покажется более удобным:
```bash
util/docker_build.sh
# Читает параметры из пользовательского ввода (оставьте пустым для значений по умолчанию)
```
Также имеется поддержка сборки _и_ прошивки клавиатуры прямо из Docker. Для этого укажите еще один параметр `target`:
```bash
util/docker_build.sh keyboard:keymap:target
# Например: util/docker_build.sh planck/rev6:default:dfu-util
```
Если вы используете Linux, это должно работать прямо из коробки. На Windows и macOS это требует запуска [Docker Machine](http://gw.tnode.com/docker/docker-machine-with-usb-support-on-windows-macos/). Ее довольно утомительно настраивать, поэтому мы не рекомендуем это; используйте вместо этого [QMK Toolbox](https://github.com/qmk/qmk_toolbox).
!> Docker для Windows требует включения [Hyper-V](https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v). Это означает, что он не работает на версиях Windows без Hyper-V, например, на Windows 7, Windows 8 и **Windows 10 Home**.
## Vagrant
Если у вас возникли проблемы при сборке прошивки, вы можете попробовать установить инструмент под названием Vagrant. Он сконфигурирует виртуальный компьютер с такими параметрами, которые подходят для сборки прошивки. У OLKB НЕТ файлов такого виртуально компьютера. Подробности о том, как настроить Vagrant, можно найти в [Руководстве по Vagrant](ru-ru/getting_started_vagrant.md).

23
docs/ru-ru/newbs.md Normal file
View File

@@ -0,0 +1,23 @@
# Руководство по QMK для полных новичков
QMK ― это мощная прошивка с открытым исходным кодом для вашей механической клавиатуры. Вы можете использовать QMK для легкой и мощной персонализации своей клавиатуры. Люди с разным уровнем умений, от совсем новичков до крутых программистов, успешно применяли QMK, чтобы персонализировать свои клавиатуры. Данное руководство поможет вам сделать то же самое, независимо от уровня вашего мастерства.
Не уверены, поддерживает ли ваша клавиатура QMK? Если это механическая клавиатура, которую вы собрали сами, шансы достаточно велики. Мы поддерживаем [большое число любительских клавиатур](https://qmk.fm/keyboards/), поэтому, даже если ваша текущая клавиатура не совместима с QMK, у вас не должно возникнуть проблем с нахождением подходящей для ваших нужд.
## Обзор
В данном руководстве 7 основных секций:
* [Первое знакомство](ru-ru/newbs_getting_started.md)
* [Собираем вашу первую прошивку с помощью командной строки](ru-ru/newbs_building_firmware.md)
* [Собираем вашу первую прошивку с помощью онлайн GUI](ru-ru/newbs_building_firmware_configurator.md)
* [Прошиваем файл прошивки](ru-ru/newbs_flashing.md)
* [Тестируем и отлаживаем](ru-ru/newbs_testing_debugging.md)
* [Лучшие практики по Git](ru-ru/newbs_best_practices.md)
* [Узнайте больше на этих ресурсах](ru-ru/newbs_learn_more_resources.md)
Данное руководство сосредоточено на помощи тем, кто никогда раньше не компилировал ПО. Приятие решений и рекомендации делаются с учетом именно этого. Существует много альтернативных методов для описанных процедур, и мы поддерживаем большинство из них. Если у вас есть сомнения о том, как выполнить задачу, вы можете [попросить у нас совета](ru-ru/getting_started_getting_help.md).
## Дополнительные ресурсы
* [Блог Томаса Баарта (Thomas Baart) об основах QMK](https://thomasbaart.nl/category/mechanical-keyboards/firmware/qmk/qmk-basics/) Созданный пользователем блог, охватывающий основы использования QMK Firmware с точки зрения нового пользователя.

View File

@@ -0,0 +1,102 @@
# Введение
У вашей компьютерной клавиатуры внутри есть процессор, похожий на тот, что внутри вашего компьютера. Этот процессор выполняет программное обеспечение, которое отвечает за обнаружение нажатий клавиш и отсылку сигналов состояния клавиатуры, когда клавиши нажимаются и отпускаются. Роль такого ПО выполняет QMK, детектируя нажатия клавиш и отсылая эту информацию главному компьютеру. Сбор собственной раскладки эквивалентен сборке выполняемой программы для вашей клавиатуры.
QMK старается дать вам большую силу, оставляя простые вещи легкими и делай сложные — возможными. Вам не надо уметь программировать, чтобы создавать мощные прошивки — вам только надо следовать нескольким простым синтаксическим правилам.
# Первое знакомство
Перед тем, как вы сможете собирать раскладки, вам необходимо установить некоторое программное обеспечение и настроить ваше окружение для сборки. Это нужно сделать только один раз, вне зависимости от того, для скольких клавиатур вы планируете компилировать прошивки.
Если вы предпочитаете графический пользовательский интерфейс, пожалуйста, рассмотрите возможность использования онлайн [QMK Конфигуратора](https://config.qmk.fm). Пожалуйста, обратитесь к [Собираем вашу первую прошивку с помощью онлайн GUI](ru-ru/newbs_building_firmware_configurator.md).
## Загрузка ПО
### Текстовый редактор
Вам понадобится программа, умеющая редактировать и сохранять **обычные текстовые** файлы. Если вы используете Windows, вы можете делать это Блокнотом, а в Linux вы можете использовать gedit. Обе программы являются простыми, но функциональными редакторами. В macOS остерегайтесь стандартного приложения TextEdit: он не будет сохранять обычные текстовые файлы, пока вы явно не выберите _Make Plain Text_ из меню _Format_.
Вы также можете скачать и установить отдельный текстовый редактор наподобие [Sublime Text](https://www.sublimetext.com/) или [VS Code](https://code.visualstudio.com/). Возможно, это наилучший вариант независимо от платформы, поскольку эти программы сделаны специально для редактирования кода.
?> Не уверены, какой выбрать текстовый редактор? Лоуренс Брэдфорд (Laurence Bradford) написал [отличное введение](https://learntocodewith.me/programming/basics/text-editors/) в тему.
### QMK Toolbox
QMK Toolbox является дополнительной графической программой для Windows и macOS, которая позволяет вам разрабатывать и отлаживать вашу клавиатуру. Вы, вероятно, посчитаете ее бесценной для легкого процесса прошивки вашей клавиатуры и просмотра отладочных сообщений, которые она отображает.
[Скачайте последний выпуск здесь.](https://github.com/qmk/qmk_toolbox/releases/latest)
* Для Windows: `qmk_toolbox.exe` (переносимое приложение) или `qmk_toolbox_install.exe` (установщик)
* Для macOS: `QMK.Toolbox.app.zip` (переносимое приложение) или `QMK.Toolbox.pkg` (установщик)
## Настройте ваше окружение
Мы постарались сделать установку QMK максимально легкой. Вам нужно только подготовить ваше Linux или Unix окружение, после этого позвольте QMK установить все остальное.
?> Если вы никогда раньше не работали с командной строкой Linux/Unix, существует несколько базовых концептов и команд, которые необходимо выучить. Эти ресурсы дадут вам достаточно знаний, чтобы работать с QMK:<br>
[Обязательные к изучению команды Linux](https://www.guru99.com/must-know-linux-commands.html)<br>
[Несколько базовых команд Unix](https://www.tjhsst.edu/~dhyatt/superap/unixcmd.html)
### Windows
Вам нужно будет установить MSYS2 и Git.
* Следуйте инструкциям по установки на [домашней странице MSYS2](https://www.msys2.org).
* Закройте все открытые терминалы MSYS2 и откройте новый терминал MSYS2 MinGW 64-bit.
* Установите Git, выполнив эту команду: `pacman -S git`.
### macOS
Вам нужно будет установить Homebrew. Следуйте инструкциям на [домашней странице Homebrew](https://brew.sh).
После установки Homebrew продолжите чтение с _Установите QMK_. На этом шаге вам надо будет запустить скрипт, который установит остальные пакеты.
### Linux
Вам нужно будет установить Git. Скорее всего, он у вас уже есть, но если нет, одна из следующих команд должна установить его:
* Debian / Ubuntu / Devuan: `apt-get install git`
* Fedora / Red Hat / CentOS: `yum install git`
* Arch: `pacman -S git`
?> Docker также является вариантом для всех платформ. [Нажмите сюда для получения подробностей.](ru-ru/getting_started_build_tools.md#docker)
## Установите QMK
Как только вы настроили ваше Linux/Unix окружение, вы готовы к загрузке QMK. Мы сделаем это при помощи Git, "клонировав" репозиторий QMK. Откройте Терминал или окно MSYS2 MinGW и оставьте его открытым до конца данного руководства. Выполните эти команды внутри него:
```shell
git clone --recurse-submodules https://github.com/qmk/qmk_firmware.git
cd qmk_firmware
```
?> Если вы уже знаете, [как пользоваться GitHub](ru-ru/getting_started_github.md), мы рекомендуем вам вместо этого создать и клонировать свой собственный форк. Если вы не понимаете, что это значит, просто проигнорируйте это сообщение.
QMK включает в себя скрипт, который поможет вам установить все оставшееся, что вам понадобится. Вы должны запустить его, набрав эту команду:
util/qmk_install.sh
## Протестируйте ваше окружение для сборки
Теперь, когда ваше окружение QMK для сборки настроено, вы можете собрать прошивку для вашей клавиатуры. Начните с попытки собрать раскладку для клавиатуры по умолчанию. У вас должно это получиться с помощью команды в этом формате:
make <keyboard>:default
Например, чтобы собрать прошивку для Clueboard 66%, вы введете:
make clueboard/66/rev3:default
Когда все закончится, вы должны увидеть большой лог, который заканчивается примерно так:
```
Linking: .build/clueboard_66_rev3_default.elf [OK]
Creating load file for flashing: .build/clueboard_66_rev3_default.hex [OK]
Copying clueboard_66_rev3_default.hex to qmk_firmware folder [OK]
Checking file size of clueboard_66_rev3_default.hex [OK]
* The firmware size is fine - 26356/28672 (2316 bytes free)
```
# Создаем вашу раскладку
Теперь вы готовы создать свою персональную раскладку! Для этого перейдите к [Собираем вашу первую прошивку](ru-ru/newbs_building_firmware.md).

29
docs/translating.md Normal file
View File

@@ -0,0 +1,29 @@
# How to translate the QMK docs into different languages
All files in the root folder (`docs/`) should be in English - all other languages should be in subfolders with the ISO 639-1 language codes, followed by `-` and the country code where relevant. [A list of common ones can be found here](https://www.andiamo.co.uk/resources/iso-language-codes/). If this folder doesn't exist, you may create it. Each of the translated files should have the same name as the English version, so things can fall back successfully.
A `_summary.md` file should exist in this folder with a list of links to each file, with a translated name, and link preceded by the language folder:
* [QMK简介](zh-cn/getting_started_introduction.md)
Once you've finished translating a new language, you'll also need to modify the following files:
* [`docs/_langs.md`](https://github.com/qmk/qmk_firmware/blob/master/docs/_langs.md)
Each line should contain a country flag in the format `:us:` followed by the name represented in its own language:
- [:cn: 中文](/zh-cn/)
* [`docs/index.html`](https://github.com/qmk/qmk_firmware/blob/master/docs/index.html)
Both `placeholder` and `noData` objects should have a dictionary entry for the language folder in a string:
'/zh-cn/': '没有结果!',
## Previewing the translations
Before opening a pull request, you can preview your additions if you have Python 3 installed by running this command in the `docs/` folder:
python -m http.server 9000
and navigating to http://localhost:9000/ - you should be able to select your new language from the "Translations" menu at the top-right.
Once you're happy with your work, feel free to open a pull request!

View File

@@ -22,7 +22,7 @@ This section of code is called "The Main Loop" because it's responsible for loop
keyboard_task();
```
This is where all the keyboard specific functionality is dispatched. The source code for `keyboard_task()` can be found in [tmk_core/common/keyboard.c](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/tmk_core/common/keyboard.c#L216), and it is responsible for detecting changes in the matrix and turning status LED's on and off.
This is where all the keyboard specific functionality is dispatched. The source code for `keyboard_task()` can be found in [tmk_core/common/keyboard.c](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/tmk_core/common/keyboard.c#L216), and it is responsible for detecting changes in the matrix and turning status LEDs on and off.
Within `keyboard_task()` you'll find code to handle:
@@ -30,7 +30,7 @@ Within `keyboard_task()` you'll find code to handle:
* Mouse Handling
* Serial Link(s)
* Visualizer
* Keyboard status LED's (Caps Lock, Num Lock, Scroll Lock)
* Keyboard status LEDs (Caps Lock, Num Lock, Scroll Lock)
#### Matrix Scanning
@@ -175,7 +175,7 @@ FIXME: This needs to be written
FIXME: This needs to be written
#### Keyboard state LED's (Caps Lock, Num Lock, Scroll Lock)
#### Keyboard state LEDs (Caps Lock, Num Lock, Scroll Lock)
FIXME: This needs to be written

33
docs/ws2812_driver.md Normal file
View File

@@ -0,0 +1,33 @@
# WS2812 Driver
This driver powers the [RGB Lighting](feature_rgblight.md) and [RGB Matrix](feature_rgb_matrix.md) features.
Currently QMK supports the following addressable LEDs on AVR microcontrollers (however, the white LED in RGBW variants is not supported):
WS2811, WS2812, WS2812B, WS2812C, etc.
SK6812, SK6812MINI, SK6805
These LEDs are called "addressable" because instead of using a wire per color, each LED contains a small microchip that understands a special protocol sent over a single wire. The chip passes on the remaining data to the next LED, allowing them to be chained together. In this way, you can easily control the color of the individual LEDs.
## Driver configuration
### Bitbang
Default driver, the absence of configuration assumes this driver. To configure it, add this to your rules.mk:
```make
WS2812_DRIVER = bitbang
```
!> ARM does not yet support WS2182. Progress is being made, but we are not quite there, yet.
### I2C
Targeting boards where WS2812 support is offloaded to a 2nd MCU. Currently the driver is limited to AVR given the known consumers are ps2avrGB/BMC. To configure it, add this to your rules.mk:
```make
WS2812_DRIVER = i2c
```
Configure the hardware via your config.h:
```c
#define WS2812_ADDRESS 0xb0 // default: 0xb0
#define WS2812_TIMEOUT 100 // default: 100
```

View File

@@ -1,106 +1,106 @@
* [完全菜鸟指南](newbs.md)
* [入门](newbs_getting_started.md)
* [构建你的第一个固件](newbs_building_firmware.md)
* [刷新固件](newbs_flashing.md)
* [测试和调试](newbs_testing_debugging.md)
* [Git最佳实践](newbs_best_practices.md)
* [学习资源](newbs_learn_more_resources.md)
* [完全菜鸟指南](zh-cn/newbs.md)
* [入门](zh-cn/newbs_getting_started.md)
* [构建你的第一个固件](zh-cn/newbs_building_firmware.md)
* [刷新固件](zh-cn/newbs_flashing.md)
* [测试和调试](zh-cn/newbs_testing_debugging.md)
* [Git最佳实践](zh-cn/newbs_best_practices.md)
* [学习资源](zh-cn/newbs_learn_more_resources.md)
* [QMK基础](README.md)
* [QMK简介](getting_started_introduction.md)
* [向QMK贡献](contributing.md)
* [如何使用Github](getting_started_github.md)
* [获得帮助](getting_started_getting_help.md)
* [QMK基础](zh-cn/README.md)
* [QMK简介](zh-cn/getting_started_introduction.md)
* [向QMK贡献](zh-cn/contributing.md)
* [如何使用Github](zh-cn/getting_started_github.md)
* [获得帮助](zh-cn/getting_started_getting_help.md)
* [问题解答](faq.md)
* [一般问题](faq_general.md)
* [构建/编译](faq_build.md)
* [调试/故障排除](faq_debug.md)
* [键盘映射](faq_keymap.md)
* [问题解答](zh-cn/faq.md)
* [一般问题](zh-cn/faq_general.md)
* [构建/编译](zh-cn/faq_build.md)
* [调试/故障排除](zh-cn/faq_debug.md)
* [键盘映射](zh-cn/faq_keymap.md)
* 详细指南
* [安装构建工具](getting_started_build_tools.md)
* [vagrant指南](getting_started_vagrant.md)
* [构建/编译指令](getting_started_make_guide.md)
* [刷新固件](flashing.md)
* [定制功能](custom_quantum_functions.md)
* [映射概述](keymap.md)
* [安装构建工具](zh-cn/getting_started_build_tools.md)
* [vagrant指南](zh-cn/getting_started_vagrant.md)
* [构建/编译指令](zh-cn/getting_started_make_guide.md)
* [刷新固件](zh-cn/flashing.md)
* [定制功能](zh-cn/custom_quantum_functions.md)
* [映射概述](zh-cn/keymap.md)
* [硬件](hardware.md)
* [AVR处理器](hardware_avr.md)
* [驱动](hardware_drivers.md)
* [硬件](zh-cn/hardware.md)
* [AVR处理器](zh-cn/hardware_avr.md)
* [驱动](zh-cn/hardware_drivers.md)
* 参考
* [键盘指南](hardware_keyboard_guidelines.md)
* [配置选项](config_options.md)
* [键码](keycodes.md)
* [记录最佳实践](documentation_best_practices.md)
* [文档模板](documentation_templates.md)
* [术语表](reference_glossary.md)
* [单元测试](unit_testing.md)
* [有用的功能](ref_functions.md)
* [配置器支持](reference_configurator_support.md)
* [info.json 格式](reference_info_json.md)
* [键盘指南](zh-cn/hardware_keyboard_guidelines.md)
* [配置选项](zh-cn/config_options.md)
* [键码](zh-cn/keycodes.md)
* [记录最佳实践](zh-cn/documentation_best_practices.md)
* [文档模板](zh-cn/documentation_templates.md)
* [术语表](zh-cn/reference_glossary.md)
* [单元测试](zh-cn/unit_testing.md)
* [有用的功能](zh-cn/ref_functions.md)
* [配置器支持](zh-cn/reference_configurator_support.md)
* [info.json 格式](zh-cn/reference_info_json.md)
* [特性](features.md)
* [基本键码](keycodes_basic.md)
* [US ANSI控制码](keycodes_us_ansi_shifted.md)
* [量子键码](quantum_keycodes.md)
* [高级键码](feature_advanced_keycodes.md)
* [音频](feature_audio.md)
* [自动shift](feature_auto_shift.md)
* [背光](feature_backlight.md)
* [蓝牙](feature_bluetooth.md)
* [热改键](feature_bootmagic.md)
* [组合](feature_combo)
* [命令](feature_command.md)
* [动态宏指令](feature_dynamic_macros.md)
* [编码器](feature_encoders.md)
* [重音号Esc复合键](feature_grave_esc.md)
* [自锁键](feature_key_lock.md)
* [布局](feature_layouts.md)
* [前导键](feature_leader_key.md)
* [LED阵列](feature_led_matrix.md)
* [宏指令](feature_macros.md)
* [鼠标键](feature_mouse_keys.md)
* [一键功能](feature_advanced_keycodes.md#one-shot-keys)
* [指针设备](feature_pointing_device.md)
* [PS/2鼠标](feature_ps2_mouse.md)
* [RGB灯光](feature_rgblight.md)
* [RGB矩阵](feature_rgb_matrix.md)
* [空格候补换挡](feature_space_cadet_shift.md)
* [空格候补换挡回车](feature_space_cadet_shift_enter.md)
* [速录机](feature_stenography.md)
* [换手](feature_swap_hands.md)
* [多击键](feature_tap_dance.md)
* [终端](feature_terminal.md)
* [热敏打印机](feature_thermal_printer.md)
* [Unicode](feature_unicode.md)
* [用户空间](feature_userspace.md)
* [速度键](feature_velocikey.md)
* [特性](zh-cn/features.md)
* [基本键码](zh-cn/keycodes_basic.md)
* [US ANSI控制码](zh-cn/keycodes_us_ansi_shifted.md)
* [量子键码](zh-cn/quantum_keycodes.md)
* [高级键码](zh-cn/feature_advanced_keycodes.md)
* [音频](zh-cn/feature_audio.md)
* [自动shift](zh-cn/feature_auto_shift.md)
* [背光](zh-cn/feature_backlight.md)
* [蓝牙](zh-cn/feature_bluetooth.md)
* [热改键](zh-cn/feature_bootmagic.md)
* [组合](zh-cn/feature_combo)
* [命令](zh-cn/feature_command.md)
* [拨动开关](zh-cn/feature_dip_switch.md)
* [动态宏指令](zh-cn/feature_dynamic_macros.md)
* [编码器](zh-cn/feature_encoders.md)
* [重音号Esc复合键](zh-cn/feature_grave_esc.md)
* [自锁键](zh-cn/feature_key_lock.md)
* [布局](zh-cn/feature_layouts.md)
* [前导键](zh-cn/feature_leader_key.md)
* [LED阵列](zh-cn/feature_led_matrix.md)
* [宏指令](zh-cn/feature_macros.md)
* [鼠标键](zh-cn/feature_mouse_keys.md)
* [一键功能](zh-cn/feature_advanced_keycodes.md#one-shot-keys)
* [指针设备](zh-cn/feature_pointing_device.md)
* [PS/2鼠标](zh-cn/feature_ps2_mouse.md)
* [RGB灯光](zh-cn/feature_rgblight.md)
* [RGB矩阵](zh-cn/feature_rgb_matrix.md)
* [空格候补换挡](zh-cn/feature_space_cadet.md)
* [速录机](zh-cn/feature_stenography.md)
* [换手](zh-cn/feature_swap_hands.md)
* [多击键](zh-cn/feature_tap_dance.md)
* [终端](zh-cn/feature_terminal.md)
* [热敏打印机](zh-cn/feature_thermal_printer.md)
* [Unicode](zh-cn/feature_unicode.md)
* [用户空间](zh-cn/feature_userspace.md)
* [速度键](zh-cn/feature_velocikey.md)
* 针对制造者和定制者
* [手工连线指南](hand_wire.md)
* [ISP刷新指南](isp_flashing_guide.md)
* [ARM调试指南](arm_debugging.md)
* [I2C驱动](i2c_driver.md)
* [GPIO控制器](internals_gpio_control.md)
* [Proton C转换](proton_c_conversion.md)
* [手工连线指南](zh-cn/hand_wire.md)
* [ISP刷新指南](zh-cn/isp_flashing_guide.md)
* [ARM调试指南](zh-cn/arm_debugging.md)
* [I2C驱动](zh-cn/i2c_driver.md)
* [GPIO控制器](zh-cn/internals_gpio_control.md)
* [Proton C转换](zh-cn/proton_c_conversion.md)
* 深入了解
* [键盘如何工作](how_keyboards_work.md)
* [理解QMK](understanding_qmk.md)
* [键盘如何工作](zh-cn/how_keyboards_work.md)
* [理解QMK](zh-cn/understanding_qmk.md)
* 其他话题
* [使用Eclipse开发QMK](other_eclipse.md)
* [使用VSCode开发QMK](other_vscode.md)
* [支持](support.md)
* [使用Eclipse开发QMK](zh-cn/other_eclipse.md)
* [使用VSCode开发QMK](zh-cn/other_vscode.md)
* [支持](zh-cn/support.md)
* QMK 内构 (正在编写)
* [定义](internals_defines.md)
* [输入回调寄存器](internals_input_callback_reg.md)
* [Midi设备](internals_midi_device.md)
* [Midi设备设置过程](internals_midi_device_setup_process.md)
* [Midi工具库](internals_midi_util.md)
* [发送函数](internals_send_functions.md)
* [Sysex工具](internals_sysex_tools.md)
* [定义](zh-cn/internals_defines.md)
* [输入回调寄存器](zh-cn/internals_input_callback_reg.md)
* [Midi设备](zh-cn/internals_midi_device.md)
* [Midi设备设置过程](zh-cn/internals_midi_device_setup_process.md)
* [Midi工具库](zh-cn/internals_midi_util.md)
* [发送函数](zh-cn/internals_send_functions.md)
* [Sysex工具](zh-cn/internals_sysex_tools.md)

View File

@@ -8,7 +8,8 @@
注意这些程序不是由QMK提供或认可的。
* [Switch Hitter](https://elitekeyboards.com/switchhitter.php) (仅Windows)
* [QMK Configurator](https://config.qmk.fm/#/test/) (网页版)
* [Switch Hitter](https://web.archive.org/web/20190413233743/https://elitekeyboards.com/switchhitter.php) (仅Windows)
* [Keyboard Viewer](https://www.imore.com/how-use-keyboard-viewer-your-mac) (仅Mac)
* [Keyboard Tester](http://www.keyboardtester.com) (网页版)
* [Keyboard Checker](http://keyboardchecker.com) (网页版)

View File

@@ -1,32 +0,0 @@
# QMK鍵盤固件
[![當前版本](https://img.shields.io/github/tag/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/tags)
[![築邦](https://travis-ci.org/qmk/qmk_firmware.svg?branch=master)](https://travis-ci.org/qmk/qmk_firmware)
[![不和諧](https://img.shields.io/discord/440868230475677696.svg)](https://discord.gg/Uq7gcHh)
[![文檔狀態](https://img.shields.io/badge/docs-ready-orange.svg)](https://docs.qmk.fm)
[![GitHub的貢獻者](https://img.shields.io/github/contributors/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/pulse/monthly)
[![GitHub的叉](https://img.shields.io/github/forks/qmk/qmk_firmware.svg?style=social&label=Fork)](https://github.com/qmk/qmk_firmware/)
## 什麼是QMK固件
QMK是一個由社群維護的開源鍵盤韌體其中包含了QMK Toolbox、qmk.fm和其它文件。QMK韌體是以[tmk\_keyboard](http://github.com/tmk/tmk_keyboard)為基礎讓一些有用的功能在Atmel AVR控制器實現使用於[OLKB](https://olkb.com)、[ergodox EZ](http://www.ergodox-ez.com),和[Clueboard](http://clueboard.co/)的產品中。它也被移植到使用ChibiOS的ARM晶片上。你也可以用它來讓你徒手佈線或是客製的鍵盤PCB發揮功能。
## 如何得到QMK
如果你打算貢獻鍵盤佈局鍵盤或功能QMK最容易做的事情是[叉通過Github上爬行](https://github.com/qmk/qmk_firmware#fork-destination-box),和克隆你爬在本地進行更改,推動他們,然後打開從你的叉子[拉請求](https://github.com/qmk/qmk_firmware/pulls)。
否則,您可以直接下載([拉鍊](https://github.com/qmk/qmk_firmware/zipball/master) [焦油](https://github.com/qmk/qmk_firmware/tarball/master))或者通過GIT中克隆它(`git@github.com:qmk/qmk_firmware.git`)或HTTP(`https://github.com/qmk/qmk_firmware.git`)。
## 如何編譯
你可以編譯之前,你需要[安裝環境](getting_started_build_tools.md)用於AVR或/和ARM開發。一旦完成你會使用`make`命令建立一個鍵盤並用以下符號鍵盤佈局
make planck/rev4:default
這將建立`rev4` `planck`的修訂與`default`鍵盤映射。並非所有鍵盤有一個修訂版(也稱為子項目或文件夾),在這種情況下,它可以被省略:
make preonic:default
## 如何赶近
QMK有很多[特點](features.md)探索和很好的協議[參考文獻](http://docs.qmk.fm)挖通的。大部分功能通過修改[鍵盤映射(keymap.md),並改變[鍵碼](keycodes.md)冤大頭。

View File

@@ -1,99 +0,0 @@
* [完全指南菜鳥](zh/newbs.md)
* [入門](zh/newbs_getting_started.md)
* [構建第一個固件](zh/newbs_building_firmware.md)
* [刷新固件](zh/newbs_flashing.md)
* [測試和調試](zh/newbs_testing_debugging.md)
* [最佳實踐](zh/newbs_best_practices.md)
* [學習資源](zh/newbs_learn_more_resources.md)
* [QMK基礎](zh/README.md)
* [QMK簡介](zh/getting_started_introduction.md)
* [特約QMK](zh/contributing.md)
* [如何使用Github上](zh/getting_started_github.md)
* [獲得幫助](zh/getting_started_getting_help.md)
* [常問問題](zh/faq.md)
* [常問問題](zh/faq_general.md)
* [構建/編譯QMK](zh/faq_build.md)
* [調試/故障排除QMK](zh/faq_debug.md)
* [鍵盤佈局](zh/faq_keymap.md)
* 詳細指南
* [安裝編譯工具](zh/getting_started_build_tools.md)
* [流浪漢指南](zh/getting_started_vagrant.md)
* [構建/編譯器指令](zh/getting_started_make_guide.md)
* [刷新固件](zh/flashing.md)
* [定制功能](zh/custom_quantum_functions.md)
* [鍵盤映射概述](zh/keymap.md)
* [硬件](zh/hardware.md)
* [AVR處理器](zh/hardware_avr.md)
* [司機](zh/hardware_drivers.md)
* 參考
* [Keyboard Guidelines](zh/hardware_keyboard_guidelines.md)
* [Config Options](zh/config_options.md)
* [Keycodes](zh/keycodes.md)
* [Documentation Best Practices](zh/documentation_best_practices.md)
* [Documentation Templates](zh/documentation_templates.md)
* [Glossary](zh/reference_glossary.md)
* [Unit Testing](zh/unit_testing.md)
* [Useful Functions](zh/ref_functions.md)
* [Configurator Support](zh/reference_configurator_support.md)
* [特點](zh/features.md)
* [Basic Keycodes](zh/keycodes_basic.md)
* [Quantum Keycodes](zh/quantum_keycodes.md)
* [Advanced Keycodes](zh/feature_advanced_keycodes.md)
* [Audio](zh/feature_audio.md)
* [Auto Shift](zh/feature_auto_shift.md)
* [Backlight](zh/feature_backlight.md)
* [Bluetooth](zh/feature_bluetooth.md)
* [Bootmagic](zh/feature_bootmagic.md)
* [Combos](zh/feature_combo)
* [Command](zh/feature_command.md)
* [Dynamic Macros](zh/feature_dynamic_macros.md)
* [Encoders](zh/feature_encoders.md)
* [Grave Escape](zh/feature_grave_esc.md)
* [Key Lock](zh/feature_key_lock.md)
* [Layouts](zh/feature_layouts.md)
* [Leader Key](zh/feature_leader_key.md)
* [Macros](zh/feature_macros.md)
* [Mouse Keys](zh/feature_mouse_keys.md)
* [One Shot Keys](zh/feature_advanced_keycodes.md#one-shot-keys)
* [Pointing Device](zh/feature_pointing_device.md)
* [PS/2 Mouse](zh/feature_ps2_mouse.md)
* [RGB Lighting](zh/feature_rgblight.md)
* [RGB Matrix](zh/feature_rgb_matrix.md)
* [Space Cadet Shift](zh/feature_space_cadet_shift.md)
* [Space Cadet Shift Enter](zh/feature_space_cadet_shift_enter.md)
* [Stenography](zh/feature_stenography.md)
* [Swap Hands](zh/feature_swap_hands.md)
* [Tap Dance](zh/feature_tap_dance.md)
* [Terminal](zh/feature_terminal.md)
* [Thermal Printer](zh/feature_thermal_printer.md)
* [Unicode](zh/feature_unicode.md)
* [Userspace](zh/feature_userspace.md)
* [US ANSI Shifted Keys](zh/keycodes_us_ansi_shifted.md)
* 對於製造商和遊戲模組
* [Hand Wiring Guide](zh/hand_wire.md)
* [ISP Flashing Guide](zh/isp_flashing_guide.md)
* [ARM Debugging Guide](zh/arm_debugging.md)
* [I2C Driver](zh/i2c_driver.md)
* 為了更深入的了解
* [How Keyboards Work](zh/how_keyboards_work.md)
* [Understanding QMK](zh/understanding_qmk.md)
* 其它主題
* [Using Eclipse with QMK](zh/eclipse.md)
* QMK內部進行中
* [Defines](zh/internals_defines.md)
* [Input Callback Reg](zh/internals_input_callback_reg.md)
* [Midi Device](zh/internals_midi_device.md)
* [Midi Device Setup Process](zh/internals_midi_device_setup_process.md)
* [Midi Util](zh/internals_midi_util.md)
* [Send Functions](zh/internals_send_functions.md)
* [Sysex Tools](zh/internals_sysex_tools.md)

View File

@@ -38,6 +38,8 @@ static const I2CConfig i2cconfig = {
I2C1_CLOCK_SPEED,
I2C1_DUTY_CYCLE,
#else
// This configures the I2C clock to 400khz assuming a 72Mhz clock
// For more info : https://www.st.com/en/embedded-software/stsw-stm32126.html
STM32_TIMINGR_PRESC(I2C1_TIMINGR_PRESC) | STM32_TIMINGR_SCLDEL(I2C1_TIMINGR_SCLDEL) | STM32_TIMINGR_SDADEL(I2C1_TIMINGR_SDADEL) | STM32_TIMINGR_SCLH(I2C1_TIMINGR_SCLH) | STM32_TIMINGR_SCLL(I2C1_TIMINGR_SCLL), 0, 0
#endif
};
@@ -60,7 +62,6 @@ __attribute__((weak)) void i2c_init(void) {
palSetPadMode(I2C1_SDA_BANK, I2C1_SDA, PAL_MODE_INPUT);
chThdSleepMilliseconds(10);
#ifdef USE_I2CV1
palSetPadMode(I2C1_SCL_BANK, I2C1_SCL, PAL_MODE_STM32_ALTERNATE_OPENDRAIN);
palSetPadMode(I2C1_SDA_BANK, I2C1_SDA, PAL_MODE_STM32_ALTERNATE_OPENDRAIN);
@@ -68,8 +69,6 @@ __attribute__((weak)) void i2c_init(void) {
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);
#endif
// i2cInit(); //This is invoked by halInit() so no need to redo it.
}
i2c_status_t i2c_start(uint8_t address) {

1
drivers/arm/ws2812.c Normal file
View File

@@ -0,0 +1 @@
#error("NOT SUPPORTED")

1
drivers/arm/ws2812_pwm.c Normal file
View File

@@ -0,0 +1 @@
#error("NOT SUPPORTED")

1
drivers/arm/ws2812_spi.c Normal file
View File

@@ -0,0 +1 @@
#error("NOT SUPPORTED")

View File

@@ -19,9 +19,15 @@
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
void analogReference(uint8_t mode);
int16_t analogRead(uint8_t pin);
int16_t adc_read(uint8_t mux);
#ifdef __cplusplus
}
#endif
#define ADC_REF_POWER (1 << REFS0)
#define ADC_REF_INTERNAL ((1 << REFS1) | (1 << REFS0))

View File

@@ -25,13 +25,17 @@
#include <avr/interrupt.h>
#include <avr/io.h>
#include <util/delay.h>
#include "debug.h"
#if !defined(LED_ARRAY) && defined(RGB_MATRIX_ENABLE)
// LED color buffer
LED_TYPE led[DRIVER_LED_TOTAL];
# define LED_ARRAY led
#endif
/*
* Forward declare internal functions
*
* The functions take a byte-array and send to the data output as WS2812 bitstream.
* The length is the number of bytes to send - three per LED.
*/
void ws2812_sendarray(uint8_t *array, uint16_t length);
void ws2812_sendarray_mask(uint8_t *array, uint16_t length, uint8_t pinmask);
#ifdef RGBW_BB_TWI
@@ -135,23 +139,6 @@ unsigned char I2C_Write(unsigned char c) {
#endif
#ifdef RGB_MATRIX_ENABLE
// Set an led in the buffer to a color
void inline ws2812_setled(int i, uint8_t r, uint8_t g, uint8_t b) {
led[i].r = r;
led[i].g = g;
led[i].b = b;
}
void ws2812_setled_all(uint8_t r, uint8_t g, uint8_t b) {
for (int i = 0; i < sizeof(led) / sizeof(led[0]); i++) {
led[i].r = r;
led[i].g = g;
led[i].b = b;
}
}
#endif
// Setleds for standard RGB
void inline ws2812_setleds(LED_TYPE *ledarray, uint16_t leds) {
// ws2812_setleds_pin(ledarray,leds, _BV(ws2812_pin));

View File

@@ -20,13 +20,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef LIGHT_WS2812_H_
#define LIGHT_WS2812_H_
#include <avr/io.h>
#include <avr/interrupt.h>
//#include "ws2812_config.h"
//#include "i2cmaster.h"
#pragma once
#include "quantum/color.h"
@@ -42,33 +36,6 @@
* - Send out the LED data
* - Wait 50<35>s to reset the LEDs
*/
#ifdef RGB_MATRIX_ENABLE
void ws2812_setled(int index, uint8_t r, uint8_t g, uint8_t b);
void ws2812_setled_all(uint8_t r, uint8_t g, uint8_t b);
#endif
void ws2812_setleds(LED_TYPE *ledarray, uint16_t number_of_leds);
void ws2812_setleds_pin(LED_TYPE *ledarray, uint16_t number_of_leds, uint8_t pinmask);
void ws2812_setleds_rgbw(LED_TYPE *ledarray, uint16_t number_of_leds);
/*
* Old interface / Internal functions
*
* The functions take a byte-array and send to the data output as WS2812 bitstream.
* The length is the number of bytes to send - three per LED.
*/
void ws2812_sendarray(uint8_t *array, uint16_t length);
void ws2812_sendarray_mask(uint8_t *array, uint16_t length, uint8_t pinmask);
/*
* Internal defines
*/
#ifndef CONCAT
# define CONCAT(a, b) a##b
#endif
#ifndef CONCAT_EXP
# define CONCAT_EXP(a, b) CONCAT(a, b)
#endif
#endif /* LIGHT_WS2812_H_ */

31
drivers/avr/ws2812_i2c.c Normal file
View File

@@ -0,0 +1,31 @@
#include "ws2812.h"
#include "i2c_master.h"
#ifndef WS2812_ADDRESS
# define WS2812_ADDRESS 0xb0
#endif
#ifndef WS2812_TIMEOUT
# define WS2812_TIMEOUT 100
#endif
void ws2812_init(void) { i2c_init(); }
// Setleds for standard RGB
void ws2812_setleds(LED_TYPE *ledarray, uint16_t leds) {
static bool s_init = false;
if (!s_init) {
ws2812_init();
s_init = true;
}
i2c_transmit(WS2812_ADDRESS, (uint8_t *)ledarray, sizeof(LED_TYPE) * leds, WS2812_TIMEOUT);
}
// Setleds for SK6812RGBW
void ws2812_setleds_rgbw(LED_TYPE *ledarray, uint16_t leds) {
// not supported - for now error out if its enabled
#ifdef RGBW
# error "RGBW not supported"
#endif
}

View File

@@ -114,6 +114,17 @@ void DRV_init(void) {
DRV_write(DRV_GO, 0x01);
}
void DRV_rtp_init(void) {
DRV_write(DRV_GO, 0x00);
DRV_write(DRV_RTP_INPUT, 20); //20 is the lowest value I've found where haptics can still be felt.
DRV_write(DRV_MODE, 0x05);
DRV_write(DRV_GO, 0x01);
}
void DRV_amplitude(uint8_t amplitude) {
DRV_write(DRV_RTP_INPUT, amplitude);
}
void DRV_pulse(uint8_t sequence) {
DRV_write(DRV_GO, 0x00);
DRV_write(DRV_WAVEFORM_SEQ_1, sequence);

View File

@@ -170,6 +170,8 @@
void DRV_init(void);
void DRV_write(const uint8_t drv_register, const uint8_t settings);
uint8_t DRV_read(const uint8_t regaddress);
void DRV_rtp_init(void);
void DRV_amplitude(const uint8_t amplitude);
void DRV_pulse(const uint8_t sequence);
typedef enum DRV_EFFECT {

Some files were not shown because too many files have changed in this diff Show More