Compare commits

...

516 Commits
peb ... 0.6.195

Author SHA1 Message Date
3a0f3a5bd0 Make ARM Audio max volume configurable ()
* Make ARM Audio max volume configurable

* Update docs/feature_audio.md

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

* Update docs/feature_audio.md

Co-Authored-By: drashna <drashna@live.com>
2018-12-03 16:42:57 -08:00
da1afe152a Fix up RGB Matrix code ()
* Fix up RGB Matrix code

* Convert RGBLIGHT functions to rgbmatrix ones, and add defines
2018-12-03 10:27:15 -08:00
fe982caf5d Add edvorakjp kepmap for crkbd ()
* edvorakjp layout for crkbd

* bugfix of edvorakjp

QMK cannot send keycode that doesn't exists on new layer.
2018-12-03 08:00:00 -08:00
5d47231f2a Add sidebar for ZH ()
* add zh-cn readme

* edit readme

* Round 1 of edits

- Mandarin translation of QMK products is off, best to use the English name.
- Fix some terminology and grammar.

* trying re-translating the first paragraph

* add fallback langurages

* Create LANGS.md

* Rename docs/zh-cn/README.md to docs/zh/README.md

* Update LANGS.md

* Update index.html

* Delete README.md

* add sidebar for zh
2018-12-02 15:35:53 -05:00
d5a06aec83 Second try at configuring i18n for docsify and gitbook ()
* add zh-cn readme

* edit readme

* Round 1 of edits

- Mandarin translation of QMK products is off, best to use the English name.
- Fix some terminology and grammar.

* trying re-translating the first paragraph

* add fallback langurages

* Create LANGS.md

* Rename docs/zh-cn/README.md to docs/zh/README.md

* Update LANGS.md

* Update index.html
2018-12-02 15:12:54 -05:00
dbc7761688 Keyboard: handwired/atreus50 Refactor, Configurator support, and readme cleanup ()
* handwired/atreus50: refactor

- layout macro renames:
  - KEYMAP is now LAYOUT
  - COMPACT_KEYMAP is now LAYOUT_kc
- keymap updates:
  - both keymaps now use #include QMK_KEYBOARD_H
  - removed redundant KC_TRNS and KC_NO definitions
  - default keymap now uses LAYOUT macro instead of LAYOUT_kc

* handwired/atreus50: readme cleanup

Reformatted the readme to be more closely aligned to current QMK
template, and fixed some typos/grammar.

* handwired/atreus50: Configurator support
2018-12-01 23:22:40 -08:00
0db6bb10e0 Keyboard: Enable Lights by Default for Kira 75 ()
* enable rgb underglow and backlights by default for use with QMK Configurator

* disable mousekeys
2018-12-01 17:28:35 -08:00
1fd4546fff Keyboard: Add HHKB layout support to the DO60 ()
* add 60_hhkb support

* add qmk configurator support for the new 60_hhkb layout

* allow community layout support for the 60_hhkb

* fixup readme to adhere to new QMK standards
2018-12-01 17:19:33 -08:00
064d9e2175 handwired/promethium Refactor and Configurator support ()
* handwired/promethium: refactor

- config.h files
  - updated to use #pragma once
  - removed redundant config.h includes
- layout macro moved from config.h to promethium.h
- layout macro renamed from KEYMAP_CUSTOM to LAYOUT

* handwired/promethium: Configurator support
2018-12-01 16:29:16 -08:00
a90331aec2 handwired/ortho5x13 default keymap refactor, Configurator support, and readme update ()
* handwired/ortho5x13: default keymap refactor

- keymap now uses LAYOUT macro
- keymap now uses #include QMK_KEYBOARD_H
- removed redundant KC_TRNS and KC_NO definitions

* handwired/ortho5x13: Configurator support

* handwired/ortho5x13: fix Docs links in readme
2018-12-01 16:28:32 -08:00
0b0c98929b Add support for S7 Elephant ()
* Add support for S7 Elephant

A high-end 70% custom keyboard designed and produced by jacky from Geekhack.

* Polish S7 Elephant code

Implement drashna's suggestions:

- specify bootloader
- remove unnecessary defines
- use led_set_user() for LED logic

* Correct info.json and s7_elephant.h

Correct info.json and s7_elepant.h to follow QMK convention and fix a
missing curly bracket.
2018-12-01 08:57:30 -08:00
75a51659ab Add tap_random_base64 and software timer info to Useful Functions doc ()
* Update docs

* Add security caveat

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

* Wordsmithing

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

* Update docs/ref_functions.md

Co-Authored-By: drashna <drashna@live.com>
2018-12-01 08:21:06 -08:00
5803012eda Add a layout to support tsangan bottom row with split bs and rshift ()
* Add a layout to support tsangan bottom row with split bs and rshift

* Move the new layout to defaults

* Rename layout to be more accurately representative

* Rename files to match renamed layout def
2018-12-01 08:17:50 -08:00
8c033497c6 Planck: Align Keycode Columns ()
Remove Extra Newlines
2018-11-30 14:51:45 -08:00
d7f1e072a8 Added macros to Dynamic Keymaps, Zeal60 RGB backlight improvements ()
* Refactored M6-B to use Zeal60 RGB backlight code

* Fixed M6-B LED co-ordinates

* Minor changes to RGB config for Zeal65

* Added dynamic keymaps to WT80-A, WT60-A, WT-80A, U80-A

* Macro implementation

* Implemented macros, API protocol version 8, RGB backlight fixes

* Improved radial effects for M6-B

* Fixed undefined references when building an RGB keyboard after M6-A
2018-11-30 08:43:34 -08:00
b10aad45b6 Test out i18n of the docs ()
* add zh-cn readme

* edit readme

* Round 1 of edits

- Mandarin translation of QMK products is off, best to use the English name.
- Fix some terminology and grammar.

* trying re-translating the first paragraph
2018-11-30 00:14:55 -05:00
81ce35c10a New Keyboard: Cyclops ()
* initial commit

* add correct atmega32u4 pins used

* add a basic layout

* add simple keymap

* update readme

* Add QMK Configurator support

* add whitespace for formatting
2018-11-29 07:57:06 -08:00
fbf59ba2e5 Typo fix () 2018-11-29 07:33:45 -08:00
GO
87e6d01374 Keyboard: add newgame ()
* Add files via upload

* Add files via upload

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

Co-Authored-By: GoTakigawa <44800276+GoTakigawa@users.noreply.github.com>

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

Co-Authored-By: GoTakigawa <44800276+GoTakigawa@users.noreply.github.com>

* Update keyboards/newgame40/newgame40.h

Co-Authored-By: GoTakigawa <44800276+GoTakigawa@users.noreply.github.com>

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

Co-Authored-By: GoTakigawa <44800276+GoTakigawa@users.noreply.github.com>

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

Co-Authored-By: GoTakigawa <44800276+GoTakigawa@users.noreply.github.com>

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

Co-Authored-By: GoTakigawa <44800276+GoTakigawa@users.noreply.github.com>

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

Co-Authored-By: GoTakigawa <44800276+GoTakigawa@users.noreply.github.com>

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

Co-Authored-By: GoTakigawa <44800276+GoTakigawa@users.noreply.github.com>

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

Co-Authored-By: GoTakigawa <44800276+GoTakigawa@users.noreply.github.com>

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

Co-Authored-By: GoTakigawa <44800276+GoTakigawa@users.noreply.github.com>

* Update keyboards/newgame40/config.h

Co-Authored-By: GoTakigawa <44800276+GoTakigawa@users.noreply.github.com>

* Update keyboards/newgame40/config.h

Co-Authored-By: GoTakigawa <44800276+GoTakigawa@users.noreply.github.com>

* Update keyboards/newgame40/config.h

Co-Authored-By: GoTakigawa <44800276+GoTakigawa@users.noreply.github.com>

* Update keyboards/newgame40/config.h

Co-Authored-By: GoTakigawa <44800276+GoTakigawa@users.noreply.github.com>

* Update keyboards/newgame40/config.h

Co-Authored-By: GoTakigawa <44800276+GoTakigawa@users.noreply.github.com>

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

Co-Authored-By: GoTakigawa <44800276+GoTakigawa@users.noreply.github.com>

* Update keyboards/newgame40/config.h

Co-Authored-By: GoTakigawa <44800276+GoTakigawa@users.noreply.github.com>

* Update keyboards/newgame40/rules.mk

Co-Authored-By: GoTakigawa <44800276+GoTakigawa@users.noreply.github.com>

* Update keyboards/newgame40/rules.mk

Co-Authored-By: GoTakigawa <44800276+GoTakigawa@users.noreply.github.com>

* Add readme (newgame40)

* Update keyboards/newgame40/readme.md

Co-Authored-By: GoTakigawa <44800276+GoTakigawa@users.noreply.github.com>

* Update keyboards/newgame40/readme.md

Co-Authored-By: GoTakigawa <44800276+GoTakigawa@users.noreply.github.com>

* Update keymap.c

* Update keyboards/newgame40/rules.mk

Co-Authored-By: GoTakigawa <44800276+GoTakigawa@users.noreply.github.com>

* Add files via upload

* remove community/ortho_4x10
2018-11-28 09:20:46 -08:00
fff6f22cf6 Keyboard: handwired/bluepill Configurator support and readme cleanup ()
* handwired/bluepill/bluepill70: Configurator support

* handwired/bluepill: readme cleanup

Formatting fixes to make the file easier to read.
2018-11-28 08:51:16 -08:00
8b85ec2a98 Add Extrakey support for Brightness up/down () 2018-11-28 08:19:07 -08:00
3b42cff516 Added Rick Roll to song lists ()
🙂
2018-11-28 07:56:34 -08:00
6d2730eeff [fortitude60] match default keymap comment to the implementation. () 2018-11-28 07:33:08 -08:00
a495326aed Turn off Mousekeys for several ps2avrGB keyboards ()
* Turn off Mousekeys for jc65

* Turn off Mousekeys for ps2avrGB templates

* Disable mousekeys for bmini and canoe as well
2018-11-27 16:54:43 -08:00
a152ad3145 Merge pull request from amayer5125/ergodox-ez-cleanup
Ergodox ez cleanup
2018-11-27 19:42:09 -05:00
1904319745 Remove RGB_SMOD alias and replace uses with RGB_MOD () 2018-11-27 15:34:06 -08:00
55c3214877 fixed misplaced paranthesis in arm usb mouse send function ()
bug was causing lots of dropped events for me.
2018-11-27 15:20:17 -08:00
dd7534ccca Keyboard: fix for debug crkbd () 2018-11-27 15:18:11 -08:00
e4dfcf896e Add tap_code16 function () 2018-11-27 14:29:59 -08:00
6983c71efd Ergodox EZ: Clean Up process_record_user Function
Set ERPM = SAFE_RANGE
2018-11-27 17:19:15 -05:00
929e6a3231 Ergodox EZ: Remove Unused Code From Keymap 2018-11-27 17:00:01 -05:00
82c02d9b8d Update MSYS to use the 5.4.0 toolchain () 2018-11-27 13:45:01 -08:00
d79b5e67b6 Puck Macropad ()
* Add Puck

* Update Manufacturer name in metadata

* Add num lock to high layer

* update pins

* update pin settings

* fix numlock key

* Cleanup config.h

* Update device info

* updates after review
2018-11-27 13:43:48 -08:00
90f9fb4eee Fixed docs/newbs_testing_debugging.md and tmk_core/common/print.h 2018-11-27 14:40:19 -05:00
77ed9e3a73 Keymap: Added abishalom keymaps ()
* Added abishalom keymaps

Added personal keymaps for Massdrop Alt and Tada68

* Update keyboards/tada68/keymaps/abishalom/rules.mk

Co-Authored-By: abishalom <abishalom1997@gmail.com>

* Update keyboards/tada68/keymaps/abishalom/rules.mk

Co-Authored-By: abishalom <abishalom1997@gmail.com>

* Update keyboards/tada68/keymaps/abishalom/config.h

Co-Authored-By: abishalom <abishalom1997@gmail.com>

* Update keyboards/tada68/keymaps/abishalom/keymap.c

Co-Authored-By: abishalom <abishalom1997@gmail.com>

* Update keyboards/tada68/keymaps/abishalom/keymap.c

Co-Authored-By: abishalom <abishalom1997@gmail.com>

* Update keyboards/tada68/keymaps/abishalom/rules.mk

Co-Authored-By: abishalom <abishalom1997@gmail.com>

* Update keyboards/tada68/keymaps/abishalom/keymap.c

Co-Authored-By: abishalom <abishalom1997@gmail.com>

* Update keyboards/tada68/keymaps/abishalom/keymap.c

Co-Authored-By: abishalom <abishalom1997@gmail.com>

* Updated keymaps

* Bugfix Tada68

* Update keyboards/tada68/keymaps/abishalom/keymap.c

Co-Authored-By: abishalom <abishalom1997@gmail.com>
2018-11-27 09:22:49 -08:00
faef966a4d Keymap: Set serial connection as default for the Redox rev1.0 keyboard ()
* Set serial as default for Redox

* Updated rules.mk file

* Removed unused rule

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

* Removed unused rule

Co-Authored-By: mattdibi <mattdibi@users.noreply.github.com>
2018-11-27 08:59:53 -08:00
a054b5a06c Fix Helix ws2812.c listed more than once warning. ()
Remove `SRC += ws2812.c` from helix/rev2/rules.mk and helix/pico/rules.mk.
Because it will be added in common_features.mk.
2018-11-27 07:22:47 -08:00
952a30ef34 handwired/arrow_pad Refactor and Configurator support ()
* handwired/arrow_pad: layout macro and keymap refactor

- Layout macros moved from the keymaps to arrow_pad.h.
- LAYOUT_pad21 refactored to only accept keys that are physical present (no KC_NO entries required in keymap)
- Keymaps now use #include QMK_KEYBOARD_H
- Keymaps refactored to use process_record_user function (from action_get_macro)

* handwired/arrow_pad: Readme cleanup

Fixed the make commands and updated the layout macro.

* handwired/arrow_pad: Configurator support
2018-11-26 20:57:15 -08:00
bada74e2a1 Keymap: Fix build errors for non-Zeal boards. () 2018-11-26 17:39:29 -08:00
ecd21b44a8 Update to drashna userspace and keymaps ()
* Fix reversed bool check in layer_state_set

* Add Quefrency 65 for a friend

* Add Ergodox EZ Glow keymap

* Add RGB Matrix Code

* Further changes to rgb matrix ErgoDox EZ

* Update bjohnson keymaps

* Fix CRKBD display

* Overhaul to corne keyboard

* Narrow scope for keylogger

* Minor layout tweaks to Corne Keyboard

* additional CRKBD tweaks

* Minor tweaks to CRKBD

* Add all characters for keylogger

* Ergodox EZ Glow overhaul

* Fix Ergodox EZ Glow layer colors

* Increase Tapping Term for Corne Keyboard

* Fix unicode-ish

* Revert some changes

* Add layer specific lighting effects

* Some minor tweaks to ergodox glow config

* revert changes to ergodox files

* Update Glow readme

* Add more tapping term defines

* Fix changes

* Fix ergodox keymap

* Hopefully fix sleeping

* Disable layer indications if rgb matrix is disabled

* Add support for sleeping and rgb layer change toggle to ergodox ez glow

* Make RGB Layer Indication Great Again

* Make Unicode Great Again

* Remove placeholder define

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

* Remove placeholder define

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

* Remove old EEPROM Reset keycode
2018-11-26 16:45:24 -08:00
edb6c98fd2 Keyboard: Enable community ortho 4x12 layouts for lets split eh ()
* Enable ortho_4x12 community layouts for lets_split_eh

* Keymap build fixes now that ortho_4x12 is enabled

* Keymap build fixes now that ortho_4x12 is enabled
2018-11-26 14:58:22 -08:00
b7b20cd9df Revert "Add support for PR and Issue templates to QMK_firmware GitHub ()" ()
This reverts commit b91dfa04e3bad560fb6fe2360dd51fb95d95fcbf.
2018-11-26 14:35:48 -08:00
b91dfa04e3 Add support for PR and Issue templates to QMK_firmware GitHub ()
* Add support document

* Add Bug Report

* Add GitHub Pull Request Template

* Feature request issue template

* Touch up feature request template

* Add 'other issues' template

* move support doc
2018-11-26 14:35:01 -08:00
fe68599a34 Keyboard: add generic ortho 5x15 layout support to Idobo () 2018-11-26 10:01:34 -08:00
4ebd27002a Keyboard: 5291 firmware to replace the existing soarers controller firmware ()
* compiles but is not working

* still testing 5291

* compiles but is not working

* still testing 5291

* fixed a but in the layout (reversed key order in row)

* compiles but is not working

* still testing 5291

* fixed a but in the layout (reversed key order in row)

* fixed some issues

* doumentation needed

* doumentation needed

* documentation needed

* documentation needed

* Update readme.md

documentation

* Update readme.md

i dislike markdown <_>

* merge preperation
2018-11-26 09:53:49 -08:00
f3ffd6ad50 Keymap: Refactor edvorakjp user library ()
* Refactor edvorakjp user library

* add tap dance support

* update keymaps

* edvorakjp: add SWAP_SCLN option

* fix behavior of SWAP_SCLN
2018-11-26 09:50:45 -08:00
0031e46191 Keyboard: 40percentclub - enable 4x4 and 5x5 community keymaps ()
* Enable 4x4 and 5x5 community keymap support

* Pull 4x4 community keymap fixes from @noroadsleft

* Build fixes for guidoism keymap - move keymap to layouts/community/planck_mit as it uses the LAYOUT_planck_mit macro
2018-11-26 09:27:07 -08:00
97ab3211e2 Keymap: add Interrobang ()
* remove clmk and dvrk and backlight; switch esc and enter to be modtap; add meh key

* change songs

* space cadet; move enter; move '"; move pgup pgdn

* remove extra songs

* update from noahfredrick keymap

