Compare commits

...

153 Commits

Author SHA1 Message Date
QMK Bot
5e98eaaaff format code according to conventions [skip ci] 2020-03-13 18:44:56 +00:00
fredizzimo
9e8767917d Fix pressing two keys with the same keycode but different modifiers (#2710)
* Fix extra keyboard report during test_fixture teardown

* Add tests for pressing two keys with only different modifers

* Fix #1708

When two keys that use the same keycode, but different modifiers were
pressed at the same time, the second keypress wasn't registered. This is
fixed by forcing a key release when we detect a new press for the same
keycode.

* Fix the NKRO version of is_key_pressed

* Fix uninitalized loop variable

Co-authored-by: Jack Humbert <jack.humb@gmail.com>
2020-03-13 14:09:38 -04:00
QMK Bot
f89439ae09 format code according to conventions [skip ci] 2020-03-13 17:24:38 +00:00
francislan
3cd2a27ac0 Decouple mouse cursor and mouse wheel in accelerated mode (#6685)
* Decouples mouse cursor and mouse wheel movements in accelerated mode.

* Fixed comment indentation.

* Updated docs

Co-authored-by: Francis LAN <francislan@google.com>
2020-03-13 12:49:44 -04:00
Koichi Katano
28d94b7248 [Keyboard] Add Wallaby (#8398)
* Add wallaby

* Update readme.md

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

* Update keyboards/wallaby/rules.mk
2020-03-12 19:30:59 -07:00
nickolaij
abd8e75cb7 [Keyboard] Abacus Keyboard ReMerge (#8308)
* added abacus keyboard

* keymap updates

* Update keyboards/abacus/config.h

* Update keyboards/abacus/config.h

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

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

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

* start cleaning up for merge

* cleaned for merge

* cleaned

* cleaned

* Update keyboards/abacus/abacus.h

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

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

* Update keyboards/abacus/readme.md

* Update keyboards/abacus/readme.md

* Update keyboards/abacus/rules.mk

* Update keyboards/abacus/info.json

* Update keyboards/abacus/info.json

* Update keyboards/abacus/info.json

* Update keyboards/abacus/readme.md

* Update keyboards/abacus/info.json

* Update keyboards/abacus/rules.mk

* Update keyboards/abacus/rules.mk
2020-03-12 19:22:27 -07:00
James Young
9046107183 Restore getting_started_github.md doc 2020-03-12 17:24:07 -07:00
Ryan
2b63896466 Update Swedish keymap and add sendstring LUT (#8365) 2020-03-12 17:09:30 -07:00
Ryan
6734a39811 Update Spanish keymap and sendstring LUT (#8364) 2020-03-12 17:00:28 -07:00
skullY
799acb2802 use qmk.path.normpath to locate the output file. 2020-03-12 13:48:17 -07:00
TerryMathews
18bc525493 [Keyboard] Candybar update (#8335)
* Candybar: split lefty and righty into subprojects.

* Update readme.md

* Update readme.md

* Candybar: Moved STM32 library files into project root folder.

* Update keyboards/candybar/righty/readme.md

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

* Update keyboards/candybar/righty/readme.md

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

* Update keyboards/candybar/righty/readme.md

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

* Update keyboards/candybar/righty/readme.md

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

* Update keyboards/candybar/righty/righty.c

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

* Candybar: remove Boards directory so project uses one from drivers

* Update keyboards/candybar/righty/readme.md

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

* Update readme.md

* Update readme.md

Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
2020-03-12 19:52:59 +00:00
Christopher Janzen
4edb5a5e8c Add new keymap with split shift and split backspace for bananas… (#8395)
* Add new keymap with split right shift and split backspace for bananasplit PCB

* Remove unecessary config.h

* Remove unecessary line breaks

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

Co-authored-by: Christopher Janzen <hello@christopherjanzen.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2020-03-13 06:14:03 +11:00
Joel Challis
3b5fd4cc51 Enable custom backlight driver for kmac (#8397) 2020-03-12 13:11:55 +01:00
Joel Challis
cd9a430d66 Force "blank" issue template to end of list (#8387)
* force ascii sort of issue templates to add blank to end of list
2020-03-12 01:27:33 -07:00
Nick Brassel
1b267d4840 Fix darkmode (#8393)
* Rearrange the custom CSS a bit.

* fix css name

* add missing quote

* Fix up dark mode rendering. (#8392)

* Fix up dark mode rendering.

* Update index.html

* Fix up code blocks

* Fix code in page toc

* Update docs/qmk_custom_dark.css

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

Co-authored-by: skullY <skullydazed@gmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2020-03-12 18:17:47 +11:00
Daniel Rodríguez Rivero
32d03eef90 Danielo515/redox (#8232)
* feat(build): added script for compiling with docker easily

* chore: bring my own build with docker to master

* chore: delete a file that does not make sense anymore

* feat: first redox for danielo

* chore: basic compatibility between redox and my space

* refactor: removed some old stuff

* feat: added go coding symbols

* feat: name control_k and alt_j

* chore: reduce combo term

* feat: improved first layer of redox

* feat: add configurations to the redox

* feat: make alt tab more portable

* feat: small improvements to redox layout

* feat: added leader

* refactor: move leader defs to my userspace config

* chore: movement modified

* feat: more predefined keys and a a new combo

* feat: redox alt tab functionality

* refactor: move alt_tab processing to a separate file

* refactor: early return

* refactor: move process record to a separate file

* format leader function

* chore: backspace on digits layer

* feat: add extra combo

* feat: added more combos

* implement guard proposed by @drashna

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

* chore: include @drashna placeholder suggestion

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

Co-authored-by: Drashna Jaelre <drashna@live.com>
2020-03-12 02:50:19 +00:00
Nick Brassel
f2f2afe13b Add support for STM32L0/L1 onboard EEPROM. (#8002)
* Add support for STM32L0/L1 onboard EEPROM.

* Update docs/eeprom_driver.md

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

Co-authored-by: Joel Challis <git@zvecr.com>
2020-03-12 12:59:55 +11:00
Erkki Halinen
3a3ea03b6e [Keymap] Add Erkhal keymap to PRKL30 (#8355)
* Add Erkhal keymap

* Fix comment of layer

* Update keyboards/handwired/prkl30/keymaps/erkhal/readme.md
2020-03-11 16:06:47 -07:00
Takeshi ISHII
f3afc716cb fix keyboards/mxss/rgblight.h (#8388)
Since #7773 caused a build error for `mxss:default`, I made similar changes to 'keyboards/mxss/rgblight.h' as #7773 did to 'quantum/rgblight.h'.

**This commit does not change the build result.**

Testing script
```shell
 # build on versions earlier than PR #7773
 git checkout 0.8.24
 echo master > /tmp/master_md5.txt

 make mxss:default:clean
 make mxss:default
 md5 mxss_default.hex >> /tmp/master_md5.txt

 # build on this commit
 git checkout fix-keyboards-mxss-rgblight.h
 echo fix-keyboards-mxss-rgblight.h > /tmp/branch_md5.txt

 make mxss:default:clean
 make mxss:default
 md5 mxss_default.hex >> /tmp/branch_md5.txt

 diff -u /tmp/master_md5.txt /tmp/branch_md5.txt
```

Test result:
```
--- /tmp/master_md5.txt 2020-03-12 05:51:39.000000000 +0900
+++ /tmp/branch_md5.txt 2020-03-12 05:51:49.000000000 +0900
@@ -1,2 +1,2 @@
-master
+fix-keyboards-mxss-rgblight.h
MD5 (mxss_default.hex) = 3034b2504d0c7fc6bd8bf1dffb6b8486
```
2020-03-11 21:23:31 +00:00
Alexander Tulloh
e72562fe6f [Keyboard] Oddball keyboard (#8352)
* Initial commit of oddball keyboard

* Update oddball project url

* Update pointer functions to only run on master side

* Add unique product version

* Capitalise product name

* Convert oddball keymap layer flags to enum

* Remove commented keyboard boilerplate code

* Remove unused keymap config

* Fix incorrect layout in info.json

* Add markdown link text in readme
2020-03-11 00:56:05 -07:00
QMK Bot
2b66acf04a format code according to conventions [skip ci] 2020-03-11 05:11:02 +00:00
Drew Mills
5ac6fe1888 Add ADC support for STM32F3 and STM32F0 devices (#7681)
* Add ADC support for STM32F3 and STM32F0 devices

* Add section about configration options available to the ARM ADC implementation

* Fix STM32 typo
2020-03-11 15:38:39 +11:00
Zambumon
979ac0d8da Add VIA support to Tokyo60. (#8362)
* VIA_ENABLE Tokyo60 PCB

* Update config.h

* Apply suggestions from code review

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

Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
2020-03-11 00:44:20 +00:00
elmo-space
7a89b51018 fix kira80 matrix mapping and add more preset layouts (#8361)
* fix kira80 matrix mapping

* add more preset keymaps

* remove uselesss rgb mod keys
2020-03-10 15:10:14 -07:00
skullydazed
2a05d433c9 Rename qmk json-keymap to qmk json2c (#8372) 2020-03-10 13:51:19 -07:00
QMK Bot
1aa40dde46 format code according to conventions [skip ci] 2020-03-10 20:24:13 +00:00
Nathan Gray
2ffb08843b Feature: RGBLight layers (#7768)
* New feature: RGBLIGHT_LAYERS

This feature allows users to define multiple independent layers of lighting
that can be toggled on and off individually, making it easy to use your
RGB lighting to indicate things like active keyboard layer & modifier state.

* Demonstrate built in functions for layer state checking

Also link the video in the docs.

* Follow existing pattern for setting rgblight_status flags

* Eliminate rgblight_is_static_mode since it's not needed

Just check to see if the timer is enabled directly.
2020-03-10 12:50:01 -07:00
Wilba
2a8ccafe6e Refactor Equinox PCB revisions (#8266)
* Refactor Equinox PCB revisions

* typo
2020-03-10 11:34:19 -07:00
Alvin See
1757960b7b Replace tab indentation with spaces in is0 default keymap. (#8368) 2020-03-10 20:30:34 +11:00
Drashna Jaelre
668121bbf8 Fix layer debug calls (#8370) 2020-03-10 20:23:26 +11:00
Brett Mandler
483ab88489 [Keymap] Added HHKB Keymap and user config (#8119)
* Added my config

* Update my keymap

* Improve quality of brett.c

* Finish cleaning brett.c

* Remove QMK_FIRMWARE_H

* Update keyboards/hhkb/keymaps/brett/keymap.c

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

Co-authored-by: Ryan <fauxpark@gmail.com>
2020-03-10 01:52:39 -07:00
Takeshi ISHII
dbbab40981 Refactor rgblight_reconfig.h (#7773)
* Moved contents of rgblight_reconfig.h to rgblight_post_config.h.

In #3582, rgblight_reconfig.h had to be newly created. Now, the build system of qmk_firmware has a post_cofig feature, so that what was done in rgblight_reconfig.h can now be realized in rgblight_post_config.h.

**This commit does not change the build result.**

Testing script
```shell
  # build on master
  git checkout master
  echo master > /tmp/master_md5.txt

  # RGBLIGHT_ENABLE = no
  make HELIX=verbose helix/rev2:default:clean
  make HELIX=verbose helix/rev2:default
  md5 helix_rev2_default.hex >> /tmp/master_md5.txt

  # RGBLIGHT_ENABLE = yes, with animations
  make HELIX=verbose helix/rev2/back:default:clean
  make HELIX=verbose helix/rev2/back:default
  md5 helix_rev2_back_default.hex >> /tmp/master_md5.txt

  # RGBLIGHT_ENABLE = yes, without animations
  make HELIX=verbose,no_ani helix/rev2/back:default:clean
  make HELIX=verbose,no_ani helix/rev2/back:default
  md5 helix_rev2_back_default.hex >> /tmp/master_md5.txt

  # build on refactor_rgblight_reconfig.h
  git checkout refactor_rgblight_reconfig.h
  echo refactor_rgblight_reconfig.h > /tmp/branch_md5.txt

  # RGBLIGHT_ENABLE = no
  make HELIX=verbose helix/rev2:default:clean
  make HELIX=verbose helix/rev2:default
  md5 helix_rev2_default.hex >> /tmp/branch_md5.txt

  # RGBLIGHT_ENABLE = yes, with animations
  make HELIX=verbose helix/rev2/back:default:clean
  make HELIX=verbose helix/rev2/back:default
  md5 helix_rev2_back_default.hex >> /tmp/branch_md5.txt

  # RGBLIGHT_ENABLE = yes, without animations
  make HELIX=verbose,no_ani helix/rev2/back:default:clean
  make HELIX=verbose,no_ani helix/rev2/back:default
  md5 helix_rev2_back_default.hex >> /tmp/branch_md5.txt

  diff -u /tmp/master_md5.txt /tmp/branch_md5.txt
```

Test result:
```
--- /tmp/master_md5.txt 2020-01-03 15:42:22.000000000 +0900
+++ /tmp/branch_md5.txt 2020-01-03 15:42:42.000000000 +0900
@@ -1,4 +1,4 @@
-master
+refactor_rgblight_reconfig.h
 MD5 (helix_rev2_default.hex) = f360032edd522448366d471d8f4f8181
 MD5 (helix_rev2_back_default.hex) = 0c663acc6cccc44476b3b969ad22a48f
 MD5 (helix_rev2_back_default.hex) = e66b1195ff6d38e6e22c975b8ae42fd3
```

* Expressions that are too long are difficult to read, so wrap them.

* Edit the expression again

* remove `defined(RGBLIGHT_ANIMATIONS)` in `tmk_core/common/*/suspend.c`, `tmk_core/protocol/*/main.c`

move contents of rgblight_reconfig.h to rgblight.h.

The following changes were made to rgblight.h.

```diff
+#ifdef RGBLIGHT_USE_TIMER
 void rgblight_task(void);

 void rgblight_timer_init(void);
 void rgblight_timer_enable(void);
 void rgblight_timer_disable(void);
 void rgblight_timer_toggle(void);
+#else
+#define rgblight_task()
+#define rgblight_timer_init()
+#define rgblight_timer_enable()
+#define rgblight_timer_disable()
+#define rgblight_timer_toggle()
+#endif
```

The following changes were made to tmk_core/common/avr/suspend.c, tmk_core/common/chibios/suspend.c, tmk_core/protocol/chibios/main.c, tmk_core/protocol/lufa/lufa.c, tmk_core/protocol/vusb/main.c.

```diff
-#    ifdef RGBLIGHT_ANIMATIONS
     rgblight_timer_enable();
-#    endif
```
```diff
-#if defined(RGBLIGHT_ANIMATIONS) && defined(RGBLIGHT_ENABLE)
+#if defined(RGBLIGHT_ENABLE)
         rgblight_task();
 #endif
```

* remove 'defined(RGBLIGHT_ANIMATIONS)' in tmk_core/common/keyboard.c

Co-authored-by: Joel Challis <git@zvecr.com>
2020-03-10 01:46:03 -07:00
Takashi Shibusawa
20a0fa9209 [Keyboard] Palette1202 (#7736)
* added Palette1202

* removed currently unused cords

* Update keyboards/palette1202/config.h

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

* Apply suggestions from code review

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

* Update readme.md

removed unnecessary horizontal line from readme.md

* Update readme.md

Fixed style, make command example

* Removed spaces

* removed unused config.h

* fixed defines

* fixed send string on rotate encoder

* fixed layer numbers for OLED Display

* fixed to use existing function to set default layer

https://github.com/qmk/qmk_firmware/pull/7736#discussion_r366699616

* flipped rotary encoder directions

* Added layer for Clip studio on iOS

* Update keyboards/palette1202/rules.mk

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

* Update keyboards/palette1202/lib/oled_helper.h

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

Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2020-03-10 01:38:37 -07:00
MakotoKurauchi
2d14d12c74 [Keyboard] Helix add split common option (#7718)
* is_master, has_usb() move to rev2.[hc]

* Do recent helix/rev2 changes to helix/pico as well.

helix/pico/matrix.c: remove 'is_master'
helix/pico/pico.c: add 'is_master'
helix/pico/pico.h: add 'has_usb()' macro
helix/pico/split_util.c: remove 'setup_handedness()' 'has_usb()', add 'is_helix_master()' etc

* add HELIX=scan option into {rev2/pico}/local_features.mk

Made DEBUG_MATRIX_SCAN_RATE easy to use.

* Changed rules.mk to link "helix/local_drivers/ssd1306.c" only when OLED_ENABLE = yes.

* Added option to use split_common for helix/rev2, helix/pico keyboard.

how to build:
 ### build helix/pico (HelixPico) with helix current codes
  $ make helix/pico:KEY_MAP
  $ make helix/pico/back:KEY_MAP

 ### build helix/rev2 (Helix or Helix beta) with helix current codes
  $ make helix:KEY_MAP
  $ make helix/rev2/back:KEY_MAP
  $ make helix/rev2/under:KEY_MAP
  $ make helix/rev2/oled:KEY_MAP
  $ make helix/rev2/oled/back:KEY_MAP
  $ make helix/rev2/oled/under:KEY_MAP

 ### build helix/pico (HelixPico) with split_common codes
  $ make helix/pico/sc:KEY_MAP
  $ make helix/pico/sc/back:KEY_MAP
  $ make helix/pico/sc/under:KEY_MAP

 ### build helix/rev2 (Helix) with split_common codes
  $ make helix/rev2/sc:KEY_MAP
  $ make helix/rev2/sc/back:KEY_MAP
  $ make helix/rev2/sc/under:KEY_MAP
  $ make helix/rev2/sc/oled:KEY_MAP
  $ make helix/rev2/sc/oledback:KEY_MAP
  $ make helix/rev2/sc/oledunder:KEY_MAP

* add matrix_slave_scan_user() to helix/rev2/rev2.c, helix/pico/pico.h

* Changed 'helix:xulkal' to always use split_common and removed ad hoc code.

Added the following line to 'helix/rev2/keymaps/xulkal/rules.mk':

        SPLIT_KEYBOARD = yes

Removed the following ad hoc code from 'users/xulkal/custom_oled.c':

        #if KEYBOARD_helix_rev2
        extern uint8_t is_master;
        bool is_keyboard_master(void) { return is_master; }
        #endif

* add '#define DIODE_DIRECTION COL2ROW' into helix/{rev2|pico}/config.h

This commit does not change the build result.

* update helix readme

* keyboards/helix/readme.md
* keyboards/helix/pico/keymaps/default/readme.md
* keyboards/helix/rev2/keymaps/default/readme.md

Co-authored-by: mtei <2170248+mtei@users.noreply.github.com>
2020-03-10 01:33:46 -07:00
marcoSchr
0ba352356d Enable bootmagic lite for CU80 (#8363) 2020-03-10 00:30:02 -07:00
Richard Baptist
a4fd5e2491 [Keymap] Update personal keymap (#8354) 2020-03-09 23:40:27 -07:00
Ryan
5e3951b361 Remove NO_UART defines from config.h for V-USB boards (#8351) 2020-03-09 19:58:25 +00:00
elmo-space
5e4fcfac1c [Keyboard] Add Kira 80 support (#8342)
* add kira 80 initial support

* Delete config.h

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

* Update keyboards/kira80/readme.md

* Update keyboards/kira80/rules.mk

* Update keyboards/kira80/usbconfig.h

* Update keyboards/kira80/usbconfig.h

* Update keyboards/kira80/usbconfig.h

* Update keyboards/kira80/usbconfig.h

* update readme and fix wrong LED assignment (scrolllock instead of numlock)

* Update keyboards/kira80/rules.mk

* fix weird double commit

* exchange images in readme for smaller versions

* Update keyboards/kira80/readme.md

* Update keyboards/kira80/readme.md

* Update keyboards/kira80/readme.md

* Update keyboards/kira80/readme.md

* Apply suggestions from code review

* Apply suggestions from code review
2020-03-09 12:39:41 -07:00
Erkki Halinen
89ef9de98c [Keyboard] Add PRKL30 keyboard (#8319)
* Add PRKL30 default keymap

* Modify readmes, fix info.json url

* added layer pictures to readme.md

* edited layer pictures

* edited layer pictures

* edited layer pictures

* edited layout pictures

* edited layout pictures

* Modify default keymap

* Add arrows to Raise layer

* Add perkele macro and adjust symbols

* Add PRKL macro and modify keymap comments

* updated layout pictures

* edited layut pictures

* Add correct minus keycode

* Configure Feather config

* Update keyboards/handwired/prkl30/keymaps/default/keymap.c

* Update keyboards/handwired/prkl30/feather/rules.mk

* Update keyboards/handwired/prkl30/feather/config.h

* Update keyboards/handwired/prkl30/feather/config.h

* Update keyboards/handwired/prkl30/promicro/config.h

* Update keyboards/handwired/prkl30/promicro/rules.mk

* Update keyboards/handwired/prkl30/feather/config.h

* Update keyboards/handwired/prkl30/feather/config.h

* Update keyboards/handwired/prkl30/promicro/config.h

* Update keyboards/handwired/prkl30/feather/rules.mk

* Update keyboards/handwired/prkl30/keymaps/default/keymap.c

* Update keyboards/handwired/prkl30/info.json

* Update keyboards/handwired/prkl30/info.json

* Update keyboards/handwired/prkl30/keymaps/default/keymap.c

* Delete unused config

* Apply suggestions from code review

Commit code review changes

* Remove false comments from rules.mk

* Change layout to layout_all

* Apply suggestions from code review

Co-authored-by: Toni Johansson <toni.r.johansson@gmail.com>
2020-03-09 02:21:59 -07:00
Ryan
6c8d815f2e Update Dvorak, Colemak and Workman keycode aliases (#8217)
* Update Dvorak, Colemak and Workman keycode aliases

* Add missing shifted keycode aliases for Workman
2020-03-09 15:37:10 +11:00
Nick Brassel
2271da00bc Move splittest I2C (#8346) 2020-03-09 15:36:40 +11:00
Christian Gurholt
6e28ff24ba [Keymap] planck layout for kifinnsson (#8324)
* [Keymap] kifinnsson keymap for planck

Initial commit for kifinnsson keymap
* placeholder macros
* extend layer

* [Keymap] kifinnsson planck keymap updates

commented out placeholder SEND_STRING macros

* Update keyboards/planck/keymaps/kifinnsson/keymap.c

Remove extern keymap_config_t keymap_config;

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

* Update keyboards/planck/keymaps/kifinnsson/keymap.c

Changed KC_MENU to KC_APP

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

* Removing COLEMAK set_single_persistent_default_layer

as suggested

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

* updated uinit32()_t to layer_state_t() for update_tri_layer_state

as suggested

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

* Removing COLEMAK keycode

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

* Removing COLEMAK keycode in _ADJUST layer

* Update keymap.c

added switch (keycode) back into process_record_user

Co-authored-by: Ki Finnsson <kifinnsson@wgu.edu>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2020-03-08 20:58:30 -07:00
moyi4681
d526117896 add via support for dztech 60 and 65 pcb (#8334)
* add via support for dztech 60 and 65 pcb

add via support for dztech 60 and 65 pcb

* Update dz60rgb.h

* Update dz60rgb.h

* Update dz60rgb_ansi.h

* Update dz60rgb_wkl.h

* Update dz65rgb.h

* Update dz60rgb.h

* Update dz60rgb_ansi.h

* Update dz60rgb_wkl.h

* Update dz65rgb.h

* Update keyboards/dztech/dz60rgb/dz60rgb.h

* Update keyboards/dztech/dz60rgb_wkl/dz60rgb_wkl.h

* Update keyboards/dztech/dz65rgb/dz65rgb.h

* Update keyboards/dztech/dz60rgb_ansi/dz60rgb_ansi.h

* Update dz60rgb_wkl.h

* Update keyboards/dztech/dz65rgb/keymaps/via/keymap.c

* Update keyboards/dztech/dz60rgb_wkl/keymaps/via/keymap.c
2020-03-08 19:16:48 -07:00
skullydazed
cf40c33c90 Add gcc version detection to qmk doctor (#8338) 2020-03-08 09:21:45 -07:00
Samuel Li
4b7a3b2265 [Keyboard] New Keyboard: handwired/jtallbean/split_65 (#8275)
* New keyboard: split_65

* Updated readme

* Update with requested changes

* Add writePinLow to prevent flickering

* Renamed LAYOUT to LAYOUT_all
2020-03-08 00:26:26 -08:00
Ryan
829906969c Update Norwegian keymap and add sendstring LUT (#8300) 2020-03-08 15:43:05 +11:00
yulei
e0d15e6182 fixed #8259 (#8333) 2020-03-07 13:19:06 +00:00
Joel Challis
3a303bd2ae Backlight - Carve out a better location for private driver functionality (#8329)
* rename backlight_soft to match rules.mk

* rename backlight_soft to match rules.mk - update common_features

* Carve out a better location for private driver backlight functionality
2020-03-07 12:09:49 +00:00
su8044
d7ba0ad684 [Keyboard] Handwired Skeeb Keyboard (#8161)
* adding Handwired Skeeb Keyboard

* Apply suggestions from fauxpark

* Apply more suggestions from fauxpark and small change to layout

* Apply more suggestions from noroadsleft and last tap dance
2020-03-07 01:53:05 -08:00
Wilba
c4d8e56928 Added VIA keymap for Ramaworks M10-A (#8255)
* Added VIA keymap for Ramaworks M10-A

* change vendor/product in base config.h

* #pragma once

* Uee LAYOUT() in keymaps
2020-03-07 01:38:08 -08:00
zvecr
5e1ce3988d Remove unused LED_BREATHING_TABLE 2020-03-06 22:29:01 -08:00
kymok
dd05007f3b [Docs] i2c_driver translation to Japanese (#8274)
* [WIP] i2c_driver translation to ja

* update docs/ja/i2c_driver.md

* update docs/ja/i2c_driver.md

* align table + remove comment

* Update docs/ja/i2c_driver.md

* Update docs/ja/i2c_driver.md

* Update docs/ja/i2c_driver.md

* Update docs/ja/i2c_driver.md

* Update docs/ja/i2c_driver.md

* Update docs/ja/i2c_driver.md

* Update docs/ja/i2c_driver.md

* Update docs/ja/i2c_driver.md

* Update docs/ja/i2c_driver.md

* Update docs/ja/i2c_driver.md

* Update docs/ja/i2c_driver.md

* Update docs/ja/i2c_driver.md

* update docs/ja/i2c_driver.md

* Update docs/ja/i2c_driver.md

* Update docs/ja/i2c_driver.md

* Update docs/ja/i2c_driver.md

* add original document commit hash

Co-Authored-By: shela <shelaf@users.noreply.github.com>
2020-03-06 18:27:15 -08:00
QMK Bot
2306c974e5 format code according to conventions [skip ci] 2020-03-07 01:24:47 +00:00
brickbots
833c5ae87a Buffer based OLED panning, write byte to buffer at arbitrary index (#8055)
* Add buffer based single line pan, arbitrary byte write to buffer

* Change dirty mask to inverse of OLED_BLOCK_TYPE for future proofing larger buffer sizes

* Updating docs to include new functions

* Updating to clarify scroll vs pan
2020-03-07 00:52:39 +00:00
swreinehr
57de9e65ef Super 16 Puzzle Game (#8306)
* 15/16 game with lights for the super 16

* Updated readme with style

* adding comments and initial style to keymap

trying to make the code look prettier, need to test by redownloading

* Final style revisions before pull request

* formatting changes, removed config.h

* modified rules.mk, works with changes in PR8314

* formatting

no number of spaces is enough for a newline, whoops

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

* Update keyboards/1upkeyboards/super16/keymaps/15game/keymap.c

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

* Update keyboards/1upkeyboards/super16/keymaps/15game/keymap.c

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

* Update keyboards/1upkeyboards/super16/keymaps/15game/keymap.c

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

Co-authored-by: Sam Reinehr <swreinehr@mines.edu>
Co-authored-by: Ryan <fauxpark@gmail.com>
2020-03-07 00:15:44 +00:00
Chris Alves
6b6e47cbf1 DZ60 keyboard layout tuning and README update/fix (#8325)
* Added custom dz60 keymap

* Update readme.md

* Updated pictures in README.md

* README.md fixes

* Updated mouse layout/ added ` key

* Changed bkspc key to del in mod

* Changed picture

* Updated keymap

* Removed default dz60 config.h

* Updated Readme

* Added Devorak Keymap

* Re-added Default Config File

* Updated Flash Command

* Cleaned Up Custom Config File

* Added Lock Security Layer

* Updated Readme Picture

* Fixed Readme

* Re-added keyboard picture

* Added home and end button

* added insert, pgup, pgdn

* final commit before pull request

* fixing merge

* Added custom dz60 keymap

* adding lufa?

Co-authored-by: chrisae9 <chrisae9@penguin>
2020-03-07 00:11:41 +00:00
Anthony Leung
54b6bf5910 [Keyboard] Add VIA support for neuron (#8264)
* add VIA support for neuron

* update neuron vendor and product id

* update neuron product id

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

Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
2020-03-06 16:00:44 -08:00
James Young
73728e9bec [Docs] Fix links in Config Options doc 2020-03-06 13:10:17 -08:00
Mikkel Jeppesen
4f1a62ca1d [Keyboard] keebwerk. nano. slider support (#7914)
* Initial Keeb.werk nano.slider support

* fixed open ifdef

* Fixed layout macros

* Added LTO

* Enabled LTO and dissabled console

* Added basic slider example

* rate limited adc, and fixed send_string

* Made slider courser

* new-line after each slider print

* Switched slider example mirror the stock behavior using midi

* switched division to bit-shifting

* Apply suggestions from code review

* Update keyboards/keebwerk/nano_slider/keymaps/default/keymap.c

* Update keyboards/keebwerk/nano_slider/config.h

* Update keyboards/keebwerk/nano_slider/config.h

* Applied suggestions from code review

* Apply suggestions from code review

* Added fauxparks info.json

* Reverse midi value direction, move to QMKVID

* Update keyboards/keebwerk/nano_slider/config.h

* Update keyboards/keebwerk/nano_slider/config.h

* Update keyboards/keebwerk/nano_slider/keymaps/default/keymap.c

* Apply suggestions from code review

* Update keyboards/keebwerk/nano_slider/rules.mk

* Update keyboards/keebwerk/nano_slider/nano_slider.h

* Update keyboards/keebwerk/nano_slider/readme.md

* Defined backlight pin and settings
2020-03-06 11:00:17 -08:00
Shaun
4e826ba61f Correct typo in tap_hold.md (#8326)
Correct typo: "reasonal" to "reasonable"
2020-03-07 05:42:08 +11:00
Nick Brassel
b438c6f8ea Fix up Arm builds with nix-shell. (#8312) 2020-03-07 03:05:51 +11:00
QMK Bot
bad9468ce1 format code according to conventions [skip ci] 2020-03-06 13:28:11 +00:00
Ryan
9810756ee0 Fix typo in uart.c backport and add 32A "support" (#8219) 2020-03-06 23:55:15 +11:00
Joel Challis
918a85d342 Refactor more backlight to a common location (#8292)
* Refactor more backlight to a common location

* BACKLIGHT_PIN not defined for custom backlight

* align function names
2020-03-06 12:49:45 +00:00
Joel Challis
116c0e44a1 Remove stub backlight functions from clueboard/66/rev4 (#8303) 2020-03-06 12:12:20 +00:00
dr-BEat
3c0ef04390 [Keymap] Dichotomy keymap by beat (#8279)
* Added more led helpers

* Working keymap

* Added new mouse button an made lower layer toggleable

* Small improvement to process_record_user

* Removed extra layer buttons

* Added Numpad to apply layer

* Moved buttons and added toggle for raise button

* Added Menu,PrintScreen and Windowslock buttons, and left handmouse

* Fixed Scroll Buttons

* Turned TAPPING TOGGLE to 2

* Switched Del and Ctrl on left hand

* Added Home Button to Mouse layer

* Fixed led initialization to avoid red led on boot

* Updated formatting to follow guidelines

* Used enums instead of defines and used layer_state_t type

* Added license

* Moved TAPPING settings to keymap config

* Fixed small formatting issue in keymap.c

* Use GPIO Control instead of lowlevel ports
2020-03-06 00:47:52 -08:00
QMK Bot
fd7b52cc64 format code according to conventions [skip ci] 2020-03-06 02:15:29 +00:00
Joel Challis
d0d6fb27c4 Add f401 and f411 blackpill examples (#7930)
* Add f401 and f411 blackpill examples

* Add readme files

* Align dfu args with core

* Add support for RESET keycode

* move STM32_BOOTLOADER_ADDRESS to rules

* Update conf files to latest ChibiOS

* Update conf files to latest ChibiOS
2020-03-06 01:40:39 +00:00
Joel Challis
b368db9e02 Refactor fortitude60 to use split_common (#8113) 2020-03-06 01:39:54 +00:00
James Young
76189d9a28 link the 2020 Feb 29 Breaking Changes changelog from the summary 2020-03-05 16:00:10 -08:00
James Young
2939751eb3 keycodes.md: hard-code section link id attributes 2020-03-05 16:00:10 -08:00
James Young
772bacb770 keycodes.md: don't use section headings as links
It prevents the Table of Contents from parsing that heading.
2020-03-05 16:00:10 -08:00
skullY
961477c791 make sure all our redirects are in order 2020-03-05 16:00:10 -08:00
skullY
6956784ac1 Add more call to action items 2020-03-05 16:00:10 -08:00
skullY
54c58ea6de Add explicit id tags to externally linked headers 2020-03-05 16:00:10 -08:00
James Young
a95a314f78 refactor How a Matrix Works doc 2020-03-05 16:00:10 -08:00
James Young
bc31ebd0c4 Hand Wire guide tidying, part 2 2020-03-05 16:00:10 -08:00
James Young
fbf27e7444 Hand Wire guide tidying 2020-03-05 16:00:10 -08:00
James Young
8b5ca3d110 clean up Firmware Setup section in Hand Wire guide 2020-03-05 16:00:10 -08:00
James Young
06708b9dc8 remove collapsible section for Compiling; redirect to Building Firmware doc 2020-03-05 16:00:10 -08:00
James Young
772d5264d6 replace QMK Toolbox image in Hand Wire guide
Showing a current version of QMK Toolbox
2020-03-05 16:00:10 -08:00
James Young
994de86121 restructure Hand Wire Guide 2020-03-05 16:00:10 -08:00
James Young
906bdce6ce split Hand Wire Preamble to a separate doc 2020-03-05 16:00:10 -08:00
James Young
3bd65d2173 CSS updates: ul and pre elements 2020-03-05 16:00:10 -08:00
James Young
d5f34c4810 Polish Configurator section 2020-03-05 16:00:10 -08:00
skullY
503b52652c Adjust the H2 and H2 margins 2020-03-05 16:00:10 -08:00
skullY
b5030907eb reduce the line-height of the sidebar 2020-03-05 16:00:10 -08:00
skullY
8b0fdc82dc rearrange the sidebar a bit 2020-03-05 16:00:10 -08:00
skullY
8d8d61b3c5 limit the TOC to H1 and H2 2020-03-05 16:00:10 -08:00
skullY
f86fd0cd14 remove line drawing chars 2020-03-05 16:00:10 -08:00
skullY
12e43230c6 make custom_keycode_names.md a faq entry instead 2020-03-05 16:00:10 -08:00
skullY
55c5b82638 reduce space on h3s 2020-03-05 16:00:10 -08:00
skullY
9035c3497e break feature_advanced_keycodes.md up into multiple files 2020-03-05 16:00:10 -08:00
skullY
5d35098bfc improve our docsify setup 2020-03-05 16:00:10 -08:00
skullY
8249a288d7 fix numbering 2020-03-05 16:00:10 -08:00
skullY
45e218ceec overhaul the newbs guide 2020-03-05 16:00:10 -08:00
skullY
86f6405574 More sidebar organization 2020-03-05 16:00:10 -08:00
skullY
99850aabca Add API documentation 2020-03-05 16:00:10 -08:00
James Young
3c98854044 update flashing.md
- minor typo on intro paragraph (the -> them)
- remove note about :check-size target (`make` task now does this automatically)
- heading level for Caterina commands section
- typo regarding Halfkay (come -> comes)
2020-03-05 16:00:10 -08:00
James Young
7b1b53054f update newbs_building_firmware.md
Update the text sample for when the compile task completes.
2020-03-05 16:00:10 -08:00
skullY
a701c15d87 Rework the newbs guide around the qmk cli 2020-03-05 16:00:10 -08:00
skullY
1b7fa46f8e Add dark mode support 2020-03-05 16:00:10 -08:00
James Young
58fb57bfa7 _summary.md: move Auto Shift page to Software Features category 2020-03-05 16:00:10 -08:00
James Young
6af58fc25e clean up links to keycode references in newbs_building_firmware_configurator.md 2020-03-05 16:00:10 -08:00
James Young
e01763b8e5 clean up callouts in newbs_building_firmware_configurator.md 2020-03-05 16:00:10 -08:00
James Young
cdb5c074d3 remove some unnecessary external links
Also clean up some trailing whitespace.
2020-03-05 16:00:10 -08:00
skullY
3f1e47dbcd rework the index page 2020-03-05 16:00:10 -08:00
skullY
d1c0710dec remove unused docs 2020-03-05 16:00:10 -08:00
skullY
5b14456082 more wip 2020-03-05 16:00:10 -08:00
skullY
d1c18086d2 wip 2020-03-05 16:00:10 -08:00
James Young
4ef10a424a [Keyboard] add miller/gm-862 keyboard (#8230)
* add miller/gm-862 keyboard

* Update keyboards/miller/gm862/gm862.c

* Update keyboards/miller/gm862/gm862.h

* Update keyboards/miller/gm862/gm862.h

* Update keyboards/miller/gm862/readme.md

* Update keyboards/miller/gm862/readme.md

* Update keyboards/miller/gm862/readme.md

* Update keyboards/miller/gm862/readme.md

* Update config.h

* Update keyboards/miller/gm862/config.h

* Update keyboards/miller/gm862/readme.md
2020-03-05 13:51:43 -08:00
Ryan
23c31dd929 update lily58/rev1:yshrsmz (#8298)
* update lily58/rev1:yshrsmz

* use pre-shifted keycodes
2020-03-06 06:56:28 +11:00
James Young
921e18988f [Keyboard] CapsUnlocked CU80 (#8257)
* Initial commit for CU80

* Added iso and ansi to .json

* Update keyboards/cu80/config.h

Remove "Custom matrix"

* Update keyboards/cu80/config.h

* Update keyboards/cu80/config.h

* Update keyboards/cu80/config.h

* Update keyboards/cu80/cu80.h

* Update keyboards/cu80/rules.mk

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

* Update keyboards/cu80/rules.mk

* Update keyboards/cu80/rules.mk

* Update keyboards/cu80/cu80.h

* Update keyboards/cu80/readme.md

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

* Update keyboards/cu80/rules.mk

* Update keyboards/cu80/rules.mk

* Update keyboards/cu80/cu80.h

* Update keyboards/cu80/cu80.h

* Update keyboards/cu80/cu80.h

* Update keyboards/cu80/info.json

* Update keyboards/cu80/info.json

* Update keyboards/cu80/info.json

* Update keyboards/cu80/info.json

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

* Update keyboards/cu80/rules.mk
2020-03-04 21:40:03 -08:00
Ryan
7e30d189e9 Update config.h - Fixed number of RGB LEDs (#8316)
There are 18 LEDs, not 16
2020-03-05 12:39:50 +11:00
James Young
8fd8454308 [Keymap] Add @cjuniet's keymap/layout/userspace (#8258)
* Add Colemak layout

* Add status bar for mods & locks with a custom font

* Swap DEL and TAB

* Fix media keys and add QMK Configurator layout

* Add dead grave accent on <leader>e
2020-03-04 17:19:26 -08:00
James Young
8e229f0db6 [Keymap] Wilba/Singav3 nk65 keymap updates (#8267)
* via configurator can't do AG_TOGG with any key - meh

* same issue - via can't do AG_TOGG

* oops - missed AG_TOGG on the NK65

* add media and mousekeys

* Update keyboards/nk65/keymaps/madhatter/keymap.c
2020-03-04 17:14:36 -08:00
James Young
95ce19f846 Add RGB lighting through one of the free pins (#8294) 2020-03-04 16:59:06 -08:00
James Young
9550ab3342 [Keymap] Adding the 4sStylZ xd75 (#8285)
* Adding the 4sStylZ xd75

* Update keyboards/xd75/keymaps/4sstylz/keycodes.h

* Apply suggestions from code review
2020-03-04 16:42:09 -08:00
Nick Brassel
607e2f6c31 YD60MQ refactor and Configurator layout support (#8313)
* refactor yd60mq.h

- four-space indent
- use K<row><col> base32hex notation
- rename LAYOUT to LAYOUT_all (with alias for backwards compatibility)

* refactor yd60mq.c to use led_update_kb()

* align rules.mk to AVR template

* refactor default keymap

Also correct positions for KC_NUHS and KC_NUBS.

* update readme

* add Configurator layout support

* initialize the Caps Lock LED pin properly
2020-03-05 07:26:25 +11:00
Joel Challis
2d1081c296 [Keyboard] Forget to ifdef Super16 led config (#8314) 2020-03-04 19:46:03 +00:00
Joel Challis
0275098bdd [Keyboard] Switch to RGB Matrix for Super16 (#8305) 2020-03-04 18:19:39 +00:00
Salicylic-acid3
0c9171a619 [Keymap] Keymap Update (#8309)
* Keymap Update

Some key codes have been updated.
naked64:salicylic
7skb:default

* Keymap Update

Some key codes have been updated.
KC_GRAVE to KC_GRV
7skb:default
2020-03-04 16:16:36 +00:00
MechMerlin
23eb9f4fe5 New Keyboard: SiddersKB Majbritt (Pronounced My Brit) (#8260)
* Initial commit of majbritt

* Add QMK and VIA support to majbritt

* Change vendor and product id

* Change name

* Change make path

* Move Majbritt into sidderskb directory

* Update keyboards/sidderskb/majbritt/majbritt.c

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

* Update keyboards/sidderskb/majbritt/keymaps/default/config.h
Co-Authored-By: Ryan <fauxpark@gmail.com>

* remove unused file
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2020-03-04 13:12:00 +01:00
MechMerlin
31662af342 [Keyboard] VIA Support: Tada68 (#8289)
* tada68 via files

* change vid and pid based on wilba's recommendaton
2020-03-04 01:22:47 -08:00
Ryan
8c3ff3f32c [Keyboard] LFK78 refactor (#7835)
* Change include guards to pragma once

* Clean up default keymaps

* Remove some magic numbers and use GPIO macros

* Clean up keyboard.[ch]

* Tidy up info.json and readme

* Align config.h with template

* Split up revision code into subfolders

* rev C-H has no audio, apparently

* Change revc_h to revc and document differences

* Turn off Audio on revb for now, for Travis' sake

* Split info.json into revision folders

* Clean up default keymaps some more
2020-03-03 14:10:39 -08:00
Ibnu Daru Aji
910d603c65 [Keymap] new userspace for ibnuda (#8221)
* to ease the maintenance for some boards ibnuda has.

* followed ridingqwerty's suggestion on 8821.

* folloing drashna's suggestion on qmk's 8221.

* following drashn's suggestion on qmk's 8211
2020-03-03 13:46:11 -08:00
Jason Thigpen
ad96e995af [Keymap] Add crd's equinox keymap (#8251) 2020-03-03 12:45:18 -08:00
Alfred Maler
ed6586e25b [Keymap] Feature/alfrdmalr/keymap update (#8174)
* WIP do not merge

* first pass at custom preonic layout

* add auto shift and reset via leader key

* Update readme

* update copyright notice

* formatting changes

* fix: use MO instead of process_record_user

* added backslash and moved grave position

* remove extraneous 'j' characer in NUMPAD template

* update template formatting

* remove process_record_user

* swap "!" with "@"

* fix readme formatting

* update readme layout image

* restore settings layer

* add windows minimize sequence

* fix: switch to correct seq function for three-key sequence

* fix: missing semicolon

* refactor: move keymap to userspace and generic 5x12 layout

* add numlock to numpad layer

* add readme

* update readme formatting

* remove unused wrappers from layout keymap

* update readme title to reflect new location

* remove alfrdmalr directory from preonic/keymaps

* add ortho 4x12 support

* add 'trilayer' settings and update keymap

* update SYMBOLS layer to SYMBOL

* remove minimize sequence

* clean up user config

* add brightness controls

* update settings ascii

* moved some symbols around to make vim/linux smoother
2020-03-03 10:13:42 -08:00
shela
acaecb4f94 Fix bootloader definition for namecard2x4 (#8301)
BOOTLOADER needs to be defined as caterina because namecard2x4 uses avrdude for flasher.
2020-03-03 15:00:34 +00:00
Ryan
53ac4d214f Update Hungarian keymap and add sendstring LUT (#8220) 2020-03-03 11:55:42 +11:00
Ryan
bff56aa46c Remove "ugly hack in usb_main.c" comments (#8296) 2020-03-02 23:56:46 +00:00
Danny
ce30cd2a01 Update encoder functions for Iris VIA keymap (#8295) 2020-03-02 23:55:57 +00:00
Ted M Lin
552f8d81b9 Reduce PROGMEM usage for sendstring LUT (#8109)
* Reduce PROGMEM usage for keycode map

Bit-pack the keycode bool array to gain back a small amount of flash space.
The trade-off is an increase in runtime instructions when running macros.

It does make the code a bit harder to read, as well as maintain.

For configs that use send_string() et al, it saves ~100 bytes.

* Switch to macro and common definition

Rewrite the array declarations so both the unpacked (original) and
packed LUT arrays can use the same value definitions. This is done by
defining a macro that "knows what to do".

This makes the code much easier to read and maintain.

* Fix macro typos and improve perf

Pack the bits in a more efficient order for extraction.
And also fix the copy/paste error in the macro...

* Switch fully to packed LUT

Some minor reformatting.
Compile tested all sendstring_xyz.h to make sure they were converted
properly. Also checked that an unconverted version would generate a
compile error.

* Apply whitespace suggestions from code review

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

Co-authored-by: Ryan <fauxpark@gmail.com>
2020-03-03 10:43:18 +11:00
Drashna Jaelre
abd36de5ad [Docs] Update ISP Flashing guide (#8149)
* [Docs] Update ISP Flashing guide

* Apply suggestions from code review

AKA why you shouldn't write docs at 2am

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

* Update workding for planck-qmk-dfu

Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
2020-03-01 22:29:26 -08:00
Dustin L. Howett
b72a1aa3fe Rewrite the Bathroom Epiphanies Frosty Flake matrix and LED handling (#8243)
* Keyboard: revamp frosty-flake leds

This commit transitions bpiphany/frosty_flake to led_update_{kb,user}
and rewrites the AVR bit twiddling logic to use the standard QMK GPIO
API.

* Keyboard: rewrite frosty_flake's matrix reader to be a lite custom matrix

This commit replaces frosty_flake's custom matrix and debounce logic
with a "lite" custom matrix. In addition to being somewhat clearer, this
allows a consumer of the flake board to choose their own debouncing
algorithm. The one closest to the implementation originally in use is
sym_g, but this opens us up to supporting eager_pk and eager_pr.

The original matrix code was 18 columns for 8 rows, but using a single
row read and unpacking the bits into individual columns. To simplify,
I've changed the key layout to be 8C 18R instead of 18C 8R: this lets us
use a single read directly into the matrix _and_ drop down to a uint8_t
instead of a uint32_t for matrix_row_t.

Since we're no longer implementing our own debouncing and row unpacking,
we save ~400 bytes on the final firmware image.

Fully tested against a CM Storm QFR hosting the flake -- this commit
message was written using the new matrix code.

Firmware Sizes (assuming stock configuration as of 42d6270f2)

Matrix+Debounce     Size (bytes)
---------------     ------------
original            17740
new + sym_g         17284
new + eager_pr      18106
new + eager_pk      18204

I expect that there are some scanning speed benefits as well.

* Keyboard: update frosty_flake's UNUSED_PINS

* Keyboard: Remove meaningless weak redefinitions from frosty

These are not necessary (and all of them already live somewhere in
Quantum).
2020-03-02 05:17:09 +00:00
Nick Brassel
78069d4826 Add onekey keymap for testing reset to bootloader. (#8288) 2020-03-01 22:36:17 +00:00
Andrew Kannan
c543ccf07c Get the direction right on the S75 encoder (#8287) 2020-03-01 21:30:01 +00:00
Joel Challis
88356c85c4 Prune out pure software pwm && custom driver && remove wrapping BACKLIGHT_PIN (#8041) 2020-03-01 20:22:13 +00:00
Andrew Kannan
3dc061ac78 Make a fix to savage65 and tmov2 for via (#8286) 2020-03-02 07:16:43 +11:00
QMK Bot
95124bf933 format code according to conventions [skip ci] 2020-03-01 19:20:09 +00:00
Joel Challis
e7fb873ee2 Short term fix for conflicting types for 'tfp_printf' (#8157) 2020-03-02 05:46:40 +11:00
Joel Challis
629950e51b Fix recent clang-format breaking quantum.c (#8282) 2020-03-01 17:55:43 +00:00
QMK Bot
1ec8a7205f format code according to conventions [skip ci] 2020-03-01 13:54:25 +00:00
Ryan
ce604e1629 Remove duplicate BRTG case (#8277) 2020-03-01 13:22:21 +00:00
Ryan
c9e3fa6f70 Clean up includes for glcdfont headers (#7745)
* Clean up includes for glcdfont headers

* Remove pragma once, most of these are not headers

* Missed these
2020-03-01 17:56:50 +11:00
James Young
f513a9193c Fix the Breaking Changes doc again
WHAT YEAR IS IT?!
2020-02-29 20:46:48 -08:00
s-show
21715210e2 [Docs] translated 'feature_tap_dance.md' to japanese. (#8137)
* complete translation.

* Update docs/ja/feature_tap_dance.md

Update the file based on the suggestions.

* Update docs/ja/feature_tap_dance.md

Update the file based on the suggestions.

* Apply suggestions from code review

Update the file based on the suggestions.

* Apply suggestions from code review

Update the file based on the suggestions (Part 2).

* Apply suggestions from code review

Update the file based on the suggestions (Part 3).

* Apply suggestions from code review

Update the file based on the suggestions (Part 3).

* Apply suggestions from code review

Update the file based on the suggestions (Part 4).

* Apply suggestions from code review

Update the file based on the suggestions (Part 5).
ご提案いただいた修正案は全て確認できました。
続いて、コメント行の調整、「打つ・叩く」の変更、その他の修正を行います。

* fixed typo.

* Update the file based on the suggestions (Part 6).

* Update the file based on the suggestions (Part 7).

* Fixed sentence.

* Update docs/ja/feature_tap_dance.md

Update the file based on the suggestions (Part 8).

* Update the file based on the suggestions (Part 9).

Co-Authored-By: Takeshi ISHII <2170248+mtei@users.noreply.github.com>
Co-Authored-By: shela <shelaf@users.noreply.github.com>
2020-02-29 20:22:15 -08:00
Joel Challis
f74c769a19 PWM DMA based RGB Underglow for STM32 (#7928)
* Add pwm ws2812 driver

* Add docs for pwm ws2812 driver

* Update ws2812_pwm for ChibiOS 19

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

Co-authored-by: Nick Brassel <nick@tzarc.org>
2020-03-01 13:05:56 +11:00
holtenc
bb47236490 Add VIA support to Prime_M. Clean up all files (#8247)
* Add VIA support for Prime_L

* Update keyboards/primekb/prime_l/v1/config.h

* Add prime_exl_plus keyboard

* Temporary removal of prime_exl_plus

* Add Prime_EXL Plus, including VIA support

* Update keyboards/handwired/prime_exl_plus/readme.md

* Update keyboards/handwired/prime_exl_plus/readme.md

* Update keyboards/handwired/prime_exl_plus/readme.md

* Update keyboards/handwired/prime_exl_plus/rules.mk

* Update keyboards/handwired/prime_exl_plus/info.json

* Update keyboards/handwired/prime_exl_plus/info.json

* Update keyboards/handwired/prime_exl_plus/info.json

* Update keymap.c

* correct spacing of keymaps and layout macro. move indicator logic from user space to keyboard space

* further corrections to keymaps and layout macro.

* Update keyboards/handwired/prime_exl_plus/prime_exl_plus.c

* Update keyboards/handwired/prime_exl_plus/prime_exl_plus.c

* Update keyboards/handwired/prime_exl_plus/prime_exl_plus.c

* Update keyboards/handwired/prime_exl_plus/prime_exl_plus.c

* Update prime_exl_plus.c

* small edit to prime_exl_plus.c

* Add via support to Prime_M and clean things up

* Update rules.mk

* Update keyboards/primekb/prime_m/readme.md

* Update keyboards/primekb/prime_m/readme.md

* Update keyboards/primekb/prime_m/config.h
2020-02-29 17:42:50 -08:00
Nick Brassel
f5d1409c26 Track master branches for lib/chibios, lib/chibios-contrib, lib/ugfx. (#8273) 2020-03-01 11:51:38 +11:00
Nick Brassel
d0c3acbe3e Allow for ChibiOS 20.x (master), as well as enabling ChibiOS-Contrib HAL. (#8272) 2020-03-01 11:50:49 +11:00
Joel Challis
c775104b9f Use nano specs (#8270) 2020-03-01 11:49:16 +11:00
Joel Challis
8d9c800da0 Unconditionally enable ChibiOS syscalls (#8268)
* Enable syscalls all the time

* fix whitespace
2020-03-01 09:45:21 +11:00
647 changed files with 27052 additions and 8638 deletions

3
.gitmodules vendored
View File

@ -1,12 +1,15 @@
[submodule "lib/chibios"]
path = lib/chibios
url = https://github.com/qmk/ChibiOS
branch = master
[submodule "lib/chibios-contrib"]
path = lib/chibios-contrib
url = https://github.com/qmk/ChibiOS-Contrib
branch = master
[submodule "lib/ugfx"]
path = lib/ugfx
url = https://github.com/qmk/uGFX
branch = master
[submodule "lib/googletest"]
path = lib/googletest
url = https://github.com/google/googletest

View File

@ -23,4 +23,4 @@ endif
# Generate the keymap.c
$(KEYBOARD_OUTPUT)/src/keymap.c: $(KEYMAP_JSON)
bin/qmk json-keymap --quiet --output $(KEYMAP_C) $(KEYMAP_JSON)
bin/qmk json2c --quiet --output $(KEYMAP_C) $(KEYMAP_JSON)

View File

@ -141,6 +141,10 @@ else
SRC += $(PLATFORM_COMMON_DIR)/flash_stm32.c
OPT_DEFS += -DEEPROM_EMU_STM32F072xB
OPT_DEFS += -DSTM32_EEPROM_ENABLE
else ifneq ($(filter $(MCU_SERIES),STM32L0xx STM32L1xx),)
OPT_DEFS += -DEEPROM_DRIVER
COMMON_VPATH += $(DRIVER_PATH)/eeprom
SRC += eeprom_driver.c eeprom_stm32_L0_L1.c
else
# This will effectively work the same as "transient" if not supported by the chip
SRC += $(PLATFORM_COMMON_DIR)/eeprom_teensy.c
@ -159,7 +163,6 @@ ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/color.c
SRC += $(QUANTUM_DIR)/rgblight.c
CIE1931_CURVE := yes
LED_BREATHING_TABLE := yes
RGB_KEYCODES_ENABLE := yes
ifeq ($(strip $(RGBLIGHT_CUSTOM_DRIVER)), yes)
OPT_DEFS += -DRGBLIGHT_CUSTOM_DRIVER
@ -298,24 +301,27 @@ VALID_BACKLIGHT_TYPES := pwm software custom
BACKLIGHT_ENABLE ?= no
BACKLIGHT_DRIVER ?= pwm
ifeq ($(strip $(BACKLIGHT_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/process_keycode/process_backlight.c
ifeq ($(filter $(BACKLIGHT_DRIVER),$(VALID_BACKLIGHT_TYPES)),)
$(error BACKLIGHT_DRIVER="$(BACKLIGHT_DRIVER)" is not a valid backlight type)
endif
COMMON_VPATH += $(QUANTUM_DIR)/backlight
SRC += $(QUANTUM_DIR)/backlight/backlight.c
SRC += $(QUANTUM_DIR)/process_keycode/process_backlight.c
OPT_DEFS += -DBACKLIGHT_ENABLE
ifeq ($(strip $(BACKLIGHT_DRIVER)), custom)
OPT_DEFS += -DBACKLIGHT_CUSTOM_DRIVER
else ifeq ($(strip $(BACKLIGHT_DRIVER)), software)
SRC += $(QUANTUM_DIR)/backlight/backlight_soft.c
else
ifeq ($(PLATFORM),AVR)
SRC += $(QUANTUM_DIR)/backlight/backlight_avr.c
SRC += $(QUANTUM_DIR)/backlight/backlight_driver_common.c
ifeq ($(strip $(BACKLIGHT_DRIVER)), pwm)
ifeq ($(PLATFORM),AVR)
SRC += $(QUANTUM_DIR)/backlight/backlight_avr.c
else
SRC += $(QUANTUM_DIR)/backlight/backlight_arm.c
endif
else
SRC += $(QUANTUM_DIR)/backlight/backlight_arm.c
SRC += $(QUANTUM_DIR)/backlight/backlight_$(strip $(BACKLIGHT_DRIVER)).c
endif
endif
endif
@ -351,11 +357,6 @@ ifeq ($(strip $(CIE1931_CURVE)), yes)
LED_TABLES := yes
endif
ifeq ($(strip $(LED_BREATHING_TABLE)), yes)
OPT_DEFS += -DUSE_LED_BREATHING_TABLE
LED_TABLES := yes
endif
ifeq ($(strip $(LED_TABLES)), yes)
SRC += $(QUANTUM_DIR)/led_tables.c
endif

View File

@ -9,24 +9,35 @@
## What is QMK Firmware?
QMK (*Quantum Mechanical Keyboard*) is an open source community that maintains QMK Firmware, QMK Toolbox, qmk.fm, and these docs. QMK Firmware is a keyboard firmware based on the [tmk\_keyboard](http://github.com/tmk/tmk_keyboard) with some useful features for Atmel AVR controllers, and more specifically, the [OLKB product line](http://olkb.com), the [ErgoDox EZ](http://www.ergodox-ez.com) keyboard, and the [Clueboard product line](http://clueboard.co/). It has also been ported to ARM chips using ChibiOS. You can use it to power your own hand-wired or custom keyboard PCB.
QMK (*Quantum Mechanical Keyboard*) is an open source community centered around developing computer input devices. The community encompasses all sorts of input devices, such as keyboards, mice, and MIDI devices. A core group of collaborators maintains [QMK Firmware](https://github.com/qmk/qmk_firmware), [QMK Configurator](https://config.qmk.fm), [QMK Toolbox](https://github.com/qmk/qmk_toolbox), [qmk.fm](https://qmk.fm), and this documentation with the help of community members like you.
## How to Get It
## Get Started
If you plan on contributing a keymap, keyboard, or features to QMK, the easiest thing to do is [fork the repo through Github](https://github.com/qmk/qmk_firmware#fork-destination-box), and clone your repo locally to make your changes, push them, then open a [Pull Request](https://github.com/qmk/qmk_firmware/pulls) from your fork.
Totally new to QMK? There are two ways to get started:
Otherwise, you can clone it directly with `git clone https://github.com/qmk/qmk_firmware`. Do not download the zip or tar files; a git repository is required to download the submodules in order to compile.
* Basic: [QMK Configurator](https://config.qmk.fm)
* Just select your keyboard from the dropdown and program your keyboard.
* We have an [introductory video](https://www.youtube.com/watch?v=-imgglzDMdY) you can watch.
* There is also an overview [document you can read](newbs_building_firmware_configurator.md).
* Advanced: [Use The Source](newbs.md)
* More powerful, but harder to use
## How to Compile
## Make It Yours
Before you are able to compile, you'll need to [install an environment](getting_started_build_tools.md) for AVR or/and ARM development. Once that is complete, you'll use the `make` command to build a keyboard and keymap with the following notation:
QMK has lots of [features](features.md) to explore, and a good deal of reference documentation to dig through. Most features are taken advantage of by modifying your [keymap](keymap.md), and changing the [keycodes](keycodes.md).
make planck/rev4:default
## Need help?
This would build the `rev4` revision of the `planck` with the `default` keymap. Not all keyboards have revisions (also called subprojects or folders), in which case, it can be omitted:
Check out the [support page](support.md) to see how you can get help using QMK.
make preonic:default
## Give Back
## How to Customize
There are a lot of ways you can contribute to the QMK Community. The easiest way to get started is to use it and spread the word to your friends.
QMK has lots of [features](features.md) to explore, and a good deal of [reference documentation](http://docs.qmk.fm) to dig through. Most features are taken advantage of by modifying your [keymap](keymap.md), and changing the [keycodes](keycodes.md).
* Help people out on our forums and chat rooms:
* [/r/olkb](https://www.reddit.com/r/olkb/)
* [Discord Server](https://discord.gg/Uq7gcHh)
* Contribute to our documentation by clicking "Edit This Page" at the bottom
* [Translate our documentation into your language](translating.md)
* [Report a bug](https://github.com/qmk/qmk_firmware/issues/new/choose)
* [Open a Pull Request](contributing.md)

View File

@ -1,130 +1,162 @@
* [Complete Newbs Guide](newbs.md)
* [Getting Started](newbs_getting_started.md)
* Tutorial
* [Introduction](newbs.md)
* [Setup](newbs_getting_started.md)
* [Building Your First Firmware](newbs_building_firmware.md)
* [Flashing Firmware](newbs_flashing.md)
* [Testing and Debugging](newbs_testing_debugging.md)
* [Best Git Practices](newbs_git_best_practices.md)
* [Using Your Fork's Master](newbs_git_using_your_master_branch.md)
* [Resolving Merge Conflicts](newbs_git_resolving_merge_conflicts.md)
* [Resynchronizing a Branch](newbs_git_resynchronize_a_branch.md)
* [Learning Resources](newbs_learn_more_resources.md)
* [Getting Help/Support](support.md)
* [Other Resources](newbs_learn_more_resources.md)
* [QMK Basics](README.md)
* [QMK Introduction](getting_started_introduction.md)
* [QMK CLI](cli.md)
* [QMK CLI Config](cli_configuration.md)
* [Contributing to QMK](contributing.md)
* [How to Use Github](getting_started_github.md)
* [Getting Help](getting_started_getting_help.md)
* [Breaking Changes](breaking_changes.md)
* [My Pull Request Was Flagged](breaking_changes_instructions.md)
* [2019 Aug 30](ChangeLog/20190830.md)
* [FAQ](faq.md)
* FAQs
* [General FAQ](faq_general.md)
* [Build/Compile QMK](faq_build.md)
* [Debugging/Troubleshooting QMK](faq_debug.md)
* [Keymap](faq_keymap.md)
* [Driver Installation with Zadig](driver_installation_zadig.md)
* Detailed Guides
* [Install Build Tools](getting_started_build_tools.md)
* [Vagrant Guide](getting_started_vagrant.md)
* [Build/Compile Instructions](getting_started_make_guide.md)
* [Flashing Firmware](flashing.md)
* [Customizing Functionality](custom_quantum_functions.md)
* [Keymap Overview](keymap.md)
* [Hardware](hardware.md)
* [Compatible Microcontrollers](compatible_microcontrollers.md)
* [AVR Processors](hardware_avr.md)
* [Drivers](hardware_drivers.md)
* Reference
* [Keyboard Guidelines](hardware_keyboard_guidelines.md)
* [Config Options](config_options.md)
* [Keycodes](keycodes.md)
* [Coding Conventions - C](coding_conventions_c.md)
* [Coding Conventions - Python](coding_conventions_python.md)
* [Documentation Best Practices](documentation_best_practices.md)
* [Documentation Templates](documentation_templates.md)
* [Keymap FAQ](faq_keymap.md)
* [Glossary](reference_glossary.md)
* [Unit Testing](unit_testing.md)
* [Useful Functions](ref_functions.md)
* [Configurator Support](reference_configurator_support.md)
* [info.json Format](reference_info_json.md)
* [Python CLI Development](cli_development.md)
* [Features](features.md)
* [Basic Keycodes](keycodes_basic.md)
* [US ANSI Shifted Keys](keycodes_us_ansi_shifted.md)
* [Quantum Keycodes](quantum_keycodes.md)
* [Advanced Keycodes](feature_advanced_keycodes.md)
* [Audio](feature_audio.md)
* [Auto Shift](feature_auto_shift.md)
* [Backlight](feature_backlight.md)
* [Bluetooth](feature_bluetooth.md)
* [Bootmagic](feature_bootmagic.md)
* [Combos](feature_combo.md)
* [Command](feature_command.md)
* [Debounce API](feature_debounce_type.md)
* [DIP Switch](feature_dip_switch.md)
* [Dynamic Macros](feature_dynamic_macros.md)
* [Encoders](feature_encoders.md)
* [Grave Escape](feature_grave_esc.md)
* [Haptic Feedback](feature_haptic_feedback.md)
* [HD44780 LCD Controller](feature_hd44780.md)
* [Key Lock](feature_key_lock.md)
* [Layouts](feature_layouts.md)
* [Leader Key](feature_leader_key.md)
* [LED Matrix](feature_led_matrix.md)
* [Macros](feature_macros.md)
* [Mouse Keys](feature_mouse_keys.md)
* [OLED Driver](feature_oled_driver.md)
* [One Shot Keys](feature_advanced_keycodes.md#one-shot-keys)
* [Pointing Device](feature_pointing_device.md)
* [PS/2 Mouse](feature_ps2_mouse.md)
* [RGB Lighting](feature_rgblight.md)
* [RGB Matrix](feature_rgb_matrix.md)
* [Space Cadet](feature_space_cadet.md)
* [Split Keyboard](feature_split_keyboard.md)
* [Stenography](feature_stenography.md)
* [Swap Hands](feature_swap_hands.md)
* [Tap Dance](feature_tap_dance.md)
* [Terminal](feature_terminal.md)
* [Thermal Printer](feature_thermal_printer.md)
* [Unicode](feature_unicode.md)
* [Userspace](feature_userspace.md)
* [Velocikey](feature_velocikey.md)
* Configurator
* [Overview](newbs_building_firmware_configurator.md)
* [Step by Step](configurator_step_by_step.md)
* [Troubleshooting](configurator_troubleshooting.md)
* [Problems and Bugs](configurator_problems.md)
* QMK API
* [Overview](api_overview.md)
* [API Documentation](api_docs.md)
* [Keyboard Support](reference_configurator_support.md)
* For Makers and Modders
* [Hand Wiring Guide](hand_wire.md)
* [ISP Flashing Guide](isp_flashing_guide.md)
* [ARM Debugging Guide](arm_debugging.md)
* [ADC Driver](adc_driver.md)
* [I2C Driver](i2c_driver.md)
* [WS2812 Driver](ws2812_driver.md)
* [EEPROM Driver](eeprom_driver.md)
* [GPIO Controls](internals_gpio_control.md)
* [Custom Matrix](custom_matrix.md)
* [Proton C Conversion](proton_c_conversion.md)
* CLI
* [Overview](cli.md)
* [Configuration](cli_configuration.md)
* [Commands](cli_commands.md)
* For a Deeper Understanding
* [How Keyboards Work](how_keyboards_work.md)
* [Understanding QMK](understanding_qmk.md)
* Using QMK
* Guides
* [Customizing Functionality](custom_quantum_functions.md)
* [Driver Installation with Zadig](driver_installation_zadig.md)
* [Keymap Overview](keymap.md)
* [Vagrant Guide](getting_started_vagrant.md)
* Flashing
* [Flashing](flashing.md)
* [Flashing ATmega32A (ps2avrgb)](flashing_bootloadhid.md)
* IDEs
* [Using Eclipse with QMK](other_eclipse.md)
* [Using VSCode with QMK](other_vscode.md)
* Git Best Practices
* [Introduction](newbs_git_best_practices.md)
* [Your Fork](newbs_git_using_your_master_branch.md)
* [Merge Conflicts](newbs_git_resolving_merge_conflicts.md)
* [Fixing Your Branch](newbs_git_resynchronize_a_branch.md)
* Keyboard Building
* [Hand Wiring Guide](hand_wire.md)
* [ISP Flashing Guide](isp_flashing_guide.md)
* Other Topics
* [Using Eclipse with QMK](other_eclipse.md)
* [Using VSCode with QMK](other_vscode.md)
* [Support](support.md)
* [Translating the QMK Docs](translating.md)
* Simple Keycodes
* [Full List](keycodes.md)
* [Basic Keycodes](keycodes_basic.md)
* [Layer Switching](feature_advanced_keycodes.md)
* [Quantum Keycodes](quantum_keycodes.md)
* QMK Internals (In Progress)
* [Defines](internals_defines.md)
* [Input Callback Reg](internals_input_callback_reg.md)
* [Midi Device](internals_midi_device.md)
* [Midi Device Setup Process](internals_midi_device_setup_process.md)
* [Midi Util](internals_midi_util.md)
* [Send Functions](internals_send_functions.md)
* [Sysex Tools](internals_sysex_tools.md)
* Advanced Keycodes
* [Command](feature_command.md)
* [Dynamic Macros](feature_dynamic_macros.md)
* [Grave Escape](feature_grave_esc.md)
* [Leader Key](feature_leader_key.md)
* [Mod-Tap](mod_tap.md)
* [Macros](feature_macros.md)
* [Mouse Keys](feature_mouse_keys.md)
* [Space Cadet Shift](feature_space_cadet.md)
* [US ANSI Shifted Keys](keycodes_us_ansi_shifted.md)
* Software Features
* [Auto Shift](feature_auto_shift.md)
* [Combos](feature_combo.md)
* [Debounce API](feature_debounce_type.md)
* [Key Lock](feature_key_lock.md)
* [One Shot Keys](one_shot_keys.md)
* [Pointing Device](feature_pointing_device.md)
* [Swap Hands](feature_swap_hands.md)
* [Tap Dance](feature_tap_dance.md)
* [Tap-Hold Configuration](tap_hold.md)
* [Terminal](feature_terminal.md)
* [Unicode](feature_unicode.md)
* [Userspace](feature_userspace.md)
* Hardware Features
* Displays
* [HD44780 LCD Controller](feature_hd44780.md)
* [OLED Driver](feature_oled_driver.md)
* Lighting
* [Backlight](feature_backlight.md)
* [LED Matrix](feature_led_matrix.md)
* [RGB Lighting](feature_rgblight.md)
* [RGB Matrix](feature_rgb_matrix.md)
* [Audio](feature_audio.md)
* [Bluetooth](feature_bluetooth.md)
* [Bootmagic](feature_bootmagic.md)
* [Custom Matrix](custom_matrix.md)
* [DIP Switch](feature_dip_switch.md)
* [Encoders](feature_encoders.md)
* [Haptic Feedback](feature_haptic_feedback.md)
* [Proton C Conversion](proton_c_conversion.md)
* [PS/2 Mouse](feature_ps2_mouse.md)
* [Split Keyboard](feature_split_keyboard.md)
* [Stenography](feature_stenography.md)
* [Thermal Printer](feature_thermal_printer.md)
* [Velocikey](feature_velocikey.md)
* Developing QMK
* Breaking Changes
* [Overview](breaking_changes.md)
* [My Pull Request Was Flagged](breaking_changes_instructions.md)
* History
* [2020 Feb 29](ChangeLog/20200229.md)
* [2019 Aug 30](ChangeLog/20190830.md)
* C Development
* [ARM Debugging Guide](arm_debugging.md)
* [AVR Processors](hardware_avr.md)
* [Coding Conventions](coding_conventions_c.md)
* [Compatible Microcontrollers](compatible_microcontrollers.md)
* [Drivers](hardware_drivers.md)
* [ADC Driver](adc_driver.md)
* [I2C Driver](i2c_driver.md)
* [WS2812 Driver](ws2812_driver.md)
* [EEPROM Driver](eeprom_driver.md)
* [GPIO Controls](internals_gpio_control.md)
* [Keyboard Guidelines](hardware_keyboard_guidelines.md)
* Python Development
* [Coding Conventions](coding_conventions_python.md)
* [QMK CLI Development](cli_development.md)
* [QMK CLI Config](cli_dev_configuration.md)
* Configurator Development
* QMK API
* [Development Environment](api_development_environment.md)
* [Architecture Overview](api_development_overview.md)
* QMK Reference
* [Contributing to QMK](contributing.md)
* [Translating the QMK Docs](translating.md)
* [Config Options](config_options.md)
* [Make Documentation](getting_started_make_guide.md)
* [Documentation Best Practices](documentation_best_practices.md)
* [Documentation Templates](documentation_templates.md)
* [Community Layouts](feature_layouts.md)
* [Unit Testing](unit_testing.md)
* [Useful Functions](ref_functions.md)
* [info.json Format](reference_info_json.md)
* For a Deeper Understanding
* [How Keyboards Work](how_keyboards_work.md)
* [How a Matrix Works](how_a_matrix_works.md)
* [Understanding QMK](understanding_qmk.md)
* QMK Internals (In Progress)
* [Defines](internals_defines.md)
* [Input Callback Reg](internals_input_callback_reg.md)
* [Midi Device](internals_midi_device.md)
* [Midi Device Setup Process](internals_midi_device_setup_process.md)
* [Midi Util](internals_midi_util.md)
* [Send Functions](internals_send_functions.md)
* [Sysex Tools](internals_sysex_tools.md)

View File

@ -2,7 +2,7 @@
QMK can leverage the Analog-to-Digital Converter (ADC) on supported MCUs to measure voltages on certain pins. This can be useful for implementing things such as battery level indicators for Bluetooth keyboards, or volume controls using a potentiometer, as opposed to a [rotary encoder](feature_encoders.md).
This driver is currently AVR-only. The values returned are 10-bit integers (0-1023) mapped between 0V and VCC (usually 5V or 3.3V).
This driver currently supports both AVR and a limited selection of ARM devices. On AVR devices, the values returned are 10-bit integers (0-1023) mapped between 0V and VCC (usually 5V or 3.3V). On supported ARM devices, there is more flexibility in control of operation through `#define`s, but by default the values returned are 12-bit integers (0-4095) mapped between 0V and VCC (usually 3.3V).
## Usage
@ -20,6 +20,8 @@ Then place this include at the top of your code:
## Channels
### AVR
|Channel|AT90USB64/128|ATmega16/32U4|ATmega32A|ATmega328P|
|-------|-------------|-------------|---------|----------|
|0 |`F0` |`F0` |`A0` |`C0` |
@ -39,8 +41,84 @@ Then place this include at the top of your code:
<sup>\* The ATmega328P possesses two extra ADC channels; however, they are not present on the DIP pinout, and are not shared with GPIO pins. You can use `adc_read()` directly to gain access to these.</sup>
### ARM
Note that some of these pins are doubled-up on ADCs with the same channel. This is because the pins can be used for either ADC.
Also note that the F0 and F3 use different numbering schemes. The F0 has a single ADC and the channels are 0-based, whereas the F3 has 4 ADCs and the channels are 1 based. This is because the F0 uses the `ADCv1` implementation of the ADC, whereas the F3 uses the `ADCv3` implementation.
|ADC|Channel|STM32F0XX|STM32F3XX|
|---|-------|---------|---------|
|1 |0 |`A0` | |
|1 |1 |`A1` |`A0` |
|1 |2 |`A2` |`A1` |
|1 |3 |`A3` |`A2` |
|1 |4 |`A4` |`A3` |
|1 |5 |`A5` |`F4` |
|1 |6 |`A6` |`C0` |
|1 |7 |`A7` |`C1` |
|1 |8 |`B0` |`C2` |
|1 |9 |`B1` |`C3` |
|1 |10 |`C0` |`F2` |
|1 |11 |`C1` | |
|1 |12 |`C2` | |
|1 |13 |`C3` | |
|1 |14 |`C4` | |
|1 |15 |`C5` | |
|1 |16 | | |
|2 |1 | |`A4` |
|2 |2 | |`A5` |
|2 |3 | |`A6` |
|2 |4 | |`A7` |
|2 |5 | |`C4` |
|2 |6 | |`C0` |
|2 |7 | |`C1` |
|2 |8 | |`C2` |
|2 |9 | |`C3` |
|2 |10 | |`F2` |
|2 |11 | |`C5` |
|2 |12 | |`B2` |
|2 |13 | | |
|2 |14 | | |
|2 |15 | | |
|2 |16 | | |
|3 |1 | |`B1` |
|3 |2 | |`E9` |
|3 |3 | |`E13` |
|3 |4 | | |
|3 |5 | | |
|3 |6 | |`E8` |
|3 |7 | |`D10` |
|3 |8 | |`D11` |
|3 |9 | |`D12` |
|3 |10 | |`D13` |
|3 |11 | |`D14` |
|3 |12 | |`B0` |
|3 |13 | |`E7` |
|3 |14 | |`E10` |
|3 |15 | |`E11` |
|3 |16 | |`E12` |
|4 |1 | |`E14` |
|4 |2 | |`B12` |
|4 |3 | |`B13` |
|4 |4 | |`B14` |
|4 |5 | |`B15` |
|4 |6 | |`E8` |
|4 |7 | |`D10` |
|4 |8 | |`D11` |
|4 |9 | |`D12` |
|4 |10 | |`D13` |
|4 |11 | |`D14` |
|4 |12 | |`D8` |
|4 |13 | |`D9` |
|4 |14 | | |
|4 |15 | | |
|4 |16 | | |
## Functions
### AVR
|Function |Description |
|----------------------------|-------------------------------------------------------------------------------------------------------------------|
|`analogReference(mode)` |Sets the analog voltage reference source. Must be one of `ADC_REF_EXTERNAL`, `ADC_REF_POWER` or `ADC_REF_INTERNAL`.|
@ -48,3 +126,28 @@ Then place this include at the top of your code:
|`analogReadPin(pin)` |Reads the value from the specified QMK pin, eg. `F6` for ADC6 on the ATmega32U4. |
|`pinToMux(pin)` |Translates a given QMK pin to a mux value. If an unsupported pin is given, returns the mux value for "0V (GND)". |
|`adc_read(mux)` |Reads the value from the ADC according to the specified mux. See your MCU's datasheet for more information. |
### ARM
Note that care was taken to match all of the functions used for AVR devices, however complications in the ARM platform prevent that from always being possible. For example, the `STM32` chips do not have assigned Arduino pins. We could use the default pin numbers, but those numbers change based on the package type of the device. For this reason, please specify your target pins with their identifiers (`A0`, `F3`, etc.). Also note that there are some variants of functions that accept the target ADC for the pin. Some pins can be used for multiple ADCs, and this specified can help you pick which ADC will be used to interact with that pin.
|Function |Description |
|----------------------------|--------------------------------------------------------------------------------------------------------------------|
|`analogReadPin(pin)` |Reads the value from the specified QMK pin, eg. `A0` for channel 0 on the STM32F0 and ADC1 channel 1 on the STM32F3. Note that if a pin can be used for multiple ADCs, it will pick the lower numbered ADC for this function. eg. `C0` will be channel 6 of ADC 1 when it could be used for ADC 2 as well.|
|`analogReadPinAdc(pin, adc)`|Reads the value from the specified QMK pin and ADC, eg. `C0, 1` will read from channel 6, ADC 2 instead of ADC 1. Note that the ADCs are 0-indexed for this function.|
|`pinToMux(pin)` |Translates a given QMK pin to a channel and ADC combination. If an unsupported pin is given, returns the mux value for "0V (GND)".|
|`adc_read(mux)` |Reads the value from the ADC according to the specified pin and adc combination. See your MCU's datasheet for more information.|
## Configuration
## ARM
The ARM implementation of the ADC has a few additional options that you can override in your own keyboards and keymaps to change how it operates.
|`#define` |Type |Default |Description|
|-------------------|------|---------------------|-----------|
|ADC_CIRCULAR_BUFFER|`bool`|`false` |If `TRUE`, then the implementation will use a circular buffer.|
|ADC_NUM_CHANNELS |`int` |`1` |Sets the number of channels that will be scanned as part of an ADC operation. The current implementation only supports `1`.|
|ADC_BUFFER_DEPTH |`int` |`2` |Sets the depth of each result. Since we are only getting a 12-bit result by default, we set this to `2` bytes so we can contain our one value. This could be set to 1 if you opt for a 8-bit or lower result.|
|ADC_SAMPLING_RATE |`int` |`ADC_SMPR_SMP_1P5` |Sets the sampling rate of the ADC. By default, it is set to the fastest setting. Please consult the corresponding `hal_adc_lld.h` in ChibiOS for your specific microcontroller for further documentation on your available options.|
|ADC_RESOLUTION |`int` |`ADC_CFGR1_RES_12BIT`|The resolution of your result. We choose 12 bit by default, but you can opt for 12, 10, 8, or 6 bit. Please consult the corresponding `hal_adc_lld.h` in ChibiOS for your specific microcontroller for further documentation on your available options.|

View File

@ -0,0 +1,3 @@
# Development Environment Setup
To setup a development stack head over to the [qmk_web_stack](https://github.com/qmk/qmk_web_stack).

View File

@ -0,0 +1,44 @@
# QMK Compiler Development Guide
This page attempts to introduce developers to the QMK Compiler. It does not go into nitty gritty details- for that you should read code. What this will give you is a framework to hang your understanding on as you read the code.
# Overview
The QMK Compile API consists of a few movings parts:
![Architecture Diagram](https://raw.githubusercontent.com/qmk/qmk_api/master/docs/architecture.svg)
API Clients interact exclusively with the API service. This is where they submit jobs, check status, and download results. The API service inserts compile jobs into [Redis Queue](https://python-rq.org) and checks both RQ and S3 for the results of those jobs.
Workers fetch new compile jobs from RQ, compile them, and then upload the source and the binary to an S3 compatible storage engine.
# Workers
QMK Compiler Workers are responsible for doing the actual building. When a worker pulls a job from RQ it does several things to complete that job:
* Make a fresh qmk_firmware checkout
* Use the supplied layers and keyboard metadata to build a `keymap.c`
* Build the firmware
* Zip a copy of the source
* Upload the firmware, source zip, and a metadata file to S3.
* Report the status of the job to RQ
# API Service
The API service is a relatively simple Flask application. There are a few main views you should understand.
## @app.route('/v1/compile', methods=['POST'])
This is the main entrypoint for the API. A client's interaction starts here. The client POST's a JSON document describing their keyboard, and the API does some (very) basic validation of that JSON before submitting the compile job.
## @app.route('/v1/compile/&lt;string:job_id&gt;', methods=['GET'])
This is the most frequently called endpoint. It pulls the job details from redis, if they're still available, or the cached job details on S3 if they're not.
## @app.route('/v1/compile/&lt;string:job_id&gt;/download', methods=['GET'])
This method allows users to download the compiled firmware file.
## @app.route('/v1/compile/&lt;string:job_id&gt;/source', methods=['GET'])
This method allows users to download the source for their firmware.

68
docs/api_docs.md Normal file
View File

@ -0,0 +1,68 @@
# QMK API
This page describes using the QMK API. If you are an application developer you can use this API to compile firmware for any [QMK](https://qmk.fm) Keyboard.
## Overview
This service is an asynchronous API for compiling custom keymaps. You POST some JSON to the API, periodically check the status, and when your firmware has finished compiling you can download the resulting firmware and (if desired) source code for that firmware.
#### Example JSON Payload:
```json
{
"keyboard": "clueboard/66/rev2",
"keymap": "my_awesome_keymap",
"layout": "LAYOUT_all",
"layers": [
["KC_GRV","KC_1","KC_2","KC_3","KC_4","KC_5","KC_6","KC_7","KC_8","KC_9","KC_0","KC_MINS","KC_EQL","KC_GRV","KC_BSPC","KC_PGUP","KC_TAB","KC_Q","KC_W","KC_E","KC_R","KC_T","KC_Y","KC_U","KC_I","KC_O","KC_P","KC_LBRC","KC_RBRC","KC_BSLS","KC_PGDN","KC_CAPS","KC_A","KC_S","KC_D","KC_F","KC_G","KC_H","KC_J","KC_K","KC_L","KC_SCLN","KC_QUOT","KC_NUHS","KC_ENT","KC_LSFT","KC_NUBS","KC_Z","KC_X","KC_C","KC_V","KC_B","KC_N","KC_M","KC_COMM","KC_DOT","KC_SLSH","KC_RO","KC_RSFT","KC_UP","KC_LCTL","KC_LGUI","KC_LALT","KC_MHEN","KC_SPC","KC_SPC","KC_HENK","KC_RALT","KC_RCTL","MO(1)","KC_LEFT","KC_DOWN","KC_RIGHT"],
["KC_ESC","KC_F1","KC_F2","KC_F3","KC_F4","KC_F5","KC_F6","KC_F7","KC_F8","KC_F9","KC_F10","KC_F11","KC_F12","KC_TRNS","KC_DEL","BL_STEP","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","_______","KC_TRNS","KC_PSCR","KC_SLCK","KC_PAUS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","MO(2)","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_PGUP","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","MO(1)","KC_LEFT","KC_PGDN","KC_RGHT"],
["KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","RESET","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","MO(2)","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","MO(1)","KC_TRNS","KC_TRNS","KC_TRNS"]
]
}
```
As you can see the payload describes all aspects of a keyboard necessary to create and generate a firmware. Each layer is a single list of QMK keycodes the same length as the keyboard's `LAYOUT` macro. If a keyboard supports mulitple `LAYOUT` macros you can specify which macro to use.
## Submitting a Compile Job
To compile your keymap into a firmware simply POST your JSON to the `/v1/compile` endpoint. In the following example we've placed the JSON payload into a file named `json_data`.
```
$ curl -H "Content-Type: application/json" -X POST -d "$(< json_data)" http://api.qmk.fm/v1/compile
{
"enqueued": true,
"job_id": "ea1514b3-bdfc-4a7b-9b5c-08752684f7f6"
}
```
## Checking The Status
After submitting your keymap you can check the status using a simple HTTP GET call:
```
$ curl http://api.qmk.fm/v1/compile/ea1514b3-bdfc-4a7b-9b5c-08752684f7f6
{
"created_at": "Sat, 19 Aug 2017 21:39:12 GMT",
"enqueued_at": "Sat, 19 Aug 2017 21:39:12 GMT",
"id": "f5f9b992-73b4-479b-8236-df1deb37c163",
"status": "running",
"result": null
}
```
This shows us that the job has made it through the queue and is currently running. There are 5 possible statuses:
* **failed**: Something about the compiling service has broken.
* **finished**: The compilation is complete and you should check `result` to see the results.
* **queued**: The keymap is waiting for a compilation server to become available.
* **running**: The compilation is in progress and should be complete soon.
* **unknown**: A serious error has occurred and you should [file a bug](https://github.com/qmk/qmk_compiler/issues).
## Examining Finished Results
Once your compile job has finished you'll check the `result` key. The value of this key is a hash containing several key bits of information:
* `firmware_binary_url`: A list of URLs for the the flashable firmware
* `firmware_keymap_url`: A list of URLs for the the `keymap.c`
* `firmware_source_url`: A list of URLs for the full firmware source code
* `output`: The stdout and stderr for this compile job. Errors will be found here.

15
docs/api_overview.md Normal file
View File

@ -0,0 +1,15 @@
# QMK API
The QMK API provides an asynchronous API that Web and GUI tools can use to compile arbitrary keymaps for any keyboard supported by [QMK](http://qmk.fm/). The stock keymap template supports all QMK keycodes that do not require supporting C code. Keyboard maintainers can supply their own custom templates to enable more functionality.
## App Developers
If you are an app developer interested in using this API in your application you should head over to [Using The API](api_docs.md).
## Keyboard Maintainers
If you would like to enhance your keyboard's support in the QMK Compiler API head over to the [Keyboard Support](reference_configurator_support.md) section.
## Backend Developers
If you are interested in working on the API itself you should start by setting up a [Development Environment](api_development_environment.md), then check out [Hacking On The API](api_development_overview.md).

View File

@ -1,9 +0,0 @@
# Becoming a QMK Collaborator
A QMK collaborator is a keyboard maker or designer that is interested in helping QMK grow and fully support their keyboard(s), and encouraging their users and customers to submit features, ideas, and keymaps. We're always looking to add more keyboards and collaborators, but we ask that they fulfill these requirements:
* **Have a PCB available for sale.** Unfortunately there's just too much variation and complications with handwired keyboards.
* **Maintain your keyboard in QMK.** This may just require an initial setup to get your keyboard working, but it could also include accommodating changes made to QMK's core that might break or render any custom code redundant.
* **Approve and merge keymap pull requests for your keyboard.** We like to encourage users to contribute their keymaps for others to see and work from when creating their own.
If you feel you meet these requirements, shoot us an email at hello@qmk.fm with an introduction and some links to your keyboard!

View File

@ -15,7 +15,7 @@ The next Breaking Change is scheduled for May 30, 2020.
### Important Dates
* [x] 2019 Feb 29 - `future` is created. It will be rebased weekly.
* [x] 2020 Feb 29 - `future` is created. It will be rebased weekly.
* [ ] 2020 May 2 - `future` closed to new PR's.
* [ ] 2020 May 2 - Call for testers.
* [ ] 2020 May 28 - `master` is locked, no PR's merged.

View File

@ -167,8 +167,7 @@ $ qmk compile -kb dz60
## `qmk flash`
This command is similar to `qmk compile`, but can also target a bootloader. The bootloader is optional, and is set to `:flash` by default.
To specify a different bootloader, use `-bl <bootloader>`. Visit <https://docs.qmk.fm/#/flashing>
for more details of the available bootloaders.
To specify a different bootloader, use `-bl <bootloader>`. Visit the [Flashing Firmware](flashing.md) guide for more details of the available bootloaders.
**Usage for Configurator Exports**:
@ -232,14 +231,14 @@ Check your environment and report problems only:
qmk doctor -n
## `qmk json-keymap`
## `qmk json2c`
Creates a keymap.c from a QMK Configurator export.
**Usage**:
```
qmk json-keymap [-o OUTPUT] filename
qmk json2c [-o OUTPUT] filename
```
## `qmk kle2json`

View File

@ -4,7 +4,7 @@ This document explains how `qmk config` works.
# Introduction
Configuration for QMK CLI is a key/value system. Each key consists of a subcommand and an argument name separated by a period. This allows for a straightforward and direct translation between config keys and the arguments they set.
Configuration for the QMK CLI is a key/value system. Each key consists of a subcommand and an argument name separated by a period. This allows for a straightforward and direct translation between config keys and the arguments they set.
## Simple Example

View File

@ -136,22 +136,22 @@ If you define these options you will enable the associated feature, which may in
* enables handling for per key `TAPPING_TERM` settings
* `#define RETRO_TAPPING`
* tap anyway, even after TAPPING_TERM, if there was no other key interruption between press and release
* See [Retro Tapping](feature_advanced_keycodes.md#retro-tapping) for details
* See [Retro Tapping](tap_hold.md#retro-tapping) for details
* `#define TAPPING_TOGGLE 2`
* how many taps before triggering the toggle
* `#define PERMISSIVE_HOLD`
* 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
* See [Permissive Hold](tap_hold.md#permissive-hold) for details
* `#define PERMISSIVE_HOLD_PER_KEY`
* enabled handling for per key `PERMISSIVE_HOLD` settings
* `#define IGNORE_MOD_TAP_INTERRUPT`
* 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
* See [Ignore Mod Tap Interrupt](tap_hold.md#ignore-mod-tap-interrupt) for details
* `#define IGNORE_MOD_TAP_INTERRUPT_PER_KEY`
* enables handling for per key `IGNORE_MOD_TAP_INTERRUPT` settings
* `#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#tapping-force-hold)
* See [Tapping Force Hold](tap_hold.md#tapping-force-hold)
* Breaks any Tap Toggle functionality (`TT` or the One Shot Tap Toggle)
* `#define TAPPING_FORCE_HOLD_PER_KEY`
* enables handling for per key `TAPPING_FORCE_HOLD` settings
@ -190,6 +190,8 @@ If you define these options you will enable the associated feature, which may in
* pin the DI on the WS2812 is hooked-up to
* `#define RGBLIGHT_ANIMATIONS`
* run RGB animations
* `#define RGBLIGHT_LAYERS`
* Lets you define [lighting layers](feature_rgblight.md) that can be toggled on or off. Great for showing the current keyboard layer or caps lock state.
* `#define RGBLED_NUM 12`
* number of LEDs
* `#define RGBLIGHT_SPLIT`
@ -335,7 +337,7 @@ This is a [make](https://www.gnu.org/software/make/manual/make.html) file that i
* `bootloadHID`
* `USBasp`
## Feature Options
## Feature Options :id=feature-options
Use these to enable or disable building certain features. The more you have enabled the bigger your firmware will be, and you run the risk of building a firmware too large for your MCU.

View File

@ -0,0 +1,58 @@
# QMK Configurator: Step by Step
This page describes the steps for building your firmware in QMK Configurator.
## Step 1: Select Your Keyboard
Click the drop down box and select the keyboard you want to create a keymap for.
?> If your keyboard has several versions, make sure you select the correct one.
I'll say that again because it's important:
!> **MAKE SURE YOU SELECT THE RIGHT VERSION!**
If your keyboard has been advertised to be powered by QMK but is not in the list, chances are a developer hasn't gotten to it yet or we haven't had a chance to merge it in yet. File an issue at [qmk_firmware](https://github.com/qmk/qmk_firmware/issues) requesting to support that particular keyboard, if there is no active [Pull Request](https://github.com/qmk/qmk_firmware/pulls?q=is%3Aopen+is%3Apr+label%3Akeyboard) for it. There are also QMK powered keyboards that are in their manufacturer's own github accounts. Double check for that as well. <!-- FIXME(skullydazed): This feels too wordy and I'm not sure we want to encourage these kinds of issues. Also, should we prompt them to bug the manufacutrer? -->
## Step 2: Select Your Keyboard Layout
Choose the layout that best represents the keymap you want to create. Some keyboards do not have enough layouts or correct layouts defined yet. They will be supported in the future.
!> Sometimes there isn't a layout that supports your exact build. In that case select `LAYOUT_all`.
## Step 3: Name Your Keymap
Call this keymap what you want.
?> If you are running into issues when compiling, it may be worth changing this name, as it may already exist in the QMK Firmware repo.
## Step 4: Define Your Keymap
Keycode Entry is accomplished in one of 3 ways:
1. Drag and drop
2. Clicking on an empty spot on the layout, then clicking the keycode you desire
3. Clicking on an empty spot on the layout, then pressing the physical key on your keyboard
?> Hover your mouse over a key and a short blurb will tell you what that keycode does. For a more verbose description please see:
* [Basic Keycode Reference](keycodes_basic.md)
* [Advanced Keycode Reference](feature_advanced_keycodes.md)
!> If your selected layout doesn't match your physical build leave the unused keys blank. If you're not sure which key is in use, for example you have a one backspace key but `LAYOUT_all` has 2 keys, put the same keycode in both locations.
## Step 5: Save Your Keymap for Future Changes
When you're satisfied with your keymap or just want to work on it later, press the `Export Keymap` button. It will save your keymap to your computer. You can then load this .json file in the future by pressing the `Import Keymap` button.
!> **CAUTION:** This is not the same type of .json file used for kbfirmware.com or any other tool. If you try to use this for those tools, or the .json from those tools with QMK Configurator, you will encounter problems.
## Step 6: Compile Your Firmware File
Press the green `Compile` button.
When the compilation is done, you will be able to press the green `Download Firmware` button.
## Next steps: Flashing Your Keyboard
Please refer to [Flashing Firmware](newbs_flashing.md).

View File

@ -0,0 +1,26 @@
# Configurator Troubleshooting
## My .json file is not working
If the .json file was generated with QMK Configurator, congratulations you have stumbled upon a bug. File an issue at [qmk_configurator](https://github.com/qmk/qmk_configurator/issues).
If not... how did you miss the big bold message at the top saying not to use other .json files?
## There are extra spaces in my layout? What do I do?
If you're referring to having three spots for space bar, the best course of action is to just fill them all with Space. The same can be done for Backspace and Shift keys.
## What is the keycode for...
Please see:
* [Basic Keycode Reference](keycodes_basic.md)
* [Advanced Keycode Reference](feature_advanced_keycodes.md)
## It won't compile
Please double check the other layers of your keymap to make sure there are no random keys present.
## Problems and Bugs
We are always accepting customer requests and bug reports. Please file them at [qmk_configurator](https://github.com/qmk/qmk_configurator/issues).

View File

@ -101,7 +101,7 @@ enum my_keycodes {
};
```
### Previewing the Documentation
### Previewing the Documentation :id=previewing-the-documentation
Before opening a pull request, you can preview your changes if you have set up the development environment by running this command from the `qmk_firmware/` folder:

View File

@ -4,7 +4,7 @@ For a lot of people a custom keyboard is about more than sending button presses
This page does not assume any special knowledge about QMK, but reading [Understanding QMK](understanding_qmk.md) will help you understand what is going on at a more fundamental level.
## A Word on Core vs Keyboards vs Keymap
## A Word on Core vs Keyboards vs Keymap :id=a-word-on-core-vs-keyboards-vs-keymap
We have structured QMK as a hierarchy:
@ -34,7 +34,7 @@ enum my_keycodes {
};
```
## Programming the Behavior of Any Keycode
## Programming the Behavior of Any Keycode :id=programming-the-behavior-of-any-keycode
When you want to override the behavior of an existing key, or define the behavior for a new key, you should use the `process_record_kb()` and `process_record_user()` functions. These are called by QMK during key processing before the actual key event is handled. If these functions return `true` QMK will process the keycodes as usual. That can be handy for extending the functionality of a key rather than replacing it. If these functions return `false` QMK will skip the normal key handling, and it will be up to you to send any key up or down events that are required.
@ -313,7 +313,7 @@ void suspend_wakeup_init_user(void) {
* Keyboard/Revision: `void suspend_power_down_kb(void)` and `void suspend_wakeup_init_user(void)`
* Keymap: `void suspend_power_down_kb(void)` and `void suspend_wakeup_init_user(void)`
# Layer Change Code
# Layer Change Code :id=layer-change-code
This runs code every time that the layers get changed. This can be useful for layer indication, or custom layer handling.

View File

@ -77,7 +77,7 @@
* [Macros](de/feature_macros.md)
* [Mouse Keys](de/feature_mouse_keys.md)
* [OLED Driver](de/feature_oled_driver.md)
* [One Shot Keys](de/feature_advanced_keycodes.md#one-shot-keys)
* [One Shot Keys](de/one_shot_keys.md)
* [Pointing Device](de/feature_pointing_device.md)
* [PS/2 Mouse](de/feature_ps2_mouse.md)
* [RGB Lighting](de/feature_rgblight.md)
@ -108,7 +108,7 @@
* Andere Themen
* [Eclipse mit QMK](de/other_eclipse.md)
* [VSCode mit QMK](de/other_vscode.md)
* [Support](de/support.md)
* [Support](de/getting_started_getting_help.md)
* [Übersetzungen](de/translating.md)
* QMK Internals (In Progress)

View File

@ -2,7 +2,7 @@
This page documents the templates you should use when submitting new Keymaps and Keyboards to QMK.
## Keymap `readme.md` Template
## Keymap `readme.md` Template :id=keyboard-readmemd-template
Most keymaps have an image depicting the layout. You can use [Keyboard Layout Editor](http://keyboard-layout-editor.com) to create an image. Upload it to [Imgur](http://imgur.com) or another hosting service, please do not include images in your Pull Request.

View File

@ -2,14 +2,16 @@
The EEPROM driver can be swapped out depending on the needs of the keyboard, or whether extra hardware is present.
Driver | Description
--------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
`EEPROM_DRIVER = vendor` | Uses the on-chip driver provided by the chip manufacturer. For AVR, this is provided by avr-libc. This is supported on ARM for a subset of chips -- STM32F3xx, STM32F1xx, and STM32F072xB will be emulated by writing to flash. Other chips will generally act as "transient" below.
`EEPROM_DRIVER = i2c` | Supports writing to I2C-based 24xx EEPROM chips. See the driver section below.
`EEPROM_DRIVER = transient` | Fake EEPROM driver -- supports reading/writing to RAM, and will be discarded when power is lost.
Driver | Description
-----------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
`EEPROM_DRIVER = vendor` (default) | Uses the on-chip driver provided by the chip manufacturer. For AVR, this is provided by avr-libc. This is supported on ARM for a subset of chips -- STM32F3xx, STM32F1xx, and STM32F072xB will be emulated by writing to flash. STM32L0xx and STM32L1xx will use the onboard dedicated true EEPROM. Other chips will generally act as "transient" below.
`EEPROM_DRIVER = i2c` | Supports writing to I2C-based 24xx EEPROM chips. See the driver section below.
`EEPROM_DRIVER = transient` | Fake EEPROM driver -- supports reading/writing to RAM, and will be discarded when power is lost.
## Vendor Driver Configuration
!> Resetting EEPROM using an STM32L0/L1 device takes up to 1 second for every 1kB of internal EEPROM used.
No configurable options are available.
## I2C Driver Configuration

View File

@ -77,7 +77,7 @@
* [Macros](es/feature_macros.md)
* [Teclas del ratón](es/feature_mouse_keys.md)
* [Driver OLED](es/feature_oled_driver.md)
* [Teclas One Shot](es/feature_advanced_keycodes.md#one-shot-keys)
* [Teclas One Shot](es/one_shot_keys.md)
* [Dispositivo de apuntado](es/feature_pointing_device.md)
* [Ratón PS/2](es/feature_ps2_mouse.md)
* [Iluminación RGB](es/feature_rgblight.md)
@ -108,7 +108,7 @@
* Otros temas
* [Usando Eclipse con QMK](es/other_eclipse.md)
* [Usando VSCode con QMK](es/other_vscode.md)
* [Soporte](es/support.md)
* [Soporte](es/getting_started_getting_help.md)
* [Cómo añadir traducciones](es/translating.md)
* QMK Internals (En progreso)

View File

@ -1,9 +0,0 @@
# Llegar a ser un colaborador QMK
Un colaborador QMK es un maker o diseñador de teclados que tiene interés en ayudar a QMK a crecer y mantener sus teclado(s), y alentar a los usuarios y clientes a presentar herramientas, ideas, y keymaps. Siempre procuramos agregar más teclados y colaboradores, pero pedimos que cumplan los siguientes requisitos:
* **Tener un PCB disponible a la venta.** Desafortunadamente, hay demasiada variación y complicaciones con teclados cableados a mano.
* **Realizar el mantenimiento de tu teclado en QMK.** Este podría requirir un setup inicial para hacer que tu teclado funcione, pero también podría incluir adaptarse a cambios hecho al base de QMK que podrían descomponer o rendir código superfluo.
* **Aprobar e incorporar pull requests de keymaps para tu teclado.** Nos gusta alentar a los usuarios a contribuir sus keymaps para que otros los vean y los puedan usar para crear sus propios.
Si sientes que cumples los requisitos, ¡mándanos un email a hello@qmk.fm con una introducción y algunos enlaces para tu teclado!

View File

@ -4,7 +4,7 @@ El [Configurador QMK](https://config.qmk.fm) es un entorno gráfico online que g
?> **Por favor sigue estos pasos en orden.**
Ve el [Video tutorial](https://youtu.be/tx54jkRC9ZY)
Ve el [Video tutorial](https://www.youtube.com/watch?v=-imgglzDMdY)
El Configurador QMK functiona mejor con Chrome/Firefox.

View File

@ -1,6 +0,0 @@
# Frequently Asked Questions
* [General](faq_general.md)
* [Building or Compiling QMK](faq_build.md)
* [Debugging and Troubleshooting QMK](faq_debug.md)
* [Keymap](faq_keymap.md)

View File

@ -4,6 +4,44 @@
[QMK](https://github.com/qmk), short for Quantum Mechanical Keyboard, is a group of people building tools for custom keyboards. We started with the [QMK firmware](https://github.com/qmk/qmk_firmware), a heavily modified fork of [TMK](https://github.com/tmk/tmk_keyboard).
## I don't know where to start!
If this is the case, then you should start with our [Newbs Guide](newbs.md). There is a lot of great info there, and that should cover everything you need to get started.
If that's an issue, hop onto the [QMK Configurator](https://config.qmk.fm), as that will handle a majority of what you need there.
## How can I flash the firmware I built?
First, head to the [Compiling/Flashing FAQ Page](faq_build.md). There is a good deal of info there, and you'll find a bunch of solutions to common issues there.
## What if I have an issue that isn't covered here?
Okay, that's fine. Then please check the [open issues in our GitHub](https://github.com/qmk/qmk_firmware/issues) to see if somebody is experiencing the same thing (make sure it's not just similar, but actually the same).
If you can't find anything, then please open a [new issue](https://github.com/qmk/qmk_firmware/issues/new)!
## What if I found a bug?
Then please open an [issue](https://github.com/qmk/qmk_firmware/issues/new), and if you know how to fix it, open up a Pull Request on GitHub with the fix.
## But `git` and `GitHub` are intimidating!
Don't worry, we have some pretty nice [Guidelines](newbs_git_best_practices.md) on how to start using `git` and GitHub to make things easier to develop.
Additionally, you can find additional `git` and GitHub related links [here](newbs_learn_more_resources.md).
## I have a Keyboard that I want to add support for
Awesome! Open up a Pull Request for it. We'll review the code, and merge it!
### What if I want to do brand it with `QMK`?
That's amazing! We would love to assist you with that!
In fact, we have a [whole page](https://qmk.fm/powered/) dedicated to adding QMK Branding to your page and keyboard. This covers pretty much everything you need (knowledge and images) to officially support QMK.
If you have any questions about this, open an issue or head to [Discord](https://discord.gg/Uq7gcHh).
## What Differences Are There Between QMK and TMK?
TMK was originally designed and implemented by [Jun Wako](https://github.com/tmk). QMK started as [Jack Humbert](https://github.com/jackhumbert)'s fork of TMK for the Planck. After a while Jack's fork had diverged quite a bit from TMK, and in 2015 Jack decided to rename his fork to QMK.

View File

@ -14,6 +14,17 @@ There are 3 standard keyboard layouts in use around the world- ANSI, ISO, and JI
<!-- Source for this image: http://www.keyboard-layout-editor.com/#/gists/bf431647d1001cff5eff20ae55621e9a -->
![Keyboard Layout Image](https://i.imgur.com/5wsh5wM.png)
## How Can I Make Custom Names For Complex Keycodes?
Sometimes, for readability's sake, it's useful to define custom names for some keycodes. People often define custom names using `#define`. For example:
```c
#define FN_CAPS LT(_FL, KC_CAPSLOCK)
#define ALT_TAB LALT(KC_TAB)
```
This will allow you to use `FN_CAPS` and `ALT_TAB` in your keymap, keeping it more readable.
## Some Of My Keys Are Swapped Or Not Working
QMK has two features, Bootmagic and Command, which allow you to change the behavior of your keyboard on the fly. This includes, but is not limited to, swapping Ctrl/Caps, disabling Gui, swapping Alt/Gui, swapping Backspace/Backslash, disabling all keys, and other behavioral modifications.

File diff suppressed because it is too large Load Diff

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