Compare commits

..

251 Commits

Author SHA1 Message Date
Jack Humbert
f2d1f195a1 Update isp_flashing_guide.md 2018-06-22 00:52:19 -04:00
Jack Humbert
a1a554b49b Add files via upload 2018-06-22 00:38:01 -04:00
Jack Humbert
f0b918ac84 update flashing guide with pre-compiled binary 2018-06-21 23:40:13 -04:00
Pascal Greilich
e20f6f6378 Another alternative layout for TADA68 (#3215) 2018-06-21 20:14:02 -07:00
MechMerlin
ca450b0a48 change meme board MCU from 32u4 to 32u2 (#3212) 2018-06-21 14:46:56 -07:00
MakotoKurauchi
0f3a73025c Fix Helix i2c wrong bit rate (#3207) 2018-06-21 10:44:33 -07:00
noroadsleft
f5109c93dd DZ60 Configurator fix and refactor (#3205)
* Bugfix refactor

* Added 60_iso layout to rules.mk

* Added sample ISO-UK keymap

* Keymap refactor

* Fixes per @andys8
2018-06-21 10:41:51 -07:00
mtdjr
e8eaf5630c Updates to mtdjr userspace and keymaps (#3206)
* slight tweaks to xd75 keymap

* update to config.h to remove undef of solenoid active

* code organization for userspace

* updates to userspace and keymaps

* add rgb to userspace and lets split

* add conditional around rgb functions in userpsace

* move rgb layer changes into layer_state_set_user
2018-06-20 15:13:00 -07:00
Biacco42
f46b1db9f4 Add underglow compatible keymap for Ergo42 (#3204)
* Add underglow compatible keymap for Ergo42

* Move RGB underglow settings from global to specific keymap
2018-06-20 14:28:16 -07:00
Kenny Hung
e59bfd3359 Some lightshow code for XD75. (#3203)
* Add shift key to navigation layer to save pinky when double tapping shift key in IntelliJ

* Fancy effects on the lights
2018-06-19 13:04:13 -07:00
Dan
21a277bd8e DCompact Update 1 (#3202)
* Add Plover layer to DCompact from Planck default

* Fix up and update DCompact READMEs

* Add missing Steno features

* Switch flags to re-enable extrakeys

* Fix compilation bug in Chimera layout
2018-06-19 13:01:48 -07:00
Jon Allen
44660e77a4 allow programming the tomato keyboard through the reset keycode (#3201) 2018-06-18 08:47:00 -07:00
pastryfeline
bf362b58e8 ScrabblePad Updates (#3200)
* Update config.h

Matrix pinout updated to current revision.

* Add updated matrix, define RGB pin

Matrix updated to current pinout, pin for WS2812 defined.

* Update config.h

Matrix rearrangement due to change in Teensy2.0++ position

* Update readme.md

Added maintainer info, updated controller info
2018-06-17 16:51:11 -07:00
Jan Kolkmeier
e5cc089b02 ISO Keymap & Layout for dz60 (#3198)
* added ISO layout

* ISO dz60 layout: jkbone

* replace includes
2018-06-17 12:41:01 -07:00
Devin "Koduh" Bryce
9cfd818e7b info.json for mini1800 (#3183)
* info.json for mini1800

* fixed keys on info.json of mini1800

* mini 1800 LAYOUT text
2018-06-16 08:03:14 -07:00
noroadsleft
eccfb8d55e SixKeyBoard refactor (#3193)
* Refactor: create matrix macro

* Readme changes

* Configurator support
2018-06-16 08:02:11 -07:00
noroadsleft
2435a52655 felix info.json fix (#3195) 2018-06-16 07:56:09 -07:00
noroadsleft
4cf4009b2b Ergodash refactor (#3196)
* Deleted LAYOUTS = ortho_5x14 from rules.mk

* Refactor

* Configurator support
2018-06-16 07:55:02 -07:00
noroadsleft
4e9fb1d0d9 Contra refactor (#3191)
* Readme update

* Keyboard Refactor

* Keymap refactor

* Fixes per drashna

* Fixed curly brace
2018-06-15 21:57:15 -07:00
Alex Malott
0f04a0a745 Fixed no-op ifndef for ergodox ez (#3189) 2018-06-15 16:16:26 -07:00
noroadsleft
1dfb29e162 Canoe Refactor (#3190)
* Readme formatting

* Matrix refactor

* Configurator update
2018-06-15 15:56:41 -07:00
noroadsleft
2ee435e107 planck/light/info.json fix (#3186) 2018-06-14 21:32:25 -07:00
noroadsleft
ee266dd5c8 Tada68 refactor and readme update (#3178)
* Readme update

* Matrix/info.json refactor

* Keymap refactor

* Bugfix for mattdicarlo keymap
2018-06-14 19:34:32 -07:00
Yan-Fa Li
0a19a07a6e Add URL of PCB files to README.md (#3182) 2018-06-14 19:30:11 -07:00
MechMerlin
709b2c4c55 Rename from KEYMAP to LAYOUT (#3181)
* rename KEYMAP to LAYOUT

* rename the new layouts in all affected keymaps
2018-06-14 19:29:15 -07:00
MechMerlin
5164ec522d Fix bfake matrix bug (#3180)
* Add some explanation as to what the b.fake is and some formatting fixes

* Change K37 to K57

* Add a 60_ansi layout
2018-06-14 19:28:25 -07:00
noroadsleft
85d4c15a65 Clueboard 2x1800 Refactor (#3179)
* Readme cleanup

* Refactor: matrices and info.json

* Refactor: keymaps

* Moved xyverz config.h
2018-06-14 19:28:00 -07:00
MechMerlin
82cf0dd7e2 QMK Configurator Support for Melody96 (#3177) 2018-06-13 18:29:14 -07:00
noroadsleft
034d025579 Lightsaver info.json update (#3176) 2018-06-13 17:08:42 -07:00
noroadsleft
c219a451cf KBD66 info.json update (#3175) 2018-06-13 17:08:10 -07:00
Cory Shaw
bb4c0204ee Mbsurfer deltasplit75 keymap (#3174)
* Add mbsurfer keymap for DeltaSplit75 with ANSI split backspace

* Update mbsurfer DeltaSplit75 keymap to include right hand arrow cluster

* Update mbsurfer DS75 keymap, move volume down to be symmetrical

* Add readme to Mbsurfer DS75 keymap

* Fix Mbsurfer DS75 keymap image
2018-06-13 08:18:53 -07:00
noroadsleft
1912f36177 Configurator layout repair for Ergodone, Ergodox Infinity and ErgoTravel (#3173)
* Ergodone refactor

* Ergodox Infinity refactor

* Ergotravel refactor

* Ergotravel configurator layout update

* Fixing include on Ergodox Infinity narze keymap
2018-06-13 07:58:23 -07:00
noroadsleft
698ce733b7 Ergodox EZ refactor (#3171)
* Refactor matrices and keymaps

* Fixes for @ericgebhart keymap

* Deleted macro aliases

* ericgebhart/keymap.c to LAYOUT_ergodox_wrapper
2018-06-12 21:55:08 -07:00
noroadsleft
454bc3c264 Hadron: Readme, Refactor, and Configurator support (#3170)
* Refactor

* Configurator support

* Readme
2018-06-12 17:34:04 -07:00
Jon Allen
974d155505 fix issue with rgbinit unused variable (#3165)
* fix issue with rgbinit wiping out customization.

* removed unused variable
2018-06-12 17:32:56 -07:00
kaylanm
2bf18d0216 Fix melody96 default keymap graphic. (#3169) 2018-06-12 14:51:25 -07:00
Oscillope
2e8e8337b9 Fix jj40 capslock and minor keymap updates (#3168)
* Adjust TAPPING_TERM to make accessing the nav layer easier

* JJ40: Add RESET key to lower layer.

* Disable all lock LEDs on "oscillope" keymap.

I'm not 100% sure why yet, but attempting to turn on a lock LED on my v1
JJ40 PCB causes the PCB to become unresponsive. The easy fix is to just
disable all of the lock LEDs, since I don't have any LEDs on my keyboard
anyway.
Many thanks to u/wanleg on Reddit for suggesting this fix: https://www.reddit.com/r/olkb/comments/8en8f1/strange_caps_lock_behavior/e06kcaf/
2018-06-12 14:50:48 -07:00
noroadsleft
d0e635aa1b GON NerD: Refactor, Configurator support and Readme cleanup (#3167)
* Refactor

* Configurator support

* Readme cleanup
2018-06-12 14:49:41 -07:00
noroadsleft
64df10082d GH80-3000: Refactor and Configurator support (#3166)
* Refactor

* Configurator support

* Updated Rules: LAYOUTS
2018-06-12 14:47:50 -07:00
noroadsleft
b9fea284fc GH60: readme cleanup, Refactor, and Configurator update (#3164)
* Readme cleanup

* Refactor

* Configurator updates

* Removed an extra comma

* Add supported PCB revisions

* Refactor: remove matrix aliases
2018-06-12 14:44:24 -07:00
noroadsleft
e1a29c03cb Fourier: Refactor and readme updates (#3163)
* Readme changes: Added direct product link

* Keymap refactor
2018-06-12 14:42:44 -07:00
Twentylives
f535c94829 Modifications to Dactyl manuform keyboard (#3162)
* DactylManuform: Updating dvorak keymap

* Changed NAV and NUM layers to LOWER and RAISE
* Removed Mod+Key form RAISE and LOWER keys to be used as layer togglers exclusively
* Added missing keys to LOWER layers

* DactylManuform: fixed bugs in keyboard config file

* DactylManuform: Change default mouse config

The default mouse config parameters are slow and not very user friendly, this commit overrides the default
values.
wq
Signed-off-by: Sameeh Jubran <sameeh.j@gmail.com>

* Dactylmanuform: Update default keymap (qwerty) to match dvorak's

Recently devorak's layout went through some changes for changing layer toggles behavior,
adding missing keys, and fix minor bugs, this commit introduces these changes to the default keymap.

Signed-off-by: Sameeh Jubran <sameeh.j@gmail.com>

* Dactylmanuform: Add permissive hold support

Signed-off-by: Sameeh Jubran <sameeh.j@gmail.com>

* DactylManuform: Updating documentation

* Adding a picture of the keyboard
* Adding keymaps pictures

* Adding missing EEPROM files for EE_HANDS
flashing these before firmware will let the
user use either hand as master without reflashing

Signed-off-by: 20lives <lior@dotcore.co.il>
2018-06-12 14:42:11 -07:00
Breno Reis
06487daadd Added a multiple layout keymap for DZ60 (#3159)
* Added files for my new layout.

* Added layout template

* Qwerty layout done

* Qwerty layout done

* Test commit

* Qwerty, colemak e dvorak layouts done.

* Added templates for extra layers

* Added templates for extra layers

* Small adjustments on function layer

* Minor updates

* Minor updates

* daily update

* added my dz60 layout

* added my niu mini layout

* made the suggested corrections
2018-06-10 12:05:56 -07:00
noroadsleft
ca02b0dde0 Fortitude60: Refactor and Configurator support (#3161)
* Removed LAYOUT_ortho_5x12 alias

* Configurator support
2018-06-10 07:13:01 -07:00
noroadsleft
769854b8a2 Felix: Refactor, Rules, and Configurator Support (#3160)
* Refactor

* Configurator support

* Add LAYOUTS = ortho_5x4 to rules.mk
2018-06-10 07:12:09 -07:00
YouCanFly
08210b3aa4 Add Tetris keyboard to QMK (#3158)
* Add Tetris keyboard to QMK

* fix

* disable the music mode to save size
2018-06-09 18:38:45 -07:00
Yan-Fa Li
b0348063a6 Add TKC keymap (#3157)
- disable i2c to avoid hid spam
 - set capslock -> lctl_t(kc_esc)
 - OSX mode - reverse GUI and ALT
2018-06-09 18:18:56 -07:00
Jason
4c9641f068 Fixsingakeymaps (#3156)
* Tweak info.json

* fix default for info.json

* typo
2018-06-09 17:32:51 -07:00
Jason
aaeaf27e11 Adding Singa Repo w/ Config Support (#3155)
* Adding Singa Repo w/ Config Support

* Used Tilde instead of GRV

* PR Fixes

* oops, forgot to change the keymaps

* splitbs -> split_bs
2018-06-09 13:25:22 -07:00
noroadsleft
a474d6b49f Additional default layouts: Fullsize ANSI, Fullsize ISO, TKL ISO (#3154)
* Add Fullsize ANSI layout

* Add Fullsize ISO layout

* Add TKL ISO layout
2018-06-09 12:38:14 -07:00
noroadsleft
f6a0adfe36 Fix KC_P00 macro for ortho_5x4 layout (#3152) 2018-06-09 08:30:51 -07:00
Kosuke Adachi
710937e4ef Add corne keyboard (#3119)
* Fork from helix

* Move rev2 to rev1

* Remove unused settings

* Move split_util to outof rev

* Setup KEYMAP for crkbd

* Remove old image

* Move keymaps directory and glcdfont.c

* Remove AUDIO in keymap

* Show keylog

* Show keylogs

* Show time log

* Remove EISU/KANA

* Use KEYMAP_kc

* Remove iota_gfx_record_user wrapping

* Remove unused settings for layer

* Add keylogger.c

* Fix uppercase letters to lower

* Add timelogger.c

* Default RGBLED_NUM = 27

* Remove unused setting

* Add mode icon reader

* Add matrix_write_ln

* Add layer_state_reader

* Move to lib directory

* Rename functions

* Add host_led_state_reader

* Add logo_reader

* Cleaning of iota_gfx_task

* Fix bugs and add key defines

* Remove unnecessary comments

* Update crkbd readme

* Move libs to lib directories

* Rename KEYMAP to LAYOUT
2018-06-08 15:28:28 -07:00
Daniel Rose
300cf977c9 citadel: new keymap for pegasushoof (#3146)
[citadel] Markdown syntax: Added double spaces for line breaking

[citadel] Added line breaks for keyboard layout, fixed headings.
2018-06-08 13:06:14 -07:00
noroadsleft
e08139b79c Ergo42: Refactor and Configurator support (#3150)
* Refactor

* Configurator support

* Switch macro names around
2018-06-08 10:58:12 -07:00
noroadsleft
85efa35502 DZ60: Add LAYOUT_directional_625_space (#3148) 2018-06-08 10:35:51 -07:00
Eric Gebhart
984621835d Keyboard that works on Qwerty or Bepo OS keyboards. (#3149)
* New layout.

* new dvorak bepo layout.

* first commit of new ergodox_ez dvorak keyboard for qwerty and bepo.
2018-06-08 10:06:25 -07:00
Dan
03c9deb745 Add DCompact Layout for Chimera Ortho and Planck Keyboards (#3145)
* Clone default chimera-o layout

* Make changes for base layer

* Enable mouse suppport flag

* Implement majority of DAD layout

* Add mouse movement keys

* Fine tune mouse control and fix tap toggle

* Fix mouse button locations

* Set adpater LED colors for layers

* Increase responsiveness of key taps

* Update layout for thumb comfort

* Rename layout and add README

* Add comments to keymap

* Implement DCompact layout for Planck

* Copy over DCompact README to planck

* Fix up odds and ends for Planck
2018-06-07 11:30:27 -07:00
noroadsleft
7004e934d0 Eco: Refactor, Configurator support and Readme changes (#3143)
* Readme changes

* Refactor matrices; add QMK_KEYBOARD_H

* Configurator Support
2018-06-07 08:26:46 -07:00
noroadsleft
3ab69e2356 DK60: Refactor, Configurator and Readme updates (#3142)
* Readme cleanup

* Refactor KEYMAP to LAYOUT

* Configurator support

* Readme cleanup

Didn't spot that the modified lines were formatted as a list the first time.
2018-06-07 08:23:50 -07:00
Jorge Porras
815dab6275 Normacos update (#3141)
* Cheers let's split keymap

* fixed typo on norman layer of cheers keymap for let's split

* fixed right handed mappings for home row

* cheers keymap for let's split redefinition

* updated Cheers keymap for let's split

* cheers keymap for let's split updated with some terminal macros

* renamed cheers let's split keymap to a more appropriate normacos

* updated normacos keymap doc / removed non functional keys

* reset let's split rules to default values

* added more spotlight search macros

* normalized keymap comments

* Moved numpad on lower layer

* updated normacos layout and fixed some readme typos

* removed leftover merge diff

* added waits to macros that make use of SEND_STRING

* fixed wrong waits on macros that use SEND_STRING

* normalized macro comments after adding waits
2018-06-07 08:20:41 -07:00
noroadsleft
e3c10a73ac Gherkin: Refactor and Configurator support [resolved] (#3140)
* Refactor KEYMAP to LAYOUT_ortho_3x10

* Configurator support

* Renamed @Talljoe's keymap folder

* Renamed matrix_init_user to matrix_init_keymap
2018-06-07 08:15:14 -07:00
noroadsleft
66a35aded1 Add premade layouts for Numpad 4x4, Numpad 5x4, Ortho 5x4, and Planck MIT (#3139)
Fix EOF on Planck MIT layout.json

Cleanup ortho_5x4 layout.json
2018-06-07 08:14:39 -07:00
yiancar
b5d6c049e6 Bootloader make issue (#2975)
* Added Modular keyboards L,R and NUM

Created code modules for the 3 modules of the modular keyboard.
Original idea by MechboardsUK. Uses i2c implementation similar to lets
split

* Remove modular from master

This is to fix incorrect branching

* fixed bootloader makefile

- Echo -e does not behave coorectly on mac
- Replaced with equivilant printf statements

* quick typo fix
2018-06-06 18:24:26 -04:00
noroadsleft
afa0a8d6f7 Dilly: Refactor and Configurator support (#3134)
* Refactor

* Configurator support

* Add LAYOUT_ortho_3x10 to default QMK layouts

* Refactor Dilly to use LAYOUT_ortho_3x10
2018-06-06 11:12:42 -07:00
Joshua Lawrence
d86410103f Added jwlawrence keymap for zen keyboard (#3137)
* Created jwlawrence keymap
2018-06-06 09:54:26 -07:00
Oryhara
87abed6865 Sweeping Visualizer for Ergodox Inifinity (#3136)
* started work on halfkeyboard

* update to keymap

* halfkey layouts complete for dvorak and qwerty

* added plover layout to halfkeyboard mapping

* fixed error in dvorak layout right hand

* fixed error in dvorak layout right hand, comments updated

* thing

* added minus and equals to normal layouts

* added minus and equals to normal layouts

* adde visualizer matching halfkeyboard mappings

* adde visualizer matching halfkeyboard mappings

* updated keymaps for mirror handedness functionality for all layers.  Also added visualizer code for distinct color for each layer, and LCD text displaying the current layer.

* had a KC_TILD where should have had KC_GRAV

* its spelled KC_GRAVE

* mouskeys and some visualizer work.

* added LED backlight visuals

* trying to get visualizer working

* Move lufa descriptor to protocol/usb_descriptor

* Try to compile usb_descriptor on ChibiOS

* Add lufa_utils for ChibiOS

Lufa USB descriptors for ChibiOS

* More lufa_util compatibility fixes

* First compiling version of shared USB descriptor

* Send the usb descriptors

* Fix the CONSOLE output on ChibiOS

* Add errors for unsupported interfaces

* Enable support for vitual serial port USB descriptors

* Implement virtual serial port for ChibiOS

* Cleanup the lufa_utils

Use the default lufa header files

* Add raw hid support for ChibiOS

This is completely untested

* Enable midi compilation on ChibiOS

* Move midi functionality out of lufa.c

* Don't register sysex callback when not needed

* ChibiOS compilation fixes

* Update ChibiOS submodule

* Fix the Midi USB descriptor

It didn't work properly when both Midi and Virtual serial port was enabled.

* Add MIDI support for ChibiOS

* Fix USB descriptor strings on ChibiOS

* Use serial usb driver for raw hid

* Generalize the ChibiOS stream like drivers

This makes the initialization much more simple and eliminates a lot of
the code duplication.

* Convert console output to chibios stream driver

* Fixes for ChibiOS update

* Update the ChibiOS contrib submodule

To include the usb data toggle synchronization fixes

* Fix duplicate reset enumeration on ChibiOS

* Add missing include

* Add number of endpoints check for ChibiOS

* Enable serial USB driver on all keyboards

* Add missing includes when API is enabled withot midi

* Add another missing inlcude

* consolidated my custom animations into visualizer.c in my keymap directory

* LED backlight keys animation KITT scanner

* moved my custom rules.mk to my keymap folder

* undoing changes i shouldn't have done

* more fixes

* updated comments on the visulizer code

* steno keys added to plover layout

* updated halfkeyboard rules to allow steno mode

* adding my stuff back after hard reset

* added a plover layout back in for androud steno app

* fixed layer toggle typo

* merged again

* visualizer decided to have a conflict again.  fixed.

* keymap change to add mouse keys and put layer switching on shortcuts layer

* made the ergodox LEDs scan left to right and back again

* visualizer work

* KITTSCANNER finally

* fixed right hand shortcuts layer and removed handedness switching for base layer so jump in gaming works corrrectly

* added another sweep that goes full on over both boards then full off in both directions

* added function key layer and cleaned up some layer switching
2018-06-06 09:52:56 -07:00
noroadsleft
b5ab6a5d01 Diverge3: Readme Clean-up, Refactor and Configurator support (#3135)
* Readme cleanup

* Refactor

* Configurator support
2018-06-06 09:51:24 -07:00
noroadsleft
99e849ac89 Dichotemy: Refactor and Configurator update (#3133)
* Refactor KEYMAP to LAYOUT

* Configurator support
2018-06-06 09:47:56 -07:00
noroadsleft
97d5b6aba0 Refactor for DeltaSplit75 (#3132) 2018-06-06 09:47:25 -07:00
Jason
1986f560e1 remove trailing comma to fix parsing issue (#3130)
* remove trailing comma to fix parsing issue

* ctrl shift i is gud
2018-06-06 09:46:06 -07:00
omkbd
e921b9a77e Add ErgoDash keyboard (#3128)
* create ergodash

* Revert "create ergodash"

This reverts commit b261c808c30fee95cb656629f7e9b44b01e79363.

* add ergodash

* keymap→layout

* use set_single_persistent_default_layer
2018-06-06 09:41:51 -07:00
Jason
96546c79c0 Adding SX60 work by amnobis and configurator settings (#3122)
* Add SX60

* Add config maps and layouts as well as readmes.

* cleanup and fixes

* correct readme

* add missing closing commenty tag

* Changing includes to QMK_KEYBOARD_H

* Update settings.json

Remove config change that was added automatically by vscode.

* Update readme.md

fix readme formatting
2018-06-05 12:43:20 -07:00
wanleg
1ae011d919 Gherkin wanleg (#3127)
* my planck layout

personal planck layout

* my XD75 layout

personal XD75 layout

* Revert "my XD75 layout"

This reverts commit e9c3b57df78c1cb658bef56fb735839758f4f949.

* my XD75

personal XD75 layout

* wanleg layout

wanleg layout

* typo

fixed typo

* setup for NovelKeysXKailh Big Series switch

setup for Big Swith with ProMicro

* mousekeys addition

adding mousekeys

* mousekey additions

* wanleg's jj40 config

* mousekey changes

* CAD double-tap improvement

* software reset for Gherkin

* promicro software bootloading

* middle click

* Update readme.md

* add middle click

* readme changes

* Update readme.md

* bootloaderFix

* readme edit

* bootloader fix

* bootloaderEnable

* bigswitchTesting

* cleanup prior to Gherkin Pull

* fixed bootloader RESET and added mousekey

fixed RESET issue on ProMicro with default code, added mousekeys

* fixed bootloader RESET and added mousekeys

fixed RESET issue on ProMicro with default code, added mousekeys.
edited readme to reflect changes.

* Update config.h

* Update keymap.c
2018-06-05 12:37:27 -07:00
Pierre Constantineau
c5b9533312 adding all ErgoTravel Files (#3129)
* adding all ErgoTravel Files

* fixing KC_KEYMAP to LAYOUT_kc on Viet's keymap.c
2018-06-05 09:15:19 -07:00
noroadsleft
6b1350d764 [WIP] [Help Needed] Daisy 40%: Refactor and Configurator update (#3124)
* Refactor KEYMAP to LAYOUT

* Configurator update

* info.json update

* Refactor daisy.h: White space update
2018-06-04 14:50:30 -07:00
noroadsleft
68d5e364fc CU75: Refactor and Configurator updates (#3123)
* Refactor

* Configurator: LAYOUT_iso fix

* Readme formatting cleanup
2018-06-04 12:15:14 -07:00
crilith
c69ed8a14d Keymap with dynamic macro (#3121)
* Add files via upload

Added dynamic macro support

* Delete keymap.c
2018-06-04 08:30:31 -07:00
MakotoKurauchi
7498b184b7 Support ios to default keymap (#3118)
* add some comment about Helix customize and auto-setup RGBLIGHT_LIMIT_VAL

* add define USB_MAX_POWER_CONSUMPTION

* Helix keyboard OLED, RGBLIGHT enable/disable control integrate into rules.mk

rules.mk: add 4 Variables for compile control.

   # Helix keyboard customize
   # you can edit follows 4 Variables
   #  jp: 以下の4つの変数を必要に応じて編集します。
   OLED_ENABLE = no            # OLED_ENABLE
   LED_BACK_ENABLE = no        # LED backlight (Enable WS2812 RGB underlight.)
   LED_UNDERGLOW_ENABLE = no   # LED underglow (Enable WS2812 RGB underlight.)
   LED_ANIMATIONS = yes        # LED animations

config.h: auto set RGBLED_NUM by HELIX_ROWS and rules.mk's define

* HELIX_ROWS define move from config.h to rules.mk

* add readme.md

* rename readme.md to readme_jp.md

* add readme.md and modify readme_jp.md

* change helix/ssd1306.c for select glcdfont.c position

* add variable LOCAL_GLCDFONT into each keymaps rules.mk

* Add iPhone/iPad LED support to Helix default keymap

* add Freggy keymap

* adjust the delay of serial.c

* change readme

* renumber _ADJUST for shrink program size
2018-06-04 08:14:35 -07:00
fordmustang5l
e354e36ece Added ASCII legend to melody96 to help visualize the layouts (#3117) 2018-06-04 08:12:13 -07:00
KeLorean
b05c153633 change to ca66 kelorean layout (#3116) 2018-06-04 08:11:17 -07:00
Takeshi ISHII
5229734647 Add rgblight mode 35 (R,G,B test mode) (#3114)
* add rgblight mode 35 (RGB cyclic mode) into quantum/rgblight.c

* Update docs, add rgblight mode 35(RGB cyclic)

* rename RGBCYCLIC to RGBTEST
2018-06-04 08:10:39 -07:00
Drashna Jaelre
cb91320d6d Add Suspend functions (#3112)
* Add suspend functions

* Disable RGB code if it's disabled

* Add suspend code to ChibiOS for future compatibility

* Add keyboard_init functions

* Change where references so it will compile

* Wrong command chained in wake up kb function

* Fix non-feature file changes

* Add documentation

* Re-add matrix init docs

* add rgblight code to example

* Remove keyboard init stuff for separate PR
2018-06-03 17:57:35 -04:00
noroadsleft
692a77c2dd Refactor Chocopad to support LAYOUT_ortho_4x4 macro (#3106)
* Refactor for Chocopad

* Configurator update

* Chocopad refactor for LAYOUT_ortho_4x4

* info.json update
2018-06-02 09:15:52 -07:00
Andrew Dunai
82500842f6 Add ability to write additional code in matrix scann loop on slave. (#3072) 2018-06-02 09:14:59 -07:00
kaylanm
a055a45b13 Melody96 QMK Support (#3108)
* Initial melody96 keyboard definition.

* Fixes for Melody96 keyboard definition.
2018-06-02 09:14:06 -07:00
Přemek Vyhnal
5ce0d64027 planck/premek layout - thumb shift, mouse middleclick (#3111)
* Update readme.md

updated links, hope those are the correct ones

* planck premek - left thumb shift

* middleclick key

* mod tap thumb-shift, space

* update layout description
2018-06-02 09:10:34 -07:00
Takeshi ISHII
8707bdd509 Fix helix:led_test build break (#3110)
* copy new rgblight.[ch] from quantum/ into keyboards/helix/rev2/keymaps/led_test/ and add mode 35 RGB cyclic mode

* force RGB light mode 25
2018-06-02 09:07:32 -07:00
KeLorean
d554d96334 Fixed mistake to kelorean keymap for ca66 (#3109) 2018-06-02 09:00:40 -07:00
Dan Hertz
d8478351d7 Dhertz' keymaps (#3094)
* Port my keymap to QMK

* Add Percent Canoe keyboard

* Fix row of nonus backslash

* Update info.json to be correct for canoe

* fix alignment

* Use qmk shortcuts rather than tmk functions

* Move over first macro

* Move rest of macros over

* clean up unused functions

* Move files to userspace for HHKB

* Add keymaps for hhkb

* Change LAYOUT_ISO to LAYOUT_iso

* Remove bootloader key in info.json

* Remove tilde remap from Karabiner

* Add country_iso_alpha2_code to macros

* Add my keymap for canoe

* Add layer colour indicator

* Fix bad rebase

* Fix naming of keymap from rebase

* Add GRV to function layer

* Fix keymap to use new LAYOUT_JP

* Update keymaps to use process_record_*

rather than action functions

* Update hhkb imports to be just what is needed

* Update whitefox to use LAYOUT macro instead of KEYMAP

* Remove redundant imports from user definition

* Move TAPPING_TERM to config.h

* Use layer change events to change RGB LED colour

* temp

* Fix layer switching to iPad on HHKB

* Fix Canoe pictures
2018-06-02 08:50:01 -07:00
Pekaso
2196dc9f86 Add support for staggerd column layout KB "Fortitude60" (#3090)
* modifying fortitude for working

* add accurate keymap

* backlight fix

* Fix slave LED Backlight

* Add readme.md

* modified readme.md

* Fixed make error

* Commit including suggestions

* Add dvorak and colemak layout and some fix
2018-06-02 08:48:34 -07:00
Dan Hertz
9fb1e5d171 Remove bootloader key as it is no longer used (#3093) 2018-06-01 12:26:48 -07:00
noroadsleft
3364334bfd Refactor and Configurator update for Chocopad (#3099)
* Refactor for Chocopad

* Configurator update
2018-06-01 12:08:41 -07:00
MechMerlin
b5da3b53b3 enable RGB underglow in rules (#3101) 2018-06-01 12:08:12 -07:00
Harshit Goel
b36a1ef61b YMD96 complete QMK port (#3105)
* readded code for YMD96 full working

* added jj50 layout back
2018-06-01 12:07:49 -07:00
MechMerlin
74d86832c3 Put CA66 and PK60 under a playkbtw directory (#3102)
* Add playkbtw directory to put ca66 and pk60 in

* delete old references

* edit readmes for links
2018-06-01 08:58:30 -07:00
noroadsleft
0aaff74b39 Refactor and Configurator update for Christmas Tree (#3100)
* Refactor

* Configurator update
2018-06-01 08:56:39 -07:00
KeLorean
7624a4e57e keylorean ca66 keymap for hhkb layout with split spacebar (#3098) 2018-05-31 22:22:44 -07:00
Drashna Jaelre
3d1349b280 Big overhaul to Drashna keymaps and userspace (#3097)
* Optimize secrets code

* Orthodox tweaks

* rules.mk features

* Minor cleanup

* Revert mod bits

* Force Hold breaks One Shot Tap Toggle

* Cleanup

* Moke keymaps more consistent

* minor ergodox tweak

* More OSM for the Orthodox

* Cleanup of userspace

* Toggle Secrets

* Add hidden process record for super secret macros

* Make sure secret macros always compiles

* finish up making them super secret

* Add ColinTA's rgb twinkle as WIP

* Optimize RGB Twinkling for typing

Also, tweak RGB indicators.

AND WTF, I HAVE NO IDEA WHY THE INDICATORS ONLY WORK AS IS.  The logical method for getting them working doesn't ... and it's beyond bizarre

* Make console logging more configurable

* Indicator travisty

* Clean up userspace rgb code

* Optimize RGB Twinking to work on default layer only, and to base it's color on the curent hue

* Eff it... rgblight_sethsv_at runs at every matrix scan

* RGB Twinkle cleanup

* Update Iris code for new board

* Move RGB Indicator and RGB Twinkle into userspace

* Move RGB Indicator code to rgb_stuff.c

* Major cleanup of RGB Code in userspace

* Additional cleanup of RGB code in userspace

* Use noeeprom functions to save my boards!

* Enable RGB Sleep on all boards now

* Add old iris board

* tapping tweak

* Use byte 19 for eeprom to prepare for possible merge of eeconfig function pr

* Add code to fix default layer after eeprom reset
2018-06-01 01:11:06 -04:00
Batuhan Baserdem
8eaf23ae81 User space fixed (#3095)
* Put in my keymaps

* Fixed all but weird lets split issue

* Organized and tried to trobleshoot lets split

* Organized and tried to trobleshoot lets split

* Added bbaserdem keymaps

* Added bbaserdem keymaps

* Fixed stuff

* FIxed a filename error
2018-05-31 18:55:45 -07:00
palleiko
abce980b8b Palleiko's Keymap (#3096)
* cloned default layout to palleiko

* Added NAV layer, removed steno

* Added WM layout & Readme

* forgot comma

* Specify bootloader

* Fixed Mod Tap / Layer Tap bugs and updated readme

* Removed Layer Tap functionality

* KC_NO

* Updated Readme
2018-05-31 18:52:53 -07:00
Kenneth Aloysius
d27855665a Updated matrix.c for some PS2AVRGB boards and templates for new_project script (#2992)
* Add M6-A keymap

* Update XD60 keymap

* Update XD60 keymap readme

* Update JJ40 and Let's Split keymaps

* Add readme for M6-A

* Fix typo, update JJ40 README

* Update jj40 readme

* Cleanup jj40 keymap

* Revert Let's Split QWERTY layer to default before #2010

* Update numpad layers

* Fix: Let's Split keymap getting stuck mods due to having keycodes assigned on the Raise layer

* Keep ASCII art consistent with keymap

* Staryu: initial port

* Add personal keymap

* Added and updated READMEs

* Fix: default keymap for staryu

* Rudimentary backlight support.

* Enabled mousekeys for default keymap

* use QMK_KEYBOARD_H and LAYOUT

* Update readme.md for NIU mini: flash using avrdude

* Fix missing linebreaks for Staryu README

* Update readme.md

* Update PS2AVRGB boards with new matrix.c

* Update canoe matrix.c; untested

* Fix canoe.c for building (needs matrix_scan_user and matrix_init_user)

* Add personal Iris keymap

* Update keymap

* Update keymap

* Update keymap, disable backlighting and underglow

* Move PrintScreen button

* Add README
2018-05-31 08:32:05 -07:00
mtdjr
ee9a7aba39 add not-so-minidox handwire keyboard (#3061)
* add not-so-minidox handwire keyboard

* corrected keymap

* multiple adjustments to not_so_minidox keyboard

* remove I2C master left define

* update default layer set function

* move solenoid code into userspace

* minor adjustments to config.h

* update keymaps to utilize userspace

* move features and config to userspace, correct build issue

* correct solenoid pin

* adjust defaults for solenoid pin and enable

* default solenoid to on for not_so_minidox

* disable RGBLIGHT_SLEEP for xd75

* tweaking solenoid enable/disable in userspace and keymaps
2018-05-31 08:30:05 -07:00
Erez Zukerman
21ad968ac1 Customizable LED test duration (#3086)
* Customizable LED test duration

Code by Jack. :)

* only need an unit8_t
2018-05-30 23:23:12 -04:00
MechMerlin
b2398ecbe7 CA66 Backlighting FIx (#3089)
* Enable backlighting using pin F0 and changing it in the rules.mk file as well

* Change KB_H to CA66_H
2018-05-30 19:44:52 -07:00
Jarrett Drouillard
258954dc3e Add kuatsure map to preonic board (#3087)
* preonic-keymap: kuatsure keymap

* preonic-kuatsure: move arrows and braces and stuffs

* preonic-kuatsure: give more time for leader

* preonic-kuatsure: move _ to lower o

* preonic-kuatsure: tap dance space to enter

* preonic-kuatsure: move vol buttons around

conflicted with kaleidoscope file navigation

* preonic-kuatsure: lower+spc = esc

* preonic-kuatsure: add lock key & remove led stuff

* preonic-kuatsure: little bit of tmux leadering

* preonic-kuatsure: remove colemak and dvorak

* preonic-kuatsure: remove lock key and tap dance

* preonic-kuatsure: lower space -> enter -- raise space -> esc

* preonice-kuatsure: move tmux stuff to homerow keys

* preonic-kuatsure: set tmux prefix to a function

* preonic-kuatsure: hello game layers

* preonic-kuatsure: instead of zelda, ffvii for game mode :)

* preonic-kuatsure: mild changes after playing games to game modes

* preonice-kuatsure: omg comma dangles and spaces in switch!

* preonic-kuatsure: kinda make lower a shift on special characters

* preonic-kuatsure: I don't use these

* preonic-kuatsure: move vol- to the begining of media row

* preonic-kuatsure: more tmux leader stuff ( pane 3 & last pane )

* preonic-kuatsure: abstract out tmux pane zooming

* preonic-kuatsure: abstract pane switch

* preonic-kuatsure: game_mod is carries over lower positions

starting to wonder if I need game_mod ... lol

* preonic-kuatsure: switch lwr/rse esc / ent

* preonic-kuatsure: add leaders for window switching

* preonic-kuatsure: major pruning of adjust layer

* preonic-kuatsure: major rework on raise layer

* preonic-kuatsure: game mods f layer is raise now

* user-kuatsure: hello

* various-kuatsure: use layout format + globalize querty / number keys

* preonic-kuatsure: don't use tap dance anymore

* various-kuatsure: code formatting

* various-kuatsure: add function layer vars

* preonic-kuatsure: moar formatting

* preonic-kuatsure: add home / end keys
2018-05-30 14:49:20 -07:00
Barry Huang
835431330c info.json fix (#3075)
* Capslock indicator add

* edit

* name correction

* led_set_user(usb_led); delete

* config edit for caps indicator

* keymap.c fix

* led.h include

* pk60.c fix for capslock indicator

* info.json fix

for LAYOUT_all showing correctly

* LAYOUT_all fix
2018-05-30 08:13:16 -07:00
Daniel Gordon
a75bd221f2 Updates to gordon keymaps (#3082)
Added rules.mk for the infinity

    * Moved tap dance enums to gordon.h
    * Moved tap dance aliases to gordon.h

    Moved TD to user space

    * Added config file with preventing mods sticking
    * Added a few keys to keymap
2018-05-30 08:10:22 -07:00
Louis Orleans
805b42275b board(bigseries): dudeofawesome's layout (#3085)
*  add big series keymap

* 👽 update for new keymap format

* 🔥 remove unnecesarry code

*  add RGB mode reverse

* 📝 add README

* 📝 change features styling
2018-05-30 08:06:33 -07:00
noroadsleft
7f5361aedb Refactor and Configurator updates for B.mini (#3081)
* Refactor for B.mini

* Configurator update for B.mini

* Updated readme formatting
2018-05-29 15:59:34 -07:00
Campbell Barton
434a450be1 qwerty_code_friendly: add numbers keys (#3078) 2018-05-29 15:58:51 -07:00
Yan-Fa Li
4bd64227fd Switch to noeeprom variants of rgb fns (#3077)
- avoid writing to the eeprom when possible
2018-05-29 15:58:10 -07:00
Brian Pruitt-Goddard
8a9c19ee93 Add bpruitt-goddard Ergodox Layout (#3080)
* Feat: Create personal ergodox keymap

* FEAT: Update bpruitt-goddard keymap with custom layout

* Fix: Remove unused pieces from bpruitt-goddard keyboard

* Feat: Add QWERTY layer to bpruitt-goddard ergodox keymap

* Refactor: Remove unused layers from bpruitt-goddard keymap

* Fix: Update base layer for bpruitt-goddard keymap

* Fix: Remove un-reachable key combo from FN layer

* Fix: Rename FN layer to numpad layer

* Feat: Create one-shot modifier layer for mac os use

* Doc: Update readme to reflect my keymap

* Feat: Add mac desktop space switching

* feat: Update keymap layers to use ergodox pretty format
2018-05-29 15:55:47 -07:00
Drashna Jaelre
751719e6cb Add and fix _noeeprom functions to many of the RGB Underglow functions (#3070)
* And and fix _noeeprom functions to many of the RGB Underglow functions

* Many functions are unnecessarily calling the eeprom write code. The toggle/enable is command is especially guilty of this, as it writes to EEPROM 3 times.  But rgb mode writes twice, every time it's called. And init resets the rgb eeprom range and then writes back to it twice!
* Fixed the rgblight_sethsv_noeeprom to work as expected, by moving a lot of the code to a helper function.
* Added a noeeprom function for mode, enable, disable, and toggle functions. (didn't bother for increase/decrease stuff, and didn't add new keycodes)
* Add to predefined colors list
* Add new functions to manual/docs

* Update RGB Sleep feature to use _noeeprom

Because that's exactly what it should be doing, actually!
2018-05-29 11:05:22 -04:00
Danny
034a25aedf Keymap fixes (#3074)
* Fix keymap to use correct macro

* Make sure RGBLED_NUM is defined to a value
2018-05-29 08:01:24 -07:00
noroadsleft
eb8388b31e Refactor and Configurator updates for Woodkeys/NovelKeys Big Series (#3073)
* Refactor for Woodkeys Big Series

* Configurator update for Woodkeys Big Series
2018-05-29 03:53:03 -07:00
Hannes Egler
edb149fb5a Kbd8x backlight support (#3069)
* added backlighting support

* complying to conventions
2018-05-29 01:52:02 -07:00
noroadsleft
0f99562992 Refactor and Configurator updates for Bantam44 (#3071)
* Configurator update for Bantam-44

* Refactor for Bantam44
2018-05-29 01:13:53 -07:00
noroadsleft
eed6ef0999 Configurator updates for Atreus/Atreus62 (#3065) 2018-05-28 20:29:14 -07:00
arlenk
a87b36d791 fix a few simple typos (#3068)
* Update feature_tap_dance.md

* minor typos
2018-05-28 20:23:33 -07:00
Dan Hertz
6009ca2d4a Update Canoe ps2avr board (#3066)
* Add Percent Canoe keyboard

* Fix row of nonus backslash

* Update info.json to be correct for canoe

* Change LAYOUT_ISO to LAYOUT_iso

* Remove bootloader key in info.json
2018-05-28 20:22:43 -07:00
Hannes Egler
dfa7a708fe Indicator led support for KBD8X (#3064)
* Support for indicator LEDs

* fixes for backlighting support

* more fixes
2018-05-28 20:18:39 -07:00
Danny
2b677ddac9 Fix nyquist (and other splits using D2 in debouncing) (#3067)
* Update default Nyquist revision

* LED slave fix

* Sync changes from lets_split

* Add needed check for debouncing

* Remove line that was setting PD2 pin and interfering with use of that pin

* Add backlight key to keymap
2018-05-28 15:02:41 -07:00
jamesofarrell
8ddebce2d7 Add Canoe support (#3063)
* Adding Canoe support

* fix readme

* Remove usless comment

* fixing issues
2018-05-27 20:48:59 -07:00
noroadsleft
a677d8a00d Refactor and Configurator updates for AMJ Pad (#3060)
* Refactor for AMJ Pad

* Configurator update for AMJ Pad

* Add hardware agnostic layouts numpad_6x4 and ortho_6x4

* Add agnostic layouts to rules.mk

* Refactor AMJ Pad to use new hardware agnostic layouts
2018-05-27 19:19:09 -07:00
Leo Wzukw
3b1ddd12a5 Refresh & improve leader documentation page (#2990)
* Refresh & improve leader documentation page

- register_code/unregister_code are not the recommanded way to do macro.
- Provide some details I wish I had found when first used the leader
  functionality.

* Add old way to use macro.
2018-05-26 11:29:02 -07:00
noroadsleft
716877b40a Refactor and Configurator updates for AMJ60 (#3055)
* Refactor for AMJ60

* Configurator update for AMJ60
2018-05-26 11:22:56 -07:00
Guido Bartolucci
28525ab461 Adding guidoism's planck layouts (#3059)
* Initial commit of guidoism

* created movement layer

* movement layer works!

* removed unnecessary layers

* moved enter key up and recreated caps lock

* Added num pad
2018-05-26 11:07:35 -07:00
mtdjr
504ce1b4bc Add mtdjr keymaps for Iris, Let's Split, TADA68, XD75, and handwired dox (#3058)
* Add keymaps for Iris, Let's Split, TADA68, XD75, and handwired not_so_minidox

* remove handwired not_so_minidox
2018-05-26 11:06:08 -07:00
Campbell Barton
357d9f4772 qwerty_code_friendly: fix 76 key config (#3057) 2018-05-26 11:05:09 -07:00
Salt-Peanuts
6e867a7ecc Updated keymaps (#3056)
* Updated info and fixed minor errors

* Updated folder name; overdue updates to keymap and readme files

Updated folder name; overdue updates to keymap and readme files

* Updated tri-layer feature

* Revert "Updated tri-layer feature"

This reverts commit 59b8b85761740e24f671e10fceea869f06a33ade.

* Updated tri-layer on keymap

* Fixed typos

* Updated keymaps
2018-05-26 08:54:38 -07:00
Leo Wzukw
2d38f45009 Fix dead link to USB keycodes doc (#3050)
* Fix dead link to USB keycodes doc

Link was dead and the fresher version I could find on usb.org is still older than this one.

Thus, WaybackMachine seems the best option.

* Fix dead link to USB keycodes doc, with 2 options

Give the WaybackMachine link (fresher and for reference of the content of the original link) and the usb.org one (older)
2018-05-26 08:51:51 -07:00
yiancar
a659666e8a Fix HS60 config for ANSI keymap (#3054)
- This is mostly for safety
2018-05-25 20:07:06 -07:00
noroadsleft
9200934de7 Attempting Debug on Configurator (re: #3052) (#3053) 2018-05-25 12:47:16 -07:00
Drashna Jaelre
24b8d84b6c Fix Split keyboards so they compile on Configurator (#3051)
* Fix serial split for BFO9000

* Fix serial split for DeltaSplit75

* Fix serial split for Helix

* Fix serial split for MiniDox

* Fix serial split for Viterbi

* Revert "Fix serial split for Helix" since it's super complex

This reverts commit 72538df105ba6d5fe6915773a20c509f2a47785d.

We'll let the helix owner fix this issue, or dive into the code later
2018-05-25 11:49:43 -07:00
Drashna Jaelre
82466aafd1 Fix Orthodox compile issue in online configurator (#3044) 2018-05-25 10:51:06 -07:00
noroadsleft
220b5119fa Refactor for AMJ40 (#3047) 2018-05-25 08:40:36 -07:00
MechMerlin
910c50bca1 Add some generic/sparse readmes to get rid of errors (#3048) 2018-05-25 08:39:39 -07:00
MechMerlin
9b08fb7328 Fix info.json for kbd66 (#3045)
* Change LAYOUT to LAYOUT_all
Fix info.json file

* edit the CORRECT info.json this time

* revert my errors
2018-05-25 08:39:08 -07:00
MechMerlin
dc4298408b fix LAYOUT_all in info.json (#3046) 2018-05-24 23:34:19 -07:00
noroadsleft
2c01ec0d8c Refactor and Configurator updates for ALU84 (#3043)
* Readme update per template on docs.qmk.fm

* Refactor for LAYOUT macro

* Add info.json
2018-05-24 21:11:29 -07:00
Danny
0dc21d70f0 Add info.json for Fourier & Laplace (#3038)
* Add info.json for Fourier

* Add info.json for Laplace
2018-05-24 15:40:30 -07:00
yiancar
6073fa774e Rename ANSI keymap of HS60 (#3041) 2018-05-24 15:32:01 -07:00
Danny
dff86c6e09 Fix keymap to use renamed macro (#3039) 2018-05-24 15:31:29 -07:00
Sascha Grunert
5049938ab7 Update my keymap (#3037)
* Update keymap.c
2018-05-24 15:30:32 -07:00
Barry Huang
1b81c4dd2b pk60.c fix for capslock indicator (#3032)
* Capslock indicator add

* edit

* name correction

* led_set_user(usb_led); delete

* config edit for caps indicator

* keymap.c fix

* led.h include

* pk60.c fix for capslock indicator
2018-05-24 15:28:54 -07:00
Yan-Fa Li
9ae6f4f927 Wait for QMK to initialize before configuring RGB (#3030)
Wait for 1 second before turning on RGB to get debug messages on
console.

 - configure HSV color, on a brand new pro micro the default values are
   0, 0, 0
2018-05-24 15:27:43 -07:00
noroadsleft
3a4a28a38b Refactor for Alps64 (#3029)
* Refactor for Alps64

* Reverts deletion of LAYOUT_kc macro; renames LAYOUT_standard_60 to LAYOUT_60_ansi

* Add LAYOUTS = 60_ansi to rules.mk

* Rename LAYOUT_standard_60 to LAYOUT_60_ansi in info.json
2018-05-24 15:26:38 -07:00
Alexander Dang-Tran
73ddb764cc Fix readme and contributing hyperlinks 2018-05-24 00:00:20 -04:00
Barry Huang
2ec0e01430 config edit for caps indicator (#3016)
* Capslock indicator add

* edit

* name correction

* led_set_user(usb_led); delete

* config edit for caps indicator

* keymap.c fix

* led.h include
2018-05-23 08:27:52 -07:00
Felipe Coury
575b2a66df Adds Zlant keyboard support (#3028)
* Added Zlant support

* Uses LAYOUT and identifies individual layers

* Removed deprecated =? usage on rules.mk

* Adds readme for Zlant keyboard and its default layout

* Fixed LAYOUT constant

* Minor zlant readme formatting fix
2018-05-22 20:53:11 -07:00
noroadsleft
0026da1414 Fix to KC60 LAYOUT_60_ansi matrix (#3026) 2018-05-22 20:14:50 -07:00
noroadsleft
c1dd36a19d Refactor and Configurator update for ACR60 (#3025) 2018-05-22 17:06:58 -07:00
epaew
760b11b5e8 Add edvorakjp layout for the Iris keyboard (#3020)
* add edvorakjp libraries

* add edvorakjp iris keymap

* change the custom eeconfig's address to prevent future address conflicts

* deleted the verbose line of rule.mk
2018-05-22 16:59:43 -07:00
noroadsleft
c465cf2fd3 Refactor and Configurator updates for 9key (#3024) 2018-05-22 15:58:56 -07:00
Yan-Fa Li
c29d8ffd5a Adds basic support for u/flehrad's bigswitch pcb (#3015)
* Adds basic support for u/flehrad's bigswitch pcb

 - also adds support for OSX Eject/Power
   The function of this key depends on the version of OSX and if you
   have physical media. For a macbook pro 2017 holding this key down
   brings up the shutdown dialog. If you wrap it in LCTL and LSFT the
   screenlock turns on immediately.

* Switch to Layout Macro

 - add a code for OSX Sleep

* Add a README

* Turn on RGB by default

* Add info.json

* Address comments by @drashna

* Only define Eject in keymap
2018-05-22 14:19:55 -07:00
yiancar
470c50ddb6 Update documentation for rgb matrix (#3023)
* Update documentation for rgb matrix

- Updated keycodes.md to include RGB matrix keycodes + necessary link
2018-05-22 14:18:40 -07:00
GreenShadowMaker
06b3637266 added some helpful notes to the documentation (#2981) 2018-05-22 12:48:33 -07:00
WillyPillow
508801c948 Import userspace config.h according to USER_NAME (#2983)
* Import userspace config.h according to USER_NAME

* Use USER_PATH instead of directly using USER_NAME
2018-05-22 12:47:28 -07:00
Danny
7658f10fba Fix led enabled slave (#3022)
* Account for backlight enabled flag when passing backlight level to slave

* Add BL_TOGG to keymap for testing

* Apply backlight fix to Iris

* Port I2C LED backlight control from Iris to Levinson
2018-05-22 12:40:43 -07:00
noroadsleft
4b1f60a3f5 Refactor update for 6ball (#3017) 2018-05-22 12:12:50 -07:00
Danny
def0ff48c0 Add mike808 Viterbi layout (#3019) 2018-05-22 12:12:06 -07:00
rfvizarra
5018892fa8 A personal layout for the orthodox keyboard (#3006)
* A personal layout for the orthodox keyboard

* Added layout readme.md

* Consolidated inclues with #include QMK_KEYBOARD_H

* Moved layer tones setup to config.h

* Replace persistent_default_layer_set calls with set_single_persistent_default_layer

* Simplified the process_record_user function using layer_state_set_user function and MO() to set the lower, raise, nav and media layers

* Removed AUDIO_ENABLE ifdefs and persistent_default_layer_set() as they are not needed any more
2018-05-22 07:04:53 -07:00
Maarten Dekkers
ddbe60dc36 Fix Atom47 configurator layout (#3018) 2018-05-22 07:03:10 -07:00
QMK Bot
61f30ba542 convert to unix line-endings [skip ci] 2018-05-22 02:16:00 +00:00
Maarten Dekkers
1e8be6b741 Fix atom47 keyboard revision naming (#3013)
* Fixed Atom47 revisions, rev1 is rev3

* Remove rev1 folder

* Added bootloader to info.json

* Renamed layout

* Change readme for atom47

* Remove bootloader line from info.json
2018-05-21 19:12:56 -07:00
Joe Wasson
36fe0828cf Remove ISO imposter key from TKL keymap (#3014) 2018-05-21 18:17:15 -07:00
Jack Humbert
4d26137e2a Create CNAME 2018-05-21 16:29:37 -04:00
Drashna Jaelre
9483a88d75 Add 80 key layout to Ergodone, as it appears to support it (#2984)
* Add 80 key layout to Ergodone

* Add layouts

* Missed a comma .....
2018-05-20 21:45:38 -07:00
Drashna Jaelre
4dc89d974b Fix Ergodox EZ Info.json files (#2979)
* Fix Ergodox EZ Info.json files

* Ugh, column stagger!

* Whoops, added offset to wrong axis

* Add changes to Ergodone and Ergodox Infinity
2018-05-20 21:34:18 -07:00
Drashna Jaelre
8e0040e01a Fix Orthodox height 2018-05-20 21:33:38 -07:00
Drashna Jaelre
8729be5434 Fix compile issues for atmega328p 2018-05-20 21:30:14 -07:00
Barry Huang
f698bbcd65 Capslock indicator add (#3007)
* Capslock indicator add

* edit

* name correction

* led_set_user(usb_led); delete
2018-05-20 10:28:33 -07:00
yiancar
068b80383f HS60 ANSI keymap (#3010)
* Added Modular keyboards L,R and NUM

Created code modules for the 3 modules of the modular keyboard.
Original idea by MechboardsUK. Uses i2c implementation similar to lets
split

* Remove modular from master

This is to fix incorrect branching

* HS60 ANSI update

* HS60 ANSI update
2018-05-20 10:28:05 -07:00
MechMerlin
3e0ec8b171 Kira 75 QMK Support (#3003)
* preliminary check in of Kira75

* Layout done

* make an appropriate keymap and fix layout commas

* formatting changes and housekeeping

* add info.json contents for QMK Configurator support

* add RGB underglow support

* add support for caps and num lock leds
2018-05-20 10:25:34 -07:00
Campbell Barton
c1d30e4a57 qwerty_code_friendly: correct typos (#3002)
* qwerty_code_friendly: correct typos

* qwerty_code_friendly: right thumb for media keys

Allows for single handed media control.
2018-05-20 10:05:01 -07:00
MechMerlin
0b591fd843 Merlin community layouts (#3004)
* community layout support for eagle_viper v2 and remove mechmerlin keymap dir

* community layout support for eagle_viper v2 and remove mechmerlin keymap dir

* Change to QMK_KEYBOARD_H and remove merlin keymap in favor of cmmunity layouts

* community layout support 60_ansi

* community layout support for 60_ansi
2018-05-20 09:59:02 -07:00
MechMerlin
c9102f9e35 Renamed jd40's LAYOUT to LAYOUT_kc (#3000)
Made a new LAYOUT without all the KC_##
2018-05-18 21:00:48 -07:00
MechMerlin
d5f44feb75 checking in xxinophobia's changes to get ISO enter working correctly (#2999) 2018-05-18 21:00:13 -07:00
sennin32
1edb8bf190 change do60 config (#2996)
* add do60 support

* DO60 on market config v0.2.8

* remove do60x

* Changes for matching new naming rule
2018-05-18 20:59:05 -07:00
Joe Burchett
c55c646fa3 fix broken links in readme.md for bigseries (#2997) 2018-05-18 16:33:03 -07:00
Xyverz
27e3458f44 Updating my maps in upstream master (#2987)
* Adding Rama M10-A Macropad

* ch-ch-ch changes...

* Major overhaul based on SMT's keymap.

* more changes.

* Moved the FKeys to the ADJUST layer.

* More rearranging.

* Alias in Atreus62 keymap to make it more legible
Added config.h to fix tapping_term issue for Caps Lock key in OSX

* Added OrthoDox layout.

* More layout changes.

* Fixing things with the keyboard.

* Finishing touches.

Set left-hand master in config.h
Embedded the arrow keys in keymap.c

* Revised keymap making this easier to use.

* additions and changes.

* changes to various keymaps.

* Minor adjustments to OrthoDox layout.

* Added Eco keymap. Updated Let's Split keymap.

* Added gherkin

* Removed my M10A keymap

* Planck Keymap Updates

Updated my Planck keymap and created a simple keymap for Seph's Preonic.

* Added readme

* readme fixes

* Update readme.md

more clarification

* Keymap Tweaks

Removed the Power button setting from the keymap. It was in a
horrible location. I'll work on getting it setup somewhere else
sometime later.

* Added Readme

I finally got around to adding a readme to this keymap. I've also added minor changes to the layout.

* Fixed Keymap Error

* Fixed Readme

* adding iris and levinson keymaps

* Tweaks to keymap

* added youngJZ keymap

* Changes to keymap
Added a readme.md

* Levinson changes

Added the readme.md and rules.mk files.
Configured RGB underglow and backlighting.

* fixed readme

* changes to keymaps

* Updated keymap

* Updated readme.md

* Updated Readme (again)

* Updated Readme

Fixed formatting. Again.

* Updated readme

This is the last readme update for this keyboard update. I hope.

* Added Contra keymap

* Kinesis Keymap Update

* Updated Keymaps

I've updated my Kinesis (Stapelberg) layout and my Clueboard 66 layout.
I've also updated my Kinesis Readme.

* Clueboard Keymap update

Added media keys to my Clueboard 66 Rev2 layout.

* Added keymap

Added Minidox keymap & rules.
Added user function to Let's Split keymap that turns off the red
 LEDs on the Pro Micros.

* New Zen keymap

Added Zen keyboard to my list of keyboards, so had to generate a new
keymap for it.

Also adding some changes to my MiniDox keymap and config.h, as well
as my Levinson's config.h.

The config.h file changes enable ee_hands.

* A few changes for useability

I made a few changes to the Minidox keymap to see if I can't make it more useable.

I'm also working on streamlining the Zen keyboard keymap to reduce layers.

* Re-vamped Iris keymap.

* changes

* minor keymap change

This was a minor keymap change to use mod_tap for the backspace key:
ALT when held, BSPC when tapped.

* Added Fourier keymap

* Keymap Cleanup

Moved KC_ESC to KC_CAPS, and changed KC_ESC to KC_GRV
This is because of muscle memory, I kept hitting ESC when trying to hit TAB.

* Keymap Adjustments

Swapped Caps/Esc, put Caps in Raise/Lower layers, put Grv in normal
Esc position. Adjusted the readme.md to reflect these changes.

* minor tweaks

Added code to disable red ProMicro LEDs after flashing.

* Clean-up

* Corrections to keymap.

Fixed a foul-up in the Zen keymap where the lctrl was where the LOWER
should have been.

* Changes to make this fall in line with the new Layout features

* Moving to LAYOUTs for 4x12 boards

* fixed config.h file

* standardization changes

* Reverted Atreus62 keymap to LAYOUT format

* Switch Preonic and Nyquist to ortho_5x12

* Corrections to config.h

* config.h file tweaks

* config.h file tweaks
2018-05-18 15:32:50 -07:00
Harley Laue
8cdb4a9150 Add Contra layout & cleanup a few things (#2998)
* Have Del become backspace on the bottom layer for grid layouts
* Fix modtap for ESC
* Add sleep to Adjust layer
2018-05-18 13:58:23 -07:00
skullY
e721deb4a6 trigger api update 2018-05-18 12:56:26 -07:00
MechMerlin
2411652a33 remove a KC-NO in row 1 (#2994) 2018-05-18 07:45:06 -07:00
MechMerlin
effc3e380f Add QMK Configurator support and remove Layouts definitions (#2977)
* Add QMK Configurator support and remove userspace definitions

* fix that build breakage

* Unsupport community layouts but use standard layouts
2018-05-17 15:21:06 -07:00
GreenShadowMaker
227c3b909a Add copy of knops/mini default keymap with comments for new user (#2989) 2018-05-17 07:05:34 -07:00
M1K3L08
42a72c633b Fixed sprintf overflow 2018-05-16 21:05:43 -04:00
Drashna Jaelre
9f2bb11412 Make sure new features (RGB Matrix) are actually listed 2018-05-15 22:35:17 -04:00
Drashna Jaelre
f5f0475f53 Fix Orthodox Info.json files 2018-05-15 22:34:56 -04:00
Drashna Jaelre
53a6501d71 Yet another update to drashna keymaps and userspace (EEPROM, RGB indicators) (#2959)
* More Iris Tweaks

* Mess with iris arrow keys

* Massive layout overhaul to make everything more OLKB

* Additional tweaks

* Cleanup Userspace

Remove unused layer code, and properly set userspace eeprom structure.

* EEPROM stuff

* Only use indicators if layer indication is enabled

* Iris and Orthodox Tweaks (Status Indicators)

* Additional tweaks to finish tri layer conversion

* Disable ProMicro ligths globally

* Add Pro Micro hacking info

* Successfully get mod indication working on thumb clusters

* Enable printing when console is enabled

* Make Modifier Indicator lights more modular

* Keymap cleanup

* Tapping test changes

* Cleanup and minor tweaks
2018-05-15 22:34:34 -04:00
Drashna Jaelre
a572323f94 Add default to LEADER_TIMEOUT in case it's not defined (#2818)
* Add default to LEADER_TIMEOUT in case it's not defined

* Update Leader Timeout default
2018-05-15 22:33:53 -04:00
yiancar
323cd35767 Addition of HS60 ISO keyboard (#2972)
* Added Modular keyboards L,R and NUM

Created code modules for the 3 modules of the modular keyboard.
Original idea by MechboardsUK. Uses i2c implementation similar to lets
split

* Remove modular from master

This is to fix incorrect branching

* HS60 initial rgb port

porting HS60 to master rgb code

* HS60 fixes

* Hs60 rgb changes

* Cleanup for HS60 ISO

* More HS60 cleanup

* Update config.h

* More Cleanup for HS60

* HS60 modifications to work with configurator

* More HS60 cleanup

* Remove userspace layouts on HS60

* Update rules.mk

* HS60 bootloader change
2018-05-15 14:54:50 -07:00
Danny
f66e0a20f2 Update info.json for Iris to more closely match physical layout (#2973) 2018-05-15 08:09:47 -07:00
Wilba6582
56c9b2480b Added Olivia's HHKB-ish layout to CA66 (#2974)
* Added Olivia's HHKB-ish layout.
2018-05-15 08:09:04 -07:00
MechMerlin
e41147da92 Help Barry get pk60 Configurator files fixed (#2971) 2018-05-14 11:50:43 -07:00
WarmCat
2b06623fa0 Added YMD75 support (#2968)
* Adding ymd75 files

* Added YMD75 support, inc layout json

* Added YMD75 support
2018-05-14 09:43:12 -07:00
Chris Fung
7d49a17781 override hamburger placement 2018-05-14 08:56:41 -07:00
Drashna Jaelre
9dba705064 Fix Ortho Compile issue 2018-05-14 10:32:11 -04:00
Drashna Jaelre
34b274360c Orthodox info.json changes 2018-05-14 10:21:12 -04:00
Drashna Jaelre
5941f81e38 Add rgblight set at commands 2018-05-14 10:19:08 -04:00
Drashna Jaelre
bfb5922f87 List all Tap Dancing functions (#2945)
* List all Tap Dancing functions

* Spelling, which drashna can't do apparently
2018-05-14 10:17:50 -04:00
yiancar
a98a91cf1b Rgb matrix fixes, I2C library can now retry if it has failed (#2943)
* Added Modular keyboards L,R and NUM

Created code modules for the 3 modules of the modular keyboard.
Original idea by MechboardsUK. Uses i2c implementation similar to lets
split

* Remove modular from master

This is to fix incorrect branching

* General fixes for RGB_matrix

- Complited speed support for all effects
- Fixed raindrop effects to initialized after toggle
- Fixed raindrop effects to use all available LEDs
- Fixed effect step reverse function
- Moved RGB_MATRIX_SOLID_REACTIVE under correct flag

* Documentation update for RGBmatrix

* More doc updates

* I2C library can now retry if it has failed

- Replaced the original TWIlib by LFKeyboard's modified version
- Allows for an extra argument on TWITransmitData, if blocking is set to 1 function will retry to transmit on failure. Good for noisy boards.

* RGB Matrix, use alternative I2C library

TWIlib seems to be hanging for me sometimes probably due to ISR routine. I have used i2c_master as a good alternative.

Note: this commit is for Wilba6582 to verify before merge

* Update rgb_matrix.c

* RGB matrix cleanup

- Remove TWIlib
2018-05-14 10:17:24 -04:00
Drashna Jaelre
f42ec8aa86 Add support for Swap Hands feature to Orthodox and Iris (#2933)
* Add support for Swap Hands feature to Orthodox and Iris

* Fix hag's iris keymap to use LAYOUT properly

* Fix Swedish's Iris Keymap

* Fix Drashna's Orthodox keymaps, because he's an idiot
2018-05-14 10:15:48 -04:00
Drashna Jaelre
678fae6cce Reformat 40% Ortho boards to work with Layouts feature (#2804)
* Reformat 40% Ortho boards to work with Layouts feature

* Fix krusli keymap to compile properly

* Fix mt40 compile errors

* Fix layouts

* fix RGB?
2018-05-14 10:11:12 -04:00
Gergely Nagy
38f204db30 Allow one-shot modifiers to be chained
Many a times one would want to use multiple modifiers with the same key,
preferably without having to hold anything, like `Ctrl+Shift+C` or
`Ctrl+Shift+V` to copy/paste in GNOME Terminal. To make this possible, we need
to be able to chain one-shot modifiers, so that we can have multiple of them
active at the same time.

The easiest way to accomplish this is that whenever we activate a one-shot
modifier, we apply it on top of the existing set, instead of re-setting the
state. When deactivating, either due to an interrupt, or due to a timeout, we
deactivate all oneshots anyway, so the clearing part is covered. When we turn
the one-shot modifier into a toggle, that will also clear all one-shot modifiers
first, so we covered that case too.

Fixes #2796, #1580, and #856.

Signed-off-by: Gergely Nagy <qmk@gergo.csillger.hu>
2018-05-14 10:09:28 -04:00
Sascha Grunert
e76eee2d0a Update my keymap (#2965)
* Add my personal keymap

* Improve layout

* Update keymap

* Set Linux input mode
2018-05-14 07:06:33 -07:00
Lawrence Ng
7f35a62902 Fix/update XD75 default layout (#2963)
Fix layout to match current official default layout: http://www.keyboard-layout-editor.com/#/gists/ac341208e023e4a4d982bccf711ae38f

Also add LED controls on FN layer
2018-05-14 06:59:31 -07:00
xton
47f03bd5a4 Xton has a dz60 (#2952)
* FORK!

* WIP - just how i like it

* empty

* more movement

* mouse keys

* more vimminess

* append/insert shift

* WIP - vim macros

* blocked out layer below in cmd mode.

also, about to restart my cmd approach.

* WIP - new vim layer

ripoff of the ergodox one, but rewritten as a state machine.

* debugged some, got key repeat working

* moooar coverage

* moooar coverage

* regular vis mode

* basically done with basics.

* some refactoring

- common movement sequences into helper function
- added some rgb controls

* modkey passthru feature

* stdized on cmd-left/right instead of ctrl-a/e

sadly. as there's no reliable shift-ctrl-e

* indicator lights

* moved vim layer into userspace

* cleaned up some yanking edge cases

* docs and some tweaks to layerescapes

* updated/added license strings

* updated comments

* moved config changes to keymap

* spurious changes removed

* cleanup pass, HT drashna for suggestions

- used _keymap() pattern to better modularize event processing in userspace
- made some static things static
- removed unused function
- improved reset.

* dz60 started. keymaps done.

* bugfixes: missing state change in d-, lspace should toggle vim mode.

* Caps lock indicator -> vim indicator.

And adjusted mousekey settings.

* don't actually need the second move trigger and it makes typing less responsive.

* some oppurtunistic bugfixing from my other keyboard (sorry)

* added readme for my dz60 keymap.

* bugfixing and comments updated (niu_mini)

* cleanup as suggested from review
2018-05-13 21:02:06 -07:00
MechMerlin
70e60b0a0c update template copyrights to 2018 (#2962) 2018-05-13 21:01:13 -07:00
Barry Huang
fdee10b38e info.json update to pk60 (#2961)
* Play Keyboard60 PCB

pk60 PCB files upload

* Add readme files for pk60

* error solving

* uneeded question marks removed

* Update readme.md

* Layouts update

Including ANSI, ISO, 2 kinds of arrows, minila and ALL layouts.

* info.json and redme.md fix

* uppercase fix to lowercase
2018-05-13 20:49:32 -07:00
Mattia Dal Ben
fd57ea0666 Default layout for the Redox keyboard (#2954)
* Improved default layout for Redox keyboard, renamed old layout

* Corrected copyright note
2018-05-13 19:31:38 -07:00
Barry Huang
ab0db3c52d Play Keyboard60 PCB upload (#2953)
* Play Keyboard60 PCB

pk60 PCB files upload

* Add readme files for pk60

* error solving

* uneeded question marks removed
2018-05-13 09:30:10 -07:00
MechMerlin
c3c5799909 Add standard layout 60% support for QMK Configurator and user space (#2950) 2018-05-12 23:02:06 -07:00
xton
975c48efe6 xtonhasvim cleanup (#2947)
* FORK!

* WIP - just how i like it

* empty

* more movement

* mouse keys

* more vimminess

* append/insert shift

* WIP - vim macros

* blocked out layer below in cmd mode.

also, about to restart my cmd approach.

* WIP - new vim layer

ripoff of the ergodox one, but rewritten as a state machine.

* debugged some, got key repeat working

* moooar coverage

* moooar coverage

* regular vis mode

* basically done with basics.

* some refactoring

- common movement sequences into helper function
- added some rgb controls

* modkey passthru feature

* stdized on cmd-left/right instead of ctrl-a/e

sadly. as there's no reliable shift-ctrl-e

* indicator lights

* moved vim layer into userspace

* cleaned up some yanking edge cases

* docs and some tweaks to layerescapes

* updated/added license strings

* updated comments

* moved config changes to keymap

* spurious changes removed

* cleanup pass, HT drashna for suggestions

- used _keymap() pattern to better modularize event processing in userspace
- made some static things static
- removed unused function
- improved reset.
2018-05-12 15:37:20 -07:00
Joe Wasson
6dda0d6e34 More work on Talljoe layout including adding layout support for HHKB and TKL. (#2946)
* Add tap-dancing semicolon.

* Infinity60 was running out of USB space.

* Rename common layout variable so it doesn't collide with some keyboards.

* Godspeed!!!

* Patch the number of LEDs for 1up60rgb

* Don't light up if rgblight is off.

* Add HHKB layout.

* Add HHKB to Talljoe's layout.

* Bring back bananasplit keymap.

* info.json

* Userspace config.h doesn't seem to be setting PREVENT_STUCK_MODIFIERS

* Remove 1uprgb workaround

* Add TKL to talljoe keymap.

Also introduces the tkl layout.
2018-05-12 09:54:35 -07:00
MechMerlin
48a68dcf10 edit readmes for layout for 60_ansi (#2944) 2018-05-12 08:58:17 -07:00
Wilba6582
b15a71beba Added bootmagic_lite() (#2942) 2018-05-12 08:53:12 -07:00
xton
05be1de1aa Xton's first keymap! (#2941)
* FORK!

* WIP - just how i like it

* empty

* more movement

* mouse keys

* more vimminess

* append/insert shift

* WIP - vim macros

* blocked out layer below in cmd mode.

also, about to restart my cmd approach.

* WIP - new vim layer

ripoff of the ergodox one, but rewritten as a state machine.

* debugged some, got key repeat working

* moooar coverage

* moooar coverage

* regular vis mode

* basically done with basics.

* some refactoring

- common movement sequences into helper function
- added some rgb controls

* modkey passthru feature

* stdized on cmd-left/right instead of ctrl-a/e

sadly. as there's no reliable shift-ctrl-e

* indicator lights

* moved vim layer into userspace

* cleaned up some yanking edge cases

* docs and some tweaks to layerescapes

* updated/added license strings

* updated comments

* moved config changes to keymap

* spurious changes removed
2018-05-12 08:52:11 -07:00
akrob
5b503cc543 Fix syntax, add laylock with backlight toggle on locked layer (#2940)
* Create config.h

* Create rules.mk

* Create keymap.c

* fix syntax and add latest
2018-05-12 08:46:27 -07:00
MechMerlin
69ec54f3a4 FaceW Keyboard Support (#2939)
* preliminary checkin for facew keyboard

* Update readme file

* put the standard 60 ansi layout in

* update rules to have LAYOUT_60_ansi to use my userspace layouts
2018-05-12 08:45:19 -07:00
Hide
57113c7e49 Updated Ergo42 hdbx keymap (#2927)
* Add

* Revert "Add"

This reverts commit 4b10fef88712a63f4a91410410b4c99346fa1b24.

* Add Ergo42 keymaps

for JIS layout

* Fix hdbx keymap for Ergo42

Changed some keys layout and add description.

* Updated hdbx keymaps for Ergo42

Now using update_tri_layer_state.
Underglow color sync layer-switching.

* Fixed hdbx keymap

Deleted rgb define line (now using master)  and fixed some issues pointed out.

* update ignore

* fixed
2018-05-11 08:05:11 -07:00
Danny
5e86f087f8 Fix up info.json file for Iris (#2935) 2018-05-10 10:35:47 -07:00
WarmCat
933842067d Backlight and RGB now working for JJ50 (#2929)
* Added support for JJ50 from KPRepublic, no rgb or backlight control yet. Added as a layout of ymd96 at the moment (same microprocessor). Basic keymap with three layers to get started.

* Added support for JJ50

* Tidied up jj50 code, backlight and RGB is now working.

* Renaming "KEYMAP" to "LAYOUT" to adhere to the new QMK standards.
2018-05-10 08:28:58 -07:00
MechMerlin
c5264d6d89 Move ckeys workshop to its own directory (#2928)
* move obelus and nakey to ckeys directory

* delete the originals

* short readme about ckeys

* edit readmes to reflect new changes

* add build guide info..and here's me trying to retrigger the build job
2018-05-10 00:37:04 -04:00
MechMerlin
5346cb2d20 Support both AVR and ps2avrGB targets for new_project script (#2811)
* Stopping point at creating targets for new_project script

* Add second argument for target

* Add the ps2avrgb target

* consider the case where the firmware type target is not valid

* fix template files to be more generic

* Code cleanup

* Change variable name to be more descriptive

* make avr the default

* forgot to put the template files in

* Take out useless comments

* add usage info
2018-05-10 00:36:40 -04:00
yiancar
c89565cc3d General RGB matrix fixes (#2931)
* Added Modular keyboards L,R and NUM

Created code modules for the 3 modules of the modular keyboard.
Original idea by MechboardsUK. Uses i2c implementation similar to lets
split

* Remove modular from master

This is to fix incorrect branching

* General fixes for RGB_matrix

- Complited speed support for all effects
- Fixed raindrop effects to initialized after toggle
- Fixed raindrop effects to use all available LEDs
- Fixed effect step reverse function
- Moved RGB_MATRIX_SOLID_REACTIVE under correct flag

* Documentation update for RGBmatrix

* More doc updates
2018-05-10 00:31:24 -04:00
sameehj
03516d5460 gcc 8.10 compilation fix (#2914)
* Use memmove instead of memcpy

gcc 8.1 gives the following error:
lib/lufa/LUFA/Drivers/USB/Class/Common/HIDParser.c:93:5: error: 'memcpy' accessing 42 bytes at offsets 28 and 0 overlaps 14 bytes at offset 28 [-Werror=restrict]

This patch resolve this by using memmove instead

Signed-off-by: Sameeh <Sameeh Jubran>

* Remove ATTR_CONST from a void returning function

gcc 8.10 gives the following error when attempting to compile
lib/lufa/LUFA/Drivers/USB/Core/Events.h:334:5: error: 'const' attribute on function returning 'void' [-Werror=attributes]

Signed-off-by: Sameeh <Sameeh Jubran>
2018-05-09 23:39:46 -04:00
Mikkel Jeppesen
00596d55e3 Added propper support for Lets split vitamins (#2559)
* Added support for the upcomming Lets_split vitamins included

* Updated readme

* Corrected header of readme

* Enabled RGB

* Broke everything

* broke some more shit

* Revert "broke some more shit"

This reverts commit 6ad68e6269cc0d04c16564ce9598dfd3db1e23c1.

* Revert "Broke everything"

This reverts commit feeee4e40db15a726f2292b6a9406ef45c1e54a7.

* Fixed USB detection, and RGB on slave

* started modifying readme, to use msys2

* Added support for the upcomming Lets_split vitamins included

* Updated readme

* Corrected header of readme

* Enabled RGB

* Broke everything

* broke some more shit

* Revert "broke some more shit"

This reverts commit 6ad68e6269cc0d04c16564ce9598dfd3db1e23c1.

* Revert "Broke everything"

This reverts commit feeee4e40db15a726f2292b6a9406ef45c1e54a7.

* Fixed USB detection, and RGB on slave

* started modifying readme, to use msys2

* Updated readme to reflect use of msys2 Added avrdude to msys path

* added avrdude option to msys installer

* Removed extra installation of avrdude

* Renamed to vitamins_included and implemented drashnas changes

* Fixed include guard

* Fixed some includes, and added avrdude target to docs.

* Fixed default keyboard
2018-05-09 09:14:30 -07:00
MechMerlin
749916e6e2 Add standard layout to XD60 (#2925)
* add new layout and fix formatting

* Add 60_ansi layout so I can use my user space defined layouts

* Make QMK_KEYBOARD_H and LAYOUT renames

* update info.json file
2018-05-09 07:52:35 -07:00
MechMerlin
6ba2c74058 QMK Configurator Support for Paladin64 PCB (#2926) 2018-05-09 07:51:43 -07:00
Jack Humbert
6ba73e0e04 update doc options 2018-05-09 00:59:07 -04:00
yiancar
afacd42368 Add effect speed support for RGB Matrix *No EEPROM yet* (#2922)
* Added Modular keyboards L,R and NUM

Created code modules for the 3 modules of the modular keyboard.
Original idea by MechboardsUK. Uses i2c implementation similar to lets
split

* Remove modular from master

This is to fix incorrect branching

* Add effect speed support for RGB Matrix *No eeprom yet*

Keycodes RGB_SPI and RGB_SPD have been added to increase and decrease effect speed.

Speed is not saved in EEPROM yet as per Jack's request.

* Update rgb_matrix.c

* RGB Matrix speed fix rgblight.h

* More fixes for rgb speed. Speed functions declared but not used in rgblight

* More travis fixes..

* Another one for travis..
2018-05-08 23:23:21 -04:00
MechMerlin
23df5fb89a Alf X2 Layout Fixes (#2923)
* Move the microswitches to the top of the keyboard like how it is
physically

Format change to make things pretty

* Fix keymap to match the new layouts

* stopping point at new info.json file

* Update readme

* Finish up QMK Configurator fixes for info.json
2018-05-08 19:43:48 -07:00
Drashna Jaelre
6bd2b8ded3 Add Teensy ++ 2.0 bootloader support 2018-05-08 20:08:17 -04:00
Pim Ostendorf
0373c4dc9e small update to default keymap (#2902)
* changed behaviour of the spacebars in game mode to better support games
2018-05-08 16:04:14 -07:00
MechMerlin
ff758496b3 QMK Configurator Support for bananasplit (#2882)
* Change KEYMAP to LAYOUT refactor

* Add info.json for QMK Configurator Support

* Change LAYOUT_ansi to LAYOUT_60_ansi

* removed talljoe's placeholder keymaps

* change LAYOUT to LAYOUT_base
2018-05-08 16:00:19 -07:00
Hannes Egler
922d9b77ad more fixes for configurator (#2920) 2018-05-08 15:58:24 -07:00
noroadsleft
9d15f48427 Configurator updates for Atreus62 (#2913)
* c10r: Atreus62

* Removed bootloader flag from info.json
2018-05-08 15:55:50 -07:00
Jack Humbert
e7d4bc5291 enable eeprom for rgb matrix 2018-05-08 18:13:09 -04:00
Jack Humbert
c6ea96ab43 Merge branch 'master' of github.com:qmk/qmk_firmware 2018-05-08 17:19:42 -04:00
Jack Humbert
63d5c947d3 updated music mask 2018-05-08 17:18:15 -04:00
skullY
466ee76423 switch to the vue theme and add search 2018-05-08 12:47:08 -07:00
Drashna Jaelre
d678724ca8 Fix Atom47 Keyboard 2018-05-08 15:26:08 -04:00
Jack Humbert
14b7602a65 Adds IS31FL3731 RGB Matrix Implementation (#2910)
* adds is31fl3731 rgb matrix implementation

* fix build script for force pushes

* allow bootloader size to be overwritten

* adds planck light implementation

* split led config into 2 arrays

* idk

* betterize register handling

* update planck implementation

* update planck

* refine rgb interface

* cleanup names, rgb matrix

* start documentation

* finish up docs

* add effects list

* clean-up merge

* add RGB_MATRIX_SKIP_FRAMES

* add support for at90usb1286 to bootloader options
2018-05-08 15:24:18 -04:00
Hannes Egler
46dca121fd kbd75 fixes for the configurator (#2908)
fixed the info.json
2018-05-08 11:39:18 -07:00
MechMerlin
1b4ad6b4ae KBD8X QMK Support (#2915)
* initial commit

* add row/column and pin info

* Add first part of switch matrix

* documentation and additional config items

* map out the non confusing part of the matrix

* map out the top row

* ok I think I got it

* fix some stupid compile errors

* put in a default keymap

* rename LAYOUT to LAYOUT_all

* add a standard layout and info.json file

* Fix up readme for default keymap

* Add toggle key LED functionality

* changes based on review feedback
2018-05-08 11:38:11 -07:00
skullY
ccc87421e7 Some more tweaks to make everything look nice 2018-05-07 23:42:41 -07:00
skullY
303f425c6b Fix up info boxes. 2018-05-07 22:46:26 -07:00
skullY
9e5676650e Use docsfy to replace gitbook 2018-05-07 22:46:26 -07:00
Hannes Egler
06e5f9b25e added additional configurator support (#2905)
* added additional configurator support

Added support for choosing between 5 configurator options:
Layout (supports all keys)
Layout_ansi_1u
Layout_iso_1u
Layout_ansi
Layout_iso

* confirming to conventions

replaced .h filenames with QMK_KEYBOARD_H
2018-05-07 08:41:56 -07:00
MechMerlin
280c10cb09 Thanks to talljoe, 1up60 actually only has 16, not 20 RGB LEDs (#2906) 2018-05-07 08:38:09 -07:00
1458 changed files with 52465 additions and 38390 deletions

View File

@@ -11,6 +11,7 @@
"*.h": "c",
"*.c": "c",
"*.cpp": "cpp",
"*.hpp": "cpp"
"*.hpp": "cpp",
"xstddef": "c"
}
}
}

View File

@@ -32,21 +32,41 @@
ifeq ($(strip $(BOOTLOADER)), atmel-dfu)
OPT_DEFS += -DBOOTLOADER_ATMEL_DFU
OPT_DEFS += -DBOOTLOADER_DFU
BOOTLOADER_SIZE = 4096
ifeq ($(strip $(MCU)), atmega32u4)
BOOTLOADER_SIZE = 4096
endif
ifeq ($(strip $(MCU)), at90usb1286)
BOOTLOADER_SIZE = 8192
endif
endif
ifeq ($(strip $(BOOTLOADER)), lufa-dfu)
OPT_DEFS += -DBOOTLOADER_LUFA_DFU
OPT_DEFS += -DBOOTLOADER_DFU
BOOTLOADER_SIZE = 4096
ifeq ($(strip $(MCU)), atmega32u4)
BOOTLOADER_SIZE = 4096
endif
ifeq ($(strip $(MCU)), at90usb1286)
BOOTLOADER_SIZE = 8192
endif
endif
ifeq ($(strip $(BOOTLOADER)), qmk-dfu)
OPT_DEFS += -DBOOTLOADER_QMK_DFU
OPT_DEFS += -DBOOTLOADER_DFU
BOOTLOADER_SIZE = 4096
ifeq ($(strip $(MCU)), atmega32u4)
BOOTLOADER_SIZE = 4096
endif
ifeq ($(strip $(MCU)), at90usb1286)
BOOTLOADER_SIZE = 8192
endif
endif
ifeq ($(strip $(BOOTLOADER)), halfkay)
OPT_DEFS += -DBOOTLOADER_HALFKAY
BOOTLOADER_SIZE = 512
ifeq ($(strip $(MCU)), atmega32u4)
BOOTLOADER_SIZE = 512
endif
ifeq ($(strip $(MCU)), at90usb1286)
BOOTLOADER_SIZE = 1024
endif
endif
ifeq ($(strip $(BOOTLOADER)), caterina)
OPT_DEFS += -DBOOTLOADER_CATERINA
@@ -59,4 +79,4 @@ endif
ifdef BOOTLOADER_SIZE
OPT_DEFS += -DBOOTLOADER_SIZE=$(strip $(BOOTLOADER_SIZE))
endif
endif

View File

@@ -210,8 +210,8 @@ endif
USER_PATH := users/$(USER_NAME)
-include $(USER_PATH)/rules.mk
ifneq ("$(wildcard users/$(KEYMAP)/config.h)","")
CONFIG_H += users/$(KEYMAP)/config.h
ifneq ("$(wildcard $(USER_PATH)/config.h)","")
CONFIG_H += $(USER_PATH)/config.h
endif

View File

@@ -114,6 +114,15 @@ ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
endif
endif
ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes)
OPT_DEFS += -DRGB_MATRIX_ENABLE
SRC += is31fl3731.c
SRC += i2c_master.c
SRC += $(QUANTUM_DIR)/color.c
SRC += $(QUANTUM_DIR)/rgb_matrix.c
CIE1931_CURVE = yes
endif
ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
OPT_DEFS += -DTAP_DANCE_ENABLE
SRC += $(QUANTUM_DIR)/process_keycode/process_tap_dance.c

0
docs/.nojekyll Normal file
View File

View File

@@ -1,6 +0,0 @@
# Frequently Asked Questions
* [General](03_FAQ/02_General_FAQ.md)
* [Building or Compiling QMK](03_FAQ/03_Build_Compile_QMK.md)
* [Debugging and Troubleshooting QMK](03_FAQ/04_Debugging_and_Troubleshooting.md)
* [Keymap](03_FAQ/05_Keymaps.md)

View File

@@ -1,27 +0,0 @@
# QMK Features
QMK has a staggering number of features for building your keyboard. It can take some time to understand all of them and determine which one will achieve your goal.
* [Advanced Keycodes](Advanced_Keycodes.md) - Change layers, type shifted keys, and more. Go beyond typing simple characters.
* [Audio](Audio.md) - Connect a speaker to your keyboard for audio feedback, midi support, and music mode.
* [Auto Shift](Auto_Shift.md) - Tap for the normal key, hold slightly longer for its shifted state.
* [Backlight](Backlight.md) - LED lighting support for your keyboard.
* [Bootmagic](Bootmagic.md) - Adjust the behavior of your keyboard using hotkeys.
* [Dynamic Macros](Dynamic_Macros.md) - Record and playback macros from the keyboard itself.
* [Key Lock](Key_Lock.md) - Lock a key in the "down" state.
* [Layouts](Layouts.md) - Use one keymap with any keyboard that supports your layout.
* [Leader Key](Leader_Key.md) - Tap the leader key followed by a sequence to trigger custom behavior.
* [Macros](Macros.md) - Send multiple key presses when pressing only one physical key.
* [Mouse keys](Mouse_Keys.md) - Control your mouse pointer from your keyboard.
* [Pointing Device](Pointing_Device.md) - Framework for connecting your custom pointing device to your keyboard.
* [PS2 Mouse](PS_2_Mouse.md) - Driver for connecting a PS/2 mouse directly to your keyboard.
* [RGB Light](RGB_Lighting.md) - RGB lighting for your keyboard.
* [Space Cadet Shift](Space_Cadet_Shift.md) - Use your left/right shift keys to type parenthesis and brackets.
* [Space Cadet Shift Enter](Space_Cadet_Shift_Enter.md) - Combined Shift/Enter keys
* [Stenography](Stenography.md) - Put your keyboard into Plover mode for stenography use.
* [Tap Dance](Tap_Dance.md) - Make a single key do as many things as you want.
* [Terminal](Terminal.md) - CLI interface to the internals of your keyboard.
* [Thermal Printer](Thermal_Printer.md) - Connect a thermal printer to your keyboard to be able to toggle on a printed log of everything you type.
* [Unicode](Unicode.md) - Unicode input support.
* [Userspace](Userspace.md) - Share code between different keymaps and keyboards.

View File

@@ -1 +0,0 @@
../05_Features/Advanced_Keycodes.md

View File

@@ -1 +0,0 @@
../05_Features/Backlight.md

View File

@@ -1 +0,0 @@
../05_Features/Bluetooth.md

View File

@@ -1 +0,0 @@
../05_Features/Bootmagic.md

View File

@@ -1 +0,0 @@
../05_Features/RGB_Lighting.md

View File

@@ -1 +0,0 @@
../05_Features/Stenography.md

View File

@@ -1 +0,0 @@
../05_Features/Thermal_Printer.md

View File

@@ -1,9 +0,0 @@
* [Keyboard Guidelines](01_Keyboard_Guidelines.md)
* [Compatable Microcontrollers](Compatable_Microcontrollers.md)
* [Config Options](Config_Options.md)
* [Custom Code](Custom_Code.md)
* [Documentation Best Practices](Documentation_Best_Practices.md)
* [Documentation Templates](Documentation_Templates.md)
* [Glossary](Glossary.md)
* [Keymap Overview](Keymap_Overview.md)
* [Unit Testing](Unit_Testing.md)

View File

@@ -1,106 +0,0 @@
# ISP Flashing Guide
If you're having trouble flashing/erasing your board, and running into cryptic error messages like any of the following:
libusb: warning [darwin_transfer_status] transfer error: timed out
dfu.c:844: -ETIMEDOUT: Transfer timed out, NAK 0xffffffc4 (-60)
atmel.c:1627: atmel_flash: flash data dfu_download failed.
atmel.c:1629: Expected message length of 1072, got -60.
atmel.c:1434: Error flashing the block: err -2.
ERROR
Memory write error, use debug for more info.
commands.c:360: Error writing memory data. (err -4)
dfu.c:844: -EPIPE: a) Babble detect or b) Endpoint stalled 0xffffffe0 (-32)
Device is write protected.
dfu.c:252: dfu_clear_status( 0x7fff4fc2ea80 )
atmel.c:1434: Error flashing the block: err -2.
ERROR
Memory write error, use debug for more info.
commands.c:360: Error writing memory data. (err -4)
You're likely going to need to ISP flash your board/device to get it working again. Luckily, this process is pretty straight-forward, provided you have any extra programmable keyboard, Arduino, or Teensy 2.0/Teensy 2.0++. There are also dedicated ISP flashers available for this, but most cost >$15, and it's assumed that if you are googling this error, this is the first you've heard about ISP flashing, and don't have one readily available (whereas you might have some other AVR board). __We'll be using a Teensy 2.0 with Windows 10 in this guide__ - if you are comfortable doing this on another system, please consider editing this guide and contributing those instructions!
## Software Needed
* [The Arduino IDE](https://www.arduino.cc/en/Main/Software)
* [Teensyduino](https://www.pjrc.com/teensy/td_download.html) (if you're using a Teensy)
* [WinAVR](http://www.ladyada.net/learn/avr/setup-win.html) (Windows)
## Wiring
This is pretty straight-forward - we'll be connecting like-things to like-things in the following manner:
Flasher B0 <-> Keyboard RESET
Flasher B1 <-> Keyboard B1 (SCLK)
Flasher B2 <-> Keyboard B2 (MOSI)
Flasher B3 <-> Keyboard B3 (MISO)
Flasher VCC <-> Keyboard VCC
Flasher GND <-> Keyboard GND
## The ISP Firmware
Make sure your keyboard is unplugged from any device, and plug in your Teensy.
1. Run Arduino after you have everything installed
2. Select `Tools > Board * > Teensy 2.0`
3. Click `File > Examples > 11.ArduinoISP > ArduinoISP`
Then scroll down until you see something that looks like this block of code:
// Configure which pins to use:
// The standard pin configuration.
#ifndef ARDUINO_HOODLOADER2
#define RESET 0 // Use 0 (B0) instead of 10
#define LED_HB 11 // Use 11 (LED on the Teensy 2.0)
#define LED_ERR 8 // This won't be used unless you have an LED hooked-up to 8 (D3)
#define LED_PMODE 7 // This won't be used unless you have an LED hooked-up to 7 (D2)
And make the changes in the last four lines. If you're using something besides the Teensy 2.0, you'll want to choose something else that makes sense for `LED_HB`. We define `RESET` as `0`/`B0` because that's what's close - if you want to use another pin for some reason, [you can use the pinouts to choose something else](https://www.pjrc.com/teensy/pinout.html).
Once you've made your changes, you can click the Upload button (right arrow), which will open up the Teensy flasher app - you'll need to press the reset button on the Teensy the first time, but after that, it's automatic (you shouldn't be flashing this more than once, though). Once flashed, the orange LED on the Teensy will flash on and off, indicating it's ready for some action.
## The `.hex` File
Before flashing your firmware, you're going to need to and do a little preparation. We'll be appending [this bootloader (also a .hex file)](https://github.com/qmk/qmk_firmware/blob/master/util/bootloader_atmega32u4_1_0_0.hex) to the end of our firmware by opening the original .hex file in a text editor, and removing the last line, which should be `:00000001FF` (this is an EOF message). After that's been removed, copy the entire bootloader's contents and paste it at the end of the original file, and save it.
It's possible to use other bootloaders here in the same way, but __you need a bootloader__, otherwise you'll have to ISP to write new firmware to your keyboard.
## Flashing Your Firmware
Make sure your keyboard is unplugged from any device, and plug in your Teensy.
Open `cmd` and navigate to your where your modified .hex file is. We'll pretend this file is called `main.hex`, and that your Teensy 2.0 is on the `COM3` port - if you're unsure, you can open your Device Manager, and look for `Ports > USB Serial Device`. Use that COM port here. You can confirm it's the right port with:
avrdude -c avrisp -P COM3 -p atmega32u4
and you should get something like the following output:
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.02s
avrdude: Device signature = 0x1e9587
avrdude: safemode: Fuses OK
avrdude done. Thank you.
Since our keyboard uses an `atmega32u4` (common), that is the chip we'll specify. This is the full command:
avrdude -c avrisp -P COM3 -p atmega32u4 -U flash:w:main.hex:i
You should see a couple of progress bars, then you should see:
avrdude: verifying ...
avrdude: 32768 bytes of flash verified
avrdude: safemode: Fuses OK
avrdude done. Thank you.
Which means everything should be ok! Your board may restart automatically, otherwise, unplug your Teensy and plug in your keyboard - you can leave your Teensy wired to your keyboard while testing things, but it's recommended that you desolder it/remove the wiring once you're sure everything works.
If you have any questions/problems, feel free to [open an issue](https://github.com/qmk/qmk_firmware/issues/new)!

View File

@@ -1,2 +0,0 @@
* [Hand Wiring Guide](Hand_Wiring_Guide.md)
* [ISP Flashing Guide](ISP_Flashing_Guide.md)

View File

@@ -1 +0,0 @@
* [Eclipse](Eclipse.md)

1
docs/CNAME Normal file
View File

@@ -0,0 +1 @@
docs.qmk.fm

View File

@@ -1,2 +0,0 @@
* [How Keyboards Work](How_Keyboards_Work.md)
* [Understanding QMK](Understanding_QMK.md)

View File

@@ -1,143 +0,0 @@
# group `midi_device` {#group__midi__device}
You use the functions when you are implementing your own midi device.
You set a send function to actually send bytes via your device, this method is called when you call a send function with this device, for instance midi_send_cc
You use the midi_device_input to process input data from the device and pass it through the device's associated callbacks.
You use the midi_device_set_pre_input_process_func if you want to have a function called at the beginning of the device's process function, generally to poll for input and pass that into midi_device_input
## Summary
Members | Descriptions
--------------------------------|---------------------------------------------
`define `[`MIDI_INPUT_QUEUE_LENGTH`](#group__midi__device_1ga4aaa419caebdca2bbdfc1331e79781a8) |
`enum `[`input_state_t`](#group__midi__device_1gac203e877d3df4275ceb8e7180a61f621) |
`public void `[`midi_device_input`](#group__midi__device_1gad8d3db8eb35d9cfa51ef036a0a9d70db)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t cnt,uint8_t * input)` | Process input bytes. This function parses bytes and calls the appropriate callbacks associated with the given device. You use this function if you are creating a custom device and you want to have midi input.
`public void `[`midi_device_set_send_func`](#group__midi__device_1ga59f5a46bdd4452f186cc73d9e96d4673)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_var_byte_func_t send_func)` | Set the callback function that will be used for sending output data bytes. This is only used if you're creating a custom device. You'll most likely want the callback function to disable interrupts so that you can call the various midi send functions without worrying about locking.
`public void `[`midi_device_set_pre_input_process_func`](#group__midi__device_1ga4de0841b87c04fc23cb56b6451f33b69)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_no_byte_func_t pre_process_func)` | Set a callback which is called at the beginning of the midi_device_process call. This can be used to poll for input data and send the data through the midi_device_input function. You'll probably only use this if you're creating a custom device.
`struct `[`_midi_device`](Internals/internals_midi_device.md#struct__midi__device) | This structure represents the input and output functions and processing data for a midi device.
## Members
#### `define `[`MIDI_INPUT_QUEUE_LENGTH`](#group__midi__device_1ga4aaa419caebdca2bbdfc1331e79781a8) {#group__midi__device_1ga4aaa419caebdca2bbdfc1331e79781a8}
#### `enum `[`input_state_t`](#group__midi__device_1gac203e877d3df4275ceb8e7180a61f621) {#group__midi__device_1gac203e877d3df4275ceb8e7180a61f621}
Values | Descriptions
--------------------------------|---------------------------------------------
IDLE |
ONE_BYTE_MESSAGE |
TWO_BYTE_MESSAGE |
THREE_BYTE_MESSAGE |
SYSEX_MESSAGE |
#### `public void `[`midi_device_input`](#group__midi__device_1gad8d3db8eb35d9cfa51ef036a0a9d70db)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t cnt,uint8_t * input)` {#group__midi__device_1gad8d3db8eb35d9cfa51ef036a0a9d70db}
Process input bytes. This function parses bytes and calls the appropriate callbacks associated with the given device. You use this function if you are creating a custom device and you want to have midi input.
#### Parameters
* `device` the midi device to associate the input with
* `cnt` the number of bytes you are processing
* `input` the bytes to process
#### `public void `[`midi_device_set_send_func`](#group__midi__device_1ga59f5a46bdd4452f186cc73d9e96d4673)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_var_byte_func_t send_func)` {#group__midi__device_1ga59f5a46bdd4452f186cc73d9e96d4673}
Set the callback function that will be used for sending output data bytes. This is only used if you're creating a custom device. You'll most likely want the callback function to disable interrupts so that you can call the various midi send functions without worrying about locking.
#### Parameters
* `device` the midi device to associate this callback with
* `send_func` the callback function that will do the sending
#### `public void `[`midi_device_set_pre_input_process_func`](#group__midi__device_1ga4de0841b87c04fc23cb56b6451f33b69)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_no_byte_func_t pre_process_func)` {#group__midi__device_1ga4de0841b87c04fc23cb56b6451f33b69}
Set a callback which is called at the beginning of the midi_device_process call. This can be used to poll for input data and send the data through the midi_device_input function. You'll probably only use this if you're creating a custom device.
#### Parameters
* `device` the midi device to associate this callback with
* `midi_no_byte_func_t` the actual callback function
# struct `_midi_device` {#struct__midi__device}
This structure represents the input and output functions and processing data for a midi device.
A device can represent an actual physical device [serial port, usb port] or something virtual. You should not need to modify this structure directly.
## Summary
Members | Descriptions
--------------------------------|---------------------------------------------
`public midi_var_byte_func_t `[`send_func`](Internals/internals_midi_device.md#struct__midi__device_1a25d4c94b4bbccd5b98f1032b469f3ff9) |
`public midi_three_byte_func_t `[`input_cc_callback`](Internals/internals_midi_device.md#struct__midi__device_1a6da5236c1bc73877728df92d213a78d1) |
`public midi_three_byte_func_t `[`input_noteon_callback`](Internals/internals_midi_device.md#struct__midi__device_1aa10b15cf1a7fb825a5df0d2abbe34a1c) |
`public midi_three_byte_func_t `[`input_noteoff_callback`](Internals/internals_midi_device.md#struct__midi__device_1aaf290043078534d3a5a0ea4c840eba84) |
`public midi_three_byte_func_t `[`input_aftertouch_callback`](Internals/internals_midi_device.md#struct__midi__device_1acb0b4901c545cec4b28b126f2d8c315f) |
`public midi_three_byte_func_t `[`input_pitchbend_callback`](Internals/internals_midi_device.md#struct__midi__device_1a305fea672caeb996f2233bf8cd2bef18) |
`public midi_three_byte_func_t `[`input_songposition_callback`](Internals/internals_midi_device.md#struct__midi__device_1a5f3f13638b3fef3fc561ed1bf301d586) |
`public midi_two_byte_func_t `[`input_progchange_callback`](Internals/internals_midi_device.md#struct__midi__device_1adaf1da617c9a10a9dcad00ab1959d3da) |
`public midi_two_byte_func_t `[`input_chanpressure_callback`](Internals/internals_midi_device.md#struct__midi__device_1ab7ca2925c539915d43974eff604d85f7) |
`public midi_two_byte_func_t `[`input_songselect_callback`](Internals/internals_midi_device.md#struct__midi__device_1a89bed8a5a55376120cfc0a62b42f057f) |
`public midi_two_byte_func_t `[`input_tc_quarterframe_callback`](Internals/internals_midi_device.md#struct__midi__device_1ad9813e75d22e284f9f65a907d20600f0) |
`public midi_one_byte_func_t `[`input_realtime_callback`](Internals/internals_midi_device.md#struct__midi__device_1a9448eba4afb7e43650434748db3777be) |
`public midi_one_byte_func_t `[`input_tunerequest_callback`](Internals/internals_midi_device.md#struct__midi__device_1a0cb8fd53e00cf1d4202d4fa04d038e8d) |
`public midi_sysex_func_t `[`input_sysex_callback`](Internals/internals_midi_device.md#struct__midi__device_1afff9a0ce641762aaef24c1e6953ec9a2) |
`public midi_var_byte_func_t `[`input_fallthrough_callback`](Internals/internals_midi_device.md#struct__midi__device_1abb974ec6d734001b4a0e370f292be503) |
`public midi_var_byte_func_t `[`input_catchall_callback`](Internals/internals_midi_device.md#struct__midi__device_1aae0d535129d4fd650edc98eb3f7584f8) |
`public midi_no_byte_func_t `[`pre_input_process_callback`](Internals/internals_midi_device.md#struct__midi__device_1aeb0bb8923d66c23d874e177dc4265754) |
`public uint8_t `[`input_buffer`](Internals/internals_midi_device.md#struct__midi__device_1a7c5684857d6af4ebc4dc12da27bd6b2a) |
`public input_state_t `[`input_state`](Internals/internals_midi_device.md#struct__midi__device_1a69a687d2d1c449ec15a11c07a5722e39) |
`public uint16_t `[`input_count`](Internals/internals_midi_device.md#struct__midi__device_1a68dea8e7b6151e89c85c95caa612ee5d) |
`public uint8_t `[`input_queue_data`](Internals/internals_midi_device.md#struct__midi__device_1ada41de021135dc423abedcbb30f366ff) |
`public `[`byteQueue_t`](#structbyte_queue__t)` `[`input_queue`](#struct__midi__device_1a49c8538a8a02193c58e28a56eb695d8f) |
## Members
#### `public midi_var_byte_func_t `[`send_func`](Internals/internals_midi_device.md#struct__midi__device_1a25d4c94b4bbccd5b98f1032b469f3ff9) {#struct__midi__device_1a25d4c94b4bbccd5b98f1032b469f3ff9}
#### `public midi_three_byte_func_t `[`input_cc_callback`](Internals/internals_midi_device.md#struct__midi__device_1a6da5236c1bc73877728df92d213a78d1) {#struct__midi__device_1a6da5236c1bc73877728df92d213a78d1}
#### `public midi_three_byte_func_t `[`input_noteon_callback`](Internals/internals_midi_device.md#struct__midi__device_1aa10b15cf1a7fb825a5df0d2abbe34a1c) {#struct__midi__device_1aa10b15cf1a7fb825a5df0d2abbe34a1c}
#### `public midi_three_byte_func_t `[`input_noteoff_callback`](Internals/internals_midi_device.md#struct__midi__device_1aaf290043078534d3a5a0ea4c840eba84) {#struct__midi__device_1aaf290043078534d3a5a0ea4c840eba84}
#### `public midi_three_byte_func_t `[`input_aftertouch_callback`](Internals/internals_midi_device.md#struct__midi__device_1acb0b4901c545cec4b28b126f2d8c315f) {#struct__midi__device_1acb0b4901c545cec4b28b126f2d8c315f}
#### `public midi_three_byte_func_t `[`input_pitchbend_callback`](Internals/internals_midi_device.md#struct__midi__device_1a305fea672caeb996f2233bf8cd2bef18) {#struct__midi__device_1a305fea672caeb996f2233bf8cd2bef18}
#### `public midi_three_byte_func_t `[`input_songposition_callback`](Internals/internals_midi_device.md#struct__midi__device_1a5f3f13638b3fef3fc561ed1bf301d586) {#struct__midi__device_1a5f3f13638b3fef3fc561ed1bf301d586}
#### `public midi_two_byte_func_t `[`input_progchange_callback`](Internals/internals_midi_device.md#struct__midi__device_1adaf1da617c9a10a9dcad00ab1959d3da) {#struct__midi__device_1adaf1da617c9a10a9dcad00ab1959d3da}
#### `public midi_two_byte_func_t `[`input_chanpressure_callback`](Internals/internals_midi_device.md#struct__midi__device_1ab7ca2925c539915d43974eff604d85f7) {#struct__midi__device_1ab7ca2925c539915d43974eff604d85f7}
#### `public midi_two_byte_func_t `[`input_songselect_callback`](Internals/internals_midi_device.md#struct__midi__device_1a89bed8a5a55376120cfc0a62b42f057f) {#struct__midi__device_1a89bed8a5a55376120cfc0a62b42f057f}
#### `public midi_two_byte_func_t `[`input_tc_quarterframe_callback`](Internals/internals_midi_device.md#struct__midi__device_1ad9813e75d22e284f9f65a907d20600f0) {#struct__midi__device_1ad9813e75d22e284f9f65a907d20600f0}
#### `public midi_one_byte_func_t `[`input_realtime_callback`](Internals/internals_midi_device.md#struct__midi__device_1a9448eba4afb7e43650434748db3777be) {#struct__midi__device_1a9448eba4afb7e43650434748db3777be}
#### `public midi_one_byte_func_t `[`input_tunerequest_callback`](Internals/internals_midi_device.md#struct__midi__device_1a0cb8fd53e00cf1d4202d4fa04d038e8d) {#struct__midi__device_1a0cb8fd53e00cf1d4202d4fa04d038e8d}
#### `public midi_sysex_func_t `[`input_sysex_callback`](Internals/internals_midi_device.md#struct__midi__device_1afff9a0ce641762aaef24c1e6953ec9a2) {#struct__midi__device_1afff9a0ce641762aaef24c1e6953ec9a2}
#### `public midi_var_byte_func_t `[`input_fallthrough_callback`](Internals/internals_midi_device.md#struct__midi__device_1abb974ec6d734001b4a0e370f292be503) {#struct__midi__device_1abb974ec6d734001b4a0e370f292be503}
#### `public midi_var_byte_func_t `[`input_catchall_callback`](Internals/internals_midi_device.md#struct__midi__device_1aae0d535129d4fd650edc98eb3f7584f8) {#struct__midi__device_1aae0d535129d4fd650edc98eb3f7584f8}
#### `public midi_no_byte_func_t `[`pre_input_process_callback`](Internals/internals_midi_device.md#struct__midi__device_1aeb0bb8923d66c23d874e177dc4265754) {#struct__midi__device_1aeb0bb8923d66c23d874e177dc4265754}
#### `public uint8_t `[`input_buffer`](Internals/internals_midi_device.md#struct__midi__device_1a7c5684857d6af4ebc4dc12da27bd6b2a) {#struct__midi__device_1a7c5684857d6af4ebc4dc12da27bd6b2a}
#### `public input_state_t `[`input_state`](Internals/internals_midi_device.md#struct__midi__device_1a69a687d2d1c449ec15a11c07a5722e39) {#struct__midi__device_1a69a687d2d1c449ec15a11c07a5722e39}
#### `public uint16_t `[`input_count`](Internals/internals_midi_device.md#struct__midi__device_1a68dea8e7b6151e89c85c95caa612ee5d) {#struct__midi__device_1a68dea8e7b6151e89c85c95caa612ee5d}
#### `public uint8_t `[`input_queue_data`](Internals/internals_midi_device.md#struct__midi__device_1ada41de021135dc423abedcbb30f366ff) {#struct__midi__device_1ada41de021135dc423abedcbb30f366ff}
#### `public `[`byteQueue_t`](#structbyte_queue__t)` `[`input_queue`](#struct__midi__device_1a49c8538a8a02193c58e28a56eb695d8f) {#struct__midi__device_1a49c8538a8a02193c58e28a56eb695d8f}

View File

@@ -1,8 +1,15 @@
# Quantum Mechanical Keyboard Firmware
[![Current Version](https://img.shields.io/github/tag/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/tags)
[![Build Status](https://travis-ci.org/qmk/qmk_firmware.svg?branch=master)](https://travis-ci.org/qmk/qmk_firmware)
[![Discord](https://img.shields.io/discord/440868230475677696.svg)](https://discord.gg/Uq7gcHh)
[![Docs Status](https://img.shields.io/badge/docs-ready-orange.svg)](https://docs.qmk.fm)
[![GitHub contributors](https://img.shields.io/github/contributors/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/pulse/monthly)
[![GitHub forks](https://img.shields.io/github/forks/qmk/qmk_firmware.svg?style=social&label=Fork)](https://github.com/qmk/qmk_firmware/)
## What is QMK Firmware?
QMK (*Quantum Mechanical Keyboard*) is an open source community that maintains QMK Firmware, QMK Flasher, 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 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.
## How to Get It
@@ -12,7 +19,7 @@ Otherwise, you can either download it directly ([zip](https://github.com/qmk/qmk
## How to Compile
Before you are able to compile, you'll need to [install an environment](01_Getting_Started/01_Install_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:
Before you are able to compile, you'll need to [install an environment](getting_started_build_tools.md) for AVR or/and ARM development. Once that is complete, you'll use the `make` command to build a keyboard and keymap with the following notation:
make planck/rev4:default
@@ -22,4 +29,4 @@ This would build the `rev4` revision of the `planck` with the `default` keymap.
## How to Customize
QMK has lots of [features](05_Features/index.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](07_Reference/Keymap_Overview.md), and changing the [keycodes](06_Keycodes/index.md).
QMK has lots of [features](features.md) to explore, and a good deal of [reference documentation](http://docs.qmk.fm) to dig through. Most features are taken advantage of by modifying your [keymap](keymap.md), and changing the [keycodes](keycodes.md).

100
docs/_sidebar.md Normal file
View File

@@ -0,0 +1,100 @@
* [Getting Started](README.md)
* [QMK Introduction](getting_started_introduction.md)
* [Install Build Tools](getting_started_build_tools.md)
* Alternative: [Vagrant Guide](getting_started_vagrant.md)
* [Build/Compile Instructions](getting_started_make_guide.md)
* [Flashing Firmware](flashing.md)
* [Contributing to QMK](contributing.md)
* [How to Use Github](getting_started_github.md)
* [Getting Help](getting_started_getting_help.md)
* [Complete Newbs Guide](newbs.md)
* [Getting Started](newbs_getting_started.md)
* [Building Your First Firmware](newbs_building_firmware.md)
* [Flashing Firmware](newbs_flashing.md)
* [Testing and Debugging](newbs_testing_debugging.md)
* [FAQ](faq.md)
* [General FAQ](faq_general.md)
* [Build/Compile QMK](faq_build.md)
* [Debugging/Troubleshooting QMK](faq_debug.md)
* [Keymap](faq_keymap.md)
* [Hardware](hardware.md)
* [Keyboard Guidelines](hardware_keyboard_guidelines.md)
* [AVR Processors](hardware_avr.md)
* ARM Processors (TBD)
* [Drivers](hardware_drivers.md)
* [Features](features.md)
* [Advanced Keycodes](feature_advanced_keycodes.md)
* [Audio](feature_audio.md)
* [Auto Shift](feature_auto_shift.md)
* [Backlight](feature_backlight.md)
* [Bootmagic](feature_bootmagic.md)
* [Command](feature_command.md)
* [Dynamic Macros](feature_dynamic_macros.md)
* [Grave Escape](feature_grave_esc.md)
* [Key Lock](feature_key_lock.md)
* [Layouts](feature_layouts.md)
* [Leader Key](feature_leader_key.md)
* [Macros](feature_macros.md)
* [Mouse Keys](feature_mouse_keys.md)
* [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 Shift](feature_space_cadet.md)
* [Space Cadet Shift Enter](feature_space_shift_cadet.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)
* [Keycodes](keycodes.md)
* [Backlight](feature_backlight.md#backlight-keycodes)
* [Basic](keycodes_basic.md)
* [Bluetooth](feature_bluetooth.md#bluetooth-keycodes)
* [Bootmagic](feature_bootmagic.md#bootmagic-keycodes)
* [Layer Switching](feature_advanced_keycodes.md#switching-and-toggling-layers)
* [Mod+Key](feature_advanced_keycodes.md#modifier-keys)
* [Mod Tap](feature_advanced_keycodes.md#mod-tap)
* [One Shot Keys](feature_advanced_keycodes.md#one-shot-keys)
* [Quantum](quantum_keycodes.md)
* [RGB Light](feature_rgblight.md#rgblight-keycodes)
* [Shifted Keys](feature_advanced_keycodes.md#shifted-keycodes)
* [Stenography](feature_stenography.md#keycode-reference)
* [Thermal Printer](feature_thermal_printer.md#thermal-printer-keycodes)
* [US ANSI Shifted Keys](keycodes_us_ansi_shifted.md)
* Reference
* [Config Options](config_options.md)
* [Customizing Functionality](custom_quantum_functions.md)
* [Documentation Best Practices](documentation_best_practices.md)
* [Documentation Templates](documentation_templates.md)
* [Glossary](reference_glossary.md)
* [Keymap Overview](keymap.md)
* [Unit Testing](unit_testing.md)
* For Makers and Modders
* [Hand Wiring Guide](hand_wire.md)
* [ISP Flashing Guide](isp_flashing_guide.md)
* For a Deeper Understanding
* [How Keyboards Work](how_keyboards_work.md)
* [Understanding QMK](understanding_qmk.md)
* Other Topics
* [Using Eclipse with QMK](eclipse.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)

98
docs/_summary.md Normal file
View File

@@ -0,0 +1,98 @@
* [Getting Started](README.md)
* [QMK Introduction](getting_started_introduction.md)
* [Install Build Tools](getting_started_build_tools.md)
* Alternative: [Vagrant Guide](getting_started_vagrant.md)
* [Build/Compile Instructions](getting_started_make_guide.md)
* [Flashing Firmware](flashing.md)
* [Contributing to QMK](contributing.md)
* [How to Use Github](getting_started_github.md)
* [Getting Help](getting_started_getting_help.md)
* [Complete Newbs Guide](newbs.md)
* [Getting Started](newbs_getting_started.md)
* [Building Your First Firmware](newbs_building_firmware.md)
* [Flashing Firmware](newbs_flashing.md)
* [Testing and Debugging](newbs_testing_debugging.md)
* [FAQ](faq.md)
* [General FAQ](faq_general.md)
* [Build/Compile QMK](faq_build.md)
* [Debugging/Troubleshooting QMK](faq_debug.md)
* [Keymap](faq_keymap.md)
* [Hardware](hardware.md)
* [Keyboard Guidelines](hardware_keyboard_guidelines.md)
* [AVR Processors](hardware_avr.md)
* ARM Processors (TBD)
* [Drivers](hardware_drivers.md)
* [Features](features.md)
* [Advanced Keycodes](feature_advanced_keycodes.md)
* [Audio](feature_audio.md)
* [Auto Shift](feature_auto_shift.md)
* [Backlight](feature_backlight.md)
* [Bootmagic](feature_bootmagic.md)
* [Command](feature_command.md)
* [Dynamic Macros](feature_dynamic_macros.md)
* [Grave Escape](feature_grave_esc.md)
* [Key Lock](feature_key_lock.md)
* [Layouts](feature_layouts.md)
* [Leader Key](feature_leader_key.md)
* [Macros](feature_macros.md)
* [Mouse Keys](feature_mouse_keys.md)
* [Pointing Device](feature_pointing_device.md)
* [PS/2 Mouse](feature_ps2_mouse.md)
* [RGB Lighting](feature_rgblight.md)
* [Space Cadet](feature_space_cadet.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)
* [Keycodes](keycodes.md)
* [Backlight](feature_backlight.md#backlight-keycodes)
* [Basic](keycodes_basic.md)
* [Bluetooth](feature_bluetooth.md#bluetooth-keycodes)
* [Bootmagic](feature_bootmagic.md#bootmagic-keycodes)
* [Layer Switching](feature_advanced_keycodes.md#switching-and-toggling-layers)
* [Mod+Key](feature_advanced_keycodes.md#modifier-keys)
* [Mod Tap](feature_advanced_keycodes.md#mod-tap)
* [One Shot Keys](feature_advanced_keycodes.md#one-shot-keys)
* [Quantum](quantum_keycodes.md)
* [RGB Light](feature_rgblight.md#rgblight-keycodes)
* [Shifted Keys](feature_advanced_keycodes.md#shifted-keycodes)
* [Stenography](feature_stenography.md#keycode-reference)
* [Thermal Printer](feature_thermal_printer.md#thermal-printer-keycodes)
* [US ANSI Shifted Keys](keycodes_us_ansi_shifted.md)
* Reference
* [Config Options](config_options.md)
* [Customizing Functionality](custom_quantum_functions.md)
* [Documentation Best Practices](documentation_best_practices.md)
* [Documentation Templates](documentation_templates.md)
* [Glossary](reference_glossary.md)
* [Keymap Overview](keymap.md)
* [Unit Testing](unit_testing.md)
* For Makers and Modders
* [Hand Wiring Guide](hand_wire.md)
* [ISP Flashing Guide](isp_flashing_guide.md)
* For a Deeper Understanding
* [How Keyboards Work](how_keyboards_work.md)
* [Understanding QMK](understanding_qmk.md)
* Other Topics
* [Using Eclipse with QMK](eclipse.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

@@ -1,31 +0,0 @@
{
"title": "QMK Firmware",
"tagline": "Keyboard controller firmware for Atmel AVR and ARM USB families",
"author": "QMK Community",
"image": "gitbook/images/favicon.png",
"ignore": {
"dirs": [
"Internals"
],
"files": [
"internals_defines.md",
"internals_input_callback_reg.md",
"internals_midi_device.md",
"internals_midi_device_setup_process.md",
"internals_midi_util.md",
"internals_send_functions.md",
"internals_sysex_tools.md"
]
},
"html": {
"auto_landing": false,
"auto_toc": true,
"breadcrumbs": true,
"breadcrumbs_separator": " &emdash;&gt; ",
"edit_on_github": "qmk/qmk_firmware/blob/master/docs",
"repo": "qmk/qmk_firmware",
"search": true,
"theme": "daux-navy",
"toggle_code": false
}
}

View File

@@ -184,7 +184,7 @@ This is a [make](https://www.gnu.org/software/make/manual/make.html) file that i
* `SRC`
* Used to add files to the compilation/linking list.
* `LAYOUTS`
* A list of [layouts](05_Features/Layouts.md) this keyboard supports.
* A list of [layouts](feature_layouts.md) this keyboard supports.
## AVR MCU Options
* `MCU = atmega32u4`

View File

@@ -101,7 +101,7 @@ You'll find all our documentation in the `qmk_firmware/docs` directory, or if yo
Most first-time QMK contributors start with their personal keymaps. We try to keep keymap standards pretty casual (keymaps, after all, reflect the personality of their creators) but we do ask that you follow these guidelines to make it easier for others to discover and learn from your keymap.
* Write a `readme.md` using [the template](https://docs.qmk.fm/documentation_templates.html#).
* Write a `readme.md` using [the template](documentation_templates.md).
* All Keymap PR's are squashed, so if you care about how your commits are squashed you should do it yourself
* Do not lump features in with keymap PR's. Submit the feature first and then a second PR for the keymap.
* Do not include `Makefile`s in your keymap folder (they're no longer used)
@@ -113,7 +113,7 @@ Keyboards are the raison d'être for QMK. Some keyboards are community maintaine
We also ask that you follow these guidelines:
* Write a `readme.md` using [the template](https://docs.qmk.fm/documentation_templates.html#).
* Write a `readme.md` using [the template](documentation_templates.md).
* Keep the number of commits reasonable or we will squash your PR
* Do not lump core features in with new keyboards. Submit the feature first and then submit a separate PR for the keyboard.
* Name `.c`/`.h` file after the immediate parent folder, eg `/keyboards/<kb1>/<kb2>/<kb2>.[ch]`
@@ -122,7 +122,7 @@ We also ask that you follow these guidelines:
## Quantum/TMK Core
Before you put a lot of work into building your new feature you should make sure you are implementing it in the best way. You can get a basic understanding of QMK by reading [Understanding QMK](For_a_Deeper_Understanding/Understanding_QMK.md), which will take you on a tour of the QMK program flow. From here you should talk to us to get a sense of the best way to implement your idea. There are two main ways to do this:
Before you put a lot of work into building your new feature you should make sure you are implementing it in the best way. You can get a basic understanding of QMK by reading [Understanding QMK](understanding_qmk.md), which will take you on a tour of the QMK program flow. From here you should talk to us to get a sense of the best way to implement your idea. There are two main ways to do this:
* [Chat on Gitter](https://gitter.im/qmk/qmk_firmware)
* [Open an Issue](https://github.com/qmk/qmk_firmware/issues/new)
@@ -140,7 +140,7 @@ We also ask that you follow these guidelines:
* Keep the number of commits reasonable or we will squash your PR
* Do not lump keyboards or keymaps in with core changes. Submit your core changes first.
* Write [Unit Tests](http://docs.qmk.fm/unit_testing.html) for your feature
* Write [Unit Tests](unit_testing.md) for your feature
* Follow the style of the file you are editing. If the style is unclear or there are mixed styles you should conform to the [coding conventions](#coding-conventions) above.
## Refactoring

View File

@@ -2,7 +2,7 @@
For a lot of people a custom keyboard is about more than sending button presses to your computer. You want to be able to do things that are more complex than simple button presses and macros. QMK has hooks that allow you to inject code, override functionality, and otherwise customize how your keyboard behaves in different situations.
This page does not assume any special knowledge about QMK, but reading [Understanding QMK](For_a_Deeper_Understanding/Understanding_QMK.md) will help you understand what is going on at a more fundamental level.
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
@@ -135,9 +135,11 @@ void led_set_user(uint8_t usb_led) {
* Keyboard/Revision: `void led_set_kb(uint8_t usb_led)`
* Keymap: `void led_set_user(uint8_t usb_led)`
# Matrix Initialization Code
Before a keyboard can be used the hardware must be initialized. QMK handles initialization of the keyboard matrix itself, but if you have other hardware like LED's or i&#xb2;c controllers you will need to set up that hardware before it can be used.
Before a keyboard can be used the hardware must be initialized. QMK handles initialization of the keyboard matrix itself, but if you have other hardware like LED's or i&#xb2;c controllers you will need to set up that hardware before it can be used.
### Example `matrix_init_user()` Implementation
@@ -177,13 +179,42 @@ This function gets called at every matrix scan, which is basically as often as t
You should use this function if you need custom matrix scanning code. It can also be used for custom status output (such as LED's or a display) or other functionality that you want to trigger regularly even when the user isn't typing.
# Keyboard Idling/Wake Code
If the board supports it, it can be "idled", by stopping a number of functions. A good example of this is RGB lights or backlights. This can save on power consumption, or may be better behavior for your keyboard.
This is controlled by two functions: `suspend_power_down_*` and `suspend_wakeup_init_*`, which are called when the system is board is idled and when it wakes up, respectively.
### Example suspend_power_down_user() and suspend_wakeup_init_user() Implementation
This example, at the keyboard level, sets up B1, B2, and B3 as LED pins.
```
void suspend_power_down_user(void)
{
rgb_matrix_set_suspend_state(true);
}
void suspend_wakeup_init_user(void)
{
rgb_matrix_set_suspend_state(false);
}
```
### `keyboard_init_*` Function Documentation
* 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
Thir runs code every time that the layers get changed. This can be useful for layer indication, or custom layer handling.
This runs code every time that the layers get changed. This can be useful for layer indication, or custom layer handling.
### Example `layer_state_set_*` Implementation
This example shows how to set the [RGB Underglow](05_Features/RGB_Lighting.md) lights based on the layer, using the Planck as an example
This example shows how to set the [RGB Underglow](feature_rgblight.md) lights based on the layer, using the Planck as an example
```
uint32_t layer_state_set_user(uint32_t state) {
@@ -212,4 +243,4 @@ uint32_t layer_state_set_user(uint32_t state) {
* Keyboard/Revision: `void uint32_t layer_state_set_kb(uint32_t state)`
* Keymap: `uint32_t layer_state_set_user(uint32_t state)`
The `state` is the bitmask of the active layers, as explained in the [Keymap Overview](07_Reference/Keymap_Overview.md#keymap-layer-status)
The `state` is the bitmask of the active layers, as explained in the [Keymap Overview](keymap.md#keymap-layer-status)

View File

@@ -22,60 +22,27 @@ Your page should generally have multiple "H1" headings. Only H1 and H2 headings
You can have styled hint blocks drawn around text to draw attention to it.
```
{% hint style='info' %}
This uses `hint style='info'`
{% endhint %}
```
### Examples:
{% hint style='info' %}
This uses `hint style='info'`
{% endhint %}
{% hint style='tip' %}
This uses `hint style='tip'`
{% endhint %}
{% hint style='danger' %}
This uses `hint style='danger'`
{% endhint %}
{% hint style='working' %}
This uses `hint style='working'`
{% endhint %}
# Styled Terminal Blocks
You can present styled terminal blocks by including special tokens inside your text block.
### Important
```
\`\`\`
**[terminal]
**[prompt foo@joe]**[path ~]**[delimiter $ ]**[command ./myscript]
Normal output line. Nothing special here...
But...
You can add some colors. What about a warning message?
**[warning [WARNING] The color depends on the theme. Could look normal too]
What about an error message?
**[error [ERROR] This is not the error you are looking for]
\`\`\`
!> This is important
```
### Example
Renders as:
!> This is important
### General Tips
```
**[terminal]
**[prompt foo@joe]**[path ~]**[delimiter $ ]**[command ./myscript]
Normal output line. Nothing special here...
But...
You can add some colors. What about a warning message?
**[warning [WARNING] The color depends on the theme. Could look normal too]
What about an error message?
**[error [ERROR] This is not the error you are looking for]
?> This is a helpful tip.
```
Renders as:
?> This is a helpful tip.
# Documenting Features
If you create a new feature for QMK, create a documentation page for it. It doesn't have to be very long, a few sentences describing your feature and a table listing any relevant keycodes is enough. Here is a basic template:
@@ -94,4 +61,4 @@ This page describes my cool feature. You can use my cool feature to make coffee
|KC_SUGAR||Order Sugar|
```
Place your documentation into `docs/feature_<my_cool_feature>.md`, and add that file to the appropriate place in `docs/_summary.md`. If you have added any keycodes be sure to add them to `docs/06_Keycodes/index.md` with a link back to your feature page.
Place your documentation into `docs/feature_<my_cool_feature>.md`, and add that file to the appropriate place in `docs/_sidebar.md`. If you have added any keycodes be sure to add them to `docs/keycodes.md` with a link back to your feature page.

View File

@@ -17,7 +17,7 @@ Note that this set-up has been tested on Ubuntu 16.04 only for the moment.
# Prerequisites
## Build Environment
Before starting, you must have followed the [Getting Started](index.md#getting-started) section corresponding to your system. In particular, you must have been able to build the firmware with the `make` command.
Before starting, you must have followed the [Getting Started](README.md#getting-started) section corresponding to your system. In particular, you must have been able to build the firmware with [the `make` command](../#the-make-command).
## Java
Eclipse is a Java application, so you will need to install Java 8 or more recent to be able to run it. You may choose between the JRE or the JDK, the latter being useful if you intend to do Java development.
@@ -85,4 +85,4 @@ We will now configure a make target that cleans the project and builds the keyma
8. Double-click the build target you created to trigger a build.
9. Select the <kbd>Console</kbd> view at the bottom to view the running build.
[1]: https://en.wikipedia.org/wiki/Eclipse_(software)
[1]: https://en.wikipedia.org/wiki/Eclipse_(software)

6
docs/faq.md Normal file
View File

@@ -0,0 +1,6 @@
# 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

@@ -1,6 +1,6 @@
# Frequently Asked Build Questions
This page covers questions about building QMK. If you haven't yet done so, you should read the [Build Environment Setup](01_Getting_Started/index.md) and [Make Instructions](01_Getting_Started/03_Build_Compile_Instructions.md) guides.
This page covers questions about building QMK. If you haven't yet done so, you should read the [Build Environment Setup](getting_started_build_tools.md) and [Make Instructions](getting_started_make_guide.md) guides.
## Can't Program on Linux
You will need proper permissions to operate a device. For Linux users, see the instructions regarding `udev` rules, below. If you have issues with `udev`, a work-around is to use the `sudo` command. If you are not familiar with this command, check its manual with `man sudo` or [see this webpage](https://linux.die.net/man/8/sudo).

View File

@@ -12,7 +12,7 @@
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.
From a technical standpoint QMK builds upon TMK by adding several new features. Most notably QMK has expanded the number of available keycodes and uses these to implement advanced features like `S()`, `LCTL()`, and `MO()`. You can see a complete list of these keycodes in [Keycodes](06_Keycodes/index.md).
From a technical standpoint QMK builds upon TMK by adding several new features. Most notably QMK has expanded the number of available keycodes and uses these to implement advanced features like `S()`, `LCTL()`, and `MO()`. You can see a complete list of these keycodes in [Keycodes](keycodes.md).
From a project and community management standpoint TMK maintains all the officially supported keyboards by himself, with a bit of community support. Separate community maintained forks exist or can be created for other keyboards. Only a few keymaps are provided by default, so users typically don't share keymaps with each other. QMK encourages sharing of both keyboards and keymaps through a centrally managed repository, accepting all pull requests that follow the quality standards. These are mostly community maintained, but the QMK team also helps when necessary.

View File

@@ -1,9 +1,9 @@
# Keymap FAQ
This page covers questions people often have about keymaps. If you haven't you should read [Keymap Overview](07_Reference/Keymap_Overview.md) first.
This page covers questions people often have about keymaps. If you haven't you should read [Keymap Overview](keymap.md) first.
## What Keycodes Can I Use?
See [Keycodes](06_Keycodes/index.md) for an index of keycodes available to you. These link to more extensive documentation when available.
See [Keycodes](keycodes.md) for an index of keycodes available to you. These link to more extensive documentation when available.
Keycodes are actually defined in [common/keycode.h](https://github.com/qmk/qmk_firmware/blob/master/tmk_core/common/keycode.h).
@@ -20,8 +20,8 @@ QMK has two features, Bootmagic and Command, which allow you to change the behav
As a quick fix try holding down `Space`+`Backspace` while you plug in your keyboard. This will reset the stored settings on your keyboard, returning those keys to normal operation. If that doesn't work look here:
* [Bootmagic](05_Features/Bootmagic.md)
* [Command](05_Features/Command.md)
* [Bootmagic](feature_bootmagic.md)
* [Command](feature_command.md)
## The Menu Key Isn't Working
@@ -49,7 +49,7 @@ https://github.com/tmk/tmk_keyboard/issues/67
Modifier keys or layers can be stuck unless layer switching is configured properly.
For Modifier keys and layer actions you have to place `KC_TRANS` on same position of destination layer to unregister the modifier key or return to previous layer on release event.
* https://github.com/tmk/tmk_core/blob/master/doc/Reference/Keymap_Overview.md#31-momentary-switching
* https://github.com/tmk/tmk_core/blob/master/doc/keymap.md#31-momentary-switching
* http://geekhack.org/index.php?topic=57008.msg1492604#msg1492604
* https://github.com/tmk/tmk_keyboard/issues/248
@@ -136,7 +136,7 @@ https://github.com/tekezo/Karabiner/issues/403
## Esc and <code>&#96;</code> on a Single Key
See the [Grave Escape](05_Features/Grave_Escape.md) feature.
See the [Grave Escape](feature_grave_esc.md) feature.
## Arrow on Right Modifier Keys with Dual-Role
This turns right modifier keys into arrow keys when the keys are tapped while still modifiers when the keys are hold. In TMK the dual-role function is dubbed **TAP**.
@@ -147,7 +147,7 @@ This turns right modifier keys into arrow keys when the keys are tapped while st
/* Arrow keys on right modifier keys with TMK dual role feature
*
* https://github.com/tmk/tmk_core/blob/master/doc/07_Reference/Keymap_Overview.md#213-modifier-with-tap-keydual-role
* https://github.com/tmk/tmk_core/blob/master/doc/keymap.md#213-modifier-with-tap-keydual-role
* https://en.wikipedia.org/wiki/Modifier_key#Dual-role_keys
*/
const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {

View File

@@ -15,13 +15,13 @@ This will allow you to use `FN_CAPS` and `ALT_TAB` in your `KEYMAP()`, keeping i
### Limits of These Aliases
Currently, the keycodes able to used with these functions are limited to the [Basic Keycodes](06_Keycodes/Basic.md), meaning you can't use keycodes like `KC_TILD`, or anything greater than 0xFF. For a full list of the keycodes able to be used see [Basic Keycodes](06_Keycodes/Basic.md).
Currently, the keycodes able to used with these functions are limited to the [Basic Keycodes](keycodes_basic.md), meaning you can't use keycodes like `KC_TILD`, or anything greater than 0xFF. For a full list of the keycodes able to be used see [Basic Keycodes](keycodes_basic.md).
# Switching and Toggling Layers
These functions allow you to activate layers in various ways. Note that layers are not generally independent layouts -- multiple layers can be activated at once, and it's typical for layers to use `KC_TRNS` to allow keypresses to pass through to lower layers. For a detailed explanation of layers, see [Keymap Overview](07_Reference/Keymap_Overview.md#keymap-and-layers)
These functions allow you to activate layers in various ways. Note that layers are not generally independent layouts -- multiple layers can be activated at once, and it's typical for layers to use `KC_TRNS` to allow keypresses to pass through to lower layers. For a detailed explanation of layers, see [Keymap Overview](keymap.md#keymap-and-layers)
* `DF(layer)` - switches the default layer. The default layer is the always-active base layer that other layers stack on top of. See below for more about the default layer. This might be used to switch from QWERTY to Dvorak layout. (Note that this is a temporary switch that only persists until the keyboard loses power. To modify the default layer in a persistent way requires deeper customization, such as calling the `set_single_persistent_default_layer` function inside of [process_record_user](07_Reference/Custom_Code.md#programming-the-behavior-of-any-keycode).)
* `DF(layer)` - switches the default layer. The default layer is the always-active base layer that other layers stack on top of. See below for more about the default layer. This might be used to switch from QWERTY to Dvorak layout. (Note that this is a temporary switch that only persists until the keyboard loses power. To modify the default layer in a persistent way requires deeper customization, such as calling the `set_single_persistent_default_layer` function inside of [process_record_user](custom_quantum_functions.md#programming-the-behavior-of-any-keycode).)
* `MO(layer)` - momentarily activates *layer*. As soon as you let go of the key, the layer is deactivated.
* `LM(layer, mod)` - Momentarily activates *layer* (like `MO`), but with modifier(s) *mod* active. Only supports layers 0-15 and the left modifiers.
* `LT(layer, kc)` - momentarily activates *layer* when held, and sends *kc* when tapped.
@@ -131,11 +131,9 @@ We've added shortcuts to make common modifier/tap (mod-tap) mappings more compac
* `LCAG_T(kc)` - is CtrlAltGui when held and *kc* when tapped
* `MEH_T(kc)` - is like Hyper, but not as cool -- does not include the Cmd/Win key, so just sends Alt+Ctrl+Shift.
{% hint style='info' %}
Due to the way that keycodes are structured, any modifiers specified as part of `kc`, such as `LCTL()` or `KC_LPRN`, will only activate when held instead of tapped.
?> Due to the way that keycodes are structured, any modifiers specified as part of `kc`, such as `LCTL()` or `KC_LPRN`, will only activate when held instead of tapped.
Additionally, if there is at least one right modifier, any other modifiers will turn into their right equivalents, so it is not possible to "mix and match" the two.
{% endhint %}
?> Additionally, if there is at least one right modifier, any other modifiers will turn into their right equivalents, so it is not possible to "mix and match" the two.
# One Shot Keys

View File

@@ -64,7 +64,7 @@ The music mode maps your columns to a chromatic scale, and your rows to octaves.
Recording is experimental due to some memory issues - if you experience some weird behavior, unplugging/replugging your keyboard will fix things.
06_Keycodes available:
Keycodes available:
* `MU_ON` - Turn music mode on
* `MU_OFF` - Turn music mode off
@@ -89,6 +89,20 @@ By default, `MUSIC_MASK` is set to `keycode < 0xFF` which means keycodes less th
Which will capture all keycodes - be careful, this will get you stuck in music mode until you restart your keyboard!
For a more advanced way to control which keycodes should still be processed, you can use `music_mask_kb(keycode)` in `<keyboard>.c` and `music_mask_user(keycode)` in your `keymap.c`:
bool music_mask_user(uint16_t keycode) {
switch (keycode) {
case RAISE:
case LOWER:
return false;
default:
return true;
}
}
Things that return false are not part of the mask, and are always processed.
The pitch standard (`PITCH_STANDARD_A`) is 440.0f by default - to change this, add something like this to your `config.h`:
#define PITCH_STANDARD_A 432.0f

View File

@@ -88,10 +88,7 @@ occasion. This is simply due to habit and holding some keys a little longer
than others. Once you find this value, work on tapping your problem keys a little
quicker than normal and you will be set.
{% hint style='info' %}
Auto Shift has three special keys that can help you get this value right very
quick. See "Auto Shift Setup" for more details!
{% endhint %}
?> Auto Shift has three special keys that can help you get this value right very quick. See "Auto Shift Setup" for more details!
### NO_AUTO_SHIFT_SPECIAL (simple define)

View File

@@ -6,7 +6,7 @@ Bootmagic is a system for configuring your keyboard while it initializes. To tri
Bootmagic Keycodes allow you to access the Bootmagic functionality after your keyboard has initialized. To use Bootmagic Keycodes you assign keycodes starting with `MAGIC_`, much in the same way you define any other key.
Command is a feature that allows you to control different aspects of your keyboard. Command used to be called Magic. Command is typically accessed by holding Left and Right Shift at the same time, although that can be customized. While it shares some functionality with Bootmagic it also allows you to access functionality that Bootmagic does not. For more information see the [Command](05_Features/Command.md) documentation page.
Command is a feature that allows you to control different aspects of your keyboard. Command used to be called Magic. Command is typically accessed by holding Left and Right Shift at the same time, although that can be customized. While it shares some functionality with Bootmagic it also allows you to access functionality that Bootmagic does not. For more information see the [Command](feature_command.md) documentation page.
## Enabling Bootmagic

View File

@@ -1,6 +1,6 @@
# Command (Formerly known as Magic)
Command is a way to change your keyboard's behavior without having to flash or unplug it to use [Bootmagic](05_Features/Bootmagic.md). There is a lot of overlap between this functionality and the [Bootmagic Keycodes](05_Features/Bootmagic.md). Whenever possible we encourage you to use that functionality instead of Command.
Command is a way to change your keyboard's behavior without having to flash or unplug it to use [Bootmagic](feature_bootmagic.md). There is a lot of overlap between this functionality and the [Bootmagic Keycodes](feature_bootmagic.md). Whenever possible we encourage you to use that functionality instead of Command.
## Enabling Command

View File

@@ -8,4 +8,4 @@ Here's how to use it:
2. Enable key lock by including `KEY_LOCK_ENABLE = yes` in your Makefile.
3. That's it!
Important: switching layers does not cancel the key lock. Additionally, key lock is only able to hold standard action keys and One Shot modifier keys (for example, if you have your shift defined as `OSM(KC_LSFT)`; see [One Shot Keys](06_Keycodes/Quantum_Keycodes.md#one-shot-keys)). This does not include any of the QMK special functions (except One Shot modifiers), or shifted versions of keys such as KC_LPRN. If it's in the [Basic Keycodes](06_Keycodes/Basic.md) list, it can be held. If it's not, then it can't be.
Important: switching layers does not cancel the key lock. Additionally, key lock is only able to hold standard action keys and One Shot modifier keys (for example, if you have your shift defined as `OSM(KC_LSFT)`; see [One Shot Keys](quantum_keycodes.md#one-shot-keys)). This does not include any of the QMK special functions (except One Shot modifiers), or shifted versions of keys such as KC_LPRN. If it's in the [Basic Keycodes](keycodes_basic.md) list, it can be held. If it's not, then it can't be.

View File

@@ -17,14 +17,16 @@ void matrix_scan_user(void) {
leader_end();
SEQ_ONE_KEY(KC_F) {
register_code(KC_S);
unregister_code(KC_S);
// Anything you can do in a macro.
SEND_STRING("QMK is awesome.");
}
SEQ_TWO_KEYS(KC_D, KC_D) {
SEND_STRING(SS_LCTRL("a")SS_LCTRL("c"));
}
SEQ_THREE_KEYS(KC_D, KC_D, KC_S) {
SEND_STRING("https://start.duckduckgo.com"SS_TAP(X_ENTER));
}
SEQ_TWO_KEYS(KC_A, KC_S) {
register_code(KC_H);
unregister_code(KC_H);
}
SEQ_THREE_KEYS(KC_A, KC_S, KC_D) {
register_code(KC_LGUI);
register_code(KC_S);
unregister_code(KC_S);
@@ -34,4 +36,6 @@ void matrix_scan_user(void) {
}
```
As you can see, you have three function. you can use - `SEQ_ONE_KEY` for single-key sequences (Leader followed by just one key), and `SEQ_TWO_KEYS` and `SEQ_THREE_KEYS` for longer sequences. Each of these accepts one or more keycodes as arguments. This is an important point: You can use keycodes from **any layer on your keyboard**. That layer would need to be active for the leader macro to fire, obviously.
As you can see, you have a few function. You can use `SEQ_ONE_KEY` for single-key sequences (Leader followed by just one key), and `SEQ_TWO_KEYS`, `SEQ_THREE_KEYS` up to `SEQ_FIVE_KEYS` for longer sequences.
Each of these accepts one or more keycodes as arguments. This is an important point: You can use keycodes from **any layer on your keyboard**. That layer would need to be active for the leader macro to fire, obviously.

View File

@@ -2,9 +2,7 @@
Macros allow you to send multiple keystrokes when pressing just one key. QMK has a number of ways to define and use macros. These can do anything you want: type common phrases for you, copypasta, repetitive game movements, or even help you code.
{% hint style='danger' %}
**Security Note**: While it is possible to use macros to send passwords, credit card numbers, and other sensitive information it is a supremely bad idea to do so. Anyone who gets a hold of your keyboard will be able to access that information by opening a text editor.
{% endhint %}
!> **Security Note**: While it is possible to use macros to send passwords, credit card numbers, and other sensitive information it is a supremely bad idea to do so. Anyone who gets a hold of your keyboard will be able to access that information by opening a text editor.
## The New Way: `SEND_STRING()` & `process_record_user`
@@ -132,9 +130,7 @@ SEND_STRING(".."SS_TAP(X_END));
## The Old Way: `MACRO()` & `action_get_macro`
{% hint style='info' %}
This is inherited from TMK, and hasn't been updated - it's recommend that you use `SEND_STRING` and `process_record_user` instead.
{% endhint %}
?> This is inherited from TMK, and hasn't been updated - it's recommend that you use `SEND_STRING` and `process_record_user` instead.
By default QMK assumes you don't have any macros. To define your macros you create an `action_get_macro()` function. For example:

143
docs/feature_rgb_matrix.md Normal file
View File

@@ -0,0 +1,143 @@
# RGB Matrix Lighting
There is basic support for addressable RGB matrix lighting with the I2C IS31FL3731 RGB controller. To enable it, add this to your `rules.mk`:
RGB_MATRIX_ENABLE = yes
Configure the hardware via your `config.h`:
// This is a 7-bit address, that gets left-shifted and bit 0
// set to 0 for write, 1 for read (as per I2C protocol)
// The address will vary depending on your wiring:
// 0b1110100 AD <-> GND
// 0b1110111 AD <-> VCC
// 0b1110101 AD <-> SCL
// 0b1110110 AD <-> SDA
#define DRIVER_ADDR_1 0b1110100
#define DRIVER_ADDR_2 0b1110110
#define DRIVER_COUNT 2
#define DRIVER_1_LED_TOTAL 25
#define DRIVER_2_LED_TOTAL 24
#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL
Currently only 2 drivers are supported, but it would be trivial to support all 4 combinations.
Define these arrays listing all the LEDs in your `<keyboard>.c`:
const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
* | | | B location
* | | | | */
{0, C1_3, C2_3, C3_3},
....
}
Where `Cx_y` is the location of the LED in the matrix defined by [the datasheet](http://www.issi.com/WW/pdf/31FL3731.pdf). The `driver` is the index of the driver you defined in your `config.h` (`0` or `1` right now).
const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = {
/* {row | col << 4}
* | {x=0..224, y=0..64}
* | | modifier
* | | | */
{{0|(0<<4)}, {20.36*0, 21.33*0}, 1},
{{0|(1<<4)}, {20.36*1, 21.33*0}, 1},
....
}
The format for the matrix position used in this array is `{row | (col << 4)}`. The `x` is between (inclusive) 0-224, and `y` is between (inclusive) 0-64. The easiest way to calculate these positions is:
x = 224 / ( NUMBER_OF_ROWS - 1 ) * ROW_POSITION
y = 64 / (NUMBER_OF_COLS - 1 ) * COL_POSITION
Where all variables are decimels/floats.
`modifier` is a boolean, whether or not a certain key is considered a modifier (used in some effects).
## Keycodes
All RGB keycodes are currently shared with the RGBLIGHT system:
* `RGB_TOG` - toggle
* `RGB_MOD` - cycle through modes
* `RGB_HUI` - increase hue
* `RGB_HUD` - decrease hue
* `RGB_SAI` - increase saturation
* `RGB_SAD` - decrease saturation
* `RGB_VAI` - increase value
* `RGB_VAD` - decrease value
* `RGB_SPI` - increase speed effect (no EEPROM support)
* `RGB_SPD` - decrease speed effect (no EEPROM support)
* `RGB_MODE_*` keycodes will generally work, but are not currently mapped to the correct effects for the RGB Matrix system
## RGB Matrix Effects
These are the effects that are currently available:
enum rgb_matrix_effects {
RGB_MATRIX_SOLID_COLOR = 1,
RGB_MATRIX_ALPHAS_MODS,
RGB_MATRIX_DUAL_BEACON,
RGB_MATRIX_GRADIENT_UP_DOWN,
RGB_MATRIX_RAINDROPS,
RGB_MATRIX_CYCLE_ALL,
RGB_MATRIX_CYCLE_LEFT_RIGHT,
RGB_MATRIX_CYCLE_UP_DOWN,
RGB_MATRIX_RAINBOW_BEACON,
RGB_MATRIX_RAINBOW_PINWHEELS,
RGB_MATRIX_RAINBOW_MOVING_CHEVRON,
RGB_MATRIX_JELLYBEAN_RAINDROPS,
#ifdef RGB_MATRIX_KEYPRESSES
RGB_MATRIX_SOLID_REACTIVE,
RGB_MATRIX_SPLASH,
RGB_MATRIX_MULTISPLASH,
RGB_MATRIX_SOLID_SPLASH,
RGB_MATRIX_SOLID_MULTISPLASH,
#endif
RGB_MATRIX_EFFECT_MAX
};
## Custom layer effects
Custom layer effects can be done by defining this in your `<keyboard>.c`:
void rgb_matrix_indicators_kb(void) {
// rgb_matrix_set_color(index, red, green, blue);
}
A similar function works in the keymap as `rgb_matrix_indicators_user`.
## Additional `config.h` Options
#define RGB_MATRIX_KEYPRESSES // reacts to keypresses (will slow down matrix scan by a lot)
#define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (not recommened)
#define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
#define RGB_DISABLE_WHEN_USB_SUSPENDED false // turn off effects when suspended
#define RGB_MATRIX_SKIP_FRAMES 1 // number of frames to skip when displaying animations (0 is full effect) if not defined defaults to 1
## EEPROM storage
The EEPROM for it is currently shared with the RGBLIGHT system (it's generally assumed only one RGB would be used at a time), but could be configured to use its own 32bit address with:
#define EECONFIG_RGB_MATRIX (uint32_t *)16
Where `16` is an unused index from `eeconfig.h`.
## Suspended state
To use the suspend feature, add this to your `<keyboard>.c`:
void suspend_power_down_kb(void)
{
rgb_matrix_set_suspend_state(true);
}
void suspend_wakeup_init_kb(void)
{
rgb_matrix_set_suspend_state(false);
}

View File

@@ -88,11 +88,36 @@ const uint16_t RGBLED_GRADIENT_RANGES[] PROGMEM = {360, 240, 180, 120, 90};
Look in `rgblights.h` for all available functions, but if you want to control all or some LEDs your goto functions are:
```c
rgblight_disable(); // turn all lights off
rgblight_enable(); // turn lights on, based on their previous state (stored in EEPROM)
// turn all lights off (stored in EEPROM)
rgblight_disable();
// turn lights on, based on their previous state (stored in EEPROM)
rgblight_enable();
// turn all lights off (not stored in EEPROM)
rgblight_disable_noeeprom();
// turn lights on, based on their previous state (not stored in EEPROM)
rgblight_enable_noeeprom();
// where r/g/b is a number from 0..255. Turns all the LEDs to this color (ignores mode, not stored in EEPROM).
rgblight_setrgb(r, g, b);
// HSV color control - h is a value from 0..360 and s/v is a value from 0..255 (stored in EEPROM)
rgblight_sethsv(h, s, v);
// HSV color control - h is a value from 0..360 and s/v is a value from 0..255 (not stored in EEPROM)
rgblight_sethsv_noeeprom(h, s, v);
// Sets the mode, if rgb animations are enabled (stored in eeprom)
rgblight_mode(x);
// Sets the mode, if rgb animations are enabled (not stored in eeprom)
rgblight_mode_noeeprom(x);
// MODE 1, solid color
// MODE 2-5, breathing
// MODE 6-8, rainbow mood
// MODE 9-14, rainbow swirl
// MODE 15-20, snake
// MODE 21-23, knight
// MODE 24, xmas
// MODE 25-34, static rainbow
rgblight_setrgb(r, g, b); // where r/g/b is a number from 0..255. Turns all the LEDs to this color
rgblight_sethsv(h, s, v); // HSV color control - h is a value from 0..360 and s/v is a value from 0..255
rgblight_setrgb_at(r,g,b, LED); // control a single LED. 0 <= LED < RGBLED_NUM
rgblight_sethsv_at(h,s,v, LED); // control a single LED. 0 <= LED < RGBLED_NUM
```
@@ -121,12 +146,13 @@ These control the RGB Lighting functionality.
|`RGB_MODE_KNIGHT` |`RGB_M_K` |"Knight Rider" animation mode |
|`RGB_MODE_XMAS` |`RGB_M_X` |Christmas animation mode |
|`RGB_MODE_GRADIENT`|`RGB_M_G` |Static gradient animation mode |
|`RGB_MODE_RGBTEST `|`RGB_M_T` |Red,Green,Blue test animation mode |
note: for backwards compatibility, `RGB_SMOD` is an alias for `RGB_MOD`.
## Hardware Modification
![Planck with RGB Underglow](https://raw.githubusercontent.com/qmk/qmk_firmware/master/keyboards/planck/keymaps/yang/planck-with-rgb-underglow.jpg)
![Planck with RGB Underglow](https://raw.githubusercontent.com/qmk/qmk_firmware/3774a7fcdab5544fc787f4c200be05fcd417e31f/keyboards/planck/keymaps/yang/planck-with-rgb-underglow.jpg)
Here is a quick demo on Youtube (with NPKC KC60) (https://www.youtube.com/watch?v=VKrpPAHlisY).

View File

@@ -6,9 +6,9 @@ Hit the semicolon key once, send a semicolon. Hit it twice, rapidly -- send a co
With this feature one can specify keys that behave differently, based on the amount of times they have been tapped, and when interrupted, they get handled before the interrupter.
To make it clear how this is different from `ACTION_FUNCTION_TAP`, lets explore a certain setup! We want one key to send `Space` on single tap, but `Enter` on double-tap.
To make it clear how this is different from `ACTION_FUNCTION_TAP`, let's explore a certain setup! We want one key to send `Space` on single tap, but `Enter` on double-tap.
With `ACTION_FUNCTION_TAP`, it is quite a rain-dance to set this up, and has the problem that when the sequence is interrupted, the interrupting key will be send first. Thus, `SPC a` will result in `a SPC` being sent, if they are typed within `TAPPING_TERM`. With the tap dance feature, that'll come out as `SPC a`, correctly.
With `ACTION_FUNCTION_TAP`, it is quite a rain-dance to set this up, and has the problem that when the sequence is interrupted, the interrupting key will be sent first. Thus, `SPC a` will result in `a SPC` being sent, if they are typed within `TAPPING_TERM`. With the tap dance feature, that'll come out as `SPC a`, correctly.
The implementation hooks into two parts of the system, to achieve this: into `process_record_quantum()`, and the matrix scan. We need the latter to be able to time out a tap sequence even when a key is not being pressed, so `SPC` alone will time out and register after `TAPPING_TERM` time.
@@ -16,11 +16,13 @@ But lets start with how to use it, first!
First, you will need `TAP_DANCE_ENABLE=yes` in your `rules.mk`, because the feature is disabled by default. This adds a little less than 1k to the firmware size. Next, you will want to define some tap-dance keys, which is easiest to do with the `TD()` macro, that - similar to `F()`, takes a number, which will later be used as an index into the `tap_dance_actions` array.
This array specifies what actions shall be taken when a tap-dance key is in action. Currently, there are three possible options:
This array specifies what actions shall be taken when a tap-dance key is in action. Currently, there are five possible options:
* `ACTION_TAP_DANCE_DOUBLE(kc1, kc2)`: Sends the `kc1` keycode when tapped once, `kc2` otherwise. When the key is held, the appropriate keycode is registered: `kc1` when pressed and held, `kc2` when tapped once, then pressed and held.
* `ACTION_TAP_DANCE_DUAL_ROLE(kc, layer)`: Sends the `kc` keycode when tapped once, or moves to `layer`. (this functions like the `TO` layer keycode).
* `ACTION_TAP_DANCE_FN(fn)`: Calls the specified function - defined in the user keymap - with the final tap count of the tap dance action.
* `ACTION_TAP_DANCE_FN_ADVANCED(on_each_tap_fn, on_dance_finished_fn, on_dance_reset_fn)`: Calls the first specified function - defined in the user keymap - on every tap, the second function on when the dance action finishes (like the previous option), and the last function when the tap dance action resets.
* `ACTION_TAP_DANCE_FN_ADVANCED(on_each_tap_fn, on_dance_finished_fn, on_dance_reset_fn)`: Calls the first specified function - defined in the user keymap - on every tap, the second function when the dance action finishes (like the previous option), and the last function when the tap dance action resets.
* `ACTION_TAP_DANCE_FN_ADVANCED_TIME(on_each_tap_fn, on_dance_finished_fn, on_dance_reset_fn, tap_specific_tapping_term)`: This functions identically to the `ACTION_TAP_DANCE_FN_ADVANCED` function, but uses a custom tapping term for it, instead of the predefined `TAPPING_TERM`.
The first option is enough for a lot of cases, that just want dual roles. For example, `ACTION_TAP_DANCE_DOUBLE(KC_SPC, KC_ENT)` will result in `Space` being sent on single-tap, `Enter` otherwise.

View File

@@ -48,7 +48,7 @@ If you do add a `config,h` file, you want to make sure that it only gets process
#endif // !USERSPACE_CONFIG_H
```
You can use any option hre that you could use in your keymap's `config.h` file. You can find a list of vales [here](07_Reference/Config_Options.md).
You can use any option hre that you could use in your keymap's `config.h` file. You can find a list of vales [here](config_options.md).
## Example
@@ -118,8 +118,8 @@ Additionally, this should flash the newly compiled firmware automatically, using
## Override default userspace
By default the userspace used will be the same as the keymap name. In some situations this isn't desirable. For instance, if you use the [layout](05_Features/Layouts.md) feature you can't use the same name for different keymaps (e.g. ANSI and ISO). You can name your layouts `mylayout-ansi` and `mylayout-iso` and add the following line to your layout's `rules.mk`:
By default the userspace used will be the same as the keymap name. In some situations this isn't desirable. For instance, if you use the [layout](feature_layouts.md) feature you can't use the same name for different keymaps (e.g. ANSI and ISO). You can name your layouts `mylayout-ansi` and `mylayout-iso` and add the following line to your layout's `rules.mk`:
```
USER_NAME := mylayout
```
```

28
docs/features.md Normal file
View File

@@ -0,0 +1,28 @@
# QMK Features
QMK has a staggering number of features for building your keyboard. It can take some time to understand all of them and determine which one will achieve your goal.
* [Advanced Keycodes](feature_advanced_keycodes.md) - Change layers, type shifted keys, and more. Go beyond typing simple characters.
* [Audio](feature_audio.md) - Connect a speaker to your keyboard for audio feedback, midi support, and music mode.
* [Auto Shift](feature_auto_shift.md) - Tap for the normal key, hold slightly longer for its shifted state.
* [Backlight](feature_backlight.md) - LED lighting support for your keyboard.
* [Bootmagic](feature_bootmagic.md) - Adjust the behavior of your keyboard using hotkeys.
* [Dynamic Macros](feature_dynamic_macros.md) - Record and playback macros from the keyboard itself.
* [Key Lock](feature_key_lock.md) - Lock a key in the "down" state.
* [Layouts](feature_layouts.md) - Use one keymap with any keyboard that supports your layout.
* [Leader Key](feature_leader_key.md) - Tap the leader key followed by a sequence to trigger custom behavior.
* [Macros](feature_macros.md) - Send multiple key presses when pressing only one physical key.
* [Mouse keys](feature_mouse_keys.md) - Control your mouse pointer from your keyboard.
* [Pointing Device](feature_pointing_device.md) - Framework for connecting your custom pointing device to your keyboard.
* [PS2 Mouse](feature_ps2_mouse.md) - Driver for connecting a PS/2 mouse directly to your keyboard.
* [RGB Light](feature_rgblight.md) - RGB lighting for your keyboard.
* [RGB Matrix](feature_rgb_matrix.md) - RGB Matrix lights for per key lighting.
* [Space Cadet](feature_space_cadet.md) - Use your left/right shift keys to type parenthesis and brackets.
* [Stenography](feature_stenography.md) - Put your keyboard into Plover mode for stenography use.
* [Swap Hands](feature_swap_hands.md) - Mirror your keyboard for one handed usage.
* [Tap Dance](feature_tap_dance.md) - Make a single key do as many things as you want.
* [Terminal](feature_terminal.md) - CLI interface to the internals of your keyboard.
* [Thermal Printer](feature_thermal_printer.md) - Connect a thermal printer to your keyboard to be able to toggle on a printed log of everything you type.
* [Unicode](feature_unicode.md) - Unicode input support.
* [Userspace](feature_userspace.md) - Share code between different keymaps and keyboards.

View File

@@ -1,89 +0,0 @@
sed -i .bak \
-e s,Getting_Started,01_Getting_Started,g \
-e s,Complete_Newbs_Guide,02_Complete_Newbs_Guide,g \
-e s,FAQ,03_FAQ,g \
-e s,Hardware,04_Hardware,g \
-e s,Features,05_Features,g \
-e s,Keycodes,06_Keycodes,g \
-e s,Reference,07_Reference,g \
-e s,For_Makers_And_Modders,08_For_Makers_And_Modders,g \
-e s,IDEs,09_IDEs,g \
$1
exit 0
sed -i .bak \
-e s,newbs.md,Complete_Newbs_Guide/00_Complete_Newbie\'s_Guide.md,g \
-e s,newbs_building_firmware.md,Complete_Newbs_Guide/02_Building_Your_First_Firmware.md,g \
-e s,newbs_flashing.md,Complete_Newbs_Guide/03_Flashing_Firmware.md,g \
-e s,newbs_testing_debugging.md,Complete_Newbs_Guide/04_Testing_and_Debugging.md,g \
-e s,newbs_getting_started.md,Complete_Newbs_Guide/index.md,g \
-e s,faq_general.md,FAQ/02_General_FAQ.md,g \
-e s,faq_build.md,FAQ/03_Build_Compile_QMK.md,g \
-e s,faq_debug.md,FAQ/04_Debugging_and_Troubleshooting.md,g \
-e s,faq_keymap.md,FAQ/05_Keymaps.md,g \
-e s,faq.md,FAQ/index.md,g \
-e s,feature_advanced_keycodes.md,Features/Advanced_Keycodes.md,g \
-e s,feature_audio.md,Features/Audio.md,g \
-e s,feature_auto_shift.md,Features/Auto_Shift.md,g \
-e s,feature_backlight.md,Features/Backlight.md,g \
-e s,feature_bluetooth.md,Features/Bluetooth.md,g \
-e s,feature_bootmagic.md,Features/Bootmagic.md,g \
-e s,feature_command.md,Features/Command.md,g \
-e s,feature_dynamic_macros.md,Features/Dynamic_Macros.md,g \
-e s,feature_grave_esc.md,Features/Grave_Escape.md,g \
-e s,feature_key_lock.md,Features/Key_Lock.md,g \
-e s,feature_layouts.md,Features/Layouts.md,g \
-e s,feature_leader_key.md,Features/Leader_Key.md,g \
-e s,feature_macros.md,Features/Macros.md,g \
-e s,feature_mouse_keys.md,Features/Mouse_Keys.md,g \
-e s,feature_ps2_mouse.md,Features/PS_2_Mouse.md,g \
-e s,feature_pointing_device.md,Features/Pointing_Device.md,g \
-e s,feature_rgblight.md,Features/RGB_Lighting.md,g \
-e s,feature_space_cadet.md,Features/Space_Cadet_Shift.md,g \
-e s,feature_space_shift_cadet.md,Features/Space_Cadet_Shift_Enter.md,g \
-e s,feature_stenography.md,Features/Stenography.md,g \
-e s,feature_swap_hands.md,Features/Swap_Hands.md,g \
-e s,feature_tap_dance.md,Features/Tap_Dance.md,g \
-e s,feature_terminal.md,Features/Terminal.md,g \
-e s,feature_thermal_printer.md,Features/Thermal_Printer.md,g \
-e s,feature_unicode.md,Features/Unicode.md,g \
-e s,feature_userspace.md,Features/Userspace.md,g \
-e s,features.md,Features/index.html,g \
-e s,hand_wire.md,For_Makers_And_Modders/Hand_Wiring_Guide.md,g \
-e s,isp_flashing_guide.md,For_Makers_And_Modders/ISP_Flashing_Guide.md,g \
-e s,how_keyboards_work.md,For_a_Deeper_Understanding/How_Keyboards_Work.md,g \
-e s,understanding_qmk.md,For_a_Deeper_Understanding/Understanding_QMK.md,g \
-e s,getting_started_vagrant.md,Getting_Started/02_Vagrant.md,g \
-e s,getting_started_make_guide.md,Getting_Started/03_Build_Compile_Instructions.md,g \
-e s,flashing.md,Getting_Started/04_Flashing_Firmware.md,g \
-e s,contributing.md,Getting_Started/05_Contributing.md,g \
-e s,getting_started_github.md,Getting_Started/06_How_to_Use_GitHub.md,g \
-e s,getting_started_getting_help.md,Getting_Started/07_Getting_Help.md,g \
-e s,getting_started_introduction.md,Getting_Started/index.html,g \
-e s,getting_started_build_tools.md,Getting_Started/index.md,g \
-e s,hardware_avr.md,Hardware/02_AVR_Processors.md,g \
-e s,hardware_drivers.md,Hardware/04_Drivers.md,g \
-e s,hardware.md,Hardware/index.md,g \
-e s,eclipse.md,IDEs/Eclipse.md,g \
-e s,internals_defines.md,Internals/internals_defines.md,g \
-e s,internals_input_callback_reg.md,Internals/internals_input_callback_reg.md,g \
-e s,internals_midi_device.md,Internals/internals_midi_device.md,g \
-e s,internals_midi_device_setup_process.md,Internals/internals_midi_device_setup_process.md,g \
-e s,internals_midi_util.md,Internals/internals_midi_util.md,g \
-e s,internals_send_functions.md,Internals/internals_send_functions.md,g \
-e s,internals_sysex_tools.md,Internals/internals_sysex_tools.md,g \
-e s,keycodes_basic.md,Keycodes/Basic.md,g \
-e s,quantum_keycodes.md,Keycodes/Quantum_Keycodes.md,g \
-e s,keycodes_us_ansi_shifted.md,Keycodes/US_ANSI_Shifted_keys.md,g \
-e s,keycodes.md,Keycodes/index.md,g \
-e s,hardware_keyboard_guidelines.md,Reference/01_Keyboard_Guidelines.md,g \
-e s,compatible_microcontrollers.md,Reference/Compatable_Microcontrollers.md,g \
-e s,config_options.md,Reference/Config_Options.md,g \
-e s,custom_quantum_functions.md,Reference/Custom_Code.md,g \
-e s,documentation_best_practices.md,Reference/Documentation_Best_Practices.md,g \
-e s,documentation_templates.md,Reference/Documentation_Templates.md,g \
-e s,reference_glossary.md,Reference/Glossary.md,g \
-e s,keymap.md,Reference/Keymap_Overview.md,g \
-e s,unit_testing.md,Reference/Unit_Testing.md,g \
-e s,README.md,index.md,g \
$1

View File

@@ -4,6 +4,8 @@ This page describes setting up the build environment for QMK. These instructions
<!-- FIXME: We should have ARM instructions somewhere. -->
Note: If it is your first time here, Check out the "Complete Newbs guide" instead
## Linux
To ensure you are always up to date, you can just run `sudo util/install_dependencies.sh`. That should always install all the dependencies needed. **This will run `apt-get upgrade`.**
@@ -139,4 +141,4 @@ docker run -e keymap=default -e keyboard=ergodox_ez --rm -v D:/Users/Sacapuces/D
This will compile the targeted keyboard/keymap and leave it in your QMK directory for you to flash.
## Vagrant
If you have any problems building the firmware, you can try using a tool called Vagrant. It will set up a virtual computer with a known configuration that's ready-to-go for firmware building. OLKB does NOT host the files for this virtual computer. Details on how to set up Vagrant are in the [vagrant guide](01_Getting_Started/01_Install_Build_Tools/Vagrant.md).
If you have any problems building the firmware, you can try using a tool called Vagrant. It will set up a virtual computer with a known configuration that's ready-to-go for firmware building. OLKB does NOT host the files for this virtual computer. Details on how to set up Vagrant are in the [vagrant guide](getting_started_vagrant.md).

View File

@@ -2,9 +2,7 @@
Github can be a little tricky to those that aren't familiar with it - this guide will walk through each step of forking, cloning, and submitting a pull request with QMK.
{% hint style='info' %}
This guide assumes you're somewhat comfortable with running things at the command line, and have git installed on your system.
{% endhint %}
?> This guide assumes you're somewhat comfortable with running things at the command line, and have git installed on your system.
Start on the [QMK Github page](https://github.com/qmk/qmk_firmware), and you'll see a button in the upper right that says "Fork":

View File

@@ -14,7 +14,7 @@ The full syntax of the `make` command is `<keyboard_folder>:<keymap>:<target>`,
The `<target>` means the following
* If no target is given, then it's the same as `all` below
* `all` compiles as many keyboard/revision/keymap combinations as specified. For example, `make planck/rev4:default` will generate a single .hex, while `make planck/rev4:all` will generate a hex for every keymap available to the planck.
* `dfu`, `teensy` or `dfu-util`, compile and upload the firmware to the keyboard. If the compilation fails, then nothing will be uploaded. The programmer to use depends on the keyboard. For most keyboards it's `dfu`, but for ChibiOS keyboards you should use `dfu-util`, and `teensy` for standard Teensys. To find out which command you should use for your keyboard, check the keyboard specific readme.
* `dfu`, `teensy`, `avrdude` or `dfu-util`, compile and upload the firmware to the keyboard. If the compilation fails, then nothing will be uploaded. The programmer to use depends on the keyboard. For most keyboards it's `dfu`, but for ChibiOS keyboards you should use `dfu-util`, and `teensy` for standard Teensys. To find out which command you should use for your keyboard, check the keyboard specific readme.
* **Note**: some operating systems need root access for these commands to work, so in that case you need to run for example `sudo make planck/rev4:default:dfu`.
* `clean`, cleans the build output folders to make sure that everything is built from scratch. Run this before normal compilation if you have some unexplainable problems.
@@ -113,7 +113,7 @@ This allows you to interface with a Bluefruit EZ-key to send keycodes wirelessly
`AUDIO_ENABLE`
This allows you output audio on the C6 pin (needs abstracting). See the [audio page](05_Features/Audio.md) for more information.
This allows you output audio on the C6 pin (needs abstracting). See the [audio page](feature_audio.md) for more information.
`FAUXCLICKY_ENABLE`
@@ -121,7 +121,7 @@ Uses buzzer to emulate clicky switches. A cheap imitation of the Cherry blue swi
`VARIABLE_TRACE`
Use this to debug changes to variable values, see the [tracing variables](07_Reference/Unit_Testing.md#tracing-variables) section of the Unit Testing page for more information.
Use this to debug changes to variable values, see the [tracing variables](unit_testing.md#tracing-variables) section of the Unit Testing page for more information.
`API_SYSEX_ENABLE`
@@ -131,7 +131,7 @@ This consumes about 5390 bytes.
`KEY_LOCK_ENABLE`
This enables [key lock](05_Features/Key_Lock.md). This consumes an additional 260 bytes.
This enables [key lock](feature_key_lock.md). This consumes an additional 260 bytes.
## Customizing Makefile Options on a Per-Keymap Basis

View File

@@ -298,13 +298,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
```
Note that the layout of the keycodes is similar to the physical layout of our keyboard - this make it much easier to see what's going on. A lot of the keycodes should be fairly obvious, but for a full list of them, check out [Keycodes](06_Keycodes/index.md) - there are also a lot of aliases to condense your keymap file.
Note that the layout of the keycodes is similar to the physical layout of our keyboard - this make it much easier to see what's going on. A lot of the keycodes should be fairly obvious, but for a full list of them, check out [Keycodes](keycodes.md) - there are also a lot of aliases to condense your keymap file.
It's also important to use the `KEYMAP` function we defined earlier - this is what allows the firmware to associate our intended readable keymap with the actual wiring.
## Compiling Your Firmware
After you've written out your entire keymap, you're ready to get the firmware compiled and onto your Teensy. Before compiling, you'll need to get your [development environment set-up](01_Getting_Started/index.md) - you can skip the dfu-programmer instructions, but you'll need to download and install the [Teensy Loader](https://www.pjrc.com/teensy/loader.html) to get the firmware on your Teensy.
After you've written out your entire keymap, you're ready to get the firmware compiled and onto your Teensy. Before compiling, you'll need to get your [development environment set-up](getting_started_build_tools.md) - you can skip the dfu-programmer instructions, but you'll need to download and install the [Teensy Loader](https://www.pjrc.com/teensy/loader.html) to get the firmware on your Teensy.
Once everything is installed, running `make` in the terminal should get you some output, and eventually a `<project_name>.hex` file in that folder. If you're having trouble with this step, see the end of the guide for the trouble-shooting section.

View File

@@ -2,7 +2,7 @@
QMK runs on a variety of hardware. If your processor can be targeted by [LUFA](http://www.fourwalledcubicle.com/LUFA.php) or [ChibiOS](http://www.chibios.com) you can probably get QMK running on it. This section explores getting QMK running on, and communicating with, hardware of all kinds.
* [Keyboard Guidelines](07_Reference/01_Keyboard_Guidelines.md)
* [AVR Processors](04_Hardware/02_AVR_Processors.md)
* [Keyboard Guidelines](hardware_keyboard_guidelines.md)
* [AVR Processors](hardware_avr.md)
* ARM Processors (TBD)
* [Drivers](04_Hardware/04_Drivers.md)
* [Drivers](hardware_drivers.md)

View File

@@ -2,7 +2,7 @@
This page describes the support for for AVR processors in QMK. AVR processors include the atmega32u4, atmega32u2, at90usb1286, and other processors from Atmel Corporation. AVR processors are 8-bit MCU's that are designed to be easy to work with. The most common AVR processors in keyboards have on-board USB and plenty of GPIO for supporting large keyboard matrices. They are the most popular MCU for use in keyboards today.
If you have not yet you should read the [Keyboard Guidelines](07_Reference/01_Keyboard_Guidelines.md) to get a sense of how keyboards fit into QMK.
If you have not yet you should read the [Keyboard Guidelines](hardware_keyboard_guidelines.md) to get a sense of how keyboards fit into QMK.
## Adding Your AVR Keyboard to QMK
@@ -20,15 +20,15 @@ This will create all the files needed to support your new keyboard, and populate
## `readme.md`
This is where you'll describe your keyboard. Please follow the [Keyboard Readme Template](07_Reference/Documentation_Templates.md#keyboard-readmemd-template) when writing your `readme.md`. You're encouraged to place an image at the top of your `readme.md`, please use an external service such as [Imgur](http://imgur.com) to host the images.
This is where you'll describe your keyboard. Please follow the [Keyboard Readme Template](documentation_templates.md#keyboard-readmemd-template) when writing your `readme.md`. You're encouraged to place an image at the top of your `readme.md`, please use an external service such as [Imgur](http://imgur.com) to host the images.
## `<keyboard>.c`
This is where all the custom logic for your keyboard goes. Many keyboards do not need to put anything at all in here. You can learn more about writing custom logic in [Custom Quantum Functions](07_Reference/Custom_Code.md).
This is where all the custom logic for your keyboard goes. Many keyboards do not need to put anything at all in here. You can learn more about writing custom logic in [Custom Quantum Functions](custom_quantum_functions.md).
## `<keyboard>.h`
This is the file you define your [Layout Macro(s)](05_Features/Layouts.md) in. At minimum you should have a `#define LAYOUT` for your keyboard that looks something like this:
This is the file you define your [Layout Macro(s)](feature_layouts.md) in. At minimum you should have a `#define LAYOUT` for your keyboard that looks something like this:
```
#define LAYOUT( \
@@ -48,7 +48,7 @@ The physical matrix (the second half) must have a number of rows equaling `MATRI
## `config.h`
The `config.h` file is where you configure the hardware and feature set for your keyboard. There are a lot of options that can be placed in that file, too many to list there. For a complete overview of available options see the [Config Options](07_Reference/Config_Options.md) page.
The `config.h` file is where you configure the hardware and feature set for your keyboard. There are a lot of options that can be placed in that file, too many to list there. For a complete overview of available options see the [Config Options](config_options.md) page.
### Hardware Configuration
@@ -66,9 +66,7 @@ Do change the `MANUFACTURER`, `PRODUCT`, and `DESCRIPTION` lines to accurately r
#define DESCRIPTION A custom keyboard
```
{% hint style='info' %}
Note: On Windows and macOS the `MANUFACTURER`, `PRODUCT`, and `DESCRIPTION` fields will be displayed in the list of USB devices. On Linux these values will not be visible in `lsusb`, since Linux takes that information from the list published by the USB-IF.
{% endhint %}
?> Note: On Windows and macOS the `MANUFACTURER`, `PRODUCT`, and `DESCRIPTION` fields will be displayed in the list of USB devices. On Linux these values will not be visible in `lsusb`, since Linux takes that information from the list published by the USB-IF.
### Keyboard Matrix Configuration
@@ -97,7 +95,7 @@ Finally, you can specify the direction your diodes point. This can be `COL2ROW`,
### Backlight Configuration
By default QMK supports backlighting on pins `B5`, `B6`, and `B7`. If you are using one of those you can simply enable it here. For more details see the [Backlight Documentation](05_Features/Backlight.md).
By default QMK supports backlighting on pins `B5`, `B6`, and `B7`. If you are using one of those you can simply enable it here. For more details see the [Backlight Documentation](feature_backlight.md).
```
#define BACKLIGHT_PIN B7
@@ -107,12 +105,12 @@ By default QMK supports backlighting on pins `B5`, `B6`, and `B7`. If you are us
```
{% hint style='info' %}
You can use backlighting on any pin you like, but you will have to do more work to support that. See the [Backlight Documentation](05_Features/Backlight.md) for more details.
You can use backlighting on any pin you like, but you will have to do more work to support that. See the [Backlight Documentation](feature_backlight.md) for more details.
{% endhint %}
### Other Configuration Options
There are a lot of features that can be configured or tuned in `config.h`. You should see the [Config Options](07_Reference/Config_Options.md) page for more details.
There are a lot of features that can be configured or tuned in `config.h`. You should see the [Config Options](config_options.md) page for more details.
## `rules.mk`
@@ -154,4 +152,4 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096
### Build Options
There are a number of features that can be turned on or off in `rules.mk`. See the [Config Options](07_Reference/Config_Options.md#feature-options) page for a detailed list and description.
There are a number of features that can be turned on or off in `rules.mk`. See the [Config Options](config_options.md#feature-options) page for a detailed list and description.

View File

@@ -24,4 +24,4 @@ You can make use of uGFX within QMK to drive character and graphic LCD's, LED ar
## WS2812 (AVR Only)
Support for WS2811/WS2812{a,b,c} LED's. For more information see the [RGB Light](05_Features/RGB_Lighting.md) page.
Support for WS2811/WS2812{a,b,c} LED's. For more information see the [RGB Light](feature_rgblight.md) page.

View File

@@ -8,7 +8,7 @@ All names should be lowercase alphanumeric, and separated by an underscore (`_`)
## `readme.md`
All projects need to have a `readme.md` file that explains what the keyboard is, who made it, where it is available, and links to more information. Please follow the [published template](07_Reference/Documentation_Templates.md#keyboard-readmemd-template).
All projects need to have a `readme.md` file that explains what the keyboard is, who made it, where it is available, and links to more information. Please follow the [published template](documentation_templates.md#keyboard-readmemd-template).
## Image/Hardware Files
@@ -22,7 +22,7 @@ Given the amount of functionality that QMK exposes it's very easy to confuse new
### Bootmagic and Command
[Bootmagic](05_Features/Bootmagic.md) and [Command](05_Features/Command.md) are two related features that allow a user to control their keyboard in non-obvious ways. We recommend you think long and hard about if you're going to enable either feature, and how you will expose this functionality. Keep in mind that users who want this functionality can enable it in their personal keymaps without affecting all the novice users who may be using your keyboard as their first programmable board.
[Bootmagic](feature_bootmagic.md) and [Command](feature_command.md) are two related features that allow a user to control their keyboard in non-obvious ways. We recommend you think long and hard about if you're going to enable either feature, and how you will expose this functionality. Keep in mind that users who want this functionality can enable it in their personal keymaps without affecting all the novice users who may be using your keyboard as their first programmable board.
By far the most common problem new users encounter is accidentally triggering Bootmagic while they're plugging in their keyboard. They're holding the keyboard by the bottom, unknowingly pressing in alt and spacebar, and then they find that these keys have been swapped on them. We recommend leaving this feature disabled by default, but if you do turn it on consider setting `BOOTMAGIC_KEY_SALT` to a key that is hard to press while plugging your keyboard in.
@@ -30,7 +30,7 @@ If your keyboard does not have 2 shift keys you should provide a working default
## Custom Keyboard Programming
As documented on [Customizing Functionality](07_Reference/Custom_Code.md) you can define custom functions for your keyboard. Please keep in mind that your users may want to customize that behavior as well, and make it possible for them to do that. If you are providing a custom function, for example `process_record_kb()`, make sure that your function calls the `_user()` version of the call too. You should also take into account the return value of the `_user()` version, and only run your custom code if the user returns `true`.
As documented on [Customizing Functionality](custom_quantum_functions.md) you can define custom functions for your keyboard. Please keep in mind that your users may want to customize that behavior as well, and make it possible for them to do that. If you are providing a custom function, for example `process_record_kb()`, make sure that your function calls the `_user()` version of the call too. You should also take into account the return value of the `_user()` version, and only run your custom code if the user returns `true`.
## Keyboard Metadata
@@ -47,16 +47,6 @@ The `info.json` file is a JSON formatted dictionary with the following keys avai
* Example: `Clueboard 66%`
* `url`
* A URL to the keyboard's product page, [QMK.fm/keyboards](https://qmk.fm/keyboards) page, or other page describing information about the keyboard.
* `bootloader`
* What bootloader this keyboard uses. Available options:
* `atmel-dfu`
* `kiibohd-dfu-util`
* `lufa-dfu`
* `qmk-dfu`
* `stm32-dfu-util`
* `caterina`
* `halfkay`
* `bootloadHID`
* `maintainer`
* GitHub username of the maintainer, or `qmk` for community maintained boards
* `width`
@@ -143,4 +133,4 @@ If your keyboard makes use of the [uGFX](https://ugfx.io) features within QMK yo
## Technical Details
If you're looking for more information on making your keyboard work with QMK, [check out the hardware section](04_Hardware/index.md)!
If you're looking for more information on making your keyboard work with QMK, [check out the hardware section](hardware.md)!

View File

@@ -51,7 +51,7 @@ layout is set to QWERTY, a sample of the matching table is as follow:
## Back to the Firmware
As the layout is generally fixed (unless you create your own), the firmware can actually call a keycode by its layout name directly to ease things for you. This is exactly what is done here with `KC_A` actually representing `0x04` in QWERTY. The full list can be found in [keycodes](06_Keycodes/index.md).
As the layout is generally fixed (unless you create your own), the firmware can actually call a keycode by its layout name directly to ease things for you. This is exactly what is done here with `KC_A` actually representing `0x04` in QWERTY. The full list can be found in [keycodes](keycodes.md).
## List of Characters You Can Send

46
docs/index.html Normal file
View File

@@ -0,0 +1,46 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>QMK Firmware</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta name="description" content="Description">
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<link rel="stylesheet" href="//unpkg.com/docsify/lib/themes/vue.css" title="light">
<link rel="stylesheet" href="qmk.css" title="dark" disabled>
<link rel="stylesheet" href="sidebar.css" />
</head>
<body>
<div id="app"></div>
<script>
window.$docsify = {
name: 'QMK Firmware',
nameLink: 'https://qmk.fm/',
repo: 'qmk/qmk_firmware',
loadSidebar: true,
auto2top: true,
formatUpdated: '{YYYY}/{MM}/{DD} {HH}:{mm}',
search: {
paths: 'auto',
placeholder: 'Search Documentation...',
noData: 'We could not find any documents matching your search.',
depth: 6
}
}
</script>
<script src="//unpkg.com/docsify/lib/docsify.min.js"></script>
<script src="//unpkg.com/docsify/lib/plugins/search.min.js"></script>
<script src="//unpkg.com/docsify/lib/plugins/emoji.min.js"></script>
<script src="//unpkg.com/prismjs/components/prism-bash.min.js"></script>
<script src="//unpkg.com/prismjs/components/prism-c.min.js"></script>
<script src="//unpkg.com/prismjs/components/prism-cpp.min.js"></script>
<script src="//unpkg.com/prismjs/components/prism-json.min.js"></script>
<script src="//unpkg.com/prismjs/components/prism-makefile.min.js"></script>
<script>
// Register the offline cache worker
if (typeof navigator.serviceWorker !== 'undefined') {
navigator.serviceWorker.register('sw.js')
}
</script>
</body>
</html>

View File

@@ -0,0 +1,143 @@
# group `midi_device` {#group__midi__device}
You use the functions when you are implementing your own midi device.
You set a send function to actually send bytes via your device, this method is called when you call a send function with this device, for instance midi_send_cc
You use the midi_device_input to process input data from the device and pass it through the device's associated callbacks.
You use the midi_device_set_pre_input_process_func if you want to have a function called at the beginning of the device's process function, generally to poll for input and pass that into midi_device_input
## Summary
Members | Descriptions
--------------------------------|---------------------------------------------
`define `[`MIDI_INPUT_QUEUE_LENGTH`](#group__midi__device_1ga4aaa419caebdca2bbdfc1331e79781a8) |
`enum `[`input_state_t`](#group__midi__device_1gac203e877d3df4275ceb8e7180a61f621) |
`public void `[`midi_device_input`](#group__midi__device_1gad8d3db8eb35d9cfa51ef036a0a9d70db)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t cnt,uint8_t * input)` | Process input bytes. This function parses bytes and calls the appropriate callbacks associated with the given device. You use this function if you are creating a custom device and you want to have midi input.
`public void `[`midi_device_set_send_func`](#group__midi__device_1ga59f5a46bdd4452f186cc73d9e96d4673)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_var_byte_func_t send_func)` | Set the callback function that will be used for sending output data bytes. This is only used if you're creating a custom device. You'll most likely want the callback function to disable interrupts so that you can call the various midi send functions without worrying about locking.
`public void `[`midi_device_set_pre_input_process_func`](#group__midi__device_1ga4de0841b87c04fc23cb56b6451f33b69)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_no_byte_func_t pre_process_func)` | Set a callback which is called at the beginning of the midi_device_process call. This can be used to poll for input data and send the data through the midi_device_input function. You'll probably only use this if you're creating a custom device.
`struct `[`_midi_device`](docs/api_midi_device.md#struct__midi__device) | This structure represents the input and output functions and processing data for a midi device.
## Members
#### `define `[`MIDI_INPUT_QUEUE_LENGTH`](#group__midi__device_1ga4aaa419caebdca2bbdfc1331e79781a8) {#group__midi__device_1ga4aaa419caebdca2bbdfc1331e79781a8}
#### `enum `[`input_state_t`](#group__midi__device_1gac203e877d3df4275ceb8e7180a61f621) {#group__midi__device_1gac203e877d3df4275ceb8e7180a61f621}
Values | Descriptions
--------------------------------|---------------------------------------------
IDLE |
ONE_BYTE_MESSAGE |
TWO_BYTE_MESSAGE |
THREE_BYTE_MESSAGE |
SYSEX_MESSAGE |
#### `public void `[`midi_device_input`](#group__midi__device_1gad8d3db8eb35d9cfa51ef036a0a9d70db)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t cnt,uint8_t * input)` {#group__midi__device_1gad8d3db8eb35d9cfa51ef036a0a9d70db}
Process input bytes. This function parses bytes and calls the appropriate callbacks associated with the given device. You use this function if you are creating a custom device and you want to have midi input.
#### Parameters
* `device` the midi device to associate the input with
* `cnt` the number of bytes you are processing
* `input` the bytes to process
#### `public void `[`midi_device_set_send_func`](#group__midi__device_1ga59f5a46bdd4452f186cc73d9e96d4673)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_var_byte_func_t send_func)` {#group__midi__device_1ga59f5a46bdd4452f186cc73d9e96d4673}
Set the callback function that will be used for sending output data bytes. This is only used if you're creating a custom device. You'll most likely want the callback function to disable interrupts so that you can call the various midi send functions without worrying about locking.
#### Parameters
* `device` the midi device to associate this callback with
* `send_func` the callback function that will do the sending
#### `public void `[`midi_device_set_pre_input_process_func`](#group__midi__device_1ga4de0841b87c04fc23cb56b6451f33b69)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_no_byte_func_t pre_process_func)` {#group__midi__device_1ga4de0841b87c04fc23cb56b6451f33b69}
Set a callback which is called at the beginning of the midi_device_process call. This can be used to poll for input data and send the data through the midi_device_input function. You'll probably only use this if you're creating a custom device.
#### Parameters
* `device` the midi device to associate this callback with
* `midi_no_byte_func_t` the actual callback function
# struct `_midi_device` {#struct__midi__device}
This structure represents the input and output functions and processing data for a midi device.
A device can represent an actual physical device [serial port, usb port] or something virtual. You should not need to modify this structure directly.
## Summary
Members | Descriptions
--------------------------------|---------------------------------------------
`public midi_var_byte_func_t `[`send_func`](docs/api_midi_device.md#struct__midi__device_1a25d4c94b4bbccd5b98f1032b469f3ff9) |
`public midi_three_byte_func_t `[`input_cc_callback`](docs/api_midi_device.md#struct__midi__device_1a6da5236c1bc73877728df92d213a78d1) |
`public midi_three_byte_func_t `[`input_noteon_callback`](docs/api_midi_device.md#struct__midi__device_1aa10b15cf1a7fb825a5df0d2abbe34a1c) |
`public midi_three_byte_func_t `[`input_noteoff_callback`](docs/api_midi_device.md#struct__midi__device_1aaf290043078534d3a5a0ea4c840eba84) |
`public midi_three_byte_func_t `[`input_aftertouch_callback`](docs/api_midi_device.md#struct__midi__device_1acb0b4901c545cec4b28b126f2d8c315f) |
`public midi_three_byte_func_t `[`input_pitchbend_callback`](docs/api_midi_device.md#struct__midi__device_1a305fea672caeb996f2233bf8cd2bef18) |
`public midi_three_byte_func_t `[`input_songposition_callback`](docs/api_midi_device.md#struct__midi__device_1a5f3f13638b3fef3fc561ed1bf301d586) |
`public midi_two_byte_func_t `[`input_progchange_callback`](docs/api_midi_device.md#struct__midi__device_1adaf1da617c9a10a9dcad00ab1959d3da) |
`public midi_two_byte_func_t `[`input_chanpressure_callback`](docs/api_midi_device.md#struct__midi__device_1ab7ca2925c539915d43974eff604d85f7) |
`public midi_two_byte_func_t `[`input_songselect_callback`](docs/api_midi_device.md#struct__midi__device_1a89bed8a5a55376120cfc0a62b42f057f) |
`public midi_two_byte_func_t `[`input_tc_quarterframe_callback`](docs/api_midi_device.md#struct__midi__device_1ad9813e75d22e284f9f65a907d20600f0) |
`public midi_one_byte_func_t `[`input_realtime_callback`](docs/api_midi_device.md#struct__midi__device_1a9448eba4afb7e43650434748db3777be) |
`public midi_one_byte_func_t `[`input_tunerequest_callback`](docs/api_midi_device.md#struct__midi__device_1a0cb8fd53e00cf1d4202d4fa04d038e8d) |
`public midi_sysex_func_t `[`input_sysex_callback`](docs/api_midi_device.md#struct__midi__device_1afff9a0ce641762aaef24c1e6953ec9a2) |
`public midi_var_byte_func_t `[`input_fallthrough_callback`](docs/api_midi_device.md#struct__midi__device_1abb974ec6d734001b4a0e370f292be503) |
`public midi_var_byte_func_t `[`input_catchall_callback`](docs/api_midi_device.md#struct__midi__device_1aae0d535129d4fd650edc98eb3f7584f8) |
`public midi_no_byte_func_t `[`pre_input_process_callback`](docs/api_midi_device.md#struct__midi__device_1aeb0bb8923d66c23d874e177dc4265754) |
`public uint8_t `[`input_buffer`](docs/api_midi_device.md#struct__midi__device_1a7c5684857d6af4ebc4dc12da27bd6b2a) |
`public input_state_t `[`input_state`](docs/api_midi_device.md#struct__midi__device_1a69a687d2d1c449ec15a11c07a5722e39) |
`public uint16_t `[`input_count`](docs/api_midi_device.md#struct__midi__device_1a68dea8e7b6151e89c85c95caa612ee5d) |
`public uint8_t `[`input_queue_data`](docs/api_midi_device.md#struct__midi__device_1ada41de021135dc423abedcbb30f366ff) |
`public `[`byteQueue_t`](#structbyte_queue__t)` `[`input_queue`](#struct__midi__device_1a49c8538a8a02193c58e28a56eb695d8f) |
## Members
#### `public midi_var_byte_func_t `[`send_func`](docs/api_midi_device.md#struct__midi__device_1a25d4c94b4bbccd5b98f1032b469f3ff9) {#struct__midi__device_1a25d4c94b4bbccd5b98f1032b469f3ff9}
#### `public midi_three_byte_func_t `[`input_cc_callback`](docs/api_midi_device.md#struct__midi__device_1a6da5236c1bc73877728df92d213a78d1) {#struct__midi__device_1a6da5236c1bc73877728df92d213a78d1}
#### `public midi_three_byte_func_t `[`input_noteon_callback`](docs/api_midi_device.md#struct__midi__device_1aa10b15cf1a7fb825a5df0d2abbe34a1c) {#struct__midi__device_1aa10b15cf1a7fb825a5df0d2abbe34a1c}
#### `public midi_three_byte_func_t `[`input_noteoff_callback`](docs/api_midi_device.md#struct__midi__device_1aaf290043078534d3a5a0ea4c840eba84) {#struct__midi__device_1aaf290043078534d3a5a0ea4c840eba84}
#### `public midi_three_byte_func_t `[`input_aftertouch_callback`](docs/api_midi_device.md#struct__midi__device_1acb0b4901c545cec4b28b126f2d8c315f) {#struct__midi__device_1acb0b4901c545cec4b28b126f2d8c315f}
#### `public midi_three_byte_func_t `[`input_pitchbend_callback`](docs/api_midi_device.md#struct__midi__device_1a305fea672caeb996f2233bf8cd2bef18) {#struct__midi__device_1a305fea672caeb996f2233bf8cd2bef18}
#### `public midi_three_byte_func_t `[`input_songposition_callback`](docs/api_midi_device.md#struct__midi__device_1a5f3f13638b3fef3fc561ed1bf301d586) {#struct__midi__device_1a5f3f13638b3fef3fc561ed1bf301d586}
#### `public midi_two_byte_func_t `[`input_progchange_callback`](docs/api_midi_device.md#struct__midi__device_1adaf1da617c9a10a9dcad00ab1959d3da) {#struct__midi__device_1adaf1da617c9a10a9dcad00ab1959d3da}
#### `public midi_two_byte_func_t `[`input_chanpressure_callback`](docs/api_midi_device.md#struct__midi__device_1ab7ca2925c539915d43974eff604d85f7) {#struct__midi__device_1ab7ca2925c539915d43974eff604d85f7}
#### `public midi_two_byte_func_t `[`input_songselect_callback`](docs/api_midi_device.md#struct__midi__device_1a89bed8a5a55376120cfc0a62b42f057f) {#struct__midi__device_1a89bed8a5a55376120cfc0a62b42f057f}
#### `public midi_two_byte_func_t `[`input_tc_quarterframe_callback`](docs/api_midi_device.md#struct__midi__device_1ad9813e75d22e284f9f65a907d20600f0) {#struct__midi__device_1ad9813e75d22e284f9f65a907d20600f0}
#### `public midi_one_byte_func_t `[`input_realtime_callback`](docs/api_midi_device.md#struct__midi__device_1a9448eba4afb7e43650434748db3777be) {#struct__midi__device_1a9448eba4afb7e43650434748db3777be}
#### `public midi_one_byte_func_t `[`input_tunerequest_callback`](docs/api_midi_device.md#struct__midi__device_1a0cb8fd53e00cf1d4202d4fa04d038e8d) {#struct__midi__device_1a0cb8fd53e00cf1d4202d4fa04d038e8d}
#### `public midi_sysex_func_t `[`input_sysex_callback`](docs/api_midi_device.md#struct__midi__device_1afff9a0ce641762aaef24c1e6953ec9a2) {#struct__midi__device_1afff9a0ce641762aaef24c1e6953ec9a2}
#### `public midi_var_byte_func_t `[`input_fallthrough_callback`](docs/api_midi_device.md#struct__midi__device_1abb974ec6d734001b4a0e370f292be503) {#struct__midi__device_1abb974ec6d734001b4a0e370f292be503}
#### `public midi_var_byte_func_t `[`input_catchall_callback`](docs/api_midi_device.md#struct__midi__device_1aae0d535129d4fd650edc98eb3f7584f8) {#struct__midi__device_1aae0d535129d4fd650edc98eb3f7584f8}
#### `public midi_no_byte_func_t `[`pre_input_process_callback`](docs/api_midi_device.md#struct__midi__device_1aeb0bb8923d66c23d874e177dc4265754) {#struct__midi__device_1aeb0bb8923d66c23d874e177dc4265754}
#### `public uint8_t `[`input_buffer`](docs/api_midi_device.md#struct__midi__device_1a7c5684857d6af4ebc4dc12da27bd6b2a) {#struct__midi__device_1a7c5684857d6af4ebc4dc12da27bd6b2a}
#### `public input_state_t `[`input_state`](docs/api_midi_device.md#struct__midi__device_1a69a687d2d1c449ec15a11c07a5722e39) {#struct__midi__device_1a69a687d2d1c449ec15a11c07a5722e39}
#### `public uint16_t `[`input_count`](docs/api_midi_device.md#struct__midi__device_1a68dea8e7b6151e89c85c95caa612ee5d) {#struct__midi__device_1a68dea8e7b6151e89c85c95caa612ee5d}
#### `public uint8_t `[`input_queue_data`](docs/api_midi_device.md#struct__midi__device_1ada41de021135dc423abedcbb30f366ff) {#struct__midi__device_1ada41de021135dc423abedcbb30f366ff}
#### `public `[`byteQueue_t`](#structbyte_queue__t)` `[`input_queue`](#struct__midi__device_1a49c8538a8a02193c58e28a56eb695d8f) {#struct__midi__device_1a49c8538a8a02193c58e28a56eb695d8f}

101
docs/isp_flashing_guide.md Normal file
View File

@@ -0,0 +1,101 @@
# ISP Flashing Guide
If you're having trouble flashing/erasing your board, and running into cryptic error messages like any of the following:
libusb: warning [darwin_transfer_status] transfer error: timed out
dfu.c:844: -ETIMEDOUT: Transfer timed out, NAK 0xffffffc4 (-60)
atmel.c:1627: atmel_flash: flash data dfu_download failed.
atmel.c:1629: Expected message length of 1072, got -60.
atmel.c:1434: Error flashing the block: err -2.
ERROR
Memory write error, use debug for more info.
commands.c:360: Error writing memory data. (err -4)
dfu.c:844: -EPIPE: a) Babble detect or b) Endpoint stalled 0xffffffe0 (-32)
Device is write protected.
dfu.c:252: dfu_clear_status( 0x7fff4fc2ea80 )
atmel.c:1434: Error flashing the block: err -2.
ERROR
Memory write error, use debug for more info.
commands.c:360: Error writing memory data. (err -4)
You're likely going to need to ISP flash your board/device to get it working again. Luckily, this process is pretty straight-forward, provided you have any extra programmable keyboard, Pro Micro, or Teensy 2.0/Teensy 2.0++. There are also dedicated ISP flashers available for this, but most cost >$15, and it's assumed that if you are googling this error, this is the first you've heard about ISP flashing, and don't have one readily available (whereas you might have some other AVR board). __We'll be using a Teensy 2.0 or Pro Micro with Windows 10 in this guide__ - if you are comfortable doing this on another system, please consider editing this guide and contributing those instructions!
## Software Needed
* [Teensy Loader](https://www.pjrc.com/teensy/loader.html) (if using a Teensy)
* `avrdude` via [WinAVR](http://www.ladyada.net/learn/avr/setup-win.html) (for Teensy & Pro Micro)
## Wiring
This is pretty straight-forward - we'll be connecting like-things to like-things in the following manner:
### Teensy 2.0
Teensy B0 <-> Keyboard RESET
Teensy B1 <-> Keyboard B1 (SCLK)
Teensy B2 <-> Keyboard B2 (MOSI)
Teensy B3 <-> Keyboard B3 (MISO)
Teensy VCC <-> Keyboard VCC
Teensy GND <-> Keyboard GND
### Pro Micro
Pro Micro 10 (B6) <-> Keyboard RESET
Pro Micro 15 (B1) <-> Keyboard B1 (SCLK)
Pro Micro 16 (B2) <-> Keyboard B2 (MOSI)
Pro Micro 14 (B3) <-> Keyboard B3 (MISO)
Pro Micro VCC <-> Keyboard VCC
Pro Micro GND <-> Keyboard GND
## The ISP Firmware (now pre-compiled)
The only difference between the .hex files below is which pin is connected to RESET. You can use them on other boards as well, as long as you're aware of the pins being used.
* Teensy 2.0: [`util/teensy_2.0_ISP_B0.hex`](https://github.com/qmk/qmk_firmware/blob/master/util/teensy_2.0_ISP_B0.hex) (`B0`)
* Pro Micro: [`util/pro_micro_ISP_B6.hex`](https://github.com/qmk/qmk_firmware/blob/master/util/pro_mico_ISP_B6.hex) (`B6`)
## The `.hex` File
If you just want to get things back to normal, you can flash only a bootloader from [`util/` folder](https://github.com/qmk/qmk_firmware/tree/master/util), and use your normal process to flash the firmware. If you'd like to do both at the same time, you can follow the directions below:
To flash both your bootloader and firmware at the same time, we need to append [a bootloader (also a .hex file)](https://github.com/qmk/qmk_firmware/blob/master/util/bootloader_atmega32u4_1_0_0.hex) (atmega32u4 only - other bootloaders are available in the [`util/` folder](https://github.com/qmk/qmk_firmware/tree/master/util)) to the end of our firmware by opening the original .hex file in a text editor, and removing the last line, which should be `:00000001FF` (this is an EOF message). After that's been removed, copy the entire bootloader's contents onto a new line (with no empty lines between) and paste it at the end of the original file, and save it.
It's possible to use other bootloaders here in the same way, but __you need a bootloader__, otherwise you'll have to use ISP again to write new firmware to your keyboard.
## Flashing Your Firmware
Make sure your keyboard is unplugged from any device, and plug in your Teensy.
Open `cmd` and navigate to your where your modified .hex file is. We'll pretend this file is called `main.hex`, and that your Teensy 2.0 is on the `COM3` port - if you're unsure, you can open your Device Manager, and look for `Ports > USB Serial Device`. Use that COM port here. You can confirm it's the right port with:
avrdude -c avrisp -P COM3 -p atmega32u4
and you should get something like the following output:
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.02s
avrdude: Device signature = 0x1e9587
avrdude: safemode: Fuses OK
avrdude done. Thank you.
Since our keyboard uses an `atmega32u4` (common), that is the chip we'll specify. This is the full command:
avrdude -c avrisp -P COM3 -p atmega32u4 -U flash:w:main.hex:i
You should see a couple of progress bars, then you should see:
avrdude: verifying ...
avrdude: 32768 bytes of flash verified
avrdude: safemode: Fuses OK
avrdude done. Thank you.
Which means everything should be ok! Your board may restart automatically, otherwise, unplug your Teensy and plug in your keyboard - you can leave your Teensy wired to your keyboard while testing things, but it's recommended that you desolder it/remove the wiring once you're sure everything works.
If you have any questions/problems, feel free to [open an issue](https://github.com/qmk/qmk_firmware/issues/new)!

View File

@@ -1,10 +1,10 @@
# Keycodes Overview
When defining a [keymap](07_Reference/Keymap_Overview.md) each key needs a valid key definition. This page documents the symbols that correspond to keycodes that are available to you in QMK.
When defining a [keymap](keymap.md) each key needs a valid key definition. This page documents the symbols that correspond to keycodes that are available to you in QMK.
This is a reference only. Each group of keys links to the page documenting their functionality in more detail.
## [Basic Keycodes](06_Keycodes/Basic.md)
## [Basic Keycodes](keycodes_basic.md)
|Key |Aliases |Description |
|-----------------------|--------------------|-----------------------------------------------|
@@ -190,7 +190,7 @@ This is a reference only. Each group of keys links to the page documenting their
|`KC_NO` | |Ignore this key (NOOP) |
|`KC_TRANSPARENT` |`KC_TRNS` |Use the next lowest non-transparent key |
## [Mouse Keys](05_Features/Mouse_Keys.md)
## [Mouse Keys](feature_mouse_keys.md)
|Key |Aliases |Description |
|----------------|---------|---------------------------|
@@ -211,7 +211,7 @@ This is a reference only. Each group of keys links to the page documenting their
|`KC_MS_ACCEL1` |`KC_ACL1`|Set mouse acceleration to 1|
|`KC_MS_ACCEL2` |`KC_ACL2`|Set mouse acceleration to 2|
## [Quantum Keycodes](06_Keycodes/Quantum_Keycodes.md#qmk-keycodes)
## [Quantum Keycodes](quantum_keycodes.md#qmk-keycodes)
|Key |Aliases |Description |
|-------------|-----------|---------------------------------------------------------------------|
@@ -220,13 +220,13 @@ This is a reference only. Each group of keys links to the page documenting their
|`KC_GESC` |`GRAVE_ESC`|Escape when tapped, <code>&#96;</code> when pressed with Shift or GUI|
|`KC_LSPO` | |Left Shift when held, `(` when tapped |
|`KC_RSPC` | |Right Shift when held, `)` when tapped |
|`KC_LEAD` | |The [Leader key](05_Features/Leader_Key.md) |
|`KC_LOCK` | |The [Lock key](05_Features/Key_Lock.md) |
|`KC_LEAD` | |The [Leader key](feature_leader_key.md) |
|`KC_LOCK` | |The [Lock key](feature_key_lock.md) |
|`FUNC(n)` |`F(n)` |Call `fn_action(n)` (deprecated) |
|`M(n)` | |Call macro `n` |
|`MACROTAP(n)`| |Macro-tap `n` idk FIXME |
## [Bootmagic](05_Features/Bootmagic.md)
## [Bootmagic](feature_bootmagic.md)
|Key |Aliases |Description |
|----------------------------------|---------|------------------------------------|
@@ -250,7 +250,7 @@ This is a reference only. Each group of keys links to the page documenting their
|`MAGIC_UNSWAP_ALT_GUI` |`AG_NORM`|Unswap Alt and GUI on both sides |
|`MAGIC_TOGGLE_NKRO` | |Turn NKRO on or off |
## [Backlighting](05_Features/Backlight.md)
## [Backlighting](feature_backlight.md)
|Key |Description |
|---------|------------------------------------------|
@@ -262,7 +262,7 @@ This is a reference only. Each group of keys links to the page documenting their
|`BL_DEC` |Decrease the backlight level |
|`BL_BRTG`|Toggle backlight breathing |
## [RGB Lighting](05_Features/RGB_Lighting.md)
## [RGB Lighting](feature_rgblight.md)
|Key |Aliases |Description |
|-------------------|----------|--------------------------------------------------------------------|
@@ -283,15 +283,32 @@ This is a reference only. Each group of keys links to the page documenting their
|`RGB_MODE_KNIGHT` |`RGB_M_K` |"Knight Rider" animation mode |
|`RGB_MODE_XMAS` |`RGB_M_X` |Christmas animation mode |
|`RGB_MODE_GRADIENT`|`RGB_M_G` |Static gradient animation mode |
|`RGB_MODE_RGBTEST` |`RGB_M_T` |Red,Green,Blue test animation mode |
## [Thermal Printer](05_Features/Thermal_Printer.md)
## [RGB Matrix Lighting](feature_rgb_matrix.md)
|Key |Aliases |Description |
|-------------------|----------|--------------------------------------------------------------------|
|`RGB_TOG` | |Toggle RGB lighting on or off |
|`RGB_MODE_FORWARD` |`RGB_MOD` |Cycle through modes, reverse direction when Shift is held |
|`RGB_MODE_REVERSE` |`RGB_RMOD`|Cycle through modes in reverse, forward direction when Shift is held|
|`RGB_HUI` | |Increase hue |
|`RGB_HUD` | |Decrease hue |
|`RGB_SAI` | |Increase saturation |
|`RGB_SAD` | |Decrease saturation |
|`RGB_VAI` | |Increase value (brightness) |
|`RGB_VAD` | |Decrease value (brightness) |
|`RGB_SPI` | |Increase effect speed (does no support eeprom yet) |
|`RGB_SPD` | |Decrease effect speed (does no support eeprom yet) |
## [Thermal Printer](feature_thermal_printer.md)
|Key |Description |
|-----------|----------------------------------------|
|`PRINT_ON` |Start printing everything the user types|
|`PRINT_OFF`|Stop printing everything the user types |
## [Bluetooth](05_Features/Bluetooth.md)
## [Bluetooth](feature_bluetooth.md)
|Key |Description |
|----------|----------------------------------------------|
@@ -299,7 +316,7 @@ This is a reference only. Each group of keys links to the page documenting their
|`OUT_USB` |USB only |
|`OUT_BT` |Bluetooth only |
## [Modifiers](06_Keycodes/Quantum_Keycodes.md#modifiers)
## [Modifiers](quantum_keycodes.md#modifiers)
|Key |Aliases |Description |
|----------|---------- |----------------------------------------------------|
@@ -320,7 +337,7 @@ This is a reference only. Each group of keys links to the page documenting their
|`SGUI(kc)`|`SCMD(kc)`, `SWIN(kc)`|Hold Left Shift and GUI and press `kc` |
|`LCA(kc)` | |Hold Left Control and Alt and press `kc` |
## [Mod-Tap Keys](06_Keycodes/Quantum_Keycodes.md#mod-tap-keys)
## [Mod-Tap Keys](quantum_keycodes.md#mod-tap-keys)
|Key |Aliases |Description |
|------------|---------------------------------------|-------------------------------------------------------|
@@ -340,7 +357,7 @@ This is a reference only. Each group of keys links to the page documenting their
|`SCMD_T(kc)`|`SWIN_T(kc)` |Left Shift and GUI when held, `kc` when tapped |
|`LCA_T(kc)` | |Left Control and Alt when held, `kc` when tapped |
## [US ANSI Shifted Keys](06_Keycodes/US_ANSI_Shifted_keys.md)
## [US ANSI Shifted Keys](keycodes_us_ansi_shifted.md)
|Key |Aliases |Description |
|------------------------|------------------|-------------------|
@@ -366,7 +383,7 @@ This is a reference only. Each group of keys links to the page documenting their
|`KC_RIGHT_ANGLE_BRACKET`|`KC_GT`/`KC_RABK` |`>` |
|`KC_QUESTION` |`KC_QUES` |`?` |
## [Switching and Toggling Layers](05_Features/Advanced_Keycodes.md#switching-and-toggling-layers)
## [Switching and Toggling Layers](feature_advanced_keycodes.md#switching-and-toggling-layers)
|Key |Description |
|----------------|----------------------------------------------------------------------------------|
@@ -378,21 +395,21 @@ This is a reference only. Each group of keys links to the page documenting their
|`TT(layer)` |Normally acts like MO unless it's tapped multiple times, which toggles `layer` on |
|`LM(layer, mod)`|Momentarily turn on `layer` (like MO) with `mod` active as well. |
## [One Shot Keys](06_Keycodes/Quantum_Keycodes.md#one-shot-keys)
## [One Shot Keys](quantum_keycodes.md#one-shot-keys)
|Key |Description |
|------------|----------------------------------|
|`OSM(mod)` |Hold `mod` for one keypress |
|`OSL(layer)`|Switch to `layer` for one keypress|
## [Unicode Support](05_Features/Unicode.md)
## [Unicode Support](feature_unicode.md)
|Key |Aliases| |
|------------|-------|-------------------------------------------------|
|`UNICODE(n)`|`UC(n)`|Send Unicode character `n` |
|`X(n)` | |Send Unicode character `n` via a different method|
## [Swap Hands](05_Features/Swap_Hands.md)
## [Swap Hands](feature_swap_hands.md)
|Key |Description |
|-----------|-------------------------------------------------------------------------|

View File

@@ -215,7 +215,7 @@ To actually handle the keypress event we define an `action_function()`. This fun
This should have given you a basic overview for creating your own keymap. For more details see the following resources:
* [Keycodes](06_Keycodes/index.md)
* [Keymap FAQ](03_FAQ/05_Keymaps.md)
* [Keycodes](keycodes.md)
* [Keymap FAQ](faq_keymap.md)
We are actively working to improve these docs. If you have suggestions for how they could be made better please [file an issue](https://github.com/qmk/qmk_firmware/issues/new)!

View File

@@ -8,9 +8,9 @@ Not sure if your keyboard can run QMK? If it's a mechanical keyboard you built y
There are 4 main sections to this guide:
* [Getting Started](02_Complete_Newbs_Guide/index.md)
* [Building Your First Firmware](02_Complete_Newbs_Guide/02_Building_Your_First_Firmware.md)
* [Flashing Firmware](02_Complete_Newbs_Guide/03_Flashing_Firmware.md)
* [Testing and Debugging](02_Complete_Newbs_Guide/04_Testing_and_Debugging.md)
* [Getting Started](newbs_getting_started.md)
* [Building Your First Firmware](newbs_building_firmware.md)
* [Flashing Firmware](newbs_flashing.md)
* [Testing and Debugging](newbs_testing_debugging.md)
This guide is focused on helping someone who has never compiled software before. It makes choices and recommendations based on that viewpoint. There are alternative methods for many of these procedures, and we support most of those alternatives. If you have any doubt about how to accomplish a task you can [ask us for guidance](01_Getting_Started/07_Getting_Help.md).
This guide is focused on helping someone who has never compiled software before. It makes choices and recommendations based on that viewpoint. There are alternative methods for many of these procedures, and we support most of those alternatives. If you have any doubt about how to accomplish a task you can [ask us for guidance](getting_started_getting_help.md).

View File

@@ -8,17 +8,15 @@ If you have closed and reopened your terminal window since following the first p
Start by navigating to the `keymaps` folder for your keyboard.
{% hint style='info' %}
If you are on macOS or Windows there are commands you can use to easily open the keymaps folder.
?> If you are on macOS or Windows there are commands you can use to easily open the keymaps folder.
macOS:
?> macOS:
open keyboards/<keyboard_folder>/keymaps
Windows:
?> Windows:
start keyboards/<keyboard_folder>/keymaps
{% endhint %}
## Create a Copy Of The `default` Keymap
@@ -32,21 +30,17 @@ Open up your `keymap.c`. Inside this file you'll find the structure that control
This line indicates the start of the list of Layers. Below that you'll find lines containing either `LAYOUT` or `KEYMAP`, and these lines indicate the start of a layer. Below that line is the list of keys that comprise a that particular layer.
{% hint style='danger' %}
When editing your keymap file be careful not to add or remove any commas. If you do you will prevent your firmware from compiling and it may not be easy to figure out where the extra, or missing, comma is.
{% endhint %}
!> When editing your keymap file be careful not to add or remove any commas. If you do you will prevent your firmware from compiling and it may not be easy to figure out where the extra, or missing, comma is.
## Customize The Layout To Your Liking
How to complete this step is entirely up to you. Make the one change that's been bugging you, or completely rework everything. You can remove layers if you don't need all of them, or add layers up to a total of 32. Check the following documentation to find out what you can define here:
* [Keycodes](06_Keycodes/index.md)
* [Features](05_Features/index.html)
* [FAQ](03_FAQ/index.md)
* [Keycodes](keycodes.md)
* [Features](features.md)
* [FAQ](faq.md)
{% hint style='info' %}
While you get a feel for how keymaps work, keep each change small. Bigger changes make it harder to debug any problems that arise.
{% endhint %}
?> While you get a feel for how keymaps work, keep each change small. Bigger changes make it harder to debug any problems that arise.
## Build Your Firmware
@@ -70,4 +64,4 @@ Checking file size of planck_rev5_xyverz.hex
## Flash Your Firmware
Move on to [Flashing Firmware](02_Complete_Newbs_Guide/03_Flashing_Firmware.md) to learn how to write your new firmware to your keyboard.
Move on to [Flashing Firmware](newbs_flashing.md) to learn how to write your new firmware to your keyboard.

View File

@@ -6,23 +6,21 @@ Now that you've built a custom firmware file you'll want to flash your keyboard.
The simplest way to flash your keyboard will be with the [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases).
However, the QMK Toolbox is only available for Windows and macOS currently. If you're using Linux (or just wish to flash the firmware from the command line), you'll have to use the [method outlined below](02_Complete_Newbs_Guide/03_Flashing_Firmware.md#flash-your-keyboard-from-the-command-line).
However, the QMK Toolbox is only available for Windows and macOS currently. If you're using Linux (or just wish to flash the firmware from the command line), you'll have to use the [method outlined below](newbs_flashing.md#flash-your-keyboard-from-the-command-line).
### Load The File Into QMK Toolbox
Begin by opening the QMK Toolbox application. You'll want to locate the firmware file in Finder or Explorer. Your keyboard firmware may be in one of two formats- `.hex` or `.bin`. QMK tries to copy the appropriate one for your keyboard into the root `qmk_firmware` directory.
{% hint style='info' %}
If you are on Windows or macOS there are commands you can use to easily open the current firmware folder in Explorer or Finder.
?> If you are on Windows or macOS there are commands you can use to easily open the current firmware folder in Explorer or Finder.
Windows:
?> Windows:
start .
macOS:
?> macOS:
open .
{% endhint %}
The firmware file always follows this naming format:
@@ -82,7 +80,7 @@ Click the `Flash` button in QMK Toolbox. You will see output similar to the foll
First thing you'll need to know is which bootloader that your keyboard uses. There are four main bootloaders that are used, usually. Pro-Micro and clones use CATERINA, and Teensy's use Halfkay, OLKB boards use QMK-DFU, and other atmega32u4 chips use DFU.
You can find more information about the bootloaders in the [Flashing Instructions and Bootloader Information](01_Getting_Started/04_Flashing_Firmware.md) page.
You can find more information about the bootloaders in the [Flashing Instructions and Bootloader Information](flashing.md) page.
If you know what bootloader that you're using, then when compiling the firmware, you can actually add some extra text to the `make` command to automate the flashing process.
@@ -239,4 +237,4 @@ Booting
Congrats! Your custom firmware has been programmed to your keyboard!
Give it a try and make sure everything works the way you want it to. We've written [Testing and Debugging](02_Complete_Newbs_Guide/04_Testing_and_Debugging.md) to round out this Newbie Guide, so head over there to learn about how to troubleshoot your custom functionality.
Give it a try and make sure everything works the way you want it to. We've written [Testing and Debugging](newbs_testing_debugging.md) to round out this Newbie Guide, so head over there to learn about how to troubleshoot your custom functionality.

View File

@@ -2,7 +2,7 @@
Your computer keyboard has a processor inside of it, not unlike the one inside your computer. This processor runs software that is responsible for detecting button presses and sending reports about the state of the keyboard when they are pressed or released. QMK fills the role of that software, detecting button presses and passing that information on to the host computer. When you build your custom layout you are creating the equivalent of an .exe for your keyboard.
QMK tries to put a lot of power into your hands by making easy things easy, and hard things possible. You don't have to know how to program to create powerful layouts, you only have to follow a few simple syntax rules.
QMK tries to put a lot of power into your hands by making easy things easy, and hard things possible. You don't have to know how to program to create powerful layouts, you only have to follow a few simple syntax rules.
# Getting Started
@@ -12,15 +12,19 @@ Before you can build keymaps you need to install some software and setup your bu
### Text Editor
You'll need a program that can edit and save **plain text** files. If you are on Windows you can make due with Notepad, and on Linux you can use Gedit, both of which are simple but functional text editors. On macOS you can not use TextEdit.app, it will not save plain text files. You will need to install another program such as Sublime Text.
You'll need a program that can edit and save **plain text** files. If you are on Windows you can make due with Notepad, and on Linux you can use Gedit, both of which are simple but functional text editors. On macOS be careful with TextEdit.app, it will not save plain text files unless you make sure to select "Make Plain text" from the "Format" menu, or you can use another program such as Sublime Text.
{% hint style='info' %}
Not sure which text editor to use? Laurence Bradford wrote [a great introduction](https://learntocodewith.me/programming/basics/text-editors/) to the subject.
{% endhint %}
?> Not sure which text editor to use? Laurence Bradford wrote [a great introduction](https://learntocodewith.me/programming/basics/text-editors/) to the subject.
### QMK Toolbox
QMK Toolbox is a Windows and macOS program that allows you to both program and debug your custom keyboard. You will want to install it so that you can easily flash your keyboard and receive the debugging messages that your keyboard will print.
QMK Toolbox is an optional graphical Windows and macOS program that allows you to both program and debug your custom keyboard. You will likely prefer it to easily flash your keyboard and receive the debugging messages that your keyboard will print.
Download the files from the links below:
For Windows: "qmk_toolbox.exe" or "qmk_toolbox_install.exe" (with installer)
For Mac: "QMK.Toolbox.app.zip" or "QMK.Toolbox.pkg" (with installer)
* [Newest Release](https://github.com/qmk/qmk_toolbox/releases/latest)
* [Source Code](https://github.com/qmk/qmk_toolbox/)
@@ -29,12 +33,9 @@ QMK Toolbox is a Windows and macOS program that allows you to both program and d
We've tried to make QMK as easy to setup as possible. You only have to prepare your Linux or Unix environment and let QMK install the rest.
{% hint style="info" %}
If you haven't worked with the Linux/Unix command line before there are a few basic concepts and commands you should learn. These resources will teach you enough to work with QMK:
* [Must Know Linux Commands](https://www.guru99.com/must-know-linux-commands.html)
* [Some Basic Unix Commands](https://www.tjhsst.edu/~dhyatt/superap/unixcmd.html)
{% endhint %}
?> If you haven't worked with the Linux/Unix command line before there are a few basic concepts and commands you should learn. These resources will teach you enough to work with QMK:<br>
[Must Know Linux Commands](https://www.guru99.com/must-know-linux-commands.html)<br>
[Some Basic Unix Commands](https://www.tjhsst.edu/~dhyatt/superap/unixcmd.html)
### Windows
@@ -48,6 +49,8 @@ You will need to install msys2 and git.
You will need to install homebrew. Follow the instructions on the homebrew homepage: https://brew.sh
After homebrew is installed continue with "Download QMK", following step "Setup QMK" runs a script that will install other packages.
### Linux
You will need to install git. It's extremely likely you already have it, but if not one of the following commands should install it:
@@ -63,9 +66,7 @@ Once you have setup your Linux/Unix environment you are ready to download QMK. W
git clone https://github.com/qmk/qmk_firmware.git
cd qmk_firmware
{% hint style='info' %}
If you already know [how to use GitHub](01_Getting_Started/06_How_to_Use_GitHub.md) we recommend you create and clone your own fork instead. If you don't know what that means you can safely ignore this message.
{% endhint %}
?> If you already know [how to use GitHub](getting_started_github.md) we recommend you create and clone your own fork instead. If you don't know what that means you can safely ignore this message.
## Setup QMK
@@ -95,4 +96,4 @@ Checking file size of clueboard_66_rev2_default.hex
## Creating Your Layout
Now you are ready to create your own personal layout. Move on to [Building Your First Firmware](02_Complete_Newbs_Guide/02_Building_Your_First_Firmware.md) for that.
Now you are ready to create your own personal layout. Move on to [Building Your First Firmware](newbs_building_firmware.md) for that.

View File

@@ -15,13 +15,13 @@ Note: These programs are not provided by or endorsed by QMK.
## Debugging With QMK Toolbox
[QMK Toolbox](https://github.com/qmk/qmk_toolbox) will show messages from your keyboard if you have `CONSOLE_ENABLE = yes` in your `rules.mk`. By default the output is very limited, but you can turn on debug mode to increase the amount of debug output. Use the `DEBUG` keycode in your keymap, or use the [Command](05_Features/Command.md) feature to enable debug mode.
[QMK Toolbox](https://github.com/qmk/qmk_toolbox) will show messages from your keyboard if you have `CONSOLE_ENABLE = yes` in your `rules.mk`. By default the output is very limited, but you can turn on debug mode to increase the amount of debug output. Use the `DEBUG` keycode in your keymap, or use the [Command](feature_command.md) feature to enable debug mode.
<!-- FIXME: Describe the debugging messages here. -->
## Sending Your Own Debug Messages
Sometimes it's useful to print debug messages from within your [custom code](07_Reference/Custom_Code.md). Doing so is pretty simple. Start by including `print.h` at the top of your file:
Sometimes it's useful to print debug messages from within your [custom code](custom_quantum_functions.md). Doing so is pretty simple. Start by including `print.h` at the top of your file:
#include <print.h>

View File

@@ -0,0 +1,70 @@
Setting up your ARM based PCB is a little more involved than an Atmel MCU, but is easy enough. Start by using `util/new_project.sh <keyboard>` to create a new project:
```
$ util/new_project.sh simontester
######################################################
# /keyboards/simontester project created. To start
# working on things, cd into keyboards/simontester
######################################################
```
# END OF NEW ARM DOC, OLD ATMEL DOC FOLLOWS
## `/keyboards/<keyboard>/config.h`
The `USB Device descriptor parameter` block contains parameters are used to uniquely identify your keyboard, but they don't really matter to the machine.
Your `MATRIX_ROWS` and `MATRIX_COLS` are the numbers of rows and cols in your keyboard matrix - this may be different than the number of actual rows and columns on your keyboard. There are some tricks you can pull to increase the number of keys in a given matrix, but most keyboards are pretty straight-forward.
The `MATRIX_ROW_PINS` and `MATRIX_COL_PINS` are the pins your MCU uses on each row/column. Your schematic (if you have one) will have this information on it, and the values will vary depending on your setup. This is one of the most important things to double-check in getting your keyboard setup correctly.
For the `DIODE_DIRECTION`, most hand-wiring guides will instruct you to wire the diodes in the `COL2ROW` position, but it's possible that they are in the other - people coming from EasyAVR often use `ROW2COL`. Nothing will function if this is incorrect.
`BACKLIGHT_PIN` is the pin that your PWM-controlled backlight (if one exists) is hooked-up to. Currently only B5, B6, and B7 are supported.
`BACKLIGHT_BREATHING` is a fancier backlight feature that adds breathing/pulsing/fading effects to the backlight. It uses the same timer as the normal backlight. These breathing effects must be called by code in your keymap.
`BACKLIGHT_LEVELS` is how many levels exist for your backlight - max is 15, and they are computed automatically from this number.
## `/keyboards/<keyboard>/Makefile`
The values at the top likely won't need to be changed, since most boards use the `atmega32u4` chip. The `BOOTLOADER_SIZE` will need to be adjusted based on your MCU type. It's defaulted to the Teensy, since that's the most common controller. Below is quoted from the `Makefile`.
```
# Boot Section Size in *bytes*
# Teensy halfKay 512
# Teensy++ halfKay 1024
# Atmel DFU loader 4096
# LUFA bootloader 4096
# USBaspLoader 2048
OPT_DEFS += -DBOOTLOADER_SIZE=512
```
At the bottom of the file, you'll find lots of features to turn on and off - all of these options should be set with `?=` to allow for the keymap overrides. `?=` only assigns if the variable was previously undefined. For the full documentation of these features, see the [Makefile options](#makefile-options).
## `/keyboards/<keyboard>/readme.md`
This is where you'll describe your keyboard - please write as much as you can about it! Talking about default functionality/features is useful here. Feel free to link to external pages/sites if necessary. Images can be included here as well. This file will be rendered into a webpage at qmk.fm/keyboards/<keyboard>/.
## `/keyboards/<keyboard>/<keyboard>.c`
This is where all of the custom logic for your keyboard goes - you may not need to put anything in this file, since a lot of things are configured automatically. All of the `*_kb()` functions are defined here. If you modify them, remember to keep the calls to `*_user()`, or things in the keymaps might not work. You can read more about the functions [here](#custom-quantum-functions-for-keyboards-and-keymaps)
## `/keyboards/<keyboard>/<keyboard>.h`
Here is where you can (optionally) define your `KEYMAP` function to remap your matrix into a more readable format. With ortholinear boards, this isn't always necessary, but it can help to accommodate the dead spots on your matrix, where there are keys that take up more than one space (2u, staggering, 6.25u, etc). The example shows the difference between the physical keys, and the matrix design:
```
#define KEYMAP( \
k00, k01, k02, \
k10, k11 \
) \
{ \
{ k00, k01, k02 }, \
{ k10, KC_NO, k11 }, \
}
```
Each of the `kxx` variables needs to be unique, and usually follows the format `k<row><col>`. You can place `KC_NO` where your dead keys are in your matrix.

862
docs/qmk.css Normal file
View File

@@ -0,0 +1,862 @@
* {
-webkit-font-smoothing: antialiased;
-webkit-overflow-scrolling: touch;
-webkit-tap-highlight-color: rgba(0,0,0,0);
-webkit-text-size-adjust: none;
-webkit-touch-callout: none;
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
body:not(.ready) {
overflow: hidden;
}
body:not(.ready) [data-cloak],
body:not(.ready) .app-nav,
body:not(.ready) > nav {
display: none;
}
div#app {
font-size: 30px;
font-weight: lighter;
margin: 40vh auto;
text-align: center;
}
div#app:empty::before {
content: 'Loading...';
}
.emoji {
height: 1.2rem;
vertical-align: middle;
}
.progress {
background-color: var(--theme-color, #ea6f5a);
height: 2px;
left: 0px;
position: fixed;
right: 0px;
top: 0px;
-webkit-transition: width 0.2s, opacity 0.4s;
transition: width 0.2s, opacity 0.4s;
width: 0%;
z-index: 999999;
}
.search a:hover {
color: var(--theme-color, #ea6f5a);
}
.search .search-keyword {
color: var(--theme-color, #ea6f5a);
font-style: normal;
font-weight: bold;
}
html,
body {
height: 100%;
}
body {
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
color: #efefef;
font-family: 'Source Sans Pro', 'Helvetica Neue', Arial, sans-serif;
font-size: 15px;
letter-spacing: 0;
margin: 0;
overflow-x: hidden;
}
img {
max-width: 100%;
}
a[disabled] {
cursor: not-allowed;
opacity: 0.6;
}
kbd {
border: solid 1px #ccc;
border-radius: 3px;
display: inline-block;
font-size: 12px !important;
line-height: 12px;
margin-bottom: 3px;
padding: 3px 5px;
vertical-align: middle;
}
.task-list-item {
list-style-type: none;
}
li input[type='checkbox'] {
margin: 0 0.2em 0.25em -1.6em;
vertical-align: middle;
}
.app-nav {
margin: 25px 60px 0 0;
position: absolute;
right: 0;
text-align: right;
z-index: 10;
/* navbar dropdown */
}
.app-nav.no-badge {
margin-right: 25px;
}
.app-nav p {
margin: 0;
}
.app-nav > a {
margin: 0 1rem;
padding: 5px 0;
}
.app-nav ul,
.app-nav li {
display: inline-block;
list-style: none;
margin: 0;
}
.app-nav a {
color: inherit;
font-size: 16px;
text-decoration: none;
-webkit-transition: color 0.3s;
transition: color 0.3s;
}
.app-nav a:hover {
color: var(--theme-color, #ea6f5a);
}
.app-nav a.active {
border-bottom: 2px solid var(--theme-color, #ea6f5a);
color: var(--theme-color, #ea6f5a);
}
.app-nav li {
display: inline-block;
margin: 0 1rem;
padding: 5px 0;
position: relative;
}
.app-nav li ul {
background-color: #fff;
border: 1px solid #ddd;
border-bottom-color: #ccc;
border-radius: 4px;
-webkit-box-sizing: border-box;
box-sizing: border-box;
display: none;
max-height: calc(100vh - 61px);
overflow-y: auto;
padding: 10px 0;
position: absolute;
right: -15px;
text-align: left;
top: 100%;
white-space: nowrap;
}
.app-nav li ul li {
display: block;
font-size: 14px;
line-height: 1rem;
margin: 0;
margin: 8px 14px;
white-space: nowrap;
}
.app-nav li ul a {
display: block;
font-size: inherit;
margin: 0;
padding: 0;
}
.app-nav li ul a.active {
border-bottom: 0;
}
.app-nav li:hover ul {
display: block;
}
.github-corner {
border-bottom: 0;
position: fixed;
right: 0;
text-decoration: none;
top: 0;
z-index: 1;
}
.github-corner:hover .octo-arm {
-webkit-animation: octocat-wave 560ms ease-in-out;
animation: octocat-wave 560ms ease-in-out;
}
.github-corner svg {
color: #3f3f3f;
fill: var(--theme-color, #ea6f5a);
height: 80px;
width: 80px;
}
main {
display: block;
position: relative;
width: 100vw;
height: 100%;
z-index: 0;
}
main.hidden {
display: none;
}
.anchor {
display: inline-block;
text-decoration: none;
-webkit-transition: all 0.3s;
transition: all 0.3s;
}
.anchor span {
color: #c8c8c8;
}
.anchor:hover {
text-decoration: underline;
}
.sidebar {
border-right: 1px solid rgba(0,0,0,0.07);
overflow-y: auto;
padding: 40px 0 0;
position: absolute;
top: 0;
bottom: 0;
left: 0;
-webkit-transition: -webkit-transform 250ms ease-out;
transition: -webkit-transform 250ms ease-out;
transition: transform 250ms ease-out;
transition: transform 250ms ease-out, -webkit-transform 250ms ease-out;
width: 300px;
z-index: 20;
}
.sidebar > h1 {
margin: 0 auto 1rem;
font-size: 1.5rem;
font-weight: 300;
text-align: center;
}
.sidebar > h1 a {
color: inherit;
text-decoration: none;
}
.sidebar > h1 .app-nav {
display: block;
position: static;
}
.sidebar .sidebar-nav {
line-height: 2em;
padding-bottom: 40px;
}
.sidebar li.collapse .app-sub-sidebar {
display: none;
}
.sidebar ul {
margin: 0;
padding: 0;
}
.sidebar li > p {
font-weight: 700;
margin: 0;
}
.sidebar ul,
.sidebar ul li {
list-style: none;
}
.sidebar ul li a {
border-bottom: none;
display: block;
}
.sidebar ul li ul {
padding-left: 20px;
}
.sidebar::-webkit-scrollbar {
width: 4px;
}
.sidebar::-webkit-scrollbar-thumb {
background: transparent;
border-radius: 4px;
}
.sidebar:hover::-webkit-scrollbar-thumb {
background: rgba(136,136,136,0.4);
}
.sidebar:hover::-webkit-scrollbar-track {
background: rgba(136,136,136,0.1);
}
.sidebar-toggle {
background-color: transparent;
background-color: rgba(63,63,63,0.8);
border: 0;
outline: none;
padding: 10px;
position: absolute;
bottom: 0;
left: 0;
text-align: center;
-webkit-transition: opacity 0.3s;
transition: opacity 0.3s;
width: 284px;
z-index: 30;
}
.sidebar-toggle .sidebar-toggle-button:hover {
opacity: 0.4;
}
.sidebar-toggle span {
background-color: var(--theme-color, #ea6f5a);
display: block;
margin-bottom: 4px;
width: 16px;
height: 2px;
}
body.sticky .sidebar,
body.sticky .sidebar-toggle {
position: fixed;
}
.content {
padding-top: 60px;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 300px;
-webkit-transition: left 250ms ease;
transition: left 250ms ease;
}
.markdown-section {
margin: 0 auto;
max-width: 800px;
padding: 30px 15px 40px 15px;
position: relative;
}
.markdown-section > * {
-webkit-box-sizing: border-box;
box-sizing: border-box;
font-size: inherit;
}
.markdown-section > :first-child {
margin-top: 0 !important;
}
.markdown-section hr {
border: none;
border-bottom: 1px solid #eee;
margin: 2em 0;
}
.markdown-section iframe {
border: 1px solid #eee;
}
.markdown-section table {
border-collapse: collapse;
border-spacing: 0;
display: block;
margin-bottom: 1rem;
overflow: auto;
width: 100%;
}
.markdown-section th {
border: 1px solid #ddd;
font-weight: bold;
padding: 6px 13px;
}
.markdown-section td {
border: 1px solid #ddd;
padding: 6px 13px;
}
.markdown-section tr {
border-top: 1px solid #ccc;
}
.markdown-section tr:nth-child(2n) {
background-color: #555555;
}
.markdown-section p.tip {
background-color: #555555;
border-bottom-right-radius: 2px;
border-left: 4px solid #f66;
border-top-right-radius: 2px;
margin: 2em 0;
padding: 12px 24px 12px 30px;
position: relative;
}
.markdown-section p.tip:before {
background-color: #f66;
border-radius: 100%;
color: #3f3f3f;
content: '!';
font-family: 'Dosis', 'Source Sans Pro', 'Helvetica Neue', Arial, sans-serif;
font-size: 14px;
font-weight: bold;
left: -12px;
line-height: 20px;
position: absolute;
height: 20px;
width: 20px;
text-align: center;
top: 14px;
}
.markdown-section p.tip code {
background-color: #efefef;
}
.markdown-section p.tip em {
color: #c8c8c8;
}
.markdown-section p.warn {
background: rgba(234,111,90,0.1);
border-radius: 2px;
padding: 1rem;
}
body.close .sidebar {
-webkit-transform: translateX(-300px);
transform: translateX(-300px);
}
body.close .sidebar-toggle {
width: auto;
}
body.close .content {
left: 0;
}
@media print {
.github-corner,
.sidebar-toggle,
.sidebar,
.app-nav {
display: none;
}
}
@media screen and (max-width: 768px) {
.github-corner,
.sidebar-toggle,
.sidebar {
position: fixed;
}
.app-nav {
margin-top: 16px;
}
.app-nav li ul {
top: 30px;
}
main {
height: auto;
overflow-x: hidden;
}
.sidebar {
left: -300px;
-webkit-transition: -webkit-transform 250ms ease-out;
transition: -webkit-transform 250ms ease-out;
transition: transform 250ms ease-out;
transition: transform 250ms ease-out, -webkit-transform 250ms ease-out;
}
.content {
left: 0;
max-width: 100vw;
position: static;
padding-top: 20px;
-webkit-transition: -webkit-transform 250ms ease;
transition: -webkit-transform 250ms ease;
transition: transform 250ms ease;
transition: transform 250ms ease, -webkit-transform 250ms ease;
}
.app-nav,
.github-corner {
-webkit-transition: -webkit-transform 250ms ease-out;
transition: -webkit-transform 250ms ease-out;
transition: transform 250ms ease-out;
transition: transform 250ms ease-out, -webkit-transform 250ms ease-out;
}
.sidebar-toggle {
background-color: transparent;
width: auto;
padding: 30px 30px 10px 10px;
}
body.close .sidebar {
-webkit-transform: translateX(300px);
transform: translateX(300px);
}
body.close .sidebar-toggle {
background-color: rgba(63,63,63,0.8);
-webkit-transition: 1s background-color;
transition: 1s background-color;
width: 284px;
padding: 10px;
}
body.close .content {
-webkit-transform: translateX(300px);
transform: translateX(300px);
}
body.close .app-nav,
body.close .github-corner {
display: none;
}
.github-corner:hover .octo-arm {
-webkit-animation: none;
animation: none;
}
.github-corner .octo-arm {
-webkit-animation: octocat-wave 560ms ease-in-out;
animation: octocat-wave 560ms ease-in-out;
}
}
@-webkit-keyframes octocat-wave {
0%, 100% {
-webkit-transform: rotate(0);
transform: rotate(0);
}
20%, 60% {
-webkit-transform: rotate(-25deg);
transform: rotate(-25deg);
}
40%, 80% {
-webkit-transform: rotate(10deg);
transform: rotate(10deg);
}
}
@keyframes octocat-wave {
0%, 100% {
-webkit-transform: rotate(0);
transform: rotate(0);
}
20%, 60% {
-webkit-transform: rotate(-25deg);
transform: rotate(-25deg);
}
40%, 80% {
-webkit-transform: rotate(10deg);
transform: rotate(10deg);
}
}
section.cover {
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
background-position: center center;
background-repeat: no-repeat;
background-size: cover;
height: 100vh;
display: none;
}
section.cover.show {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
}
section.cover.has-mask .mask {
background-color: #3f3f3f;
opacity: 0.8;
position: absolute;
top: 0;
height: 100%;
width: 100%;
}
section.cover .cover-main {
-webkit-box-flex: 1;
-ms-flex: 1;
flex: 1;
margin: -20px 16px 0;
text-align: center;
z-index: 1;
}
section.cover a {
color: inherit;
text-decoration: none;
}
section.cover a:hover {
text-decoration: none;
}
section.cover p {
line-height: 1.5rem;
margin: 1em 0;
}
section.cover h1 {
color: inherit;
font-size: 2.5rem;
font-weight: 300;
margin: 0.625rem 0 2.5rem;
position: relative;
text-align: center;
}
section.cover h1 a {
display: block;
}
section.cover h1 small {
bottom: -0.4375rem;
font-size: 1rem;
position: absolute;
}
section.cover blockquote {
font-size: 1.5rem;
text-align: center;
}
section.cover ul {
line-height: 1.8;
list-style-type: none;
margin: 1em auto;
max-width: 500px;
padding: 0;
}
section.cover .cover-main > p:last-child a {
border-color: var(--theme-color, #ea6f5a);
border-radius: 2rem;
border-style: solid;
border-width: 1px;
-webkit-box-sizing: border-box;
box-sizing: border-box;
color: var(--theme-color, #ea6f5a);
display: inline-block;
font-size: 1.05rem;
letter-spacing: 0.1rem;
margin: 0.5rem 1rem;
padding: 0.75em 2rem;
text-decoration: none;
-webkit-transition: all 0.15s ease;
transition: all 0.15s ease;
}
section.cover .cover-main > p:last-child a:last-child {
background-color: var(--theme-color, #ea6f5a);
color: #fff;
}
section.cover .cover-main > p:last-child a:last-child:hover {
color: inherit;
opacity: 0.8;
}
section.cover .cover-main > p:last-child a:hover {
color: inherit;
}
section.cover blockquote > p > a {
border-bottom: 2px solid var(--theme-color, #ea6f5a);
-webkit-transition: color 0.3s;
transition: color 0.3s;
}
section.cover blockquote > p > a:hover {
color: var(--theme-color, #ea6f5a);
}
body {
background-color: #3f3f3f;
}
/* sidebar */
.sidebar {
background-color: #3f3f3f;
color: #c8c8c8;
}
.sidebar li {
margin: 6px 15px;
}
.sidebar ul li a {
color: #c8c8c8;
font-size: 14px;
overflow: hidden;
text-decoration: none;
text-overflow: ellipsis;
white-space: nowrap;
}
.sidebar ul li a:hover {
text-decoration: underline;
}
.sidebar ul li ul {
padding: 0;
}
.sidebar ul li.active > a {
color: var(--theme-color, #ea6f5a);
font-weight: 600;
}
/* markdown content found on pages */
.markdown-section h1,
.markdown-section h2,
.markdown-section h3,
.markdown-section h4,
.markdown-section strong {
color: #657b83;
font-weight: 600;
}
.markdown-section a {
color: var(--theme-color, #ea6f5a);
font-weight: 600;
}
.markdown-section h1 {
font-size: 2rem;
margin: 0 0 1rem;
}
.markdown-section h2 {
font-size: 1.75rem;
margin: 45px 0 0.8rem;
}
.markdown-section h3 {
font-size: 1.5rem;
margin: 40px 0 0.6rem;
}
.markdown-section h4 {
font-size: 1.25rem;
}
.markdown-section h5 {
font-size: 1rem;
}
.markdown-section h6 {
color: #777;
font-size: 1rem;
}
.markdown-section figure,
.markdown-section p,
.markdown-section ul,
.markdown-section ol {
margin: 1.2em 0;
}
.markdown-section p,
.markdown-section ul,
.markdown-section ol {
line-height: 1.6rem;
word-spacing: 0.05rem;
}
.markdown-section ul,
.markdown-section ol {
padding-left: 1.5rem;
}
.markdown-section blockquote {
border-left: 4px solid var(--theme-color, #ea6f5a);
color: #858585;
margin: 2em 0;
padding-left: 20px;
}
.markdown-section blockquote p {
font-weight: 600;
margin-left: 0;
}
.markdown-section iframe {
margin: 1em 0;
}
.markdown-section em {
color: #7f8c8d;
}
.markdown-section code {
background-color: #282828;
border-radius: 2px;
color: #aaaaaa;
font-family: 'Roboto Mono', Monaco, courier, monospace;
font-size: 0.8rem;
margin: 0 2px;
padding: 3px 5px;
white-space: pre-wrap;
}
.markdown-section pre {
-moz-osx-font-smoothing: initial;
-webkit-font-smoothing: initial;
background-color: #282828;
font-family: 'Roboto Mono', Monaco, courier, monospace;
line-height: 1.5rem;
margin: 1.2em 0;
overflow: auto;
padding: 0 1.4rem;
position: relative;
word-wrap: normal;
}
/* code highlight */
.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
color: #8e908c;
}
.token.namespace {
opacity: 0.7;
}
.token.boolean,
.token.number {
color: #c76b29;
}
.token.punctuation {
color: #525252;
}
.token.property {
color: #c08b30;
}
.token.tag {
color: #2973b7;
}
.token.string {
color: var(--theme-color, #ea6f5a);
}
.token.selector {
color: #6679cc;
}
.token.attr-name {
color: #2973b7;
}
.token.entity,
.token.url,
.language-css .token.string,
.style .token.string {
color: #22a2c9;
}
.token.attr-value,
.token.control,
.token.directive,
.token.unit {
color: var(--theme-color, #ea6f5a);
}
.token.keyword {
color: #e96900;
}
.token.statement,
.token.regex,
.token.atrule {
color: #22a2c9;
}
.token.placeholder,
.token.variable {
color: #3d8fd1;
}
.token.deleted {
text-decoration: line-through;
}
.token.inserted {
border-bottom: 1px dotted #202746;
text-decoration: none;
}
.token.italic {
font-style: italic;
}
.token.important,
.token.bold {
font-weight: bold;
}
.token.important {
color: #c94922;
}
.token.entity {
cursor: help;
}
.markdown-section pre > code {
-moz-osx-font-smoothing: initial;
-webkit-font-smoothing: initial;
background-color: #282828;
border-radius: 2px;
color: #657b83;
display: block;
font-family: 'Roboto Mono', Monaco, courier, monospace;
font-size: 0.8rem;
line-height: inherit;
margin: 0 2px;
max-width: inherit;
overflow: inherit;
padding: 2.2em 5px;
white-space: inherit;
}
.markdown-section code::after,
.markdown-section code::before {
letter-spacing: 0.05rem;
}
code .token {
-moz-osx-font-smoothing: initial;
-webkit-font-smoothing: initial;
min-height: 1.5rem;
}
pre::after {
color: #ccc;
content: attr(data-lang);
font-size: 0.6rem;
font-weight: 600;
height: 15px;
line-height: 15px;
padding: 5px 10px 0;
position: absolute;
right: 0;
text-align: right;
top: 0;
}
.markdown-section p.tip {
background-color: #282828;
color: #657b83;
}
input[type='search'] {
background: #4f4f4f;
border-color: #4f4f4f;
color: #c8c8c8;
}

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