* make it easier to type ../../thing/*/*

* move pipe

* requested changes

* add interrobang support

* add shift-insert to raise-v and lower-v, move pipe to raise-/lower-n
2018-11-26 09:26:26 -08:00
8bc19c8dcf Fix Blockey compiler (and size) issues () 2018-11-26 08:09:37 -08:00
6266c172b9 added ep/96 as a supported keyboard ()
* added ep/96

* Update keyboards/ep/96/readme.md

Co-Authored-By: e11i0t23 <32494740+e11i0t23@users.noreply.github.com>

* removed led code

* Update keyboards/ep/96/config.h

Co-Authored-By: e11i0t23 <32494740+e11i0t23@users.noreply.github.com>

* Update keyboards/ep/96/info.json

Co-Authored-By: e11i0t23 <32494740+e11i0t23@users.noreply.github.com>

* Update keyboards/ep/96/readme.md

Co-Authored-By: e11i0t23 <32494740+e11i0t23@users.noreply.github.com>
2018-11-26 07:58:53 -08:00
ccd4da941c Add Espectro ISO layout ()
* Add Espectro ISO layout

* Remove unused define from Espectro ISO layout
2018-11-26 07:57:30 -08:00
834b555eca Keymap FAQ: fix positions of KC_HENK and KC_MHEN for JIS layout ()
These keys were previously in each other's positions.
2018-11-25 18:40:47 -08:00
d7ab738ca6 Adding keymap layers for 40precentclub/foobar () 2018-11-25 18:38:46 -08:00
f0db40ff11 fix diffutils arch package name () 2018-11-24 08:48:42 -08:00
3363743bf7 Adding my new keymap for the Idobo ()
* Adding my new keymap, based of xd75, with leds enabled via the rules.mk file

* cleaned up the rules file

* Per Change Requests: removed deprecated functions along with updated the map to use the layout macro instead of raw matrix
2018-11-24 08:41:39 -08:00
7bc7c34d4f Add RCTL to my Planck layout () 2018-11-24 08:40:48 -08:00
ee8627e078 Add EEPROM_RESET keycode to keycodes.md doc () 2018-11-23 20:07:53 -08:00
3dd6d53942 ergodox: update algernon's layout to v1.12
This is the final version of my layout.

Overall changes
===============

* Updated to work with QMK master.

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

* The `😂` symbol can be entered with UCIS.
* `LEAD r` now inputs `Right Alt`.

Signed-off-by: Gergely Nagy <me@gergo.csillger.hu>
2018-11-22 13:31:30 -08:00
2943d19ecd Keymap: Clone layout for Massdrop's xd75 ()
* Added default75. No lighting.

* Added default75. No lighting.

* Update keyboards/idobo/keymaps/default75/config.h

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

* Update keyboards/idobo/keymaps/default75/config.h

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

* Update keyboards/idobo/keymaps/default75/config.h

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

* Update keyboards/idobo/keymaps/default75/config.h

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

* Fixes for pull request

* Updated keyboard declartion structure
2018-11-22 10:15:46 -08:00
48262bdce0 Merge pull request from trunneml/improveddebounce
Adaptive debounce logic
2018-11-22 10:51:20 -05:00
b7dd415c97 Merge pull request from drashna/ergodox_ez_matrix_fix
Fix Ergodox EZ Matrix scan
2018-11-22 10:50:20 -05:00
87f06e7297 Fix raw hid define for chibios () 2018-11-21 15:12:40 -08:00
2f34252278 Keymap: Update keymap to match latest changes to Wilba's firmware. ()
* Fix firmware to work with latest Wilba changes (i.e. dynamic keymap) and M60a.

* Get back RGB Backlight codes.

* More tweaks.

* Update users/talljoe/rules.mk

Co-Authored-By: Talljoe <jwasson+github@gmail.com>
2018-11-21 13:18:18 -08:00
8837b9d99e Fix row 11 2018-11-21 07:49:28 -08:00
1485098443 Merge pull request from drashna/fix_ucis
Fix UCIS code
2018-11-20 15:17:43 -05:00
303fa4ec33 Keyboard: Add Handwired 108 Key with Trackpoint ()
* Include both base keyboards

* Merge the keymap

* Merge the configs

* Add wiring diagram for clarity of documentation

* Merge rules

* Merge keyboard sources

* Change names to compile

* Update documentation to suit

* Add qwerty layout to 108keyTrackpoint

* Separate the dvorak standard layout from a media focused one

* Update documentation to reflect new keymaps

* [style] Add empty lines at ends of files

* [style] Meet current QMK style guide

* Bring READEME closer to the QMK template

* [style] Change all "108keyTrackpoint" to "108key_trackpoint"

* [style] Use "LAYOUT" instead of "KEYMAP"

QMK terminology has changed

Co-Authored-By: mkem114 <20897849+mkem114@users.noreply.github.com>

* Add two spaces after maintainer in README

This is required to render properly

Co-Authored-By: mkem114 <20897849+mkem114@users.noreply.github.com>

* Remove redundant line

"PREVENT_STUCK_MODIFIERS" is default on for QMK

Co-Authored-By: mkem114 <20897849+mkem114@users.noreply.github.com>

* Change include of keymaps to use QMK_KEYBOARD_H

This includes automatically

* Update make rules to match template

* Change from KC_MENU to KC_APP

The button functionality actually wanted is the context menu key

* [style] Change "dvorakMedia" to "dvorak_media"

* Update README to reflect minor changes
2018-11-20 10:11:23 -08:00
93c0362552 Update Levinson readme to support elite-c ()
* init - updated levinson readme to support elite-c

* updated readme per PR comment

* added trailing spaces to lines 6 7 8

* updated readme bootloader instructions

* updated readme

* updated readme
2018-11-20 10:07:20 -08:00
ad91454574 Adaptive debounce logic
The debounce filtering reports a key/switch change directly, without any extra delay. After that the debounce logic will filter all further changes, until the key/switch reports the same state for the given count of scans.
So a perfect switch will get a short debounce period and a bad key will get a much longer debounce period. The result is an adaptive debouncing period for each switch.

This value defines how often the same key/switch state has to be detected in successive reads until the next key state can be reported.
In other words this value defines the minimum debouncing period for a switch.
2018-11-20 15:55:35 +01:00
385de70e4d Merge pull request from drashna/ergodox_ez_glow_configurable
Make Ergodox EZ Glow's rgb matrix user configurable
2018-11-19 20:01:22 -05:00
26156e84e8 Fix UCIS code
Revert code change that broke UCIS due to bad suggestions
2018-11-19 16:37:49 -08:00
f03fd95000 Fix permanently on capslock led on Atom47 () 2018-11-19 12:15:16 -08:00
9e0f68a652 Delete readme.md 2018-11-18 17:51:00 -08:00
e0690096f8 Fix my community layouts ()
* fix formatting of keymap

* update readme with boards I currently own

* made the wrong assumption that every board would use the same space for backspace

* update readme with boards I currently own
2018-11-18 15:20:21 -08:00
4d66df5091 Add default glow board 2018-11-18 08:59:52 -08:00
223b3d2be7 Fix i2c_master.d listed more than once warning 2018-11-18 08:57:51 -08:00
bdd41715af Make Ergodox EZ Glow's rgb matrix user configurable 2018-11-18 08:45:24 -08:00
504bf11769 Allows disabling rgb effects in userspace ()
* Allows disabling animations in user space

* Describe disabling effects in the docs

* Allows disabling individual reactive modes

* Adds the list ode defines
2018-11-18 08:24:41 -08:00
de173e344e Satan: add LAYOUT_60_ansi_split_rshift to info.json () 2018-11-18 08:23:51 -08:00
31298be2b1 Add personal zvecr dz60 keymap ()
* Add Configurator support for dz60 ansi split space

* Add keymap and fix layout macro
2018-11-18 07:53:33 -08:00
9ee2991c3d Default JIS TKL keymap for Pegasus Hoof ()
* Add TKL JIS layout for Pegasus Hoof

Tested with a JIS Majestouch 2 TKL

* Add default_jis keymap for Pegasus Hoof

* Remove unnecessary keycode definition

* Remove legacy fn_actions in favor of MO(1)

* Remove unnecessary build directive
2018-11-18 07:52:53 -08:00
667e0962eb Update to my keymaps and userspace ()
* fix to prime o keymap

* changed ortho keymaps

* added some symbols to lower layer

* set lower to be a higher layer than raise

* added split layout option with center numpad to prime_o keymap

* added some gaming functionality

* added alt f4 ortho keymaps and userspace

* fixed small error
2018-11-18 07:52:14 -08:00
d9453a93f3 Updating Boy_314's XD75 Layout ()
* fixed arrow keys and left control

* added right shift

* latest version

* reverted arrow keys

* edited readme

* added osu layer

* updated osu layout

* updated osu layout

* added full arrow keys to osu layout

* in case i mess up creating macros

* added the best meme key in the world

* added plover steno layer

* updated boy314 layout

* removed unused layers

* added boy314 xd75 layout, inspired by preonic layout

* added boy314 xd75 layout, inspired by preonic layout

* version 2 of boy314's xd75 layout

* added readme notes

* updated readme for boy314 xd75 layout

* qwerty support, brackets on bottom row, caps lock underglow

* fixed readme/

* small changes to allow merging

* minor changes to format

* fixed up default readme

* added numpad and tweaked bottom row
2018-11-16 14:47:06 -08:00
774bee6426 Moved ep40 to ep/40 for easier adding of next ep keyboard ()
* add initial ep40 files

* fixed issues

* updated keymap

* Added media control

* Update keyboards/handwired/ep40/rules.mk

Co-Authored-By: e11i0t23 <32494740+e11i0t23@users.noreply.github.com>

* Fixed requested changes

* Fixed more requested changes

* Added delete key to layor 1

* Updated defualt keympap to have a Backspace mod del key

* removed place holder

Co-Authored-By: e11i0t23 <32494740+e11i0t23@users.noreply.github.com>

* removed obsolete code

Co-Authored-By: e11i0t23 <32494740+e11i0t23@users.noreply.github.com>

* Moved ep40 to ep/40

* Fixed file names for moved code

* Fixed readme
2018-11-16 11:31:44 -08:00
defcfb4953 Update whitefox/konstantin keymap ()
* Add more spacing in keymaps

* Enable link-time optimization

* Disable deprecated TMK actions, change spacing in config.h

* Remove unrelated rules.mk options
2018-11-16 08:55:37 -08:00
b49f37dce9 Unify 68keys with mf68 ()
* Move 68keys keymap to mf68 folder

* Remove 68keys keyboard now its been migrated to mf68 keymap

* Migrate 68keys build config to mf68 keymap overrides
2018-11-16 08:35:04 -08:00
09813793be Add configurator support for luddite () 2018-11-16 07:37:15 -08:00
39bd760faf Use a single endpoint for HID reports ()
* Unify multiple HID interfaces into one

This reduces the number of USB endpoints required, which frees them up
for other things.

NKRO and EXTRAKEY always use the shared endpoint.

By default, MOUSEKEY also uses it. This means it won't work as a Boot
Procotol mouse in some BIOSes, etc. If you really think your
keyboard needs to work as a mouse in your BIOS, set
MOUSE_SHARED_EP = no in your rules.mk.

By default, the core keyboard does not use the shared endpoint, as not
all BIOSes are standards compliant and that's one place you don't want
to find out your keyboard doesn't work.. If you are really confident,
you can set KEYBOARD_SHARED_EP = yes to use the shared endpoint here
too.

* unify endpoints: ChibiOS protocol implementation

* fixup: missing #ifdef EXTRAKEY_ENABLEs

broke build on AVR with EXTRAKEY disabled

* endpoints: restore error when too many endpoints required

* lufa: wait up to 10ms to send keyboard input

This avoids packets being dropped when two reports are sent in quick
succession (eg. releasing a dual role key).

* endpoints: fix compile on ARM_ATSAM

* endpoint: ARM_ATSAM fixes

No longer use wrong or unexpected endpoint IDs

* endpoints: accommodate VUSB protocol

V-USB has its own, understandably simple ideas about the report formats.
It already blasts the mouse and extrakeys through one endpoint with
report IDs. We just stay out of its way.

* endpoints: document new endpoint configuration options

* endpoints: respect keyboard_report->mods in NKRO

The caller(s) of host_keyboard_send expect to be able to just drop
modifiers in the mods field and not worry about whether NKRO is in use.
This is a good thing. So we just shift it over if needs be.

* endpoints: report.c: update for new keyboard_report format
2018-11-15 22:22:05 -08:00
46cf8cc9b3 Configurator support for Octagon V2 75_ansi () 2018-11-14 18:37:53 -08:00
daf08f40f2 serial.c update () 2018-11-14 18:36:53 -08:00
d8f090e559 Docs: Supporting a keyboard in the QMK Configurator ()
* Docs: Configurator Support

* Minor updates

* Updated keyboard.h example to use #pragma once

per @drashna
https://github.com/qmk/qmk_firmware/pull/4396#discussion_r232140934

* Add link to doc under Reference section

Added to _sidebar.md and _summary.md

* Changed doc title; minor tweaks

Re-titled the doc as "Supporting Your Keyboard in QMK Configurator".
Made some minor changes to the keyboard.h examples.

* Added tags object to JSON example
2018-11-14 18:32:28 -08:00
a034602651 adding block def to ishtob's userspace () 2018-11-14 09:22:16 -08:00
0cda2f43e2 Backlight status functions ()
* add functions to set specific backlight state

* add function to query backlight state

* update documentation with new backlight functions

* Update tmk_core/common/backlight.c

Co-Authored-By: codyd51 <phillip.ennen@gmail.com>

* Update tmk_core/common/backlight.h

Co-Authored-By: codyd51 <phillip.ennen@gmail.com>

* update docs for is_backlight_enabled() name change
2018-11-14 07:45:46 -08:00
f7fcba329d Fixed Unicode Support heading ()
Previously, Unicode Support heading appeared as the last row in the Swap Hands table.
2018-11-14 07:33:46 -08:00
e10a602e7b Keymap: Finex Redox keymap ()
* Added FiNeX custom Redox Layout, first commit.

* updated readme

* removed old code
2018-11-13 14:44:50 -08:00
991686203c converter/m0110_usb Configurator support and readme cleanup ()
* Apple M0110 USB converter: readme cleanup

* Apple M0110 USB converter: Configurator support
2018-11-13 14:20:42 -08:00
911b2d0756 Docs: Fix descriptions of KC_INT1 and KC_INT3 2018-11-13 12:27:33 -08:00
4609d68ddc Keyboard: Add 412 64 Model 00 keyboard. ()
* Add 412-64 keyboard firmware

It's pretty barebones for now, but the Model 00 is also a pretty barebones machine. Model 01 won't be better, but plenty of pins exist for things like LEDs on Model 02.

* MANU/PROD ID changes.

Changed around the MANUFACTURER and PRODUCT IDs to be more polite when viewed in qmk toolbox.

* Fixing PROD again.

For the love of all that is good and holy, that was ugly. This new one looks better. This stuff matters to me for some reason.

* Yep, updating MANU again.

There we go. That's better - From my name to my "design firm".

* Update keyboards/412_64/keymaps/default/keymap.c

Co-Authored-By: FateEverywhere <41215461+FateEverywhere@users.noreply.github.com>

* Update keyboards/412_64/rules.mk

Co-Authored-By: FateEverywhere <41215461+FateEverywhere@users.noreply.github.com>

* Update keyboards/412_64/rules.mk

Co-Authored-By: FateEverywhere <41215461+FateEverywhere@users.noreply.github.com>

* Update keyboards/412_64/rules.mk

Co-Authored-By: FateEverywhere <41215461+FateEverywhere@users.noreply.github.com>

* Update keyboards/412_64/rules.mk

Co-Authored-By: FateEverywhere <41215461+FateEverywhere@users.noreply.github.com>
2018-11-13 08:38:48 -08:00
2dea540afb Refactoring M6-A, M6-B, Zeal60, Zeal65, WT60-A, WT65-A, WT80-A ()
* Refactored M6-B to use Zeal60 RGB backlight code

* Fixed M6-B LED co-ordinates

* Minor changes to RGB config for Zeal65

* Added dynamic keymaps to WT80-A, WT60-A, WT-80A, U80-A
2018-11-13 08:31:25 -08:00
caa293a8f7 Remove duplicate row from Available functions table in i2c_driver doc () 2018-11-13 08:27:46 -08:00
7e87532ec2 converter/ibm_terminal Refactor and Configurator support ()
* IBM Terminal converter: layout macro refactor

- Renamed KEYMAP to LAYOUT
- Renamed KEYMAP_101 to LAYOUT_101
- minor matrix array fixes

* IBM Terminal converter: default keymap refactor

- Updated layout macro names
- Updated to #include QMK_KEYBOARD_H
- config.h updated to use #pragma once

* IBM Terminal converter: priyadi keymap refactor

- Updated layout macro names
- Updated to #include QMK_KEYBOARD_H
- Removed redundant KC_TRNS and KC_NO defines
- config.h updated to use #pragma once

* IBM Terminal converter: Configurator support

* IBM Terminal converter: readme cleanup

Updated markdown formatting.

* IBM Terminal converter: readme rename

Renamed file to fully lowercase.
2018-11-13 08:26:55 -08:00
709bf386f4 Update Practice60 to use MT feature and revise system ticks ()
* Update Practice60 to use MT feature and revise system tics

* Increase system tick frequency

10,000 instead of 10,000
2018-11-12 22:03:48 -08:00
9b28dc8488 KBDFans KBD67 Support ()
* initial commit for kbd67 keyboard

* add in a standard matrix

* get the correct matrix for layout_all

* add a layout_65_ansi LAYOUT macro

* get a default keymap in

* add caps lock led support

* fix formatting of my name in the comments

* add QMK Configurator support

* turn on bootmagic
2018-11-12 21:46:34 -08:00
2dc14d1cb3 Fixed incorrect link to feature_combo.md in features.md docs file. Was linked to feature_combos.md, but _sidebar.md, _summary.md, and config_options.md all link to feature_combo.md. Assuming that it should not be pluralized. () 2018-11-12 16:46:01 -08:00
e653cc198e The "Practice60" Board, Blue Pill powered ()
* Starting point for blue pill based practice60

* Changes

* add

* try raw bin no botloader

* swap back to bootloader version

* edit

* Remove debug LED flash

* Disable JTAG to open up B3 and B4

* Add led backlight support (no breathing yet)

* Update matrix for correctness

* RGB Underglow working in a very simple state

* not as bright

* Move to handwired

* revert ChibiOS_Test changes

* Changes based on PR comments

* Address PR comments v2

* Move files
2018-11-12 16:31:22 -08:00
599b21b9f4 convert to unix line-endings [skip ci] 2018-11-12 20:51:24 +00:00
2b3473455c Change hex file permission to 644 from 755 2018-11-12 12:30:51 -08:00
d0f8e1babe modify quantum/template/avr/config.h: add rgblight effect configurations 2018-11-12 12:23:12 -08:00
2b7decbaeb Fix up screen off timer of helix ()
* Fix up screen off timer of helix

* Fix Up ScreenOffInterval exceeded uint16_t

* Fix Up never waking up once screen off if in case of matrix are not dirty

* Changing referenIng incorrect constant name

* OLED_ENABLED => SSD1306OLED

* Improve internal processing of process_record_kb()

* Use the return value of process_record_gfx()

* Move a include statement into #ifdef block

Move   #include "ssd1306.h` statement into #ifdef block

* Move process_record_kbI()

Move process_record_kb() from helix.c to rev1.c/rev2.c/pico.c

* Move process_record_kb()
2018-11-12 12:20:50 -08:00
aa03049015 Fix up screen off timer of crkbd ()
* fix about screen off timer

* Fix Up ScreenOffInterval exceeded uint16_t

* Fix Up never waking up once screen off if in case of matrix are not dirty.

* Revert "fix about screen off timer"

This reverts commit 3d175f2340c14250a71af78afec5a1e890d9f4e7.

* Fix up screen off timer of crkbd

* Fix Up ScreenOffInterval exceeded uint16_t

* Fix Up never waking up once screen off if in case of matrix are not dirty.

* Fix up screen off timer of helix

* Fix Up ScreenOffInterval exceeded uint16_t

* Fix Up never waking up once screen off if in case of matrix are not dirty

* Revert "Fix up screen off timer of helix"

This reverts commit f0efb82443a7dc34b75579359b0514e8bfa51100.

* Improve internal processing of process_record_kb()

* Use the return value of process_record_gfx()

* Fix a indent

Fix a indent
2018-11-12 12:19:29 -08:00
b1e74aee43 Make sure that avr-gcc@7 gets linked into the path on MacOS. 2018-11-12 12:16:43 -08:00
2509039abf Add missing arm gcc compiler for openSUSE 15.0 and Tumbleweed. 2018-11-12 12:16:10 -08:00
b26ccf9a2f Add rules.mk to ortho_4x12/buswerks keymap ()
* Added buswerks keymap

* cleaned up comments on buswerks keymap

* Added buswerks keymap readme.md

* Fixed spelling in buswerks readme.md

* Removed unnecessary includes, changed process_record_user to now use set_single_persistent_default_layer(), removed deprecated functions, and moved the audio ifdef block to config.h

* Changed buswerks ortho_4x12 layout to accommodate 'MIT' layout

* Updated README.md to reflect layout changes

* update buswerks keymap

* add buswerks tragicforce68 keymap
2018-11-12 12:04:12 -08:00
b173c05cc2 Tidy 40percentclub boards ()
* Remove unnecessary re-definitions for XXXXXXX and _______

* Update 6lit to use KC_NO in layout macros

* Update rules.mk to follow current template

* Remove use of deprecated function action_get_macro - unused and contents were from old template

* Remove use of deprecated function action_get_macro - all code was commented out

* Remove use of deprecated function action_get_macro - convert macro to use process_record_user

* Convert keymap to consistent use of _______

* fix use of old style header guards

* Swap KC_NO for XXXXXXX macro since the swap to the macro for KC_TRANS

* Resolve use of ?= in rules.mk files

* Remove duplication of rules.mk and config.h in gherkin mjt keymap

* Remove unnecessary #includes

* Align layout macros so foobar can use gherkin keymaps

* Align 6lit layout macros with foobar

* Remove ifndef QUANTUM_DIR from keymaps
2018-11-12 12:02:28 -08:00
746005acba Keyboard: Initial 25 port ()
* Initial 25 port

* Initial 25 port - fix info.json and hand_swap_config

* Review comments - fix layout macros, copyright comments, and duplicated use of layering macros
2018-11-12 12:00:45 -08:00
b49fd46eaa Add support for slackware distribution (linux_install.sh) ()
* Add support for slackware distribution (linux_install.sh)

The required packages are not provided by the official repository. The packages
need to be installed from slackbuilds.org either manually or with the help of
third party tools like sbotools.

* Modify linux_install.sh according to code review

Modifies the Slackware section of the linux_install.sh script based on the
suggestions from the code review.

* Modify utils/linux_install.sh according to suggestions
2018-11-12 11:58:07 -08:00
6274980e61 Improve new_project script ()
* Improve new_project script

 - use git user.name if available to replace the boilerplate name in
   files we generate
 - fix shellshock warnings

* Test for git repo

Suggestion by @skullydazed

* Fix shellshock warning

* Incorporate feedback from reviewers

 - thanks @vomindoraan
 - use a heredoc instead of echo for console
 - factor out common paths
2018-11-11 19:54:10 -08:00
4083614023 I2C driver docs ()
* I2C driver docs

- Added I2C driver docs.
- Changed arm master i2c driver to have a weak i2c_init as it is impossible to account for all possible port configuration in the STM32 world.

* Update docs/i2c_driver.md

Co-Authored-By: yiancar <yiangosyiangou@cytanet.com.cy>

* Update docs/i2c_driver.md

Co-Authored-By: yiancar <yiangosyiangou@cytanet.com.cy>

* Update docs/i2c_driver.md

Co-Authored-By: yiancar <yiangosyiangou@cytanet.com.cy>

* Update docs/i2c_driver.md

Co-Authored-By: yiancar <yiangosyiangou@cytanet.com.cy>

* GPIO release fix
2018-11-10 15:26:39 -05:00
3ba242cc3f Keymap for random key presses for the scrabblepad ()
* Random key presses for scrabblepad

* Fix keymap code comments

* Remove unused methods as per code review
2018-11-10 08:22:36 -08:00
b3853e7d40 Keymap: Add default keymap from web for 1up60hse () 2018-11-10 08:21:24 -08:00
d6184be67a IDOBO Keyboard Support (75Keys Aluminum Keyboard) ()
* initial commit

* put my name everywhere

* get the switch matrix correct

* add a basic keymap

* use a better LAYOUT macro

* update readme

* Add QMK Configurator support
2018-11-09 12:15:37 -08:00
519ce723fb Added support for backlight on diverge3 , and added a UK iso layout ()
* Added support for backlight , and a UK iso layout

Added support for backlight , and a UK iso layout. Now uses the SPLIT_KEYBOARD #define rather than relying on lets split

* Update keyboards/diverge3/keymaps/isoUK/keymap.c

Co-Authored-By: mcmadhatter <mcmadhatter@hotmail.com>

* Update keyboards/diverge3/keymaps/isoUK/keymap.c

Co-Authored-By: mcmadhatter <mcmadhatter@hotmail.com>

* Simplified the lower layer

Simplified the lower layer

* dir rename to snake case

dir rename to snake case

* changed dir case

changed dir case

* Update keyboards/diverge3/rules.mk

Co-Authored-By: mcmadhatter <mcmadhatter@hotmail.com>

* Update keyboards/diverge3/keymaps/iso_uk/config.h

Co-Authored-By: mcmadhatter <mcmadhatter@hotmail.com>

* Update keyboards/diverge3/config.h

Co-Authored-By: mcmadhatter <mcmadhatter@hotmail.com>

* Update keyboards/diverge3/keymaps/iso_uk/keymap.c

Co-Authored-By: mcmadhatter <mcmadhatter@hotmail.com>

* Update keyboards/diverge3/keymaps/iso_uk/keymap.c

Co-Authored-By: mcmadhatter <mcmadhatter@hotmail.com>

* Update keyboards/diverge3/keymaps/iso_uk/keymap.c

Co-Authored-By: mcmadhatter <mcmadhatter@hotmail.com>

* Update keyboards/diverge3/config.h

Co-Authored-By: mcmadhatter <mcmadhatter@hotmail.com>

* Update keyboards/diverge3/keymaps/iso_uk/config.h

Co-Authored-By: mcmadhatter <mcmadhatter@hotmail.com>

* Update keyboards/diverge3/keymaps/iso_uk/config.h

Co-Authored-By: mcmadhatter <mcmadhatter@hotmail.com>

* Update keyboards/diverge3/keymaps/iso_uk/config.h

Co-Authored-By: mcmadhatter <mcmadhatter@hotmail.com>

* aligned and tidyied up

aligned and tidyied up
2018-11-09 11:16:08 -08:00
6ae409dd55 Add my new ANSI layout dz60 setup ()
* minor additions to alps64 and dz60

* Rename crd keymap to represent 2u lshift layout

* Add crd's new ANSI layout dz60 with preferred layers
2018-11-09 08:49:29 -08:00
fa2183a64a Keymap: dlg's tada68 keymap ()
* dlg's keymap

* fix list order

* remove cruft

* pragma

Co-Authored-By: dlgoodr <dlg@dsrw.org>

* turn on bootmagic, enable swapping ` and Esc while I figure out which compromise is least bad
2018-11-08 17:01:16 -08:00
73883425a5 relocate 40percent.club boards to new parent folder ()
* Initial move of 40percent.club boards to common parent folder.

* Refactor readme files to be consistent

* Refactor readme files to be consistent - fix make command examples.

* Refactor readme files to be consistent - align readme filenames.

* Refactor readme files to be consistent - fix repo url.

* Disable Community keymap builds as they are currently failing due to missing functionality

* Move more of 40percent.club boards to common parent folder.

* Refactor readme files to be consistent - align readme filenames.

* Refactor readme files to be consistent - fix make command examples.
2018-11-08 15:17:41 -08:00
ef84bd9799 Keyboard: Add 30wer config and keymap ()
* Preliminary 30wer firmware. Not tested on real board yet.

* Added a layer to default 30wer keymap.

* Wrote readme for 30wer.

* Added 30wer info.json.
2018-11-08 15:12:42 -08:00
5eb69ca224 Keyboard: fix ifdef for crkbd's default/keymap.c
undef SSD1306OLED should not kill entire process_record_user() function.
2018-11-08 06:45:09 -08:00
ba76fcfb8b Add Layout-b for GH60 satan ()
* Add Layout-b for GH60 satan

* Update layout, toggle for colemak layout

* Rename layout, replace function with KC_GESC

* Update Layer order, Readme

* Remove unnecessary code

* Add backspace in extend layer
2018-11-07 21:39:29 -08:00
945dd946ab Fix misspelled make option, format rules.mk files () 2018-11-07 09:29:57 -08:00
94f58322ac Configurable Rainbow Swirl range ()
* Configurable Rainbow Swirl range

This allows tweaking of the rainbow effect to
 get different effects on keyboards with varied
 LED layouts. We found the value 1950 works on
 the RGBKB.net Sol to get a cool striped effect
 across the keyboard.

* Document RGBLIGHT_RAINBOW_SWIRL_RANGE

* Better wording for the documentation
2018-11-07 08:25:18 -08:00
a30dd2bb17 Add xd75/billypython keymap ()
* Add xd75/billypython keymap

* Expand rules.mk

(cherry picked from commit 806fee94ae3a21b6ca7a34624101349b57d41b75)

* Expand billypython's rules.mk

* Remove unused stuff in whitefox/billypython
2018-11-06 17:04:02 -08:00
fc477a1ee7 Add Tragicforce 68 layout for split backspace and add configurator layouts () 2018-11-06 13:13:58 -08:00
f01a80968b Port over Noxary 268.2 from Rosakiin's Noxary Firmware ()
* port over 268.2 from Noxary Firmware

* rename files

* update readme

* put rozakiin's ame in more places

* add configurator support

* Update keyboards/noxary/268_2/n268_2.c

Co-Authored-By: mechmerlin <30334081+mechmerlin@users.noreply.github.com>

* Update keyboards/noxary/268_2/keymaps/default/keymap.c

Co-Authored-By: mechmerlin <30334081+mechmerlin@users.noreply.github.com>

* rename 268_2 keyboard files
2018-11-06 12:35:08 -08:00
3dec80b774 Improve wording, punctuation and capitalization in newbs_getting_started guide ()
* Improve wording, punctuation and capitalization in newbs_getting_started guide

Also add some links

* Update example build command output

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

* Replace occurrences of "layout" with "keymap"

Co-Authored-By: MechMerlin <30334081+mechmerlin@users.noreply.github.com>

* Explicitly instruct users to open an MSYS2 MinGW 64-bit terminal

* MSYS2 Console → MSYS2 MinGW

* Replace thin spaces with regular spaces
2018-11-06 12:21:44 -08:00
a5d22424f4 Commit my DZ60 keymap ()
* default mechmerlin keymap initial commit

* fix up the keymap

* cleanup keymap

* add rgb sleep functionality

* add the beginning of a readme

* fix that compile error

* fixup formatting

* spruce up that readme

* add RGB lighting controls to _CL layer

* update readme

* set rgb underglow color

* update readme

* fix formatting
2018-11-06 12:04:25 -08:00
29dd664589 Add whitefox/billypython keymap ()
* Add keyboards/whitefox/keymaps/billypython

Cloned from vomindoraan/qmk_firmware

* Customize keymap for Linux
2018-11-06 12:03:33 -08:00
a91f439aec Helix-serial.c configuration improvement ()
The new simple API can be selected.

Previous version, can select two way.
  * use old API (compatible with let's split serial.c)
  * use new API (multi-type transaction)

This version, can select three way.
  * use old API (compatible with let's split serial.c)
  * use new API (single-type transaction)
  * use new API (multi-type transaction)

There is no change in the code generated by this change.
2018-11-06 12:02:30 -08:00
8f5ac39fb9 separated all my changes into separate files, working on generalizing my relativity macros. ()
* Updating to my local changes.

* Added auto-complete for joins.

* Added lights to imply current state better
2018-11-06 12:01:18 -08:00
f8d8005835 Zinc : Update to latest serial.c ()
* Add Zinc keyboard

* Fix photo

* Fix readme.md

* Fix RGB LED init of monks/keymap.c

* Fix default keymap and readme.jp

* Fix change DEFS of RGB ANIMATIONS to LED_ANIMATIONS

* Add EOL

* Use serial_config_simpleapi.h

* Fix comment char

* Fix error handling in split_scomm.c : mtei works

* Fix keymaps

* Remove DISABLE_LEADER definition

* Remove pro_micro.h

* Add 2 spaces after Hardware name

* Fix keymaps
  - remove audio codes
  - change LAYOUT to LAYOUT_ortho_4X12
  - change "persistent_default_layer_set" to core function

* Use the Community Layouts feature
  -  with some clean up

* Update latest serial.c 
2018-11-06 12:00:02 -08:00
63e212c0b7 Add localized LED flash effect on keypress to Massdrop ALT () 2018-11-06 11:54:53 -08:00
388df5359b Fix Spacing issue in makefile that breaks Terminal config 2018-11-06 11:31:40 -05:00
1b3ac77fec mapdev's Espectro layout ()
* Add mapdev layout to espectro

* Add mapdev layout to espectro

* - Update MO

Co-Authored-By: tcatkins99 <tatkins@beitzanddaigh.com>
2018-11-06 08:06:50 -08:00
73e634482e command.h include was not set correctly 2018-11-06 00:40:30 -05:00
40313cfa3b Fix Terminal feature on ChibiOS 2018-11-06 00:40:02 -05:00
ec34b53864 Fixe line endings 2018-11-06 00:39:37 -05:00
4a033641df Update Features page to reflect all of the features linked in the sidebar/summary 2018-11-06 00:38:54 -05:00
26a201e687 fix example to reflect caveat 2018-11-06 00:38:44 -05:00
6e44f94f21 Add EEPROM_RESET keycode to core code ()
* Add EEPROM Reset keycode

* Add keycode to docs

* Move EEPROM Reset code to the end of the enum

* Cleanup and naming change
2018-11-06 00:38:18 -05:00
f2101cfb6a Update to drashna keymaps ()
* Consistency fixes and more eeprom defaults

* Handle setting Unicode mode on eeprom reset better

* Unicode EEPROM hack

* Re-enable permissive hold and ignore mod tap

* Set unicode input mode

* More unicode stuff

* more haaaaaacks

* Attempted RGB Cleanup

* Fix compiler issue

* Add GitLab CI config for personal compiling

* Add avr gcc version to GitLab CI script

* Add rgblight init to matrix init
2018-11-06 00:36:26 -05:00
6729265625 Clarify the Mod Tap defines in documentation ()
* Fix up Mod Tap settings keys

* Change link names

* permissive hold wordsmith

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

* ignore mod tap wordsmithing

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

* grammar fix

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

* wordsmithing

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

* word smithing

Co-Authored-By: drashna <drashna@live.com>
2018-11-06 00:35:16 -05:00
4636f0f623 Remove ALTG(kc) as it's misleading and is not actually AltGr ()
* Remove ALTG(kc) as it's misleading and is not actually AltGr

* Add temporary alias for ALGR in keyboards/planck/keymaps/pevecyan/keymap.c
2018-11-06 00:34:54 -05:00
5729380530 Keyboard: Initial 6lit port ()
* Initial 6lit port

* Pull request review changes

* Switch to bootmagic lite
2018-11-05 19:01:13 -08:00
a3bb8c05c9 Keyboard: Initial foobar port () 2018-11-05 19:00:54 -08:00
a49d0a1e83 Keyboard: Add Nyquist Rev 3 ()
* Add Nyquist Rev 3

* Switch to split_common
2018-11-05 11:00:38 -08:00
a95fc388fd Redox: move curly brackets one row down. ()
In , the 2 curly brackets were inadvertently moved one row up. This fixes that.
2018-11-05 06:04:52 -08:00
d1d5f20078 Update whitefox/konstantin keymap ()
* Use Magic+Esc for entering bootloader mode

* Expand rules.mk

* Improve FN_RCTL tap dance

* Avoid one-line if statements

* Add PROGMEM to keymaps definition

* td_fn_rctl_* → td_fn_rctrl_*

* Fix FN_RCTL tap dance bug when count is 4, 8, 12 etc.

* Add ACTION_TAP_DANCE_DOUBLE_MODS

* Rearrange/rename keycode defines

* Use RAL_RGU and RCT_RSF in keymaps

* Replace keymap ASCII art with box drawing characters

* Add FN_FNLK and use it

* Set Unicode input mode in eeconfig_init_user instead of matrix_init_user
2018-11-05 06:04:14 -08:00
f2fda1bd56 Keymap update Adding RGB underglow controls. ()
* Update userspace with common config.h

* Add my dz60, satan and xd75 keyboard keymaps

* Fixing executable bits changed during last upstream merge

* Cleanup unnecessary files and defines

* Remove unnecessary defines from userspace config

* Add underglow controls to dz60 function layer

* Fixing merge conflicts

* Fixing exectable bits changed during merge
2018-11-05 00:05:48 -08:00
f28a4e39fc Fix Espectro build ()
After further testing and feedback from others, the bottom row matrix was incorrect.  Also RGB number was incorrect (I was tired when building this, really shouldn't do that).
2018-11-04 16:00:33 -08:00
756d92c1a0 Keyboard: Update the serial.c of crkbd based on the helix-serial.c () 2018-11-04 10:46:26 -08:00
e9fd42df71 converter/adb_usb Configurator support and adb_usb.h cleanup ()
* converter/adb_usb: Configurator support

Note: LAYOUT_ext_ansi has a blank space between the Spacebar and the
Right Alt/Option key when loaded in the Configurator. This is
deliberate.

Stock Apple Extended Keyboards and AEK IIs send the scan code for Left
Command when either Command key is used. (This is noted already in the
readme.) That being the case, the Command keys cannot be assigned to
different functions. Whichever keycode is placed on Left Command will be
used for both Command keys.

* converter/adb_usb: adb_usb.h cleanup

- replaced KEYMAP_COMMON_H with ADB_USB_H
- white space changes for visual alignment in LAYOUT_ext_ansi macro
2018-11-04 09:32:42 -08:00
3946ea2141 Keyboard: adding Espectro ()
* added Espectro

Added Espectro keyboard from MechKeys.ca

* Update keyboards/espectro/config.h

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/config.h

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/config.h

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/espectro.c

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/espectro.c

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/espectro.c

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/espectro.c

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/espectro.c

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/espectro.h

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/espectro.h

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/espectro.h

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

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

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

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

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/keymaps/mac/config.h

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/keymaps/mac/config.h

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/keymaps/mac/config.h

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/keymaps/mac/config.h

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/keymaps/mac/keymap.c

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/keymaps/mac/keymap.c

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/keymaps/mac/keymap.c

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/keymaps/mac/keymap.c

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/keymaps/mac/keymap.c

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/keymaps/mac/keymap.c

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/keymaps/mac/keymap.c

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/keymaps/mac/keymap.c

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/keymaps/mac/keymap.c

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/keymaps/mac/keymap.c

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/readme.md

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/readme.md

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/readme.md

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/readme.md

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/rules.mk

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/rules.mk

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/rules.mk

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/rules.mk

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/rules.mk

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/rules.mk

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/rules.mk

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/rules.mk

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/rules.mk

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/rules.mk

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/rules.mk

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* fixing Espectro pull request

* fixing macros in mac keymap
2018-11-04 07:39:58 -08:00
b5d7bb6154 converter/usb_usb Refactor and Configurator support ()
* converter/usb_usb: layout macro refactor

- KEYMAP_ALL renamed to LAYOUT_all
- KEYMAP renamed to LAYOUT_ansi
- KEYMAP_ISO renamed to LAYOUT_iso
- KEYMAP_JIS renamed to LAYOUT_jis

* converter/usb_usb: keymap refactor

- all keymaps now use #include QMK_KEYBOARD_H
- layout macro names updated
- removed deprecated TMK macro/function code

* Add info.json file for Configurator support
2018-11-03 23:57:42 -07:00
60ed0b7c30 Keyboard: Port over the x268 Noxary Firmware ()
* port over Rozakiin https://github.com/Rozakiin/Noxary_Firmware/tree/master/noxary_x268

* rename LAYOUT to LAYOUT_65_ansi default layout

* add configurator support

* add community layout support

* put Rozakiin's name everywhere

* update readme

* problems with the 65_ansi keymap to be diagnosed later
2018-11-03 15:09:32 -07:00
80c04b2919 5x5bt ()
* got bluetooth working

* get rid of description on bluetooth

* get rid of commented code used for testing

* Update config.h
2018-11-03 10:39:40 -07:00
BK
bdc72740cb Add distro support for sabayon ()
* Add distro support for sabayon

Sabayon is a gentoo based distro with a different package manager. Does
not need any use flags or masking for the required packages.

* Add missing backslash

* Put echo string in quotes, remove extra newline

* Order gentoo/sabayon packages alphabetically.
2018-11-03 10:38:37 -07:00
292a87ad04 Instructions on how to flash via STM32 bootloader ()
* Add instructions on flashing ARM keyboards with default STM32 bootloader

* fixed typo; added note suggestion to step 4
2018-11-03 13:08:05 -04:00
0633eb0273 Increasing square wave buffer to max volume. ()
* Increasing square wave buffer to max volume.

* Using range designated initializers for square waves; defining DAC_SAMPLE_MAX.
2018-11-03 12:22:57 -04:00
cd544e10a9 Keymap: Fixed poor layout of EP40 default keymap ()
* add initial ep40 files

* fixed issues

* updated keymap

* Added media control

* Update keyboards/handwired/ep40/rules.mk

Co-Authored-By: e11i0t23 <32494740+e11i0t23@users.noreply.github.com>

* Fixed requested changes

* Fixed more requested changes

* Added delete key to layor 1

* Updated defualt keympap to have a Backspace mod del key

* removed place holder

Co-Authored-By: e11i0t23 <32494740+e11i0t23@users.noreply.github.com>

* removed obsolete code

Co-Authored-By: e11i0t23 <32494740+e11i0t23@users.noreply.github.com>
2018-11-02 16:41:26 -07:00
6dec3550e0 Niu keymap ()
* Add modified planck layout

* Update rules
2018-11-02 14:48:44 -07:00
cec203ea80 USB Suspend for arm_atsam protocol
Rewrote USB state tracking for implementation of suspend state.
Updated suspend.c in entirety.
Main subtasks (generally hardware related) are now run prior to keyboard task.
2018-11-02 14:33:07 -07:00
563fe23e53 Fix CTRL/ALT keyboard does not wake computer from sleep
Fix for Massdrop CTRL and ALT keyboards not waking computer from sleep
2018-11-02 14:33:07 -07:00
f1529e74c4 Remove old declaration
Co-Authored-By: nooges <nooges@users.noreply.github.com>
2018-11-02 14:31:29 -07:00
a5fa75fcb3 Move disable JTAG code from keyboard_init to keyboard_setup
This way all split keyboards are using that code instead of just those using split_common with the fix
2018-11-02 14:31:29 -07:00
5779ffb59a Set the executable bit for sh scripts under util. 2018-11-02 13:42:05 -04:00
34112dac36 Adds the Proton C base project ()
* adds proton c base

* fixes custom matrix include

* adds readme.md

* usable pins, readme update
2018-11-02 12:44:57 -04:00
15f6278aa6 Add support for Atmega32A to pin declarations and universal matrix ()
* add computed pins from mcu type

* update for atmega32a

* doc typo

* add atmega16 chips, link to references

* remove avr include from config

* exclude assembler in config.h includes

* consolodate options, add 646

* fix typo in pindef
2018-11-02 12:31:40 -04:00
5909d8aef1 Keyboard: Add MiniAxe ()
* Add a new keyboard MiniAxe.

* Fix readme foramt.

Co-Authored-By: ka2hiro <ka2hiro@curlybracket.co.jp>

* Fix readme format.

Co-Authored-By: ka2hiro <ka2hiro@curlybracket.co.jp>

* Remove unnecessary keycode aliases.

* Remove unnecessary param.

Co-Authored-By: ka2hiro <ka2hiro@curlybracket.co.jp>
2018-11-01 22:55:29 -07:00
6eb7501eb0 Four Banger: Clean Up Indentation ()
Make indentation consistent and match project standards
2018-11-01 22:21:28 -07:00
7a22da9f05 Update rules.mk for Vinta ()
changed dfu args to exit to application mode after flashing
2018-11-01 17:28:01 -07:00
e08266129e Keymap: port atreus layout to levinson keyboard ()
* Keymap: port atreus layout to levinson keyboard

* fix (mostly deprecation) issues after review
2018-11-01 17:26:43 -07:00
153d1ecfcc Keymap: add jyh levinson keymaps ()
* Keymap: add jyh levinson keymaps

remove tap dance number keys due to sluggish responses

simplify I2C configuration

reverse hyper and meh positions

reduce tapping term to allow fast typing with mod tap space keys

remove Alt hold on right space key. too many false touches.

add vim-style arrows (hjkl) on asdf; semicolon/quote on raise

correct documentation string for jyh levinson layout

add alternative levinson layout for jyh

more inspiration from atreus keyboard. keeps shift in the expected
places. reduces number of layers. puts numpad layout easily
accessible. places important keys on palms and meta keys on top
corners for xmonad.

correct layer switching in jyh2 levinson layout

I was getting stuck on the numpad layer because the numpad hold key
was remapped once the layer was activated. Bad idea. Minor other
refinements.

use curly bracket { instead of brace [ on raise layer

add RGB keys on adjust layer

bootmagic key is confusing. turn it off.

try out permissive hold setting to make mod-tap better

remove hold for right control on quote key. too many mistakes

turn off permissive hold. it was causing unexpected behavior

enable rgb underglow animations

add make it pink/blue key to levinson layout

prevent stuck modifiers in jyh2 levinson keymap

* fix up deprecated code after code review

* remove PREVENT_STUCK_MODIFIERS because it is default

Co-Authored-By: yamad <jyamada1@gmail.com>
2018-11-01 16:52:47 -07:00
99740c670a Add some more useful features to my alps64 AEK layout ()
* Add mod-tap to right mods and shift

* Add del to fn1 layer and add fn2 layer for media and pcb debug
2018-10-31 22:27:57 -07:00
f63c0b7844 Add pointer(?) to disable_JTAG to prevent compiler errors () 2018-10-31 15:14:59 -07:00
bd6d6d93f2 Update iris 3 ()
* Fix incorrect LED pin assignment

* Strip out extra newline
2018-10-31 14:43:39 -07:00
5630ad7604 Added JTAG disable code to the split_common ()
Added JTAG disable code to the split_common slave code since the slave never calls keyboard_init(). In the future the slave should likely be modified to call keyboard_init() in some way, but without calling any of the unnecessary USB initialization code.
2018-10-31 14:42:15 -07:00
75d657b525 Configurator info.json fix for XD87 2018-10-31 13:18:44 -07:00
d147cf5ece Add support for planck/rev6 to dshields keymap. () 2018-10-31 07:07:34 -07:00
685cec47bb Configurator info.json fix for KBD19x
The info.json had a random backslash, which invalidated the JSON structure. This commit fixes that issue.
2018-10-30 17:47:24 -07:00
426c18b8c6 Keyboard: add ep40 qmk support ()
* add initial ep40 files

* fixed issues

* updated keymap

* Added media control

* Update keyboards/handwired/ep40/rules.mk

Co-Authored-By: e11i0t23 <32494740+e11i0t23@users.noreply.github.com>

* Fixed requested changes

* Fixed more requested changes
2018-10-30 14:55:22 -07:00
7fc9170ea7 Add crd's AEK layout for ALPS64 board () 2018-10-30 09:10:53 -07:00
7373d5b394 Update feature_bootmagic.md ()
Fix typo
2018-10-30 08:37:08 -07:00
31ff5f219d Move grave to top layer (caps is esc) () 2018-10-30 08:22:25 -07:00
9315172190 helix serial.c: Add the version of gcc used for adjustment to the comment. 2018-10-29 22:25:48 -07:00
a9c5e75437 Planck keyboard layout update ()
* Personal dz60 keymap

* Replacing unused macros

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

* Fixes on keymap

* Planck keyboard layout update
2018-10-29 22:21:07 -07:00
34f102de7d Keyboard: Vinta ()
* added initial config files for vinta

* added readme

* changed product id and device ver

* fixed keymap illustration

* updated rules.mk to enable more commands

* removed a bunch of pre-code text; changed some grammar woopsies

* removed bootmagic lite

* updated developer's note

* updated readme.md
2018-10-29 22:00:40 -07:00
1fa6c1d818 Make linux_install.sh work with openSUSE Leap 15.0 () 2018-10-29 13:48:24 -07:00
1e96346f28 Keymap: Added personal Contra layout. ()
* Added personal Contra layout.

* Update keyboards/contra/keymaps/bramver/rules.mk

Co-Authored-By: BramVer <bramvereertbrugghen@live.be>

* Update keyboards/contra/keymaps/bramver/keymap.c

Co-Authored-By: BramVer <bramvereertbrugghen@live.be>

* Update keyboards/contra/keymaps/bramver/keymap.c

Co-Authored-By: BramVer <bramvereertbrugghen@live.be>

* Reformatted layers to use the layout format.
2018-10-29 10:45:17 -07:00
6a629e5d0d Keyboard: add support for kbd19x ()
* 60_ansi keymap for DZ60

* 60_ansi keymap for DZ60

Amend author

* 60_ansi keymap for DZ60

* Merge new phantom layout from dev branch

* Initial util/new_project files

* Progress checkpoint (compiles, but untested)

* Progress snapshot, still working on layout graphics

* Add layer images

* Tidy up formatting

* First cut at info.json for kbd19x default layout

* Add default keymap

* add all-keys layout

* clean up documentation

* Update keyboards/kbd19x/info.json

Co-Authored-By: jshuf <44121348+jshuf@users.noreply.github.com>

* Update keyboards/kbd19x/rules.mk

Co-Authored-By: jshuf <44121348+jshuf@users.noreply.github.com>

* Change layout name from default to ansi
2018-10-29 10:33:07 -07:00
cd23984afc Fix undefined reference to console_printf for CTRL and ALT keyboards
Fix undefined reference to `console_printf` for CTRL and ALT keyboards when enabling CONSOLE_ENABLE
2018-10-29 10:26:30 -07:00
cd87a8a323 fixed broken linebreak in fedora part, and indentation in arch-part 2018-10-29 07:17:22 -07:00
d63fb6f716 helix serial.c: add some comment 2018-10-28 10:39:08 -07:00
8517f8a660 Helix serial.c re-adjust compiler depend value of delay ()
* Helix serial.c add debug code

* re-adjust READ_WRITE_WIDTH_ADJUST values

* re-adjust READ_WRITE_START_ADJUST values

* re-adjust TID_SEND_ADJUST value

* Helix serial.c: remove debug code
2018-10-28 10:12:44 -07:00
c60a312ba9 Further unify old iris keymap 2018-10-28 08:44:58 -07:00
b9811fd7e7 Make old keymap super compatible 2018-10-28 08:44:58 -07:00
0f086e4889 Add Alternate DVORAK layout 2018-10-28 08:44:58 -07:00
214241853a Fix Bootmagic_lite function 2018-10-28 08:44:58 -07:00
9d27bb512f Fix userspace config.h 2018-10-28 08:44:58 -07:00
d29a61e9ce Add Bootmagic Lite for now 2018-10-28 08:44:58 -07:00
ba7a1e8976 Update old iris config 2018-10-28 08:44:58 -07:00
7b3ead0133 Remove 'return false' in macros since it's not needed
And it produces better handling overall.
2018-10-28 08:44:58 -07:00
4df74f6058 Minor updates to keymaps 2018-10-28 08:44:58 -07:00
796bce5ab2 Cleanup KC_MAKE command 2018-10-28 08:44:58 -07:00
6ed925103f Change user EEPROM defaults 2018-10-28 08:44:58 -07:00
76b5ac621d Update to Corne Keyboard (crkbd) keymap 2018-10-28 08:44:58 -07:00
2776b9ee90 Update readme for userspace 2018-10-28 08:44:58 -07:00
3d15038dd4 Make RGB init write to eeprom once 2018-10-28 08:44:58 -07:00
2abb29402a Keymap: Updates to guidoism layout ()
* Initial commit of guidoism

* created movement layer

* movement layer works!

* removed unnecessary layers

* moved enter key up and recreated caps lock

* cleaned up

* num pad

* checkpoint

* checkpoint

* checkpoint

* Added num pad

* changed max power draw so i can use this on ipad

* move around quotes

* added tri layer for a homed numpad

* moved layout to new style

* Update readme.md

* Update readme.md

* Update readme.md

* Update readme.md

* added keys to unicode conversion

* removed adjust layer since its not used anymore

* moved esc to seperate key

* tweaked python

* checkpoint

* new code put into function

* new code put into function

* cleanup

* cleanup

* new code works perfect

* removed old code

* removed old code

* generate_c.py now replaces code within keymap.c

* added function layer

* updated readme

* updated readme

* updated readme

* updates readme

* updates readme

* updates readme

* Tweaks based on CR

* Remove old guidoism

* Use MO(_FUNCTION) directly
2018-10-28 08:29:37 -07:00
4ffcacd920 Add Bootmagic Lite to QMK ()
* Preliminary additon of bootmagic lite functionality

* Cleanup code

* Clean up bootmagic code

* Add documentation and clean up code

* Make 'lite' an option for BOOTMAGIC_ENABLE

* Update Templates with note about Bootmagic Lite option

* Detect Debounce variable

* Make sure debounce is a non-zero number

* Capitalize Bootmagic

* Capitalize bootmagic

* Update wording

* Re-add EEPROM reset, by popular demand

And add eeprom-less version to drashna userspace for his sanity

* Fix spacing

* Set BOOTMAGIC_ENABLE to use full/lite/off

And default yes to "full" for compatibility

* Add Bootmagic lite info to templates

* Remove text from makefiles

* Cleanup of makefile

* mention yes in bootmagic docs

* Wordsmitthing the docs

* Fix white spaces

* Readd default bootmagic setting, because it's necessary
2018-10-27 14:53:50 -04:00
5be438f03d Keymap: update keymap transmogrified ()
* layer locked breathing, layer changed brighter leds

* move config for tapping term into config.h

* Respect LED off even with layer indicators, add readme and update config
to new standard

* update Readme with note about both sides of board being required to flash
2018-10-27 09:41:17 -07:00
9ea0103520 Keyboard: Redox keymaps refactoring ()
* Reconfigured keymap macro to resemble physical layout

* Updated italian keymap

* Added RGB controls

* Updated default keymap

* Updated german layout

* Updated jeherve keymap

* Changed include guards to pragmas

* Changed include guards to pragmas in keymaps

* Update readme

* Fixed unused include

* Fixed indentation
2018-10-27 09:40:28 -07:00
569545a78f Keymap: Personal dz60 keymap ()
* Personal dz60 keymap

* Replacing unused macros

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

* Fixes on keymap
2018-10-27 08:30:47 -07:00
2da8522154 Keymap: add my planck rev 5 layout () 2018-10-27 08:29:34 -07:00
6916c0d728 Redox Wireless configurator support () 2018-10-27 08:23:12 -07:00
23cd9f4dee Keyboard: Add new keyboard Zinc ()
* Add Zinc keyboard

* Fix photo

* Fix readme.md

* Fix RGB LED init of monks/keymap.c

* Fix default keymap and readme.jp

* Fix change DEFS of RGB ANIMATIONS to LED_ANIMATIONS

* Add EOL

* Use serial_config_simpleapi.h

* Fix comment char

* Fix error handling in split_scomm.c : mtei works

* Fix keymaps

* Remove DISABLE_LEADER definition

* Remove pro_micro.h

* Add 2 spaces after Hardware name

* Fix keymaps
  - remove audio codes
  - change LAYOUT to LAYOUT_ortho_4X12
  - change "persistent_default_layer_set" to core function

* Use the Community Layouts feature
  -  with some clean up
2018-10-26 21:23:49 -07:00
73e92ef0c0 Docs: Add references to One Shot functions, and clean up formatting ()
* Docs: Add references to One Shot functions, and clean up formatting

* Update PR based on @mechmerlin's recommendations
2018-10-27 00:22:47 -04:00
d210ac7a3e Add caveat for basic keycodes in Tap Dance docs 2018-10-27 00:22:29 -04:00
f16b5cc92b Add delayed flashing option for DFU Util ()
* Add delayed flashing option for DFU Util

* Use a loop to make code cleaner

* Make delay configurable but default to 10

* Better formatting of check
2018-10-27 00:21:43 -04:00
5632552558 RGB Support for Panc60 ()
* add RGB underglow support

* enable RGB underglow and backlighting
2018-10-26 21:20:00 -07:00
d3a6296199 Add key caveat to combos doc 2018-10-27 00:18:22 -04:00
b1bf0879ad Fix mouse_send() on chibiOS so it won't lock up the firmware 2018-10-27 00:17:25 -04:00
b11a776cef Keymap: Update userspace (I want my Hacktoberfest shirt!) ()
* use ctl_t

* spruce up readme and add a changelog

* add comment about using CTL_T

* add more description

* use RSFT_T so I can still have a right shift key even on the _AL layer

* add config.h for rgblight_sleep

* update readme to talk about rgblight_sleep

* update changelog with new changes
2018-10-26 17:14:50 -07:00
6fa3cfbf53 Keyboard: Add HS60 V2 ()
* HS60 V2

- Created V1 and V2 folders
- Added V2 ARM configuration

* Problems in paradise

* More touble

* We got it now!
2018-10-26 16:14:29 -07:00
24b3556e84 add better example 2018-10-26 14:24:13 -07:00
85688e5b52 add support for encoders to core 2018-10-26 14:24:13 -07:00
e22c399245 Ergodox Infinity: Swapped Row and Column in comments ()
When comparing the pins in this file to the Ergodox Infinity schematic, it seems that the first section is describing the rows and the second section is describing the columns.
2018-10-26 14:12:40 -07:00
cc87445481 JD45: readme update
Updated the links to the Docs.
2018-10-26 07:03:46 -07:00
ca02863b56 JD45: mjt6u keymap refactor
- config.h
  - updated to remove redundancies
  - add #pragma once
- keymap.c
  - updated to use macro LAYOUT
  - redundant KC_TRNS and KC_NO definitions removed
2018-10-26 07:03:46 -07:00
db8454ca99 JD45: mjt keymap refactor
Updated parallel to LAYOUT_kc macro rename.
2018-10-26 07:03:46 -07:00
357c1bb657 JD45: justin keymap refactor
Updated parallel to LAYOUT_kc macro rename.
2018-10-26 07:03:46 -07:00
8cf15bffa0 JD45: jeebak keymap refactor
- config.h deleted (file was redundant)
  - layout macro LAYOUT_JD45 removed (identical to new macro LAYOUT)
  - ../../config.h include line redundant due to past changes to build script
- keymap.c
  - updated to use macro LAYOUT
  - redundant KC_TRNS and KC_NO definitions removed
2018-10-26 07:03:46 -07:00
340dd09758 JD45: default keymap refactor
Default keymap refactored to use new macro LAYOUT (from LAYOUT_kc).
2018-10-26 07:03:46 -07:00
899731679d JD45: blakedietz keymap refactor
- config.h
  - updated to more-preferred format
  - layout macro LAYOUT_JD45 removed (identical to new macro LAYOUT)
- keymap.c
  - updated to use macro LAYOUT
  - redundant KC_TRNS and KC_NO definitions removed
2018-10-26 07:03:46 -07:00
39addf8bc9 JD45: layout macro refactor
The macro that was LAYOUT prepended KC_ to all the keycode arguments, preventing the Configurator from working with the JD45. This macro is now LAYOUT_kc.

The macro LAYOUT is a more-standard macro.

Switch identifiers have changed throughout. Format is k<row><column>.
2018-10-26 07:03:46 -07:00
fa1ac4d724 Fix incorrect doctoring in feature.backlight.md ()
I'm guessing someone deleted a row at some point in the past, but I didn't blame it.
2018-10-26 06:59:41 -07:00
fc1e22ea94 Keymap: Mechmini layout ()
* Added my Mechmini2 layout to qmk.

* Added more info to the readme.

* Made changes.

* Update keyboards/mechmini/v2/keymaps/lbibass_625_space/keymap.c

Co-Authored-By: lbibass <ewdries02@gmail.com>

* Update keyboards/mechmini/v2/keymaps/lbibass_split_space/keymap.c

Co-Authored-By: lbibass <ewdries02@gmail.com>
2018-10-25 13:10:45 -07:00
3c95de3c69 Adding a readme to my userspace ()
* added userspace readme

* small fix to userspace readme

* another fix to userspace readme

* changed and improved userspace readme

* Update readme.md

* Update readme.md

* changes to readme again

* readme again
2018-10-25 13:08:25 -07:00
ffb2557a3a Keymap: Updated my(194h) keymap to make it more clean and useful ()
* Added my(194h) atreus62 keymap

* Fixed what noroadsleft remarked in my pull request, hopefully got it all.

* Followed drashna's suggestion.

* Removed unused functionality from my keymap, added tap dance æøå and changed Layer 1 and Layer 2

* Removed unused functionality from my keymap, added tap dance æøå and changed Layer 1 and Layer 2
2018-10-25 10:04:48 -07:00
a5b10e5da2 Fix syntax for windows 2018-10-24 15:03:32 -07:00
bef554d18b Bug: Users had to be in the /util directory to run the script () 2018-10-24 08:57:08 -07:00
9ed0c2d57b Keymap update ()
* change window focus shortcuts

* hangul

* macos goodness

* re-arrange tab keys

* remove tab switching keys

* left hand func

* glorious macro pad

* workspace rotation keys

* tabbing hotkeys

* left hand tab change keys

* SEND_STRING("!") on KC_EXLM

* use SEND_STRING for all shifted symbols

* SEND_STRING even for non shifted symbols so they play nicely with the shifted ones
2018-10-23 16:28:40 -07:00
b0a021c07a Made a userspace that allows you to use your keyboard as an order of operations based calculator ()
* Made DZ60 layout with calculator

* Cleaned up and commented, preparing to fix bug with negative in front of open parenthesis as first character

* Fixed bug where negative sign infront of parenthesis as first character was parsed incorrectly

* Made a better solution for the bug from the previous commit

* Modularized and added a userfile so that this code can be used on various keyboards, found in doogle999

* Removed commented code from keymap

* Made the layer that is used for calculations a define so that it can be changed per keyboard

* Made the readme

* Made the readme in the correct place

* Revert "Made the readme in the correct place"

This reverts commit 7f8b59ed9e59c77401a48be3a7ac1e8fd8e84e32.

* Manually synced with qmk upstream

* Stopped repeat, made keys print character that they are defined as rather than what the keyboard wants them to do

* Added support for numpad, might make all keycodes custom so that there is no need to change doogle999.c if you want to change the keycode that is associated with a function, also made numpad automatically activating an option

* Fixed some bugs with backspacing, updated the readme

* Fixed some bugs with numlock turning on at the wrong times when a shift key was down

* Made the return to layer work automatically instead of just forcing it to layer 0

* fixes and style changes, 20% decreased binary size

* Fixed some bugs with double printing and compilation errors on my side

* Fixed bug with exceeding the buffer size

* Removed changes that added const-ness

* Made changes so that backspace does not repeat to remove backspace bugs, still some bugs with recalculating without having typed anything

* Fixed obo error with calc main loop

* Made includes more accurate in keymap for dz60

* Moved flags to user makefile
2018-10-23 12:44:48 -07:00
c8267d9fea Update whitefox/konstantin keymap ()
* Change brace style to QMK OTBS

* Change Unicode input mode to UC_WINC

* Align constant values in config.h
2018-10-23 12:34:06 -07:00
6539426f61 keymap for 1upkeyboards/sweet16 multilayers rgb lighting and tapdance ()
* keymap for 1upkeyboards/sweet16 multilayers rgb lighting and tapdance

* Update config.h

typo

* cleanup

Co-Authored-By: ridingintraffic <michael.j.fettis@gmail.com>

* layers are using layout macro
replaced the include guard (the ifndef, define, and endif at the end) with just #pragma once
changed undergrow to use layer-change-code
emoji macros are using send_hex_code_string
cleaned up the includes

* tap() removed
maxtrix_scan_user updated
conf.h cleanup
2018-10-23 12:00:54 -07:00
03d16db942 Keyboard: Ported ADB-to-USB converter from TMK to QMK ()
* Ported ADB-to-USB converter from TMK to QMK

* Updated pull request with reviewer suggestions.

* Removed precompiled header file type (gch) from gitignore per reviewer request

* Update keyboards/converter/adb_usb/matrix.c

Changed instances of matrix_init_quantum to matrix_scan_quantum.

* Update keyboards/converter/adb_usb/matrix.c

Co-Authored-By: 13-bit <pete@13bit.me>
2018-10-23 11:52:57 -07:00
572c316e7d Keymap: Fix missing 4 key () 2018-10-23 09:29:35 -07:00
cb1e45b4ef Include quantum.h to fix travis CI errors 2018-10-22 21:35:35 -04:00
95619bdaca Fix file location for mmacdougal's keymap 2018-10-22 21:35:19 -04:00
8421a89820 added ASCII representation to dz60 iso-split layout and adjusted it so that it's consistent with the other layouts. () 2018-10-22 14:20:31 -07:00
5dc41446aa Keyboard: Chimera LS refactor and Configurator support ()
* Matrix/keymap refactor

- Deleted `KC_KEYMAP` macro
- Renamed `KEYMAP` macro to `LAYOUT_ortho_4x12`
- Default keymap updated to current QMK standards
  - #include QMK_KEYBOARD_H
  - Refactored from `KC_KEYMAP` to `LAYOUT_ortho_4x12` macro
  - `action_get_macro()` deprecated in favor of `process_record_user()`

`rules.mk` *not* updated to include `LAYOUTS = ortho_4x12` because I have no idea if and how that works on a split and/or wireless keyboard.

* readme cleanup: markdown formatting

* Add Configurator support

* added support for ortho_4x12 layout

* Macro and readme updates

Macros updated to use `KC_NO` directly.

Readme updates and cleanup.
2018-10-22 14:18:47 -07:00
e26a7b0ed8 Keyboard: initial support for XD87 ()
* Keyboard: initial support for XD87

* Add row/col pin configuration for XD87 PCB

* Add default ISO layout

* Fix incorrect KC in default_tkl_iso

The KC_NUBS is duplicated in the TKL ISO layout.
Compare with the fullsize ISO which has a KC_NUHS
in the corresponding place.

* Add support for community layouts

* Add TKL ANSI layout

* Enable TKL ISO/ANSI community layout

* Fix LAYOUT_all

* Configure backlighting for XD87

* Various documentation changes
2018-10-22 14:01:45 -07:00
418a886ae4 adds 'dfu-util' to macos_install.sh 2018-10-22 13:32:47 -07:00
552b1cccec Update the installation script PR ()
* Update docs to use qmk_install

* Update Vagrantfile to use qmk_install
2018-10-22 13:24:43 -07:00
11c4c71131 Fixup the WSL install 2018-10-22 13:24:43 -07:00
79d495f51d Add opensuse packages provided by @isolatedvirus 2018-10-22 13:24:43 -07:00
ca56c2145f Fold install_dependencies.sh into linux_install.sh and freebsd_install.sh 2018-10-22 13:24:43 -07:00
704a2e8d3c Keymap: Updates to personal userspace and keymaps ()
* - updated personal userspace
- updated fc660c, niu mini and planck keymaps
- added prime_o keymap

* Rename README.md to readme.md
2018-10-22 13:23:22 -07:00
e745144836 Keyboard: Prime_O layout/matrix fix () 2018-10-22 13:22:20 -07:00
352bef99a9 Keyboard: JJ40 Refactor and Configurator support ()
* Deleted LAYOUTS = planck_grid from rules.mk

* Refactor

* Configurator support

* Fixed offset layout matrix macro

* Readded LAYOUT_kc_ortho_4x12 matrix alias

* Refactor: rename LAYOUT_offset_right macro as LAYOUT_planck_1x2uR
2018-10-22 12:58:23 -07:00
6d7745a110 Keyboard: Port of TMK XT USB Converter ()
* Converter: add XT USB converter from TMK

* Converter: port TMK code for USB converter to QMK

* Apply requested changes after code review by @drashna

- use "pragma once" instead of include guards
- use LAYOUT instead of KEYMAP
- allow customisation with matrix_init_user() and matrix_scan_user()
- set BOOTLOADER instead of BOOTLOADER_SIZE
- Add XT_ENABLE to OPT_DEFS

* Remove unnecessary lines
2018-10-22 12:37:03 -07:00
bf57587e62 Keyboard: Zlant refactor and Configurator support ()
* Matrix/keymap refactor

White space and readability updates

* Configurator support

Added info.json file.

* Readme update

Markdown formatting

* Add support for ortho_4x12 keymaps

* Added planck_mit layout support

* Disable SWAP_HANDS_ENABLE for zlant:wanleg keymap

* Disable BACKLIGHT_ENABLE for zlant:bakingpy keymap
2018-10-22 12:35:09 -07:00
47dcda1087 Diverge3 - Workman Layout ()
* Diverge3: Workman Programmers Layout

* Diverge3: Comment Removal

* Diverge3: Image Links Fixed

* Diverge3: Images added

* Diverge3: Images cleaned up

* Diverge3: Images cleaned up

* Diverge3: Removing Images

* Diverge3: Improving readme.md

* Diverge3: Improving readme.md

* Diverge3: Add supporting Comments

* Diverge3: Update readme

* Diverge3: Update readme

* Diverge3: Updates per comments in PR

* Diverge3: Updates per comments in PR

* Diverge3: Updates per comments in PR

* Diverge3: Updates per comments in PR

* Diverge3: Updates per comments in PR

* Diverge3: Updates per comments in PR
2018-10-22 12:04:28 -07:00
a2b650df47 Keymap: Add mmacdougall keymap ()
* Add mmacdougall keymap

* Make requested changes
2018-10-22 11:59:40 -07:00
9374c0c9db Add caveats for shifted characters ()
* Add caveats for shifted characters

And some formatting and grammar corrections.

Closes 

* Fix spelling of remote

* Fix spelling error

* Remote not Remove

* Remote not Remove
2018-10-22 14:57:15 -04:00
ab3fbfdb3b Update hardware config warnings to be more accurate
Closes 
2018-10-22 14:56:25 -04:00
7e99d869de Remove all of the deprecated RGB defines
Fixes 
2018-10-22 14:55:57 -04:00
00b6f14821 Replace outdated RGB/Audio information 2018-10-22 14:55:05 -04:00
5694e7b6a6 Keymap: add new keymap ()
* an attempt at own layout

* typematrixed dvorak

* columns shifted

columns shifted out, second pinky column moved to the inside.

* Update users/romus/romus.h

* code cleanup

Changes requested by Drashna + Tap Dance enabled

* Fixed EOF

Fixed the no newline at the end of file alert.

* rgblight fight eeprom writes

* rgb code simplification

* Update users/romus/README.md

* Update quantum/keymap_extras/keymap_slovenian.h
2018-10-22 11:54:31 -07:00
cf19cb0dbe Add Bluepill (stm32f103) handwired keyboard ()
* Main folder

Main folder with some changes like the base layout and matrix for uploading in a future to the qmk repositorie

* First Commit

Firsts non previously commited changes:
-Changed to keyboards/handwired
-Basic credit to Xydane
-70% Layout

* Modified file structure for several keyboards

As I don't want to create several folders and overcrowd the main folders I made a few modifications to being able of configure several keyboards as revisions of the main keyboard.
Added a second variant.
Compiling tests went right but I haven't tried it on the controller.

* Starting leds

* Started dual color leds PWM functions and configs

I started to create the PWM functions and configs based on internet examples, it doesn't compile yet

* Backtraced a bit to establish and try debug before continuing the pwm

Just this, algo some doc as a new pinout image, space cadet modification to try if it works and little more

* Deleted unuseful stuff

After trying the reestructure to being compatible with several keyboards and that it worked I deleted the other keyboard.
Added space cadet shift to ISO.
Finally I couldn't debug everything and I'm getting quite frustrated to continue much more than just adding pwm leds

* Changed again Iso fix for Space Cadet

* Renamed keyboard, future pull

I just renamed the keyboard and made some simplifying changes in order to make a pull request sometime soon.

I'm too frustrated, tired and knowledge limited to achive using the PWM for leds, I didn't even get to use the debug mode...

I intend to end basic led color change using layers (if I can), document everything properly and make a pull request so other users can continue/use this project.

* Writed Readme.md file

I also corrected a previous compilation problem and ordered a bit the keymaps

* Corrected readme

* Try to add layer activated light

* Revert "Try to add layer activated light"

This reverts commit 205af820d845dab08988f329b9f062f558060220.

* Progress to fork

Coming back to work, upcoming pull

* Linked image

Corrected readme

* Some cleanning

Added images to readme, som cleaning, burning after commit.

* Almost finished (working)

Finally

* Finished bluepill firmware

Just finished and tried layer dependant led colors. Going for merge

* Deleted innecesary stuff and trailing spaces

Just as commit title said.

* Coding conventions

Just modified some files to respect coding conventions

* Deleted XXXXXX define

Checking some other PR seen this improvement

* Changes suggested on PR

Firs doing the easy changes

* More changes for the PR

-I also deleted one unused function for led toggling on matrix.c (Now it uses layer dependent baklight, algo on of on start)
-Deleted commented function on keymaps.

Right now only needs testing and all pragma replaces.

* Almost every pragma change on PR

That's almost finished, only waiting for reply due to compiling errors

* Revert "Almost every pragma change on PR"

This reverts commit 07f23aa862b370cdf0ae37d6f2130c9e9856f491.

* Revert last commit

I moddified by mistake a file from another keyboard

* Solved last pragma

Compiles fine.
Now I only need to test it, I say you if it works to include it in the main repository.
2018-10-22 11:45:45 -07:00
387bd555c7 Keyboard: Add Redox Wireless keyboard ()
* Added folder and default keymap

* Added italian keymap

* Fixed readme.md

* Added layer display through RGB led

* Added layer status display to italian keymap

* Fixed indentation

* Removed obsolete comments

* Updated instructions

* Fixed keymaps readmes and removed RGB controls on ADJUST layer

* Removed redundant KC_* definitions

* Fixed readme file

* Changed include guards to pragma once

* Removed unused audio functions

* Fixed rules.mk file

* Added spaces in readme to fix rendering

* Reconfigured keymap macro to resemble physical layout

* Updated default keymap

* Updated italian keymap

* Removed unused persistent_default_layer_set function
2018-10-22 11:41:57 -07:00
f69333a0e5 Lily58 default keymap fix / add keymap ()
* keymap fix/add

* keymap fix

* file fix

* typo fix
2018-10-22 11:39:26 -07:00
4665e4ffff Keyboard: Helix serial.c, split_scom.c bug fix and update ()
* helix/serial.c add support PD1,PD3,PE6 and configuration simplify

* Add comment about ATmega32U4 I2C

* Add compile time check for ATmega32U4 I2C

* change TAB code to 8 SPACE code

* Helix serial.c PORTD,PD0 test. OK

  OK PD0
  -  PD1
  OK PD2
  -  PD3
  -  PE6

* Helix serial.c PORTD,PD1 test. OK

   OK PD0
   OK PD1
   OK PD2
   -  PD3
   -  PE6

* Helix serial.c PORTD,PD3 test. OK

   OK PD0
   OK PD1
   OK PD2
   OK PD3
   -  PE6

* Helix serial.c PORTE,PD6 test. OK

   OK PD0
   OK PD1
   OK PD2
   OK PD3
   OK PE6

* Helix serial.c: PD0,PD1,PD3,PE6 all test end

* Helix serial.c: rename SOFT_SERIAL_PORT to SOFT_SERIAL_PIN

* Helix serial.c add debug code

* Helix serial.c: add transaction ID range check

* Helix serial.c debug code update

* Helix serial.c debug code update

* Helix serial.c: Strict checking of the value of tid.

* adjust the delay of serial.c

* Helix serial.c: remove debug code

* remove EXTRAFLAGS += -DCONSOLE_ENABLE from five_rows/rules.mk

tmk_core/common.mk has
 >ifeq ($(strip $(CONSOLE_ENABLE)), yes)
 >   TMK_COMMON_DEFS += -DCONSOLE_ENABLE

* Fix error handling in split_scomm.c

* add some comment to serial.c

* add some comment about SELECT_SOFT_SERIAL_SPEED
2018-10-22 11:38:05 -07:00
fbc6bd8266 Minor updates to build tools docs revised ()
* add initial khord iris keymap

* correct path of windows qmk install script
2018-10-22 11:29:04 -07:00
91bfbb6256 Updates docs - planck 6 and macos instructions ()
* add note about how to install rev6 (dfu-util)

* include instructions on installing dfu-util on macOS
2018-10-22 11:19:51 -07:00
dedbc37196 Doesn't need a 50ms debounce
Set it to default. I have no idea what I was thinking.
2018-10-22 09:06:18 -07:00
8e3330bbf6 Keyboard: bminiex : Working backlight ()
* bminiex : Working backlight

* bminiex keyboard with fixes

* bminiex keyboard more fixes
2018-10-21 09:20:24 -07:00
877c285ec8 Keymap: Renabled EXTRAKEYS in layout ()
* Renabled EXTRAKEYS.

* Update keyboards/iris/keymaps/vyolle_steno/rules.mk

Co-Authored-By: Vyolle <dchamberlin.ax@gmail.com>
2018-10-21 09:15:48 -07:00
4fffef8853 Keymap: add initial khord iris keymap () 2018-10-21 09:05:45 -07:00
ea17e363a6 Add instructions for zadig when bootloader device is unknown 2018-10-20 11:48:10 -04:00
26d2ef2ad1 Ergodox EZ: Use Correct Const For LED Color 2018-10-20 07:41:48 -07:00
f775168c4f Keymap: qwerty_code_friendly: update readme, comments () 2018-10-19 16:47:59 -07:00
6c086f2b6d Revert changes to chibiOS-contrib ()
* Revert "Keymap: qwerty_code_friendly: use numpad layout for f-keys ()"

This reverts commit efc88a0b16055dc0b2f94da8c46ea8fadeab70f4.

* Fix keymap
2018-10-19 12:42:28 -07:00
0d1e0a0d97 added an ISO split spacebar layout, keymap and readme files () 2018-10-19 12:05:34 -07:00
6f6d28fa8d Big Switch and 5x5 edits ()
* 4x4 - pro micro version

* pro-micro setup on 4x4

* tap dance LCTL/RESET key

* remove test file

* more research

* revert a couple un-intended edits

* opt_defs version of adding custom rules.mk variables

* cleanup

* cleanup

* cleanup

* cleanup

* layout edits

* layout edits

* keymap edit

* numpad layout change

* got tap dance layer-switch working

* keymap changes

* temporary revert

* restore previous settings

* misc fixes

* layer order change

* fix layout matrix

* Update tapdances.c

* playing around with triple tap dance

* sync with upstream

* quick edit

* tapdance cleanup

* mod tap interrupt

* tapping term edit

* tapping term adjust

* 5x5 board edits

* set gherkin tapping term

* big switch tap dance edit

* tapping term refinements

* 5x10 layout setup

* add audio for bigswitch

* keymap change

* keymap change & created testing board

* sound setup for big_switch

* more big switch size testing

* bigswitch testing finished

* final touch-ups
2018-10-19 11:01:40 -07:00
9ca73a9edc Keymap: Add dz60 iso-de layout () 2018-10-19 10:57:44 -07:00
78b48371aa Keyboard: Update logo and commonize it ()
* Update logo and commonize it

* Move the glcdfont.c to the lib and add it to the SRC values of the rules.mk in the keymap folders

* Add static
2018-10-19 09:12:55 -07:00
efc88a0b16 Keymap: qwerty_code_friendly: use numpad layout for f-keys () 2018-10-19 08:43:55 -07:00
6c6897f778 Keymap: Update whitefox/konstantin keymap ()
* td_fn_ctrl_* → td_fn_rctl_*

* Swap Fn and RCtrl

* Change key combination for Command feature

* Replace register/unregister_code call with tap_code

* Add virtual desktop controls to keymap

* Add/close virtual desktop on Fn+GUI tap dance
2018-10-19 08:42:01 -07:00
ae31eb564a Keymap: Trigotometry's Preonic ()
* adding my keymap

* updated pull request comments from dashna, including redundancies and DVORAK entirely

* changed over visual representation to use 'LAYOUT_preonic_grid()'

* added a ReadMe and commented out AUDIO_ENABLED related stuff in keymap.c until I can align with current QMK standards

* Update readme.md

* readme corrections and adjustments
2018-10-19 08:40:46 -07:00
7222e3691b Fix Unicode EEPROM handling so it is consistent. ()
* Fix Unicode EEPROM handling so it's consistant

* Remove changes to my userspace

* Optimize variables used

* fix functions

* additional cleanup

* Add False Flag

* rename function
2018-10-19 00:35:15 -04:00
7e1b57add4 Some cleanup of the Useful Functions docs ()
* Add examples for tri layers

* Clean up and spelling fixes
2018-10-19 00:34:40 -04:00
f4094930a3 stm32f1xx EEPROM emulation ()
* * Add stm32f1xx EEPROM emulation
* Fix eeprom update compare bug

Squashed commit of the following:

commit b8f248ae08cec0cd81ecbb8854d9b39221d4d573
Author: hsgw <urkwtky@gmail.com>
Date:   Sat Sep 15 19:13:48 2018 +0900

    fix EEPROM_update wrong compare

commit d4ed4e6ea864e967a3e17f7edee4b0c3b4a25541
Author: hsgw <urkwtky@gmail.com>
Date:   Sat Sep 15 17:43:47 2018 +0900

    eeprom fix initialization define

commit b61aa7c04d70c64df3416d63e5da08b73b6053af
Author: hsgw <urkwtky@gmail.com>
Date:   Sat Sep 15 16:33:40 2018 +0900

    maybe working

* Fix FLASH_KEY defines
2018-10-19 00:33:23 -04:00
8efe8b498d Keymap: Added 194h atreus62 keymap ()
* Added my(194h) atreus62 keymap

* Fixed what noroadsleft remarked in my pull request, hopefully got it all.

* Followed drashna's suggestion.
2018-10-18 17:09:06 -07:00
fc1c692f71 Keymap: Adding my Minivan layout ()
* adding my keymap

* adding my Minivan keymap

* deleted old incomplete keymap

* added link to layout image

* adding my minivan keymap
2018-10-18 15:36:30 -07:00
480651cf9d Docs: Adding QMK Git Conventions doc; formatting cleanup on Learning Resources doc ()
* Docs: newbs_learn_more_resources.md: formatting

* Added QMK Git Conventions doc, initial version

* Renamed contributing_qmk.md to newbs_best_practices.md

* Updated per review by @drashna

* Added navigation links

* Updated to Best Practices doc

* Minor updates to Learn More Resources doc

Markdown formatting consistency because I'm particular about it.

* Added Merge Conflict section to Best Practices doc
2018-10-18 15:12:11 -07:00
53a43dbe99 Keymap: Swap func layer keys and add vim navigation to navigation layer () 2018-10-18 13:53:39 -07:00
db03b76910 optimize rgblight_effect_alternating(void)
rgblight_effect_alternating (void) calls rgblight_sethsv_at () RGBLED_NUM times. As a result, rgblight_set () is called RGBLED_NUM + 1 times. This is wasteful processing.
2018-10-18 13:52:41 -07:00
14bdd5ed2a Keymap: added my tada68's from Gitlab. ()
* added my tada68 from Gitlab.

* Removed unneeded code and the sm0gunix layout.
2018-10-18 13:51:02 -07:00
f45bc9b362 Keymap: Add Planck keymap ()
* remove clmk and dvrk and backlight; switch esc and enter to be modtap; add meh key

* change songs

* space cadet; move enter; move '"; move pgup pgdn

* remove extra songs

* update from noahfredrick keymap

* make it easier to type ../../thing/*/*

