Compare commits

...

531 Commits

Author SHA1 Message Date
0f5928fdf4 Fix avrdude message to not mention any specific device model. 2017-10-16 09:54:17 -10:00
ba4b3d9d72 Added BLE support for USB-USB converter. (#1824)
* Added BLE support to USB-USB converter

* Added readme

* Removed images and Makefile
2017-10-15 15:04:03 -10:00
aa660c1eb7 Broken link found in issue #1845 2017-10-15 15:03:23 -10:00
12b2e0ac73 hack to force new tag 2017-10-15 20:04:23 -04:00
bd642d08ab add note to makefile for future use 2017-10-15 16:54:06 -04:00
7f2882832e adds default keymap for handwired boards 2017-10-15 16:52:51 -04:00
32f18cf616 fix up default keymaps and remove keyboard folder filter 2017-10-15 16:44:31 -04:00
1745f202cc update keymaps to not be the canonical file 2017-10-15 16:18:45 -04:00
115e49b2af only build default keymaps 2017-10-15 16:18:28 -04:00
e64313cdb3 adds default keymap for amj60 2017-10-15 16:17:47 -04:00
066525ab9e add qmk.fm as a backup host 2017-10-15 13:37:46 -04:00
e1bcb40e90 Cleaned up my Kinesis layout and created readme. (#1843)
* Cleaned up keymap and readme

* Cleaned up keymap and readme

* Cleaned up keymap and readme

* Cleaned up keymap and readme
2017-10-15 06:12:39 -10:00
zs
0b023ef67c Add tomb0y's minidox layout 2017-10-14 19:12:59 -10:00
800ec55dfc Make arguments redo, subproject elimination (#1784)
* redo make args to use colons, better folder structuring system [skip ci]

* don't put spaces after statements - hard lessons in makefile development

* fix-up some other rules.mk

* give travis a chance

* reset KEYMAPS variable

* start converting keyboards to new system

* try making all with travis

* redo make args to use colons, better folder structuring system [skip ci]

* don't put spaces after statements - hard lessons in makefile development

* fix-up some other rules.mk

* give travis a chance

* reset KEYMAPS variable

* start converting keyboards to new system

* try making all with travis

* start to update readmes and keyboards

* look in keyboard directories for board.mk

* update visualizer rules

* fix up some other keyboards/keymaps

* fix arm board ld includes

* fix board rules

* fix up remaining keyboards

* reset layout variable

* reset keyboard_layouts

* fix remainging keymaps/boards

* update readmes, docs

* add note to makefile error

* update readmes

* remove planck keymap warnings

* update references and docs

* test out tarvis build stages

* don't use stages for now

* don't use stages for now
2017-10-14 11:32:19 -10:00
e5dc2253e2 keymap configuration rewritten using the KEYMAP macro defined in atreus.h 2017-10-14 07:01:50 -10:00
6531d64ac7 Add YMD96 Keyboard (#1838)
* add ymd96 base

currently not working correctly.

* Update

honestly not really sure what I've been doing but I'm just more or less brute forcing this until I can get the pcb schematic or something

* honestly just trying stuff out

* Update keymaps

Getting closer hopefully

* ymd96 works!

at least for me

* Update readme

* Update readme

* Update readme
2017-10-14 07:01:02 -10:00
f9f3afd767 Created cleaner readme and updated the keymap of my layout (#1840)
* Add files via upload

* Add files via upload

* Add files via upload

* Add files via upload

* Update keymap.c

* Update keymap.c

* Update keymap.c

* Update keymap.c

* Add files via upload

* Add files via upload

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Add files via upload
2017-10-14 07:00:00 -10:00
c70b419ec0 Add multiple layout support and Linux flash utility to JJ40 (#1837)
* Adds support for multiple layouts. Adds custom keymap for "offset"
layout.

* Adds a tool to help detach the keyboard from the Linux HID driver before programming.

* Adds a tool to help detach the keyboard from the Linux HID driver before programming.
2017-10-13 19:04:36 -10:00
bccf263cd0 Add support for Unikeyboard Felix 2017-10-13 11:24:31 -10:00
e094cd42b5 Add support for the JJ40 Keyboard (#1834)
* Add support for JJ40

* Update readme

* Update maintaner
2017-10-13 10:20:56 -10:00
598cb82655 Extended the programming script for the ps2avrGB keyboard series:
- a keyboard already in bootloader mode will now be detected
- if setting the keyboard to bootloader mode doesn't work, a hint will be printed on how to do so
- instead of failing instantly when no keyboard is found, the script will now wait up to 60 seconds (it retries every 5 seconds, up to 12 times)
2017-10-13 05:37:19 -10:00
74f51009a8 Updated DZ60 HHKB layout and add my own layout (#1828)
* Updated DZ60 to properly handle HHKB layout, and added my own HHKB layout

* Added dedicated underglow keys

* Fixed compile issue
2017-10-13 05:35:49 -10:00
122525ee61 Add rask's UK78 and iErgoDox layouts (#1830)
* Add rask's Satan layout

* Add rask's Satan layout

* Add rask's BananaSplit60 layout

* Add rask's BS60 readme

* Fix rask's BS60 readme image

* Fix rask's BS60 readme image again

* Add rask's UK78 layout

* Change RGui to be LGui to fix locale switching

On Ubuntu the keyboard seemingly lost RGui when toggling
between typing languages. With LGui toggling works normally.

* Add rask's ErgoDox Infinity layout

* Modify ErgoDox layout and add readme for it

* Add rask's UK78 layout readme
2017-10-13 05:35:17 -10:00
c037d4bb30 Add the Tomato keyboard 2017-10-13 05:23:23 -10:00
66f45c9e2e Fix teensy path 2017-10-13 05:22:13 -10:00
2cf697d0c8 Tada68 instructions, updated and clarified to avoid bricking keyboards 2017-10-13 05:21:26 -10:00
4c0ff7b7ea Remove reference to Ergodox subprojects from docs
At one time, "ez" and "infinity" may have been subprojects of a
unified "ergodox" project, but this is not currently the case. Running
`make ergodox-ez-default-teensy` (or similar), as the documentation
currently implies, does not work.
2017-10-12 06:25:47 -10:00
db5afb05cf Fix the presentation of the contribution guide 2017-10-11 12:18:53 -07:00
2db4ad2133 Write a contributing guide. (#1827) 2017-10-11 12:07:15 -07:00
b3ad561b4f newkb-atreus-xk 2017-10-10 09:25:39 -10:00
ee8860a733 add stock layout for xd75 (#1731)
* add stock layout for xd75

* fix layout bug

* layout naming

* don't need it

* Cleaning up
2017-10-10 08:13:42 -10:00
966e2660cf Add option to reverse PS2 mouse axes and scrolling 2017-10-10 07:20:17 -10:00
109b2ae0bd Fix missing teensy path 2017-10-10 07:16:22 -10:00
b91ffba4be #1792 added in waits from tmk for locking switches
fixes #1792
2017-10-10 07:15:41 -10:00
01ac8a6051 ErgoDone keyboard: Improved structure of readme and augmented it with important information. Updated links to moved content. 2017-10-10 07:12:37 -10:00
f88f042c04 Updated my Gherkin Keymap 2017-10-10 07:11:26 -10:00
e0e80c0dc1 Cleanup of my keymaps (#1802)
* Add woodpad

* Cleanup

* Remove misc layouts for woodpad

* Move woodpad to handwired

* Updated RGB Underglow info

* Cleanup macros

* Fix odd merge issue

* Tweaked RGB lighting stuff

* Start to merge orthodox/ergodox keymaps (persistant layers)

* Add forced NKRO

* Added Colemak and Dvorak layers to default orthodox keymap

* Added default layer (qwerty/colemak/dvorak) detection to RGB Underglow
2017-10-10 07:11:05 -10:00
34084b4ee6 geändert: readme.md 2017-10-10 07:10:17 -10:00
f3e61afdc7 geändert: readme.md 2017-10-10 07:10:17 -10:00
2cda124bc1 geändert: keymap.c 2017-10-10 07:10:17 -10:00
951285de67 neue Datei: readme.md 2017-10-10 07:10:17 -10:00
56c2487223 geändert: keyboards/lets_split/keymaps/DE_simple/keymap.c 2017-10-10 07:10:17 -10:00
c5f847a900 neue Datei: keyboards/lets_split/keymaps/DE_simple/Makefile
neue Datei:     keyboards/lets_split/keymaps/DE_simple/config.h
	neue Datei:     keyboards/lets_split/keymaps/DE_simple/keymap.c
	neue Datei:     keyboards/lets_split/keymaps/DE_simple/rules.mk
2017-10-10 07:10:17 -10:00
d6a446bf95 Qwerty Code Friendly: relocate insert key
This was too easy to press by accident (next to Alt).
Make this user configurable.
2017-10-10 07:09:44 -10:00
31808df294 Added ISO Hungarian friendly keymap (#1808)
* Add files via upload

* Add files via upload

* Add files via upload

* Add files via upload

* Update keymap.c

* Update keymap.c

* Update keymap.c

* Update keymap.c
2017-10-10 07:08:37 -10:00
cfd118d158 Added Dichotemy Keyboard, updated docs for Pointing Device (#1817)
* Added Dichotemy Keyboard, updated docs for Pointing Device

* Updated readme

* Updated mouse report pointer in pointing_device.c
2017-10-10 07:07:59 -10:00
20031ab982 Contribute GH60 layout (#1820)
* Add first version of my layout

* Tweaked layout

* gh60/bluezio: SpaceFn CapsLock interferes with Ctrl+Arrows
2017-10-10 07:07:09 -10:00
6d2cb1d9ac Add my layouts (#1822)
* all of my updates

* return to base config for xd60.c

* remove janky keymap header definition

* update readme for xd60

* update Planck readme
2017-10-10 07:06:41 -10:00
d8c62e4238 Fixed typo in docs. (#1818) 2017-10-06 20:15:55 -07:00
357d930f5a correct extraneous t 2017-10-06 11:09:03 -10:00
8d7cc11d72 correct layer numbers in keymaps 2017-10-06 11:09:03 -10:00
18f78b6735 Fix Clueboard readme links (#1816) 2017-10-06 13:36:35 -07:00
120089d917 Consistent fabian layouts for amj40, let's split, planck and xd75 (#1812)
* slight modifier changes; added plover and reusing jack's default planck keymap as the basis

* space is not shift when held anymore

* added fabian layout (based on jack's default)

* changed fabian layout (based on jack's default)

* changed fabian layout (based on jack's default)
2017-10-06 08:08:35 -10:00
d2bbfb9058 Increase one-shot timeout for planck/keymaps/dshields and remove unused includes. 2017-10-06 08:08:06 -10:00
ee13228486 Generic Pointing Device (#1767) 2017-10-06 07:13:08 -10:00
ea819268f3 Add new 4x12 ortho layout & add credit to XD75 port (#1782)
* add xd75, preliminary RGB'

* fix RGB

* add backlight support (probably)

* updated readme and tweaked keymap

* added xd75 to list in /keyboards

* copyright ALL the things, create blank slate for Colemak Mod-DH Split/Wide keymap

* Add preliminary split Colemak Mod-DH layout

* changing stuff to compile properly

* attribution

* moar attribution

* removed incomplete keymap

* Create Colemak Mod-DH Wide layout for 4x12 ortho.

* Move Adjust key

* Add layou timage to readme

* fix naming

* Fix stupid issue with not understanding how the keymap works

* forgot to switch COLEMAK to COLEMAKDH...

* Remove and link image

* Remove and link image
2017-10-06 04:20:28 -10:00
e0834cfda9 Update Let's Split readme
Updated Let's Split readme to reflect `make` changes in #1659, removed incorrectly used apostrophe and other spelling / grammar errors
2017-10-05 13:42:17 -10:00
c206650ed0 [cleanup] consistent 2 space indentation
Was mixed between 2&4
2017-10-05 07:28:42 -10:00
e446eddca9 Adding my Roadkit keymap (#1798)
* Initial khord roadkit keymap

* Remove bad readme

* Transfer dot through to layer 2 and add clarifications to layout comments
2017-10-05 07:22:58 -10:00
0cc62459a7 Minor typo 2017-10-05 07:22:25 -10:00
29bcffb3f3 Edited a minor typo in feature_bootmagic.md. 2017-10-05 06:17:34 -10:00
01bf8e1643 Mbsurfer Let's Split keymap updates (#1787)
* Fix mbsurfer let's split layout RGB indicators when both lower and raise are pressed

* Update mbsurfer let's split keymap with new RGB key codes for modes

* Clean up mbsurfer keymap matrix layout
2017-10-03 09:05:10 -10:00
03de0c8575 Reference to rules.mk in tap dance docs added
Change-Id: I64aa6f95a30ab05f0ed3f499e54b9e125d379fad
2017-10-03 09:04:31 -10:00
1cd336dde4 ergodox: Update algernon's layout to v1.11
Overall changes
===============

* Updated to work with QMK master.
* The `$` and `^` symbols on the number row were swapped on both the base and
  the ADORE layers.
* The bracket tap-dance keys can now be used to input Japanese brackets, `「`
  and `」` with a third tap.
* The second column of the top row on the right side will act as a "Social"
  application selector on the `AppSel` layer.
* The third key on the same column will select a password manager.
* The `GUI` key will now launch `rofi` when triple-tapped.

Miscellaneous
=============

* The `👶` symbol can be entered with UCIS.
* The `👪` symbol can be entered with UCIS.

Tools
=====

* `tools/hid-commands` can now find the `Mstdn`, not just `Slack`, as the
  "Slack"/chat app.
* `tools/hid-commands` can now find the Plex web app as a music/media player.
* `tools/hid-commands` now understands the "Social" application selector. It
  raises the `Mstdn` and `Tweetdeck` windows, but keeps focus on the previous
  window.
* `tools/hid-commands` now understands the "Social2" application selector, which
  raises `Signal` and `Viber`, but keeps focus on the previous window.
* `tools/hid-commands` is now able to select a password manager (KeePass*).
* `tools/hid-commands` can now run `rofi` when receiving an `appsel_helper`
  command (triggered by a triple-tapped `GUI` key).

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2017-10-03 07:54:56 -10:00
cc52ac5b16 code_friendly_qwerty keymap 2017-10-03 07:46:18 -10:00
efbc4d2295 Add new planck layout (#1778)
* Custom layout: tehwalris

* Prevent stuck modifiers.
2017-10-03 07:45:22 -10:00
67eeb889ba Fix dynamic macros on ChibiOS keyboards 2017-09-30 06:22:24 -10:00
25285a1c5a Don't process keycodes on the slave 2017-09-30 06:22:02 -10:00
f1451b4b04 Fix HSV Color Wheel image on RGB Light page (#1773)
Signed-off-by: Max Riveiro <kavu13@gmail.com>
2017-09-29 16:19:15 -07:00
5fd68266f5 Clueboard 60% support (#1746)
* initial clueboard_60 support

* LED lighting support

* fix the clueboard->clueboard_66 rename

* Add layout support to clueboard_60

* Fix the 60_iso layout so it's actually iso

* add a default keymap for AEK layout

* fix clueboard_17

* Fixup the ISO layouts

* Fix the `wait_ms()/wait_us()` definitions for chibios

* Fix up the wait_ms/wait_us hack. Reduce stack size.

* Add a missing #include "wait.h"

* commit files that should have already been comitted
2017-09-29 16:17:30 -07:00
b736f25e85 added matrixman layout 2017-09-29 11:53:27 -10:00
d28fb63fac updated drashna's keymaps (#1769)
* Add woodpad

* Cleanup

* Remove misc layouts for woodpad

* Move woodpad to handwired

* Updated RGB Underglow info
2017-09-29 11:52:37 -10:00
6ec7ccec63 Support for KBP V60 Type R 60% keyboard (#1770)
* Support for KBP V60 Type R 60% keyboard

Support does not include in switch or underglow lighting for Polestar Edition.

* rename v60type_r to v60_type_r

* Remove old v60type_r

* Modify readme.md to adhere with QMK readme formatting.
2017-09-29 11:51:12 -10:00
791b9cc652 remove all makefiles from keyboard directories 2017-09-27 08:21:09 -10:00
e2480a299e ?= -> = 2017-09-25 19:36:44 -04:00
692c4e7508 Added Obelus
tearing it down so that it can be rebuilt

fiddling with audio

big default config overhaul

apparently startup sounds work without the override now

readme!

readme fixes

readme tweaking
2017-09-25 19:36:44 -04:00
f1c7b813aa New layout for XD60/64 (#1748)
* Add yuuki keymap

Documentation is still a TODO and the keymap may not be final

* GRV on colon

* add KC_GRV to FN ESC

* hhkb ish

* hhkbish 2

* HHKBish and documentation

* Fix Markdown warnings

* typo
2017-09-25 13:31:42 -04:00
a00532759b Move work from pinky fingers to thumbs and index fingers (#1749)
* phreed keymap added
This keymap moves many pinky keys to the center

* set to do what I want but LT() does not return to previous layer

* get overlays working

* get overlays working

* fix the readme

* fix the readme

* swapped the shift

* swapped the shift

* propagate mods

* clear special char on readme
2017-09-25 13:30:58 -04:00
5dab2ef12a Update Viterbi default layout (#1753)
* Implement sticky modifiers

* Change underglow based on sticky mod status

* Set RGB lights based on which mods are stickied

* Add controls for dimming RGB LEDs

* Only update RGB lights if modifiers have changed

* Use all LEDs to show modifier state

* Create default keymap for Viterbi
2017-09-25 13:21:27 -04:00
a67c930e9e XD75RE Custom layout, and clarification in readme.md (#1754)
* Duplicate default layout as basis of my own

* Basic Colemak layer, just to practice flashing

* Add reset button so that we don't have to short out the reset button on the board to flash it.

* Symbols layer

* Navigation layer, and remove unused keys. Now usable, nice.

* Correct backspace for UK QWERTY mapping

* Small clarification in XD75RE readme instructions

* Use UK pipe so that I can type a pipe on a UK keyboard
2017-09-25 13:20:41 -04:00
56d750659a Removed unneeded code from keymap 2017-09-25 13:15:04 -04:00
169d46ce83 Add my gherkin keymap, and update readme and config 2017-09-25 13:15:04 -04:00
1ad941e984 Add shell.nix for NixOS users 2017-09-25 13:14:20 -04:00
809c9258c1 Fixed typo of "multually" to "mutually" 2017-09-25 13:08:06 -04:00
c8d365f5da platform descriptions to match master keycodes.md documentation 2017-09-25 13:07:46 -04:00
957e44231a updated keycodes media descriptions
Platform compatibility descriptions added for mute, volume up/down
2017-09-25 13:07:46 -04:00
aef36ada02 add conditional for planck-mitch keymap 2017-09-24 23:50:18 -04:00
878774b24e Contribute a DZ60 keymap for 67 key configuration 2017-09-21 09:43:27 -04:00
8c02748c81 Update Viterbi keymaps 2017-09-21 09:40:13 -04:00
37b9715cbc Update default Viterbi layout 2017-09-21 09:40:13 -04:00
94823176c5 Adjust Viterbi pinout 2017-09-21 09:40:13 -04:00
92b74e2d36 Rename cloned Nyquist files to Viterbi, create temporary keymaps
Add WIP keymap for dwallace
2017-09-21 09:40:13 -04:00
72e9939143 Clone Nyquist keyboard for Viterbi 2017-09-21 09:40:13 -04:00
4c75285816 add filess 2017-09-21 00:32:01 -04:00
d77e55d31e move keymap to rules.mk 2017-09-21 00:27:14 -04:00
31e78d22b4 Turkish planck keymap (#1675)
* Adding keymap

* Adding keymap

* Compiles now, but doesn't flash

* Fixes issues with compilation

* Trying to fix issues with tap-dance layer

* Trying to fix issues with tap-dance layer

* Trying to fix issues with tap-dance layer

* Fixed bbaserdem layout

* Added keyboard layout image

* Edited README.md

* Changed layout and removed image from README.md

* Changed tapping terms

* Changed layout a bit
2017-09-21 00:19:57 -04:00
ea7792b6c6 Adding my keymap with Colemak Mod-DH 2017-09-21 00:16:43 -04:00
b1d6005c52 add layout mitosis-datagrok (workman variant) 2017-09-21 00:16:22 -04:00
064f682103 Instruct VSCode to indent using spaces, also ignore two temp files created by VSCode. 2017-09-21 00:15:53 -04:00
32d6a8b7ec adds DZ60 support (#1734)
* adds support for dz60

* fix dz60 readme
2017-09-19 10:27:46 -04:00
0c335270bd convert to unix line-endings [skip ci] 2017-09-19 04:47:16 +00:00
62a02af915 Fixed uk78 and turned Bootmagic off (#1725)
* Add files via upload

* Update readme.md

* Update readme.md

* Add files via upload

* Add files via upload

* Update config.h
2017-09-19 00:44:43 -04:00
3173924421 Adding a new layout for the planck that helps when coming from the pok3r (#1701)
* adding new layout for the planck that helps when coming from the pok3r

* Fixing the function layer

* Update readme.md

* Update keymap.c

Making some small adjustments

* Update keymap.c

switching GUI and Esc

* Update keymap.c
2017-09-18 17:13:01 -04:00
a89183591c Fixed a few typos and spelling errors in auto shift feature document 2017-09-18 17:08:18 -04:00
d0ca713eb4 KC_TILD should not have been listed as an auto shift key 2017-09-18 17:08:18 -04:00
abba393f57 Added Auto Shift, tap key = normal, hold key = shifted state. 2017-09-18 17:08:18 -04:00
87021371e6 Remove redundant Makefile. 2017-09-18 17:07:41 -04:00
da887ea412 Address issue #1713 (#1728) 2017-09-17 11:53:45 -07:00
2a02df84b6 Improve readme and PID codes for Atreus. 2017-09-17 00:04:08 -04:00
25aa474246 Updated RGB code to use event.pressed 2017-09-16 09:34:29 -04:00
c7ebb0f950 Add RGB code (from ps2avrgb and luizribeiro/qmk_firmware) 2017-09-16 09:34:29 -04:00
a8a02455f5 Keymap updates 2017-09-16 09:34:29 -04:00
6cfb85f32f Fixes for RGB, more colours 2017-09-16 09:34:29 -04:00
0b7df9f2ef Update on/off toggle behaviour for RGB LEDs 2017-09-16 09:34:29 -04:00
d281cd5c40 Change max brightness level for iOS 2017-09-16 09:34:29 -04:00
69ab37fca1 Got luizribeiro's ps2avrgb implementation working for Mechmini 2017-09-16 09:34:29 -04:00
024f0455de [core] fix rgb source include 2017-09-15 22:12:25 -04:00
6198fed566 Updated README in ergodox_infinity keyboard (#1702)
* changed 'infinity' to 'ergodox_infinity' and specified to be in the top-level directory as per recent changes to directory structure of QMK_firmware git repo

* accidently removed '-' in last line of readme
2017-09-15 22:01:51 -04:00
3e1f388bda Adding Ergodox EZ and Atreus Dvorak 42-key layouts (#1705)
* importing 42 key dvorak layout

* added comment for build instructions

* adding atreus dvorak 42 key layout

* added readme

* add readme

* build instructions

* additional MEH shortcuts
2017-09-15 22:00:26 -04:00
7bcf3e2781 Wording changes for the WSL install script 2017-09-15 21:59:56 -04:00
5ad5c230d6 Merge branch 'luizribeiro-ps2avrGB' 2017-09-15 21:44:39 -04:00
dc7d0c7b74 update to driver separation 2017-09-15 21:43:58 -04:00
afcf3a2878 Update Mechmini keymap, reduce reported power consumption for iOS Camera Adapter compatibility 2017-09-15 20:11:40 -04:00
ee9a20ff37 Cleaned, revised, and updated my keymaps to reflect new changes/defaults (#1712)
* add new RGB keycodes and clean up lets split keymap

* extraneous cases

* More cleanup and added macro

* one more macro

* cleaned up my planck keymap and added macros

* Transitioned planck keymap to new formatting / audio modes based on new default

* Remove extraneous newline in song list, add keycodes missed in previous commit

* error in graphical representation of keycodes
2017-09-15 19:21:46 -04:00
5eb5b6074c Add Levinson keyboard (#1723)
* Fork lets_split to levinson

Update subproject default

* Update Readme

* Pass LED backlight info from master to slave over serial
2017-09-15 19:20:50 -04:00
19f48fa922 "New" Atreus Keymap (#1717)
* Merge with upstream

* Finish merge

* Add new keymap

* Change use of KEYMAP macro

* Add Readme.md

* Fix link

* Clean up comments

* Raise on leading edge of keypress
2017-09-15 15:51:47 -04:00
c02de0932a Remove accidentally pasted line in MF68 readme 2017-09-15 15:49:57 -04:00
17c84f24cd Adapt build instructions to new keyboard name 2017-09-15 15:49:36 -04:00
a07d1f22aa Some revisions to cbbrowne Planck keymap, and a preliminary xd75 keymap (#1715)
* Add HOME/END keys as upper/lower on arrow-up/down

* Reduce .hex file size by turning off unneeded options

* Put digit keypad onto left hand upon RAISE; this will sometimes be preferable to double-hits of right hand

* Latest super latest version merge

* cbbrowne keymap for XD75re

* starting notes on XD75re keymap plans

* First draft of bottom row of QWERTY

* Switch my special bottom line over to QCENT

* Dunno

* Filling in wanted keys, bit by bit...

* Add copyright, extra macro

* Clean up comments, remove some experimental code I didn't like

* TODO plans for xd75re

* clean up keyboard layout

* QCENT2 is my new experiment for the main keyboard...

* Add a few more main layer keys, and modify LOWER to shift things outwards to conform with main layer

* Clean up RAISE layer to conform with main layer, remove QCENT layer as QCENT2 is the new thing

* More xd75 changes, now that I actually have it in hand

* shift keymap around, as original attempt was a bit too aggressive in keeping to the edges

* more revs to XD75

* Dropping parts of the centre keypad in favor of Keys I Really Need

* Improve documentation to conform with how builds are done now

* Improve documentation to conform with how builds are done now

* Add cbbrowne rules file as alternative to having the rules in Makefile

* Makefile not needed anymore for individual keymap
2017-09-14 14:02:49 -04:00
23ce0b43b6 Further updated ergodone readme.md (#1714)
* updated read.md file

* added image to flash hex on ergodone

* corrected image link

* updated direct image link

* image with larger text
2017-09-14 13:05:29 -04:00
4549dcd21f Add support for MF68 replacement PCB for Magicforce 68 (#1698)
* Port TMK code for MF68

* Change KEYMAP to KC_KEYMAP and add macro
2017-09-13 17:53:10 -04:00
7da585917b updated read.md file 2017-09-13 17:51:30 -04:00
cf001300b3 [planck] Adds Sean Hunter keymap(#1706)
* Sean Hunter initial keymap

* Update old map to sync it up with new one

* Add TODO
fix a few minor things

* small doc fixes

* Minor fixups
2017-09-13 17:47:48 -04:00
63028dde82 Add jojiichan keymap 2017-09-13 17:46:25 -04:00
7ad924bae5 Updates send_string functionality, adds terminal feature (#1657)
* implement basic terminal stuff

* modify send_string to read normal strings too

* add files bc yeah. working pgm detected

* pgm detection apparently not working

* adds send string keycodes, additional keycode support in send string

* implement arguments

* [terminal] add help command

* [terminal] adds keycode and keymap functions

* [terminal] adds nop.h, documentation

* update macro docs
2017-09-12 00:43:10 -04:00
a4ff8b91f7 Update tv44-belak keymap 2017-09-10 22:59:30 -04:00
63cde006c5 Changed USB manufacturer to "JMWS"
Don`t know, if this is 100% correct, but the original software refers
to "JMWS JM60 Driver".
2017-09-10 22:58:55 -04:00
d331e274b3 Use KC_GESC keycode instead of custom function 2017-09-10 22:58:55 -04:00
349e0012ba Basic support for JM60 keyboard
This adds basic support for JM60 RGB PCB that was sold
by KBDfans https://kbdfans.myshopify.com/
https://www.aliexpress.com/store/product/JM60-RGB60-Custom-mechanical-keyboard-PCB-ANSI/2230037_32810956675.html

No support for RGB Backlight yet.
2017-09-10 22:58:55 -04:00
68b6de60e0 fix for toggle tap dance 2017-09-10 22:57:26 -04:00
f10e9586df adds a default ergodox_infinity keymap 2017-09-10 00:10:35 -04:00
4cdcbdb861 Remove all Makefiles from the keyboards directory. (#1660)
* Remove all Makefiles from the keyboards directory.

* update keymaps added in the last 8 days

* Ignore keyboard/keymap makefiles

* update hand_wire to reflect our new Makefile-less reality

* Update the make guide to reflect the new reality

* move planck keymap options to rules.mk

* update planck keymaps 4real

* trigger travis

* add back build_keyboard.mk

* restore changes to build_keyboard
2017-09-08 13:47:50 -04:00
cf8e10533b update some keymaps that broke w/defaults 2017-09-08 01:42:32 -04:00
927ef81363 Revert "Remove the "lib/%" rule."
This reverts commit 6fc43ddaf6048edc67c00ea258ffbbcbded631b0.

I didn't think this through before pushing it.
2017-09-06 21:09:08 -07:00
6fc43ddaf6 Remove the "lib/%" rule. 2017-09-06 21:04:29 -07:00
0759adeaf1 Split atreus (#1680)
* Merge with upstream

* Add split_atreus keymap for lets_split.

* Move bspace

* Tidy up keymap

* Update layer enum

* Temporary fix

* Finish merge

* Added keys for testing

* Revert temporary fix

* Remake keymap using default let's split map as base. ASCII art not
updated

* Remove non-functioning layers

* Rename folder

* Update ASCII art

* Remove vestiges of ADJUST layer

* Remove nonexistent layer #defines

* Rename folder to avoid confusion

* Add Readme.md

* Formatting

* Description of underscores in layer maps
2017-09-06 18:33:52 -07:00
43a1ea3035 Add TKL keymap for Frosty_Flake (#1666)
* Add TKL keymap for Frosty_Flake

* Update readme.md

* Add spaces for ghfm newlines

* add note for dfu target
2017-09-06 17:42:19 -07:00
af14e672c9 Add a clueboard rev3 (#1688)
* Allow the knight animation to be restricted to a portion of the LED strip

* Add keys for jumping directly to particular animation modes

* Remove orphaned break statements

* Tweak the `RGB_MODE` buttons so they cycle through the same mode.

* small indentation fix

* Add a new revision of the clueboard with 18 underlight LEDs
2017-09-06 15:27:29 -07:00
2b3803eb5e Clone chibios and ugfx if it's not already checked out. (#1651)
* Clone chibios and ugfx if it's not already checked out.

* update the submodule out of date message
2017-09-06 15:21:31 -07:00
4580d3a730 RGB improvements (#1684)
* Allow the knight animation to be restricted to a portion of the LED strip

* Add keys for jumping directly to particular animation modes

* Remove orphaned break statements

* Tweak the `RGB_MODE` buttons so they cycle through the same mode.

* small indentation fix
2017-09-06 14:49:19 -07:00
0ce45eb0b7 Update mac guide (#1665)
`avr-libc` is no longer, and it's called `avr-gcc` now. https://github.com/osx-cross/homebrew-avr

Also you need `gcc-arc-none-eabi` to be able to compile in my experience.
2017-09-06 10:36:47 -07:00
85c3c5926c Force Raw HID interface number to 1 always (#1669) 2017-09-06 10:33:00 -07:00
323fa19e2d Dvorak-optimized Mitosis keymap with mouse keys (#1676)
* Add carvac_dv keymap for mitosis

* Add mouse keys

* move backspace, etc, and fix tab

* remove commented-out functions in keymap

* Fix scroll buttons and add left/right scrolling

* Make num momentary, add comments, and clean up

* fix mouse scroll acceleration
2017-09-06 10:19:35 -07:00
de0e025472 Added personal minivan keymap (#1681)
more consistent layer setup

documentation!

slide some things around

more doc jiggling
2017-09-06 09:48:21 -07:00
b032867236 Update Infinity Ergodox Makefile (#1682)
I believe this change is needed in response to the recent change in folder structure.
2017-09-06 09:47:41 -07:00
c8e232907f Merge branch 'master' of https://github.com/qmk/qmk_firmware 2017-09-06 12:38:08 -04:00
994592f985 add audio on/off audios 2017-09-06 12:37:57 -04:00
4d5b7dea14 Let's split hand mirroring support
commit b7a1c6fe3f0709d176a7833387051b2323b16f17
Author: Rob Rogers <r2d2rogers@gmail.com>
Date:   Wed Sep 6 08:28:00 2017 -0500

    add hand swap config matrix for Let's Split

commit 1d53113d96b711db549f735316c2ea3f7469021b
Merge: 98f40e3 4edfa97
Author: Rob Rogers <r2d2rogers@gmail.com>
Date:   Tue Sep 5 21:43:34 2017 -0500

    Merge branch 'master' of github.com:qmk/qmk_firmware

commit 98f40e31c4a1728d826037b375cf336d550bf69a
Merge: a825225 94f8b75
Author: Rob Rogers <r2d2rogers@gmail.com>
Date:   Mon Sep 4 20:20:46 2017 -0500

    Merge branch 'master' of github.com:qmk/qmk_firmware

commit a825225810a6282f7229cdf6b1c05fd9c27e1808
Merge: 56846cb f0db2c0
Author: Rob Rogers <r2d2rogers@gmail.com>
Date:   Thu Aug 31 19:47:25 2017 -0500

    Merge branch 'master' of github.com:qmk/qmk_firmware

commit 56846cb0326f1c78cba47b8161f4d389e19202c3
Merge: 4deb6ca ba2ad57
Author: Rob Rogers <r2d2rogers@gmail.com>
Date:   Sun Aug 27 15:05:16 2017 -0500

    Merge branch 'master' of github.com:qmk/qmk_firmware

commit 4deb6ca77633c603f8a134946bb4edc7ed619b50
Merge: 6f85d1f 7960302
Author: Rob Rogers <r2d2rogers@gmail.com>
Date:   Sat Aug 26 23:23:48 2017 -0500

    Merge branch 'master' of github.com:qmk/qmk_firmware

commit 6f85d1ff7cfac0a4a70b133984cd681852b49df6
Merge: e6aff71 4b0c6dc
Author: Rob Rogers <r2d2rogers@gmail.com>
Date:   Thu Aug 24 14:33:31 2017 -0500

    Merge branch 'master' of github.com:qmk/qmk_firmware

commit e6aff71807bf2dc41edbec91408a827c32ef73ef
Merge: 9d38f6f d54360b
Author: Rob Rogers <r2d2rogers@gmail.com>
Date:   Wed Aug 23 13:43:20 2017 -0500

    Merge branch 'master' of github.com:qmk/qmk_firmware

commit 9d38f6fe83e08962b14fd5d8a70ff100302af598
Merge: d1c0a9f 3aa7fbc
Author: Rob Rogers <r2d2rogers@gmail.com>
Date:   Tue Aug 22 22:13:05 2017 -0500

    Merge branch 'master' of github.com:qmk/qmk_firmware

commit d1c0a9f3b0d9ac466595b197cd8fbce3f1e42f8a
Merge: bd8dbb9 5cab5e4
Author: Rob Rogers <r2d2rogers@gmail.com>
Date:   Sun Aug 20 10:00:01 2017 -0500

    Merge branch 'master' of github.com:qmk/qmk_firmware

commit bd8dbb9d19344623f1b3cefc0a2b205864e9ba3c
Author: Rob Rogers <r2d2rogers@gmail.com>
Date:   Sun Aug 20 09:59:45 2017 -0500

    fix line endings another time
    '
    '

commit 2602515eb22451feed3178966ffeed33c0f4548b
Merge: 41e549e 71d1c02
Author: Rob Rogers <r2d2rogers@gmail.com>
Date:   Wed Aug 16 21:31:28 2017 -0500

    Merge branch 'master' of github.com:qmk/qmk_firmware

commit 41e549e3d527b58f92df28caf8daecae06e5ecf8
Merge: e624ea5 88198a9
Author: Rob Rogers <r2d2rogers@gmail.com>
Date:   Fri Aug 11 12:48:45 2017 -0500

    Merge branch 'master' of github.com:qmk/qmk_firmware

commit e624ea55a1f715d008661ae2e180ae55a09ef0c8
Merge: 5966f09 933701c
Author: Rob Rogers <r2d2rogers@gmail.com>
Date:   Mon Aug 7 14:43:30 2017 -0500

    Merge branch 'master' of github.com:qmk/qmk_firmware

commit 5966f096016ffce9c4802ade57d250d9f756bd73
Merge: 71c173d dd3803f
Author: Rob Rogers <r2d2rogers@gmail.com>
Date:   Tue Aug 1 21:58:14 2017 -0500

    Merge branch 'master' of github.com:qmk/qmk_firmware

commit 71c173dee1aa16dd762897531c42d23f6da0159c
Author: Rob Rogers <r2d2rogers@gmail.com>
Date:   Mon Jul 31 00:19:08 2017 -0500

    line endings???
2017-09-06 09:20:49 -07:00
4d5eeb3d7d update planck stuff 2017-09-06 12:19:40 -04:00
4edfa97e03 Improve and simplify RGB Knight mode (#1677)
* Simplify RGB Knight mode code, and make it look closer to KITT

* Remove RGBLIGHT_EFFECT_DUALKNIGHT_LENGTH
2017-09-05 14:19:08 -07:00
5f154f0a00 Update feature_common_shortcuts.md 2017-09-05 13:11:43 -04:00
94f8b758b3 Fix Kitt and its default behavior (#1674) 2017-09-03 11:02:06 -07:00
f0db2c0512 Set proper backlight level 2017-08-31 09:58:04 -04:00
8ea690a1b3 convert to unix line-endings [skip ci] 2017-08-30 15:55:39 +00:00
b07b4bb97b Alterations and documentation updates for j3rn Ergodox EZ keymap (#1656)
* Add second set of AltSft and Alt

* Insert the play key between previous and next

* Update documentation
2017-08-30 11:52:43 -04:00
5b897ce223 Port #1576 to Let's Split: EECONFIG_HANDEDNESS gets overridden when RGB is enabled 2017-08-30 11:51:58 -04:00
da33dfec55 rask's Satan and BananaSplit60 (#1654)
* Add rask's Satan layout

* Add rask's Satan layout

* Add rask's BananaSplit60 layout

* Add rask's BS60 readme

* Fix rask's BS60 readme image

* Fix rask's BS60 readme image again
2017-08-30 11:51:18 -04:00
a4316ba486 Fixed mitosis-mjt audio (#1653)
* copied mjt keymaps from archive

* All mjt boards now compile

* fixed jd45-mjt breathing

* Updates to fix SpaceFN but not tested yet.

* Still missing either spacebar or an adjacent keypress.

* Debugging rigged up for use with hid_listen.

* Reverted the default keymap to use tap_layer_key rather than custom.  Moved custom approach to keymap_debug.c

* Fixed the lower-left side of the keymap, which needed more spacers due to the matrix being directly put into the array rather than using the keymap function.

* Cleaned up JD45 keymap that uses tapkey.

* Redid minivan keymap with numsym rather than raise/lower.
Untested.

* Created my MJT keymap for HHKB
Enabled dynamic macros and moved
somoe of the shortcuts around.

* Minor keymap fixes to make them compile without errors.

* Added home/end to right arrow cluster on DYN layer.

* Added more keys to fn and dyn layers.

* It wasn't using my custom layer last time somehow...?  Now it will.

* Compiled and installed at end of day on 8/23

* Moved macros to FKEY layer because Adjust was too hard to get into and out of without some sort of feedback.

* Fixed volume controls... were reversed and disabled.

* Added F13-F15 back to fkeys layer in Minivan

* Created new Planck Keymap that uses the NumSym and FKeys layer approach like the Minivan.

* Removed DYN layer.

* Fixed diagram in planck numsym.

* Cleanup for pull request.

* Roadkit flip phone warning.

* Replaced PLAY_NOTES_ARRAY to PLAY_SONG

* reset the submodules

* checked out specific commits for submodules

* Removed debugging from JD45 shared config.h

* Moved custom rules.mk to apropriate keymap

Reset the shared rules.mk file.

* Trailing return issue in rules.mk

Gotta make for a smooth pull request :-)

* Mitosis music troubleshooting

Also updated the song playing function.
Does not work currently.

* Fixed mitosis audio

* Put mitosis/rules.mk back to QMK master
2017-08-30 11:50:31 -04:00
da83f04a30 add UC_OSX_RALT to make unicode use the Right Alt key on OSX 2017-08-30 11:38:03 -04:00
9987f9dcff Update drashna's keymap (#1649)
* initial commit for my custom layout

* fix switching into and out of numfun layer

* enable tap dance to lock layers

* enable layer indicator LEDs

* remove Colemak2 layer because it was dumb

* remove handler for nonexistent keycode

* add new movement keys to lower layer

* standardize indentation because I'm not a monster

* add Woodpad keyboard with Michael's Tryggve layout

* Add dvorak/colemak layers

* add hash

* Update keymap.c

* Fixed OSL Symbol layer layout issue

* Minor later tweak

* Clean up actions

* Diablo 3 macro keys remove

* Fixed numbad issues

* Remove Underglow toggle

* Fix layer consistency

* cleanup of code

* line feed

* small fixes

* Major merge

* Merge cleanup on my keymap

* Cleanup

* Update compile command

* Swapped arrows

* Additional cleanup

* Revert "Woodpad"

* update

* minor update

* staging for pull request

* Finish removing layer underglow toggles
2017-08-30 11:36:14 -04:00
ad73553aa9 Update README. 2017-08-30 11:28:56 -04:00
00d8f0c082 Small gaming layer and formatting updates to my nyquist config. 2017-08-30 11:28:56 -04:00
a729d852fe Merge pull request #1574 from danamlund/master
New clueboard keymap that is a tetris game
2017-08-30 11:27:52 -04:00
da7aece043 Add the new QMK submodule way in /lib and not tmk_core/tool wich is outdated 2017-08-30 11:26:24 -04:00
ed56a6859f add a git-submodule make target. 2017-08-28 11:26:35 -04:00
ba2ad57ca8 add rule shortcut via @samwho's suggesion 2017-08-27 12:53:35 -04:00
677b89768b add bin targets - closes #1648, fixes #1647 2017-08-27 12:11:59 -04:00
7960302242 Keymaps for several of my boards (#1641)
* copied mjt keymaps from archive

* All mjt boards now compile

* fixed jd45-mjt breathing

* Updates to fix SpaceFN but not tested yet.

* Still missing either spacebar or an adjacent keypress.

* Debugging rigged up for use with hid_listen.

* Reverted the default keymap to use tap_layer_key rather than custom.  Moved custom approach to keymap_debug.c

* Fixed the lower-left side of the keymap, which needed more spacers due to the matrix being directly put into the array rather than using the keymap function.

* Cleaned up JD45 keymap that uses tapkey.

* Redid minivan keymap with numsym rather than raise/lower.
Untested.

* Created my MJT keymap for HHKB
Enabled dynamic macros and moved
somoe of the shortcuts around.

* Minor keymap fixes to make them compile without errors.

* Added home/end to right arrow cluster on DYN layer.

* Added more keys to fn and dyn layers.

* It wasn't using my custom layer last time somehow...?  Now it will.

* Compiled and installed at end of day on 8/23

* Moved macros to FKEY layer because Adjust was too hard to get into and out of without some sort of feedback.

* Fixed volume controls... were reversed and disabled.

* Added F13-F15 back to fkeys layer in Minivan

* Created new Planck Keymap that uses the NumSym and FKeys layer approach like the Minivan.

* Removed DYN layer.

* Fixed diagram in planck numsym.

* Cleanup for pull request.

* Roadkit flip phone warning.

* Replaced PLAY_NOTES_ARRAY to PLAY_SONG

* reset the submodules

* checked out specific commits for submodules

* Removed debugging from JD45 shared config.h

* Moved custom rules.mk to apropriate keymap

Reset the shared rules.mk file.

* Trailing return issue in rules.mk

Gotta make for a smooth pull request :-)
2017-08-26 23:33:33 -04:00
de315c54eb make ergodone's led work well 2017-08-26 23:32:25 -04:00
a6fe0320f5 Updated readme to new standard. 2017-08-26 23:31:47 -04:00
78ab926cc8 Updated my files and added debouncing 2017-08-26 23:31:47 -04:00
b28982e329 Add mbsurfer Let's Split keymap with RGB layer indicators (#1638) 2017-08-26 10:34:53 -04:00
0965e5203e Merge in gaming layout. 2017-08-26 10:34:07 -04:00
8e1c3f410d Add split layout to more keyboards. 2017-08-26 10:34:07 -04:00
2aedbf872b Improve default layout of 9key and give example macro 2017-08-24 21:29:10 -04:00
afd7bf5f09 Increase time for tap dancing on 9key default 2017-08-24 21:29:10 -04:00
402235eeb4 Update Bishop Keyboards url to relaunched site 2017-08-24 21:29:10 -04:00
b2d033ffe8 Add 9key to keyboards readme 2017-08-24 21:29:10 -04:00
ae91af95e2 Add split ansi layout and talljoe's keymap. 2017-08-24 15:52:08 -04:00
4b0c6dc50d update travis script 2017-08-24 08:07:37 -04:00
9a23fad36b update ergodox links 2017-08-24 08:00:50 -04:00
718fddf44c Fix broken link 2017-08-24 07:59:22 -04:00
d2ff66a985 Creates a layouts/ folder for keymaps shared between keyboards (#1609)
* include variables and .h files as pp directives

* start layout compilation

* split ergodoxes up

* don't compile all layouts for everything

* might seg fault

* reset layouts variable

* actually reset layouts

* include rules.mk instead

* remove includes from rules.mk

* update variable setting

* load visualizer from path

* adds some more examples

* adds more layouts

* more boards added

* more boards added

* adds documentation for layouts

* use lowercase names for LAYOUT_

* add layout.json files for each layout

* add community folder, default keymaps for layouts

* touch-up default layouts

* touch-up layouts, some keyboard rules.mk

* update documentation for layouts

* fix up serial/i2c switches
2017-08-23 22:29:07 -04:00
7260fc3eef update 9key readme 2017-08-23 15:46:02 -04:00
437c86c9c1 update build script 2017-08-23 15:44:25 -04:00
d54360b1d8 Update keymap.c 2017-08-22 23:53:41 -04:00
fe4549839e Update config.h 2017-08-22 23:53:41 -04:00
1d930ebe45 Update Makefile 2017-08-22 23:53:41 -04:00
fcb60b1601 fix link brackets 2017-08-22 23:33:38 -04:00
3aa7fbcd79 fix(9key): Fix layout of 9key readme 2017-08-22 23:09:12 -04:00
82f434a4d4 update(9key): Add readme with updated format 2017-08-22 23:09:12 -04:00
d8fd33dd5e Add support for 9key by Bishop Keyboards 2017-08-22 23:09:12 -04:00
bd484f18bd JD40 MiniVan port 2017-08-22 23:07:52 -04:00
9f6362e4df Adding Makefile
Required for JIS layouts
2017-08-22 17:59:38 -04:00
57c93c13cc Creating Mac Version of JIS Keymap
Swapping command and alt, restoring fn+left for delete, subbing in grave for hhkb key.
2017-08-22 17:59:38 -04:00
e719f5b0b5 Merge branch 'master' of https://github.com/qmk/qmk_firmware 2017-08-22 10:08:44 -04:00
9da308a0cd move to compiled [skip ci] 2017-08-22 10:07:32 -04:00
47cd5b5622 Fix avoid certificate errors that occur during '2-setup-environment-win.bat' 2017-08-22 09:09:51 -04:00
0e39f1faf4 Merge branch 'master' of https://github.com/qmk/qmk_firmware 2017-08-22 08:57:13 -04:00
dd8cedc361 update travis script 2017-08-22 08:56:39 -04:00
51a2ce6145 convert to unix line-endings [skip ci] 2017-08-22 08:56:22 -04:00
11d27cec1e attempt to fix line-ending travis stuff 2017-08-21 23:39:06 -04:00
7a445d9167 Add back original copyrights 2017-08-21 23:22:36 -04:00
ff32643641 Readme correction #2 2017-08-21 23:22:36 -04:00
dbd4ce19e9 Correct jpetermans keymap readme and update copyright info 2017-08-21 23:22:36 -04:00
9ff064ae50 triggering travis 2017-08-21 23:11:08 -04:00
c3c07eff51 update building for .hex, secrets moving 2017-08-21 21:57:46 -04:00
69c4cfb238 Fix gherkin README to use correct build command. 2017-08-21 17:04:31 -04:00
36709d6a30 Use cmd-left and cmd-right instead of ctrl-a and ctrl-e for home and end
The ctrl commands only seem to work well in terminal, not in other apps.
2017-08-21 17:01:27 -04:00
1ab9e5d1c9 Remove COMPACT_KEYMAP, use full KC_ keycodes instead. 2017-08-21 17:01:27 -04:00
f4b3b576a0 Revert "Add COMPACT_KEYMAP macro to Satan GH60"
9a1826598a1a06d87459c5bbef9db9be277bdae9
2017-08-21 17:01:27 -04:00
dc1d24a4fe Add screen lock key 2017-08-21 17:01:27 -04:00
0be483c762 Fix power; use keyboard shortcut for Mac 2017-08-21 17:01:27 -04:00
cb719757c2 Reverse the split shift/fn
Turns out that 3c and 3d are not reversed when splitting the right
shift in the way that the Mark I layout does. Reversing it here, rather
than in the generic satan.h to avoid breaking the other layouts.
2017-08-21 17:01:27 -04:00
d172d6bec6 Add Mark I layout 2017-08-21 17:01:27 -04:00
90b07a5be4 Add COMPACT_KEYMAP macro to Satan GH60 2017-08-21 17:01:27 -04:00
af21fa63e5 Fix: add missing keys to Satan GH60 KEYMAP macro 2017-08-21 17:01:27 -04:00
dde035b963 Add smt keymap for Sentraq S65-X 2017-08-21 16:59:52 -04:00
e7b3991b97 fix readmes 2017-08-21 16:51:16 -04:00
1ce3971c90 adds sweet16 and four banger keyboards 2017-08-21 16:51:16 -04:00
48e79cbe29 Create readme.md 2017-08-20 20:57:22 -04:00
68dafc8382 Create Makefile 2017-08-20 20:57:22 -04:00
e0d9cc945f Create config.h 2017-08-20 20:57:22 -04:00
7aa839915e Create keymap.c 2017-08-20 20:57:22 -04:00
78dc7bacfa travis files in gitignore for good measure 2017-08-20 15:20:32 -04:00
fa6bcfd10c make travis convert line-endings and push a skippable commit 2017-08-20 14:22:18 -04:00
1254e76e29 stop compiling ez after build, rework ssh ids 2017-08-20 14:04:35 -04:00
166706a32c adds subatomic files (non-working) 2017-08-20 13:52:28 -04:00
948d6efcfb Fix stray keystroke in readme file. 2017-08-20 13:28:39 -04:00
fe60cbd928 Remove PLAY_NOTE_ARRAY usages to get rid of warning. 2017-08-20 12:32:20 -04:00
f94963e6b7 Merge pull request #1608 from hot-leaf-juice/master
keymap update
2017-08-20 11:52:57 -04:00
4b74c9056b Fix Planck Steno layout with new error message (remove MIDI). 2017-08-20 11:51:57 -04:00
e74a95bf26 Keymap tweaks. 2017-08-20 11:51:57 -04:00
bae1144a9f Fix compilation error when NO_ACTION_LAYER is defined. 2017-08-20 11:51:57 -04:00
eb5748e8bf Gherkin keymaps for Steno and Talljoe 2017-08-20 11:51:57 -04:00
bdc0880ca5 Add compile error if too many endpoints are defined for the ATmega32U4. 2017-08-20 11:51:57 -04:00
fc70c9ac9e Allow steno to build when NKRO is not defined.
Was missing eeprom.h, MAX(), and memset.
2017-08-20 11:51:57 -04:00
937b86d030 Added default ECO keymap 2017-08-20 11:47:46 -04:00
cc9b0eb109 Line ending stuff again 2017-08-20 11:47:46 -04:00
046595f521 Update s60_x/default/rule.mk for original Sentraq S60-X
Fix and issue with the original Sentraq S60-X not being compatible with 'default'. If 'default' shouldn't be changed, perhaps I can create an 'original' revision.
2017-08-20 11:45:18 -04:00
8341068299 Correct if-statement 2017-08-20 11:17:19 -04:00
a553dcba5a Added gentoo support for dependency script 2017-08-20 11:17:19 -04:00
5cab5e4a4e validates json 2017-08-19 08:35:14 -04:00
d8145c8464 adds redirects for docs 2017-08-19 08:31:54 -04:00
81d7e7d4c8 Merge pull request #1601 from dlaroe/master
My keymaps only
2017-08-19 08:19:50 -04:00
30ac7d403e remove dead links, add troubleshooting section 2017-08-19 08:19:16 -04:00
6ea408da10 Update USB-USB converter README according to #1588 2017-08-19 08:19:16 -04:00
1132646b2f Update readme.md 2017-08-19 08:18:27 -04:00
9eb71e9719 Update readme.md 2017-08-19 08:18:27 -04:00
9ea56f03a1 Fixing readme clobber 2017-08-19 08:18:27 -04:00
07be7b8d69 Reverting CMD Changes
Adding the CMD from @edasque in once more as it allows specifying more than one board via host ENV vars. 
Currently, the Dockerfile is hard-coded.
2017-08-19 08:17:58 -04:00
baae936b47 Required overridden function for keymaps in EEPROM 2017-08-19 08:16:58 -04:00
a6845036e2 Merge branch 'master' of https://github.com/qmk/qmk_firmware 2017-08-19 10:34:45 +01:00
4c4a174dbe Added Preonic Makefile and readme.md 2017-08-18 17:45:32 -04:00
8b62a0af74 Updated keymaps with second LOWER for the right hand 2017-08-18 17:29:19 -04:00
7277f09bba Update Nyquist readme file to new format 2017-08-18 15:44:02 -04:00
94ca84d271 Fix incorrect name for GeminiPR in docs. 2017-08-18 14:43:24 -04:00
52f2f6d8ea adds audio docs to summary 2017-08-18 13:57:57 -04:00
9fed4f7948 Add link to keycodes doc in how_keyboards_work 2017-08-18 12:49:55 -04:00
c0a6935fb3 Fix these links, as they appear to be broken (#1595)
It looks like build_environment_setup.md got renamed to
getting_started_build_tools.md in this commit:

	commit e6c638bed1fa0a48bb6f8697b2a61717c4fd0992
	Author: skullY <skullydazed@gmail.com>
	Date:   Sat Aug 5 20:54:34 2017 -0700

		Overhaul the Getting Started section and add a FAQ section

	 docs/{build_environment_setup.md => getting_started_build_tools.md} | 132 ++++++++++++++++++++++++++++++++++++-------------------------------------

This commit adjusts the links to match the new name.
2017-08-18 00:18:04 -07:00
b483a90a90 update favicons 2017-08-17 17:13:44 -04:00
cb76e71109 Add dvorak/colemak layers 2017-08-17 12:38:09 -04:00
8392667ac4 bananasplit LED support and keymap add
* added LED pin mapping
* adding my keymap
2017-08-17 12:37:38 -04:00
4a9e16b394 Add a tetris keymap to clueboard that includes a tetris game 2017-08-17 18:13:21 +02:00
71d1c02a9b Add message to avrdude script that it can't used within WSL currently 2017-08-16 20:47:43 -04:00
4e73b0b8d7 Make the bulk of our keyboards match the readme.md standard 2017-08-16 20:36:59 -04:00
2ee0dc7793 Revert "Moves files from ez/keymaps to ergodox/keymaps"
This reverts commit 5e36f8463adf9231a60bc8d1c657d51c3181d079.
2017-08-16 20:36:59 -04:00
9298f9d586 Moves files from ez/keymaps to ergodox/keymaps
That directory shouldn't even exist
2017-08-16 20:36:59 -04:00
356b489d98 Update ErgoDox readme
Per standard recommended in #1362.
2017-08-16 20:36:59 -04:00
4c2dafc652 Add separate readme.md for ErgoDone 2017-08-16 17:31:12 -04:00
285099de0d Add ErgoDone support to two keymaps that have special config.h 2017-08-16 17:31:12 -04:00
cb74c8dc46 Add dummy backlight/LED functions for keymaps that require them 2017-08-16 17:31:12 -04:00
52f4a38cb3 Add support for the ErgoDone 2017-08-16 17:31:12 -04:00
f02430b131 Update links in the glossary 2017-08-16 15:47:20 -04:00
9d1a08e38a Doc updates from going through every file 2017-08-16 15:47:20 -04:00
9b879b1267 break up keymaps and quantum keycodes into files by feature 2017-08-16 15:47:20 -04:00
2709744cdd take a stab at documenting layers 2017-08-16 15:47:20 -04:00
207bcd788a rework key_functions into feature_common_shortcuts 2017-08-16 15:47:20 -04:00
e6c638bed1 Overhaul the Getting Started section and add a FAQ section 2017-08-16 15:47:20 -04:00
89bcdde927 line endings 2017-08-16 12:23:59 -07:00
d3e1aaf5e2 trigger new travis build 2017-08-16 01:11:39 -07:00
0cc15e117d Cleanup the clueboard keymaps 2017-08-16 01:07:48 -07:00
5bff9d6181 cleanup usb-usb converter code 2017-08-15 23:14:41 -04:00
7e5ccd50dc add RESET to keymap 2017-08-15 23:14:41 -04:00
80d082055b convert keymap into qmk-style 2017-08-15 23:14:41 -04:00
c8222043fc wow, it builds! added empty matrix.c and moved custom matrix code to custom_matrix.cpp
still untested because of hardware availability :(
2017-08-15 23:14:41 -04:00
fa86b10138 add extern "C" to matrix.cpp 2017-08-15 23:14:41 -04:00
2aa5e44640 some major steps toward making the usb-usb converter work 2017-08-15 23:14:41 -04:00
42f895a4bc remove unused variables from makefile 2017-08-15 23:14:41 -04:00
f4cdc9117c small changes following Jack's advice. 2017-08-15 23:14:41 -04:00
d7d20e2511 start working on usb-usb converter port 2017-08-15 23:14:41 -04:00
4757140107 Wrapped process_leader.c in #ifndef DISABLE_LEADER to allow compilation with DISABLE_LEADER defined. 2017-08-15 19:51:06 -04:00
c622423668 Remove floating point calculation in mouse move. Saves approx 650 bytes if no other floating point used. 2017-08-15 19:51:06 -04:00
b7d43ee253 correct tilde to grave 2017-08-15 19:48:58 -04:00
565c670ca4 Merge pull request #1571 from BalzGuenat/grave-esc-fix
Fix for issue #1568
2017-08-15 19:48:14 -04:00
aee4e4650b Merge pull request #1576 from That-Canadian/minidox
Minidox
2017-08-14 16:21:39 -04:00
be0d49ba63 Add files via upload 2017-08-14 16:20:24 -04:00
0f2a7b6210 Fixed so will compile both with and without underglow 2017-08-14 16:20:24 -04:00
cb7255755b Add files via upload 2017-08-14 16:20:24 -04:00
1a0b5aee63 Create Keymap.c
RGB Underglow mod for layer indication
2017-08-14 16:20:24 -04:00
26650731d1 Added "EECONFIG_HANDEDNESS" to the eeconfig.h , because when RGB was enabled it was overwritting the old EECONFIG_HANDEDNESS address (10), so it is now on a non-conflicting addres (14).
Updated MiniDox split_util.h and eeprom files to reflect this change.

I recommend adding this to any split board that used these files, my changes will not effect them currently.
2017-08-13 14:24:04 -04:00
1631f7cd79 Merge branch 'master' into minidox 2017-08-13 14:11:40 -04:00
09e5885e45 Merge remote-tracking branch 'upstream/master' 2017-08-13 14:11:25 -04:00
b4be711af1 fix for issue #1568 2017-08-12 12:15:36 +02:00
430151dd51 Merge remote-tracking branch 'upstream/master'
# Conflicts:
#	docs/faq_keymap.md
2017-08-12 12:14:33 +02:00
175db1a549 fix code block formatting 2017-08-11 23:13:50 +02:00
5ad103fa51 add description of new option to docs and add option (commented out) into template. 2017-08-11 16:54:10 -04:00
188ed682e3 add short comment to grave_esc_ctrl_override 2017-08-11 16:54:10 -04:00
897ceac26c add option to let ctrl override shift/gui for the GRAVE_ESC.
This enables the ctrl+shift+esc shortcut to task manager on windows.
2017-08-11 16:54:10 -04:00
3e67cc9c80 add description of new option to docs and add option (commented out) into template. 2017-08-11 22:20:36 +02:00
bd38273f6f add short comment to grave_esc_ctrl_override 2017-08-11 21:43:49 +02:00
7b8eed9f29 add option to let ctrl override shift/gui for the GRAVE_ESC.
This enables the ctrl+shift+esc shortcut to task manager on windows.
2017-08-11 18:53:08 +02:00
88198a9606 move qmk version to very top, exclude when git isn't available 2017-08-10 18:54:14 -04:00
6895c4510e fix default layer songs 2017-08-10 16:52:35 -04:00
70407a1b67 Add config.h to piemod keymap. 2017-08-10 14:58:15 -04:00
3fa32867ad Remove makefile from Let's Split piemod. 2017-08-10 14:58:15 -04:00
72b7067489 Add piemod keymaps for Let's Split and Planck. 2017-08-10 14:58:15 -04:00
48a89ad864 Merge remote-tracking branch 'upstream/master' 2017-08-09 23:17:48 -04:00
a5ab2412ab Update readme
Fixed link and small cleanup
2017-08-09 21:03:05 -04:00
78ae28f24c Add 'boardy' keymap
Initial version of my personal layout for my keyboard Boardy
2017-08-09 21:03:05 -04:00
b6ed990d58 Rename 'base' to 'default'
Moves Eagleheardt's base layout to the default one for the Org60.  Also changed to use the right header file.
2017-08-09 21:03:05 -04:00
aa660d61ea Add Org60 keyboard
This makes some small changes to the XD60 configuration.  Also moves Eagleheardt's base keymap.
2017-08-09 21:03:05 -04:00
d2e24354e1 Add TKL keymap for GON NerdTKL 2017-08-09 10:19:39 -04:00
6b70b6a990 Readmes! 2017-08-08 23:31:56 -04:00
daa5cee065 Added my personal layout
added RGB controls to my keymap
2017-08-08 23:31:56 -04:00
33a87c132c Base JC65 config
jc65 builds properly, haven't test flashed yet

Enabled RGB backlighting

disabled some other features to save some space
2017-08-08 23:31:56 -04:00
087d00f769 commit line ending differences 2017-08-08 16:45:44 -07:00
26d348b6d1 move version info to the top of the output 2017-08-08 16:06:45 -04:00
5210f94a56 add version to make output 2017-08-08 16:06:45 -04:00
f1536a3f54 Change installation of avr-libc to avr-gcc, now that avr-libc is integrated into the avr-gcc build 2017-08-08 10:03:19 -04:00
3815067377 Fixed gaming layer 2017-08-08 10:02:53 -04:00
114565fe81 Rename SHIFT macro to BV_64 2017-08-08 10:02:53 -04:00
e9d755b6f4 Small gaming layer update 2017-08-08 10:02:53 -04:00
a3e1d9a8cc Added support for locking One Shot modifiers. 2017-08-08 10:02:53 -04:00
02f405708b Remove hex print code. 2017-08-08 10:02:53 -04:00
916c4d799d Added NKRO to nyquist layout. 2017-08-08 10:02:53 -04:00
bc59e093ec Updated ergodox profile 2017-08-08 10:02:53 -04:00
7935f563e9 Updated nyquist gaming layout. 2017-08-08 10:02:53 -04:00
5fc4a664dc Added initial key lock documentation. 2017-08-08 10:02:53 -04:00
8e1be7c792 Initial implementation of the key_lock feature. 2017-08-08 10:02:53 -04:00
7a9fb7c96b Added readme, fixed eql vs plus 2017-08-08 10:02:53 -04:00
8cb413b6b7 Updated licensing 2017-08-08 10:02:53 -04:00
b66a9af352 Finished initial Nyquist keymap. 2017-08-08 10:02:53 -04:00
fb91d9008b Additional keymap updates. 2017-08-08 10:02:53 -04:00
1219da753b Initial nyquist keymap 2017-08-08 10:02:53 -04:00
107d8031e5 update priyadi's keymap config 2017-08-07 22:36:05 -04:00
1a070d6f6f let planck keymaps use KEYMAP 2017-08-07 22:04:37 -04:00
e966854a65 Merge pull request #1558 from BalzGuenat/bananasplit
Merged my Bananasplit port with Nic's.
2017-08-07 17:09:36 -04:00
3961e14209 remove duplicate readme 2017-08-07 22:26:32 +02:00
d18df8ef7a Merge remote-tracking branch 'upstream/master' into bananasplit
# Conflicts:
#	keyboards/bananasplit/Makefile
#	keyboards/bananasplit/bananasplit.c
#	keyboards/bananasplit/bananasplit.h
#	keyboards/bananasplit/config.h
#	keyboards/bananasplit/keymaps/default/keymap.c
#	keyboards/bananasplit/rules.mk
2017-08-07 21:54:06 +02:00
933701c212 Updated .gitignore to properly have the master changes 2017-08-07 09:06:53 -04:00
5f58a8f842 Line endings issue for uk78? 2017-08-07 09:06:53 -04:00
4fd5ee410c Modified gitignore file to allow the left and right hand eeprom files for the MiniDox to be added. They need to be there for proper flashing of the board. They do not change between builds, so no need to re-build them. 2017-08-07 09:06:53 -04:00
93b850048a Changed my personal keymap and config. 2017-08-07 09:06:53 -04:00
f64d4242ad Updated .gitignore to properly have the master changes 2017-08-07 08:05:35 -04:00
1bbb49585e Merge branch 'master' into minidox 2017-08-07 08:00:02 -04:00
597ff7aee9 Line endings issue for uk78? 2017-08-07 07:59:29 -04:00
15822a8e44 Modified gitignore file to allow the left and right hand eeprom files for the MiniDox to be added. They need to be there for proper flashing of the board. They do not change between builds, so no need to re-build them. 2017-08-07 07:55:33 -04:00
aa67e3cedb Changed my personal keymap and config. 2017-08-07 07:49:43 -04:00
7f3921bcb3 Update nic keymap 2017-08-06 22:46:44 -04:00
b529d5923f Update readme 2017-08-06 22:46:44 -04:00
fb0d4e96e8 Add nic keymap 2017-08-06 22:46:44 -04:00
c93975ac94 Add "hhkb with arrows" macro 2017-08-06 22:46:44 -04:00
ba59b2d97e Port hhkbanana 2017-08-06 22:46:44 -04:00
4a5c948561 Port true_banana as default 2017-08-06 22:46:44 -04:00
087fbe0628 Port main keyboard parts 2017-08-06 22:46:44 -04:00
9e79bb1491 Merge pull request #1554 from qmk/docs
Updates some remaining doc stuff
2017-08-06 22:29:59 -04:00
1fc9eabd08 Fixed a layout comment to match layout array 2017-08-06 20:08:37 -04:00
7b5f02aa6a Port updated debouncing algorithm from Let's Split to Nyquist 2017-08-06 20:08:00 -04:00
b20a87e3cc Add .eep files for setting hands 2017-08-06 20:08:00 -04:00
396f97068b Add RGB commands to default Nyquist keymap 2017-08-06 20:08:00 -04:00
5fbd25db62 Update readme.md 2017-08-06 20:06:24 -04:00
05351ce8b3 Add files via upload 2017-08-06 20:06:24 -04:00
525b3deadf add short name for locking mods to docs. 2017-08-03 23:10:31 -04:00
308bec28bb Add language-switch for locking switch 2017-08-04 04:16:39 +02:00
76ea366abd Merge pull request #1538 from That-Canadian/eco-keyboard
Eco keyboard
2017-08-03 20:58:23 -04:00
5c44d40a0c Merge pull request #1540 from fabiant7t/master
amj40 added; my layouts for Let's Split, amj40 and XD75
2017-08-03 20:57:44 -04:00
479139f9d4 Fix location of where the make command should be run 2017-08-03 20:56:21 -04:00
e0caf94323 Move avrdude flashing script from individual keyboard rules.mk to common location and improve script.
Port detection script is now more informative and better handles first time flashing of a Pro Micro
2017-08-03 20:56:21 -04:00
d8c503f3ac add personal keymap 2017-08-03 23:33:31 +02:00
088dfb7db5 added a clone of my lets split grid layout on a re75 2017-08-03 21:05:09 +02:00
3c2343664c Merge https://github.com/qmk/qmk_firmware 2017-08-03 19:44:58 +02:00
83b35bf6f6 Update readme.md 2017-08-03 11:57:18 -04:00
8765751f70 Added V2 files for the ECO board, also changed default from rev1 to rev2. 2017-08-03 11:02:52 -04:00
c33434c0d6 Merge branch 'master' into eco-keyboard 2017-08-03 10:52:30 -04:00
07ba06d0b6 fix section in porting guide that refered to Makefile instead of rules.mk 2017-08-02 22:00:49 -04:00
b6280f979c Picture and details update
I fixed the picture of the layout and added a bit of an explanation. It now matches the readme file from the uppercase BASE folder
2017-08-02 21:52:31 -04:00
15fbe6e233 add the bananasplit keyboard incl. default keymap. 2017-08-03 03:51:34 +02:00
7371209ffb Adds Eagleheardt's XD60 keymap (#1528)
* Add files via upload

* Update readme.md

* Update readme.md

* Add files via upload
2017-08-02 21:23:36 -04:00
d28b2c395b tap-dance: key + layer helper
This adds the `ACTION_TAP_DANCE_DUAL_ROLE` helper, which makes it easy to have
keys that act as a key on the first tap, and as a layer toggle on the second.

Fixes #1532, reported by @Ptomerty.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2017-08-02 16:06:16 -04:00
bb30ff5f71 Fix HHKBish layout arrows 2017-08-02 16:05:46 -04:00
bc5c67b3b2 Change TG to TO 2017-08-02 16:05:46 -04:00
ea02a3ea23 Update keymap to have HHKB-ish support and readme along with it 2017-08-02 16:05:46 -04:00
29fcb64bb4 add KC_Grave and fix typo on readme 2017-08-02 16:05:46 -04:00
70cc193d14 Add a readme.md file for the keymap 2017-08-02 16:05:46 -04:00
aab5f349a2 New keymap for mechmerlin 2017-08-02 16:05:46 -04:00
a7b6292010 added missing media controls and mod-tap rshift/enter 2017-08-02 16:05:22 -04:00
8e66f65c77 add my keymap 2017-08-02 16:05:22 -04:00
xk
23549791eb Add keymap xk 2017-08-02 16:04:49 -04:00
dd3803f334 Normalize all line endings 2017-08-01 16:44:29 -04:00
015bf30d9b changed adjust layer to emulate mouse on rignt hand 2017-07-31 22:01:35 +02:00
9609a47c3e Merge https://github.com/qmk/qmk_firmware 2017-07-31 21:17:16 +02:00
661106bac4 layout updates and cleanups 2017-07-31 21:16:55 +02:00
bd0a888133 line-endings 2017-07-30 12:59:18 -04:00
d272111d46 added xd75 to list in /keyboards 2017-07-30 00:46:08 -04:00
0b528d2e36 updated readme and tweaked keymap 2017-07-30 00:46:08 -04:00
cc6043ca29 add backlight support (probably) 2017-07-30 00:46:08 -04:00
fffc5237a7 fix RGB 2017-07-30 00:46:08 -04:00
992a63c0f2 add xd75, preliminary RGB' 2017-07-30 00:46:08 -04:00
25659acb1c Add an Ergodox Colemak Mod-DH keymap for french layouts
[Colemak Mod-DH](https://colemakmods.github.io/mod-dh/) layout for
users keeping an `azerty` layout configuration on their OS.

The symbols layers was done after analysing various programming
languages sources codes and should be close to optimal for typing
confort.
2017-07-29 11:38:36 -04:00
07cb997b6d Changes lets_split to use timer based debouncing
The let's split code used delays in its debouncing algorithm which
increases input latency. This commit copies and adapts the code from
`quantum/matrix.c` to lets_split's `matrix.c`.
2017-07-29 11:38:00 -04:00
ac634aa455 Fixed error in readme 2017-07-28 23:41:53 -04:00
6b2a3492b7 Removed un-needed protosplit directory and updated readme 2017-07-28 10:45:34 -04:00
dcd64062d2 Reverted changes 2017-07-28 10:45:34 -04:00
4148aeee19 Figured out that I didn't need to include both keymaps in both files 2017-07-28 10:45:34 -04:00
1f78b62cd6 Hopefully compile issues are gone, and updated files 2017-07-28 10:45:34 -04:00
9f82d14eb9 Fixed all things jack suggested. 2017-07-28 10:45:34 -04:00
b710e21efb Added to blank spaces at end of protosplit to make it compile under make v2 2017-07-28 10:45:34 -04:00
9334986bd9 Updated readme to show compile rules that won't throw an error 2017-07-28 10:45:34 -04:00
f2824bca02 Fixed typo in my layout and updated 2017-07-28 10:45:34 -04:00
5023f55856 Fixed some capitalization issues 2017-07-28 10:45:34 -04:00
6d15f5a5b7 Another typo fix 2017-07-28 10:45:34 -04:00
ea1fd96c84 Fixed typo in my layout 2017-07-28 10:45:34 -04:00
1eea91f5f8 Updated my makefile..again 2017-07-28 10:45:34 -04:00
9546b180b9 Updated my makefile 2017-07-28 10:45:34 -04:00
2265e4ce41 Removed old keymaps 2017-07-28 10:45:34 -04:00
cbc5a08c40 Removed old protosplit folder 2017-07-28 10:45:34 -04:00
78f79ca6cc Removed old folder 2017-07-28 10:45:34 -04:00
f1dbf72e09 Changed case of protosplit
Also updated readme to have correct capitalization.
2017-07-28 10:45:34 -04:00
c71b60c82a Changed case of deltasplit75 to be lowercase.
To follow convention.
2017-07-28 10:45:34 -04:00
47c6d201aa Add my layout 2017-07-28 10:45:34 -04:00
f6438e42af Add files via upload 2017-07-28 10:45:34 -04:00
242c1da2c2 Delete deltasplit build guide.pdf 2017-07-28 10:45:34 -04:00
be1876aa76 Add files via upload 2017-07-28 10:45:34 -04:00
1ef6777723 Add files via upload 2017-07-28 10:45:34 -04:00
d3b6552fb7 Delete MX RIGHT B.dxf 2017-07-28 10:45:34 -04:00
ce3ea49743 Delete ALPS+MX RIGHT B.dxf 2017-07-28 10:45:34 -04:00
811c583636 Delete ALPS RIGHT B.dxf 2017-07-28 10:45:34 -04:00
173d1b7571 Delete middle layers - RIGHT B.dxf 2017-07-28 10:45:34 -04:00
98f977e95c Delete bottom layers - RIGHT B.dxf 2017-07-28 10:45:34 -04:00
1832b59266 Delete MX LEFT B.dxf 2017-07-28 10:45:34 -04:00
1bfe5b5723 Delete ALPS+MX LEFT B.dxf 2017-07-28 10:45:34 -04:00
038c12d59a Delete ALPS LEFT B.dxf 2017-07-28 10:45:34 -04:00
3d23a80c83 Delete Middle layers - LEFT B.dxf 2017-07-28 10:45:34 -04:00
f56884b253 Delete Bottom Layer - LEFT B.dxf 2017-07-28 10:45:34 -04:00
d4e695a136 Delete top bezel - blocked corner.dxf 2017-07-28 10:45:34 -04:00
2013f4fb83 Delete top bezel - Winkeyless.dxf 2017-07-28 10:45:34 -04:00
508cc7e56b Delete top bezel - Standard.dxf 2017-07-28 10:45:34 -04:00
8958a4f78b Delete PCB Dimesnsion.dxf 2017-07-28 10:45:34 -04:00
429971997c Delete MX RIGHT B.dwg 2017-07-28 10:45:34 -04:00
e898a8ecc8 Delete ALPS+MX RIGHT B.dwg 2017-07-28 10:45:34 -04:00
b6e8516d6d Delete ALPS RIGHT B.dwg 2017-07-28 10:45:34 -04:00
2077226fc2 Delete middle layers - RIGHT B.dwg 2017-07-28 10:45:34 -04:00
cfafa97227 Delete bottom layers - RIGHT B.dwg 2017-07-28 10:45:34 -04:00
3d73110795 Delete readme.md 2017-07-28 10:45:34 -04:00
727707ef0b Delete PCB Dimesnsion.dwg 2017-07-28 10:45:34 -04:00
2a3af90d9f Delete MX LEFT B.dwg 2017-07-28 10:45:34 -04:00
73e5a7fafe Delete ALPS+MX LEFT B.dwg 2017-07-28 10:45:34 -04:00
eceb2a4810 Delete ALPS LEFT B.dwg 2017-07-28 10:45:34 -04:00
b34dfeecdf Delete Middle layers - LEFT B.dwg 2017-07-28 10:45:34 -04:00
01458037de Delete Bottom Layer - LEFT B.dwg 2017-07-28 10:45:34 -04:00
461f95ce0b Update readme.md 2017-07-28 10:45:34 -04:00
f4bc404aa2 Delete top bezel - blocked corner.dwg 2017-07-28 10:45:34 -04:00
b70e68ac5b Delete top bezel - Winkeyless.dwg 2017-07-28 10:45:34 -04:00
e4d849ed95 Delete top bezel - Standard.dwg 2017-07-28 10:45:34 -04:00
4f193d6dc2 Add files via upload 2017-07-28 10:45:34 -04:00
934d35ea3f Add files via upload 2017-07-28 10:45:34 -04:00
a76a607a2b Add files via upload 2017-07-28 10:45:34 -04:00
9aec284f42 Update 2017-07-28 10:45:34 -04:00
3a0f7865da Update readme.md 2017-07-28 10:45:34 -04:00
b11d770bea Update Makefile 2017-07-28 10:45:34 -04:00
5a63aa29a9 Update readme.md 2017-07-28 10:45:34 -04:00
ab63ff8d2e Update readme.md 2017-07-28 10:45:34 -04:00
00e4079d5a Delete top bezel - blocked corner.bak 2017-07-28 10:45:34 -04:00
4d88634f07 Delete top bezel - Standard.bak 2017-07-28 10:45:34 -04:00
5ea3b1ea4d Delete PCB Dimesnsion.dwl2 2017-07-28 10:45:34 -04:00
c497a19e7b Delete PCB Dimesnsion.dwl 2017-07-28 10:45:34 -04:00
7e07bdbde3 Add files via upload 2017-07-28 10:45:34 -04:00
60e5277a8f Delete PCB Dimesnsion.dwg 2017-07-28 10:45:34 -04:00
96ec98b1ad Create readme.md 2017-07-28 10:45:34 -04:00
7a31ef8284 Add files via upload 2017-07-28 10:45:34 -04:00
0c2b0c7cc1 Update readme.md 2017-07-28 10:45:34 -04:00
42ea9460fe Update readme.md 2017-07-28 10:45:34 -04:00
e9daf0606f Update readme.md 2017-07-28 10:45:34 -04:00
be2c7aac31 Add files via upload 2017-07-28 10:45:34 -04:00
20b3ac49b7 deleted file 2017-07-26 12:48:13 +02:00
619081559b added my amj40 custom layout 2017-07-26 12:47:40 +02:00
4a1f701d9f included amj40 implementation of nhou7 from https://github.com/nhou7/qmk_firmware_amj40 2017-07-26 12:46:04 +02:00
de9331c50c custom makefile 2017-07-26 12:19:13 +02:00
3b05183deb symmetric modifiers in bottom row 2017-07-26 12:18:40 +02:00
75677655ad left shift is backspace on tap 2017-07-26 11:11:13 +02:00
c7ea65c6d3 default based customizations 2017-07-26 11:09:29 +02:00
4ee571b257 Merge https://github.com/qmk/qmk_firmware 2017-07-25 09:48:58 +02:00
07dcbd23fd First Update 2017-07-24 15:19:31 -04:00
ee43856ff7 Merge https://github.com/qmk/qmk_firmware 2017-07-20 08:22:44 +02:00
585f140052 Invites contributions 2017-07-10 20:51:46 -04:00
ddc3d3b64b remove numbered headings 2017-07-08 22:53:43 -07:00
d90dc05ddb try swapping toc and numbered headings 2017-07-08 22:51:16 -07:00
7583136d73 try removing the anchor plugin 2017-07-08 22:44:18 -07:00
2dea401a8e play around with plugin settings 2017-07-08 22:39:32 -07:00
4c7c7747a3 Add terminal examples to doc best practices 2017-07-08 22:39:17 -07:00
5810bb67e4 Rearrange the faq a bit 2017-07-08 20:01:35 -07:00
cb9e59152e Flesh out the glossary 2017-07-08 20:01:30 -07:00
db5bb7dbbf Changed - to _ for keymap that-canadian for compatability reasons. 2017-07-04 15:41:14 -04:00
c534c3e734 Updated ECO files to follow proper formatting. Also updated that-canadian keymap to take out extraneous characters. 2017-07-04 15:26:25 -04:00
f9e8d25e2e Updated ECO readme file, includes picture of ECO now. 2017-07-04 14:19:49 -04:00
e256468e48 Added ECO keyboard folder and configuration files. Also added my (That-Canadian) keymap folder and files. 2017-07-04 14:14:26 -04:00
84a8aabe5b MORE layer 2017-07-04 18:16:45 +01:00
d5486265b8 Merge branch 'master' into ps2avrGB 2017-07-04 11:17:28 -04:00
738b072bb0 Fixed indentation and now using quantum keycodes for rgblight 2017-07-04 11:12:42 -04:00
99b6e918ea fixed brackets 2017-06-27 16:20:17 +02:00
9aa748df2a my layout 2017-06-27 10:36:00 +02:00
fe3d75922b Merge https://github.com/qmk/qmk_firmware 2017-06-27 09:22:05 +02:00
7d0a471051 removed wrong readme 2017-06-27 09:18:05 +02:00
786eb4e73d my layout 2017-06-27 09:14:04 +02:00
4c71b329a2 clone smt layout 2017-06-26 22:33:14 +02:00
60153e7bbc Always send 3 * RGBLED_NUM bytes through I2C on ps2avrGB
This wasn't going to work on boards with a different number of LEDs,
since I was always sending 48 bytes.
2017-06-11 12:30:48 -04:00
945f2f5916 Fixed rgblight_types.h 2017-06-11 12:30:48 -04:00
d4cd5dda5c Added a build flag for using a custom rgblight driver 2017-06-11 12:30:48 -04:00
964d7060e1 Simplified ps2avrGB rgblight_set logic a bit 2017-06-11 12:30:48 -04:00
6037cede2c rgblight support for ps2avrGB 2017-06-11 12:30:48 -04:00
1654 changed files with 54513 additions and 7518 deletions

15
.gitignore vendored
View File

@ -24,6 +24,9 @@ CMakeLists.txt
.DS_STORE
/util/wsl_downloaded
/util/win_downloaded
/keyboards/*/Makefile
/keyboards/*/*/Makefile
/keyboards/*/keymaps/Makefile
# Eclipse/PyCharm/Other IDE Settings
.cproject
@ -36,9 +39,19 @@ util/Win_Check_Output.txt
# Let these ones be user specific, since we have so many different configurations
.vscode/launch.json
.vscode/tasks.json
.vscode/last.sql
.vscode/temp.sql
.stfolder
# ignore image files
*.png
*.jpg
*.gif
*.gif
# Do not ignore MiniDox left/right hand eeprom files
!keyboards/minidox/*.eep
# things travis sees
secrets.tar
id_rsa_*
/.vs

View File

@ -11,14 +11,14 @@ env:
global:
- secure: vBTSL34BDPxDilKUuTXqU4CJ26Pv5hogD2nghatkxSQkI1/jbdnLj/DQdPUrMJFDIY6TK3AltsBx72MaMsLQ1JO/Ou24IeHINHXzUC1FlS9yQa48cpxnhX5kzXNyGs3oa0qaFbvnr7RgYRWtmD52n4bIZuSuW+xpBv05x2OCizdT2ZonH33nATaHGFasxROm4qYZ241VfzcUv766V6RVHgL4x9V08warugs+RENVkfzxxwhk3NmkrISabze0gSVJLHBPHxroZC6EUcf/ocobcuDrCwFqtEt90i7pNIAFUE7gZsN2uE75LmpzAWin21G7lLPcPL2k4FJVd8an1HiP2WmscJU6U89fOfMb2viObnKcCzebozBCmKGtHEuXZo9FcReOx49AnQSpmESJGs+q2dL/FApkTjQiyT4J6O5dJpoww0/r57Wx0cmmqjETKBb5rSgXM51Etk3wO09mvcPHsEwrT7qH8r9XWdyCDoEn7FCLX3/LYnf/D4SmZ633YPl5gv3v9XEwxR5+04akjgnvWDSNIaDbWBdxHNb7l4pMc+WR1bwCyMyA7KXj0RrftEGOrm9ZRLe6BkbT4cycA+j77nbPOMcyZChliV9pPQos+4TOJoTzcK2L8yWVoY409aDNVuAjdP6Yum0R2maBGl/etLmIMpJC35C5/lZ+dUNjJAM=
before_install:
- wget http://www.atmel.com/images/avr8-gnu-toolchain-3.5.4.1709-linux.any.x86_64.tar.gz
- wget http://www.atmel.com/images/avr8-gnu-toolchain-3.5.4.1709-linux.any.x86_64.tar.gz || wget http://qmk.fm/avr8-gnu-toolchain-3.5.4.1709-linux.any.x86_64.tar.gz
install:
- tar -zxf avr8-gnu-toolchain-3.5.4.1709-linux.any.x86_64.tar.gz
- export PATH="$PATH:$TRAVIS_BUILD_DIR/avr8-gnu-toolchain-linux_x86_64/bin"
before_script:
- avr-gcc --version
script:
- make test AUTOGEN=false
- make test:all AUTOGEN=false
- bash util/travis_build.sh
addons:
apt:
@ -29,6 +29,7 @@ addons:
- binutils-arm-none-eabi
- libnewlib-arm-none-eabi
- diffutils
- dos2unix
after_success:
bash util/travis_compiled_push.sh
notifications:

View File

@ -1,5 +1,7 @@
// Place your settings in this file to overwrite default and user settings.
{
// Unofficially, QMK uses spaces for indentation
"editor.insertSpaces": true,
// Configure glob patterns for excluding files and folders.
"files.exclude": {
"**/.build": true,

View File

@ -25,4 +25,4 @@ ENV keymap=default
VOLUME /qmk
WORKDIR /qmk
CMD make clean; make;
CMD make clean ; make keyboard=${keyboard} subproject=${subproject} keymap=${keymap}

365
Makefile

File diff suppressed because it is too large Load Diff

1
autocomplete.sh Normal file

File diff suppressed because one or more lines are too long

View File

@ -3,15 +3,13 @@
"summary": "_summary.md"
},
"plugins" : [
"anchors",
"edit-link",
"forkmegithub",
"git-author",
"hints",
"numbered-headings",
"page-toc",
"terminal",
"toolbar"
"toolbar",
"bulk-redirect"
],
"pluginsConfig": {
"edit-link": {
@ -25,6 +23,11 @@
"page-toc": {
"selector": ".markdown-section h1, .markdown-section h2"
},
"terminal": {
"copyButtons": true,
"fade": false,
"style": "flat"
},
"toolbar": {
"buttons": [
{
@ -33,6 +36,10 @@
"url": "https://github.com/qmk/qmk_firmware"
}
]
},
"bulk-redirect": {
"basepath": "/",
"redirectsFile": "docs/redirects.json"
}
},
"root": "./docs/"

View File

@ -6,18 +6,26 @@ endif
include common.mk
ifneq ($(SUBPROJECT),)
TARGET ?= $(KEYBOARD)_$(SUBPROJECT)_$(KEYMAP)
KEYBOARD_OUTPUT := $(BUILD_DIR)/obj_$(KEYBOARD)_$(SUBPROJECT)
else
TARGET ?= $(KEYBOARD)_$(KEYMAP)
KEYBOARD_OUTPUT := $(BUILD_DIR)/obj_$(KEYBOARD)
endif
# 5/4/3/2/1
KEYBOARD_FOLDER_PATH_1 := $(KEYBOARD)
KEYBOARD_FOLDER_PATH_2 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_1)))
KEYBOARD_FOLDER_PATH_3 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_2)))
KEYBOARD_FOLDER_PATH_4 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_3)))
KEYBOARD_FOLDER_PATH_5 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_4)))
KEYBOARD_FOLDER_1 := $(notdir $(KEYBOARD_FOLDER_PATH_1))
KEYBOARD_FOLDER_2 := $(notdir $(KEYBOARD_FOLDER_PATH_2))
KEYBOARD_FOLDER_3 := $(notdir $(KEYBOARD_FOLDER_PATH_3))
KEYBOARD_FOLDER_4 := $(notdir $(KEYBOARD_FOLDER_PATH_4))
KEYBOARD_FOLDER_5 := $(notdir $(KEYBOARD_FOLDER_PATH_5))
KEYBOARD_FILESAFE := $(subst /,_,$(KEYBOARD))
TARGET ?= $(KEYBOARD_FILESAFE)_$(KEYMAP)
KEYBOARD_OUTPUT := $(BUILD_DIR)/obj_$(KEYBOARD_FILESAFE)
# Force expansion
TARGET := $(TARGET)
MASTER ?= left
ifdef master
MASTER = $(master)
@ -31,27 +39,62 @@ $(error MASTER does not have a valid value(left/right))
endif
endif
KEYBOARD_PATH := keyboards/$(KEYBOARD)
KEYBOARD_C := $(KEYBOARD_PATH)/$(KEYBOARD).c
KEYBOARD_PATHS :=
ifneq ("$(wildcard $(KEYBOARD_C))","")
include $(KEYBOARD_PATH)/rules.mk
else
$(error "$(KEYBOARD_C)" does not exist)
KEYBOARD_PATH_1 := keyboards/$(KEYBOARD_FOLDER_PATH_1)
KEYBOARD_PATH_2 := keyboards/$(KEYBOARD_FOLDER_PATH_2)
KEYBOARD_PATH_3 := keyboards/$(KEYBOARD_FOLDER_PATH_3)
KEYBOARD_PATH_4 := keyboards/$(KEYBOARD_FOLDER_PATH_4)
KEYBOARD_PATH_5 := keyboards/$(KEYBOARD_FOLDER_PATH_5)
ifneq ("$(wildcard $(KEYBOARD_PATH_5)/rules.mk)","")
KEYBOARD_PATHS += $(KEYBOARD_PATH_5)
include $(KEYBOARD_PATH_5)/rules.mk
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_4)/rules.mk)","")
KEYBOARD_PATHS += $(KEYBOARD_PATH_4)
include $(KEYBOARD_PATH_4)/rules.mk
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_3)/rules.mk)","")
KEYBOARD_PATHS += $(KEYBOARD_PATH_3)
include $(KEYBOARD_PATH_3)/rules.mk
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_2)/rules.mk)","")
KEYBOARD_PATHS += $(KEYBOARD_PATH_2)
include $(KEYBOARD_PATH_2)/rules.mk
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_1)/rules.mk)","")
KEYBOARD_PATHS += $(KEYBOARD_PATH_1)
include $(KEYBOARD_PATH_1)/rules.mk
endif
ifneq ($(SUBPROJECT),)
SUBPROJECT_PATH := keyboards/$(KEYBOARD)/$(SUBPROJECT)
SUBPROJECT_C := $(SUBPROJECT_PATH)/$(SUBPROJECT).c
ifneq ("$(wildcard $(SUBPROJECT_C))","")
OPT_DEFS += -DSUBPROJECT_$(SUBPROJECT)
include $(SUBPROJECT_PATH)/rules.mk
else
$(error "$(SUBPROJECT_PATH)/$(SUBPROJECT).c" does not exist)
endif
KEYBOARD_SRC :=
KEYBOARD_C_1 := $(KEYBOARD_PATH_1)/$(KEYBOARD_FOLDER_1).c
KEYBOARD_C_2 := $(KEYBOARD_PATH_2)/$(KEYBOARD_FOLDER_2).c
KEYBOARD_C_3 := $(KEYBOARD_PATH_3)/$(KEYBOARD_FOLDER_3).c
KEYBOARD_C_4 := $(KEYBOARD_PATH_4)/$(KEYBOARD_FOLDER_4).c
KEYBOARD_C_5 := $(KEYBOARD_PATH_5)/$(KEYBOARD_FOLDER_5).c
ifneq ("$(wildcard $(KEYBOARD_C_5))","")
KEYBOARD_SRC += $(KEYBOARD_C_5)
endif
ifneq ("$(wildcard $(KEYBOARD_C_4))","")
KEYBOARD_SRC += $(KEYBOARD_C_4)
endif
ifneq ("$(wildcard $(KEYBOARD_C_3))","")
KEYBOARD_SRC += $(KEYBOARD_C_3)
endif
ifneq ("$(wildcard $(KEYBOARD_C_2))","")
KEYBOARD_SRC += $(KEYBOARD_C_2)
endif
ifneq ("$(wildcard $(KEYBOARD_C_1))","")
KEYBOARD_SRC += $(KEYBOARD_C_1)
endif
# We can assume a ChibiOS target When MCU_FAMILY is defined, since it's not used for LUFA
OPT_DEFS += -DKEYBOARD_$(KEYBOARD_FILESAFE)
# We can assume a ChibiOS target When MCU_FAMILY is defined , since it's not used for LUFA
ifdef MCU_FAMILY
PLATFORM=CHIBIOS
else
@ -62,74 +105,104 @@ ifeq ($(PLATFORM),CHIBIOS)
include $(TMK_PATH)/protocol/chibios.mk
include $(TMK_PATH)/chibios.mk
OPT_OS = chibios
ifneq ("$(wildcard $(SUBPROJECT_PATH)/bootloader_defs.h)","")
OPT_DEFS += -include $(SUBPROJECT_PATH)/bootloader_defs.h
else ifneq ("$(wildcard $(SUBPROJECT_PATH)/boards/$(BOARD)/bootloader_defs.h)","")
OPT_DEFS += -include $(SUBPROJECT_PATH)/boards/$(BOARD)/bootloader_defs.h
else ifneq ("$(wildcard $(KEYBOARD_PATH)/bootloader_defs.h)","")
OPT_DEFS += -include $(KEYBOARD_PATH)/bootloader_defs.h
else ifneq ("$(wildcard $(KEYBOARD_PATH)/boards/$(BOARD)/bootloader_defs.h)","")
OPT_DEFS += -include $(KEYBOARD_PATH)/boards/$(BOARD)/bootloader_defs.h
ifneq ("$(wildcard $(KEYBOARD_PATH_5)/bootloader_defs.h)","")
OPT_DEFS += -include $(KEYBOARD_PATH_5)/bootloader_defs.h
else ifneq ("$(wildcard $(KEYBOARD_PATH_5)/boards/$(BOARD)/bootloader_defs.h)","")
OPT_DEFS += -include $(KEYBOARD_PATH_5)/boards/$(BOARD)/bootloader_defs.h
else ifneq ("$(wildcard $(KEYBOARD_PATH_4)/bootloader_defs.h)","")
OPT_DEFS += -include $(KEYBOARD_PATH_4)/bootloader_defs.h
else ifneq ("$(wildcard $(KEYBOARD_PATH_4)/boards/$(BOARD)/bootloader_defs.h)","")
OPT_DEFS += -include $(KEYBOARD_PATH_4)/boards/$(BOARD)/bootloader_defs.h
else ifneq ("$(wildcard $(KEYBOARD_PATH_3)/bootloader_defs.h)","")
OPT_DEFS += -include $(KEYBOARD_PATH_3)/bootloader_defs.h
else ifneq ("$(wildcard $(KEYBOARD_PATH_3)/boards/$(BOARD)/bootloader_defs.h)","")
OPT_DEFS += -include $(KEYBOARD_PATH_3)/boards/$(BOARD)/bootloader_defs.h
else ifneq ("$(wildcard $(KEYBOARD_PATH_2)/bootloader_defs.h)","")
OPT_DEFS += -include $(KEYBOARD_PATH_2)/bootloader_defs.h
else ifneq ("$(wildcard $(KEYBOARD_PATH_2)/boards/$(BOARD)/bootloader_defs.h)","")
OPT_DEFS += -include $(KEYBOARD_PATH_2)/boards/$(BOARD)/bootloader_defs.h
else ifneq ("$(wildcard $(KEYBOARD_PATH_1)/bootloader_defs.h)","")
OPT_DEFS += -include $(KEYBOARD_PATH_1)/bootloader_defs.h
else ifneq ("$(wildcard $(KEYBOARD_PATH_1)/boards/$(BOARD)/bootloader_defs.h)","")
OPT_DEFS += -include $(KEYBOARD_PATH_1)/boards/$(BOARD)/bootloader_defs.h
endif
endif
CONFIG_H = $(KEYBOARD_PATH)/config.h
ifneq ($(SUBPROJECT),)
ifneq ("$(wildcard $(SUBPROJECT_C))","")
CONFIG_H = $(SUBPROJECT_PATH)/config.h
endif
CONFIG_H :=
ifneq ("$(wildcard $(KEYBOARD_PATH_5)/config.h)","")
CONFIG_H += $(KEYBOARD_PATH_5)/config.h
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_4)/config.h)","")
CONFIG_H += $(KEYBOARD_PATH_4)/config.h
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_3)/config.h)","")
CONFIG_H += $(KEYBOARD_PATH_3)/config.h
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_2)/config.h)","")
CONFIG_H += $(KEYBOARD_PATH_2)/config.h
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_1)/config.h)","")
CONFIG_H += $(KEYBOARD_PATH_1)/config.h
endif
# Save the defines and includes here, so we don't include any keymap specific ones
PROJECT_DEFS := $(OPT_DEFS)
PROJECT_INC := $(VPATH) $(EXTRAINCDIRS) $(SUBPROJECT_PATH) $(KEYBOARD_PATH)
PROJECT_INC := $(VPATH) $(EXTRAINCDIRS) $(KEYBOARD_PATHS)
PROJECT_CONFIG := $(CONFIG_H)
MAIN_KEYMAP_PATH := $(KEYBOARD_PATH)/keymaps/$(KEYMAP)
MAIN_KEYMAP_C := $(MAIN_KEYMAP_PATH)/keymap.c
SUBPROJ_KEYMAP_PATH := $(SUBPROJECT_PATH)/keymaps/$(KEYMAP)
SUBPROJ_KEYMAP_C := $(SUBPROJ_KEYMAP_PATH)/keymap.c
ifneq ("$(wildcard $(SUBPROJ_KEYMAP_C))","")
-include $(SUBPROJ_KEYMAP_PATH)/Makefile
KEYMAP_C := $(SUBPROJ_KEYMAP_C)
KEYMAP_PATH := $(SUBPROJ_KEYMAP_PATH)
else ifneq ("$(wildcard $(MAIN_KEYMAP_C))","")
-include $(MAIN_KEYMAP_PATH)/Makefile
KEYMAP_C := $(MAIN_KEYMAP_C)
KEYMAP_PATH := $(MAIN_KEYMAP_PATH)
else
$(error "$(MAIN_KEYMAP_C)/keymap.c" does not exist)
endif
MAIN_KEYMAP_PATH_1 := $(KEYBOARD_PATH_1)/keymaps/$(KEYMAP)
MAIN_KEYMAP_PATH_2 := $(KEYBOARD_PATH_2)/keymaps/$(KEYMAP)
MAIN_KEYMAP_PATH_3 := $(KEYBOARD_PATH_3)/keymaps/$(KEYMAP)
MAIN_KEYMAP_PATH_4 := $(KEYBOARD_PATH_4)/keymaps/$(KEYMAP)
MAIN_KEYMAP_PATH_5 := $(KEYBOARD_PATH_5)/keymaps/$(KEYMAP)
ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_5)/keymap.c)","")
-include $(MAIN_KEYMAP_PATH_5)/rules.mk
KEYMAP_C := $(MAIN_KEYMAP_PATH_5)/keymap.c
KEYMAP_PATH := $(MAIN_KEYMAP_PATH_5)
else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_4)/keymap.c)","")
-include $(MAIN_KEYMAP_PATH_4)/rules.mk
KEYMAP_C := $(MAIN_KEYMAP_PATH_4)/keymap.c
KEYMAP_PATH := $(MAIN_KEYMAP_PATH_4)
else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_3)/keymap.c)","")
-include $(MAIN_KEYMAP_PATH_3)/rules.mk
KEYMAP_C := $(MAIN_KEYMAP_PATH_3)/keymap.c
KEYMAP_PATH := $(MAIN_KEYMAP_PATH_3)
else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_2)/keymap.c)","")
-include $(MAIN_KEYMAP_PATH_2)/rules.mk
KEYMAP_C := $(MAIN_KEYMAP_PATH_2)/keymap.c
KEYMAP_PATH := $(MAIN_KEYMAP_PATH_2)
else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_1)/keymap.c)","")
-include $(MAIN_KEYMAP_PATH_1)/rules.mk
KEYMAP_C := $(MAIN_KEYMAP_PATH_1)/keymap.c
KEYMAP_PATH := $(MAIN_KEYMAP_PATH_1)
else ifneq ($(LAYOUTS),)
include build_layout.mk
else
$(error Could not find keymap)
# this state should never be reached
endif
# Object files directory
# To put object files in current directory, use a dot (.), do NOT make
# this an empty or blank macro!
KEYMAP_OUTPUT := $(BUILD_DIR)/obj_$(TARGET)
ifneq ("$(wildcard $(KEYMAP_PATH)/config.h)","")
CONFIG_H = $(KEYMAP_PATH)/config.h
CONFIG_H += $(KEYMAP_PATH)/config.h
endif
# # project specific files
SRC += $(KEYBOARD_C) \
SRC += $(KEYBOARD_SRC) \
$(KEYMAP_C) \
$(QUANTUM_SRC)
ifneq ($(SUBPROJECT),)
SRC += $(SUBPROJECT_C)
endif
# Optimize size but this may cause error "relocation truncated to fit"
#EXTRALDFLAGS = -Wl,--relax
# Search Path
VPATH += $(KEYMAP_PATH)
ifneq ($(SUBPROJECT),)
VPATH += $(SUBPROJECT_PATH)
endif
VPATH += $(KEYBOARD_PATH)
VPATH += $(KEYBOARD_PATHS)
VPATH += $(COMMON_VPATH)
include common_features.mk
@ -157,13 +230,16 @@ endif
OUTPUTS := $(KEYMAP_OUTPUT) $(KEYBOARD_OUTPUT)
$(KEYMAP_OUTPUT)_SRC := $(SRC)
$(KEYMAP_OUTPUT)_DEFS := $(OPT_DEFS) $(GFXDEFS) -DQMK_KEYBOARD=\"$(KEYBOARD)\" -DQMK_KEYMAP=\"$(KEYMAP)\"
$(KEYMAP_OUTPUT)_DEFS := $(OPT_DEFS) $(GFXDEFS) \
-DQMK_KEYBOARD=\"$(KEYBOARD)\" -DQMK_KEYBOARD_H=\"$(KEYBOARD_FOLDER_1).h\" -DQMK_KEYBOARD_CONFIG_H=\"$(KEYBOARD_PATH_1)/config.h\" \
-DQMK_KEYMAP=\"$(KEYMAP)\" -DQMK_KEYMAP_H=\"$(KEYMAP).h\" -DQMK_KEYMAP_CONFIG_H=\"$(KEYMAP_PATH)/config.h\" \
-DQMK_SUBPROJECT -DQMK_SUBPROJECT_H -DQMK_SUBPROJECT_CONFIG_H
$(KEYMAP_OUTPUT)_INC := $(VPATH) $(EXTRAINCDIRS)
$(KEYMAP_OUTPUT)_CONFIG := $(CONFIG_H)
$(KEYBOARD_OUTPUT)_SRC := $(CHIBISRC) $(GFXSRC)
$(KEYBOARD_OUTPUT)_DEFS := $(PROJECT_DEFS) $(GFXDEFS)
$(KEYBOARD_OUTPUT)_INC := $(PROJECT_INC) $(GFXINC)
$(KEYBOARD_OUTPUT)_CONFIG := $(PROJECT_CONFIG)
$(KEYBOARD_OUTPUT)_CONFIG := $(PROJECT_CONFIG)
# Default target.
all: build sizeafter
@ -175,4 +251,3 @@ build: elf hex
include $(TMK_PATH)/rules.mk

18
build_layout.mk Normal file
View File

@ -0,0 +1,18 @@
LAYOUTS_PATH := layouts
LAYOUTS_REPOS := $(patsubst %/,%,$(sort $(dir $(wildcard $(LAYOUTS_PATH)/*/))))
define SEARCH_LAYOUTS_REPO
LAYOUT_KEYMAP_PATH := $$(LAYOUTS_REPO)/$$(LAYOUT)/$$(KEYMAP)
LAYOUT_KEYMAP_C := $$(LAYOUT_KEYMAP_PATH)/keymap.c
ifneq ("$$(wildcard $$(LAYOUT_KEYMAP_C))","")
-include $$(LAYOUT_KEYMAP_PATH)/rules.mk
KEYMAP_C := $$(LAYOUT_KEYMAP_C)
KEYMAP_PATH := $$(LAYOUT_KEYMAP_PATH)
endif
endef
define SEARCH_LAYOUTS
$$(foreach LAYOUTS_REPO,$$(LAYOUTS_REPOS),$$(eval $$(call SEARCH_LAYOUTS_REPO)))
endef
$(foreach LAYOUT,$(LAYOUTS),$(eval $(call SEARCH_LAYOUTS)))

View File

@ -69,6 +69,10 @@ ifeq ($(strip $(FAUXCLICKY_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/fauxclicky.c
endif
ifeq ($(strip $(POINTING_DEVICE_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/pointing_device.c
endif
ifeq ($(strip $(UCIS_ENABLE)), yes)
OPT_DEFS += -DUCIS_ENABLE
UNICODE_COMMON = yes
@ -93,10 +97,14 @@ endif
ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
OPT_DEFS += -DRGBLIGHT_ENABLE
SRC += ws2812.c
SRC += $(QUANTUM_DIR)/rgblight.c
CIE1931_CURVE = yes
LED_BREATHING_TABLE = yes
ifeq ($(strip $(RGBLIGHT_CUSTOM_DRIVER)), yes)
OPT_DEFS += -DRGBLIGHT_CUSTOM_DRIVER
else
SRC += ws2812.c
endif
endif
ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
@ -104,12 +112,22 @@ ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/process_keycode/process_tap_dance.c
endif
ifeq ($(strip $(KEY_LOCK_ENABLE)), yes)
OPT_DEFS += -DKEY_LOCK_ENABLE
SRC += $(QUANTUM_DIR)/process_keycode/process_key_lock.c
endif
ifeq ($(strip $(PRINTING_ENABLE)), yes)
OPT_DEFS += -DPRINTING_ENABLE
SRC += $(QUANTUM_DIR)/process_keycode/process_printer.c
SRC += $(TMK_DIR)/protocol/serial_uart.c
endif
ifeq ($(strip $(AUTO_SHIFT_ENABLE)), yes)
OPT_DEFS += -DAUTO_SHIFT_ENABLE
SRC += $(QUANTUM_DIR)/process_keycode/process_auto_shift.c
endif
ifeq ($(strip $(SERIAL_LINK_ENABLE)), yes)
SRC += $(patsubst $(QUANTUM_PATH)/%,%,$(SERIAL_SRC))
OPT_DEFS += $(SERIAL_DEFS)
@ -148,6 +166,15 @@ ifeq ($(strip $(LED_TABLES)), yes)
SRC += $(QUANTUM_DIR)/led_tables.c
endif
ifeq ($(strip $(TERMINAL_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/process_keycode/process_terminal.c
OPT_DEFS += -DTERMINAL_ENABLE
endif
ifeq ($(strip $(USB_HID_ENABLE)), yes)
include $(TMK_DIR)/protocol/usb_hid.mk
endif
QUANTUM_SRC:= \
$(QUANTUM_DIR)/quantum.c \
$(QUANTUM_DIR)/keymap_common.c \
@ -156,4 +183,4 @@ QUANTUM_SRC:= \
ifndef CUSTOM_MATRIX
QUANTUM_SRC += $(QUANTUM_DIR)/matrix.c
endif
endif

View File

@ -12,14 +12,14 @@ Otherwise, you can either download it directly ([zip](https://github.com/qmk/qmk
## How to compile {#how-to-compile}
Before you are able to compile, you'll need to [install an environment](build_environment_setup.md) for AVR or/and ARM development. Once that is complete, you'll use the `make` command to build a keyboard and keymap with the following notation:
Before you are able to compile, you'll need to [install an environment](getting_started_build_tools.md) for AVR or/and ARM development. Once that is complete, you'll use the `make` command to build a keyboard and keymap with the following notation:
make planck-rev4-default
make planck/rev4:default
This would build the `rev4` revision of the `planck` with the `default` keymap. Not all keyboards have revisions (also called subprojects), in which case, it can be omitted:
This would build the `rev4` revision of the `planck` with the `default` keymap. Not all keyboards have revisions (also called subprojects or folders), in which case, it can be omitted:
make preonic-default
make preonic:default
## How to customize {#how-to-customize}
QMK has lots of [features](features/README.md) to explore, and a good deal of [reference documentation](reference/README.md) to dig through. Most features are taken advantage of by modifying your [keymap](keymap.md), and changing the [keycodes](keycodes.md).
QMK has lots of [features](features.md) to explore, and a good deal of [reference documentation](http://docs.qmk.fm) to dig through. Most features are taken advantage of by modifying your [keymap](keymap.md), and changing the [keycodes](keycodes.md).

View File

@ -1,46 +1,71 @@
* [Getting started](README.md)
* [QMK Overview](qmk_overview.md)
* [Build Environment Setup](build_environment_setup.md)
* [Vagrant Guide](vagrant_guide.md)
* [Make instructions](make_instructions.md)
* [FAQ: Creating a Keymap](faq_keymap.md)
* [FAQ: Compiling QMK](faq_build.md)
* [How to Github](how_to_github.md)
* [QMK Introduction](getting_started_introduction.md)
* [Install Build Tools](getting_started_build_tools.md)
* Alternative: [Vagrant Guide](getting_started_vagrant_guide.md)
* [Build/Compile instructions](getting_started_make_guide.md)
* [Contributing to QMK](contributing.md)
* [How to Use Github](getting_started_github.md)
* [FAQ](faq.md)
* [General FAQ](faq_general.md)
* [Build/Compile QMK](faq_build.md)
* [Debugging/Troubleshooting QMK](faq_debug.md)
* [Keymap](faq_keymap.md)
* [Features](features.md)
* [Layer switching](key_functions.md)
* [Leader Key](leader_key.md)
* [Macros](macros.md)
* [Layouts](feature_layouts.md)
* [Common Shortcuts](feature_common_shortcuts.md)
* [Backlight](feature_backlight.md)
* [Bootmagic](feature_bootmagic.md)
* [Dynamic Macros](dynamic_macros.md)
* [Key Lock](key_lock.md)
* [Leader Key](feature_leader_key.md)
* [Macros](macros.md)
* [Mouse keys](mouse_keys.md)
* [Pointing Device](feature_pointing_device.md)
* [PS2 Mouse](feature_ps2_mouse.md)
* [Space Cadet](space_cadet_shift.md)
* [Tap Dance](tap_dance.md)
* [Mouse keys](mouse_keys.md)
* [Unicode](unicode.md)
* [Audio](feature_audio.md)
* [Thermal Printer](feature_thermal_printer.md)
* [Stenography](stenography.md)
* [Unicode](unicode.md)
* [Terminal](feature_terminal.md)
* Reference
* [Glossary](glossary.md)
* [Keymap overview](keymap.md)
* [Keycodes](keycodes.md)
* [Basic Keycodes](basic_keycodes.md)
* [Quantum Keycodes](quantum_keycodes.md)
* [Basic](keycodes_basic.md)
* [Quantum](quantum_keycodes.md)
* [Backlight](feature_backlight.md#backlight-keycodes)
* [Bluetooth](feature_bluetooth.md#bluetooth-keycodes)
* [Bootmagic](feature_bootmagic.md#bootmagic-keycodes)
* [Layer Switching](feature_common_shortcuts.md#switching-and-toggling-layers)
* [Mod+Key](feature_common_shortcuts.md#modifier-keys)
* [Mod Tap](feature_common_shortcuts.md#mod-tap)
* [One Shot Keys](feature_common_shortcuts.md#one-shot-keys)
* [Shifted Keys](feature_common_shortcuts.md#shifted-keycodes)
* [Stenography](stenography.md#keycode-reference)
* [RGB Light](feature_rgblight.md#rgblight-keycodes)
* [Thermal Printer](feature_thermal_printer.md#thermal-printer-keycodes)
* [US ANSI Shifted Keys](keycodes_us_ansi_shifted.md)
* [The `config.h` File](config_options.md)
* [Customizing Functionality](custom_quantum_functions.md)
* [Documentation Best Practices](documentation_best_practices.md)
* [Documentation Templates](documentation_templates.md)
* [Unit Testing](unit_testing.md)
* For Makers and Modders
* [Adding a keyboard to QMK](adding_a_keyboard_to_qmk.md)
* [Adding features to QMK](adding_features_to_qmk.md)
* [Hand Wiring Guide](hand_wiring.md)
* [ISP flashing guide](isp_flashing_guide.md)
* [Modding your keyboard](modding_your_keyboard.md)
* [Porting your keyboard to QMK](porting_your_keyboard_to_qmk.md)
* For a Deeper Understanding
* [How Keyboards Work](basic_how_keyboards_work.md)
* [How Keyboards Work](how_keyboards_work.md)
* [Understanding QMK](understanding_qmk.md)
* Other Topics
* [General FAQ](faq.md)
* [Using Eclipse with QMK](eclipse.md)

View File

@ -4,7 +4,7 @@ We welcome all keyboard projects into QMK, but ask that you try to stick to a co
## Naming your directory/project
All names should be lowercase alphanumeric, and separated by an underscore (`_`), but not begin with one. Dashes (`-`) aren't allow by our build system, and will confuse it with keymaps/subprojects. Your directory and your `.h` and `.c` files should have exactly the same name. Subprojects/revision should follow the same format.
All names should be lowercase alphanumeric, and separated by an underscore (`_`), but not begin with one. Your directory and your `.h` and `.c` files should have exactly the same name. All folders should follow the same format.
## `readme.md`
@ -26,7 +26,7 @@ When developing your keyboard, keep in mind that all warnings will be treated as
## Licenses
If you're adapting your keyboard's setup from another project, but not using the same code, but sure to update the copyright header at the top of the files to show your name, it this format:
If you're adapting your keyboard's setup from another project, but not using the same code, but sure to update the copyright header at the top of the files to show your name, in this format:
Copyright 2017 Your Name <your@email.com>

View File

@ -1,16 +0,0 @@
# How To Add Features To QMK
If you have an idea for a custom feature or extra hardware connection, we'd love to accept it into QMK!
Before you put a lot of work into building your new feature you should make sure you are implementing it in the best way. You can get a basic understanding of QMK by reading [Understaning QMK](understanding_qmk.html), which will take you on a tour of the QMK program flow. From here you should talk to us to get a sense of the best way to implement your idea. There are two main ways to do this:
* [Chat on Gitter](https://gitter.im/qmk/qmk_firmware)
* [Open an Issue](https://github.com/qmk/qmk_firmware/issues/new)
Once you have implemented your new feature you will generally submit a [pull request](https://github.com/qmk/qmk_firmware/pulls). Here are some things to keep in mind when creating one:
* **Disabled by default** - memory is a pretty limited on most chips QMK supports, and it's important that current keymaps aren't broken, so please allow your feature to be turned **on**, rather than being turned off. If you think it should be on by default, or reduces the size of the code, please talk with us about it.
* **Compile locally before submitting** - hopefully this one is obvious, but things need to compile! Our Travis system will catch any issues, but it's generally faster for you to compile a few keyboards locally instead of waiting for the results to come back.
* **Consider subprojects and different chip-bases** - there are several keyboards that have subprojects that have allow for slightly different configurations, and even different chip-bases. Try to make a feature supported in ARM and AVR, or automatically disabled in one that doesn't work.
* **Explain your feature** - Document it in `docs/`, either as a new file or as part of an existing file. If you don't document it other people won't be able to benefit from your hard work.
* **Don't refactor code** - to maintain a clear vision of how things are laid out in QMK, we try to plan out refactors in-depth, and have a collaborator make the changes. If you have an idea for refactoring, or suggestions, [open an issue](https://github.com/qmk/qmk_firmware/issues).

View File

@ -12,29 +12,25 @@ This is a c header file that is one of the first things included, and will persi
// config options
#ifdef SUBPROJECT_<subproject>
#include "<subproject>/config.h"
#endif
#endif
```
This file contains config options that should apply to the whole keyboard, and won't change in subprojects, or most keymaps. The suproject block here only applies to keyboards with subprojects.
This file contains config options that should apply to the whole keyboard, and won't change in revisions, or most keymaps. The revision block here only applies to keyboards with revisions.
## Subproject
## Revisions
```c
#ifndef <subproject>_CONFIG_H
#define <subproject>_CONFIG_H
#ifndef <revision>_CONFIG_H
#define <revision>_CONFIG_H
#include "../config.h"
#include "config_common.h"
// config options
#endif
```
For keyboards that have subprojects, this file contains config options that should apply to only that subproject, and won't change in most keymaps.
For keyboards that have revisions, this file contains config options that should apply to only that revisions, and won't change in most keymaps.
## Keymap
@ -42,7 +38,7 @@ For keyboards that have subprojects, this file contains config options that shou
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
#include "../../config.h"
#include "config_common.h"
// config options

147
docs/contributing.md Normal file
View File

@ -0,0 +1,147 @@
# How To Contribute
👍🎉 First off, thanks for taking the time to read this and contribute! 🎉👍
Third-party contributions help us grow and improve QMK. We want to make the pull request and contribution process useful and easy for both contributors and maintainers. To this end we've put together some guidelines for contributors to help your pull request be accepted without major changes.
* [Project Overview](#project-overview)
* [Coding Conventions](#coding-conventions)
* [General Guidelines](#general-guidelines)
* [What does the Code of Conduct mean for me?](#what-does-the-code-of-conduct-mean-for-me)
## I Don't Want To Read This Whole Thing I Just Have a Question!
If you'd like to ask questions about QMK you can do so on the [OLKB Subreddit](https://reddit.com/r/olkb) or on [Gitter](https://gitter.im/qmk/qmk_firmware).
Please keep these things in mind:
* It may take several hours for someone to respond to your question. Please be patient!
* Everyone involved with QMK is donating their time and energy. We don't get paid to work on or answer questions about QMK.
* Try to ask your question so it's as easy to answer as possible. If you're not sure how to do that these are some good guides:
* https://opensource.com/life/16/10/how-ask-technical-questions
* http://www.catb.org/esr/faqs/smart-questions.html
# Project Overview
QMK is largely written in C, with specific features and parts written in C++. It targets embedded processors found in keyboards, particularly AVR ([LUFA](http://www.fourwalledcubicle.com/LUFA.php)) and ARM ([ChibiOS](http://www.chibios.com)). If you are already well versed in Arduino programming you'll find a lot of the concepts and limitations familiar. Prior experience with Arduino is not required to successfully contribute to QMK.
<!-- FIXME: We should include a list of resources for learning C here. -->
# Where can I go for help?
If you need help you can [open an issue](https://github.com/qmk/qmk_firmware/issues) or [chat on gitter](http://gitter.im/QMK/qmk_firmware).
# How Do I Make a Contribution?
Never made an open source contribution before? Wondering how contributions work in QMK? Here's a quick rundown!
0. Sign up for a [GitHub](https://github.com) account.
1. Put together a keymap to contribute, [find an issue](https://github.com/qmk/qmk_firmware/issues) you are interested in addressing, or [a feature](https://github.com/qmk/qmk_firmware/issues?q=is%3Aopen+is%3Aissue+label%3Afeature) you would like to add.
2. Fork the repository associated with the issue to your GitHub account. This means that you will have a copy of the repository under `your-GitHub-username/qmk_firmware`.
3. Clone the repository to your local machine using `git clone https://github.com/github-username/repository-name.git`.
4. If you're working on a new feature consider opening an issue to talk with us about the work you're about to undertake.
5. Create a new branch for your fix using `git checkout -b branch-name-here`.
6. Make the appropriate changes for the issue you are trying to address or the feature that you want to add.
7. Use `git add insert-paths-of-changed-files-here` to add the file contents of the changed files to the "snapshot" git uses to manage the state of the project, also known as the index.
8. Use `git commit -m "Insert a short message of the changes made here"` to store the contents of the index with a descriptive message.
9. Push the changes to your repository on GitHub using `git push origin branch-name-here`.
10. Submit a pull request to [QMK Firmware](https://github.com/qmk/qmk_firmware/pull/new/master).
11. Title the pull request with a short description of the changes made and the issue or bug number associated with your change. For example, you can title an issue like so "Added more log outputting to resolve #4352".
12. In the description of the pull request explain the changes that you made, any issues you think exist with the pull request you made, and any questions you have for the maintainer. It's OK if your pull request is not perfect (no pull request is), the reviewer will be able to help you fix any problems and improve it!
13. Wait for the pull request to be reviewed by a maintainer.
14. Make changes to the pull request if the reviewing maintainer recommends them.
15. Celebrate your success after your pull request is merged!
# Coding conventions
Most of our style is pretty easy to pick up on, but right now it's not entirely consistent. You should match the style of the code surrounding your change, but if that code is inconsistent or unclear use the following guidelines:
* We indent using two spaces (soft tabs)
* We use One True Brace Style
* Opening Brace: At the end of the same line as the statement that opens the block
* Closing Brace: Lined up with the first character of the statement that opens the block
* Else If: Place the closing brace at the beginning of the line and the next opening brace at the end of the same line.
* Optional Braces: Always include optional braces.
* Good: if (condition) { return false; }
* Bad: if (condition) return false;
* We use C style comments: /* */
* Think of them as a story describing the feature
* Use them liberally to explain why particular decisions were made.
* Do not write obvious comments
* If you not sure if a comment is obvious, go ahead and include it.
* In general we don't wrap lines, they can be as long as needed. If you do choose to wrap lines please do not wrap any wider than 76 columns.
# General Guidelines
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.
* 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
* Core: Make sure that `make allkb` 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:
```
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
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)!
You'll find all our documentation in the `qmk_firmware/docs` directory, or if you'd rather use a web based workflow you can click "Suggest An Edit" at the top of each page on http://docs.qmk.fm/.
## Keymaps
Most first-time QMK contributors start with their personal keymaps. We try to keep keymap standards pretty casual (keymaps, after all, reflect the personality of their creators) but we do ask that you follow these guidelines to make it easier for others to discover and learn from your keymap.
* Write a `readme.md` using [the template](https://docs.qmk.fm/documentation_templates.html#).
* All Keymap PR's are squashed, so if you care about how your commits are squashed you should do it yourself
* Do not lump features in with keymap PR's. Submit the feature first and then a second PR for the keymap.
## Keyboards
Keyboards are the raison d'être for QMK. Some keyboards are community maintained, while others are maintained by the people responsible for making a particular keyboard. The `readme.md` should tell you who maintains a particular keyboard. If you have questions relating to a particular keyboard you can [Open An Issue](https://github.com/qmk/qmk_firmware/issues) and tag the maintainer in your question.
We also ask that you follow these guidelines:
* Write a `readme.md` using [the template](https://docs.qmk.fm/documentation_templates.html#).
* Keep the number of commits reasonable or we will squash your PR
* Do not lump core features in with new keyboards. Submit the feature first and then submit a separate PR for the keyboard.
## Quantum/TMK Core
Before you put a lot of work into building your new feature you should make sure you are implementing it in the best way. You can get a basic understanding of QMK by reading [Understaning QMK](understanding_qmk.html), which will take you on a tour of the QMK program flow. From here you should talk to us to get a sense of the best way to implement your idea. There are two main ways to do this:
* [Chat on Gitter](https://gitter.im/qmk/qmk_firmware)
* [Open an Issue](https://github.com/qmk/qmk_firmware/issues/new)
Feature and Bug Fix PR's affect all keyboards. We are also in the process of restructuring QMK. For this reason it is especially important for significant changes to be discussed before implementation has happened. If you open a PR without talking to us first please be prepared to do some significant rework if your choices do not mesh well with our planned direction.
Here are some things to keep in mind when working on your feature or bug fix.
* **Disabled by default** - memory is a pretty limited on most chips QMK supports, and it's important that current keymaps aren't broken, so please allow your feature to be turned **on**, rather than being turned off. If you think it should be on by default, or reduces the size of the code, please talk with us about it.
* **Compile locally before submitting** - hopefully this one is obvious, but things need to compile! Our Travis system will catch any issues, but it's generally faster for you to compile a few keyboards locally instead of waiting for the results to come back.
* **Consider revisions and different chip-bases** - there are several keyboards that have revisions that allow for slightly different configurations, and even different chip-bases. Try to make a feature supported in ARM and AVR, or automatically disabled on platforms it doesn't work on.
* **Explain your feature** - Document it in `docs/`, either as a new file or as part of an existing file. If you don't document it other people won't be able to benefit from your hard work.
We also ask that you follow these guidelines:
* Keep the number of commits reasonable or we will squash your PR
* Do not lump keyboards or keymaps in with core changes. Submit your core changes first.
* Write [Unit Tests](http://docs.qmk.fm/unit_testing.html) for your feature
* Follow the style of the file you are editing. If the style is unclear or there are mixed styles you should conform to the [coding conventions](#coding-conventions) above.
## Refactoring
To maintain a clear vision of how things are laid out in QMK we try to plan out refactors in-depth and have a collaborator make the changes. If you have an idea for refactoring, or suggestions, [open an issue](https://github.com/qmk/qmk_firmware/issues), we'd love to talk about how QMK can be improved.
# What does the Code of Conduct mean for me?
Our Code of Conduct means that you are responsible for treating everyone on the project with respect and courtesy regardless of their identity. If you are the victim of any inappropriate behavior or comments as described in our Code of Conduct, we are here for you and will do the best to ensure that the abuser is reprimanded appropriately, per our code.

View File

@ -22,6 +22,14 @@ Your page should generally have multiple "H1" headings. Only H1 and H2 headings
You can have styled hint blocks drawn around text to draw attention to it.
```
{% hint style='info' %}
This uses `hint style='info'`
{% endhint %}
```
### Examples:
{% hint style='info' %}
This uses `hint style='info'`
{% endhint %}
@ -37,3 +45,53 @@ This uses `hint style='danger'`
{% hint style='working' %}
This uses `hint style='working'`
{% endhint %}
# Styled Terminal Blocks
You can present styled terminal blocks by including special tokens inside your text block.
```
\`\`\`
**[terminal]
**[prompt foo@joe]**[path ~]**[delimiter $ ]**[command ./myscript]
Normal output line. Nothing special here...
But...
You can add some colors. What about a warning message?
**[warning [WARNING] The color depends on the theme. Could look normal too]
What about an error message?
**[error [ERROR] This is not the error you are looking for]
\`\`\`
```
### Example
```
**[terminal]
**[prompt foo@joe]**[path ~]**[delimiter $ ]**[command ./myscript]
Normal output line. Nothing special here...
But...
You can add some colors. What about a warning message?
**[warning [WARNING] The color depends on the theme. Could look normal too]
What about an error message?
**[error [ERROR] This is not the error you are looking for]
```
# Documenting Features
If you create a new feature for QMK, create a documentation page for it. It doesn't have to be very long, a few sentances describing your feature and a table listing any relevant keycodes is enough. Here is a basic template:
```markdown
# My Cool Feature
This page describes my cool feature. You can use my cool feature to make coffee and order cream and sugar to be delivered via drone.
## My Cool Feature Keycodes
|Long Name|Short Name|Description|
|---------|----------|-----------|
|KC_COFFEE||Make Coffee|
|KC_CREAM||Order Cream|
|KC_SUGAR||Order Sugar|
```
Place your documentation into `docs/feature_<my_cool_feature>.md`, and add that file to the appropriate place in `docs/_summary.md`. If you have added any keycodes be sure to add them to `docs/keycodes.md` with a link back to your feature page.

View File

@ -0,0 +1,42 @@
# Documentation Templates
This page documents the templates you should use when submitting new Keymaps and Keyboards to QMK.
## Keymap `readme.md` Template
Most keymaps have an image depicting the layout. You can use [Keyboard Layout Editor](http://keyboard-layout-editor.com) to create an image. Upload it to [Imgur](http://imgur.com) or another hosting service, please do not include images in your Pull Request.
Below the image you should write a short description to help people understand your keymap.
```
![Clueboard Layout Image](http://i.imgur.com/7Capi8W.png)
# Default Clueboard Layout
This is the default layout that comes flashed on every Clueboard. For the most
part it's a straightforward and easy to follow layout. The only unusual key is
the key in the upper left, which sends Escape normally, but Grave when any of
the Ctrl, Alt, or GUI modifiers are held down.
```
## Keyboard `readme.md` Template
```
# Planck
![Planck](http://i.imgur.com/q2M3uEU.jpg)
A compact 40% (12x4) ortholinear keyboard kit made and sold by OLKB and Massdrop. [More info on qmk.fm](http://qmk.fm/planck/)
Keyboard Maintainer: [Jack Humbert](https://github.com/jackhumbert)
Hardware Supported: Planck PCB rev1, rev2, rev3, rev4, Teensy 2.0
Hardware Availability: [OLKB.com](https://olkb.com), [Massdrop](https://www.massdrop.com/buy/planck-mechanical-keyboard?mode=guest_open)
Make example for this keyboard (after setting up your build environment):
make planck/rev4:default
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
```
There needs to be two spaces at the end of the `Keyboard Maintainer` and `Hardware Supported` lines for it to render correctly with Markdown.

View File

@ -1,214 +1,6 @@
# Frequently Asked Questions
## What is QMK?
[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).
## 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's](https://github.com/jackhumbert) 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.
From a technical standpoint QMK builds upon TMK by adding several new features. Most notably QMK has expanded the number of available keycodes and uses these to implement advanced features like `S()`, `LCTL()`, and `MO()`. You can see a complete list of these keycodes in [Quantum Keycodes](quantum_keycodes.html).
From a project and community management standpoint TMK maintains all the officially supported keyboards by himself, with a bit of community support. Separate community maintained forks exist or can be created for other keyboards. Only a few keymaps are provided by default, so users typically don't share keymaps with each other. QMK encourages sharing of both keyboards and keymaps through a centrally managed repository, accepting all pull requests that follows the quality standards. These are mostly community maintained, but the QMK team also helps when necessary.
Both approaches have their merits and their drawbacks, and code flows freely between TMK and QMK when it makes sense.
# Debug Console
## hid_listen can't recognize device
When debug console of your device is not ready you will see like this:
```
Waiting for device:.........
```
once the device is pluged in then *hid_listen* finds it you will get this message:
```
Waiting for new device:.........................
Listening:
```
If you can't get this 'Listening:' message try building with `CONSOLE_ENABLE=yes` in [Makefile]
You may need privilege to access the device on OS like Linux.
- try `sudo hid_listen`
## Can't get message on console
Check:
- *hid_listen* finds your device. See above.
- Enable debug with pressing **Magic**+d. See [Magic Commands](https://github.com/tmk/tmk_keyboard#magic-commands).
- set `debug_enable=true` usually in `matrix_init()` in **matrix.c**.
- try using 'print' function instead of debug print. See **common/print.h**.
- disconnect other devices with console function. See [Issue #97](https://github.com/tmk/tmk_keyboard/issues/97).
## Linux or UNIX like system requires Super User privilege
Just use 'sudo' to execute *hid_listen* with privilege.
```
$ sudo hid_listen
```
Or add an *udev rule* for TMK devices with placing a file in rules directory. The directory may vary on each system.
File: /etc/udev/rules.d/52-tmk-keyboard.rules(in case of Ubuntu)
```
# tmk keyboard products https://github.com/tmk/tmk_keyboard
SUBSYSTEMS=="usb", ATTRS{idVendor}=="feed", MODE:="0666"
```
***
# Miscellaneous
## NKRO Doesn't work
First you have to compile frimware with this build option `NKRO_ENABLE` in **Makefile**.
Try `Magic` **N** command(`LShift+RShift+N` by default) when **NKRO** still doesn't work. You can use this command to toggle between **NKRO** and **6KRO** mode temporarily. In some situations **NKRO** doesn't work you need to switch to **6KRO** mode, in particular when you are in BIOS.
If your firmeare built with `BOOTMAGIC_ENABLE` you need to turn its switch on by `BootMagic` **N** command(`Space+N` by default). This setting is stored in EEPROM and keeped over power cycles.
https://github.com/tmk/tmk_keyboard#boot-magic-configuration---virtual-dip-switch
## TrackPoint needs reset circuit(PS/2 mouse support)
Without reset circuit you will have inconsistent reuslt due to improper initialize of the hardware. See circuit schematic of TPM754.
- http://geekhack.org/index.php?topic=50176.msg1127447#msg1127447
- http://www.mikrocontroller.net/attachment/52583/tpm754.pdf
## Can't read column of matrix beyond 16
Use `1UL<<16` instead of `1<<16` in `read_cols()` in [matrix.h] when your columns goes beyond 16.
In C `1` means one of [int] type which is [16bit] in case of AVR so you can't shift left more than 15. You will get unexpected zero when you say `1<<16`. You have to use [unsigned long] type with `1UL`.
http://deskthority.net/workshop-f7/rebuilding-and-redesigning-a-classic-thinkpad-keyboard-t6181-60.html#p146279
## Bootloader jump doesn't work
Properly configure bootloader size in **Makefile**. With wrong section size bootloader won't probably start with **Magic command** and **Boot Magic**.
```
# Size of Bootloaders in bytes:
# Atmel DFU loader(ATmega32U4) 4096
# Atmel DFU loader(AT90USB128) 8192
# LUFA bootloader(ATmega32U4) 4096
# Arduino Caterina(ATmega32U4) 4096
# USBaspLoader(ATmega***) 2048
# Teensy halfKay(ATmega32U4) 512
# Teensy++ halfKay(AT90USB128) 2048
OPT_DEFS += -DBOOTLOADER_SIZE=4096
```
AVR Boot section size are defined by setting **BOOTSZ** fuse in fact. Consult with your MCU datasheet.
Note that **Word**(2 bytes) size and address are used in datasheet while TMK uses **Byte**.
AVR Boot section is located at end of Flash memory like the followings.
```
byte Atmel/LUFA(ATMega32u4) byte Atmel(AT90SUB1286)
0x0000 +---------------+ 0x00000 +---------------+
| | | |
| | | |
| Application | | Application |
| | | |
= = = =
| | 32KB-4KB | | 128KB-8KB
0x6000 +---------------+ 0x1E000 +---------------+
| Bootloader | 4KB | Bootloader | 8KB
0x7FFF +---------------+ 0x1FFFF +---------------+
byte Teensy(ATMega32u4) byte Teensy++(AT90SUB1286)
0x0000 +---------------+ 0x00000 +---------------+
| | | |
| | | |
| Application | | Application |
| | | |
= = = =
| | 32KB-512B | | 128KB-2KB
0x7E00 +---------------+ 0x1FC00 +---------------+
| Bootloader | 512B | Bootloader | 2KB
0x7FFF +---------------+ 0x1FFFF +---------------+
```
And see this discussion for further reference.
https://github.com/tmk/tmk_keyboard/issues/179
## Special Extra key doesn't work(System, Audio control keys)
You need to define `EXTRAKEY_ENABLE` in `rules.mk` to use them in QMK.
```
EXTRAKEY_ENABLE = yes # Audio control and System control
```
## Wakeup from sleep doesn't work
In Windows check `Allow this device to wake the computer` setting in Power **Management property** tab of **Device Manager**. Also check BIOS setting.
Pressing any key during sleep should wake host.
## Using Arduino?
**Note that Arduino pin naming is different from actual chip.** For example, Arduino pin `D0` is not `PD0`. Check circuit with its schematics yourself.
- http://arduino.cc/en/uploads/Main/arduino-leonardo-schematic_3b.pdf
- http://arduino.cc/en/uploads/Main/arduino-micro-schematic.pdf
Arduino leonardo and micro have **ATMega32U4** and can be used for TMK, though Arduino bootloader may be a problem.
## Using PF4-7 pins of USB AVR?
You need to set JTD bit of MCUCR yourself to use PF4-7 as GPIO. Those pins are configured to serve JTAG function by default. MCUs like ATMega*U* or AT90USB* are affeteced with this.
If you are using Teensy this isn't needed. Teensy is shipped with JTAGEN fuse bit unprogrammed to disable the function.
See this code.
```
// JTAG disable for PORT F. write JTD bit twice within four cycles.
MCUCR |= (1<<JTD);
MCUCR |= (1<<JTD);
```
https://github.com/tmk/tmk_keyboard/blob/master/keyboard/hbkb/matrix.c#L67
And read **26.5.1 MCU Control Register MCUCR** of ATMega32U4 datasheet.
## Adding LED indicators of Lock keys
You need your own LED indicators for CapsLock, ScrollLock and NumLock? See this post.
http://deskthority.net/workshop-f7/tmk-keyboard-firmware-collection-t4478-120.html#p191560
## Program Arduino Micro/Leonardo
Push reset button and then run command like this within 8 seconds.
```
avrdude -patmega32u4 -cavr109 -b57600 -Uflash:w:adb_usb.hex -P/dev/ttyACM0
```
Device name will vary depending on your system.
http://arduino.cc/en/Main/ArduinoBoardMicro
https://geekhack.org/index.php?topic=14290.msg1563867#msg1563867
## USB 3 compatibility
I heard some people have a problem with USB 3 port, try USB 2 port.
## Mac compatibility
### OS X 10.11 and Hub
https://geekhack.org/index.php?topic=14290.msg1884034#msg1884034
## Problem on BIOS(UEFI)/Resume(Sleep&Wake)/Power cycles
Some people reported their keyboard stops working on BIOS and/or after resume(power cycles).
As of now root of its cause is not clear but some build options seem to be related. In Makefile try to disable those options like `CONSOLE_ENABLE`, `NKRO_ENABLE`, `SLEEP_LED_ENABLE` and/or others.
https://github.com/tmk/tmk_keyboard/issues/266
https://geekhack.org/index.php?topic=41989.msg1967778#msg1967778
## FLIP doesn't work
### AtLibUsbDfu.dll not found
Remove current driver and reinstall one FLIP provides from DeviceManager.
http://imgur.com/a/bnwzy
* [General](faq_general.md)
* [Building or Compiling QMK](faq_build.md)
* [Debugging and Troubleshooting QMK](faq_debug.md)
* [Keymap](faq_keymap.md)

View File

@ -1,17 +1,9 @@
# Frequently Asked Build Questions
This page covers questions about building QMK. If you have not yet you should read the [Build Guide](https://github.com/qmk/qmk_firmware/blob/master/docs/build_guide.md).
In short,
$ make [-f Makefile.<variant>] [KEYMAP=...] clean
$ make [-f Makefile.<variant>] [KEYMAP=...]
$ make [-f Makefile.<variant>] [KEYMAP=...] dfu
This page covers questions about building QMK. If you have not yet you should read the [Build Environment Setup](getting_started_build_tools.md) and [Make Instructions](make_instructions.md) guides.
## Can't program on Linux
You will need proper permission to operate a device. For Linux users see udev rules below.
Easy way is to use `sudo` command, if you are not familiar with this command check its manual with `man sudo` or this page on line.
You will need proper permission to operate a device. For Linux users see udev rules below. Easy way is to use `sudo` command, if you are not familiar with this command check its manual with `man sudo` or this page on line.
In short when your controller is ATMega32u4,
@ -21,16 +13,16 @@ In short when your controller is ATMega32u4,
or just
$ sudo make dfu
$ sudo make <keyboard>:<keymap>:dfu
But to run `make` with root privilege is not good idea. Use former method as possible.
But to run `make` with root privilege is not good idea. Use former method if possible.
## WINAVR is obsolete
It is no longer recommended and may cause some problem.
See [Issue #99](https://github.com/tmk/tmk_keyboard/issues/99).
See [TMK Issue #99](https://github.com/tmk/tmk_keyboard/issues/99).
## USB VID and PID
You can use any ID you want with editing `config.h`. Using any presumably unused ID will be no problem in fact except for very least chance of collision with other product.
You can use any ID you want with editing `config.h`. Using any presumably unused ID will be no problem in fact except for very low chance of collision with other product.
Most boards in QMK use `0xFEED` as the vendor ID. You should look through other keyboards to make sure you pick a unique Product ID.
@ -41,7 +33,6 @@ You can buy a really unique VID:PID here. I don't think you need this for person
- http://www.obdev.at/products/vusb/license.html
- http://www.mcselec.com/index.php?page=shop.product_details&flypage=shop.flypage&product_id=92&option=com_phpshop&Itemid=1
## Linux udev rules
On Linux you need proper privilege to access device file of MCU, you'll have to use `sudo` when flashing firmware. You can circumvent this with placing these files in `/etc/udev/rules.d/`.

242
docs/faq_debug.md Normal file
View File

@ -0,0 +1,242 @@
# Debugging FAQ
This page details various common questions people have about troubleshooting their keyboards.
# Debug Console
## hid_listen can't recognize device
When debug console of your device is not ready you will see like this:
```
Waiting for device:.........
```
once the device is pluged in then *hid_listen* finds it you will get this message:
```
Waiting for new device:.........................
Listening:
```
If you can't get this 'Listening:' message try building with `CONSOLE_ENABLE=yes` in [Makefile]
You may need privilege to access the device on OS like Linux.
- try `sudo hid_listen`
## Can't get message on console
Check:
- *hid_listen* finds your device. See above.
- Enable debug with pressing **Magic**+d. See [Magic Commands](https://github.com/tmk/tmk_keyboard#magic-commands).
- set `debug_enable=true` usually in `matrix_init()` in **matrix.c**.
- try using 'print' function instead of debug print. See **common/print.h**.
- disconnect other devices with console function. See [Issue #97](https://github.com/tmk/tmk_keyboard/issues/97).
## Linux or UNIX like system requires Super User privilege
Just use 'sudo' to execute *hid_listen* with privilege.
```
$ sudo hid_listen
```
Or add an *udev rule* for TMK devices with placing a file in rules directory. The directory may vary on each system.
File: /etc/udev/rules.d/52-tmk-keyboard.rules(in case of Ubuntu)
```
# tmk keyboard products https://github.com/tmk/tmk_keyboard
SUBSYSTEMS=="usb", ATTRS{idVendor}=="feed", MODE:="0666"
```
***
# Miscellaneous
## Safety Considerations
You probably don't want to "brick" your keyboard, making it impossible
to rewrite firmware onto it. Here are some of the parameters to show
what things are (and likely aren't) too risky.
- If your keyboard map does not include RESET, then, to get into DFU
mode, you will need to press the reset button on the PCB, which
requires unscrewing the bottom.
- Messing with tmk_core / common files might make the keyboard
inoperable
- Too large a .hex file is trouble; `make dfu` will erase the block,
test the size (oops, wrong order!), which errors out, failing to
flash the keyboard, leaving it in DFU mode.
- To this end, note that the maximum .hex file size on Planck is
7000h (28672 decimal)
```
Linking: .build/planck_rev4_cbbrowne.elf [OK]
Creating load file for Flash: .build/planck_rev4_cbbrowne.hex [OK]
Size after:
text data bss dec hex filename
0 22396 0 22396 577c planck_rev4_cbbrowne.hex
```
- The above file is of size 22396/577ch, which is less than
28672/7000h
- As long as you have a suitable alternative .hex file around, you
can retry, loading that one
- Some of the options you might specify in your keyboard's Makefile
consume extra memory; watch out for BOOTMAGIC_ENABLE,
MOUSEKEY_ENABLE, EXTRAKEY_ENABLE, CONSOLE_ENABLE, API_SYSEX_ENABLE
- DFU tools do /not/ allow you to write into the bootloader (unless
you throw in extra fruitsalad of options), so there is little risk
there.
- EEPROM has around a 100000 write cycle. You shouldn't rewrite the
firmware repeatedly and continually; that'll burn the EEPROM
eventually.
## NKRO Doesn't work
First you have to compile frimware with this build option `NKRO_ENABLE` in **Makefile**.
Try `Magic` **N** command(`LShift+RShift+N` by default) when **NKRO** still doesn't work. You can use this command to toggle between **NKRO** and **6KRO** mode temporarily. In some situations **NKRO** doesn't work you need to switch to **6KRO** mode, in particular when you are in BIOS.
If your firmware built with `BOOTMAGIC_ENABLE` you need to turn its switch on by `BootMagic` **N** command(`Space+N` by default). This setting is stored in EEPROM and keeped over power cycles.
https://github.com/tmk/tmk_keyboard#boot-magic-configuration---virtual-dip-switch
## TrackPoint needs reset circuit(PS/2 mouse support)
Without reset circuit you will have inconsistent reuslt due to improper initialize of the hardware. See circuit schematic of TPM754.
- http://geekhack.org/index.php?topic=50176.msg1127447#msg1127447
- http://www.mikrocontroller.net/attachment/52583/tpm754.pdf
## Can't read column of matrix beyond 16
Use `1UL<<16` instead of `1<<16` in `read_cols()` in [matrix.h] when your columns goes beyond 16.
In C `1` means one of [int] type which is [16bit] in case of AVR so you can't shift left more than 15. You will get unexpected zero when you say `1<<16`. You have to use [unsigned long] type with `1UL`.
http://deskthority.net/workshop-f7/rebuilding-and-redesigning-a-classic-thinkpad-keyboard-t6181-60.html#p146279
## Bootloader jump doesn't work
Properly configure bootloader size in **Makefile**. With wrong section size bootloader won't probably start with **Magic command** and **Boot Magic**.
```
# Size of Bootloaders in bytes:
# Atmel DFU loader(ATmega32U4) 4096
# Atmel DFU loader(AT90USB128) 8192
# LUFA bootloader(ATmega32U4) 4096
# Arduino Caterina(ATmega32U4) 4096
# USBaspLoader(ATmega***) 2048
# Teensy halfKay(ATmega32U4) 512
# Teensy++ halfKay(AT90USB128) 2048
OPT_DEFS += -DBOOTLOADER_SIZE=4096
```
AVR Boot section size are defined by setting **BOOTSZ** fuse in fact. Consult with your MCU datasheet.
Note that **Word**(2 bytes) size and address are used in datasheet while TMK uses **Byte**.
AVR Boot section is located at end of Flash memory like the followings.
```
byte Atmel/LUFA(ATMega32u4) byte Atmel(AT90SUB1286)
0x0000 +---------------+ 0x00000 +---------------+
| | | |
| | | |
| Application | | Application |
| | | |
= = = =
| | 32KB-4KB | | 128KB-8KB
0x6000 +---------------+ 0x1E000 +---------------+
| Bootloader | 4KB | Bootloader | 8KB
0x7FFF +---------------+ 0x1FFFF +---------------+
byte Teensy(ATMega32u4) byte Teensy++(AT90SUB1286)
0x0000 +---------------+ 0x00000 +---------------+
| | | |
| | | |
| Application | | Application |
| | | |
= = = =
| | 32KB-512B | | 128KB-2KB
0x7E00 +---------------+ 0x1FC00 +---------------+
| Bootloader | 512B | Bootloader | 2KB
0x7FFF +---------------+ 0x1FFFF +---------------+
```
And see this discussion for further reference.
https://github.com/tmk/tmk_keyboard/issues/179
## Special Extra key doesn't work(System, Audio control keys)
You need to define `EXTRAKEY_ENABLE` in `rules.mk` to use them in QMK.
```
EXTRAKEY_ENABLE = yes # Audio control and System control
```
## Wakeup from sleep doesn't work
In Windows check `Allow this device to wake the computer` setting in Power **Management property** tab of **Device Manager**. Also check BIOS setting.
Pressing any key during sleep should wake host.
## Using Arduino?
**Note that Arduino pin naming is different from actual chip.** For example, Arduino pin `D0` is not `PD0`. Check circuit with its schematics yourself.
- http://arduino.cc/en/uploads/Main/arduino-leonardo-schematic_3b.pdf
- http://arduino.cc/en/uploads/Main/arduino-micro-schematic.pdf
Arduino leonardo and micro have **ATMega32U4** and can be used for TMK, though Arduino bootloader may be a problem.
## Using PF4-7 pins of USB AVR?
You need to set JTD bit of MCUCR yourself to use PF4-7 as GPIO. Those pins are configured to serve JTAG function by default. MCUs like ATMega*U* or AT90USB* are affeteced with this.
If you are using Teensy this isn't needed. Teensy is shipped with JTAGEN fuse bit unprogrammed to disable the function.
See this code.
```
// JTAG disable for PORT F. write JTD bit twice within four cycles.
MCUCR |= (1<<JTD);
MCUCR |= (1<<JTD);
```
https://github.com/tmk/tmk_keyboard/blob/master/keyboard/hbkb/matrix.c#L67
And read **26.5.1 MCU Control Register MCUCR** of ATMega32U4 datasheet.
## Adding LED indicators of Lock keys
You need your own LED indicators for CapsLock, ScrollLock and NumLock? See this post.
http://deskthority.net/workshop-f7/tmk-keyboard-firmware-collection-t4478-120.html#p191560
## Program Arduino Micro/Leonardo
Push reset button and then run command like this within 8 seconds.
```
avrdude -patmega32u4 -cavr109 -b57600 -Uflash:w:adb_usb.hex -P/dev/ttyACM0
```
Device name will vary depending on your system.
http://arduino.cc/en/Main/ArduinoBoardMicro
https://geekhack.org/index.php?topic=14290.msg1563867#msg1563867
## USB 3 compatibility
I heard some people have a problem with USB 3 port, try USB 2 port.
## Mac compatibility
### OS X 10.11 and Hub
https://geekhack.org/index.php?topic=14290.msg1884034#msg1884034
## Problem on BIOS(UEFI)/Resume(Sleep&Wake)/Power cycles
Some people reported their keyboard stops working on BIOS and/or after resume(power cycles).
As of now root of its cause is not clear but some build options seem to be related. In Makefile try to disable those options like `CONSOLE_ENABLE`, `NKRO_ENABLE`, `SLEEP_LED_ENABLE` and/or others.
https://github.com/tmk/tmk_keyboard/issues/266
https://geekhack.org/index.php?topic=41989.msg1967778#msg1967778
## FLIP doesn't work
### AtLibUsbDfu.dll not found
Remove current driver and reinstall one FLIP provides from DeviceManager.
http://imgur.com/a/bnwzy

20
docs/faq_general.md Normal file
View File

@ -0,0 +1,20 @@
# Frequently Asked Questions
## What is QMK?
[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's](https://github.com/jackhumbert) 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.
From a technical standpoint QMK builds upon TMK by adding several new features. Most notably QMK has expanded the number of available keycodes and uses these to implement advanced features like `S()`, `LCTL()`, and `MO()`. You can see a complete list of these keycodes in [Keycodes](keycodes.md).
From a project and community management standpoint TMK maintains all the officially supported keyboards by himself, with a bit of community support. Separate community maintained forks exist or can be created for other keyboards. Only a few keymaps are provided by default, so users typically don't share keymaps with each other. QMK encourages sharing of both keyboards and keymaps through a centrally managed repository, accepting all pull requests that follow the quality standards. These are mostly community maintained, but the QMK team also helps when necessary.
Both approaches have their merits and their drawbacks, and code flows freely between TMK and QMK when it makes sense.

View File

@ -1,9 +1,9 @@
# Frequently Asked Keymap Questions
# Keymap FAQ
This page covers questions people often have about keymaps. If you haven't you should read [Keymap Overview](keymap.html) first.
This page covers questions people often have about keymaps. If you haven't you should read [Keymap Overview](keymap.md) first.
## What Keycodes Can I Use?
See [Basic Keycodes](keycodes.html) and [Quantum Keycodes](quantum_keycodes.html) for most of the keys you can define.
See [Keycodes](keycodes.md) for an index of keycodes available to you. These link to more extensive documentation when available.
Keycodes are actually defined in [common/keycode.h](https://github.com/qmk/qmk_firmware/blob/master/tmk_core/common/keycode.h).
@ -116,7 +116,9 @@ https://github.com/tekezo/Karabiner/issues/403
## Esc and `~ on a key
Use `GRAVE_ESC` or `KC_GESC` in your keymap.
Use `GRAVE_ESC` or `KC_GESC` in your keymap. `GUI`+`GRAVE_ESC` results in `` ` `` and `SHIFT`+`GRAVE_ESC` results in `~`.
Note that this will break the CTRL+SHIFT+ESC shortcut to the Windows task manager. Use `#define GRAVE_ESC_CTRL_OVERRIDE` in your `config.h` to get the shortcut back. With this option, `ESC_GRAVE` results in `ESC` if `CTRL` is held, even if `SHIFT` or `GUI` are also held.
## Arrow on Right Modifier keys with Dual-Role
This turns right modifer keys into arrow keys when the keys are tapped while still modifiers when the keys are hold. In TMK the dual-role function is dubbed **TAP**.

204
docs/feature_audio.md Normal file
View File

@ -0,0 +1,204 @@
# Audio
Your keyboard can make sounds! If you've got a Planck, Preonic, or basically any AVR keyboard that allows access to the C6 or B5 port (`#define C6_AUDIO` and/or `#define B5_AUDIO`), you can hook up a simple speaker and make it beep. You can use those beeps to indicate layer transitions, modifiers, special keys, or just to play some funky 8bit tunes.
If you add `AUDIO_ENABLE = yes` to your `rules.mk`, there's a couple different sounds that will automatically be enabled without any other configuration:
```
STARTUP_SONG // plays when the keyboard starts up (audio.c)
GOODBYE_SONG // plays when you press the RESET key (quantum.c)
AG_NORM_SONG // plays when you press AG_NORM (quantum.c)
AG_SWAP_SONG // plays when you press AG_SWAP (quantum.c)
MUSIC_ON_SONG // plays when music mode is activated (process_music.c)
MUSIC_OFF_SONG // plays when music mode is deactivated (process_music.c)
CHROMATIC_SONG // plays when the chromatic music mode is selected (process_music.c)
GUITAR_SONG // plays when the guitar music mode is selected (process_music.c)
VIOLIN_SONG // plays when the violin music mode is selected (process_music.c)
MAJOR_SONG // plays when the major music mode is selected (process_music.c)
```
You can override the default songs by doing something like this in your `config.h`:
```c
#ifdef AUDIO_ENABLE
#define STARTUP_SONG SONG(STARTUP_SOUND)
#endif
```
A full list of sounds can be found in [quantum/audio/song_list.h](https://github.com/qmk/qmk_firmware/blob/master/quantum/audio/song_list.h) - feel free to add your own to this list! All available notes can be seen in [quantum/audio/musical_notes.h](https://github.com/qmk/qmk_firmware/blob/master/quantum/audio/musical_notes.h).
To play a custom sound at a particular time, you can define a song like this (near the top of the file):
```c
float my_song[][2] = SONG(QWERTY_SOUND);
```
And then play your song like this:
```c
PLAY_SONG(my_song);
```
Alternatively, you can play it in a loop like this:
```c
PLAY_LOOP(my_song);
```
It's advised that you wrap all audio features in `#ifdef AUDIO_ENABLE` / `#endif` to avoid causing problems when audio isn't built into the keyboard.
## Music mode
The music mode maps your columns to a chromatic scale, and your rows to octaves. This works best with ortholinear keyboards, but can be made to work with others. All keycodes less than `0xFF` get blocked, so you won't type while playing notes - if you have special keys/mods, those will still work. A work-around for this is to jump to a different layer with KC_NOs before (or after) enabling music mode.
Recording is experimental due to some memory issues - if you experience some weird behavior, unplugging/replugging your keyboard will fix things.
Keycodes available:
* `MU_ON` - Turn music mode on
* `MU_OFF` - Turn music mode off
* `MU_TOG` - Toggle music mode
* `MU_MOD` - Cycle through the music modes:
* `CHROMATIC_MODE` - Chromatic scale, row changes the octave
* `GUITAR_MODE` - Chromatic scale, but the row changes the string (+5 st)
* `VIOLIN_MODE` - Chromatic scale, but the row changes the string (+7 st)
* `MAJOR_MODE` - Major scale
In music mode, the following keycodes work differently, and don't pass through:
* `LCTL` - start a recording
* `LALT` - stop recording/stop playing
* `LGUI` - play recording
* `KC_UP` - speed-up playback
* `KC_DOWN` - slow-down playback
By default, `MUSIC_MASK` is set to `keycode < 0xFF` which means keycodes less than `0xFF` are turned into notes, and don't output anything. You can change this by defining this in your `config.h` like this:
#define MUSIC_MASK keycode != KC_NO
Which will capture all keycodes - be careful, this will get you stuck in music mode until you restart your keyboard!
The pitch standard (`PITCH_STANDARD_A`) is 440.0f by default - to change this, add something like this to your `config.h`:
#define PITCH_STANDARD_A 432.0f
## MIDI functionalty
This is still a WIP, but check out `quantum/keymap_midi.c` to see what's happening. Enable from the Makefile.
<!-- FIXME: this formatting needs work
## Audio
```c
#ifdef AUDIO_ENABLE
AU_ON,
AU_OFF,
AU_TOG,
#ifdef FAUXCLICKY_ENABLE
FC_ON,
FC_OFF,
FC_TOG,
#endif
// Music mode on/off/toggle
MU_ON,
MU_OFF,
MU_TOG,
// Music voice iterate
MUV_IN,
MUV_DE,
#endif
```
### Midi
#if !MIDI_ENABLE_STRICT || (defined(MIDI_ENABLE) && defined(MIDI_BASIC))
MI_ON, // send midi notes when music mode is enabled
MI_OFF, // don't send midi notes when music mode is enabled
#endif
MIDI_TONE_MIN,
MIDI_TONE_MAX
MI_C = MIDI_TONE_MIN,
MI_Cs,
MI_Db = MI_Cs,
MI_D,
MI_Ds,
MI_Eb = MI_Ds,
MI_E,
MI_F,
MI_Fs,
MI_Gb = MI_Fs,
MI_G,
MI_Gs,
MI_Ab = MI_Gs,
MI_A,
MI_As,
MI_Bb = MI_As,
MI_B,
MIDI_TONE_KEYCODE_OCTAVES > 1
where x = 1-5:
MI_C_x,
MI_Cs_x,
MI_Db_x = MI_Cs_x,
MI_D_x,
MI_Ds_x,
MI_Eb_x = MI_Ds_x,
MI_E_x,
MI_F_x,
MI_Fs_x,
MI_Gb_x = MI_Fs_x,
MI_G_x,
MI_Gs_x,
MI_Ab_x = MI_Gs_x,
MI_A_x,
MI_As_x,
MI_Bb_x = MI_As_x,
MI_B_x,
MI_OCT_Nx 1-2
MI_OCT_x 0-7
MIDI_OCTAVE_MIN = MI_OCT_N2,
MIDI_OCTAVE_MAX = MI_OCT_7,
MI_OCTD, // octave down
MI_OCTU, // octave up
MI_TRNS_Nx 1-6
MI_TRNS_x 0-6
MIDI_TRANSPOSE_MIN = MI_TRNS_N6,
MIDI_TRANSPOSE_MAX = MI_TRNS_6,
MI_TRNSD, // transpose down
MI_TRNSU, // transpose up
MI_VEL_x 1-10
MIDI_VELOCITY_MIN = MI_VEL_1,
MIDI_VELOCITY_MAX = MI_VEL_9,
MI_VELD, // velocity down
MI_VELU, // velocity up
MI_CHx 1-16
MIDI_CHANNEL_MIN = MI_CH1
MIDI_CHANNEL_MAX = MI_CH16,
MI_CHD, // previous channel
MI_CHU, // next channel
MI_ALLOFF, // all notes off
MI_SUS, // sustain
MI_PORT, // portamento
MI_SOST, // sostenuto
MI_SOFT, // soft pedal
MI_LEG, // legato
MI_MOD, // modulation
MI_MODSD, // decrease modulation speed
MI_MODSU, // increase modulation speed
#endif // MIDI_ADVANCED
-->

160
docs/feature_auto_shift.md Normal file
View File

@ -0,0 +1,160 @@
# Auto Shift: Why do we need a shift key?
Tap a key and you get its character. Tap a key, but hold it *slightly* longer
and you get its shifted state. Viola! No shift key needed!
## Why Auto Shift?
Many people suffer from various forms of RSI. A common cause is stretching your
fingers repetitively long distances. For us on the keyboard, the pinky does that
all too often when reaching for the shift key. Auto Shift looks to alleviate that
problem.
## How does it work?
When you tap a key, it stays depressed for a short period of time before it is
then released. This depressed time is a different length for everyone. Auto Shift
defines a constant `AUTO_SHIFT_TIMEOUT` which is typically set to twice your
normal pressed state time. When you press a key, a timer starts and then stops
when you release the key. If the time depressed is greater than or equal to the
`AUTO_SHIFT_TIMEOUT`, then a shifted version of the key is emitted. If the time
is less than the `AUTO_SHIFT_TIMEOUT` time, then the normal state is emitted.
## Are there limitations to Auto Shift?
Yes, unfortunately.
1. Key repeat will cease to work. For example, before if you wanted 20 'a'
characters, you could press and hold the 'a' key for a second or two. This no
longer works with Auto Shift because it is timing your depressed time instead
of emitting a depressed key state to your operating system.
2. Auto Shift is disabled for any key press that is accompanied by one or more
modifiers. Thus, Ctrl+A that you hold for a really long time is not the same
as Ctrl+Shift+A.
3. You will have characters that are shifted when you did not intend on shifting, and
other characters you wanted shifted, but were not. This simply comes down to
practice. As we get in a hurry, we think we have hit the key long enough
for a shifted version, but we did not. On the other hand, we may think we are
tapping the keys, but really we have held it for a little longer than
anticipated.
## How do I enable Auto Shift?
Add to your `rules.mk` in the keymap folder:
AUTO_SHIFT_ENABLE = YES
If no `rules.mk` exists, you can create one.
Then compile and install your new firmware with Auto Key enabled! That's it!
## Configuring Auto Shift
If desired, there is some configuration that can be done to change the
behavior of Auto Shift. This is done by setting various variables the
`config.h` file located in your keymap folder. If no `config.h` file exists, you can create one.
A sample is
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
#include "../../config.h"
#define AUTO_SHIFT_TIMEOUT 150
#define NO_AUTO_SHIFT_SPECIAL
#endif
### AUTO_SHIFT_TIMEOUT (value in ms)
This controls how long you have to hold a key before you get the shifted state.
Obviously, this is different for everyone. For the common person, a setting of
135 to 150 works great. However, one should start with a value of at least 175, which
is the default value. Then work down from there. The idea is to have the shortest time required to get the shifted state without having false positives.
Play with this value until things are perfect. Many find that all will work well
at a given value, but one or two keys will still emit the shifted state on
occassion. This is simply due to habit and holding some keys a little longer
than others. Once you find this value, work on tapping your problem keys a little
quicker than normal and you will be set.
{% hint style='info' %}
Auto Shift has three special keys that can help you get this value right very
quick. See "Auto Shift Setup" for more details!
{% endhint %}
### NO_AUTO_SHIFT_SPECIAL (simple define)
Do not Auto Shift special keys, which include -_, =+, [{, ]}, ;:, '", ,<, .>,
and /?
### NO_AUTO_SHIFT_NUMERIC (simple define)
Do not Auto Shift numeric keys, zero through nine.
### NO_AUTO_SHIFT_ALPHA (simple define)
Do not Auto Shift alpha characters, which include A through Z.
## Using Auto Shift Setup
This will enable you to define three keys temporailiy to increase, decrease and report your `AUTO_SHIFT_TIMEOUT`.
### Setup
Map three keys temporarily in your keymap:
| Key Name | Description |
|----------|-----------------------------------------------------|
| KC_ASDN | Lower the Auto Shift timeout variable (down) |
| KC_ASUP | Raise the Auto Shift timeout variable (up) |
| KC_ASRP | Report your current Auto Shift timeout value |
Compile and upload your new firmware.
### Use
It is important to note that during these tests, you should be typing
completely normal and with no intention of shifted keys.
1. Type multiple sentences of alphabetical letters.
2. Observe any upper case letters.
3. If there are none, press the key you have mapped to `KC_ASDN` to decrease
time Auto Shift timeout value and go back to step 1.
4. If there are some upper case letters, decide if you need to work on tapping
those keys with less down time, or if you need to increase the timeout.
5. If you decide to increase the timeout, press the key you have mapped to
`KC_ASUP` and go back to step 1.
6. Once you are happy with your results, press the key you have mapped to
`KC_ASRP`. The keyboard will type by itself the value of your
`AUTO_SHIFT_TIMEOUT`.
7. Update `AUTO_SHIFT_TIMEOUT` in your `config.h` with the value reported.
8. Remove `AUTO_SHIFT_SETUP` from your `config.h`.
9. Remove the key bindings `KC_ASDN`, `KC_ASUP` and `KC_ASRP`.
10. Compile and upload your new firmware.
#### An example run
'''
hello world. my name is john doe. i am a computer programmer playing with
keyboards right now.
[PRESS KC_ASDN quite a few times]
heLLo woRLd. mY nAMe is JOHn dOE. i AM A compUTeR proGRaMMER PlAYiNG witH
KEYboArDS RiGHT NOw.
[PRESS KC_ASUP a few times]
hello world. my name is john Doe. i am a computer programmer playing with
keyboarDs right now.
[PRESS KC_ASRP]
115
'''
The keyboard typed `115` which represents your current `AUTO_SHIFT_TIMEOUT`
value. You are now set! Practice on the *D* key a little bit that showed up
in the testing and you'll be golden.

17
docs/feature_backlight.md Normal file
View File

@ -0,0 +1,17 @@
# Backlighting
<!-- FIXME: Describe how backlighting works in QMK -->
## Backlight Keycodes
These keycodes control the backlight. Most keyboards use this for single color in-switch lighting.
|Name|Description|
|----|-----------|
|`BL_x`|Set a specific backlight level between 0-9|
|`BL_ON`|An alias for `BL_9`|
|`BL_OFF`|An alias for `BL_0`|
|`BL_DEC`|Turn the backlight level down by 1|
|`BL_INC`|Turn the backlight level up by 1|
|`BL_TOGG`|Toggle the backlight on or off|
|`BL_STEP`|Step through backlight levels, wrapping around to 0 when you reach the top.|

17
docs/feature_bluetooth.md Normal file
View File

@ -0,0 +1,17 @@
# Bluetooth
## Bluetooth functionality
This requires [some hardware changes](https://www.reddit.com/r/MechanicalKeyboards/comments/3psx0q/the_planck_keyboard_with_bluetooth_guide_and/?ref=search_posts), but can be enabled via the Makefile. The firmware will still output characters via USB, so be aware of this when charging via a computer. It would make sense to have a switch on the Bluefruit to turn it off at will.
<!-- FIXME: Document bluetooth support more completely. -->
## Bluetooth Keycodes
This is used when multiple keyboard outputs can be selected. Currently this only allows for switching between USB and Bluetooth on keyboards that support both.
|Name|Description|
|----|-----------|
|`OUT_AUTO`|auto mode|
|`OUT_USB`|usb only|
|`OUT_BT`|bluetooth|

29
docs/feature_bootmagic.md Normal file
View File

@ -0,0 +1,29 @@
# Bootmagic
<!-- FIXME: Describe the bootmagic feature here. -->
## Bootmagic Keycodes
Shortcuts for bootmagic options. You can use these even when bootmagic is off.
|Name|Description|
|----|-----------|
|`MAGIC_SWAP_CONTROL_CAPSLOCK`|Swap Capslock and Left Control|
|`MAGIC_CAPSLOCK_TO_CONTROL`|Treat Capslock like a Control Key|
|`MAGIC_SWAP_LALT_LGUI`|Swap the left Alt and GUI keys|
|`MAGIC_SWAP_RALT_RGUI`|Swap the right Alt and GUI keys|
|`MAGIC_NO_GUI`|Disable the GUI key|
|`MAGIC_SWAP_GRAVE_ESC`|Swap the Grave and Esc key.|
|`MAGIC_SWAP_BACKSLASH_BACKSPACE`|Swap backslash and backspace|
|`MAGIC_HOST_NKRO`|Force NKRO on|
|`MAGIC_SWAP_ALT_GUI`/`AG_SWAP`|Swap Alt and Gui on both sides|
|`MAGIC_UNSWAP_CONTROL_CAPSLOCK`|Disable the Control/Capslock swap|
|`MAGIC_UNCAPSLOCK_TO_CONTROL`|Disable treating Capslock like Control |
|`MAGIC_UNSWAP_LALT_LGUI`|Disable Left Alt and GUI switching|
|`MAGIC_UNSWAP_RALT_RGUI`|Disable Right Alt and GUI switching|
|`MAGIC_UNNO_GUI`|Enable the GUI key |
|`MAGIC_UNSWAP_GRAVE_ESC`|Disable the Grave/Esc swap |
|`MAGIC_UNSWAP_BACKSLASH_BACKSPACE`|Disable the backslash/backspace swap|
|`MAGIC_UNHOST_NKRO`|Force NKRO off|
|`MAGIC_UNSWAP_ALT_GUI`/`AG_NORM`|Disable the Alt/GUI switching|
|`MAGIC_TOGGLE_NKRO`|Turn NKRO on or off|

View File

@ -0,0 +1,163 @@
# Common Keymap Shortcuts
Your keymap can include shortcuts to common operations, for example shifted keys. This page documents the functions that are available to you.
People often define custom names using `#define`. For example:
```c
#define FN_CAPS LT(_FL, KC_CAPSLOCK)
#define ALT_TAB LALT(KC_TAB)
```
This will allow you to use `FN_CAPS` and `ALT_TAB` in your `KEYMAP()`, keeping it more readable.
### Limits of these aliases
Currently, the keycodes able to used with these functions are limited to the [Basic Keycodes](keycodes_basic.html), meaning you can't use keycodes like `KC_TILD`, or anything greater than 0xFF. For a full list of the keycodes able to be used see [Basic Keycodes](keycodes_basic.html).
## Switching and toggling layers
These functions allow you to activate layers in various ways.
* `MO(layer)` - momentary switch to *layer*. As soon as you let go of the key, the layer is deactivated and you pop back out to the previous layer.
* `LT(layer, kc)` - momentary switch to *layer* when held, and *kc* when tapped.
* `TG(layer)` - toggles a layer on or off.
* `TO(layer)` - Goes to a layer. This code is special, because it lets you go either up or down the stack -- just goes directly to the layer you want. So while other codes only let you go _up_ the stack (from layer 0 to layer 3, for example), `TO(2)` is going to get you to layer 2, no matter where you activate it from -- even if you're currently on layer 5. This gets activated on keydown (as soon as the key is pressed).
* `TT(layer)` - Layer Tap-Toggle. If you hold the key down, the layer becomes active, and then deactivates when you let go. And if you tap it, the layer simply becomes active (toggles on). It needs 5 taps by default, but you can set it by defining `TAPPING_TOGGLE`, for example, `#define TAPPING_TOGGLE 2` for just two taps.
## Working With Layers
Care must be taken when switching layers, it's possible to lock yourself into a layer with no way to deactivate that layer (without unplugging your keyboard.) We've created some guidelines to help users avoid the most common problems.
### Beginners
If you are just getting started with QMK you will want to keep everything simple. Follow these guidelines when setting up your layers:
* Setup layer 0 as your "base" layer. This is your normal typing layer, and could be whatever layout you want (qwerty, dvorak, colemak, etc.)
* Arrange your layers in a "tree" layout, with layer 0 as the root. Do not try to enter the same layer from more than one other layer.
* Never try to stack a higher numbered layer on top of a lower numbered layer. Doing so is tricky and error prone.
### Intermediate Users
Sometimes you need more than one base layer. For example, if you want to switch between QWERTY and Dvorak, switch between layouts for different countries, or switch your layout for different videogames. Your base layers should always be the lowest numbered layers. When you have multiple base layers you should always treat them as mutually exclusive. When one base layer is on the others are off.
### Advanced Users
Once you have a good feel for how layers work and what you can do, you can get more creative. The rules listed in the beginner section will help you be successful by avoiding some of the tricker details but they can be constraining, especially for ultra-compact keyboard users. Understanding how layers work will allow you to use them in more advanced ways.
Layers stack on top of each other in numerical order. When determining what a keypress does, QMK scans the layers from the top down, stopping when it reaches the first active layer that is not set to `KC_TRNS`. As a result if you activate a layer that is numerically lower than your current layer, and your current layer (or another layer that is active and higher than your target layer) has something other than `KC_TRNS`, that is the key that will be sent, not the key on the layer you just activated. This is the cause of most people's "why doesn't my layer get switched" problem.
## Modifier keys
These functions allow you to combine a mod with a keycode. When pressed the keydown for the mod will be sent first, and then *kc* will be sent. When released the keyup for *kc* will be sent and then the mod will be sent.
* `LSFT(kc)` or `S(kc)` - applies left Shift to *kc* (keycode)
* `RSFT(kc)` - applies right Shift to *kc*
* `LCTL(kc)` - applies left Control to *kc*
* `RCTL(kc)` - applies right Control to *kc*
* `LALT(kc)` - applies left Alt to *kc*
* `RALT(kc)` - applies right Alt to *kc*
* `LGUI(kc)` - applies left GUI (command/win) to *kc*
* `RGUI(kc)` - applies right GUI (command/win) to *kc*
* `HYPR(kc)` - applies Hyper (all modifiers) to *kc*
* `MEH(kc)` - applies Meh (all modifiers except Win/Cmd) to *kc*
* `LCAG(kc)` - applies CtrlAltGui to *kc*
You can also chain these, like this:
LALT(LCTL(KC_DEL)) -- this makes a key that sends Alt, Control, and Delete in a single keypress.
## Shifted Keycodes
The following shortcuts automatically add `LSFT()` to keycodes to get commonly used symbols.
|Name|Description|
|----|-----------|
| KC_TILD | ~ |
| KC_EXLM | ! |
| KC_QUES | ? |
| KC_AT | @ |
| KC_HASH | # |
| KC_DLR | $ |
| KC_PERC | % |
| KC_CIRC | ^ |
| KC_AMPR | & |
| KC_ASTR | * |
| KC_LPRN | ( |
| KC_RPRN | ) |
| KC_UNDS | _ |
| KC_PLUS | + |
| KC_DQUO | " |
| KC_LCBR | { |
| KC_RCBR | } |
| KC_LABK | < |
| KC_RABK | > |
| KC_PIPE | &#x7C; |
| KC_COLN | : |
## Mod Tap
`MT(mod, kc)` - is *mod* (modifier key - MOD_LCTL, MOD_LSFT) when held, and *kc* when tapped. In other words, you can have a key that sends Esc (or the letter O or whatever) when you tap it, but works as a Control key or a Shift key when you hold it down.
These are the values you can use for the `mod` in `MT()` and `OSM()`:
* MOD_LCTL
* MOD_LSFT
* MOD_LALT
* MOD_LGUI
* MOD_RCTL
* MOD_RSFT
* MOD_RALT
* MOD_RGUI
* MOD_HYPR
* MOD_MEH
These can also be combined like `MOD_LCTL | MOD_LSFT` e.g. `MT(MOD_LCTL | MOD_LSFT, KC_ESC)` which would activate Control and Shift when held, and send Escape when tapped. Note however, that you cannot mix right and left side modifiers.
We've added shortcuts to make common modifier/tap (mod-tap) mappings more compact:
* `CTL_T(kc)` - is LCTL when held and *kc* when tapped
* `SFT_T(kc)` - is LSFT when held and *kc* when tapped
* `ALT_T(kc)` - is LALT when held and *kc* when tapped
* `ALGR_T(kc)` - is AltGr when held and *kc* when tapped
* `GUI_T(kc)` - is LGUI when held and *kc* when tapped
* `ALL_T(kc)` - is Hyper (all mods) when held and *kc* when tapped. To read more about what you can do with a Hyper key, see [this blog post by Brett Terpstra](http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/)
* `LCAG_T(kc)` - is CtrlAltGui when held and *kc* when tapped
* `MEH_T(kc)` - is like Hyper, but not as cool -- does not include the Cmd/Win key, so just sends Alt+Ctrl+Shift.
## One Shot Keys
One shot keys are keys that remain active until the next key is pressed, and then are releasd. This allows you to type keyboard combinations without pressing more than one key at a time.
For example, if you define a key as `OSM(MOD_LSFT)`, you can type a capital A character by first pressing and releasing shift, and then pressing and releasing A. Your computer will see the shift key being held the moment shift is pressed, and it will see the shift key being released immediately after A is released.
One shot keys also work as normal modifiers. If you hold down a one shot key and type other keys, your one shot will be released immediately after you let go of the key.
You can control the behavior of one shot keys by defining these in `config.h`:
```c
#define ONESHOT_TAP_TOGGLE 5 /* Tapping this number of times holds the key until tapped this number of times again. */
#define ONESHOT_TIMEOUT 5000 /* Time (in ms) before the one shot key is released */
```
* `OSM(mod)` - Momentarily hold down *mod*. You must use the `MOD_*` keycodes as shown in [Mod Tap](#mod-tap), not the `KC_*` codes.
* `OSL(layer)` - momentary switch to *layer*.
## Permissive Hold
As of [PR#1359](https://github.com/qmk/qmk_firmware/pull/1359/), there is a new `config.h` option:
```
#define PERMISSIVE_HOLD
```
This makes it easier for fast typists to use dual-function keys. Without this, if you let go of a held key inside the tapping term, it won't register.
Example: (Tapping Term = 200ms)
- SHFT_T(KC_A) Down
- KC_X Down
- KC_X Up
- SHFT_T(KC_A) Up
With defaults, if above is typed within tapping term, this will emit `ax`. With permissive hold, if above is typed within tapping term, this will emit `X` (so, Shift+X).

76
docs/feature_layouts.md Normal file
View File

@ -0,0 +1,76 @@
# Layouts: Using a keymap with multiple keyboards
The `layouts/` folder contains different physical key layouts that can apply to different keyboards.
```
layouts/
+ default/
| + 60_ansi/
| | + readme.md
| | + layout.json
| | + a_good_keymap/
| | | + keymap.c
| | | + readme.md
| | | + config.h
| | | + rules.mk
| | + <keymap folder>/
| | + ...
| + <layout folder>/
+ community/
| + <layout folder>/
| + ...
```
The `layouts/default/` and `layouts/community/` are two examples of layout "repositories" - currently `default` will contain all of the information concerning the layout, and one default keymap named `default_<layout>`, for users to use as a reference. `community` contains all of the community keymaps, with the eventual goal of being split-off into a separate repo for users to clone into `layouts/`. QMK searches through all folders in `layouts/`, so it's possible to have multiple reposistories here.
Each layout folder is named (`[a-z0-9_]`) after the physical aspects of the layout, in the most generic way possible, and contains a `readme.md` with the layout to be defined by the keyboard:
```md
# 60_ansi
LAYOUT_60_ansi
```
New names should try to stick to the standards set by existing layouts, and can be discussed in the PR/Issue.
## Supporting a layout
For a keyboard to support a layout, the variable (`[a-z0-9_]`) must be defined in it's `<keyboard>.h`, and match the number of arguments/keys (and preferrably the physical layout):
#define LAYOUT_60_ansi KEYMAP_ANSI
The folder name must be added to the keyboard's `rules.mk`:
LAYOUTS = 60_ansi
`LAYOUTS` can be set in any keyboard folder level's `rules.mk`:
LAYOUTS = 60_iso
but the `LAYOUT_<layout>` variable must be defined in `<folder>.h` as well.
## Tips for making layouts keyboard-agnostic
Instead of using `#include "planck.h"`, you can use this line to include whatever `<keyboard>.h` (`<folder>.h` should not be included here) file that is being compiled:
#include QMK_KEYBOARD_H
In your config.h, you can also use this variable to include the keyboard's `config.h`:
#include QMK_KEYBOARD_CONFIG_H
If you want to keep some keyboard-specific code, you can use these variables to escape it with an `#ifdef` statement:
* `KEYBOARD_<folder1>_<folder2>`
For example:
```c
#ifdef KEYBOARD_planck
#ifdef KEYBOARD_planck_rev4
planck_rev4_function();
#endif
#endif
```
Note that the names are lowercase and match the folder/file names for the keyboard/revision exactly.

Some files were not shown because too many files have changed in this diff Show More