* move pipe

* requested changes
2018-10-18 13:00:30 -07:00
4a7baaaf50 Keymap: Adding new functionality to personal keymap, smart macros ()
* Added base keymap

* Added initial layers and mirrored most of Pok3r behavior.

* Some stuff for Space Captain

* Added new Marianas keymap for DZ60

* Included suggestions to remove unnecessary line regarding MODS_CTRL_MASK, and added names for layers.

Added enum to define names for layers, and removed unused #DEFINE

* Added DVORAK and COLEMAK

* Caps + enter + space for flashing mode.

* Added RGB status

* added flash script

* Changed lighting modes to make layers more apparent

* fixed issue with not being able to exit gaming mode.

* Added abbreviation constructor

* Changed lighting modes to make layers more apparent

* fixed issue with not being able to exit gaming mode.

* Added abbreviation constructor

* Fixed bug with SQL Table Macro generator.

* restructured file. No Logical changes.

* literals only for smart macros

* removed extraneous pointer declaration.

* Smart Macros

* Added Makefile and header file

* extended smart macros to be able to cover the whole alphas.

* removed non-relavent keymaps.

* didn't mean to include this guy.
2018-10-17 21:38:24 -07:00
dad79cafcd Fix more broken links to the HID spec 2018-10-17 16:51:51 -07:00
d08f9cb6e4 Fix grammar, typos, and the link to HID specification 2018-10-17 16:51:51 -07:00
397d404ce0 Keymap: Added personal Quefrency layout () 2018-10-17 13:42:26 -07:00
9de4ace6f2 Keyboard: Add tkl_ansi_plus_five layout for Phantom ()
* 60_ansi keymap for DZ60

* 60_ansi keymap for DZ60

Amend author

* 60_ansi keymap for DZ60

* Merge new phantom layout from dev branch
2018-10-16 17:13:53 -07:00
1f13254460 Keymap: Personal keymap for planck ()
* added my keymap

* Adde more changes

* Moved to pevecyan folder

* Added slovenian mapping

* Slovenian keymap completed

* Suggestions updates

* Fixes on slovenian keymap

Made some typos in previous iteration
2018-10-16 16:56:39 -07:00
1d03af876c convert to unix line-endings [skip ci] 2018-10-16 23:11:58 +00:00
8ce9e3255e Fixes on slovenian keymap 2018-10-16 15:51:27 -07:00
1dc1e12fec Only include lufa.h if AVR in quantum/api.h 2018-10-16 17:11:51 -04:00
6cf9402cbc Fix LAYOUT define generation ()
* Fix LAYOUT define generation

Prior to this, only the full keyboard path was defined.  Eg `KEYBOARD_planck_rev6`.
But the docs mention `KEYBOAD_planck`, which never actually gets defined.

This addresses this, and creates a define for each level of the keyboard folder, so that stuff like `KEYBOARD_planck` actually exists.

* Clean up changes to make it more readable
2018-10-16 14:14:52 -04:00
76aa2baf3e Fix doc typo 2018-10-15 16:58:03 -07:00
423b419138 Keymap: 60_ansi keymap for DZ60 ()
* 60_ansi keymap for DZ60

* 60_ansi keymap for DZ60

Amend author

* 60_ansi keymap for DZ60
2018-10-15 13:27:09 -07:00
4e2817eff1 Keymap: Some tweaks to Maxr1998's Contra layout ()
* Make some keys more accessible, prevent mistypings

* Add "Gaming" layer which maps L-Ctrl to space (left-handed jumping compatibility-mode for all games)
2018-10-15 13:23:19 -07:00
31d12662bd Update to drashna keymaps and userspace - RGB edition ()
* Fix up userspace after feature merges

* Add new macros for keyboard layouts

* Keep new layouts in keymap for easy reference

* Cleanup layouts

* Fix CRKBD wrappers

* Fix up comments

* Fix spacing in orthodox base layer

* ergodox related cleanup

* Make KC_MAKE only flash when holding shift

* Add option to fast compile boards

* Clean up rgb modes to save space

* Re-enable Swap Hands on my Iris
2018-10-15 15:34:49 -04:00
44a348d56f Use DFU bootloader for rev 3 2018-10-15 10:56:46 -07:00
85f315ad65 Add Iris Rev. 3 2018-10-15 10:56:46 -07:00
2c3e617fba Keymap: Add nano keymap for modding Spooka light () 2018-10-15 10:53:32 -07:00
088b476343 Keymap: add sun_usb keymap for sigma ()
Also add users/sigma, which contains useful code for keymaps.
2018-10-15 10:49:51 -07:00
4c9372a081 Keyboard: Make type 5 the default sun keyboard. ()
Type 5 is better polished, and probably more common as the last non-USB Sun
keyboard.
2018-10-15 10:45:30 -07:00
4930e22dda Keymap: Move multimedia events to dedicated layer and format config () 2018-10-15 10:44:55 -07:00
0beb945554 Keymap: add JJ40 Skewwhiffy layout () 2018-10-15 10:44:19 -07:00
bf0bb1a4db Keymap: Update to ergodox layout ()
* Disable KB mouse & cleanup

* fix ascii-layout

* _______ is now defined by qmk

and apparently has been for a year already ;)
2018-10-15 10:43:11 -07:00
64459fedbf Keymap: Reworked layout ()
* Reworked layout

* Remove redundant defines

https://github.com/qmk/qmk_firmware/pull/4133#discussion_r224977420

* fix typo
2018-10-15 10:42:38 -07:00
47e29754c2 Keymap: added default layout to the kbd6x for the tofu hhkb ()
* added layouts

* fixed

* might aswell fix the default layout aswell
2018-10-15 10:41:43 -07:00
ec86141a4a Basic Slovenian keymap added ()
* Basic Slovenian keymap added

* Author fixed
2018-10-15 10:39:58 -07:00
f0f9283d02 Keymap: add new keymap for Iris ()
* Add files via upload

* Delete config.h

* Delete keymap.c

* Delete rules.mk

* Keymap w/mirror mode and steno support.

Keymap w/mirror mode and steno support. Can be used entirely one handed.

* Fixed some niggling issues.
2018-10-15 10:21:14 -07:00
9fbd7eb7a5 convert to unix line-endings [skip ci] 2018-10-15 16:24:29 +00:00
d7dea0e6d9 Fix ErgoTravel Board
It was not properly including the "config_common" files, and was causing it to break on the configurator.

Additionally, updated this to use the split common code.
2018-10-15 12:21:28 -04:00
533f684887 Keymap: Move navigation buttons closer to the middle on XD75:skewwhiffy ()
* RGB toggle button

* Remove custom lighting effects

* Fix small bug in Symbols layer

* Ignore mod tap interrupt in XD75 for skewwhiffy, and split layers into two for more flexibility and fix persistent layer issue

* Replace shift in nav layer with IntelliJ omnibox shortcut to avoid a sticky shift

* Remove custom setting in config, because it were annoying, it were.

* Move navigation buttons in one key

* Some review markups

* Use enums for layers

* Use LAYOUT_ortho_5x15

* Revert some capitalization changes made by accident
2018-10-13 13:46:46 -07:00
d81d216d72 Fix Typo in Custom Quantum functions document (led_state) ()
*_LOCK
  ↓
DEL
2018-10-13 00:40:42 -07:00
e5c315f961 Treasure Type9 Fix: change diode direction to ROW2COL () 2018-10-12 10:34:52 -07:00
0793abfd19 Add sendstring_german.h ()
* added sweet16 test keymap and touched sendstring_german.h

* added sendstring_german.h

* Delete keymap.c

As suggested deleted the keymap file.
2018-10-12 10:31:08 -07:00
52ecc76e28 port sun_usb converter from tmk
initial import
2018-10-12 10:26:58 -07:00
4bb0fb2ffc A comment indicating the insertion location of the new mode was added. 2018-10-11 17:14:42 -07:00
ec59556cd7 add a notice into docs/feature_rgblight.md 2018-10-11 17:14:42 -07:00
661e304033 Add a temporary comment to quantum/rgblight.h to aid migration.
Add a temporary comment. The content is a contrast table of old magic number and new symbol.
2018-10-11 17:14:42 -07:00
ae489efee4 Keymap: Add crd's simple layout ()
* Add crd's simple layout

* Fix transparent mapping in crd's config

* Add secondary navigation to fn layer
2018-10-11 17:00:53 -07:00
8a778d656d Keymap: Undo my backlight workaround ()
* Update jj40 keymap for easier pgup/pgdn

* Backlight problem fixed by a previous commit
2018-10-11 17:00:17 -07:00
a7d05820a6 Add documentation for Combo feature 2018-10-10 21:36:58 -04:00
43757cd985 Cleanup learning newb links 2018-10-10 21:36:32 -04:00
0e4374042c Update and cleanup AVR Hardware docs 2018-10-10 21:35:26 -04:00
6c55e8cab5 Keymap: DZ60 layout based on stephengrier's with PgUp/PgDn/Home/End, Insert, etc. ()
* DZ60 layout based on stephengrier's with customisations.

* CapsLock is used as Fn key.
* Del is available as Fn+Backspace & Shift+Backspace (using a macro)
* PgUp / PgDn / Home / End = Fn+Arrows (as on macOS, Microsoft Surface)
* Tilde = Shift+Esc
* Backtick = Fn+Esc
* Underglow toggle and mode selection are available as Fn+Q and Fn+W
* Reset (bootloader mode) = Fn+B

* Standardised layout formatting and Ctrl+Del & Shift+Del support.

Using 7 underscores for KC_TRNS in layouts and aligning the keycodes
according to LAYOUT_directional.

Del is now only Fn+Del, Ctrl+Backspace translates to Ctrl+Del,
Shift+Backspace translates to Shift+Del.

* Documented new Backspace/Del related macros.

Del is now just Fn+Backspace, pressing Ctrl+Backspace sends Ctrl+Del,
pressing Shift+Backspace sends Shift+Del
2018-10-10 14:17:42 -07:00
0e142138aa evil80: Add readme.md file 2018-10-10 13:26:06 -07:00
d17421d074 Added cheese keymap to tada68. ()
* Added cheese keymap to tada68.

* Removed extraneous definitions.
2018-10-10 12:58:11 -07:00
7d156263ab Orange75: cleanup and Configurator support update ()
* Orange75: cleanup and Configurator support update

`orange75.h`:
Moved `K014` to the second (number row) as the left half of a split Backspace (guessing at its true location; will need to be checked/tested after merge).

`info.json`:
Updated to match new `LAYOUT` macro.

`keymaps/default/keymap.c`:
- Updated to match new `LAYOUT` macro.
- Added layer mock-ups as block comments.
- Formatted to be a bit more readable.

* Orange75: deleted an extra comma from keymap.c
2018-10-10 12:56:45 -07:00
79bff50247 Keymaps: Helix rgblight mode update ()
* Helix each keymap's using rgblight mode symbol instead magic number

No change in build result.

* Helix pico keymaps: make rgblight modes selectable.

No change in build result.

* Helix rev2 keymaps: make rgblight modes selectable.

No change in build result.

* fixed Helix froggy/keymap.c: invalid rgblight mode value 0 to 1 (=RGBLIGHT_MODE_STATIC_LIGHT)

* Deselect RGB_TEST and ALTERNATING in Helix rev2,pico keymaps config.h.
2018-10-10 12:53:18 -07:00
ab91e07753 Massdrop keyboards console device support for hid_listen
Added hid_listen USB device for arm_atsam USB protocol.
Debug printing is now done through the console device (CONSOLE_ENABLE = yes) rather than the virtser device, for viewing in hid_listen.
Function dpf(...) renamed to CDC_printf(...) and should now be called directly if intending to print to the virtual serial device.
2018-10-10 13:49:01 -04:00
f2965e1eea Specify max layers supported in layer keycodes 2018-10-10 11:48:36 -04:00
1df10ae3bf Update default Planck layout to be more in line with standard conventions 2018-10-09 15:21:37 -04:00
5a127293e7 Fix formatting in Unicode text 2018-10-09 15:21:08 -04:00
7f6bb82b9d Added link to One Shot Keys 2018-10-09 10:27:03 -07:00
04e28470bc Added OSL to list of layer toggles 2018-10-09 10:27:03 -07:00
42add5450d Keymap: Iris Keymap ()
* IRIS Keyboard Keymap

I wanted a keymap that really changed things up. I also found that as a programmer I need as many symbols as I can get.

* Make cmd-option-escape work on a mac

* Add more prettyfication.

* Add other types of hold

* More work on the layer keys

* tweaks

* More tweaks.

* more tweaks

* Remove OSL/OSM they didnt seem to work very well
2018-10-08 19:50:42 -07:00
be227b4317 Keyboard: add orange75 ()
* New Keyboard: orange75

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

* Update keyboards/orange75/info.json

corrected

*   corrections

* added del to layout again

* clarified supported hardware

* directives...

* Update keyboards/orange75/config.h

* Update keyboards/orange75/readme.md
2018-10-08 18:20:31 -07:00
98a63d8d6e DC01 updates and I2C avr speed overwrite ()
* DC01 updates and I2C avr speed overwrite

- General updating of DC01
- Made F_SCL define in AVR I2C driver overwritable from config.h

* Update drivers/avr/i2c_master.c
2018-10-08 18:27:04 -04:00
914d42acd0 Update Bluetooth docs ()
* syncing upstream

* Bluetooth Doc update

More Description in bluetooth section, Addition to Config options rules.mk section.

* merge upstream

chibios

* lib/chibios checkout

* Additional EZ key Section

added back EZ-Key diy link, Cleaned up some errors
2018-10-07 11:23:41 -07:00
be2610b6da feat: Add 68Keys.io 2018-10-07 10:51:18 -07:00
aa707c6b9e Keymap: Personal Nyquist keymap added. ()
* Personal Nyquist keymap added.

* Responded to comments for PR.

Removed unnecessary imports.
Updated way of macros.
Removed tick from unicode inputs.

* formatting in keymap
2018-10-07 07:36:01 -07:00
370fdb89c2 Keymap: Adds TheVan RoadKit Gamepad Layout ()
* adds prototype firmware for wavebeem-gamepad

* adds installer script

* updates readme

* updates title

* adds prototype firmware for wavebeem-gamepad

* adds installer script

* updates readme

* updates title

* removes unused code

* removes more code

* simplify code
2018-10-06 20:55:48 -07:00
f86c0c2643 Update and clarify Unicode documentation ()
* Update and clarify Unicode documentation

* Fixed UCIS info based on feedback from algernon

* Further clarifications and cleanup

* Formatting

* Add an example for unicode map

* fix AutoHotKey title
2018-10-06 20:44:33 -04:00
7458ac9489 Update Contrib doc ()
* Add link for style

* ignore java

* Add example and update link?

* Minor fixes

* Change 1TBS text

* comments
2018-10-06 20:43:37 -04:00
cfa9f6ba6d Add non-US Hash and Backslash to AutoShift handling 2018-10-06 20:43:12 -04:00
60f5ce8890 Keymap: Update keyboards/planck/keymaps/vifon ()
* Implement macro recording

* Remove off-by-one from the macro recorder

* Holding both modifiers enables the third layer

* Exit the 3rd layer into one of the secondary ones

* Regular Enter and Escape on the secondary layers

Useful for the macro recording because the "tap" modifiers always act as
modifiers there.

* Remove the buffer overflow from the macro recorder

When the limit is reached, the backlight blinks with each keypress.

* More robust macro recording implementation

* Macro record refactoring and improvement

- support for a second macro (saved using the end of the macro buffer)
- improved reliability

* Add comments to my macros

* Macro recording: remove a redundant code

* Separate the raise+lower layer from the special layer

* Add back/forward keys

* Bind mouse movement

* More readable KC_TRNS

* Improve the mouse bindings

* Use a convenience macro instead of the low-level ACTION macro

* Add mouse to the Dual layer; make most of the layer transparent

* New "mouse" layer; clean up the "special" layer

* CapsLock, NumLock and ScrollLock on the Special layer

* Enable my fix for the stuck modifiers and adjust the dual layer to it

* Fix the macro recording after enabling the stuck mods fix

* Click with Lower/Raise+Space

* Reduce the memory used by the macro recording

Previously the auxiliary layers were numbered 30 and 31 which resulted
in all 32 array elements being allocated regardless of the actually
used layers in the user code.

* Optimize source_layers_cache for the cache memory

Swapping the array indices should increase the locality of the memory access.

* Remove the mouse layer

* Use update_tri_layer to simplify the code

* Add some custom per-keymap build options

* Add ShiftLock

* Secure the reset button

* Add numeric layer

* Remove explicit layer keys on LW and RS layers

* Replace Alt+left/right with Back/Forward keys

* Sleep/delay key (for macro recording)

* App/menu key

* Fix stuff after merging to master

* Local per-keymap config.h; minor cleanup

* Remove the old macro_record.h

Replaced with dynamic_macro.h

* Adjust my keymap to the current API

* Pure Pro Gaming layer

Accessible by double tapping the Pure Pro layer. It features switched
Lower and Raise layers, for one-handed access to numbers.

* Pure Pro Gaming layer: no Mod4, persistent number layer under RShift

* Pure Pro Gaming layer activated with long press, not double press

* Reduce the size of the vifon keymap

See: issue 

* Increase the dynamic macro buffer

The default was actually decreased. The actual used value didn't change.

* Add the context menu key

* No more strange ideas in the gaming layer

* Reduce the firmware size by disabling API_SYSEX_ENABLE

* Make slash available on the PP layer (replaces the RESET key)

* Add a generic "hold this key" macro

* Add a missing undef

* Turn LGUI in the gaming layer into LW instead of disabling it

It's not as disruptive as LGUI and it makes the LW/RS order kind of
more consistent (LW on the left, RS on the right).

* Refactor the Pure Pro Gaming layer

* Try out the 1st party qmk KC_LOCK (vs my own KM_HOLD)

* Alternative way to switch keyboard layouts with the left hand

* Add dot & slash to the Pure Pro layer (but not to the Gaming layer)

* Now that there is a second KM_LW, we can simplify the layout a bit

It was confusing to have the modifiers completely swapped.  Just
moving them is much more natural.

* Disable the console now that qmk got bigger

* Update the keymap for the modern qmk standards
2018-10-06 07:49:04 -07:00
2c1402aa32 Keymap: Added Planck keymap: jcorrado () 2018-10-05 14:52:46 -07:00
f1003aaccf Keyboard: Helix five_rows keymap reduced size ()
* add PERMISSIVE_HOLD in helix:five_rows/config.h

* add Eucalyn char layout into helix:five_rows

* Helix five_rows keymap: make rgblight modes selectable.

No change in build result.

* fix keymap.c map comment, add console compile option

No change in build result.

* Helix five_rows keymap: reduced the size.
2018-10-05 14:51:34 -07:00
54b61b508b E6V2 LE HHKB love ()
* Keyboard: E6V2 LE HHKB layout support

* Keymap: Add johu's E6V2 LE HHKB layout
2018-10-05 14:49:30 -07:00
27e216fc1a Keymap: Add french iso layout for dz60 (thomasviaud) () 2018-10-05 12:00:24 -07:00
ac7b2d92bf ARM SWD guide
- Added a detailed (but saddly long) debugging guide.
- Modified sidebar and summary to include the links.
2018-10-05 11:03:30 -07:00
13d67200df Keyboard: set SAFE_RANGE () 2018-10-05 08:43:04 -07:00
b4f26a4616 Keyboard: DZ60: add Plate B layouts ()
Adds maximized DZ60 Plate B layout macros in ANSI and ISO, featuring 2.25u Left Shift (1.25u/1u split for ISO) and 1.75u Right Shift with Inverted-T arrow keys. Also supports Split Spacebar and Split Backspace.
2018-10-04 20:34:47 -07:00
0c3137d8ff rgb_matrix: continue calling rgb_matrix_indicators() when toggled off
This allows user code to continue to use the matrix for indication, even
when the RGB toggle is off, using rgb_matrix_set_color().

Without this change, it's impossible for user code to use the matrix
when the toggle is off, as any changes get overwritten with black on the
next task cycle, and the indicator code is not called at all.
2018-10-04 21:43:31 -04:00
26adf3706a Keymap: Added personal userspace and keymaps. ()
* added personal userspace, niu mini, planck and fc660c keymaps

* removed unnecessary include and some other minor corrections
2018-10-04 15:00:33 -07:00
dad579c8f8 Add mousekey_send to (un)register_code 2018-10-04 10:44:28 -04:00
f13ca59361 rn42 compilation error fix ()
* rn42 compile fix

Fixes a compilation error

* simpler rn42 compile fix

good idea drashna :)
2018-10-03 15:02:24 -07:00
0d61e612f0 process_ucis: Add a callback for success ()
There is `qk_ucis_symbol_fallback` for the case where symbol lookup
fails, but there wasn't one for the success case. This adds
`qk_ucis_success`, called after successfully finishing the UCIS symbol
input.

Thanks to @drashna for the idea!

Signed-off-by: Csilla Nagyné Martinák <csilla@csillger.hu>
2018-10-03 14:38:02 -07:00
ac27b62fa1 Keyboard: add info.json for qmk configurator () 2018-10-03 12:22:18 -07:00
9c4b6d2100 Keyboard: Adding Split Space support for Mechmini 1 ()
* Adding Split Space support

* Adding my keymap

* update

* Made the requested updates

* Made the requested update
2018-10-03 12:14:36 -07:00
d55468c18d Keyboard: Added dactyl-manuform 4x6 and keymap. ()
* Added dactyl-manuform 4x6 and keymap.

* Did changes recommended by drashna.
2018-10-03 12:04:01 -07:00
f01133d089 Keyboard: Add handwired/pteron config and keymaps ()
* Added pteron files made via from kbfirmware.com.

* Added readme.

* Made some progress on Pteron keymap.

* More keymap.

* Updated bootloader, added some keymap illustrations.

* Moved default keymap to FSund, made default keymap from default preonic keymap.

* Fixed typo in default pteron keymap.

* Made changes recommended by drashna.
2018-10-03 10:12:27 -07:00
e58ea882e4 Keyboard: Added split backspace layout for the b.mini () 2018-10-03 08:36:40 -07:00
5368235f22 Keyboard: Add namecard keyboard ()
* create namecard2x4

* create default keymaps

* Update README

* fixed typo and func remove dont need.

* update infomation on readme

* update missed point

* remove explicit initialize

* update default keymap's readme

* add my name to copyright

* change keymap style to LAYOUT macro and fixed typo LAYOUT macro
2018-10-03 08:34:43 -07:00
404db1d06f handwired/ibm122m: refactor and Configurator support ()
* handwired/ibm122m: refactor

Refactored layout macro and keymaps to more closely resemble the keyboard's physical layout.

* handwired/ibm122m: add Configurator support
2018-10-03 08:33:14 -07:00
4d1d1b7196 Keyboard: Added JN68M keyboard to handwired () 2018-10-03 08:32:56 -07:00
b1c2849500 Keymap: Add RGB matrix keypress effects and reduce firmware size. () 2018-10-03 08:30:44 -07:00
b9c5030851 Keyboard: KBD4x: corrected info.json file ()
The `info.json` file for the KBD4x was invalid due to a couple of extra commas.
2018-10-03 08:30:13 -07:00
d435dabefb Keyboard: Mint60: Configurator support and readme cleanup ()
* Mint60: add Configurator support

* Mint60: readme cleanup

Fixed the imgur url so the photo shows up, and updated the links to the docs.
2018-10-03 08:29:29 -07:00
76f0b3cc70 Add missing F-keys to ergodox_infinity input_club
F11 and F12 were in the ascii art, but not the actual mapping.
This corrects the error.
2018-10-02 22:41:18 -07:00
2d671a7e1a Enable support for Linux Mint 18 with linux_install.sh ()
Enable support for ubuntu-derived linux-es in installer

Checks /etc/os-release for mention of ubuntu and debian.

Linux Mint uses ID_LIKE=ubuntu, not ID_LIKE=debian (as seen in
Ubuntu 16.04, unsure about others)
2018-10-02 22:16:49 -07:00
37cfd2c500 add JP keycode for MacOSX () 2018-10-02 17:51:43 -07:00
1741e39e34 New keyboard: Baguette ()
* Bagette

Addition of Baguette a close group buy custom

* Add json
2018-10-02 16:03:50 -07:00
9aecf4ccfd Adds a method allowing to set custom colors to the rgb matrix 2018-10-02 16:33:49 -04:00
66b793730e Keymap: Personal XD75 keymap added. ()
* Personal XD75 keymap added.

Nothing fancy, has emojisupport.

* Converted to spaces to follow guidelines

* Fixed requested changes.

Replacing include guards with pragma once.
Omitting unnecessary lines.
PR 
2018-10-02 13:06:31 -07:00
5c2ac733af Keymap: Adding my DZ60, Satan, XD75 kemaps and updates to userspace ()
* Update userspace with common config.h

* Add my dz60, satan and xd75 keyboard keymaps

* Fixing executable bits changed during last upstream merge

* Cleanup unnecessary files and defines

* Remove unnecessary defines from userspace config
2018-10-02 08:14:37 -07:00
1a33054a35 Reduce firmware size of KBD8x to fix Travis Compile issues 2018-10-02 11:08:21 -04:00
9f2e39732f Keyboard: Add support for the KBD4x ()
* Generate a new project for the KBD4x

* Specify the possible layouts for the KBD4x - MIT and grid

* Fill out the readme for the KBD4x

* Configure the default keymap and wiring configuration as specified on http://qmkeyboard.cn/

* Add info.json for QMK Configurator

* Enable backlight support for the KBD4x

* Standardise on LAYOUT_planck_mit/LAYOUT_ortho_4x12 layout names

* Add whitespace so the Readme will render correctly

* Disable mouse keys support for the KBD4x to make the firmware small enough
2018-10-01 20:43:43 -07:00
abcf64ecbd Keyboard: DZ60 cleanup ()
* DZ60: Deleted K214 from LAYOUT_all

* DZ60: Delete matrix LAYOUT_2_shifts; replace with LAYOUT_all

After the deletion of K214 from LAYOUT_all, LAYOUT_all and LAYOUT_2_shifts are identical.

Deprecated LAYOUT_2_shifts in favor of LAYOUT_all.

* DZ60: refactor 256k_HHKB and itsaferbie keymaps to use LAYOUT_60_hhkb macro

Both keymaps previously used the LAYOUT_hhkb macro. After comparing the macros, the only difference between them was that LAYOUT_hhkb included the place of the ISO Backslash key. Neither keymap used this key, so both were refactored to use LAYOUT_60_hhkb instead.

LAYOUT_hhkb is now essentially unused by any keymaps in the repo. (More on that in a moment.)

* DZ60: bugfix for dbroqua keymap

This keymap had two layers that used the LAYOUT_true_hhkb macro and a third that used LAYOUT_hhkb. These macros have the same number of keys, but represent different physical layouts. As the "main" layers used LAYOUT_true_hhkb, switched the third layer to LAYOUT_true_hhkb as well.

The LAYOUT_hhkb macro is now unused by any DZ60 keymaps in the repo, and can be safely deleted.

* DZ60: bugfix for 60_ansi_arrow_fkeys, 60_plus_arrows, and stephengrier keymaps

All three keymaps had one layer in LAYOUT_all and one in LAYOUT_directional. Only difference between these macros is LAYOUT_all excludes the ISO Backslash position. As none of the keymaps used this position, all layers were switched to use LAYOUT_directional.

* DZ60: added layout mock-ups to dz60.h

Documenting the physical layouts that go with each matrix.

* DZ60: replace TMK SHIFT_ESC with QMK Grave Escape

Replaced all instances of keycodes that called TMK's ACTION_FUNCTION(SHIFT_ESC) with QMK's KC_GESC, and added config.h files so KC_GESC behaves as the deprecated TMK function did, except for the default keymap, which I thought should have the QMK standard behavior.

* DZ60: delete SHIFT_ESC code blocks

Deleted ACTION_FUNCTION(SHIFT_ESC) code blocks from keymaps that didn't use the functionality it provided.

* DZ60: deleted unused MODS_CTRL_MASk definitions

Was used in the now-deleted SHIFT_ESC code blocks. Interestingly named MODS_CTRL_MASK when it was actually checking the Shift keys. *shrug*

* DZ60: refactor jkbone keymap to use process_record_user

Replaced TMK action_function keycodes with QMK process_record_user equivalents.

* DZ60: delete unused layout macros

The macros LAYOUT_hhkb, LAYOUT_directional_625_space, and LAYOUT_60_ansi_split_bs_rshift_5x1u were unused by any keymaps in the repo, and have thus been deleted.

* DZ60: refactor iso_6u_space and iso_7u_space keymaps

Both keymaps refactored to use the LAYOUT_60_iso macro.

* DZ60: refactor dz60.h

Updated the notation of the switch arguments. Format is now:

`k<row><column>`

where `<row>` is `[0-4]` and `<column>` is `[0-9a-e]`.

* DZ60: refactor LAYOUT_60_iso_5x1u matrix

Updated matrix so `KC_ENT` belongs on the home row, which is consistent with LAYOUT_60_iso for the DZ60 as well as the ISO community layouts.

* DZ60: fix white space in dz60.h

I hate when indentation is inconsistent within a file.
2018-10-01 20:35:09 -07:00
713ec91147 Add C hint to inline code 2018-10-01 22:55:51 -04:00
1512a6bfd4 Keymap: Update to drashna keymaps and userspace ()
* Enabled unicode support and send_unicode function

* Unicode cleanup

* More unicode tweaking

* Update EEPROM stuff

* Account for keyboard macros

* Switch Equal to Plus on Ergodox

* more tweaks

* Minor Unicode tweaks

* Correct matrix printing for keylogger

* Fix unicode functions

* Fix unicode mode set since it actually uses EEPROM

* Re-add DISABLE_LEADER

* Ergodox is easier to hit the tapping term, fix that

* Fix stupid type on unicode mode check

* Preliminary CRKBD/HeliDox support

* Fixes to Helidox

* Cleanup userspace from old merge stuff

* Remove CCCV sounds

* Make Mode NOEEPROM Again
2018-10-01 21:00:14 -04:00
f5ae3760c6 Add send_unicode_hex_string function ()
* Add send_string_unicode function

Co-authored-by: kdb424 <kdb424@gmail.com>
Co-authored-by: Konstantin <vomindoraan@gmail.com>

* Clean up code based on feedback

* Fix includes
2018-10-01 20:56:04 -04:00
26f4e7031a Add tap_code function ()
* Add tap_code

* formatting

* Doc clarification

* Rename variable to make more consistent
2018-10-01 20:53:47 -04:00
e885c793bc Add Function level EECONFIG code for EEPROM ()
* Add Function level EEPROM configuration

Add kb and user functions for EEPROM, and example of how to use it.

* Bug fixes and demo

* Additional cleanup

* Add EEPROM reset macro to example

* Forgot init function in list

* Move eeconfig_init_quantum function to quantum.c and actually set default layer

* See if removing weak quantum function fixes issue

* Fix travis compile error

* Remove ifdef blocks from EECONFIG so settings are always set

* Fix for ARM EEPROM updates

* Fix merge issues

* Fix potential STM32 EEPROM issues
2018-10-01 20:53:14 -04:00
4318797d19 Add user level to default_layer_state_set 2018-10-01 12:58:46 -04:00
da6c58175a Make digital rain RGB matrix effect #define configurable. 2018-10-01 12:54:37 -04:00
b3f6aa9480 Correct small typo
A small typo (it -> in) that I noticed while reading through the documentation
2018-10-01 12:42:05 -04:00
285ed08867 Keyboard: Rename macropad to treasure/type9 ()
* rename macropad keyboard to type9 under the treasure directory

* fixup the readme

* rename macropad to type9

* moar renames
2018-10-01 09:34:20 -07:00
45a4a0a7fc Keyboard: Adding initial luddite keyboard framework ()
* Adding initial luddite keyboard framework

* Use pragma and update readme

* Remove duplicate macro definitions
2018-10-01 09:25:16 -07:00
3907ed034b Fix YMDK NP21 keyboard to use proper keyboard level functions ()
* Use proper function levels

* Add matrix init functions

* Convert KEYMAP to LAYOUT

Or @mechmerlin is going to hunt me down and harm me... probably :)

* Fix conflict issues
2018-10-01 11:09:57 -04:00
9d949389f9 Adds default value for TAPPING_TERM if Tap Dance is enabled ()
* Force require TAPPING_TERM if Tap Dance is enabled

* Handle lack of TAPPING_TERM more gracefully
2018-10-01 11:09:05 -04:00
a398d2cece Keymap: Add noroadsleft keymap for KC60 ()
* Add personal KC60 keymap

* Update personal KC60 keymap

* Keymap update 2018-05-30 01:53 UTC-7

* Added macro: T_PEEKR

* Added macro for MacOS Select All; modified MacOS function layer

* Added git branch-name macro

* Added GitHub signature macro

* Added readme files

* Added Quake 2 and System layers

* Refactored keymap readme

* Refactored to add userspace files; added Colemak layer

* Minor code cleanup; updated readme files

* Reverted use of userspace

Decided not to make use of the Userspace feature at this time. Reverted its addition, and updated the readme files where needed (they were linking to userspace files).

* Updated per review comments by @drashna

* Refactor buggy macros

I'm still not sure these work properly

* Fix Windows shortcuts

* Fix Mac shortcuts, possibly

Untested; still may be broken.

* Remove PREVENT_STUCK_MODIFIERS from config.h

Deprecated by 
2018-09-30 22:06:29 -07:00
a6c85f1c23 Keymap: add olligranlund Iris + satan layouts ()
* init

* function layout planning

* nordic keymap v1.0

* Added latest satan layouts, updated readmes

* Cleaning code

* Renamed ISO -> iso
2018-09-30 13:50:16 -07:00
a7d46f1b0f Keymap: Add ErgoDone keymap with QWERTY and COLEMAK Mod-DH ()
* Custom keymap for the ErgoDone

The keymap supports QWERTY and COLEMAK MOD-DH with LED indication.

* Enable Space Cadet Shift

* Fix after-boot layer indicator LED

* Implement keyboard suspend, move layer LED handling to function, unify
identation

* Add readme.md with layout

* Optimize LED handling, add include guard

Read the default layer via the proper EEPROM function, so the calling of
bootmagic() is no longer necessary.
Fix bug when the CapsLock LED wasn't working anymore after a layer
switch.
2018-09-30 11:14:06 -07:00
66ef1e3d67 RAMA M6-B and IS31FL3218 driver ()
* Initial RAMA M6-B commit.

* Moved IS31FL3218 driver, minor cleanups

* Refactor, added dynamic keymap.

* Added dynamic keymaps to RAMA M6-A

* Refactor M6-A and M6-B to use common code.

* Formatting

* Cleanup

* Cleanup

* Changes from review
2018-09-30 11:35:10 -04:00
6734cd9c5c Keyboard: Zeal60: Fix getting backlight values "id_*_indicator_row_col" () 2018-09-30 07:31:23 -07:00
3875d6f581 Keymap: Added Leader Key Functionality ()
* deleting arkag branch, forcibly moving changes over to master

* fade_color function added, not tested

* added half functions some stuff

* surround_type function implemented and working.

* added flashing function and removed fading, flashing supports infinite flashing along with controlled number flashes

* added a fade state machine and functionality

* build optimizations, changed fade to bounce between bounds rather than roll over, added a HALMAK layout

* changes to sleep breath function, changed how I will switch to HALMAK

* support for halmak added

* support for activity detection added, condensed fading and flashing state machines, removed support for HALMAK and COLEMAK because arkag is stupid

* changed sleep and inactive behaviors, now the color shifting reverses on state change, yay! save_color and reset_color are made to enable layer color changing to look cooler.

* reformatted some if statements in state detection

* changes to force fade to pause on boot, or plug in.

* Attempting to move over to userspace, pushing to repository for help

* userspace stuff....

* userspace stuff....

* layout changes, working userspace,

Removed left side shift and replaced it with a MT() for LSFT and SPC. Userspace seems to be working properly now! HURRAY

* Layout change

Removed space/shift and reset modifiers to what they were originally. Added homerow modifiers.

* Removed excessive tabs in files

* Moved mods on homerow around...

* changes recommended by @drashna

* removed homerow mods, more flashy lighting!

* changed delays for lighting.

* velocikey code retro fit into userspace to match typing speed

currently "working" but isn't as reactive as I want.

* Readme and other documentation hidden throughout code

* Added a pretty picture

* pretty picture actually added

* More readme updates

* Velocikey now working inside my userspace!

* Changed repo macro and fixed readme

* Removed media layer, moved media control to LAZY layer

* fixed more merge issues when I had to merge...

* implemented some leader key stuff

* removed merge garbage...

* changes requested by @drashna, leader key switch from macros
2018-09-29 17:51:06 -07:00
170507896d Keyboard: Update info.json to match LAYOUT ()
* Update info.json to match LAYOUT

* update mf68_ble info.json

LAYOUT -> LAYOUT_68_ansi
2018-09-29 16:16:21 -07:00
92d95ba1e1 Keyboard: Add basic support for the YD68 / YD68v2 PCBs. ()
* Add basic support for the YD68 / YD68v2.

Keymap and WS2812 underlighting work. Capslock LED should work, though I don't have one populated to test. Backlight LEDs are not set up, as they're not on a hardware PWM pin, could be set up as software.

* Fix Imgur link

* Fix default keymap to match the stock firmware

* Fix the Hardware Supported line and add a short description
2018-09-29 12:44:54 -07:00
68854f0735 Keyboard: converter/hp_46010a: rename layout macro to LAYOUT ()
Messed up in my previous PR () by providing the wrong matrix name.

Fixing by changing the matrix name instead, because there's only one at this point. Thought it made more sense this way.
2018-09-29 12:44:12 -07:00
cd215209ef Helix led_test keymap reduce size ()
* Helix: make rgblight modes selectable.

No change in build result.

* edit the comment of helix/rev2/keymaps/default/keymap.c

* Helix led_test keymap: reduced the size.
2018-09-29 10:40:54 -07:00
4f64951080 Keymap: Fixed a possible of buffer overflow. ()
Update inline funnction to static inline function.
Fixed error of if enabe ADJUST_MACRO_ENABLE.
2018-09-29 10:25:03 -07:00
1da2f8d546 Keymap: tada68: add shalzz's layout () 2018-09-29 08:49:51 -07:00
9f8bbe2f3f Keyboard: converter/hp_46010a: Configurator support () 2018-09-29 08:47:16 -07:00
daf0cc60bf CTRL keyboard bootloader_jump support
Adds support for CTRL keyboards to enter bootloader via bootloader_jump()
2018-09-28 23:09:53 -04:00
20a10bd084 Size fix for Hadron, take 2 ()
* Add Link Time Optimization to reduce firmware size

* Disable Mousekeys on Hadron to save room
2018-09-28 22:23:13 -04:00
3d767e4aab Disable Moueskeys to reduce Vitamins Included firmware size 2018-09-28 22:22:53 -04:00
ab83aedfab Second attempt to reduce the size of the USB BLE Converter ()
* Disable Leader to reduce firmware size for Travis

* Additionaly fixes to USB_USB\BLE Keyboard converter

* Disable One Shots to get USB to USB BLE converter to fit
2018-09-28 22:22:31 -04:00
239f02408e Massdrop keyboard updates for SEND_STRING, syscalls, stdio, debug prints, Auto Shift ()
* Update for SEND_STRING usage

Update for SEND_STRING usage.
Sending keyboard reports (kbd, nkro) now obey the minimum polling time.
While attempting to send a keyboard report and waiting for a USB poll, other functions of the keyboard, including LED effects and power management, will continue to operate at their intended intervals.

* Updates for send string, syscalls, stdio, debug prints, auto shift

Now properly waiting for previous keys sent over USB to complete before sending new.
Added heap to linker and now compiling with syscalls support.
Removed custom string functions and now using stdio.
dprintf now works as intended through virtser device.

* CTRL and ALT keymap updates

CTRL mac keymap updated
ALT default and mac keymap updated
ALT rules.mk added Auto Shift with default no

* Code cleanup as per discussion with vomindoraan

Code cleanup as per discussion with vomindoraan
2018-09-28 21:32:15 -04:00
e2dee054d0 add st-link_cli flashing ()
* add st-link_cli support

* format names
2018-09-28 21:30:44 -04:00
e4eeb1eb23 Fix RGB Matrix feature processing in common_features.mk
Specifically, an "L" got appended to the controller names for te "valid types",
but did not get appended to the blocks that include the specific drives.
So, this breaks anything that isn't "Yes".
2018-09-28 17:11:05 -04:00
cb468e0307 Keymap: Clicky frequency modulation ()
Also worked around my busted dipswitch 2...
2018-09-28 12:44:15 -07:00
f1b2d46eaf Spell-check update for Userspace documentation
Because leaving review comments on a PR that's already been merged doesn't make any sense.
2018-09-28 14:39:52 -04:00
daa11dc414 Changed VID/PID, added commands, refactoring 2018-09-28 12:36:55 -04:00
7fe03d085c Update quantum matrix to support both AVR and Chibios ARM ()
* Update quantum matrix to support both AVR and Chibios ARM

- Addition of STM32 pin definitions
- Created abstruction layer defines to control GPIO (This is a bit pointless for Chibios as we are creating a PAL ontop of a PAL but it is necessary for uniformity with AVR)
- Modified matrix.c to use the above functions

* minor ifdef fix

* Rename of functions and docs

- Added documentation.
- Renamed functions according to Jack's spec.

* Massdrop fix

* Update matrix.c

* Update quantum.h

* Update quantum.h

* Update quantum.h

* Update internals_gpio_control.md
2018-09-28 12:33:11 -04:00
fa47f5fb15 Update to the Userspace documentation ()
* Overhaul to Userspace Documentation

* Formatting issues

* Additionaly formatting fixes

* Add Readme info

* Additionaly Readme info

* Formatting fixes
2018-09-28 12:27:51 -04:00
8454fa5e9f Update Document Templates to reflect newer wording and URLs ()
* Add pragma once info to contributing guidelines

* Fix links in readme template to match doc site

* Revert changes to contributing doc as somebody already changed it
2018-09-28 12:04:30 -04:00
9ade35a9fe Optimize size of USB_USB BLE Converter 2018-09-28 10:47:20 -04:00
ebc143297c Optimize size of Pearl keyboard 2018-09-28 10:47:05 -04:00
8847b2abbf Optimize size of Vitamins_Included keyboard 2018-09-28 10:46:47 -04:00
a4bdab6837 Optimize size of Hadron keyboard 2018-09-28 10:22:08 -04:00
31afdd81a1 Optimize size of JC65/v32a keyboard 2018-09-28 10:21:51 -04:00
a173eda6d2 Improved dynamic keymaps ()
* Improved dynamic keymaps

* K&R sucks
2018-09-28 00:09:14 -04:00
b382076ad1 Keyboard: keyboardio model01: rgbmatrix support ()
* model01: implement RGB matrix feature

LEDs can still be individually controlled if this is switched off.

* model01: use fast banked LED setting commands

* model01: update default keymap to use RGB matrix

* model01: update RGB matrix support to match common_features.mk

* rgb_matrix: include <string.h>

This was missing after commit 4d5705ea6ceeb11cd2adc018644ec87c51af4e86
which introduces a use of memset().

* model01: make g_rgb_leds weak

This allows users to override which LEDs are configured as
modifiers, or tweak the x/y coordinates, should they so choose.
2018-09-27 20:53:36 -07:00
7d2d0c6795 split_common: fix backlight update for serial boards 2018-09-27 19:56:35 -07:00
96c9ebc2e4 Revert "Split Common: Serial Backlight LED fix ()"
This reverts commit 3eabd7946ec5e47d12d603d591e8d8658d82fa42.
2018-09-27 19:56:35 -07:00
baebbc0967 add 'mavrdude' target into tmk_core/avr.mk ()
* add 'mavrdude' target into tmk_core/avr.mk

I made it a little convenient when writing the same binary to multiple Pro Micro.

* rename target name 'mavrdude' to 'avrdude-loop'

* modify docs/flashing.md about avrdude-loop

* mdify docs/flashing.md again

* modifi docs/flashing.md 3rd
2018-09-27 22:02:12 -04:00
edeace279b Make Audio Clicky's randomness a float
Rather than a define, but read from the define.  This way, a smart coder could externally configure the randomness, changing it on the fly

This is also a precursor step to adding full on support for configurable randomness.
2018-09-27 18:31:18 -07:00
246d539f29 Keymap: add clicky support to jetpacktuxedo keymap ()
controlled by dip 3 with pitch modulated by the knob
2018-09-27 18:09:23 -07:00
a65085a893 Keyboard: [Fortitude60] LED fix and Serial improvement ()
* arrangement Underglow

* modified serial function references from helix

* Remove defines (ws2812_*REG)
2018-09-27 18:06:19 -07:00
8ef747accf Treat too-large firmwares as an error, not a warning ()
* Treat too-large firmwares as an error, not a warning

* switch the order of printing

* I think I have it

* adjust the formatting some more
2018-09-27 13:32:01 -07:00
8b2591c707 Keymap: Clean-up of dshields keymaps. () 2018-09-27 11:47:26 -07:00
13e166d9c4 RAMA U80-A, wilba.tech WT60-A, WT65-A, WT80-A, IS31FL3736 driver ()
* Initial commit of RAMA U80-A

* Initial commit of RAMA U80-A

* Moved IS31FL3736 driver, minor cleanups

* Superficial stuff

* Review changes

* Refactored to use common code.
2018-09-27 10:40:44 -04:00
f70f45ee67 RGB Matrix refactoring to open up for new drivers ()
* rgb_matrix: use a driver ops struct

This is intended to avoid #ifdef proliferation on adding more drivers,
eg. model01, which use different architectures.

* rgb_matrix: document driver struct members

* rgb_matrix: remove unused LED testing code

* rgb_matrix: don't build into IS31x drivers unless being used

* rgb_matrix: refactor make config options

This ensures that the necessary files are included for any custom
RGB_MATRIX_ENABLE value, without having to add entries here for specific
boards. This particularly affects model01 because its controller is
integrated and won't be used anywhere else, so it's preferable not to
put it in common_features.mk.

This now validates the value of RGB_MATRIX_ENABLE.

It was necessary to fix an error in ergodox_ez rules.mk using the wrong
comment separator, yielding an invalid value.

* IS31x drivers: don't write the control registers all the time

This is only needed when they are changed. This is done in init() and
board- or keymap-specific code is free to make further changes.

* rgb_matrix: move structs from chip drivers to rgb_matrix_drivers.c

This approach is specific to the rgb_matrix functionality, so keep it
neatly separated from the raw chip drivers.
2018-09-27 10:40:18 -04:00
12ad59f99d Keyboard: Treasure Macropad ()
* port macropad over to qmk

* add bootloader size
2018-09-26 22:09:05 -07:00
ec0297027d Bugfix for 60_ansi_tsangan and 60_iso_tsangan layouts ()
This corrects the matrix macro reference for both of the keymap.c files in layouts/default.
2018-09-26 19:19:38 -07:00
c7ce0d21dc Moves animation calculation logic out of the for loops 2018-09-26 21:16:09 -04:00
96648a133d Keymap: mtdjr userspace changes and Nyquist keymap addition ()
* holefully correct error in mtdjr userspace for layer_state_set_user

* return state and wrap rgb actions in their own conditional

* mtdjr nyquist and userspace updates

* mtdjr updates as requested
2018-09-26 12:23:30 -07:00
dbdbbbd5c9 Keyboard: Refactor XMMX keyboard to XMMX and Toad ()
* pull out toad keyboard and get it compiling

* refactor xmmx

* use the correct LAYOUT macros

* move LED code out to toad.c file

* move LED code out to xmmx.c file

* adjust for correct number of columns and pins used

* remove led set user
2018-09-26 12:17:54 -07:00
e2eee47e20 Keyboard: Crkbd stands for Corne Keyboard, not helidox () 2018-09-26 11:13:19 -07:00
722f06ff8c Keymap: Update whitefox/konstantin keymap ()
* Rename constexpr keymap folder to konstantin

* Replace numpad comma with Unicode comma

* Rename tap dance constants

* Move record->event.pressed check into switch

* Use RShift as a dedicated Fn key
2018-09-26 11:08:56 -07:00
f3551747b3 Keymap: Add Koba's keymap for Ergo42. ()
* Keymap: Add Koba's keymap for Ergo42.

* Fix: Remove unnecessary #define.

* Fix: Rename readme files to lowercase.
2018-09-26 11:04:31 -07:00
7f1268f35e Keymap: add artbycrunk iris layout ()
* version 1

* version 1.1

* version 1.2
2018-09-26 11:03:42 -07:00
4d5705ea6c Add new RGB matrix effect digital rain aka The Matrix 2018-09-26 12:21:49 -04:00
627ee050b4 Keyboard: Remove BACKLIGHT BREATHING as default config for Prime Keyboards ()
* initial commit

* Update readme.md

* Update keymap.c

added comment for description of function to control LED as layer indicator

* corrected formatting as requested.

* format for configurator

* corrected info.json to propertly reflect layout in Configurator

* updated layouts to reflect physical keyboard

* comment out BACKLIGHT BREATHING in config.h
2018-09-25 15:48:01 -07:00
223081bf2b Keymap: 4x4 pro micro ()
* 4x4 - pro micro version

* pro-micro setup on 4x4

* tap dance LCTL/RESET key

* remove test file

* more research

* revert a couple un-intended edits

* opt_defs version of adding custom rules.mk variables

* cleanup

* cleanup

* cleanup

* cleanup

* layout edits

* layout edits

* keymap edit

* numpad layout change

* got tap dance layer-switch working

* keymap changes

* temporary revert

* restore previous settings

* misc fixes

* layer order change

* fix layout matrix

* Update tapdances.c
2018-09-25 15:39:41 -07:00
61f9541066 Keymap: Velocikey implemented at userspace, readme is more helpful ()
* deleting arkag branch, forcibly moving changes over to master

* fade_color function added, not tested

* added half functions some stuff

* surround_type function implemented and working.

* added flashing function and removed fading, flashing supports infinite flashing along with controlled number flashes

* added a fade state machine and functionality

* build optimizations, changed fade to bounce between bounds rather than roll over, added a HALMAK layout

* changes to sleep breath function, changed how I will switch to HALMAK

* support for halmak added

* support for activity detection added, condensed fading and flashing state machines, removed support for HALMAK and COLEMAK because arkag is stupid

* changed sleep and inactive behaviors, now the color shifting reverses on state change, yay! save_color and reset_color are made to enable layer color changing to look cooler.

* reformatted some if statements in state detection

* changes to force fade to pause on boot, or plug in.

* Attempting to move over to userspace, pushing to repository for help

* userspace stuff....

* userspace stuff....

* layout changes, working userspace,

Removed left side shift and replaced it with a MT() for LSFT and SPC. Userspace seems to be working properly now! HURRAY

* Layout change

Removed space/shift and reset modifiers to what they were originally. Added homerow modifiers.

* Removed excessive tabs in files

* Moved mods on homerow around...

* changes recommended by @drashna

* removed homerow mods, more flashy lighting!

* changed delays for lighting.

* velocikey code retro fit into userspace to match typing speed

currently "working" but isn't as reactive as I want.

* Readme and other documentation hidden throughout code

* Added a pretty picture

* pretty picture actually added

* More readme updates

* Velocikey now working inside my userspace!

* Changed repo macro and fixed readme

* Removed media layer, moved media control to LAZY layer

* fixed more merge issues when I had to merge...
2018-09-25 15:38:04 -07:00
118e948e35 Keyboard: added mehkee96 support -JT ()
* added mehkee96 support -JT

* making requested changes -JT

* fixes -jt

* fixed info.json -JT

* tidy up info.json comments from noroadsleft -JT
2018-09-25 15:23:31 -07:00
6347a654de Keymap: Ergo42: biacco-winjp ()
* create: biacco jis keymap for windows for Ergo42

* fix: biacco-winjp: change #ifndef to #pragma once.

* fix: following: 3935#pullrequestreview-157941685
2018-09-25 15:18:11 -07:00
2b23072c34 Pin avr-gcc in shell.nix pending release of 8.3.0 ()
* Pin avr-gcc in shell.nix pending release of 8.3.0

There's apparently a critical bug in 8.2.0, which is now the nixpkgs default. This change overrides that default in favor of the known good version. Once 8.3.0 is the default, the override can be dropped.

* Arch/Manjaro fix
2018-09-25 15:16:35 -07:00
9dc19fdb6d Keymap: FollowingGhosts v60r layout ()
* First version of FollowingGhosts' custom layout

* Added copyright etc.

* Fixed readme and added space cadet shift

* Moved from RGB to HSV, updated readme and added media keys

* Updated pragma

* Added play/pause and updated config

* Added pragma back
2018-09-25 15:11:11 -07:00
a54f09d4f3 Keymap: jetpacktuxedo planck keymap ()
* added my planck keymap

based on a blend of my minivan keymap and the planck default keymap.

* moved pipe to better match minivan keymap

* updated as per @drashna

also moved my keymap a bit after adding the quad encoder and underglow
(which doesn't even work on arm right now lol)

* a few smaller tweaks
2018-09-25 15:06:48 -07:00
a0309db983 Add On/Off keycodes 2018-09-25 13:28:36 -07:00
cfb1b353ee Add functions so you can configure programatically 2018-09-25 13:28:36 -07:00
e72e4b6920 Store Clicky status in EEPROM 2018-09-25 13:28:36 -07:00
b7e25f9ec4 Keyboard: DZ60 Bug: layout_directional is shifted to the left by one ()
* layout_directional is shifted to the left by one

* forgot to adjust the physical layout
2018-09-24 20:39:17 -07:00
9012f4c2e0 Keyboard: Crkbd: Configurator support and readme formatting () 2018-09-23 20:50:08 -07:00
07d317ab88 Keyboard: Crkbd: move I2C and Serial defines to keyboard's config.h ()
* Crkbd: move I2C and Serial defines to keyboard's config.h

per @drashna on Discord

* Crkbd: remove misleading comment re: I2C and Serial

USE_I2C and USE_SERIAL are usually a "one or the other"-type deal, but this keyboard uses both.
2018-09-23 18:47:43 -07:00
ce057ea474 Keyboard: HP 46010A converter ()
* funged git history, restarting

* tested and working (message typed on this)

* updated documentation to include wiring directions

* formatting

* updated matrix and default layout a bit

* getting ready for merge into main repo

* getting ready for merge into main repo v2

* cleaning

* cleaning repo of extranious files

* updated documentation
2018-09-23 18:46:53 -07:00
58b9b22670 Circuitry sample for PS/2 Mouse ()
Added a sample circuitry for handling the connection of a PS/2 Mouse.
    Even if it's written that a circuitry is needed, there're a lot of other
    things and the information gets lost really fast. A really simple sample
    helps to remember who wants to implement the functionality about the
    circuitry.
2018-09-23 13:49:17 -07:00
57ec309d3e Keyboard: Panc60 ()
* initial check in

* figure out the column pins

* temporary keymap

* guess the row pins

* fix matrix.c compilation errors

* use the LAYOUT_60_hhkb macro and tweak the keymap a little bit

* update readme

* Put my name everywhere

* Add QMK Configurator support

* figured out the row pins

* update readme to have reset info

* Fill in some blanks that are documentation related

* Update matrix.c

* add kb functions

* forego kbfirmware labeling

* add arrows and caps lock to function layer.

* add a LAYOUT_60 and LAYOUT_all macro

* missed a comma

* add configurator support for the two new LAYOUT macros

* Jack helped me with a new custom matrix

* add 60_ansi into rules.mk
2018-09-23 13:48:48 -07:00
35e76539e7 Keymap: Arkag Userspace and MechMini2 Layout ()
* deleting arkag branch, forcibly moving changes over to master

* fade_color function added, not tested

* added half functions some stuff

* surround_type function implemented and working.

* added flashing function and removed fading, flashing supports infinite flashing along with controlled number flashes

* added a fade state machine and functionality

* build optimizations, changed fade to bounce between bounds rather than roll over, added a HALMAK layout

* changes to sleep breath function, changed how I will switch to HALMAK

* support for halmak added

* support for activity detection added, condensed fading and flashing state machines, removed support for HALMAK and COLEMAK because arkag is stupid

* changed sleep and inactive behaviors, now the color shifting reverses on state change, yay! save_color and reset_color are made to enable layer color changing to look cooler.

* reformatted some if statements in state detection

* changes to force fade to pause on boot, or plug in.

* Attempting to move over to userspace, pushing to repository for help

* userspace stuff....

* userspace stuff....

* layout changes, working userspace,

Removed left side shift and replaced it with a MT() for LSFT and SPC. Userspace seems to be working properly now! HURRAY

* Layout change

Removed space/shift and reset modifiers to what they were originally. Added homerow modifiers.

* Removed excessive tabs in files

* Moved mods on homerow around...

* changes recommended by @drashna
2018-09-22 08:43:28 -07:00
747cf78b5d Add nano keymap for modding Spooka light () 2018-09-20 15:37:18 -07:00
99c1c5bfe9 Keyboard: Added Prime_L, Prime_O and Prime_M, moved Prime_R into primekb folder ()
* Added template copies for prime_l
Added first set of files for prime_m and prime_o
Temporarily storing kbfirmware dumps in tmp

* Completed base for prime_m, prime_o and prime_l
Moved prime_r into primekb folder

* Added in QMK Configurator layout files for new PrimeKB keyboards
Slight modification to layout header files
Added my name to licensing

* Updated primekb readmes

* Removed temporary working files

* Updated default keymap for Prime_O

* Added link to Newbs Guide in prime_r readme
2018-09-20 15:36:11 -07:00
cfdc23bbae Keyboard: Add Quefrency 65 support in configurator ()
* Fix Quefrency configurator layout to support new key added

* Add configurator support for Quefrency 65
2018-09-20 08:00:18 -07:00
4c22e92ce8 Keymap: Fix tada68:iso-nor to match latest ISO_layout () 2018-09-19 16:34:08 -07:00
6cab514036 Keymap: Initial commit of dshields keymap for the model01 keyboard. () 2018-09-19 16:33:00 -07:00
5b4bcfa7f2 Keyboard: Move Bathroom Epiphany boards into its own directory ()
* make bpiphany directory with simple readme file

* move unloved_bastard to bpiphany directory

* move frosty_flake to bpiphany directory

* move pegasushoof to bpiphany directory

* move tiger_lily to bpiphany directory

* add a little more info to readme

* move kitten_paw to bpiphany directory

* update make instructions

* update intro text

* add missing routines to matrix.c of unloved_bastard

* add missing routines
2018-09-19 16:25:58 -07:00
14be5258a6 Keymap: rys Tada68 ISO UK layout ()
* rys Tada68 ISO UK layout

* Bring _FL more in line with my favoute WhiteFox layout

* Whoops, fix - to _

* remove empty config.h

* Remove legacy block
2018-09-19 16:23:23 -07:00
2bdeccd7ba Keyboard: Add Prime_EXL prototype to 'handwired' ()
* initial commit

* Update readme.md

* Update keymap.c

added comment for description of function to control LED as layer indicator

* corrected formatting as requested.

* format for configurator

* corrected info.json to propertly reflect layout in Configurator

* updated layouts to reflect physical keyboard
2018-09-19 16:20:36 -07:00
334e2629df Remove redefinition of _______ in documentation example ()
* Remove redefinition of `_______` in documentation example

* Slight rewording to include purpose of defintions

* Update include to newer macro
2018-09-19 16:18:15 -07:00
77433b1a31 Keyboard: Add evil80 keyboard ()
* Add evil80 keyboard

* Delete rules.mk

* Update config.h

* Update keymap.c

* Update keymap.c
2018-09-19 16:16:18 -07:00
14f691d2a7 Keymap: meagerfindings ergodox ()
* initial commit

* updating after review
2018-09-19 16:15:13 -07:00
c23233f41a Keymap: Talljoe's keymap for oddball keyboards ()
* Create layout for JD45

* Tweak layout to better support JD45 and add more tap dancing.

* Add Maltron and tweak layout for 40% enter compatibility.

* Switch back to `BL_TOGGLE` for backlight.

* More tweaks

* Rename talljoe_gherkin to talljoe-gherkin

* Make NAV layer tab C_S_T also.

* Add missing RESET key.

* Add Talljoe layout for minivan.

* MTI is not for me

* Tweak keymap.

* Add talljoe keymap to Atreus.

* Minor tweaks.

* Fix talljoe keymaps to work with new Zeal60 commit.
2018-09-19 16:13:58 -07:00
71fe973190 Keyboard: Add ISO-NOR keymap for TADA68 () 2018-09-19 11:42:58 -07:00
92f67719cc Keyboard: Fix the LAYOUT_iso macro for tada68 () 2018-09-19 11:41:40 -07:00
23da333ae3 Keyboard: Added support for GSKT-00 ()
* Added QMK support for GSKT-00, PaladinSplit, PaladinTKL and PaladinPad pcbs

* Remove the paladin boards from this PR

* Changed gskt00 as per review comments. Added two new default layouts, 60_ansi_tsangan and 60_iso_tsangan

* Fix the layouts/default/60_iso_tsangan/layout.json file

* Removed ? from rules.mk, removed unused fn_actions from keymaps. Changed the 60_iso_tsangan to work correctly

* Removed PREVENT_STUCK_MODIFIERS
2018-09-17 16:00:40 -07:00
03b8ce206d Keyboard: add Keyboardio Model 01 ()
* Keyboard: add Keyboardio Model01

This port implements key scanning and everything in their default
keymap.

It doesn't implement mouse warping; QMK can't do that (yet).

LED control is mostly not implemented. The ability to set all LEDs is
included because they can get stuck on coming from the bootloader
otherwise. Single LED control is also implemented for numpad indication.
The scanners also support batch LED transfer which is what you'd need if
you wanted to do fast effects. Gamma correction is also not implemented,
but is present in the original firmware. The necessary info for further
implementation is in the KeyboardioScanner module for Kaleidoscope.

To install on your keyboard:

    make model01:avrdude

When prompted, hold the "prog" key on the keyboard to put it into
programming mode. This can also be achieved by holding the "prog" key
while plugging in the keyboard. This works even if the firmware is
corrupt or missing.

Hot plugging the halves seems to work fine, but there is no explicit
support for eg. making sure the matrix scan rate is reconfigured.

* model01: clean up includes and include guards

Uses #pragma once everywhere.

* model01: split LED and matrix code

This makes space if someone wants to implement better LED support
later on, the keyboard is a lot more capable than the current code.

* model01: separate I2C timeouts for matrix vs. LED

If the scanners have no data they don't ACK reads and just time out.
So we want a pretty short timeout to keep scan rates high.

Meanwhile the LED transfers might take longer - I don't know though,
so here we are conservative.

* model01: implement better LED control

- gamma correction from the manufacturer's firmware
- suitable delays to allow back to back LED writes
    - this is fast enough to write the whole keyboard without noticeable
    delay, in my experience
- minor bug fix: RHS Fn key was not addressable

* model01: add license to wire-protocol-constants.h

* model01: replace gamma LUT

The original was of unclear license origin. This one is functionally
identical and includes a generator should people wish to adjust it.

* model01: use the already-present CIE1931 lightness curve

...rather than baking in another gamma curve.

It's said that CIE1931 is the right thing to be using rather than gamma.
OK. Let it be so.

* model01: call matrix_init_user() from matrix_init_kb()

* model01: remove inapplicable config options from rules.mk

* model01: readme.md: update build environment links
2018-09-17 15:49:20 -07:00
ec64be6622 Keyboard: Fix pin numbers for Fractal keyboard ()
* Added support for the Fractal keyboard

* Try to fix the issue

* Add support for the Fractal keyboard.

* Fix errors with files

* Update config.h
2018-09-17 15:18:19 -07:00
cb8d352cb3 Keymap: dz60/macos_arrow: fix rev3 broken media layer ()
Last rev broke the media layer because of a typo in layer definition.
Switched to an enum to avoid similar future typos.
2018-09-17 15:10:00 -07:00
a6d1db2c27 Create AG_TOGG code to toggle Alt/Gui swap. 2018-09-17 15:04:22 -07:00
244e1c5a57 Fix LEADER_KEY docs.
LEADER_KEY needs to be set in config.h, not keymap.c. Credit goes to @randywallace for figuring this one out:

https://github.com/qmk/qmk_firmware/issues/2514#issuecomment-384847485
2018-09-17 14:38:06 -07:00
3f680a93eb Keyboard: Tada68 readme img ()
* a new planck layout

* layout images

* layout images 2

* typo

* update include following PR comment

* updates following PR commments 2

* updates following PR comments

* layout images

* better layout names
2018-09-17 14:09:41 -07:00
ed2dd3b59c Keyboard: Add YMD96 instructions for Linux + Backlight Fixes ()
* Add flashing instructions for Linux

* Make device/manufacturer name consistent for ymd96

* Disable command mode by default for YMD96

* Add function call to fix backlight for YMD96

* Add personal YMD96 config

* Replace include with QMK macro

* Move KEYMAP macro to keymap-level folder

* Move custom KEYMAP macro to global LAYOUT_iso macro

* Change transparent keymappings to global definition

* Remove unecessary import and change to pragma once

 - (instead of repeated ifdef)

* Remove global keymap/layout definition
2018-09-17 13:55:49 -07:00
fe3bfd91c1 Keymap: Big switch config ()
* bigswitch keymap

* bigswitch keymap

* bigswitch keymap

* bigswitch keymap

* recommended edits made

* forgot to revert this change with the others
2018-09-17 13:41:59 -07:00
743449472e Make PREVENT_STUCK_MODIFIERS the default ()
* Remove chording as it is not documented, not used, and needs work.

* Make Leader Key an optional feature.

* Switch from `PREVENT_STUCK_MODIFIERS` to `STRICT_LAYER_RELEASE`

* Remove `#define PREVENT_STUCK_MODIFIERS` from keymaps.
2018-09-17 13:48:02 -04:00
b65e214375 Keyboard: add ergodash mini keyboard ()
* add ergodash mini

add ergodash mini (4rows version)
fix keymap and readme

* fix

replace include guard
remove includes

* fix audio
2018-09-15 10:57:46 -07:00
6bf2c07715 Keymap: dz60/macos_arrow: rev3 ()
* Arrow keys are now arranged on hjkl (vi style)
* The escape key is moved on capslock, shared with func layer switch
* The grave key is now dedicated (not shared with escape)
* Add a new numpad layer that can be activated with the spacebar
* Fix layout mismatch between layers
* Use bult-in underscore KC_TRNS alias
2018-09-15 10:50:38 -07:00
232ef75783 Keymap: A new alternative layout for planck ()
* a new planck layout

* layout images

* layout images 2

* typo

* update include following PR comment

* updates following PR commments 2

* updates following PR comments
2018-09-15 10:15:36 -07:00
9712501bf3 Keyboard: Add Lily58 Keyboard ()
* add Lily58

* file fix
2018-09-15 10:14:39 -07:00
db35065e14 Keymap: Grahampheath: telophase fix and keymaps ()
* add my config

* fix backlight, clean up that code

* group background code, restore static var

* qwerty is supposed to be in the middle

* wrap layer change backlight in ifdef

* backlight levels and some more 'emojis'.

* Restructure to make it possible to press cmd ent on the right side of the board with one hand.

* Expose the period through the number layer. Add Hyper keys to mouse layer

* reduce mouse speed

* add a : -P  key

* Thumbs up and down, remove some keys that are duplicated via function keys, clean up

* fix build issues

* add various emoji

* duplicate default Meira keymaps

* Miera updates

* add documented but unmapped emoji

* Sound for the Meira, was stumped by a file size! Thanks drashna!

* add docs

* docs

* revert lib changes...

* clean up

* clean up

* remove make file

* Fixes missing key

* clean up

* add my lets split

* add more emoji

* add the telophase board (unofficially, I guess...)

* add missing files

* add/reset files

* Review feedback implementation: Not needed. Add #define FLIP_HALF to your config.h file instead.

* Review feedback implementation: All of these includes should be replaced with #include QMK_KEYBOARD_H.

* Review feedback implementation: [FAILING] You may want to use LAYOUT_ortho_4x12 instead, and move this to /layouts/community/ortho_4x12/ instead. That way, you can use the same keymap for all of the boards.

* clean up

* add a key for command tilde (osx loves it)

* at least its building again

* remove adjusts and migrate layer switching to MO(_LAYER)

* update the telophase readme

* update the telophase readme

* grahampheaths -> grahampheath

* ONEHAND_ENABLE -> SWAP_HANDS_ENABLE

* convert lets split to use ortho_4x12

* Move lets split keyboard layout into community/ortho_4x12

* make telophase use LAYOUT()

* I did it?!

* Add clap and grin

* swap tabs and back and forward

* whitespace

* Add ellipsis and thanks emoji

* Move flip_half to telophase config (conflicts with lets split layout)

* Use #pragma once instead of config_user_h

* remove unused stuff
2018-09-15 10:12:11 -07:00
b1f11636c6 docs/contributing: add #pragma once to Coding Conventions
This supersedes the older include guard mechanism since all the
compilers now support it. It's easier for new users and less prone
to error.
2018-09-15 09:37:06 -07:00
2320 changed files with 86994 additions and 12783 deletions
Vagrantfilebuild_keyboard.mkcommon_features.mk
docs
drivers
keyboards
1upkeyboards
1up60hse/keymaps/default
1up60rgb
sweet16
30wer
40percentclub
412_64
6ball
9key
acr60
alf/x2
alpha
alps64/keymaps/crd
alu84
amj40/keymaps
default
fabian
jetpacktuxedo
myee
amj60/keymaps/iso_split_rshift
at101_blackheart
atom47
rev2
rev3
atomic
keymaps/pvc
rules.mk
atreus/keymaps
atreus62/keymaps
baguette
bface/keymaps/default
bfo9000
config.h
keymaps/andylikescandy6x18
rules.mk
bigseries
bigswitch
blockey
bmini
bminiex
bpiphany
canoe
catch22
chimera_ergo
chimera_ls
chimera_ortho
chocopad
clueboard
60
66/keymaps
bloodlvst
xyverz
comet46
config.h
keymaps/satt
contra
config.h
keymaps
bramver
losinggeneration
maxr1998
ryanm101
converter
crawlpad
crkbd
cyclops
daisy
keymaps/default
rules.mk
dc01/left
deltasplit75
keymaps/itsaferbie
rules.mk
v2
dichotemy
dilly
diverge3
divergetm2
do60
duck/octagon/v2
dz60
config.hdz60.hinfo.json
keymaps
256k_HHKB
60_ansi
60_ansi_arrow_fkeys
60_plus_arrows
Ansi_plus_fn_arrows
LEdiodes
boris_burger
crd_2u_lshift
crd_ansi
dbroqua
default
doogle999
eric
f3d3
frogger
hailbreno
iso_6u_space
iso_7u_space
iso_de_andys8
iso_split-spacebar
iso_uk
iso_vim_arrow
itsaferbie
jarred
jkbone
krusli
macos_arrow
marianas
mechmerlin
pevecyan
stephengrier
thomasviaud
weeheavy
zvecr
e6v2
eco/keymaps
default
hexwire
that_canadian
xyverz
ep
ergo42
ergodash
ergodone
ergodox_ez
ergodox_infinity
keymaps
gordon
input_club
narze
not-quite-neo
matrix.c
ergoinu
config.h
keymaps
default
default_jis
rules.mk
ergotravel
espectro
evil80
fc660c/keymaps/spacebarracecar
felix
fortitude60
four_banger
fourier
keymaps/jennetters
rev1
rules.mk
fractal
gh60/keymaps
dbroqua
robotmaxtron
gh80_3000
gherkin/keymaps
mjt
talljoe_gherkin
gonnerd/keymaps
gskt00
hadron
handwired
108key_trackpoint
MS_sculpt_mobile
config.h
keymaps
default
milestogo
arrow_pad
atreus50
bluepill
dactyl
dactyl_manuform
ibm122m
jn68m
kbod
config.h
keymaps/default
minorca
keymaps
rules.mk
not_so_minidox
ortho5x13
pilcrow/keymaps/default
practice60
prime_exl
promethium
pteron
qc60
space_oddity
terminus_mini
keymaps/default
rules.mk
woodpad/keymaps
default
drashna
xealous
helix
hhkb
keymaps
blakedietz
cinaeco
rn42
hs60
idobo
infinity60
iris
jc65
v32a
v32u4/keymaps/gam3cat
jd45
jj40
jm60
k_type
katana60
kbd19x
kbd4x
kbd67
kbd6x/keymaps
default
hhkb-default-improved
hhkb-default
kbd75
kbd8x
config.hkbd8x.h
keymaps
default
default_backlighting
rules.mk
kc60/keymaps/noroadsleft
kinesis/keymaps
carpalx
default
default_pretty
dvorak
insertsnideremarks
milestogo
xyverz
kira75
launchpad/keymaps/default
lets_split
lets_split_eh
levinson
lfkeyboards
lfk78/keymaps
default
iso
split_bs_osx
lfkpad/keymaps/default
lily58
m10a/keymaps/gam3cat
massdrop
mechmini
mehkee96
meira
melody96
config.h
keymaps/default
mf68
mf68_ble
miniaxe
minidox
mint60
mitosis
miuni32
config.h
keymaps
adam-lee
default
ht_156
ki
model01
mt40
namecard2x4
nano
keymaps/default
readme.md
newgame40
niu_mini
novelpad
noxary
nyquist
ok60
omnikey_blackheart
orange75
org60
orthodox
paladin64
panc60
pearl
config.h
keymaps/jetpacktuxedo
rules.mk
pegasushoof
phantom
planck
keymaps
ab
ajp10304
alexey
altgr
am
andylikescandy
angerthosenear
austin
basic
bone2planck
callum
cbbrowne
chance
charlie
circuit
daniel
danielhklein
david
davidrambo
dc
default
dlaroe
dr_notsokind
dshields
dzobert
espynn
experimental
gabriel
grahampheath
guidoism
gunp
hiea
hieax
impossible
ishtob
jacob
jarred
jasperla
jcorrado
jeebak
jeremy-dev
jetpacktuxedo
jhenahan
joe
johannes
kmontag42
kyle
lae3
leo
lucas
lukas
luke
max
mitch
mollat
mwpeterson
myoung34
narze
neo2planck
nico
not-quite-neo
pascamel
pevecyan
pickle_jr
premek
priyadi
pvc
rai-suta
sdothum
sgoodwin
skug
spacebarracecar
steno
tak3over
tehwalris
thermal_printer
tong92
vifon
yale
yang
zach
zrichard
planck.hreadme.md
rev6
playkbtw
ca66
config.h
keymaps/olivia
pk60
preonic
primekb
proton_c
ps2avrGB
puck
quefrency
qwertyydox
rama
redox
redox_w
rorschach
keymaps/insertsnideremarks
rules.mk
s60_x
keymaps
ansi_qwertz
bluebear
rgb
s65_plus
s65_x
s7_elephant
satan
info.json
keymaps
abhixec
addcninblue
admiralStrokers
ben_iso
chaser
colemak
default
dende_iso
dkrieger
isoHHKB
jarred
lepa
midi
olligranlund_iso
sethbc
smt
unxmaal
satan.h
scrabblepad/keymaps/random
sx60
tada68
telophase
tetris
the_ruler
thevankeyboards
bananasplit/keymaps
0010
coloneljesus
default
kamon
talljoe
minivan/keymaps
roadkit/keymaps
default
flipphone
khord
mjt
singles
singlesBrent
wavebeem-gamepad
toad
tokyo60
tragicforce68
treasure/type9
uk78
v60_type_r/keymaps/followingghosts
vinta
vision_division/keymaps/default
vitamins_included
viterbi
wavelet
whitefox
wilba_tech
xd60
keymaps/kmontag42
rules.mk
xd75
xd87
xmmx
yd68
ymd96
ymdk_np21
z150_blackheart
zeal60
zeal65
zen
zinc
zlant
layouts
community
default
60_ansi_tsangan
default_60_ansi_tsangan
layout.jsonreadme.md
60_ansi_tsangan_split_bs_rshift
default_60_ansi_tsangan_split_bs_rshift
layout.jsonreadme.md
60_iso_tsangan
default_60_iso_tsangan
layout.jsonreadme.md
ortho_4x10
tkl_iso/default_tkl_iso
lib/arm_atsam/packs/atmel/SAMD51_DFP/1.0.70/gcc/gcc
message.mk
quantum
shell.nix
tmk_core
users
util

2
Vagrantfile vendored

@ -59,7 +59,7 @@ Vagrant.configure(2) do |config|
# add a # before ,args: and run 'vagrant up' to get a working
# non-updated box and then attempt to troubleshoot or open a Github issue
config.vm.provision "shell", run: "always", path: "./util/install_dependencies.sh", args: "-update"
config.vm.provision "shell", run: "always", path: "./util/qmk_install.sh", args: "-update"
config.vm.post_up_message = <<-EOT

@ -110,8 +110,28 @@ ifneq ("$(wildcard $(KEYBOARD_C_1))","")
KEYBOARD_SRC += $(KEYBOARD_C_1)
endif
OPT_DEFS += -DKEYBOARD_$(KEYBOARD_FILESAFE)
# Generate KEYBOARD_name_subname for all levels of the keyboard folder
KEYBOARD_FILESAFE_1 := $(subst .,,$(subst /,_,$(KEYBOARD_FOLDER_PATH_1)))
KEYBOARD_FILESAFE_2 := $(subst .,,$(subst /,_,$(KEYBOARD_FOLDER_PATH_2)))
KEYBOARD_FILESAFE_3 := $(subst .,,$(subst /,_,$(KEYBOARD_FOLDER_PATH_3)))
KEYBOARD_FILESAFE_4 := $(subst .,,$(subst /,_,$(KEYBOARD_FOLDER_PATH_4)))
KEYBOARD_FILESAFE_5 := $(subst .,,$(subst /,_,$(KEYBOARD_FOLDER_PATH_5)))
ifneq ("$(wildcard $(KEYBOARD_PATH_5)/)","")
OPT_DEFS += -DKEYBOARD_$(KEYBOARD_FILESAFE_5)
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_4)/)","")
OPT_DEFS += -DKEYBOARD_$(KEYBOARD_FILESAFE_4)
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_3)/)","")
OPT_DEFS += -DKEYBOARD_$(KEYBOARD_FILESAFE_3)
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_2)/)","")
OPT_DEFS += -DKEYBOARD_$(KEYBOARD_FILESAFE_2)
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_1)/)","")
OPT_DEFS += -DKEYBOARD_$(KEYBOARD_FILESAFE_1)
endif
# Setup the define for QMK_KEYBOARD_H. This is used inside of keymaps so
# that the same keymap may be used on multiple keyboards.

@ -114,37 +114,35 @@ ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
endif
endif
ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes)
RGB_MATRIX_ENABLE ?= no
VALID_MATRIX_TYPES := yes IS31FL3731 IS31FL3733 custom
ifneq ($(strip $(RGB_MATRIX_ENABLE)), no)
ifeq ($(filter $(RGB_MATRIX_ENABLE),$(VALID_MATRIX_TYPES)),)
$(error RGB_MATRIX_ENABLE="$(RGB_MATRIX_ENABLE)" is not a valid matrix type)
endif
OPT_DEFS += -DRGB_MATRIX_ENABLE
OPT_DEFS += -DIS31FL3731
COMMON_VPATH += $(DRIVER_PATH)/issi
SRC += is31fl3731.c
SRC += i2c_master.c
SRC += $(QUANTUM_DIR)/color.c
SRC += $(QUANTUM_DIR)/rgb_matrix.c
SRC += $(QUANTUM_DIR)/rgb_matrix_drivers.c
CIE1931_CURVE = yes
endif
ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes)
RGB_MATRIX_ENABLE = IS31FL3731
endif
ifeq ($(strip $(RGB_MATRIX_ENABLE)), IS31FL3731)
OPT_DEFS += -DRGB_MATRIX_ENABLE
OPT_DEFS += -DIS31FL3731
COMMON_VPATH += $(DRIVER_PATH)/issi
SRC += is31fl3731.c
SRC += i2c_master.c
SRC += $(QUANTUM_DIR)/color.c
SRC += $(QUANTUM_DIR)/rgb_matrix.c
CIE1931_CURVE = yes
endif
ifeq ($(strip $(RGB_MATRIX_ENABLE)), IS31FL3733)
OPT_DEFS += -DRGB_MATRIX_ENABLE
OPT_DEFS += -DIS31FL3733
COMMON_VPATH += $(DRIVER_PATH)/issi
SRC += is31fl3733.c
SRC += i2c_master.c
SRC += $(QUANTUM_DIR)/color.c
SRC += $(QUANTUM_DIR)/rgb_matrix.c
CIE1931_CURVE = yes
endif
ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
@ -215,12 +213,17 @@ endif
ifeq ($(strip $(TERMINAL_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/process_keycode/process_terminal.c
OPT_DEFS += -DTERMINAL_ENABLE
OPT_DEFS += -DUSER_PRINT
endif
ifeq ($(strip $(USB_HID_ENABLE)), yes)
include $(TMK_DIR)/protocol/usb_hid.mk
endif
ifeq ($(strip $(ENCODER_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/encoder.c
OPT_DEFS += -DENCODER_ENABLE
endif
ifeq ($(strip $(HD44780_ENABLE)), yes)
SRC += drivers/avr/hd44780.c
@ -232,13 +235,17 @@ ifeq ($(strip $(DYNAMIC_KEYMAP_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/dynamic_keymap.c
endif
ifeq ($(strip $(LEADER_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/process_keycode/process_leader.c
OPT_DEFS += -DLEADER_ENABLE
endif
QUANTUM_SRC:= \
$(QUANTUM_DIR)/quantum.c \
$(QUANTUM_DIR)/keymap_common.c \
$(QUANTUM_DIR)/keycode_config.c \
$(QUANTUM_DIR)/process_keycode/process_leader.c
$(QUANTUM_DIR)/keycode_config.c
ifndef CUSTOM_MATRIX
ifneq ($(strip $(CUSTOM_MATRIX)), yes)
ifeq ($(strip $(SPLIT_KEYBOARD)), yes)
QUANTUM_SRC += $(QUANTUM_DIR)/split_common/matrix.c
else
@ -251,5 +258,5 @@ ifeq ($(strip $(SPLIT_KEYBOARD)), yes)
QUANTUM_SRC += $(QUANTUM_DIR)/split_common/split_flags.c \
$(QUANTUM_DIR)/split_common/split_util.c \
$(QUANTUM_DIR)/split_common/i2c.c \
$(QUANTUM_DIR)/split_common/serial.c
$(QUANTUM_DIR)/split_common/serial.c
endif

4
docs/LANGS.md Normal file

@ -0,0 +1,4 @@
# Languages
* [English](/)
* [Chinese](zh/)

@ -3,6 +3,8 @@
* [Building Your First Firmware](newbs_building_firmware.md)
* [Flashing Firmware](newbs_flashing.md)
* [Testing and Debugging](newbs_testing_debugging.md)
* [Best Practices](newbs_best_practices.md)
* [Learning Resources](newbs_learn_more_resources.md)
* [QMK Basics](README.md)
* [QMK Introduction](getting_started_introduction.md)
@ -37,6 +39,7 @@
* [Glossary](reference_glossary.md)
* [Unit Testing](unit_testing.md)
* [Useful Functions](ref_functions.md)
* [Configurator Support](reference_configurator_support.md)
* [Features](features.md)
* [Basic Keycodes](keycodes_basic.md)
@ -47,8 +50,10 @@
* [Backlight](feature_backlight.md)
* [Bluetooth](feature_bluetooth.md)
* [Bootmagic](feature_bootmagic.md)
* [Combos](feature_combo)
* [Command](feature_command.md)
* [Dynamic Macros](feature_dynamic_macros.md)
* [Encoders](feature_encoders.md)
* [Grave Escape](feature_grave_esc.md)
* [Key Lock](feature_key_lock.md)
* [Layouts](feature_layouts.md)
@ -74,6 +79,8 @@
* For Makers and Modders
* [Hand Wiring Guide](hand_wire.md)
* [ISP Flashing Guide](isp_flashing_guide.md)
* [ARM Debugging Guide](arm_debugging.md)
* [I2C Driver](i2c_driver.md)
* For a Deeper Understanding
* [How Keyboards Work](how_keyboards_work.md)

@ -3,6 +3,8 @@
* [Building Your First Firmware](newbs_building_firmware.md)
* [Flashing Firmware](newbs_flashing.md)
* [Testing and Debugging](newbs_testing_debugging.md)
* [Best Practices](newbs_best_practices.md)
* [Learning Resources](newbs_learn_more_resources.md)
* [QMK Basics](README.md)
* [QMK Introduction](getting_started_introduction.md)
@ -37,6 +39,7 @@
* [Glossary](reference_glossary.md)
* [Unit Testing](unit_testing.md)
* [Useful Functions](ref_functions.md)
* [Configurator Support](reference_configurator_support.md)
* [Features](features.md)
* [Basic Keycodes](keycodes_basic.md)
@ -47,8 +50,10 @@
* [Backlight](feature_backlight.md)
* [Bluetooth](feature_bluetooth.md)
* [Bootmagic](feature_bootmagic.md)
* [Combos](feature_combo)
* [Command](feature_command.md)
* [Dynamic Macros](feature_dynamic_macros.md)
* [Encoders](feature_encoders.md)
* [Grave Escape](feature_grave_esc.md)
* [Key Lock](feature_key_lock.md)
* [Layouts](feature_layouts.md)
@ -74,6 +79,8 @@
* For Makers and Modders
* [Hand Wiring Guide](hand_wire.md)
* [ISP Flashing Guide](isp_flashing_guide.md)
* [ARM Debugging Guide](arm_debugging.md)
* [I2C Driver](i2c_driver.md)
* For a Deeper Understanding
* [How Keyboards Work](how_keyboards_work.md)

87
docs/arm_debugging.md Normal file

@ -0,0 +1,87 @@
# ARM Debugging usign Eclipse
This page describes how to setup debugging for ARM MCUs using an SWD adapter and open-source/free tools. In this guide we will install GNU MCU Eclipse IDE for C/C++ Developers and OpenOCD together with all the necessary dependencies.
This guide is catered towards advance users and assumes you can compile an ARM compatible keyboard on your machine using the MAKE flow.
## Installing the software
The main objective here is to get the MCU Eclipse IDE correcly installed on our machine. The necesarry instructions are derived from [this](https://gnu-mcu-eclipse.github.io/install/) install guide.
### The xPack Manager
This tool is a software package manager and it is used to help us get the necesarry depencencies.
XPM runs using Node.js so grab that form [here](https://nodejs.org/en/). After installation, open a terminal and type `npm -v`. A reply with the version number means that the instalation was successful.
XPM instalation instructions can be found [here](https://www.npmjs.com/package/xpm) and are OS specific. Entering `xpm --version` to your terminal should return the software version.
### The ARM Toolchain
Using XPM it is very easy to install the ARM toolchain. Enter the command `xpm install --global @gnu-mcu-eclipse/arm-none-eabi-gcc`.
### Windows build tools
If you are using windows you need to install this!
`xpm install --global @gnu-mcu-eclipse/windows-build-tools`
### Programer/Debugger Drivers
Now its the time to install your programer's drivers. This tutorial was made using an ST-Link v2 which you can get from almost anywhere.
If you have an ST-Link the drivers can be found [here](https://www.st.com/en/development-tools/stsw-link009.html) otherwise consult the manufuturer of your tool.
### OpenOCD
This dependency allows SWD access from GDB and it is essential for debugging. Run `xpm install --global @gnu-mcu-eclipse/openocd`.
### Java
Java is needed by Eclipse so please download it from [here](https://www.oracle.com/technetwork/java/javase/downloads/index.html).
### GNU MCU Eclipse IDE
Now its finally time to install the IDE. Use the Release page [here](https://github.com/gnu-mcu-eclipse/org.eclipse.epp.packages/releases/) to get the latest version.
## Configuring Eclipse
Open up the Eclipse IDE we just downloaded. To import our QMK directory select File -> Import -> C/C++ -> Existing code as Makefile Project. Select next and use Browse to select your QMK folder. In the tool-chain list select ARM Cross GCC and select Finish.
Now you can see the QMK folder on the left hand side. Right click it and select Properties. On the left hand side, expand MCU and select ARM Toolchain Paths. Press xPack and OK. Repeat for OpenOCD Path and if you are on windows for Build Tool Path. Select Apply and Close.
Now its time to install the necessary MCU packages. Go to Packs perspective by selecting Window -> Open Perspective -> Others -> Packs. Now select the yellow refresh symbol next to the Packs tab. This will take a long time as it is requesting the MCU definitions from various places. If some of the links fail you can probably select Ignore.
When this finishes you must find the MCU which we will be building/debugging for. In this example I will be using the STM32F3 series MCUs. On the left, select STMicroelectonics -> STM32F3 Series. On the middle window we can see the pack. Right click and select Install. Once that is done we can go back to the default perspective, Window -> Open Perspective -> Others -> C/C++.
We need to let eclipse know the device we intent to build QMK on. Right click on the QMK folder -> Properties -> C/C++ Build -> Settings. Select the Devices tab and under devices select the appropriate variant of your MCU. For my example it is STM32F303CC
While we are here let's setup the build command as well. Select C/C++ Build and then the Behavior tab. On the build command, replace `all` with your necessary make command. For example for a rev6 Planck with the default keymap this would be `planck/rev6:default`. Select Apply and Close.
## Building
If you have setup everything correctly pressing the hammer button should build the firmware for you and a .bin file should appear.
## Debugging
### Connecting the Debugger
ARM MCUs use the Single Wire Debug (SWD) protocol which comprises of the clock (SWCLK) signal and the data (SWDIO) signal. Connecting this two wires and ground should be enough to allow full manipulation of the MCU. Here we assume that the keyboard will be powered though USB. The RESET signal is not necessary as we can manually assert it using the reset button. For a more advance setup, the SWO signal can be used which pipes printf and scanf asynchronously to the host but for our setup we will ignore it.
NOTE: Make sure the SWCLK and SWDIO pins are not used in the matrix of your keyboard. If they are you can temporarily switch them for some other pins.
### Configuring the Debugger
Right click on your QMK folder, select Debug As -> Debug Configuration. Here double click on GDB OpenOCD Debugging. Select the debugger tab and enter the configuration necessary for your MCU. This might take some fiddling and googleing to find out. The default script for the STM32F3 is called stm32f3discovery.cfg. To let OpenOCD know, in the Config options enter `-f board/stm32f3discovery.cfg`.
NOTE: In my case this configuration script requires editing to disable the reset assertion. The locations of the scripts can be found in the actual executable field usually under the path `openocd/version/.content/scripts/board`. Here I edited `reset_config srst_only` to `reset_config none`.
Select Apply and Close.
### Running the Debugger.
Reset your keyboard.
Press the bug icon and if all goes well you should soon find yourself in the debug perspective. Here the program counter will pause at the beginning of the main function and way for you to press Play. Most of the features of all debuggers work on ARM MCUs but for exact details google is your friend!
Happy debugging!

@ -119,8 +119,8 @@ If you define these options you will enable the associated feature, which may in
* `#define FORCE_NKRO`
* NKRO by default requires to be turned on, this forces it on during keyboard startup regardless of EEPROM setting. NKRO can still be turned off but will be turned on again if the keyboard reboots.
* `#define PREVENT_STUCK_MODIFIERS`
* stores the layer a key press came from so the same layer is used when the key is released, regardless of which layers are enabled
* `#define STRICT_LAYER_RELEASE`
* force a key release to be evaluated using the current layer stack instead of remembering which layer it came from (used for advanced cases)
## Behaviors That Can Be Configured
@ -132,14 +132,15 @@ If you define these options you will enable the associated feature, which may in
* `#define TAPPING_TOGGLE 2`
* how many taps before triggering the toggle
* `#define PERMISSIVE_HOLD`
* makes tap and hold keys work better for fast typers who don't want tapping term set above 500
* makes tap and hold keys trigger the hold if another key is pressed before releasing, even if it hasn't hit the `TAPPING_TERM`
* See [Permissive Hold](feature_advanced_keycodes.md#permissive-hold) for details
* `#define IGNORE_MOD_TAP_INTERRUPT`
* makes it possible to do rolling combos (zx) with keys that convert to other keys on hold
* See [Mod tap interrupt](feature_advanced_keycodes.md#mod-tap-interrupt) for details
* makes it possible to do rolling combos (zx) with keys that convert to other keys on hold, by enforcing the `TAPPING_TERM` for both keys.
* See [Mod tap interrupt](feature_advanced_keycodes.md#ignore-mod-tap-interrupt) for details
* `#define TAPPING_FORCE_HOLD`
* makes it possible to use a dual role key as modifier shortly after having been tapped
* See [Hold after tap](feature_advanced_keycodes.md#hold-after-tap)
* See [Hold after tap](feature_advanced_keycodes.md#tapping-force-hold)
* Breaks any Tap Toggle functionality (`TT` or the One Shot Tap Toggle)
* `#define LEADER_TIMEOUT 300`
* how long before the leader key times out
* `#define ONESHOT_TIMEOUT 300`
@ -155,6 +156,10 @@ If you define these options you will enable the associated feature, which may in
going to produce the 500 keystrokes a second needed to actually get more than a
few ms of delay from this. But if you're doing chording on something with 3-4ms
scan times? You probably want this.
* `#define COMBO_COUNT 2`
* Set this to the number of combos that you're using in the [Combo](feature_combo.md) feature.
* `#define COMBO_TERM 200`
* how long for the Combo keys to be detected. Defaults to `TAPPING_TERM` if not defined.
## RGB Light Configuration
@ -234,6 +239,8 @@ Use these to enable or disable building certain features. The more you have enab
* Console for debug(+400)
* `COMMAND_ENABLE`
* Commands for debug and configuration
* `COMBO_ENABLE`
* Key combo feature
* `NKRO_ENABLE`
* USB N-Key Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
* `AUDIO_ENABLE`
@ -245,10 +252,41 @@ Use these to enable or disable building certain features. The more you have enab
* `UNICODE_ENABLE`
* Unicode
* `BLUETOOTH_ENABLE`
* Enable Bluetooth with the Adafruit EZ-Key HID
* Legacy option to Enable Bluetooth with the Adafruit EZ-Key HID. See BLUETOOTH
* `BLUETOOTH`
* Current options are AdafruitEzKey, AdafruitBLE, RN42
* `SPLIT_KEYBOARD`
* Enables split keyboard support (dual MCU like the let's split and bakingpy's boards) and includes all necessary files located at quantum/split_common
* `WAIT_FOR_USB`
* Forces the keyboard to wait for a USB connection to be established before it starts up
* `NO_USB_STARTUP_CHECK`
* Disables usb suspend check after keyboard startup. Usually the keyboard waits for the host to wake it up before any tasks are performed. This is useful for split keyboards as one half will not get a wakeup call but must send commands to the master.
## USB Endpoint Limitations
In order to provide services over USB, QMK has to use USB endpoints.
These are a finite resource: each microcontroller has only a certain number.
This limits what features can be enabled together.
If the available endpoints are exceeded, a build error is thrown.
The following features can require separate endpoints:
* `MOUSEKEY_ENABLE`
* `EXTRAKEY_ENABLE`
* `CONSOLE_ENABLE`
* `NKRO_ENABLE`
* `MIDI_ENABLE`
* `RAW_ENABLE`
* `VIRTSER_ENABLE`
In order to improve utilisation of the endpoints, the HID features can be combined to use a single endpoint.
By default, `MOUSEKEY`, `EXTRAKEY`, and `NKRO` are combined into a single endpoint.
The base keyboard functionality can also be combined into the endpoint,
by setting `KEYBOARD_SHARED_EP = yes`.
This frees up one more endpoint,
but it can prevent the keyboard working in some BIOSes,
as they do not implement Boot Keyboard protocol switching.
Combining the mouse also breaks Boot Mouse compatibility.
The mouse can be uncombined by setting `MOUSE_SHARED_EP = no` if this functionality is required.

@ -57,19 +57,39 @@ Never made an open source contribution before? Wondering how contributions work
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
* We use a modified 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: `/* */`
* We encourage use of 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.
* We use `#pragma once` at the start of header files rather than old-style include guards (`#ifndef THIS_FILE_H`, `#define THIS_FILE_H`, ..., `#endif`)
Here is an example for easy reference:
```c
/* Enums for foo */
enum foo_state {
FOO_BAR,
FOO_BAZ,
};
/* Returns a value */
int foo(void) {
if (some_condition) {
return FOO_BAR;
} else {
return -1;
}
}
```
# General Guidelines

@ -27,7 +27,7 @@ The first step to creating your own custom keycode(s) is to enumerate them. This
Here is an example of enumerating 2 keycodes. After adding this block to your `keymap.c` you will be able to use `FOO` and `BAR` inside your keymap.
```
```c
enum my_keycodes {
FOO = SAFE_RANGE,
BAR
@ -44,7 +44,7 @@ These function are called every time a key is pressed or released.
This example does two things. It defines the behavior for a custom keycode called `FOO`, and it supplements our Enter key by playing a tone whenever it is pressed.
```
```c
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case FOO:
@ -75,16 +75,16 @@ The `keycode` argument is whatever is defined in your keymap, eg `MO(1)`, `KC_L`
The `record` argument contains information about the actual press:
```
```c
keyrecord_t record {
+-keyevent_t event {
| +-keypos_t key {
| | +-uint8_t col
| | +-uint8_t row
| | }
| +-bool pressed
| +-uint16_t time
| }
keyevent_t event {
keypos_t key {
uint8_t col
uint8_t row
}
bool pressed
uint16_t time
}
}
```
@ -100,7 +100,7 @@ This allows you to control the 5 LED's defined as part of the USB Keyboard spec.
### Example `led_set_user()` Implementation
```
```c
void led_set_user(uint8_t usb_led) {
if (usb_led & (1<<USB_LED_NUM_LOCK)) {
PORTB |= (1<<0);
@ -117,12 +117,12 @@ void led_set_user(uint8_t usb_led) {
} else {
PORTB &= ~(1<<2);
}
if (usb_led & (1<<USB_LED_COMPOSE_LOCK)) {
if (usb_led & (1<<USB_LED_COMPOSE)) {
PORTB |= (1<<3);
} else {
PORTB &= ~(1<<3);
}
if (usb_led & (1<<USB_LED_KANA_LOCK)) {
if (usb_led & (1<<USB_LED_KANA)) {
PORTB |= (1<<4);
} else {
PORTB &= ~(1<<4);
@ -138,14 +138,14 @@ void led_set_user(uint8_t usb_led) {
# Matrix Initialization Code
Before a keyboard can be used the hardware must be initialized. QMK handles initialization of the keyboard matrix itself, but if you have other hardware like LED's or i&#xb2;c controllers you will need to set up that hardware before it can be used.
Before a keyboard can be used the hardware must be initialized. QMK handles initialization of the keyboard matrix itself, but if you have other hardware like LED's or i&#xb2;c controllers you will need to set up that hardware before it can be used.
### Example `matrix_init_user()` Implementation
This example, at the keyboard level, sets up B1, B2, and B3 as LED pins.
```
```c
void matrix_init_user(void) {
// Call the keymap level matrix init.
@ -181,16 +181,16 @@ You should use this function if you need custom matrix scanning code. It can als
# Keyboard Idling/Wake Code
If the board supports it, it can be "idled", by stopping a number of functions. A good example of this is RGB lights or backlights. This can save on power consumption, or may be better behavior for your keyboard.
If the board supports it, it can be "idled", by stopping a number of functions. A good example of this is RGB lights or backlights. This can save on power consumption, or may be better behavior for your keyboard.
This is controlled by two functions: `suspend_power_down_*` and `suspend_wakeup_init_*`, which are called when the system is board is idled and when it wakes up, respectively.
This is controlled by two functions: `suspend_power_down_*` and `suspend_wakeup_init_*`, which are called when the system is board is idled and when it wakes up, respectively.
### Example suspend_power_down_user() and suspend_wakeup_init_user() Implementation
This example, at the keyboard level, sets up B1, B2, and B3 as LED pins.
```
```c
void suspend_power_down_user(void)
{
rgb_matrix_set_suspend_state(true);
@ -210,13 +210,13 @@ void suspend_wakeup_init_user(void)
# Layer Change Code
This runs code every time that the layers get changed. This can be useful for layer indication, or custom layer handling.
This runs code every time that the layers get changed. This can be useful for layer indication, or custom layer handling.
### Example `layer_state_set_*` Implementation
This example shows how to set the [RGB Underglow](feature_rgblight.md) lights based on the layer, using the Planck as an example
```
```c
uint32_t layer_state_set_user(uint32_t state) {
switch (biton32(state)) {
case _RAISE:
@ -244,3 +244,143 @@ uint32_t layer_state_set_user(uint32_t state) {
* Keymap: `uint32_t layer_state_set_user(uint32_t state)`
The `state` is the bitmask of the active layers, as explained in the [Keymap Overview](keymap.md#keymap-layer-status)
# Persistent Configuration (EEPROM)
This allows you to configure persistent settings for your keyboard. These settings are stored in the EEPROM of your controller, and are retained even after power loss. The settings can be read with `eeconfig_read_kb` and `eeconfig_read_user`, and can be written to using `eeconfig_update_kb` and `eeconfig_update_user`. This is useful for features that you want to be able to toggle (like toggling rgb layer indication). Additionally, you can use `eeconfig_init_kb` and `eeconfig_init_user` to set the default values for the EEPROM.
The complicated part here, is that there are a bunch of ways that you can store and access data via EEPROM, and there is no "correct" way to do this. However, you only have a DWORD (4 bytes) for each function.
Keep in mind that EEPROM has a limited number of writes. While this is very high, it's not the only thing writing to the EEPROM, and if you write too often, you can potentially drastically shorten the life of your MCU.
* If you don't understand the example, then you may want to avoid using this feature, as it is rather complicated.
### Example Implementation
This is an example of how to add settings, and read and write it. We're using the user keymap for the example here. This is a complex function, and has a lot going on. In fact, it uses a lot of the above functions to work!
In your keymap.c file, add this to the top:
```
typedef union {
uint32_t raw;
struct {
bool rgb_layer_change :1;
};
} user_config_t;
user_config_t user_config;
```
This sets up a 32 bit structure that we can store settings with in memory, and write to the EEPROM. Using this removes the need to define variables, since they're defined in this structure. Remember that `bool` (boolean) values use 1 bit, `uint8_t` uses 8 bits, `uint16_t` uses up 16 bits. You can mix and match, but changing the order can cause issues, as it will change the values that are read and written.
We're using `rgb_layer_change`, for the `layer_state_set_*` function, and use `matrix_init_user` and `process_record_user` to configure everything.
Now, using the `matrix_init_user` code above, you want to add `eeconfig_read_user()` to it, to populate the structure you've just created. And you can then immediately use this structure to control functionality in your keymap. And It should look like:
```
void matrix_init_user(void) {
// Call the keymap level matrix init.
// Read the user config from EEPROM
user_config.raw = eeconfig_read_user();
// Set default layer, if enabled
if (user_config.rgb_layer_change) {
rgblight_enable_noeeprom();
rgblight_sethsv_noeeprom_cyan();
rgblight_mode_noeeprom(1);
}
}
```
The above function will use the EEPROM config immediately after reading it, to set the default layer's RGB color. The "raw" value of it is converted in a usable structure based on the "union" that you created above.
```
uint32_t layer_state_set_user(uint32_t state) {
switch (biton32(state)) {
case _RAISE:
if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom_magenta(); rgblight_mode_noeeprom(1); }
break;
case _LOWER:
if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom_red(); rgblight_mode_noeeprom(1); }
break;
case _PLOVER:
if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom_green(); rgblight_mode_noeeprom(1); }
break;
case _ADJUST:
if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom_white(); rgblight_mode_noeeprom(1); }
break;
default: // for any other layers, or the default layer
if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom_cyan(); rgblight_mode_noeeprom(1); }
break;
}
return state;
}
```
This will cause the RGB underglow to be changed ONLY if the value was enabled. Now to configure this value, create a new keycode for `process_record_user` called `RGB_LYR` and `EPRM`. Additionally, we want to make sure that if you use the normal RGB codes, that it turns off Using the example above, make it look this:
```
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case FOO:
if (record->event.pressed) {
// Do something when pressed
} else {
// Do something else when release
}
return false; // Skip all further processing of this key
case KC_ENTER:
// Play a tone when enter is pressed
if (record->event.pressed) {
PLAY_NOTE_ARRAY(tone_qwerty);
}
return true; // Let QMK send the enter press/release events
case EPRM:
if (record->event.pressed) {
eeconfig_init(); // resets the EEPROM to default
}
return false;
case RGB_LYR: // This allows me to use underglow as layer indication, or as normal
if (record->event.pressed) {
user_config.rgb_layer_change ^= 1; // Toggles the status
eeconfig_update_user(user_config.raw); // Writes the new status to EEPROM
if (user_config.rgb_layer_change) { // if layer state indication is enabled,
layer_state_set(layer_state); // then immediately update the layer color
}
}
return false; break;
case RGB_MODE_FORWARD ... RGB_MODE_GRADIENT: // For any of the RGB codes (see quantum_keycodes.h, L400 for reference)
if (record->event.pressed) { //This disables layer indication, as it's assumed that if you're changing this ... you want that disabled
if (user_config.rgb_layer_change) { // only if this is enabled
user_config.rgb_layer_change = false; // disable it, and
eeconfig_update_user(user_config.raw); // write the setings to EEPROM
}
}
return true; break;
default:
return true; // Process all other keycodes normally
}
}
```
And lastly, you want to add the `eeconfig_init_user` function, so that when the EEPROM is reset, you can specify default values, and even custom actions. For example, if you want to set rgb layer indication by default, and save the default valued.
```
void eeconfig_init_user(void) { // EEPROM is getting reset!
user_config.rgb_layer_change = true; // We want this enabled by default
eeconfig_update_user(user_config.raw); // Write default value to EEPROM now
// use the non noeeprom versions, to write these values to EEPROM too
rgblight_enable(); // Enable RGB by default
rgblight_sethsv_cyan(); // Set it to CYAN by default
rgblight_mode(1); // set to solid by default
}
```
And you're done. The RGB layer indication will only work if you want it to. And it will be saved, even after unplugging the board. And if you use any of the RGB codes, it will disable the layer indication, so that it stays on the mode and color that you set it to.
### 'EECONFIG' Function Documentation
* Keyboard/Revision: `void eeconfig_init_kb(void)`, `uint32_t eeconfig_read_kb(void)` and `void eeconfig_update_kb(uint32_t val)`
* Keymap: `void eeconfig_init_user(void)`, `uint32_t eeconfig_read_user(void)` and `void eeconfig_update_user(uint32_t val)`
The `val` is the value of the data that you want to write to EEPROM. And the `eeconfig_read_*` function return a 32 bit (DWORD) value from the EEPROM.

@ -36,7 +36,7 @@ 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.
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
```
There needs to be two spaces at the end of the `Keyboard Maintainer` and `Hardware Supported` lines for it to render correctly with Markdown.

@ -17,7 +17,7 @@ or just:
Note that running `make` with `sudo` is generally *not* a good idea, and you should use one of the former methods, if possible.
## Linux `udev` Rules
### Linux `udev` Rules
On Linux, you'll need proper privileges to access the MCU. You can either use
`sudo` when flashing firmware, or place these files in `/etc/udev/rules.d/`.
@ -37,6 +37,14 @@ SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ff0", MODE:="066
SUBSYSTEMS=="usb", ATTRS{idVendor}=="feed", MODE:="0666"
```
## Unknown Device for DFU Bootloader
If you're using Windows to flash your keyboard, and you are running into issues, check the Device Manager. If you see an "Unknown Device" when the keyboard is in "bootloader mode", then you may have a driver issue.
Re-running the installation script for MSYS2 may help (eg run `./util/qmk_install.sh` from MSYS2/WSL) or reinstalling the QMK Toolbox may fix the issue.
If that doesn't work, then you may need to grab the [Zadig Utility](https://zadig.akeo.ie/). Download this, find the device in question, and select the `WinUS(libusb-1.0)` option, and hit "Reinstall driver". Once you've done that, try flashing your board, again.
## WINAVR is Obsolete
It is no longer recommended and may cause some problem.
See [TMK Issue #99](https://github.com/tmk/tmk_keyboard/issues/99).
@ -97,10 +105,12 @@ The solution is to remove and reinstall all affected modules.
```
brew rm avr-gcc
brew rm dfu-programmer
brew rm dfu-util
brew rm gcc-arm-none-eabi
brew rm avrdude
brew install avr-gcc
brew install dfu-programmer
brew install dfu-util
brew install gcc-arm-none-eabi
brew install avrdude
```
@ -116,5 +126,5 @@ For now, you need to rollback avr-gcc to 7 in brew.
```
brew uninstall --force avr-gcc
brew install avr-gcc@7
brew link avr-gcc@7
brew link --force avr-gcc@7
```

@ -11,8 +11,8 @@ Keycodes are actually defined in [common/keycode.h](https://github.com/qmk/qmk_f
There are 3 standard keyboard layouts in use around the world- ANSI, ISO, and JIS. North America primarily uses ANSI, Europe and Africa primarily use ISO, and Japan uses JIS. Regions not mentioned typically use either ANSI or ISO. The keycodes corresponding to these layouts are shown here:
<!-- Source for this image: http://www.keyboard-layout-editor.com/#/gists/070a530eedaed36a2d77f3f6fd455677 -->
![Keyboard Layout Image](https://i.imgur.com/gvlNUpQ.png)
<!-- Source for this image: http://www.keyboard-layout-editor.com/#/gists/bf431647d1001cff5eff20ae55621e9a -->
![Keyboard Layout Image](https://i.imgur.com/5wsh5wM.png)
## Some Of My Keys Are Swapped Or Not Working
@ -211,20 +211,3 @@ here real_mods lost state for 'physical left shift'.
weak_mods is ORed with real_mods when keyboard report is sent.
https://github.com/tmk/tmk_core/blob/master/common/action_util.c#L57
## Timer Functionality
It's possible to start timers and read values for time-specific events - here's an example:
```c
static uint16_t key_timer;
key_timer = timer_read();
if (timer_elapsed(key_timer) < 100) {
// do something if less than 100ms have passed
} else {
// do something if 100ms or more have passed
}
```
It's best to declare the `static uint16_t key_timer;` at the top of the file, outside of any code blocks you're using it in.

@ -2,7 +2,7 @@
Your keymap can include keycodes that are more advanced than normal, for example keys that switch layers or send modifiers when held, but send regular keycodes when tapped. This page documents the functions that are available to you.
### Assigning Custom Names
## Assigning Custom Names
People often define custom names using `#define`. For example:
@ -13,7 +13,7 @@ People often define custom names using `#define`. For example:
This will allow you to use `FN_CAPS` and `ALT_TAB` in your `KEYMAP()`, keeping it more readable.
### Caveats
## Caveats
Currently, `LT()` and `MT()` are limited to the [Basic Keycode set](keycodes_basic.md), meaning you can't use keycodes like `LCTL()`, `KC_TILD`, or anything greater than `0xFF`. Modifiers specified as part of a Layer Tap or Mod Tap's keycode will be ignored.
@ -26,7 +26,8 @@ These functions allow you to activate layers in various ways. Note that layers a
* `DF(layer)` - switches the default layer. The default layer is the always-active base layer that other layers stack on top of. See below for more about the default layer. This might be used to switch from QWERTY to Dvorak layout. (Note that this is a temporary switch that only persists until the keyboard loses power. To modify the default layer in a persistent way requires deeper customization, such as calling the `set_single_persistent_default_layer` function inside of [process_record_user](custom_quantum_functions.md#programming-the-behavior-of-any-keycode).)
* `MO(layer)` - momentarily activates *layer*. As soon as you let go of the key, the layer is deactivated.
* `LM(layer, mod)` - Momentarily activates *layer* (like `MO`), but with modifier(s) *mod* active. Only supports layers 0-15 and the left modifiers.
* `LT(layer, kc)` - momentarily activates *layer* when held, and sends *kc* when tapped.
* `LT(layer, kc)` - momentarily activates *layer* when held, and sends *kc* when tapped. Only supports layers 0-15.
* `OSL(layer)` - momentarily activates *layer* until the next key is pressed. See [One Shot Keys](#one-shot-keys) for details and additional functionality.
* `TG(layer)` - toggles *layer*, activating it if it's inactive and vice versa
* `TO(layer)` - activates *layer* and de-activates all other layers (except your default layer). This function is special, because instead of just adding/removing one layer to your active layer stack, it will completely replace your current active layers, uniquely allowing you to replace higher layers with a lower one. This is activated on keydown (as soon as the key is pressed).
* `TT(layer)` - Layer Tap-Toggle. If you hold the key down, *layer* is activated, and then is de-activated when you let go (like `MO`). If you repeatedly tap it, the layer will be toggled on or off (like `TG`). It needs 5 taps by default, but you can change this by defining `TAPPING_TOGGLE` -- for example, `#define TAPPING_TOGGLE 2` to toggle on just two taps.
@ -35,7 +36,7 @@ These functions allow you to activate layers in various ways. Note that layers a
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
## Beginners
If you are just getting started with QMK you will want to keep everything simple. Follow these guidelines when setting up your layers:
@ -43,11 +44,11 @@ If you are just getting started with QMK you will want to keep everything simple
* 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.
* In a layer's keymap, only reference higher-numbered layers. Because layers are processed from the highest-numbered (topmost) active layer down, modifying the state of lower layers can be tricky and error-prone.
### Intermediate Users
## 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
## 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.
@ -72,7 +73,6 @@ These allow you to combine a modifier with a keycode. When pressed, the keydown
|`HYPR(kc)`| |Hold Left Control, Shift, Alt and GUI and press `kc`|
|`MEH(kc)` | |Hold Left Control, Shift and Alt and press `kc` |
|`LCAG(kc)`| |Hold Left Control, Alt and GUI and press `kc` |
|`ALTG(kc)`| |Hold Right Control and Alt and press `kc` |
|`SGUI(kc)`|`SCMD(kc)`, `SWIN(kc)`|Hold Left Shift and GUI and press `kc` |
|`LCA(kc)` | |Hold Left Control and Alt and press `kc` |
@ -125,6 +125,14 @@ For convenience, QMK includes some Mod-Tap shortcuts to make common combinations
|`SGUI_T(kc)`|`SCMD_T(kc)`, `SWIN_T(kc)` |Left Shift and GUI when held, `kc` when tapped |
|`LCA_T(kc)` | |Left Control and Alt when held, `kc` when tapped |
## Caveats
Unfortunately, these keycodes cannot be used in Mod-Taps or Layer-Taps, since any modifiers specified in the keycode are ignored.
Additionally, you may run into issues when using Remote Desktop Connection on Windows. Because these codes send shift very fast, Remote Desktop may miss the codes.
To fix this, open Remote Desktop Connection, click on "Show Options", open the the "Local Resources" tab. In the keyboard section, change the drop down to "On this Computer". This will fix the issue, and allow the characters to work correctly.
# One Shot Keys
One shot keys are keys that remain active until the next key is pressed, and then are released. This allows you to type keyboard combinations without pressing more than one key at a time. These keys are usually called "Sticky keys" or "Dead keys".
@ -133,6 +141,8 @@ For example, if you define a key as `OSM(MOD_LSFT)`, you can type a capital A ch
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.
Additionally, hitting keys five times in a short period will lock that key. This applies for both One Shot Modifiers and One Shot Layers, and is controlled by the `ONESHOT_TAP_TOGGLE` define.
You can control the behavior of one shot keys by defining these in `config.h`:
```c
@ -143,42 +153,73 @@ You can control the behavior of one shot keys by defining these in `config.h`:
* `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*.
Sometimes, you want to activate a one-shot layer as part of a macro or tap dance routine. To do this, you need to call `set_oneshot_layer(LAYER, ONESHOT_START)` on key down, and `set_oneshot_layer(ONESHOT_PRESSED)` on key up. If you want to cancel the oneshot, call `reset_oneshot_layer()`. For more complicated actions, take a look at the oneshot implementation in [`process_record`](https://github.com/qmk/qmk_firmware/blob/master/tmk_core/common/action.c#L429).
Sometimes, you want to activate a one-shot key as part of a macro or tap dance routine.
For one shot layers, you need to call `set_oneshot_layer(LAYER, ONESHOT_START)` on key down, and `set_oneshot_layer(ONESHOT_PRESSED)` on key up. If you want to cancel the oneshot, call `reset_oneshot_layer()`.
For one shot mods, you need to call `set_oneshot_mods(MOD)` to set it, or `clear_oneshot_mods()` to cancel it.
!> If you're having issues with OSM translating over Remote Desktop Connection, this can be fixed by opening the settings, going to the "Local Resources" tap, and in the keyboard section, change the drop down to "On this Computer". This will fix the issue and allow OSM to function properly over Remote Desktop.
If you're having issues with OSM translating over Remote Desktop Connection, this can be fixed by opening the settings, going to the "Local Resources" tap, and in the keyboard section, change the drop down to "On this Computer". This will fix the issue and allow OSM to function properly over Remote Desktop.
# Permissive Hold
As of [PR#1359](https://github.com/qmk/qmk_firmware/pull/1359/), there is a new `config.h` option:
```
```c
#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.
This makes tap and hold keys (like Mod Tap) work better for fast typist, or for high `TAPPING_TERM` settings.
Example: (Tapping Term = 200ms)
If you press a Mod Tap key, tap another key (press and release) and then release the Mod Tap key, all within the tapping term, it will output the "tapping" function for both keys.
- SHFT_T(KC_A) Down
- KC_X Down
- KC_X Up
- SHFT_T(KC_A) Up
For Instance:
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).
- `SHFT_T(KC_A)` Down
- `KC_X` Down
- `KC_X` Up
- `SHFT_T(KC_A)` Up
# Mod tap interrupt
Normally, if you do all this within the `TAPPING_TERM` (default: 200ms) this will be registered as `ax` by the firmware and host system. With permissive hold enabled, this modifies how this is handled by considering the Mod Tap keys as a Mod if another key is tapped, and would registered as `X` (`SHIFT`+`x`).
When a dual role key used for a modifier is quickly followed by another keys, it is interpreted as held even before the tapping term elapsed. This is a problem if a key is used for example inside a rolling combo because the second key will be pressed before the first key is released.
?> If you have `Ignore Mod Tap Interrupt` enabled, as well, this will modify how both work. The regular key has the modifier added if the first key is released first or if both keys are held longer than the `TAPPING_TERM`.
For example, when trying to type the rolling combo "zx" and z being configured to send Ctrl when hold, z rapidly followed by x actually sends Ctrl-x. That's bad.
# Ignore Mod Tap Interrupt
You can disable this behavior by defining `IGNORE_MOD_TAP_INTERRUPT` in `config.h`.
To enable this setting, add this to your `config.h`:
Note that this only concerns modifiers and not layer switching keys.
```c
#define IGNORE_MOD_TAP_INTERRUPT
```
# Hold after tap
Similar to Permissive Hold, this alters how the firmware processes input for fast typist. If you press a Mod Tap key, press another key, release the Mod Tap key, and then release the normal key, it would normally output the "tapping" function for both keys. This may not be desirable for rolling combo keys.
When the user holds a key after tap, this repeats the tapped key rather to hold a modifier key. This allows to use auto repeat for the tapped key. If you prefer to hold a modifier instead, define `TAPPING_FORCE_HOLD` in `config.h`.
Setting `Ignore Mod Tap Interrupt` requires holding both keys for the `TAPPING_TERM` to trigger the hold function (the mod).
For Instance:
- `SHFT_T(KC_A)` Down
- `KC_X` Down
- `SHFT_T(KC_A)` Up
- `KC_X` Up
Normally, this would send `X` (`SHIFT`+`x`). With `Ignore Mod Tap Interrupt` enabled, holding both keys are required for the `TAPPING_TERM` to register the hold action. A quick tap will output `ax` in this case, while a hold on both will still output `X` (`SHIFT`+`x`).
?> __Note__: This only concerns modifiers and not layer switching keys.
?> If you have `Permissive Hold` enabled, as well, this will modify how both work. The regular key has the modifier added if the first key is released first or if both keys are held longer than the `TAPPING_TERM`.
# Tapping Force Hold
To enable `tapping force hold`, add the following to your `config.h`:
```c
#define TAPPING_FORCE_HOLD
```
When the user holds a key after tap, this repeats the tapped key rather to hold a modifier key. This allows to use auto repeat for the tapped key.
Example:
@ -196,6 +237,12 @@ With `TAPPING_FORCE_HOLD`, the second press will be interpreted as a Shift, allo
# Retro Tapping
When you hold a dual function key, and haven't pressed anything when you release the key, normally nothing happens. However, if you enable this, if you release the key without pressing another key, it will send the original key, even if it is outside of the tapping term.
To enable `retro tapping`, add the following to your `config.h`:
For instance, if you're using `LT(2, KC_SPACE)`, if you hold the key, don't hit anything else and then release it, normally, nothing happens. But with `RETRO_TAPPING` defined in your `config.h`, it will send `KC_SPACE`.
```c
#define RETRO_TAPPING
```
Holding and releasing a dual function key without pressing another key will result in nothing happening. With retro tapping enabled, releasing the key without pressing another will send the original keycode even if it is outside the tapping term.
For instance, holding and releasing `LT(2, KC_SPACE)` without hitting another key will result in nothing happening. With this enabled, it will send `KC_SPACE` instead.

@ -65,6 +65,13 @@ The available keycodes for audio are:
* `AU_OFF` - Turn audio mode off
* `AU_TOG` - Toggle audio mode
## ARM Audio Volume
For ARM devices, you can adjust the DAC sample values. If your board is too loud for you or your coworkers, you can set the max using `DAC_SAMPLE_MAX` in your `config.h`:
```c
#define DAC_SAMPLE_MAX 65535U
```
## Music Mode
@ -119,22 +126,22 @@ You can completely disable Music Mode as well. This is useful, if you're pressed
#define NO_MUSIC_MODE
## Faux Click
## Audio Click
This adds a click sound each time you hit a button, to simulate click sounds from the keyboard. And the sounds are slightly different for each keypress, so it doesn't sound like a single long note, if you type rapidly.
* `CK_TOGG` - Toggles the status (will play sound if enabled)
* `CK_RST` - Resets the frequency to the default state
* `CK_UP` - Increases the frequency of the clicks
* `CK_DOWN` - Decreases the frequency of the clicks
* `CK_ON` - Turns on Audio Click (plays sound)
* `CK_OFF` - Turns off Audio Click (doesn't play sound)
* `CK_RST` - Resets the frequency to the default state (plays sound at default frequency)
* `CK_UP` - Increases the frequency of the clicks (plays sound at new frequency)
* `CK_DOWN` - Decreases the frequency of the clicks (plays sound at new frequency)
The feature is disabled by default, to save space. To enable it, add this to your `config.h`:
#define AUDIO_CLICKY
Additionally, even when enabled, the feature is not enabled by default, so you would need to turn it on first. And since we don't use EEPROM to store the setting (yet), you can default this to on by adding this to your `config.h`:
#define AUDIO_CLICKY_ON
You can configure the default, min and max frequencies, the stepping and built in randomness by defining these values:
@ -144,7 +151,7 @@ You can configure the default, min and max frequencies, the stepping and built i
| `AUDIO_CLICKY_FREQ_MIN` | 65.0f | Sets the lowest frequency (under 60f are a bit buggy). |
| `AUDIO_CLICKY_FREQ_MAX` | 1500.0f | Sets the the highest frequency. Too high may result in coworkers attacking you. |
| `AUDIO_CLICKY_FREQ_FACTOR` | 1.18921f| Sets the stepping of UP/DOWN key codes. |
| `AUDIO_CLICKY_FREQ_RANDOMNESS` | 0.05f | Sets a factor of randomness for the clicks, Setting this to `0f` will make each click identical. |
| `AUDIO_CLICKY_FREQ_RANDOMNESS` | 0.05f | Sets a factor of randomness for the clicks, Setting this to `0f` will make each click identical, and `1.0f` will make this sound much like the 90's computer screen scrolling/typing effect. |

@ -54,14 +54,17 @@ In this handler, the value of an incrementing counter is mapped onto a precomput
## Backlight Functions
|Function |Description |
|----------|----------------------------------------------------------|
|`backlight_toggle()` |Turn the backlight on or off |
|`backlight_step()` |Cycle through backlight levels |
|`backlight_increase()` |Increase the backlight level |
|`backlight_decrease()` |Decrease the backlight level |
|`backlight_level(x)` |Sets the backlight level to specified level |
|`get_backlight_level()`|Toggle backlight breathing |
|Function |Description |
|----------|-----------------------------------------------------------|
|`backlight_toggle()` |Turn the backlight on or off |
|`backlight_enable()` |Turn the backlight on |
|`backlight_disable()` |Turn the backlight off |
|`backlight_step()` |Cycle through backlight levels |
|`backlight_increase()` |Increase the backlight level |
|`backlight_decrease()` |Decrease the backlight level |
|`backlight_level(x)` |Sets the backlight level to specified level |
|`get_backlight_level()` |Return the current backlight level |
|`is_backlight_enabled()`|Return whether the backlight is currently on |
### Backlight Breathing Functions

@ -1,10 +1,40 @@
# Bluetooth
## Bluetooth Functionality
## Bluetooth Known Supported Hardware
Currently Bluetooth support is limited to AVR based chips. For Bluetooth 2.1 Qmk has support for RN-42 HID Firmware and Bluefruit EZ Key the later of which is not produced anymore. For more recent BLE protocols currently only the Adafruit Bluefruit SPI friend is directly supported. BLE is needed to connect to iOS devices. Note iOS does not support Mouse Input.
|Board |Bluetooth Protocol |Connection Type |Rules.mk |Bluetooth Chip|
|----------------------------------------------------------------|----------------------------|----------------|---------------------------|--------------|
|[Adafruit EzKey HID]("https://www.adafruit.com/product/1535") |Bluetooth Classic | UART | BLUETOOTH = AdafruitEZKey | |
|Rover Networks RN-42 (Sparkfun Bluesmirf) |Bluetooth Classic | UART | BLUETOOTH = RN42 | RN-42 |
|[Bluefruit LE SPI Friend](https://www.adafruit.com/product/2633)|Bluetooth Low Energy | SPI | BLUETOOTH = AdafruitBLE | nRF5182 |
Not Supported Yet but possible:
* [Bluefruit LE UART Friend](https://www.adafruit.com/product/2479). [Possible tmk implementation found in](https://github.com/tmk/tmk_keyboard/issues/514)
* HC-05 boards flashed with RN-42 firmware. They apparently both use the CSR BC417 Chip. Flashing it with RN-42 firmware gives it HID capability.
* [Sparkfun Bluetooth mate](https://www.sparkfun.com/products/14839)
* HM-13 based boards
### Adafruit BLE SPI Friend
Currently The only bluetooth chipset supported by QMK is the Adafruit Bluefruit SPI Friend. It's a Nordic nRF5182 based chip running Adafruit's custom firmware. Data is transmitted via Adafruit's SDEP over Hardware SPI. The [Feather 32u4 Bluefruit LE](https://www.adafruit.com/product/2829) is supported as it's an AVR mcu connected via SPI to the Nordic BLE chip with Adafruit firmware. If Building a custom board with the SPI friend it would be easiest to just use the pin selection that the 32u4 feather uses but you can change the pins in the config.h options with the following defines:
* #define AdafruitBleResetPin D4
* #define AdafruitBleCSPin B4
* #define AdafruitBleIRQPin E6
A Bluefruit UART friend can be converted to an SPI friend, however this [requires](https://github.com/qmk/qmk_firmware/issues/2274) some reflashing and soldering directly to the MDBT40 chip.
## Adafruit EZ-Key hid
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 Rules.mk Options
Use only one of these
* BLUETOOTH_ENABLE = yes (Legacy Option)
* BLUETOOTH = RN42
* BLUETOOTH = AdafruitEZKey
* BLUETOOTH = AdafruitBLE
## Bluetooth Keycodes

@ -11,7 +11,15 @@ There are three separate but related features that allow you to change the behav
On some keyboards Bootmagic is disabled by default. If this is the case, it must be explicitly enabled in your `rules.mk` with:
```make
BOOTMAGIC_ENABLE = yes
BOOTMAGIC_ENABLE = full
```
?> You may see `yes` being used in place of `full`, and this is okay. However, `yes` is deprecated, and ideally `full` (or `lite`) should be used instead.
Additionally, you can use [Bootmagic Lite](#bootmagic-lite) (a scaled down, very basic version of Bootmagic) by adding the following to your `rules.mk` file:
```make
BOOTMAGIC_ENABLE = lite
```
## Hotkeys
@ -57,6 +65,7 @@ Hold down the Bootmagic key (Space by default) and the desired hotkey while plug
|`MAGIC_UNNO_GUI` | |Enable the GUI keys |
|`MAGIC_SWAP_ALT_GUI` |`AG_SWAP`|Swap Alt and GUI on both sides (for macOS)|
|`MAGIC_UNSWAP_ALT_GUI` |`AG_NORM`|Unswap Left Alt and Left GUI |
|`MAGIC_TOGGLE_ALT_GUI` |`AG_TOGG`|Toggle Left Alt and GUI swap |
|`MAGIC_SWAP_BACKSLASH_BACKSPACE` | |Swap `\` and Backspace |
|`MAGIC_UNSWAP_BACKSLASH_BACKSPACE`| |Unswap `\` and Backspace |
|`MAGIC_SWAP_CONTROL_CAPSLOCK` | |Swap Left Control and Caps Lock |
@ -98,3 +107,45 @@ If you would like to change the hotkey assignments for Bootmagic, `#define` thes
|`BOOTMAGIC_KEY_DEFAULT_LAYER_5` |`KC_5` |Make layer 5 the default layer |
|`BOOTMAGIC_KEY_DEFAULT_LAYER_6` |`KC_6` |Make layer 6 the default layer |
|`BOOTMAGIC_KEY_DEFAULT_LAYER_7` |`KC_7` |Make layer 7 the default layer |
# Bootmagic Lite
In addition to the full blown Bootmagic feature, is the Bootmagic Lite feature that only handles jumping into the bootloader. This is great for boards that don't have a physical reset button but you need a way to jump into the bootloader, and don't want to deal with the headache that Bootmagic can cause.
To enable this version of Bootmagic, you need to enable it in your `rules.mk` with:
```make
BOOTMAGIC_ENABLE = lite
```
Additionally, you may want to specify which key to use. This is especially useful for keyboards that have unusual matrices. To do so, you need to specify the row and column of the key that you want to use. Add these entries to your `config.h` file:
```c
#define BOOTMAGIC_LITE_ROW 0
#define BOOTMAGIC_LITE_COLUMN 1
```
By default, these are set to 0 and 0, which is usually the "ESC" key on a majority of keyboards.
And to trigger the bootloader, you hold this key down when plugging the keyboard in. Just the single key.
## Advanced Bootmagic Lite
The `bootmagic_lite` function is defined weakly, so that you can replace this in your code, if you need. A great example of this is the Zeal60 boards that have some additional handling needed.
To replace the function, all you need to do is add something like this to your code:
```c
void bootmagic_lite(void) {
matrix_scan();
wait_ms(DEBOUNCING_DELAY * 2);
matrix_scan();
if (matrix_get_row(BOOTMAGIC_LITE_ROW) & (1 << BOOTMAGIC_LITE_COLUMN)) {
// Jump to bootloader.
bootloader_jump();
}
}
```
You can additional feature here. For instance, resetting the eeprom or requiring additional keys to be pressed to trigger bootmagic. Keep in mind that `bootmagic_lite` is called before a majority of features are initialized in the firmware.

89
docs/feature_combo.md Normal file

@ -0,0 +1,89 @@
# Combos
The Combo feature is a chording type solution for adding custom actions. It lets you hit multiple keys at once and produce a different effect. For instance, hitting `A` and `S` within the tapping term would hit `ESC` instead, or have it perform even more complex tasks.
To enable this feature, yu need to add `COMBO_ENABLE = yes` to your `rules.mk`.
Additionally, in your `config.h`, you'll need to specify the number of combos that you'll be using, by adding `#define COMBO_COUNT 1` (replacing 1 with the number that you're using).
<!-- At this time, this is necessary -->
Also, by default, the tapping term for the Combos is set to the same value as `TAPPING_TERM` (200 by default on most boards). But you can specify a different value by defining it in your `config.h`. For instance: `#define COMBO_TERM 300` would set the time out period for combos to 300ms.
Then, your `keymap.c` file, you'll need to define a sequence of keys, terminated with `COMBO_END`, and a structure to list the combination of keys, and it's resulting action.
```c
const uint16_t PROGMEM test_combo[] = {KC_A, KC_B, COMBO_END};
combo_t key_combos[COMBO_COUNT] = {COMBO(test_combo, KC_ESC)};
```
This will send "Escape" if you hit the A and B keys.
!> This method only supports [basic keycodes](keycodes_basic.md). See the examples for more control.
!> You cannot reuse (share) keys in combos. Each key should only belong to a single combo.
## Examples
If you want to add a list, then you'd use something like this:
```c
enum combos {
AB_ESC,
JK_TAB
}
const uint16_t PROGMEM ab_combo[] = {KC_A, KC_B, COMBO_END};
const uint16_t PROGMEM jk_combo[] = {KC_J, KC_K, COMBO_END};
combo_t key_combos[COMBO_COUNT] = {
[AB_ESC] = COMBO(ab_combo, KC_ESC),
[JK_TAB] = COMBO(jk_combo, KC_TAB)
};
```
For a more complicated implementation, you can use the `process_combo_event` function to add custom handling.
```c
enum combo_events {
ZC_COPY,
XV_PASTE
};
const uint16_t PROGMEM copy_combo[] = {KC_Z, KC_C, COMBO_END};
const uint16_t PROGMEM paste_combo[] = {KC_X, KC_V, COMBO_END};
combo_t key_combos[COMBO_COUNT] = {
[ZC_COPY] = COMBO_ACTION(copy_combo),
[XV_PASTE] = COMBO_ACTION(paste_combo),
};
void process_combo_event(uint8_t combo_index, bool pressed) {
switch(combo_index) {
case ZC_COPY:
if (pressed) {
register_code(KC_LCTL);
register_code(KC_C);
unregister_code(KC_C);
unregister_code(KC_LCTL);
}
break;
case XV_PASTE:
if (pressed) {
register_code(KC_LCTL);
register_code(KC_V);
unregister_code(KC_V);
unregister_code(KC_LCTL);
}
break;
}
}
```
This will send Ctrl+C if you hit Z and C, and Ctrl+V if you hit X and V. But you could change this to do stuff like change layers, play sounds, or change settings.
## Additional Configuration
If you're using long combos, or even longer combos, you may run into issues with this, as the structure may not be large enough to accommodate what you're doing.
In this case, you can add either `#define EXTRA_LONG_COMBOS` or `#define EXTRA_EXTRA_LONG_COMBOS` in your `config.h` file.
You may also be able to enable action keys by defining `COMBO_ALLOW_ACTION_KEYS`.

48
docs/feature_encoders.md Normal file

@ -0,0 +1,48 @@
# Encoders
Basic encoders are supported by adding this to your `rules.mk`:
ENCODER_ENABLE = yes
and this to your `config.h`:
#define NUMBER_OF_ENCODERS 1
#define ENCODERS_PAD_A { B12 }
#define ENCODERS_PAD_B { B13 }
Each PAD_A/B variable defines an array so multiple encoders can be defined, e.g.:
#define ENCODERS_PAD_A { encoder1a, encoder2a }
#define ENCODERS_PAD_B { encoder1a, encoder2b }
If your encoder's clockwise directions are incorrect, you can swap the A & B pad definitions.
Additionally, the resolution can be specified in the same file (the default & suggested is 4):
#define ENCODER_RESOLUTION 4
## Callbacks
The callback functions can be inserted into your `<keyboard>.c`:
void encoder_update_kb(uint8_t index, bool clockwise) {
encoder_update_user(index, clockwise);
}
or `keymap.c`:
void encoder_update_user(uint8_t index, bool clockwise) {
if (index == 0) {
if (clockwise) {
register_code(KC_PGDN);
unregister_code(KC_PGDN);
} else {
register_code(KC_PGUP);
unregister_code(KC_PGUP);
}
}
}
## Hardware
The A an B lines of the encoders should be wired directly to the MCU, and the C/common lines should be wired to ground.

@ -5,7 +5,7 @@ If you've ever used Vim, you know what a Leader key is. If not, you're about to
That's what `KC_LEAD` does. Here's an example:
1. Pick a key on your keyboard you want to use as the Leader key. Assign it the keycode `KC_LEAD`. This key would be dedicated just for this -- it's a single action key, can't be used for anything else.
2. Include the line `#define LEADER_TIMEOUT 300` somewhere in your keymap.c file, probably near the top. The 300 there is 300ms -- that's how long you have for the sequence of keys following the leader. You can tweak this value for comfort, of course.
2. Include the line `#define LEADER_TIMEOUT 300` in your config.h. The 300 there is 300ms -- that's how long you have for the sequence of keys following the leader. You can tweak this value for comfort, of course.
3. Within your `matrix_scan_user` function, do something like this:
```
@ -39,3 +39,11 @@ void matrix_scan_user(void) {
As you can see, you have a few function. You can use `SEQ_ONE_KEY` for single-key sequences (Leader followed by just one key), and `SEQ_TWO_KEYS`, `SEQ_THREE_KEYS` up to `SEQ_FIVE_KEYS` for longer sequences.
Each of these accepts one or more keycodes as arguments. This is an important point: You can use keycodes from **any layer on your keyboard**. That layer would need to be active for the leader macro to fire, obviously.
## Adding Leader Key Support in the `rules.mk`
To add support for Leader Key you simply need to add a single line to your keymap's `rules.mk`:
```
LEADER_ENABLE = yes
```

@ -228,6 +228,10 @@ This sends the `<kc>` keydown event to the computer. Some examples would be `KC_
Parallel to `register_code` function, this sends the `<kc>` keyup event to the computer. If you don't use this, the key will be held down until it's sent.
### `tap_code(<kc>);`
This will send `register_code(<kc>)` and then `unregister_code(<kc>)`. This is useful if you want to send both the press and release events ("tap" the key, rather than hold it).
### `clear_keyboard();`
This will clear all mods and keys currently pressed.

@ -6,6 +6,24 @@ To hook up a Trackpoint, you need to obtain a Trackpoint module (i.e. harvest fr
There are three available modes for hooking up PS/2 devices: USART (best), interrupts (better) or busywait (not recommended).
### The Cirtuitry between Trackpoint and Controller
To get the things working, a 4.7K drag is needed between the two lines DATA and CLK and the line 5+.
```
DATA ----------+--------- PIN
|
4.7K
|
MODULE 5+ --------+--+--------- PWR CONTROLLER
|
4.7K
|
CLK ------+------------ PIN
```
### Busywait Version
Note: This is not recommended, you may encounter jerky movement or unsent inputs. Please use interrupt or USART version if possible.

@ -140,6 +140,7 @@ These are the effects that are currently available:
RGB_MATRIX_RAINBOW_PINWHEELS,
RGB_MATRIX_RAINBOW_MOVING_CHEVRON,
RGB_MATRIX_JELLYBEAN_RAINDROPS,
RGB_MATRIX_DIGITAL_RAIN,
#ifdef RGB_MATRIX_KEYPRESSES
RGB_MATRIX_SOLID_REACTIVE,
RGB_MATRIX_SPLASH,
@ -149,6 +150,30 @@ These are the effects that are currently available:
#endif
RGB_MATRIX_EFFECT_MAX
};
You can disable a single effect by defining `DISABLE_[EFFECT_NAME]` in your `config.h`:
|Define |Description |
|---------------------------------------------------|--------------------------------------------|
|`#define DISABLE_RGB_MATRIX_ALPHAS_MODS` |Disables `RGB_MATRIX_ALPHAS_MODS` |
|`#define DISABLE_RGB_MATRIX_DUAL_BEACON` |Disables `RGB_MATRIX_DUAL_BEACON` |
|`#define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN` |Disables `RGB_MATRIX_GRADIENT_UP_DOWN` |
|`#define DISABLE_RGB_MATRIX_RAINDROPS` |Disables `RGB_MATRIX_RAINDROPS` |
|`#define DISABLE_RGB_MATRIX_CYCLE_ALL` |Disables `RGB_MATRIX_CYCLE_ALL` |
|`#define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT` |Disables `RGB_MATRIX_CYCLE_LEFT_RIGHT` |
|`#define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN` |Disables `RGB_MATRIX_CYCLE_UP_DOWN` |
|`#define DISABLE_RGB_MATRIX_RAINBOW_BEACON` |Disables `RGB_MATRIX_RAINBOW_BEACON` |
|`#define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS` |Disables `RGB_MATRIX_RAINBOW_PINWHEELS` |
|`#define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON`|Disables `RGB_MATRIX_RAINBOW_MOVING_CHEVRON`|
|`#define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS` |Disables `RGB_MATRIX_JELLYBEAN_RAINDROPS` |
|`#define DISABLE_RGB_MATRIX_DIGITAL_RAIN` |Disables `RGB_MATRIX_DIGITAL_RAIN` |
|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE` |Disables `RGB_MATRIX_SOLID_REACTIVE` |
|`#define DISABLE_RGB_MATRIX_SPLASH` |Disables `RGB_MATRIX_SPLASH` |
|`#define DISABLE_RGB_MATRIX_MULTISPLASH` |Disables `RGB_MATRIX_MULTISPLASH` |
|`#define DISABLE_RGB_MATRIX_SOLID_SPLASH` |Disables `RGB_MATRIX_SOLID_SPLASH` |
|`#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH` |Disables `RGB_MATRIX_SOLID_MULTISPLASH` |
## Custom layer effects

@ -63,8 +63,6 @@ Changing the **Value** sets the overall brightness.
|`RGB_MODE_GRADIENT`|`RGB_M_G` |Static gradient animation mode |
|`RGB_MODE_RGBTEST` |`RGB_M_T` |Red, Green, Blue test animation mode |
?> For backwards compatibility, `RGB_SMOD` is another alias of `RGB_MOD`.
## Configuration
Your RGB lighting can be configured by placing these `#define`s in your `config.h`:
@ -96,9 +94,10 @@ if `RGBLIGHT_EFFECT_xxxx` or `RGBLIGHT_ANIMATIONS` is defined, you also have a n
|`RGBLIGHT_MODE_RGB_TEST` | *None* |RGB Test |
|`RGBLIGHT_MODE_ALTERNATING` | *None* |Alternating |
Check out [this video](https://youtube.com/watch?v=VKrpPAHlisY) for a demonstration.
Note: For versions older than 0.6.117, The mode numbers were written directly. In `quantum/rgblight.h` there is a contrast table between the old mode number and the current symbol.
The following options can be used to tweak the various animations:
|Define |Default |Description |
@ -121,6 +120,7 @@ The following options can be used to tweak the various animations:
|`RGBLIGHT_EFFECT_KNIGHT_LED_NUM` |`RGBLED_NUM` |The number of LEDs to have the "Knight" animation travel |
|`RGBLIGHT_EFFECT_CHRISTMAS_INTERVAL`|`1000` |How long to wait between light changes for the "Christmas" animation, in milliseconds|
|`RGBLIGHT_EFFECT_CHRISTMAS_STEP` |`2` |The number of LEDs to group the red/green colors by for the "Christmas" animation |
|`RGBLIGHT_RAINBOW_SWIRL_RANGE` |`360` |Range adjustment for the rainbow swirl effect to get different swirls |
You can also modify the speeds that the different modes animate at:

@ -26,6 +26,8 @@ This array specifies what actions shall be taken when a tap-dance key is in acti
The first option is enough for a lot of cases, that just want dual roles. For example, `ACTION_TAP_DANCE_DOUBLE(KC_SPC, KC_ENT)` will result in `Space` being sent on single-tap, `Enter` otherwise.
!> Keep in mind that only [basic keycodes](keycodes_basic.md) are supported here. Custom keycodes are not supported.
And that's the bulk of it!
And now, on to the explanation of how it works!

@ -4,40 +4,108 @@ There are three Unicode keymap definition method available in QMK:
## UNICODE_ENABLE
Supports Unicode input up to 0xFFFF. The keycode function is `UC(n)` in
keymap file, where *n* is a 4 digit hexadecimal.
Supports Unicode input up to 0xFFFF. The keycode function is `UC(n)` in keymap file, where *n* is a 4 digit hexadecimal.
## UNICODEMAP_ENABLE
Supports Unicode up to 0xFFFFFFFF. You need to maintain a separate mapping
table `const uint32_t PROGMEM unicode_map[] = {...}` in your keymap file.
The keycode function is `X(n)` where *n* is the array index of the mapping
table.
Supports Unicode up to 0xFFFFFFFF. You need to maintain a separate mapping table `const uint32_t PROGMEM unicode_map[] = {...}` in your keymap file. The keycode function is `X(n)` where *n* is the array index of the mapping table.
And you may want to have an enum to make reference easier. So you'd want to add something like this to your keymap:
```c
enum unicode_name {
BANG, // ‽
IRONY, // ⸮
SNEK // snke 🐍
};
const uint32_t PROGMEM unicode_map[] = {
[BANG] = 0x0203D, // ‽
[IRONY] = 0x02E2E, // ⸮
[SNEK] = 0x1F40D // snke 🐍
}:
```
Make sure that the order for both matches.
## UCIS_ENABLE
TBD
Supports Unicode up to 0xFFFFFFFF. As with `UNICODE_MAP`, you may want to maintain a mapping table in your keymap file. However, there is no keycodes for this feature, you will have to add a keycode or function to call `qk_ucis_start()`. Once you've run that, you can just type the text for your unicode, and then hit space or enter to complete it, or ESC to cancel it. And if it matches an entry in your table, it will automatically "backspace" the trigger word (from your table) and then will input the unicode sequence.
Unicode input in QMK works by inputing a sequence of characters to the OS,
sort of like macro. Unfortunately, each OS has different ideas on how Unicode is inputted.
For instance, you would need to have a table like this in your keymap:
```c
const qk_ucis_symbol_t ucis_symbol_table[] = UCIS_TABLE
(
UCIS_SYM("poop", 0x1f4a9),
UCIS_SYM("rofl", 0x1f923),
UCIS_SYM("kiss", 0x1f619)
);
```
You run the function, and then type "rofl" and hit enter, it should backspace remove "rofl" and input the `0x1f923` unicode.
### Customization
There are several functions that you can add to your keymap to customize the functionality of this feature.
* `void qk_ucis_start_user(void)` - This runs when you run the "start" function, and can be used to provide feedback. By default, it types out a keyboard emoji.
* `void qk_ucis_success(uint8_t symbol_index)` - This runs when the unicode input has matched something, and has completed. Default doesn't do anything.
* `void qk_ucis_symbol_fallback (void)` - This runs if the input text doesn't match anything. The default function falls back to trying that input as a unicode code.
The default code for these are:
```c
void qk_ucis_start_user(void) { // outputs keyboard emoji
unicode_input_start();
register_hex(0x2328);
unicode_input_finish();
}
void qk_ucis_success(uint8_t symbol_index) {
}
void qk_ucis_symbol_fallback (void) { // falls back to manual unicode entry
for (uint8_t i = 0; i < qk_ucis_state.count - 1; i++) {
uint8_t code = qk_ucis_state.codes[i];
register_code(code);
unregister_code(code);
wait_ms(UNICODE_TYPE_DELAY);
}
}
```
## Unicode Input methods
Unicode input in QMK works by inputting a sequence of characters to the OS,
sort of like macro. Unfortunately, each OS has different ideas on how Unicode is input.
This is the current list of Unicode input method in QMK:
* UC_OSX: MacOS Unicode Hex Input support. Works only up to 0xFFFF. Disabled by default. To enable: go to System Preferences -> Keyboard -> Input Sources, and enable Unicode Hex.
* UC_OSX_RALT: Same as UC_OSX, but sends the Right Alt key for unicode input
* UC_LNX: Unicode input method under Linux. Works up to 0xFFFFF. Should work almost anywhere on ibus enabled distros. Without ibus, this works under GTK apps, but rarely anywhere else.
* UC_WIN: (not recommended) Windows built-in Unicode input. To enable: create registry key under `HKEY_CURRENT_USER\Control Panel\Input Method\EnableHexNumpad` of type `REG_SZ` called `EnableHexNumpad`, set its value to 1, and reboot. This method is not recommended because of reliability and compatibility issue, use WinCompose method below instead.
* UC_WINC: Windows Unicode input using WinCompose. Requires [WinCompose](https://github.com/samhocevar/wincompose). Works reliably under many (all?) variations of Windows.
* __UC_OSX__: MacOS Unicode Hex Input support. Works only up to 0xFFFF. Disabled by default. To enable: go to System Preferences -> Keyboard -> Input Sources, and enable Unicode Hex.
* __UC_OSX_RALT__: Same as UC_OSX, but sends the Right Alt key for unicode input
* __UC_LNX__: Unicode input method under Linux. Works up to 0xFFFFF. Should work almost anywhere on ibus enabled distros. Without ibus, this works under GTK apps, but rarely anywhere else.
* __UC_WIN__: (not recommended) Windows built-in Unicode input. To enable: create registry key under `HKEY_CURRENT_USER\Control Panel\Input Method\EnableHexNumpad` of type `REG_SZ` called `EnableHexNumpad`, set its value to 1, and reboot. This method is not recommended because of reliability and compatibility issue, use WinCompose method below instead.
* __UC_WINC__: Windows Unicode input using WinCompose. Requires [WinCompose](https://github.com/samhocevar/wincompose). Works reliably under many (all?) variations of Windows.
# Additional Language Support
At some point, you need to call `set_unicode_input_mode(x)` to set the correct unicode method. This sets the method that is used to send the unicode, and stores it in EEPROM, so you only need to call this once.
## `send_unicode_hex_string`
To type multiple characters for things like (ノಠ痊ಠ)ノ彡┻━┻, you can use `send_unicode_hex_string()` much like `SEND_STRING()` except you would use hex values separate by spaces.
For example, the table flip seen above would be `send_unicode_hex_string("0028 30CE 0CA0 75CA 0CA0 0029 30CE 5F61 253B 2501 253B")`
There are many ways to get a hex code, but an easy one is [this site](https://r12a.github.io/app-conversion/). Just make sure to convert to hexadecimal, and that is your string.
## Additional Language Support
In `quantum/keymap_extras/`, you'll see various language files - these work the same way as the alternative layout ones do. Most are defined by their two letter country/language code followed by an underscore and a 4-letter abbreviation of its name. `FR_UGRV` which will result in a `ù` when using a software-implemented AZERTY layout. It's currently difficult to send such characters in just the firmware.
# International Characters on Windows
## International Characters on Windows
[AutoHotkey](https://autohotkey.com) allows Windows users to create custom hotkeys among others.
### AutoHotkey allows Windows users to create custom hotkeys among others.
The method does not require Unicode support in the keyboard itself but depends instead of AutoHotkey running in the background.
The method does not require Unicode support in the keyboard itself but depends instead of [AutoHotkey](https://autohotkey.com) running in the background.
First you need to select a modifier combination that is not in use by any of your programs.
CtrlAltWin is not used very widely and should therefore be perfect for this.
@ -52,3 +120,11 @@ In the default script of AutoHotkey you can define custom hotkeys.
The hotkeys above are for the combination CtrlAltGui and CtrlAltGuiShift plus the letter a.
AutoHotkey inserts the Text right of `Send, ` when this combination is pressed.
### US International
If you enable the US International layout on the system, it will use punctuation to accent the characters.
For instance, typing "`a" will result in à.
You can find details on how to enable this [here](https://support.microsoft.com/en-us/help/17424/windows-change-keyboard-layout).

@ -5,15 +5,12 @@ If you use more than one keyboard with a similar keymap, you might see the benef
* `/users/<name>/` (added to the path automatically)
* `readme.md` (optional, recommended)
* `rules.mk` (included automatically)
* `config.h` (included automatically)
* `<name>.h` (optional)
* `<name>.c` (optional)
* `config.h` (optional)
* `cool_rgb_stuff.c` (optional)
* `cool_rgb_stuff.h` (optional)
`<name>.c` will need to be added to the SRC in `rules.mk` like this:
SRC += <name>.c
Additional files may be added in the same way - it's recommended you have one named `<name>`.c/.h though.
All this only happens when you build a keymap named `<name>`, like this:
@ -23,82 +20,179 @@ For example,
make planck:jack
Will include the `/users/jack/` folder in the path, along with `/users/jack/rules.mk`.
Will include the `/users/jack/` folder in the path, along with `/users/jack/rules.mk`.
!> This `name` can be [overridden](#override-default-userspace), if needed.
## `Rules.mk`
The `rules.mk` is one of the two files that gets processed automatically. This is how you add additional source files (such as `<name>.c`) will be added when compiling.
It's highly recommended that you use `<name>.c` as the default source file to be added. And to add it, you need to add it the SRC in `rules.mk` like this:
SRC += <name>.c
Additional files may be added in the same way - it's recommended you have one named `<name>`.c/.h to start off with, though.
The `/users/<name>/rules.mk` file will be included in the build _after_ the `rules.mk` from your keymap. This allows you to have features in your userspace `rules.mk` that depend on individual QMK features that may or may not be available on a specific keyboard.
For example, if you have RGB control features shared between all your keyboards that support RGB lighting, you can add support for that if the RGBLIGHT feature is enabled:
```make
ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
# Include my fancy rgb functions source here
SRC += cool_rgb_stuff.c
endif
```
Alternatively, you can `define RGB_ENABLE` in your keymap's `rules.mk` and then check for the variable in your userspace's `rules.mk` like this:
```make
ifdef RGB_ENABLE
# Include my fancy rgb functions source here
SRC += cool_rgb_stuff.c
endif
```
### Override default userspace
By default the userspace used will be the same as the keymap name. In some situations this isn't desirable. For instance, if you use the [layout](feature_layouts.md) feature you can't use the same name for different keymaps (e.g. ANSI and ISO). You can name your layouts `mylayout-ansi` and `mylayout-iso` and add the following line to your layout's `rules.mk`:
```
USER_NAME := mylayout
```
This is also useful if you have multiple different keyboards with different features physically present on the board (such as one with RGB Lights, and one with Audio, or different number of LEDs, or connected to a different PIN on the controller).
## Configuration Options (`config.h`)
Additionally, `config.h` here will be processed like the same file in your keymap folder. This is handled separately from the `<name>.h` file.
The reason for this, is that `<name>.h` won't be added in time to add settings (such as `#define TAPPING_TERM 100`), and including the `<name.h>` file in any `config.h` files will result in compile issues.
So you should use the `config.h` for QMK settings, and the `<name>.h` file for user or keymap specific settings.
!>You should use the `config.h` for [configuration options](config_options.md), and the `<name>.h` file for user or keymap specific settings (such as the enum for layer or keycodes)
`/users/<name>/rules.mk` will be included in the build _after_ the `rules.mk` from your keymap. This allows you to have features in your userspace `rules.mk` that depend on individual QMK features that may or may not be available on a specific keyboard. For example, if you have RGB control features shared between all your keyboards that support RGB lighting, you can `define RGB_ENABLE` in your keymap `rules.mk` and then check for the variable in your userspace `rules.mk` like this:
```make
ifdef RGB_ENABLE
# Include my fancy rgb functions source here
endif
```
Because of this, any time you turn on QMK features in your `users/<name>/rules.mk`, you should conditionally enable them only if the flag isn't already defined, like this:
```make
ifndef TAP_DANCE_ENABLE
TAP_DANCE_ENABLE = yes
endif
```
This will ensure that you can explicitly turn off features for an individual keymap.
## Readme
## Readme (`readme.md`)
Please include authorship (your name, github username, email), and optionally [a license that's GPL compatible](https://www.gnu.org/licenses/license-list.html#GPLCompatibleLicenses).
## `Config.h`
You can use this as a template:
```
Copyright <year> <name> <email> @<github_username>
If you do add a `config,h` file, you want to make sure that it only gets processed once. So you may want to start off with something like this:
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
```c
#ifndef USERSPACE_CONFIG_H
#define USERSPACE_CONFIG_H
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
// Put normal config.h settings here:
#endif // !USERSPACE_CONFIG_H
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
```
You can use any option hre that you could use in your keymap's `config.h` file. You can find a list of vales [here](config_options.md).
You'd want to replace the year, name, email and github username with your info.
## Example
Additionally, this is a good place to document your code, if you wish to share it with others.
For a brief example, checkout `/users/_example/` , or for a more detailed examples check out [`template.h`](https://github.com/qmk/qmk_firmware/blob/master/users/drashna/template.h) and [`template.c`](https://github.com/qmk/qmk_firmware/blob/master/users/drashna/template.c) in `/users/drashna/` .
# Examples
### Consolidated Macros
For a brief example, checkout [`/users/_example/`](https://github.com/qmk/qmk_firmware/tree/master/users/drashna).
For a more complicated example, checkout [`/users/drashna/`](https://github.com/qmk/qmk_firmware/tree/master/users/drashna)'s userspace.
If you wanted to consolidate macros and other functions into your userspace for all of your keymaps, you can do that. The issue is that you then cannot call any function defined in your userspace, or it gets complicated. To better handle this, you can call the functions here and create new functions to use in individual keymaps.
## Customized Functions
QMK has a bunch of [functions](custom_quantum_functions.md) that have [`_quantum`, `_kb`, and `_user` versions](custom_quantum_functions.md#a-word-on-core-vs-keyboards-vs-keymap) that you can use. You will pretty much always want to use the user version of these functions. But the problem is that if you use them in your userspace, then you don't have a version that you can use in your keymap.
However, you can actually add support for keymap version, so that you can use it in both your userspace and your keymap!
For instance, lets looks at the `layer_state_set_user` function. Lets enable the [Tri Layer State](ref_functions.md#olkb-tri-layers) functionalitly to all of our boards, and then still have your `keymap.c` still able to use this functionality.
In your `<name.c>` file, you'd want to add this:
```c
__attribute__ ((weak))
uint32_t layer_state_set_keymap (uint32_t state) {
return state;
}
uint32_t layer_state_set_user (uint32_t state) {
state = update_tri_layer_state(state, 2, 3, 5);
return layer_state_set_keymap (state);
}
```
The `__attribute__ ((weak))` part tells the compiler that this is a placeholder function that can then be replaced by a version in your `keymap.c`. That way, you don't need to add it to your `keymap.c`, but if you do, you won't get any conflicts because the function is the same name.
The `_keymap` part here doesn't matter, it just needs to be something other than `_quantum`, `_kb`, or `_user`, since those are already in use. So you could use `layer_state_set_mine`, `layer_state_set_fn`, or anything else.
You can see a list of this and other common functions in [`template.c`](https://github.com/qmk/qmk_firmware/blob/master/users/drashna/template.c) in [`users/drashna`](https://github.com/qmk/qmk_firmware/tree/master/users/drashna).
## Custom Features
Since the Userspace feature can support a staggering number of boards, you may have boards that you want to enable certain functionality for, but not for others. And you can actually create "features" that you can enable or disable in your own userspace.
For instance, if you wanted to have a bunch of macros available, but only on certain boards (to save space), you could "hide" them being a `#ifdef MACROS_ENABLED`, and then enable it per board. To do this, add this to your rules.mk
```make
ifeq ($(strip $(MACROS_ENABLED)), yes)
OPT_DEFS += -DMACROS_ENABLED
endif
```
The `OPT_DEFS` setting causes `MACROS_ENABLED` to be defined for your keyboards (note the `-D` in front of the name), and you could use `#ifdef MACROS_ENABLED` to check the status in your c/h files, and handle that code based on that.
Then you add `MACROS_ENABLED = yes` to the `rules.mk` for you keymap to enable this feature and the code in your userspace.
And in your `process_record_user` function, you'd do something like this:
```c
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
#ifdef MACROS_ENABLED
case MACRO1:
if (!record->event.pressed) {
SEND_STRING("This is macro 1!");
}
break;
case MACRO2:
if (!record->event.pressed) {
SEND_STRING("This is macro 2!");
}
break;
#endif
}
return true;
}
```
## Consolidated Macros
If you wanted to consolidate macros and other functions into your userspace for all of your keymaps, you can do that. This builds upon the [Customized Functions](#customized-functions) example above. This lets you maintain a bunch of macros that are shared between the different keyboards, and allow for keyboard specific macros, too.
First, you'd want to go through all of your `keymap.c` files and replace `process_record_user` with `process_record_keymap` instead. This way, you can still use keyboard specific codes on those boards, and use your custom "global" keycodes as well. You'll also want to replace `SAFE_RANGE` with `NEW_SAFE_RANGE` so that you wont have any overlapping keycodes
Then add `#include <name.h>` to all of your keymap.c files. This allows you to use these new keycodes without having to redefine them in each keymap.
Once you've done that, you'll want to set the keycode definitions that you need to the `<name>.h` file. For instance:
```
#ifndef USERSPACE
#define USERSPACE
```c
#pragma once
#include "quantum.h"
#include "action.h"
#include "version.h"
// Define all of
enum custom_keycodes {
KC_MAKE = SAFE_RANGE,
NEW_SAFE_RANGE //use "NEW_SAFE_RANGE" for keymap specific codes
};
#endif
```
Now you want to create the `<name>.c` file, and add this content to it:
```
```c
#include "<name>.h"
#include "quantum.h"
#include "action.h"
#include "version.h"
__attribute__ ((weak))
bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
@ -126,14 +220,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
```
This will add a new `KC_MAKE` keycode that can be used in any of your keymaps. And this keycode will output `make <keyboard>:<keymap">`, making frequent compiling easier. And this will work with any keyboard and any keymap as it will output the current boards info, so that you don't have to type this out every time.
This will add a new `KC_MAKE` keycode that can be used in any of your keymaps. And this keycode will output `make <keyboard>:<keymap>`, making frequent compiling easier. And this will work with any keyboard and any keymap as it will output the current boards info, so that you don't have to type this out every time.
Additionally, this should flash the newly compiled firmware automatically, using the correct utility, based on the bootloader settings (or default to just generating the HEX file). However, it should be noted that this may not work on all systems. AVRDUDE doesn't work on WSL, namely (and will dump the HEX in the ".build" folder instead).
## Override default userspace
By default the userspace used will be the same as the keymap name. In some situations this isn't desirable. For instance, if you use the [layout](feature_layouts.md) feature you can't use the same name for different keymaps (e.g. ANSI and ISO). You can name your layouts `mylayout-ansi` and `mylayout-iso` and add the following line to your layout's `rules.mk`:
```
USER_NAME := mylayout
```

@ -8,13 +8,17 @@ QMK has a staggering number of features for building your keyboard. It can take
* [Auto Shift](feature_auto_shift.md) - Tap for the normal key, hold slightly longer for its shifted state.
* [Backlight](feature_backlight.md) - LED lighting support for your keyboard.
* [Bootmagic](feature_bootmagic.md) - Adjust the behavior of your keyboard using hotkeys.
* [Combos](feature_combo.md) - Custom actions for multiple key holds.
* [Command](feature_command.md) - Runtime version of bootmagic (Formerly known as "Magic").
* [Dynamic Macros](feature_dynamic_macros.md) - Record and playback macros from the keyboard itself.
* [Grave Escape](feature_grave_esc.md) - Lets you use a single key for Esc and Grave.
* [HD44780 LCD Display](feature_hd44780.md) - Support for LCD character displays using the HD44780 standard.
* [Key Lock](feature_key_lock.md) - Lock a key in the "down" state.
* [Layouts](feature_layouts.md) - Use one keymap with any keyboard that supports your layout.
* [Leader Key](feature_leader_key.md) - Tap the leader key followed by a sequence to trigger custom behavior.
* [Macros](feature_macros.md) - Send multiple key presses when pressing only one physical key.
* [Mouse keys](feature_mouse_keys.md) - Control your mouse pointer from your keyboard.
* [One Shot Keys](feature_advanced_keycodes.md#one-shot-keys) - Sticky Keys, lets hit a key rather than holding it.
* [Pointing Device](feature_pointing_device.md) - Framework for connecting your custom pointing device to your keyboard.
* [PS2 Mouse](feature_ps2_mouse.md) - Driver for connecting a PS/2 mouse directly to your keyboard.
* [RGB Light](feature_rgblight.md) - RGB lighting for your keyboard.

@ -2,7 +2,7 @@
There are quite a few different types of bootloaders that keyboards use, and just about all of the use a different flashing method. Luckily, projects like the [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) aim to be compatible with all the different types without having to think about it much, but this article will describe the different types of bootloaders, and available methods for flashing them.
If you have a bootloader selected with the `BOOTLOADER` variable in your `rules.mk`, QMK will automatically calculate if your .hex file is the right size to be flashed to the device, and output the total size it bytes (along with the max). To run this process manually, compile with the target `check-size`, eg `make planck/rev4:default:check-size`.
If you have a bootloader selected with the `BOOTLOADER` variable in your `rules.mk`, QMK will automatically calculate if your .hex file is the right size to be flashed to the device, and output the total size in bytes (along with the max). To run this process manually, compile with the target `check-size`, eg `make planck/rev4:default:check-size`.
## DFU
@ -71,13 +71,19 @@ Flashing sequence:
1. Press the `RESET` keycode, or short RST to GND quickly (you only have 7 seconds to flash once it enters)
2. Wait for the OS to detect the device
4. Flash a .hex file
5. Wait for the device to reset automatically
3. Flash a .hex file
4. Wait for the device to reset automatically
or
make <keyboard>:<keymap>:avrdude
or if you want to flash multiple boards, use the following command
make <keyboard>:<keymap>:avrdude-loop
When you're done flashing boards, you'll need to hit Ctrl + C or whatever the correct keystroke is for your operating system to break the loop.
## Halfkay
Halfkay is a super-slim protocol developed by PJRC that uses HID, and come on all Teensys (namely the 2.0).
@ -100,5 +106,28 @@ Flashing sequence:
1. Press the `RESET` keycode, or short RST to GND quickly (you only have 7 seconds to flash once it enters)
2. Wait for the OS to detect the device
4. Flash a .hex file
5. Reset the device into application mode (may be done automatically)
3. Flash a .hex file
4. Reset the device into application mode (may be done automatically)
## STM32
All STM32 chips come preloaded with a factory bootloader that cannot be modified nor deleted. Some STM32 chips have bootloaders that do not come with USB programming (e.g. STM32F103) but the process is still the same.
At the moment, no `BOOTLOADER` variable is needed on `rules.mk` for STM32.
Compatible flashers:
* [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) (recommended GUI)
* [dfu-util](https://github.com/Stefan-Schmidt/dfu-util) / `:dfu-util` (recommended command line)
Flashing sequence:
1. Enter the bootloader using any of the following methods:
* Tap the `RESET` keycode (may not work on STM32F042 devices)
* If a reset circuit is present, tap the RESET button
* Otherwise, you need to bridge BOOT0 to VCC (via BOOT0 button or bridge), short RESET to GND (via RESET button or bridge), and then let go of the BOOT0 bridge
2. Wait for the OS to detect the device
3. Flash a .bin file
* You will receive a warning about the DFU signature; Just ignore it
4. Reset the device into application mode (may be done automatically)
* If you are building from command line (e.g. `make planck/rev6:default:dfu-util`), make sure that `:leave` is passed to the `DFU_ARGS` variable inside your `rules.mk` (e.g. `DFU_ARGS = -d 0483:df11 -a 0 -s 0x08000000:leave`) so that your device resets after flashing

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