Compare commits

...

253 Commits

Author SHA1 Message Date
ddb1c83695 Added archlinux support to linux_install.sh 2018-05-02 11:44:22 -04:00
e5540dd055 Update to drashna keymaps and userspace (#2876)
* Fix Unicode sample

* Add irony mark

* Remove unpretty keymaps

* Add QMK DFU and Conditional Music Mode

* Unicode fixes

* Unicode fixes

* Make layer indication more modular

* Finish removing Faux Click

* Cleanup of UserSpace and addition of 'update_tri_layer_state' function

* Add modifier status indicators to Orthodox

* Remove tri layer function

* Minor tweaks

* Remove the Orthodox's Indicator's reliance on layer_state_set

* Add custom EEPROM settings

* Make EEPROM config more efficient

* Viterbi Config

* Add Iris Keyboard layout and Userspace cleanup

* Iris keyboard tweaks

* Use Grave Escape on Iris

* Update Readmes
2018-05-02 11:39:46 -04:00
9b8fc6f1c0 QMK Configurator Support for NIU Mini (#2874)
* QMK Configurator support for niu mini

* Fix naming

* looks like I messed up the include
2018-05-02 08:07:08 -07:00
3d96359f71 Addkeymap/satan fakb (#2833)
* edited keymap and fitted for tada68

* edited rules to make mouse work

* filled config.h to make mouse cursor move smooth

* added descriptive readme

* added layout with split backspace and steamlined naming

* added layout with split shift, split backspace and split #

* changed keymap to fit the new layout

* removed duplicate layout KEYMAP_FAKB and pointed keymap.c to default on

* further cleanup from layout duplicate
2018-05-02 08:05:36 -07:00
0495bf4491 QMK Configurator updates for Alpha 28-key, AMJ40 and AMJ Pad (#2873)
* QMK Configurator update for Alpha 28-key

* QMK Configurator update for AMJ40

* QMK Configurator update for AMJ Pad

* QMK Configurator update for Atom47

* QMK Configurator update for OLKB Atomic
2018-05-02 08:02:35 -07:00
b51ad39047 iris impstyle keymap, mouse layer added (#2875)
* impstyle keymap added

* impstyle keymap updated

* mouse layer added to impstyle keymap

* keymap updated

* fixes

* impsytle layout: mouse layer added

* comments added

* comments added

* bugfix

* typo fixed
2018-05-02 07:56:00 -07:00
ec7223d9f0 Added new layout to XD75. See Readme for details (#2871)
* Clean commit of xd75 layout. See Readme for details

* Corrected header

* Switched to HSV and added init
2018-05-01 12:29:49 -07:00
M1K
5112af887a Added command history to terminal with other bug fixes, added new song to song_list.h (#2855)
* Implemented Terminal + added song to song_list.h

* Added wait() in order to prevent misbehaviour of 'command not found'
2018-05-01 13:39:46 -04:00
f756b72167 A default layout but with support for non-us keymaps (#2869)
* Made the keymap file match the TMK the board UT47 was origonally flashed with using native QMK codes.

* Add non-us layout
2018-05-01 08:48:47 -07:00
861dc88bc2 New XD60 keymap (Standard/GH60 ANSI + custom Fn layer) (#2866)
* XD60 standard 60% + custom Fn layer

* Fixed README.MD
2018-05-01 08:42:21 -07:00
bde1c9d909 Keymap file to match the TMK the board came flashed with (#2868)
* Made the keymap file match the TMK the board UT47 was origonally flashed with using native QMK codes.

* Add non-us layout
2018-05-01 08:34:06 -07:00
7a57446f5e new layout for iso and arrows (#2865) 2018-05-01 08:31:41 -07:00
Ben
f31a8f2738 Add DZ60 ANSI layout with arrows and F keys (#2839)
* Add DZ60 ANSI layout with arrows and F keys

I testet the keymap on my dz60 keyboard.

* added new layout syntax and a readme

* fix typo in readme
2018-05-01 08:29:43 -07:00
9689944c16 Clean up v60_type_r keyboard (#2848)
* Use *_kb instead of *_user in keyboard config

* Place POLESTAR-only #includes in its #ifdef
2018-04-30 08:40:34 -07:00
aade625054 QMK Configurator Support for KMAC (#2852)
* Added KMAC Config

* Removed .vscode
2018-04-30 08:22:35 -07:00
187d76476e QMK Configurator Support for JD45 and JD40 (#2851)
* Added JD45 Config

* Added JD40 Config

* Changed KEYMAP to LAYOUT for JD40 and JD45
2018-04-30 08:22:02 -07:00
Fig
43e589aa02 Add the fig-r layout to the preonic (#2858) 2018-04-30 08:20:05 -07:00
c76ab936c8 Changed KEYMAP to LAYOUT for HHKB (#2857) 2018-04-30 08:19:12 -07:00
3aeaf4e3ea QMK Configurator Support for Lightsaver V3 (#2856)
* Added Lightsaver Config

* Changed KEYMAP to LAYOUT

* Missed out one KEYMAP

* Changed lightsaver.h to QMK_KEYBOARD_H

* Missed out one lightsaver.h
2018-04-30 08:17:07 -07:00
1ff7473ce4 Add LOCAL_GLCDFONT option (#2854)
* 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
2018-04-30 08:15:49 -07:00
de97c560f5 Added FC980C Config (#2850) 2018-04-30 07:46:23 -07:00
bc89c4f104 QMK Configurator Support for KBD66 and RAMA M6-A (#2849)
* Added KBD66 Config

* Added RAMA M6-A Config

* Changed KEYMAP to LAYOUT for KBD66 and M6-A
2018-04-30 07:45:38 -07:00
2054f20b69 image fix (#2846) 2018-04-30 07:39:19 -07:00
c7d3f31f64 board(whitefox): add layout (#2845)
*  add base layout

*  add mouse keys

* 🔥 remove unwanted keys

* 📝 add readme
2018-04-30 07:37:47 -07:00
7216fd0f47 My userspace and lets_split keymap (#2842)
* copied lets_slit to splinter

* initial splinter layout

* remove unused keymaps

* implemented second half of the keyboard

* initial definition of tap dance

* the tap dance is working now

tap dance for right hand 4c 2r
hold - shift
single tap - n
double tap - ñ
triple tap - Ñ

* clear the keymap.c

* put the tap state on to array

* the n tilde tap dance should produce right shift if hold

* add esc grv tap dance

* remove the defined SS_LSFT on tap_dance.h

because it was added on the quantum.h

* minor cleanup for the keymap

* use the X_* on tap dance

* added super alt tap dance

* use the NO_TAP on tap dance reset

* allow track what rows and cols pressed

* added the RGUI_ALT

* keymap arrangement

* use i2c

* initial rgb

* layer colors

* initial rgb pressed key

* set the layers led

* SUCCESS!!!

* cleaning

* improve shifted layer

* led brightness

* initial caps rainbow

* rename SET_LED_RGB to SET_LED_RGB_HEX

* clean the SET_LED_RGB_HEX and added SET_LED_RGB

* clean format

* caps lock rainbow

* rename key_led to set_key_led

* caps lock rainbow enhanced

* make varibiables static

* change back the loop max value to 360 for the rainbow

* add scroll lock to the rainbow led

* fix pos calculation of right hand board

* add ative keys and make rainbow color can override by key press

* remove the TOTAL_MATRIX_POINTS

* some improvments for the rgb

* call the rgblight_set on the process_record_user

* some enhancement for the leds

* pass the dim value to set_layer_led and limit the brightness on _VL

set the brightness to 2 if the dim value is less than 2 because
their is not enought power for the leds.

* remove the rgb steps on the config

* use the non rev config

* remove all the revisions

* favor i2c instead of serial and remove all the ref for the serial

* clang formatting

* allow to save to eeprom the brightness value

* add bootloader caterina this will enable soft reset key

* initial commit for the userspace

* added my own keymap for splinter

* first working userspace

* move splinter to handwired keyboards

* handwired splinter default keymap

* move some config to my keymap

* cleanup some headers on the keymap

* move the EECONFIG_RGB_DIM to the user space

* I fix remove the GUI on SPC and ENT

* remove the default include on tap_dance.c

* add lights.c and refactoring

* fix wrong source for led index

* seperate the variable on set_layer_led for readabilty.

* set the usb max power consumption to 50

* fix led lighting

* add new enums for tap dance

* use romeve path avr on eeprom.h

* fix wrong spelling on TP names

* changed the tap dance

* allow to set rainbow on some pressed key

* add reset key

* fix error on matrix.c if ROW2COL is used

* add extraflags -flto

* See e2352d4

* Got no love from i2c, serial to the rescue

* Fix the led will lit up to color red after boot

* Trial if the power can handle yellow color at full

* Add comment

* Use EE_HANDS

* add config.h in the use space

* KC_N on BL should wrap in SFT_T

* See d13567d, put it back but increase 1 level

* Fix led soldering mistake

* set the tapping_term to 100

* Use TT for the changing the layer

* Remove the changing space to enter and vice version on BL and UL

* Increate the tapping term

* Use tap dance on changing layer

* Add assorted layer

* propery way to tapdance

* Remove DA_EGRV

This also fix the wrong placement of the reset and dance lspr should register
the KC_LGUI on finished not unregistered.

* Remove the media control to the up and down layer

* Remove the interrupted state of the tap dance

* swapt the space and enter on to th caps

* Shorthand

* Keymap update

* My keymap for lets_split

* cleaning
2018-04-29 13:02:37 -07:00
3b7b1994cd Redox keyboard code (#2843)
* Added Redox keyboard with default keymap (IT layout)

* Updated manufacturer url

* Applied requested changes
2018-04-29 13:01:33 -07:00
19aa2c34e8 Add dz60 iso layout with vim-style arrows (#2837) 2018-04-28 08:57:53 -07:00
6f37bd6678 Fix Clicky Down code 2018-04-28 11:50:02 -04:00
3d6119856a Addkeymap/tada fakb (#2830)
* edited keymap and fitted for tada68

* edited rules to make mouse work

* filled config.h to make mouse cursor move more smooth

* added descriptive readme
2018-04-28 08:10:30 -07:00
5dc60c06a9 Add knops mini info json and implemented latest QMK standards (#2832)
* added info.json to knops mini keypad.

* updated the keyboard to follow the latest qmk standards.
2018-04-28 08:06:07 -07:00
01a85b780c Add RGB keymap to UT47 (#2826)
* Create readme.md

* RGB keymap

* Update matrix.c

Remove serial when not used.
2018-04-28 07:52:15 -07:00
4afd970dc4 QMK Configurator updates to Tada68 (#2825)
* Added Tada68 ISO Config

* Fixed missing up-arrow on Tada68 info.json
2018-04-27 15:44:33 -07:00
c17d15a305 Add keymap diagram (#2819)
* Add personal Tada68 keymaps

* remove uneccessary tada68 folder

* recommit with temp name

* remove bad folder name

* fix bullet list format

* rename to fezzant

* remove unnecessary config.h file

* Add info.json

add QMK Configurator .json file

* Delete helix_rev_2.json

* add diagram to UT47 keymap file

* add remaining keymap diagrams for ut47 keymap
2018-04-27 15:20:03 -07:00
625a243be8 QMK Configurator updates for Mechmini v2 (#2820)
* Mechmini 2 updates for QMK Configurator

* Update info.json
2018-04-27 15:19:15 -07:00
0d98822144 QMK Configurator Support (#2821)
- Change all KEYMAP to LAYOUT
- Add info.json
- Add QMK_KEYBOARD_H
2018-04-27 15:17:39 -07:00
102433d8bc QMK Configurator Support for HHKB and Staryu (#2823)
* added hhkb eric

* dz60 and hhkb

* editted eric hhkb and dz60

* Added HHKB Config

* Removed HHKB Config

* Added HHKB Config

* Changed the legends on HHKB info.json

* Added Tada68 ISO Config and Staryu

* Removed Tada68 ISO Config
2018-04-27 15:17:10 -07:00
376a384b23 Fix UT47 matrix (#2824)
* Fix UT47 matrix

* Use both spots in the matrix for the space bar
2018-04-27 15:16:42 -07:00
34ce1ed016 Updated tri-layer block in keymap file. (#2827)
* 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 59b8b85761.

* Updated tri-layer on keymap

* Fixed typos
2018-04-27 15:16:13 -07:00
17223166ce Add missing 7U and 4U layouts to 2x1800 (#2829)
This prevents the layouts from loading in configurator
2018-04-27 15:14:58 -07:00
33671e5cd1 New Numpad Support: naKey from ckeys.org (#2828)
* Add naKey on behalf of ckeys

* Update James's code to more modern QMK standards

* Add info.json for QMK Configurator support

* Fix that build breakage

* Rename naKey.c to nakey.c

* Rename naKey.h to nakey.h
2018-04-27 15:13:03 -07:00
050c21d35f Bring dactyl/matrix.c in line with quantum/matrix.c (#2613)
* Use the new debounce algorithm in dactyl/matrix.c [#2065]

This incorporates the fixed/optimized debounce code added to
quantum/matrix.c in:

* 508eddf8ba
* 4c6960835c
* 32f88c0717
* f403028974
* a06115df19

* Fix the row/column swap in dactyl [#2065]

With a column-driven keyboard, reading from the mcp23081 returns a
column-state, which takes some extra work to translate into the
row-state used in the actual matrix. The ergodox_ez code sidestepped
that problem by calling rows "columns" and columns "rows." With this
change, the dactyl now calls rows "rows" and columns "columns."

* Cleanup: variable names, documentation [#2065]

* Support MATRIX_MASKED in dactyl/matrix.c [#2065]

* Only unselect one col in unselect_col [#2065]

Bonus: saves one i2c transaction per matrix_scan!

* Implement COL2ROW in dactyl/matrix.c [#2065]

* Fix a typo in dactyl/matrix.c

This entirely doesn't matter. The PORT values are set during
init_keyboard and never change. They're repeatedly set to the same
thing. These PORT lines shouldn't even exist, but since they do, they
should at least look right.

* Implement COL_PINS/ROW_PINS for dactyl [#2065]

* Rename "mcp23018" to "expander" [#2065]

I honestly don't know whether/how well this code works with other I/O
expanders, but at least in theory, it should be generic enough to work
with others. Given that, the variable names shouldn't refer to a
specific model of expander.

* Remove matrix_power_up from dactyl/matrix.c [#2065]

It's commented out in quantum/matrix.c, and the dactyl has no power
up/down behavior beyond being unplugged (which goes to matrix_init), so
there's no sense keeping it around.

* Only initialize expander_input_mask once [#2065]

...and rename input_mask to expander_input_mask, since now that it isn't
scoped to init_expander it isn't clear that it's only for the expander.
2018-04-27 14:47:41 -04:00
642bf00baf FC660C Configurator Support (#2817)
* Change KEYMAP to LAYOUT

* Add info.json for configurator support
2018-04-26 20:31:05 -07:00
510510e9db avocado toast change (#2816) 2018-04-26 20:28:54 -07:00
6b45e8aec1 QMK Configurator Support MF68 (#2815)
* Add QMK Configurator support for MF68

* Add QMK Configurator support for MF68 BLE

* change to QMK_KEYBOARD_H in keymaps
2018-04-26 20:28:22 -07:00
8d65d69b8d More QMK Configurator Support for Pearl (#2814)
* Rename LAYOUT to LAYOUT_all
Add additional layouts for the pearl with all splits
and the pearl with splits but a 6.25u spacebar.

* add new layouts to info.json
2018-04-26 17:19:42 -07:00
535a4d55ae Keymap Fixes for 7U layout, RGB and Audio support (#2779)
- confused KC_COMM, KC_SLSH, KC_DOT order
 - KC_INS -> KC_DEL
 - Document audio on C4 and B7, set default RGB to pin C6
2018-04-26 13:51:19 -07:00
66e40529aa Change handling of adjust layer to make it more LT(...) friendly. (#1625)
* Change handling of adjust layer to make it more LT(...) friendly.

* Update based on feedback from drashna.

* Change handling of adjust layer to make it more LT(...) friendly.  This reworks handling to make it a little more friendly to include in keymaps.
2018-04-26 16:10:03 -04:00
80ccbc7b54 QMK Configurator update for the Pearl 40% (#2810)
* QMK Configurator updates for the Pearl 40%

Attempt to get the physical layout as displayed in the Configurator more true-to-life.

* Bugfixes per mechmerlin

"By changing KEYMAP to LAYOUT in the .h file, all the keymaps who rely on KEYMAP are now broken. You need to go into the keymap directory and fix all the keymaps affected by this change. Should just be an issue of renaming KEYMAP to LAYOUT."

* Merge pull request #2 from noroadsleft/noroadsleft-patch-20180425

Bugfixes per mechmerlin

* keymap.c updates for Pearl

-#include "pearl.h"
+#QMK_KEYBOARD_H
2018-04-26 11:06:59 -07:00
644efe48bf Update piemod keymap (#2786)
Add RGB control, fix keymap to work with latest QMK.

Squashed commit of the following:

commit 3c5d95e4809d446fe5304aab9274d527182835e6
Author: dwrz <dwrz@dwrz.net>
Date:   Sat Apr 21 18:26:58 2018 +0000

    Make rules.mk for Let's Split piemod

commit 0cc5fc135220f0eb48509d2b027e4cad033d74a5
Author: dwrz <dwrz@dwrz.net>
Date:   Sat Apr 21 18:26:25 2018 +0000

    Add RGB control keys to function layer

commit d1b6bfa5f34123658534f99c97471b779b971ffb
Author: dwrz <dwrz@dwrz.net>
Date:   Sat Apr 21 18:26:03 2018 +0000

    Refactor MACROS to COMBOS

    MACROS was conflicting with existing code.

commit ce2f47b13fb3bfab9d63292ddba466879d300051
Author: dwrz <dwrz@dwrz.net>
Date:   Sat Apr 21 18:25:26 2018 +0000

    Add typing options to config.h

commit cb0aa62b81a17aaaee1f9843138495b9ca14b6d4
Author: dwrz <dwrz@dwrz.net>
Date:   Sat Apr 21 18:25:10 2018 +0000

    Add RGB options to config.h
2018-04-26 07:51:58 -07:00
10d287d1aa ScrabblePad updates (#2809)
* Update config.h

Matrix pinout updated to current revision.

* Add updated matrix, define RGB pin

Matrix updated to current pinout, pin for WS2812 defined.
2018-04-26 07:30:05 -07:00
eb89a372ec Add BFO-9000 keyboard (#2807) 2018-04-25 10:47:13 -07:00
1c6b9323b2 Fix QMK Configurator bug with rendering the Eagle layout (#2806) 2018-04-25 07:44:37 -07:00
4ad37331d3 Fix missed key assignment (#2803) 2018-04-24 19:37:05 -07:00
4674664c4a Cu75 iso fix (#2801)
* 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

* CU75 keymap fix

Incorrect keymap now fixed
2018-04-24 13:19:34 -07:00
32446eeeb6 UT47 layout (#2791)
* Add new project files for UT47

* Copy over keymap and related files

* Add LED_controls.ino

* Add README instructions

* Attempt sending press byte data

* Disable mousekeys

* Enable sending serial data to LED controller

* Update LED mode names

* Remove extra file

* Add LED enable flag

* Update READMEs with more info

* Credit original author

* Update copyrights

* Update docs

* Changed based on review

* Move layout screenshot to Imgur

* Append to src

* Enable mousekeys to fix bad keycodes

* Additional changes based on feedback

* Fix fn layer keys
2018-04-24 13:19:04 -07:00
1feb42a108 DZ60: Add Caps Lock LED for default keymap (#2800)
Commit b546da0 added better init handling, but removed Caps Lock LED handling. This re-adds it (in the right place).
2018-04-24 12:43:23 -07:00
7d08e48c50 Syntax update (#2660)
* initial commit

* init qmk keymap

* update docs

* update documentation

consolidate readme files; update `make` instructions
revise ascii keymap representation

* update documentation

* edit and update `make` syntax

- `make` syntax update
- fix typo
- add link to teensy video (already linked from online configurator)

* permissions restored

* remove superfluous files from branch

* reset idiosyncratic execute permissions

* reset idiosyncratic execute permission
2018-04-24 09:49:34 -07:00
d1481172bc Helix oled rgb compile sw (#2606)
* 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
2018-04-24 09:43:57 -07:00
f440bbbc11 Update readme.md (#2687) 2018-04-24 09:37:52 -07:00
eef75b82bd Edited keymaps for eric/dz60 (#2793)
* added hhkb eric

* dz60 and hhkb

* editted eric hhkb and dz60
2018-04-24 09:27:33 -07:00
6beb9d3ac2 Changes to danielhklein nyquist config (#2783)
* nyquist

* danielhklein nyquist setup

* shift left controls

* remove readme

* cleanup before pr

* ready for pr

* updated bootmagic, arrows, and special chars

* allow gui on arrows

* replace arrows with right modifiers

* documentation re-added

* updated personal repo

* fixes to layers
2018-04-24 09:25:20 -07:00
2286cedb70 Update personal colemak Iris layout and deleted redundant folders (#2794)
* DRambo Planck keymap in Colemak

* DRambo Planck keymap in Colemak

* Satan GH60 keymap for Bri

QWERTY layout with Navigation layer toggled with "Caps Lock" key.

* xd75 keymap in Colemak for Mac and Win

* DRambo Planck keymap in Colemak

* Satan GH60 keymap for Bri

QWERTY layout with Navigation layer toggled with "Caps Lock" key.

* xd75 keymap in Colemak for Mac and Win

* Added Iris Colemak layout for Mac, Windows, and Gaming.

* changed comment text

* DRambo Planck keymap in Colemak

* Satan GH60 keymap for Bri

QWERTY layout with Navigation layer toggled with "Caps Lock" key.

* xd75 keymap in Colemak for Mac and Win

* Added Iris Colemak layout for Mac, Windows, and Gaming.

* changed comment text

* Added Iris keymap from DavidRambo

* Added planck keymap from DavidRambo

* Added xd75 keymap from DavidRambo

* Added readme

* Deleted redundant repos in Iris, Planck, and XD75 keymaps.

* Tweaked XD75 keymap

* DRambo Planck keymap in Colemak

* Tweaked XD75 keymap

* Merge branch 'master' of https://github.com/DavidRambo/qmk_firmware

Removed redundant repos with "Rambo" title.

* changed iris nav layers

* changed nav layers for xd75

* Updated Iris, tweaked nav on xd75
2018-04-24 09:03:02 -07:00
a0a4c9102c Add Generic Keymap for my boards (#2795)
* add mechmerlin 60 ansi layout

* put meaningful #defines

* missed the backslash

* add merlin split layout

* rename to have a -ansi

* Add appropriate readme files

* rename KEYMAP to LAYOUT

* support for default layout

* support for the community keymaps

* make sure I don't break the configurator

* Don't break the configurator Merlin
2018-04-24 09:01:40 -07:00
fda23af281 Support for new keyboard: Meme (#2797)
* initial commit for meme keyboard

* Fix that row by column

* Fix those dimensions

* work in progress commit

* got that switch matrix to work

* add all supported layouts

* add info.json for QMK configurator support

* let my name be known
2018-04-24 09:00:22 -07:00
70101cf611 Formatting changes to Alpha readme.md (#2781)
* alpha with firmware added to list of keyboards, ready to push

* revised according to drashna's fixes

* keymap -> layout?

* fixed macro and improved layout issuesOC

* Update rules.mk

* Update alpha.h

* Update and rename keyboards/alpha/layouts/default/28_alpha/keymap.c to keyboards/alpha/keymaps/default/keymap.c

* alpha/readme.md added according to qmk templateOC

* resolved a careless merge conflict

* bugfix

* Fixed /keyboards/alpha/readme.md formatting issues
2018-04-22 20:09:52 -07:00
fb5115f6cd Fix command line options prefix. (#2790) 2018-04-22 14:19:45 -07:00
7801356bd4 Add layouts to 1up60rgb. (#2789)
* Add layouts to 1up60rgb.

* Fix build break in header file for 1up60rgb.
2018-04-21 23:16:25 -07:00
5d5b161d80 ALF X2 QMK Configurator Support (#2788)
* Add microswitch information for visiblity in QMK Configurator

* Add info.json with layouts for ALF X2

* Add new LAYOUTs

* remove that extra comma
2018-04-21 17:00:46 -07:00
7cb3c0e466 Add pretty layout to all ergodox clones (#2686)
* Add pretty layout to all ergodox clones

* Info.json cleanup for EZ

* Add info.json for ergodone

* info.json cleanup
2018-04-21 17:00:43 -04:00
3c224bffc8 Add personal Tada68 Keymap (#2633)
* Add personal Tada68 keymaps

* remove uneccessary tada68 folder

* recommit with temp name

* remove bad folder name

* fix bullet list format

* rename to fezzant

* remove unnecessary config.h file
2018-04-21 13:37:26 -07:00
5ca9aecfb4 Talljoe's layout with common keymap. (#2764)
* Add userspace to talljoe layout.

* Move more authority to userspace and create Bananasplit layout.

* Move more things into userspace.

* Common Core example

* More work on common layout.

* Num layer.

* talljoe-ansi layout

* Updates for Zeal60

* Add Zeal60 to 60_ansi_split_bs_rshift

* Swap Escape and Grave

* Num-layer tweaks

* More tweaks.

* Add 1up60rgb to world of layouts.

* Rename ansi_split_bs_rshift layout to hhkb.

* Control RGB Backlight.

* change capslock led

* Remove obsolete line from rules.mk.

* Add user-friendly userspace override.

* Fix enter for 1uprgb60

* Revert "Rename ansi_split_bs_rshift layout to hhkb."

This reverts commit 53133719db.
2018-04-21 10:48:30 -07:00
33fdd1d255 Fix Audio Clicky sub-feature (#2784)
* Fix Audio Clicky feature

* Add to features
2018-04-21 12:30:10 -04:00
d1c3419d2a Rework layer function docs (#2656)
* Rework layer function docs

* Update per PR feedback
2018-04-21 09:21:46 -07:00
9a7347e357 Adds config for ALF X2 60% keyboard (#2765)
* Adds initial keyboard config and layouts for ALF X2 60%

* Cleans up empty if/else blocks

* Renames KEYMAP to LAYOUT across the alf_x2 config files.

* Replaces include in alf_x2 keymaps with QMK_KEYBOARD_H macro
2018-04-21 07:32:53 -07:00
e36d6bbbe3 Update feature_tap_dance.md (#2643) 2018-04-21 00:43:36 -07:00
14b2a35571 Use QMK_KEYBOARD_H instead of the mykeyboard.h (#2780) 2018-04-21 00:22:30 -07:00
1bb77c0875 Update to drashna keymaps and userspace (#2756)
* Re-add NO_SECRETS option

* Add Thumb Clusters defines for default layout

* Minor tweaks

* More Minor tweaks

* Revert Orthodox layers and move function keys around

* Fix keymap so it will compile under the Infinity

Since I haven't added 'pretty' layouts to it yet

* Cleanup of userspace

* Cleanup keymaps

* OMG fix Workman

* Move mods layer key around

* Reduce debounce in Ergodox EZ

* Fix Infinity layers

* Add list of pins used by Ergdox EZ for easy reference

* Revert "Reduce debounce in Ergodox EZ"

This reverts commit 8a3db2673b419ef8032c40a6d29156cef632f9cd.

* Add Clicky toggle to Orthodox

* Fix Audio Clicky keycode

* Enable Faux Clicky by default

* Add Unicode stuff
2018-04-20 17:53:19 -07:00
4e4101efdf Fix Merge issue that reverted LS default keymap to KEYMAP (#2778) 2018-04-20 17:32:53 -07:00
46d12d90df changed the ALTFN layer key position and Readme file 2018-04-20 17:20:52 -07:00
c604cd6fd7 Add Nyquist Rev. 2 (#2414) 2018-04-20 17:02:09 -07:00
2a63e21279 Firmware for Alpha (28-key keyboard) (#2755)
* alpha with firmware added to list of keyboards, ready to push

* revised according to drashna's fixes

* keymap -> layout?

* fixed macro and improved layout issuesOC

* Update rules.mk

* Update alpha.h

* Update and rename keyboards/alpha/layouts/default/28_alpha/keymap.c to keyboards/alpha/keymaps/default/keymap.c

* alpha/readme.md added according to qmk templateOC

* resolved a careless merge conflict

* bugfix
2018-04-20 13:06:10 -07:00
503335be25 Added GH60 Satan ISO layout with split right shift and split backspace (#2773)
* added an iso layout that supports split backspace and split rshift

* added a keymap which uses the iso layout with split backspace and split rshift

* added a #define LAYOUT_ for the KEYMAP_

* fixed missing newline
2018-04-20 09:43:51 -07:00
0912c42f04 Add Staryu macropad support (#2768)
* 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
2018-04-20 09:14:40 -07:00
3ea8bcb8ae Add Carpalx keymap for Kinesis (#2771) 2018-04-20 09:13:14 -07:00
0ce2cc8915 Added dz60/eric and hhkb/eric (#2772)
* added hhkb eric

* dz60 and hhkb
2018-04-20 09:12:15 -07:00
ded9390944 Updated folder name; overdue updates to keymap and readme files (#2770)
* 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
2018-04-20 08:53:35 -07:00
3cab04dfa3 QMK Configurator support for alps64 pcb (#2774)
* Change KEYMAP to LAYOUT

* add layouts that match the layouts hasu has defined for alps64

* add layouts in info.json for aek, standard, and infinity

* Add LAYOUT_iso and LAYOUT_all along with respective info.json LAYOUTs
2018-04-20 08:52:56 -07:00
1de6458921 Launchpad (#2767)
* Line ending stuff again

* Added base launchpad files and a default layout

* Updated KEYMAP to LAYOUT, also editing default keymap a bit and added a readme
2018-04-20 08:51:34 -07:00
3bb647910a Updated info and fixed minor errors (#2769) 2018-04-19 18:11:07 -07:00
5ec3bd9e40 Adds default IC keymap (#2677) 2018-04-19 09:30:45 -07:00
d3c6da7aff Updated personal keymaps, fixed Let's Split default keymap, updated JJ40 README (#2704)
* 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
2018-04-19 09:28:55 -07:00
47f55f417b Implement magic 8-ball mode for big series switch (#2763) 2018-04-19 09:09:33 -07:00
eaa0b24335 ScrabblePad Support (#2760)
* Initial commit for donutcat's 15x15 monstrosity

* modify readmes to be more descriptive

* Add info.json to support QMK Configurator

* Update copyright and change REPLACE_WITH_YOUR_NAME to MechMerlin

* update naming convention for ScrabblePad

* remove .vscode directory as per Jack's comments
2018-04-19 11:31:50 -04:00
75360ebdae Add gh60 chaser Layout (#2757) 2018-04-19 07:20:03 -07:00
8ec2269519 Add magic backspace to my layout (#2758)
* Add Haegin's keymap

* Potential improvements to the keyboard

* Add haegin minidox layout

* Add Haegin's keyboard to ergodox layouts

* Update Haegin's minidox keymap

* Add home, end, and page up and down

* Magic Backspace

Backspace still acts as control when you hold it down, but if you tap it
twice and hold it's a held backspace. Tapping it more than twice it
continues to act as backspace, but it deletes more characters with each
tap with the quantity deleted based on the fibonacci sequence.

* Switch to deleting words after 4 taps

When hitting backspace, after 4 taps this switches to deleting by word
because if you're hitting backspace that frantically you must need to
delete a lot of stuff. Holding backspace after 4 taps will delete words
in the same way that holding alt+backspace deletes words on a normal
keyboard.
2018-04-19 07:18:58 -07:00
5226e4c79b Correct documentation for PREVENT_STUCK_MODIFIERS 2018-04-19 01:52:34 -04:00
7dda7158fb added omnikey_blackheart keyboard support (#2688)
* added omnikey_blackheart keyboard support

* fixing omnikey_blackheart layout

* fixing omnikey_blackheart NKRO
2018-04-19 01:52:17 -04:00
8b0b17a369 Add Faux Clicking as subset of Audio feature (#2748)
* Add Faux Clicky to main Audio feature

* Make clicky settings user configurable

* Add additional documentation

* Don't play when music mode is enabled (hopefully)
2018-04-19 01:47:04 -04:00
23b45710ac Add support for Big Series 1-key PCB by Woodkeys.click 2018-04-19 01:45:21 -04:00
b4bdebab9a Meira updates for bluetooth and audio (#2731)
* Add audio output

* Update Miera to fix bluetooth issues, bootloader definition.

* Added keymap with audio example

* Cleanup Meira audio code
2018-04-19 00:57:24 -04:00
3d3c093173 Added bending to MIDI (#2740)
This is done via MI_BENDD and MI_BENDU. At the moment the value is
hardcoded and cannot be adjusted (future commit?) and is the max for the
`midi_send_pitchbend` function (up or down).

`MI_BENDD` and `MI_BENDU` both require `#define MIDI_ADVANCED`

MIDI pitch bend was already implemented in `protocol/midi.c`, I merely
added the keycodes to trigger them. :) (thanks to Jack, two years ago
in commit fb4fe52c apparently)
2018-04-18 22:22:08 -04:00
a7fca47686 Link to Atmel's flip is broken. (#2752)
The link to Atmel's flip is broken. It re-directs to http://www.microchip.com/. Please update!

I think this is the correct link. Please verify.

http://www.microchip.com/developmenttools/productdetails.aspx?partno=flip
2018-04-18 22:21:36 -04:00
9ab786d1d8 Added amj40 keymap (#2754)
fixed shift area

keymap updates to try to make this thing usable

documentation tweaks

fix readme mismatch

clean up and finish docs
2018-04-17 20:50:50 -07:00
ec9058f227 impstyle keymap added (#2753) 2018-04-17 20:50:20 -07:00
5aada76f12 Update maartenwut's keymaps (tada68, atom47) and add GH60 layout (#2751) 2018-04-16 15:15:28 -07:00
e9d32b60b7 Add a custom USB driver for ARM (#2750)
* Copy Chibios serial_usb_driver into the chibios/protocol

It's renamed to usb_driver to avoid name conflicts

* Make the usb driver compile

* Disable ChibiOS serial usb driver for all keyboards

* Change usb_main to use QMKUSBDriver

* Initialize the usb driver buffers

* Add support for fixed size queues

* Fix USB driver initialization

* Don't transfer an empty packet for fixed size streams
2018-04-15 20:42:53 -04:00
e2fb3079c7 update Helix keymap 'five_rows' (#2635)
* add 'HELIX=' option for build

* add IOS_DEVICE_ENABLE for iPad

* shrink size to helix five_rows keymap.c

* shrink size. _ADJUST number change

* add KEYPAD layer

* modify keypad leyer

* display RGB mode on slave side OLED

* fix Colemak, Dvorak center DEL to BS

* change LEFT BS to LEFT SP and add AUX layer for try old map

* update update_base_layer()

* add right keypad and keypad func layer

* use MO() macro insted of LOWER,RAISE,ADJUST custom key-code

* remove LOWER,RAISE,ADJUST custom key-code
* use MO(_LOWER|_RAISE|_ADJUST)
* relayout ADJUST layer

* modify Function Layer. PGUP,PGDN swap HOME,END

* add Keypad aux layer for '00' send

* update README.md, README_jp.md

* fix README.md

* fix README.md, README_jp.md
2018-04-15 09:54:56 -07:00
13cdfb465d Add Illustrator keymap layout for Ergo42 (#2658) 2018-04-15 09:54:11 -07:00
1b711453ca Updated Levinson and Fourier keymaps (#2685)
* 	new file:   keyboards/dilly/keymaps/delmo/config.h
	new file:   keyboards/dilly/keymaps/delmo/keymap.c
	new file:   keyboards/dilly/keymaps/delmo/rules.mk
	new file:   keyboards/fourier/config.h
	new file:   keyboards/fourier/fourier.c
	new file:   keyboards/fourier/fourier.h
	new file:   keyboards/fourier/i2c.c
	new file:   keyboards/fourier/i2c.h
	new file:   keyboards/fourier/keymaps/default/config.h
	new file:   keyboards/fourier/keymaps/default/keymap.c
	new file:   keyboards/fourier/keymaps/default/rules.mk
	new file:   keyboards/fourier/keymaps/valgrahf/config.h
	new file:   keyboards/fourier/keymaps/valgrahf/keymap.c
	new file:   keyboards/fourier/keymaps/valgrahf/rules.mk
	new file:   keyboards/fourier/matrix.c
	new file:   keyboards/fourier/readme.md
	new file:   keyboards/fourier/rev1/config.h
	new file:   keyboards/fourier/rev1/rev1.c
	new file:   keyboards/fourier/rev1/rev1.h
	new file:   keyboards/fourier/rev1/rules.mk
	new file:   keyboards/fourier/rules.mk
	new file:   keyboards/fourier/serial.c
	new file:   keyboards/fourier/serial.h
	new file:   keyboards/fourier/split_util.c
	new file:   keyboards/fourier/split_util.h

* 	new file:   keyboards/levinson/keymaps/valgrahf/config.h
	new file:   keyboards/levinson/keymaps/valgrahf/keymap.c
	new file:   keyboards/levinson/keymaps/valgrahf/rules.mk

* 	modified:   keyboards/levinson/keymaps/valgrahf/keymap.c

* 	deleted:    keyboards/dilly/keymaps/delmo/config.h
	deleted:    keyboards/dilly/keymaps/delmo/keymap.c
	deleted:    keyboards/dilly/keymaps/delmo/rules.mk

* 	modified:   keyboards/fourier/keymaps/valgrahf/keymap.c

* 	deleted:    keyboards/fourier/config.h
	deleted:    keyboards/fourier/fourier.c
	deleted:    keyboards/fourier/fourier.h
	deleted:    keyboards/fourier/i2c.c
	deleted:    keyboards/fourier/i2c.h
	deleted:    keyboards/fourier/keymaps/default/config.h
	deleted:    keyboards/fourier/keymaps/default/keymap.c
	deleted:    keyboards/fourier/keymaps/default/rules.mk
	deleted:    keyboards/fourier/keymaps/valgrahf/config.h
	deleted:    keyboards/fourier/keymaps/valgrahf/keymap.c
	deleted:    keyboards/fourier/keymaps/valgrahf/rules.mk
	deleted:    keyboards/fourier/matrix.c
	deleted:    keyboards/fourier/readme.md
	deleted:    keyboards/fourier/rev1/config.h
	deleted:    keyboards/fourier/rev1/rev1.c
	deleted:    keyboards/fourier/rev1/rev1.h
	deleted:    keyboards/fourier/rev1/rules.mk
	deleted:    keyboards/fourier/rules.mk
	deleted:    keyboards/fourier/serial.c
	deleted:    keyboards/fourier/serial.h
	deleted:    keyboards/fourier/split_util.c
	deleted:    keyboards/fourier/split_util.h

* 	deleted:    keyboards/fourier/config.h
	deleted:    keyboards/fourier/fourier.c
	deleted:    keyboards/fourier/fourier.h
	deleted:    keyboards/fourier/i2c.c
	deleted:    keyboards/fourier/i2c.h
	deleted:    keyboards/fourier/keymaps/default/config.h
	deleted:    keyboards/fourier/keymaps/default/keymap.c
	deleted:    keyboards/fourier/keymaps/default/rules.mk
	deleted:    keyboards/fourier/keymaps/valgrahf/config.h
	deleted:    keyboards/fourier/keymaps/valgrahf/keymap.c
	deleted:    keyboards/fourier/keymaps/valgrahf/rules.mk
	deleted:    keyboards/fourier/matrix.c
	deleted:    keyboards/fourier/readme.md
	deleted:    keyboards/fourier/rev1/config.h
	deleted:    keyboards/fourier/rev1/rev1.c
	deleted:    keyboards/fourier/rev1/rev1.h
	deleted:    keyboards/fourier/rev1/rules.mk
	deleted:    keyboards/fourier/rules.mk
	deleted:    keyboards/fourier/serial.c
	deleted:    keyboards/fourier/serial.h
	deleted:    keyboards/fourier/split_util.c
	deleted:    keyboards/fourier/split_util.h

	keyboards/fourier/

* 	new file:   keyboards/fourier/config.h
	new file:   keyboards/fourier/fourier.c
	new file:   keyboards/fourier/fourier.h
	new file:   keyboards/fourier/i2c.c
	new file:   keyboards/fourier/i2c.h
	new file:   keyboards/fourier/keymaps/default/config.h
	new file:   keyboards/fourier/keymaps/default/keymap.c
	new file:   keyboards/fourier/keymaps/default/rules.mk
	new file:   keyboards/fourier/keymaps/valgrahf/config.h
	new file:   keyboards/fourier/keymaps/valgrahf/keymap.c
	new file:   keyboards/fourier/keymaps/valgrahf/rules.mk
	new file:   keyboards/fourier/matrix.c
	new file:   keyboards/fourier/readme.md
	new file:   keyboards/fourier/rev1/config.h
	new file:   keyboards/fourier/rev1/rev1.c
	new file:   keyboards/fourier/rev1/rev1.h
	new file:   keyboards/fourier/rev1/rules.mk
	new file:   keyboards/fourier/rules.mk
	new file:   keyboards/fourier/serial.c
	new file:   keyboards/fourier/serial.h
	new file:   keyboards/fourier/split_util.c
	new file:   keyboards/fourier/split_util.h

* 	modified:   keyboards/fourier/keymaps/valgrahf/keymap.c

* 	modified:   keyboards/fourier/keymaps/valgrahf/keymap.c
2018-04-15 09:51:38 -07:00
5d36118eaa Add French Layout for XD75 (#2681) 2018-04-15 09:50:46 -07:00
b7d095fdc3 Added Factory Style LED Controls (#2678)
* This adds a keymap to the MF68 labeled factory.  It is an attempt to mimic the layout on the factory keycaps of the non-backlit board.

There are some small differences:

1) FN+WASD are an arrow cluster
2) FN+Z (Start media player) and FN+] (Start Calculator) are not mapped
3) FN+GHJKL are Backlight controls
4) An FN2 layer exists for future growth
5) The CAPS key is maped as FN2, for CAPS Lock use FN+CAPS

* Changed the CAPS key to be CAPS Lock on short press, FN2 on hold

Added LED controls to FN+Arrow Keys to better mimic factory backlit boards.
2018-04-15 09:49:31 -07:00
ed62c6e146 Ajp10304 (#2719)
* AJP10304 layouts for Planck and JJ40 now have mouse support. Moved macros onto Adjust layer

* .gitignore for intellij iml files.

* Updated Macros to use send string
2018-04-15 09:48:19 -07:00
32fd5e4f61 keymaps for Iris, Planck, Satan, and XD75 (#2747)
* DRambo Planck keymap in Colemak

* DRambo Planck keymap in Colemak

* Satan GH60 keymap for Bri

QWERTY layout with Navigation layer toggled with "Caps Lock" key.

* xd75 keymap in Colemak for Mac and Win

* DRambo Planck keymap in Colemak

* Satan GH60 keymap for Bri

QWERTY layout with Navigation layer toggled with "Caps Lock" key.

* xd75 keymap in Colemak for Mac and Win

* Added Iris Colemak layout for Mac, Windows, and Gaming.

* changed comment text

* DRambo Planck keymap in Colemak

* Satan GH60 keymap for Bri

QWERTY layout with Navigation layer toggled with "Caps Lock" key.

* xd75 keymap in Colemak for Mac and Win

* Added Iris Colemak layout for Mac, Windows, and Gaming.

* changed comment text

* Added Iris keymap from DavidRambo

* Added planck keymap from DavidRambo

* Added xd75 keymap from DavidRambo

* Added readme
2018-04-15 09:46:26 -07:00
fe8b9d0d0f adding the 256k HHKB layout to the library (#2742)
* adding the 256k HHKB layout to the library

* changed the layouts for the modifying layers and added a readme file to explain my layout
2018-04-15 09:09:55 -07:00
412af0f4e7 New DZ60 layout (#2744)
* initial commit

* - Move layout to readme
- Finish first (0) layer

* remove cruft

* fix ASCII keymap in readme

* fix ASCII keymap in readme #2

* fix ASCII keymap in readme

* rename layers

* use 2 shift layout

* rename layers, populate additional layers

* final layout (TM)

* fix RGB saturation increase position
2018-04-15 09:09:15 -07:00
d55ee204db qwerty_code_friendly: optional 80 key layout (#2745) 2018-04-15 09:08:28 -07:00
cdb967f22b Fix link to command page 2018-04-15 11:53:31 -04:00
28307be72f Add chiwi60 layout for the do60
Add info.json to support the layouts for QMK Configurator
Rename LAYOUT to LAYOUT_all
2018-04-13 23:50:48 -04:00
530dd446cb Fix incorrect port direction setting in my previous pull request for pins B5, B6, B7 (#2739)
* Added support for audio using pins C4, C5, B6, B7

* Fixed bug where port direction wasn't set correctly for B5, B6, B7 audio ports
2018-04-13 03:53:29 -04:00
22215a0e92 Added support for audio using pins C4, C5, B6, B7 2018-04-12 13:14:48 -04:00
5319667c55 Support upcoming caps_unlocked boards in QMK Configurator (#2738)
* Change KEYMAP macro to LAYOUT macro

* Add CU24 QMK Configurator Support

- Change KEYMAP macro to LAYOUT macro
- Add new LAYOUTS to support a default numpad

* QMK Configurator Support for CU75

Add LAYOUT_all to support all layouts
Add corresponding info.json
2018-04-12 13:03:50 -04:00
f10a0ae547 Remove bootloader from info.jsons 2018-04-11 21:32:09 -07:00
3d3716bbf7 Beginning implementation of Pearl backlight. Levels and breathing not working yet. 2018-04-11 23:55:41 -04:00
6982e63a4a Tabs to spaces in usb_descriptor.h 2018-04-11 18:13:32 -04:00
e8082b5f9e Add support for NovelPad/NumChoc by NovelKeys and Woodkeys 2018-04-11 18:11:42 -04:00
4cfd1e30fc More QMK Configurator Warning/Error Fixes (#2720)
* Add readme with brief description
Change KEYMAP to LAYOUT

* Add readme.md with brief description
Use LAYOUT macro

* add a readme.md file

* Add readme.md with brief description
Use LAYOUT macro

* Add readme.md with brief description
Use LAYOUT macro

* Fix "Warning: contra: Missing layout pp macro for ['planck_mit', 'planck_grid']",

* Use LAYOUT macro
2018-04-11 18:10:55 -04:00
0c4a6bf2db Improve JJ40 Cockpit documentation (#2729)
* Add JJ40 Cockpit keymap

* Fix lower layer symbols

* Improve documentation JJ40 Cockpit
2018-04-11 10:20:00 -07:00
3caf0761cd jj40 Personal keymap added (#2728)
* fix: Miss commnts.

* edit: Enter position

* Add: config.h

* Edit: Double space key

* fix: Lower and Raise

* delete: Not used keys.

* edit: change position Lower and Raise

* Add: Functions
2018-04-11 10:19:06 -07:00
05dcb48aa9 Added personal keymap (#2727) 2018-04-11 10:18:36 -07:00
244b1ef79b Personal keymap added (#2723)
Personal keymap added.
2018-04-11 10:17:32 -07:00
0545428c14 Added mattdicarlo Tada68 layout. (#2721) 2018-04-11 10:17:02 -07:00
885f06c6cf Add readme for "major" keyboards to eliminate more QMK Configurator errors (#2718)
* add readme to ktype keyboard

* add readme to m10a

* add readme to mini1800

* add readme to parent directory
2018-04-08 22:10:14 -04:00
a33c0949e0 Add JJ40 Cockpit personal keymap (#2713)
* Add JJ40 Cockpit keymap

* Fix lower layer symbols
2018-04-08 11:21:24 -07:00
955a6586a3 hhkb jp personal keymap (#2698) 2018-04-08 11:16:08 -07:00
f32e0200ed Normacos keymap for let's split keyboard (#2691)
* 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
2018-04-08 11:14:41 -07:00
1f77868427 More Configurator Warning Fixes (#2716)
* mf68_ble did not have the correct .c and .h files

* Fix JC65 KEYMAP to LAYOUT

* Change KEYMAP to LAYOUT for s60_x

* Convert KEYMAP to LAYOUT for lets_split boards

* Convert KEYMAP to LAYOUT

* more fixes to keymap for iris

* convert KEYMAP to LAYOUT for levinson keyboard

* change losinggeneration's KEYMAP to LAYOUT

* convert KEYMAP to LAYOUT

* convert KEYMAP to LAYOUT for nyquist

* convert KEYMAP to LAYOUT

* convert KEYMAP to LAYOUT for viterbi

* convert KEYMAP to LAYOUT

* convert KEYMAP and its subsidiries to the LAYOUT standard

* convert KEYMAP and its subsidiries to the new LAYOUT standard
2018-04-07 23:32:14 -07:00
958521c359 Clean up some long-standing errors when populating the API (#2715) 2018-04-07 22:49:16 -07:00
3b525dcf9c Remove obsolete info.json entries (#2712) 2018-04-07 17:37:31 -07:00
f4a9e98383 Pull information from config.h and rules.mk (#2711)
* Pull information from config.h and rules.mk

* Readd the kbd75 maintainer
2018-04-07 16:13:48 -07:00
c0baf2a964 Improve state/chord handling and clean up namespace
Some values that can never, ever, change were held in local
variables, rather than in PROGMEM. Fixed.

Change "pressed" to a signed int so the test for < 0 makes
sense, and to avoid possible weird failure modes in the
case where a key release comes in when pressed is already
zero. (Shouldn't happen, sure, but computers are weird.)

A lot of things in process_steno had external linkage for no
particular reason. They've been marked static. Stuff still
builds.

Distinguish between currently-held keys and keys that have
been held, and expose these values through a nicely-named API
so other code could, say, check on the current set of steno
chording in order to make displays. Also in passing fix up the
"state" value having external linkage so it could clash with
other people's variable declarations.

The API also provides hooks for key processing and steno chord
events, so you can monitor those events without having to
run in matrix_scan_user and recheck the values directly. Also
document these.

There is no path through processing a key that doesn't
end with a return false, so the nested return foo() are
gone and we just return false.
2018-04-07 17:12:44 -04:00
5f4c2dfd84 Fix some Configurator Warnings regarding LAYOUT vs KEYMAP (#2708)
* change diverge 3 KC_KEYMAP to LAYOUT

* Change KEYMAP to LAYOUT for handwired arrow pad

* change M10A to LAYOUT for m10-a

* Change KC_KEYMAP to LAYOUT_kc and KEYMAP to LAYOUT for mf68

* change KC_KEYMAP to LAYOUT for nano

* Refactor to LAYOUT

* refactor to LAYOUT-ansi and LAYOUT_iso for s65

* LAYOUT conversions for lfkkeyboards

* missed a few renames

* mini1800 for lfkeyobards support of LAYOUT
2018-04-07 15:14:53 -04:00
b7dc17ef33 Small fixes to TKC1800
- adjust F-row to use 0.25 spacing
 - split left shift
 - add key_count
2018-04-07 14:36:35 -04:00
a859a2ee96 Fix KC60 info.json file (#2707)
* change KEYMAP to LAYOUT in all the KC60 files

* Redo the info.json file
2018-04-07 13:04:36 -04:00
0f0c2da983 Add the Speedo keyboard 2018-04-07 12:56:21 -04:00
d78e630641 Clueboard 60 info.json
- adds
   - LAYOUT_60_ansi
   - LAYOUT_60_iso
   - KEYMAP_AEK
   - KEYMAP
   - LAYOUT_60_ansi_split_bs_rshift
2018-04-07 12:29:36 -04:00
8478ef648f Add TKC1800 info.json
Created an info.json for the tkc1800.
2018-04-07 11:06:18 -04:00
4cb7907547 Add 2 missing F-Row keys 2018-04-06 12:22:03 -04:00
25b1d02157 Adds Phantom TKL support (#2696)
* Add an info.json to phantom keyboard

* Add layouts

 - KEYMAP_WINKEYLESS
 - KEYMAP_7BIT
 - KEYMAP_ISO
 - KEYMAP_ISO_WINKEYLESS

* Add key_counts
2018-04-06 03:42:44 -04:00
4feaf1fd76 Add Nyquist keymap (#2692)
* nyquist

* danielhklein nyquist setup

* shift left controls

* remove readme

* cleanup before pr

* ready for pr
2018-04-05 23:44:28 -07:00
d777a05864 Add support for rev3 of the Atom47 (#2672)
* Added support for rev3 of the Atom47

* Updated Atom47 readme's

* Fix redefine error on rev2 and add maartenwut's keymap

* Fix redefine error on LEdiodes keymap
2018-04-05 19:16:35 -04:00
7bbc9ccc31 change KEYMAP to LAYOUT for all new keyboards made using this script 2018-04-05 19:15:50 -04:00
0d0664a214 Various tweaks for some Input:Club build processes 2018-04-05 16:59:27 -04:00
011039afca Zweihander: swap space and enter keys (#2665)
* zweihander-osx: Remove app keys, etc.

- add right command keys
- add F16 on ;' for Siri
- remove command-Q (too easy to hit)

* Rename zweihander-osx to zweihander-macos

zweihander-macos: / / ^ → / / ⌥; README revamp

zweihander: rename, ⌃ → ⌥, README revamp

* Zweihander: swap space, enter keys

Left thumb needs a break.
2018-04-04 09:18:15 -07:00
6cc9d59ee8 Enables unicode for Mitosis (#2668)
* fixed comment typo

* Fixes invalid capitalization

Uppercase yes is invalid, so make treats it as no, which is
confusing when it seems like it should have found the method
definition for unicode.

* Own keymap, comma in mitosis

Own keymap is qwerty, workman, numbers, punctuation, function/mouse
layers, gaming, unicode, numberpad.
2018-04-04 09:17:38 -07:00
f281f7dc3a i got a new toy (#2673)
Personal keymap for Waples
2018-04-04 09:16:49 -07:00
ba2cab1a89 This adds a keymap to the MF68 labeled factory. It is an attempt to mimic the layout on the factory keycaps of the non-backlit board. (#2674)
There are some small differences:

1) FN+WASD are an arrow cluster
2) FN+Z (Start media player) and FN+] (Start Calculator) are not mapped
3) FN+GHJKL are Backlight controls
4) An FN2 layer exists for future growth
5) The CAPS key is maped as FN2, for CAPS Lock use FN+CAPS
2018-04-04 09:15:43 -07:00
738588618b Update input:club boards to use the proper vendor and device 2018-04-04 01:31:45 -04:00
67268db576 convert to unix line-endings [skip ci] 2018-04-04 04:21:53 +00:00
c25f0e6983 Fix readme to explicitly call out that there are two different versions of this board and how to compile them 2018-04-04 00:17:37 -04:00
f6b3c67678 Update whitefox to use the K-Type teensy workaround 2018-04-03 23:06:14 -04:00
67053712f8 Refactor/eagle viper with new layouts for QMK Configurator (#2659)
* rename KEYMAP to LAYOUT_ALL

* Standard Layout Eagle Refactor

New layout LAYOUT_EAGLE
Got standard layout backspace working

* Remove split right shift support for standard layout eagle

* add back the KC_NO for split right shift

* Remove KC_NO from bottom row to support standard 60 layout

* Fix formatting issues with mechmerlin keymap

* remove extra KC_NO from split right shift in LAYOUT_EAGLE

* Preliminary checkin for new layout LAYOUT_VIPER

* Remove some of the KC_NO from the layout

* Fix formatting

* missed a KC_NO for the LAYOUT_EAGLE

* remove KC_NO from enter key of LAYOUT_VIPER

* some more formatting changes

* Default 60 with split left right shift and backspace

* add info.json layouts to match the new LAYOUTs

* change formatting of LAYOUT names

* propogate renames to info.json
2018-04-02 16:23:21 -04:00
0ca6b53f89 Clueboard Double 1800 support (#2655) 2018-04-01 12:12:45 -07:00
6f3cbdb5f7 Added birkir's keymap (#2653) 2018-04-01 07:29:19 -07:00
162a67cbc5 Add userspace config.h handling to build script (#2640)
* Add userspace 'config.h' file

* Add more robust docs

* Remove config.h code from drashna userspace

* Spelling error

* Include links to Config Options page

* Remove config.h documentation from userspace doc, as it's no longer needed
2018-04-01 00:02:40 -04:00
cc323df9ba Fix broken Markdown (#2652)
Fix links in Keyboard Guidelines page
2018-03-31 20:54:01 -07:00
deb5a4b6a9 Convert all Preonic keymaps to layout format (#2644)
* Convert all Preonic keymaps to layout format

* Make sure preonic layouts are using QMK_KEYBOARD_H
2018-03-31 22:39:00 -04:00
61a2169ff9 Update to Drashna Keymaps and Userspace (#2650)
* Change global config.h settings

* Make Shift LED brighter

* Compatibility Tweaks

* Update ASCII art and layer comments

* Add comments about MOD layer

* Change ASCII art for reset, since it was out of date

* Use Overwatch theme for Workman layer

* Fix RGB define comments

* Make sure RGB set list matches

* Stop all notes for custom Faux Click

* Switch to OSM for everything, and remove RGB Sleep

* Never use KEYMAP now

* Only enable RGB Sleep on Non-Ergodox boards

* Cleanup do to new rgblight_list.h file

* Add redirect message for RGB codes

* Update userspace documentation

* Cleanup of Userspace

Add unicode support, and cleaned up comments for ifdef statements

* Remove unneeded slashes

* Unicode handling

* Force NKRO
2018-03-31 22:38:06 -04:00
adae37f19f Add XD60 support to QMK Configurator
Add info.json

Change KEYMAP to LAYOUT_ALL to better reflect that this is a
LAYOUT that fits ALL the possible positions for switches.

We will need to make better LAYOUTS for the future.
2018-03-31 22:37:45 -04:00
015aed50a3 AMJ96 Support (#2651)
* Initial commit: Get things compiling

* port the custom matrix code

* Update readme

* make second layer fully transparent

* populate config.h identifiers with more correct information

* Add in switch backlight support

* Enable backlight LEDs, and change pin for RGB

* port TMK version over

* remove all that TMK stuff, it didn't work lol

* Updated readme

* Fix keymap

- Change KEYMAP to LAYOUT
- Adjust formatting of table

* Edit readme to reflect NOTES

* add info.json for QMK configurator support

* Replaced placeholder with MechMerlin
2018-03-31 01:57:49 -04:00
c6b5ce61e8 Fix Octagon info.json issues (#2649)
Change KEYMAP to LAYOUT while I'm at it.
V1 and V2 now have their own info.jsons
2018-03-30 19:20:26 -07:00
a74f866941 Just a multilayered Layout using tapdance (#2645)
* Ported JJ40 Layout to Contra

* Update readme.md
2018-03-30 13:07:36 -07:00
c31f7ff91b Hopefully fix Travis Auto-Incrementation
This reverts the changes in #2491, so that Travis will hopefully return to automatic incrementing.
But this includes the layout and userspace excepts, as well.
2018-03-29 18:18:50 -04:00
c2bec5b3f0 Properly always copy firmware
This finishes fixing #2314, which mostly copies the firmware when compiling.
However, it misses `:teensy`, `:avrdude` and most importantly, `:production`
2018-03-29 15:38:42 -04:00
fb34fdbbc9 Added cpeters1982 keymap folder in lets_split (#2583)
* Added cpeters1982 keymap folder in lets_split

* Deleted tap dance. need to research error

* Changed keymap to better facilitate SpaceFn

* Trying to get backlighting to work

* Added RGB backlight support

* cleared some cache files per Drashna's instructions
2018-03-29 10:44:26 -07:00
5641b1da20 layouts/default: fill in 60_ansi keymaps 2018-03-29 00:52:46 -04:00
931a52d1ae Support for the Paladin64 PCB (#2639)
* Support for the Paladin64 PCB

* Paladin64: Added readme. Added the bootloader option to rules.mk

* Fixed the formatting

* fixed the flash command
2018-03-28 23:20:15 -04:00
331288233d Add rgblist to docs 2018-03-28 16:55:58 -04:00
c1b46206a7 Fix commands and update my userspace (for testing) 2018-03-28 16:55:58 -04:00
9cfeb4e6cf add RGB commands as global functions 2018-03-28 16:55:58 -04:00
bdb718af0d Fix RGB Sleep code 2018-03-28 15:37:00 -04:00
c39780b8e1 Add Support for Software Workman (#2632)
This adds the keymap translations and sendstring definitions to support software workman.
2018-03-28 12:07:59 -07:00
b5e899ede7 Adding Haegin's keyboard layout for the ergodox and minidox (#2637)
* Add Haegin's keymap

* Potential improvements to the keyboard

* Add haegin minidox layout

* Add Haegin's keyboard to ergodox layouts

* Update Haegin's minidox keymap
2018-03-28 12:03:32 -07:00
01c72e8dce changed super key to left super key (#2631) 2018-03-27 13:58:09 -07:00
b61974b301 mitosis:datagrok: minor layout improvements (#2366)
* mitosis/datagrok: make qwerty the default layout

* mitosis/datagrok: update readme to match qwerty default

* mitosis:datagrok: remove redundant name for transparent

meh, decided i don't need an extra key to represent "key that is
transparent because it's a modifier on a layer below." it's a maintenance
burden when moving other keys around

* mitosis:datagrok: add num lock on Blue + QWERTY T

* mitosis:datagrok: tap lshift = tab

we use tab completion a lot so let's get it onto an unmodified key somehow

* mitosis:datagrok: update readme

* mitosis:datagrok: improve notes in README

* mitosis:datagrok: note numlock in README
2018-03-27 09:18:28 -07:00
9f5a4af09c XD60 ANSI (GH60) layout (#2624)
* configure layer 0 layout for xd60 as ANSI 60%

* update keymap with function key immediately right of spacebar;
shuffle mapping in function layer to my liking

* update readme
2018-03-27 09:04:09 -07:00
1305d8de80 [TADA68] Added mac layout with german umlaute on ansi. (#2615) 2018-03-27 09:01:32 -07:00
55d0b1f048 Create new 'tada68/iso-uk' layout tailored for boards with the big fat iso enter key (#2612) 2018-03-27 09:00:52 -07:00
d3a0c7e3a6 qmk configurator support for e6v2. Let it be known that this is one of the keymaps I've seen done right 2018-03-27 11:47:32 -04:00
b773d94477 Add qmk configurator support for KBD75
Also changed KEYMAP to KEYMAP_ALL to be more explicit that it's
a layout supporting ALL possible layouts.
2018-03-27 11:39:03 -04:00
19a1fbaca2 Better non-Linux support (#2524)
* grep -> $(GREP)

Some UNIXy systems (FreeBSD for example) don't use GNU grep by default.
Allow the user to specify which grep implementation to use so that
GNU grep can be specified.

* Allow using versioned avr-gcc command

Don't hardcode "avr-gcc", and allow strings such as "avr-gcc8", or
"avr-gcc-7.3.0" to match checks for "avr-gcc".
2018-03-26 16:08:08 -04:00
ae7284edb8 rename api docs to internals 2018-03-26 11:43:37 -07:00
66162b2b68 add grave to auto-shift. 2018-03-26 13:42:08 -04:00
2038a515d9 change rgblight_increase_val() and eeconfig_update_rgblight_default(), use RGBLIGHT_LIMIT_VAL insted of 255. 2018-03-26 13:41:53 -04:00
b922a550dc Add pearl README, add rask's Pearl layout 2018-03-26 13:34:53 -04:00
ee1bb85542 Expand Newb Guide flashing document (#2588)
* Add header info

* Add DFU section

* Add Caterina section

* Add Halfkay section

* Fix Typos

* More typos
2018-03-26 13:34:18 -04:00
07b90db897 Fixes and updates to docs (#2611)
* Fix advanced keycode headers

* Add caveat for OSM over Remote Desktop

* Hopefully add better anchors to docs

* Add Action code list reference

* Formatting of RGB Underglow doc

* Add brew update issue on macOS

* Revert formatting

* Revert RGB doc formatting

* Make Config Options doc's sections linkable
2018-03-25 16:44:17 -07:00
0c665696d7 Update to drashna files (#2587)
* Add Colemak Mod-DH vars

* Add Norman Layot vars

* Set Shift Indicator to include CAPS Lock as well

* Change MEH to GUI

* Add Enter to Macro layer

* Switch raise and lower layers to make more sense (to me)

* Replace unused quote on Ergodox

* Add One Shot defines

* Dim indicator LEDs

* Add short codes for KC_SECRET

* Fix typos

* Update OLKB code in userspace

* Add global userspace config.h

* add compile fix

* Automatically include  from userspace

* update readme

* Re-add QMK Scan loop

* Add EEPROM reset code to all keymaps

* Shorten fauxclick sound

* Use layouts instead of keymap, when possible

* Add OSM detection to ergodox

* Convert Viterbi to LAYOUT macro

* Clean up game macros

* Because I accidently removed the C6 AUDIO define from my viterbi... Whoops

* Minor formatting

* Fix Woodpad because it's still there

* Move Ergodox keymap into layouts folder

* Add build date to version macro

* Remove PREVENT_STUCK_MODIFIERS from config
2018-03-25 13:01:15 -07:00
a09a042b8f New keymap and more songs (#2609)
* Added some new songs and my own keymap

* Made Dodger keymap safe to use with backlight disabled

* edited layer switching and added more songs

* changed keymap to lowercase
2018-03-25 12:58:40 -07:00
3d587b1d2f Merge in some custom keymaps from forked repository (#2605)
* Inital layout

* Fix the backspace

* add a number pad

* move the backlight to the adjust layer; move ctrl and delete.

* Update from main repo

* Add initial files for custom keymap

* Light keymap mod

* Change the submodules to match the upstream fork's master branch
2018-03-25 12:56:36 -07:00
c4f9b8f297 make new_project.sh work correctly on osx too 2018-03-25 13:20:30 -04:00
e72cad44fa Add Layouts to exclusion 2018-03-25 13:19:14 -04:00
f67950df27 Ignore users folder for Travis tagging 2018-03-25 13:19:14 -04:00
b23d2a68dc add syscalls.c if autoshift is enabled, to fix compile issue on ChibiOS 2018-03-25 13:18:28 -04:00
34580baccf Fix #1566 - NKRO reseting issue 2018-03-25 13:17:52 -04:00
d9c6e7487b Refactor/v60 type r keymap/layout (#2593)
* Add a proper ANSI layout

Changed v60_type_r.h to have a proper ANSI layout
Modify keymaps to reflect above changes
Fix comments

* Add new layout to info.json
2018-03-25 00:59:36 -04:00
fa0d97a37f info.json configurator support for popular 65% keyboards (#2589)
* Support for tada68 ansi layout.

Avoiding the iso layout as it doesn't seem correct

* whitefox support for configurator

* configurator support for jc65 PCB featuring both the qmk and ps2avrgb versions
2018-03-25 00:59:17 -04:00
59a784500b Initial support for RAMA M6-A (#2600)
* Initial commit of RAMA M6-A firmware.

* Added LED support

* Added Knops support

* Fixed compile error for knops keymap.

* updated readme.md

* updated readme.md

* updated readme.md
2018-03-25 00:58:55 -04:00
00dfa73e4c Added basic support for JJ50 (preonic-like based on atmega32A) (#2546)
* 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
2018-03-24 13:03:24 -04:00
4adc333455 Fix mechmini2 ortho keymapping layout
A misconfiguration in the ortho layout, K306 key was registered as k305
2018-03-24 12:52:42 -04:00
4e92dceed8 Add Fourier Keyboard (#2596)
* Initial commit of Fourier keyboard

* Revise keymap, add key to bottom row

* Fix readme
2018-03-24 12:50:44 -04:00
f77ecb8960 Add Laplace keyboard 2018-03-24 12:50:16 -04:00
d965d72d4a Fix custom functions documation for layer_state_set* 2018-03-24 12:49:56 -04:00
70cf46d4f1 fix the moxygen invocation 2018-03-23 22:42:08 -07:00
3ee59a79aa Add HSV value specification (#2481)
* Update feature_rgblight.md

I got caught out with this as most color pickers use a percentage NOT 0-255 for this number

* Amended description

Woops! Was focused on s/v not being a percentage i got h wrong.
2018-03-23 16:10:32 -07:00
824d584d8c New keymap for The Helix keyboard("five_rows") (#2592)
* duplicate keyboards/helix/rev2/keymaps/default to keyboards/helix/rev2/keymaps/five_rows

* OLED Layer display 'Qwerty','Colemak','Dvorak'

* set Qwerty, Lower, Raise map

* set Colemak map

* set Dvorak map

* OLED Layer display 'Raise','Lower' change to 'Extra char','Function'

* fix ExtraChar Layer Shift-key disable

* Raise,Lower,Adjust layer modify

some key change KC_TRNS to KC_NO
add KANA, EISU key

* refine keymaps/five_rows/{config.h,rules.mk} for easy and safe customize

* modify Adjust layer: all function into left hand, remove F1..F12,DEL

* Add Helix five_rows keymap README.md and README_jp.md

* Raise Layer modify: enable Raise(Extr)+Lower(Func)==Adjust

* fix image file url in README.md,README_jp.md

* change Layer display on OLED

* change OLED display base name position
2018-03-23 16:08:37 -07:00
3a49ad06cd New keymaps for bananasplit (#2586)
* New bananasplit keymap with toggable capslock led.

* Update comments.

* Update readme.md

* Updated keymap name

* update some keys.

* new layout for bananasplit

* update comment

* Update readme.md
2018-03-23 16:07:10 -07:00
f56ded3214 add README.md into keyboards/helix/rev2/keymaps/led_test/ (#2582) 2018-03-23 16:04:49 -07:00
6b060bb9ad Add atlacat keymap (#2581) 2018-03-23 16:04:19 -07:00
d0054c41e2 Fix typo in autoshift docs: statn (#2579) 2018-03-23 16:03:19 -07:00
XP
8575249411 Add a basic keymap for Contra. (#2564) 2018-03-23 16:02:44 -07:00
8621fd8bbd ekis_isa keymap for HHKB'ish layout (#2562) 2018-03-23 16:01:57 -07:00
4cf4fe80ec Just personal layout tweaks :) (#2557)
* More ergonomic mousekeys

* integrate some recent hardware changes by changing the Plover keymap

* use TX Bolt support instead of Plover toggles

* switching to steno is no longer as intrusive, so this can move back to BASE
2018-03-23 16:00:36 -07:00
ec5cc02bf0 Preonic Ergodox-Like Mac keymap: Bucktooth (#2553)
* Preonic Ergodox-Like Mac keymap: Bucktooth

This is a layout unlike most Preonics, it is taken partially from
Ergodox and classic C64 keyboards with a ton of Mac-specific features.

* Fix Mouse Left keycode
2018-03-23 15:59:56 -07:00
7a86a67d99 Fix broken markdown headers. (#2548) 2018-03-23 15:59:15 -07:00
6706e1af6c Add new keymap for iris transmogrified (#2361)
* Create config.h

* Create rules.mk

* Create keymap.c
2018-03-23 15:57:22 -07:00
426c71de74 Add new bfake "FaceW" keymap (#2360)
* Add mechmerlin keymap and readme for facew board

* Fix keymap
- Backspace as on the wrong key
- HHKB backspace changed to backslash

* Update keymap.c

Change TO to TG for toggle.
2018-03-23 15:56:36 -07:00
b3e7149a65 yet another keymap (#2356)
* added keymap

* added readme
2018-03-23 15:55:46 -07:00
c3c4164faf That-Canadian Preonic layout (#2462)
* Line ending stuff again

* Added my own person keymap to preonic folder

* Updated my preonic keymap

* Updated my preonic keymap
2018-03-23 15:54:02 -07:00
c808680436 initial branch (#2379)
* initial branch

* lazy-push

* Fix schema

Updated README, readded DVORAK to keymap.
Updated dir name to lowercase.

* removed executable bit

* testing switched L_GUI position
2018-03-23 15:51:32 -07:00
7c9d5ace14 Generate API docs from source code comments (#2491)
* Generate api docs from source code

* Add a bunch of doxygen comments

* more doxygen comments

* Add the in-progress api docs

* script to generate docs from travis

* Add doc generation to the travis job

* make travis_docs.sh commit the work it does

* make sure the docs script exits cleanly
2018-03-22 02:50:38 -04:00
f0932a8716 Update info.json for Ergodox EZ (#2577) 2018-03-21 03:09:51 -04:00
f7505ef67c Update info.json for orthodox (#2576) 2018-03-21 03:09:28 -04:00
971b837009 Edit info.json (#2575)
GH60 had the ansi layout taken care of.
This commit adds hhkb, iso, and the "basic" KEYMAP layout.
2018-03-21 03:09:12 -04:00
e021f44378 Update info.json (#2574)
Change name from LAYOUT to KEYMAP.
2018-03-21 03:08:54 -04:00
63b1946bfe Configurator support for minivan (tv44) (#2573)
Support all 4 layouts supported by the tv44 pcb.
2018-03-20 23:01:03 -04:00
780ff68674 Create info.json for Ergodox EZ (#2572)
* Create info.json for Ergodox EZ

* Add Orthodox info.json too
2018-03-20 23:00:47 -04:00
004df55d7f Add configurator support (info.json) for Input Club K-Type (#2571)
* Add configurator support for Input Club K-Type

* update info.json to remove bootloader and add mcu
2018-03-20 23:00:17 -04:00
7a5ce36f23 Add macro for momentarily switching to a layer while some mods are active (#2460)
* Macro for a momentary layer switch with mods

Passes through to the existing ACTION_LAYER_MODS macro, albeit with more
limited options due to lack of space in the quantum_keycodes enum.

* Add documentation for LM layer-mod macro

* Clean up Tap Toggle documentation
2018-03-20 22:59:54 -04:00
4ec03111cc Add Pretty Keymaps to Ergodox EZ 2018-03-20 20:23:08 -04:00
1fbddc6613 Configurator Support(info.json) for 1up Keyboards Sweet16 (#2570)
* Configurator Support

- Add info.json to support existing layouts
- Add comment in sweet16.h to remind people to change info.json if
  the layout changes.

* Fix dlaroe's keymap
2018-03-20 20:22:42 -04:00
2d8fda614e Configurator/dz60 support for info.json (#2568)
* Add info.json file for qmk_configurator

Unfortunately none of these keymaps look like a board I've seen in
the wild. Some further tweaks will have to be done to the keymaps
directly.

* add comment indicating need to edit info.json when keymap changes
2018-03-20 11:50:03 -04:00
6d66fe0c0c Added bootloader options
I think I got all of them, so I removed the "FIXME".
2018-03-20 11:47:22 -04:00
6268656e01 add info.json to support both layouts on the contra 2018-03-20 00:56:05 -04:00
ff728a8a01 [Proposal?] Allow RGB Underglow to turn off when host is idle/asleep (#2104)
* Add RGB Underglow Sleeping

* Add RGBLIGHT_SLEEP to toggle/control RGB light behavior

* Update rgb docs

* Update for RGB disable command
2018-03-19 23:59:58 -04:00
37cc088486 Add info.json file to work with qmk_configurator 2018-03-19 23:40:12 -04:00
500b060e3d Fix info.json issues to display properly in config.qmk.fm (#2552)
* Fix info.json issues to display properly in config.qmk.fm

* rename LAYOUT to KEYMAP to match .h file
2018-03-19 22:43:06 -04:00
4ca65bb6c6 retry of PR #2540 (#2554)
* reforked, untarred keymaps, added CRS and renamed my keymap folders

* Update readme.md

corrected a typo
2018-03-18 00:21:01 -04:00
b6db61b922 Fix logic in macos install
Also fix mixed spaces/tabs
2018-03-16 20:08:21 -07:00
ce3adcd6e1 Added a clean target to remove build artifacts
This commit adds a new clean target to the makefile which deletes
the .build directory which removes all build artifacts.
2018-03-16 16:44:22 -04:00
3acaad6600 Initial support for The Unloved Bastard 2018-03-16 16:41:32 -04:00
00b4dce605 Rule to enable Modifiers with Auto-Shift (#2542)
* Re-enable modifiers with auto-shift

* Auto-shift modifiers rule

* missed a line

* Documentation

* fixing whitespace
2018-03-16 16:41:01 -04:00
bb5c98699f Duplicate KC space to UK (#2541)
* Fix tilde in xd75 skewwhiffy

* Small tidy up

* Tidy up Colemak row

* Tidy up navigation layer

* Symbols layer redefined

* Fix UK Quote issue

* Use UK_QUOT rather than KC_QUOT
2018-03-16 16:39:51 -04:00
682c8a260a Fix audio issues with Split keyboards that missed previously 2018-03-16 16:38:05 -04:00
1134 changed files with 50647 additions and 6581 deletions

4
.gitignore vendored
View File

@ -23,6 +23,7 @@ quantum/version.h
.idea/
CMakeLists.txt
cmake-build-debug
doxygen/
.DS_STORE
/util/wsl_downloaded
/util/win_downloaded
@ -42,6 +43,7 @@ cmake-build-debug
.project
.settings/
.idea
*.iml
.browse.VC.db*
*.stackdump
util/Win_Check_Output.txt
@ -65,4 +67,4 @@ util/Win_Check_Output.txt
# things travis sees
secrets.tar
id_rsa_*
/.vs
/.vs

View File

@ -15,11 +15,13 @@ before_install:
install:
- tar -zxf avr8-gnu-toolchain-3.5.4.1709-linux.any.x86_64.tar.gz
- export PATH="$PATH:$TRAVIS_BUILD_DIR/avr8-gnu-toolchain-linux_x86_64/bin"
- npm install -g moxygen
before_script:
- avr-gcc --version
script:
- make test:all AUTOGEN=false
- bash util/travis_build.sh
- bash util/travis_docs.sh
addons:
apt:
packages:
@ -30,6 +32,7 @@ addons:
- libnewlib-arm-none-eabi
- diffutils
- dos2unix
- doxygen
after_success:
bash util/travis_compiled_push.sh
notifications:

266
Doxyfile Normal file
View File

@ -0,0 +1,266 @@
# Doxyfile 1.8.14
# This file describes the settings to be used by the documentation system
# doxygen (www.doxygen.org) for qmk_firmware (github.com/qmk/qmk_firmware)
#
# All text after a double hash (##) is considered a comment and is placed in
# front of the TAG it is preceding.
#
# All text after a single hash (#) is considered a comment and will be ignored.
# The format is:
# TAG = value [value, ...]
# For lists, items can also be appended using:
# TAG += value [value, ...]
# Values that contain spaces should be placed between quotes (\" \").
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
DOXYFILE_ENCODING = UTF-8
PROJECT_NAME = "QMK Firmware"
PROJECT_NUMBER = https://github.com/qmk/qmk_firmware
PROJECT_BRIEF = "Keyboard controller firmware for Atmel AVR and ARM USB families"
OUTPUT_DIRECTORY = doxygen
ALLOW_UNICODE_NAMES = NO
OUTPUT_LANGUAGE = English
BRIEF_MEMBER_DESC = YES
REPEAT_BRIEF = YES
ABBREVIATE_BRIEF = "The $name class" \
"The $name widget" \
"The $name file" \
is \
provides \
specifies \
contains \
represents \
a \
an \
the
ALWAYS_DETAILED_SEC = NO
INLINE_INHERITED_MEMB = NO
FULL_PATH_NAMES = YES
STRIP_FROM_PATH =
STRIP_FROM_INC_PATH =
SHORT_NAMES = NO
JAVADOC_AUTOBRIEF = NO
QT_AUTOBRIEF = NO
MULTILINE_CPP_IS_BRIEF = NO
INHERIT_DOCS = YES
SEPARATE_MEMBER_PAGES = NO
TAB_SIZE = 4
ALIASES =
TCL_SUBST =
OPTIMIZE_OUTPUT_FOR_C = YES
OPTIMIZE_OUTPUT_JAVA = NO
OPTIMIZE_FOR_FORTRAN = NO
OPTIMIZE_OUTPUT_VHDL = NO
EXTENSION_MAPPING =
MARKDOWN_SUPPORT = YES
TOC_INCLUDE_HEADINGS = 2
AUTOLINK_SUPPORT = YES
BUILTIN_STL_SUPPORT = NO
CPP_CLI_SUPPORT = NO
SIP_SUPPORT = NO
IDL_PROPERTY_SUPPORT = YES
DISTRIBUTE_GROUP_DOC = NO
GROUP_NESTED_COMPOUNDS = NO
SUBGROUPING = YES
INLINE_GROUPED_CLASSES = NO
INLINE_SIMPLE_STRUCTS = NO
TYPEDEF_HIDES_STRUCT = NO
LOOKUP_CACHE_SIZE = 0
#---------------------------------------------------------------------------
# Build related configuration options
#---------------------------------------------------------------------------
EXTRACT_ALL = NO
EXTRACT_PRIVATE = NO
EXTRACT_PACKAGE = NO
EXTRACT_STATIC = NO
EXTRACT_LOCAL_CLASSES = YES
EXTRACT_LOCAL_METHODS = NO
EXTRACT_ANON_NSPACES = NO
HIDE_UNDOC_MEMBERS = NO
HIDE_UNDOC_CLASSES = NO
HIDE_FRIEND_COMPOUNDS = NO
HIDE_IN_BODY_DOCS = NO
INTERNAL_DOCS = NO
CASE_SENSE_NAMES = NO
HIDE_SCOPE_NAMES = YES
HIDE_COMPOUND_REFERENCE= NO
SHOW_INCLUDE_FILES = YES
SHOW_GROUPED_MEMB_INC = NO
FORCE_LOCAL_INCLUDES = NO
INLINE_INFO = YES
SORT_MEMBER_DOCS = YES
SORT_BRIEF_DOCS = NO
SORT_MEMBERS_CTORS_1ST = NO
SORT_GROUP_NAMES = NO
SORT_BY_SCOPE_NAME = NO
STRICT_PROTO_MATCHING = NO
GENERATE_TODOLIST = YES
GENERATE_TESTLIST = YES
GENERATE_BUGLIST = YES
GENERATE_DEPRECATEDLIST= YES
ENABLED_SECTIONS =
MAX_INITIALIZER_LINES = 30
SHOW_USED_FILES = YES
SHOW_FILES = YES
SHOW_NAMESPACES = YES
FILE_VERSION_FILTER =
LAYOUT_FILE =
CITE_BIB_FILES =
#---------------------------------------------------------------------------
# Configuration options related to warning and progress messages
#---------------------------------------------------------------------------
QUIET = NO
WARNINGS = YES
WARN_IF_UNDOCUMENTED = YES
WARN_IF_DOC_ERROR = YES
WARN_NO_PARAMDOC = NO
WARN_AS_ERROR = NO
WARN_FORMAT = "$file:$line: $text"
WARN_LOGFILE =
#---------------------------------------------------------------------------
# Configuration options related to the input files
#---------------------------------------------------------------------------
INPUT = tmk_core quantum drivers
INPUT_ENCODING = UTF-8
FILE_PATTERNS = *.c \
*.cc \
*.cxx \
*.cpp \
*.c++ \
*.h \
*.hh \
*.hxx \
*.hpp \
*.h++
RECURSIVE = YES
EXCLUDE =
EXCLUDE_SYMLINKS = NO
EXCLUDE_PATTERNS =
EXCLUDE_SYMBOLS =
EXAMPLE_PATH =
EXAMPLE_PATTERNS = *
EXAMPLE_RECURSIVE = NO
IMAGE_PATH =
INPUT_FILTER =
FILTER_PATTERNS =
FILTER_SOURCE_FILES = NO
FILTER_SOURCE_PATTERNS =
USE_MDFILE_AS_MAINPAGE =
#---------------------------------------------------------------------------
# Configuration options related to source browsing
#---------------------------------------------------------------------------
SOURCE_BROWSER = YES
INLINE_SOURCES = NO
STRIP_CODE_COMMENTS = YES
REFERENCED_BY_RELATION = NO
REFERENCES_RELATION = NO
REFERENCES_LINK_SOURCE = YES
SOURCE_TOOLTIPS = YES
USE_HTAGS = NO
VERBATIM_HEADERS = YES
#---------------------------------------------------------------------------
# Configuration options related to the alphabetical class index
#---------------------------------------------------------------------------
ALPHABETICAL_INDEX = YES
COLS_IN_ALPHA_INDEX = 5
IGNORE_PREFIX =
#---------------------------------------------------------------------------
# Configuration options related to disabled outputs
#---------------------------------------------------------------------------
GENERATE_HTML = NO
GENERATE_LATEX = NO
GENERATE_RTF = NO
GENERATE_MAN = NO
GENERATE_DOCBOOK = NO
GENERATE_AUTOGEN_DEF = NO
GENERATE_PERLMOD = NO
#---------------------------------------------------------------------------
# Configuration options related to the XML output
#---------------------------------------------------------------------------
GENERATE_XML = YES
XML_OUTPUT = xml
XML_PROGRAMLISTING = YES
#---------------------------------------------------------------------------
# Configuration options related to the preprocessor
#---------------------------------------------------------------------------
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = NO
EXPAND_ONLY_PREDEF = NO
SEARCH_INCLUDES = YES
INCLUDE_PATH =
INCLUDE_FILE_PATTERNS =
PREDEFINED =
EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = YES
#---------------------------------------------------------------------------
# Configuration options related to external references
#---------------------------------------------------------------------------
TAGFILES =
GENERATE_TAGFILE =
ALLEXTERNALS = NO
EXTERNAL_GROUPS = YES
EXTERNAL_PAGES = YES
PERL_PATH = /usr/bin/perl
#---------------------------------------------------------------------------
# Configuration options related to the dot tool
#---------------------------------------------------------------------------
CLASS_DIAGRAMS = YES
MSCGEN_PATH =
DIA_PATH =
HIDE_UNDOC_RELATIONS = YES
HAVE_DOT = NO
DOT_NUM_THREADS = 0
DOT_FONTNAME = Helvetica
DOT_FONTSIZE = 10
DOT_FONTPATH =
CLASS_GRAPH = YES
COLLABORATION_GRAPH = YES
GROUP_GRAPHS = YES
UML_LOOK = NO
UML_LIMIT_NUM_FIELDS = 10
TEMPLATE_RELATIONS = NO
INCLUDE_GRAPH = YES
INCLUDED_BY_GRAPH = YES
CALL_GRAPH = NO
CALLER_GRAPH = NO
GRAPHICAL_HIERARCHY = YES
DIRECTORY_GRAPH = YES
DOT_IMAGE_FORMAT = png
INTERACTIVE_SVG = NO
DOT_PATH =
DOTFILE_DIRS =
MSCFILE_DIRS =
DIAFILE_DIRS =
PLANTUML_JAR_PATH =
PLANTUML_CFG_FILE =
PLANTUML_INCLUDE_PATH =
DOT_GRAPH_MAX_NODES = 50
MAX_DOT_GRAPH_DEPTH = 0
DOT_TRANSPARENT = NO
DOT_MULTI_TARGETS = NO
GENERATE_LEGEND = YES
DOT_CLEANUP = YES

View File

@ -124,6 +124,12 @@ generate-keyboards-file:
$(foreach PRINTING_KEYBOARD,$(KEYBOARDS),$(eval $(call PRINT_KEYBOARD)))
exit 0
clean:
echo -n 'Deleting .build ... '
rm -rf $(BUILD_DIR)
echo 'done'
exit 0
#Compatibility with the old make variables, anything you specify directly on the command line
# always overrides the detected folders
ifdef keyboard

View File

@ -143,6 +143,8 @@ ifeq ($(PLATFORM),CHIBIOS)
OPT_DEFS += -include $(KEYBOARD_PATH_1)/bootloader_defs.h
else ifneq ("$(wildcard $(KEYBOARD_PATH_1)/boards/$(BOARD)/bootloader_defs.h)","")
OPT_DEFS += -include $(KEYBOARD_PATH_1)/boards/$(BOARD)/bootloader_defs.h
else ifneq ("$(wildcard $(TOP_DIR)/drivers/boards/$(BOARD)/bootloader_defs.h)","")
OPT_DEFS += -include $(TOP_DIR)/drivers/boards/$(BOARD)/bootloader_defs.h
endif
endif
@ -202,8 +204,16 @@ else
endif
# User space stuff
USER_PATH := users/$(KEYMAP)
ifeq ("$(USER_NAME)","")
USER_NAME := $(KEYMAP)
endif
USER_PATH := users/$(USER_NAME)
-include $(USER_PATH)/rules.mk
ifneq ("$(wildcard users/$(KEYMAP)/config.h)","")
CONFIG_H += users/$(KEYMAP)/config.h
endif
# Object files directory
# To put object files in current directory, use a dot (.), do NOT make

View File

@ -34,6 +34,7 @@ ifeq ($(strip $(AUDIO_ENABLE)), yes)
OPT_DEFS += -DAUDIO_ENABLE
MUSIC_ENABLE := 1
SRC += $(QUANTUM_DIR)/process_keycode/process_audio.c
SRC += $(QUANTUM_DIR)/process_keycode/process_clicky.c
ifeq ($(PLATFORM),AVR)
SRC += $(QUANTUM_DIR)/audio/audio.c
else
@ -132,6 +133,9 @@ endif
ifeq ($(strip $(AUTO_SHIFT_ENABLE)), yes)
OPT_DEFS += -DAUTO_SHIFT_ENABLE
SRC += $(QUANTUM_DIR)/process_keycode/process_auto_shift.c
ifeq ($(strip $(AUTO_SHIFT_MODIFIERS)), yes)
OPT_DEFS += -DAUTO_SHIFT_MODIFIERS
endif
endif
ifeq ($(strip $(SERIAL_LINK_ENABLE)), yes)

View File

@ -87,3 +87,12 @@
* 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

@ -31,9 +31,8 @@ This is a C header file that is one of the first things included, and will persi
#include "config_common.h"
## `config.h` Options
### Hardware Options
## Hardware Options
* `#define VENDOR_ID 0x1234`
* defines your VID, and for most DIY projects, can be whatever you want
* `#define PRODUCT_ID 0x5678`
@ -62,10 +61,18 @@ This is a C header file that is one of the first things included, and will persi
* COL2ROW or ROW2COL - how your matrix is configured. COL2ROW means the black mark on your diode is facing to the rows, and between the switch and the rows.
* `#define AUDIO_VOICES`
* turns on the alternate audio voices (to cycle through)
* `#define C4_AUDIO`
* enables audio on pin C4
* `#define C5_AUDIO`
* enables audio on pin C5
* `#define C6_AUDIO`
* enables audio on pin C6
* `#define B5_AUDIO`
* enables audio on pin B5 (duophony is enable if both are enabled)
* enables audio on pin B5 (duophony is enables if one of B[5-7]_AUDIO is enabled along with one of C[4-6]_AUDIO)
* `#define B6_AUDIO`
* enables audio on pin B6 (duophony is enables if one of B[5-7]_AUDIO is enabled along with one of C[4-6]_AUDIO)
* `#define B7_AUDIO`
* enables audio on pin B7 (duophony is enables if one of B[5-7]_AUDIO is enabled along with one of C[4-6]_AUDIO)
* `#define BACKLIGHT_PIN B7`
* pin of the backlight - B5, B6, B7 use PWM, others use softPWM
* `#define BACKLIGHT_LEVELS 3`
@ -83,7 +90,7 @@ This is a C header file that is one of the first things included, and will persi
* `#define IS_COMMAND() ( keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) )`
* key combination that allows the use of magic commands (useful for debugging)
### Features That Can Be Disabled
## Features That Can Be Disabled
If you define these options you will disable the associated feature, which can save on code size.
@ -102,16 +109,16 @@ If you define these options you will disable the associated feature, which can s
* `#define NO_ACTION_FUNCTION`
* disable the action function (deprecated)
### Features That Can Be Enabled
## Features That Can Be Enabled
If you define these options you will enable the associated feature, which may increase your code size.
* `#define FORCE_NKRO`
* NKRO by default requires to be turned on, this forces it on during keyboard startup regardless of EEPROM setting. NKRO can still be turned off but will be turned on again if the keyboard reboots.
* `#define PREVENT_STUCK_MODIFIERS`
* when switching layers, this will release all mods
* stores the layer a key press came from so the same layer is used when the key is released, regardless of which layers are enabled
### Behaviors That Can Be Configured
## Behaviors That Can Be Configured
* `#define TAPPING_TERM 200`
* how long before a tap becomes a hold
@ -139,7 +146,7 @@ If you define these options you will enable the associated feature, which may in
few ms of delay from this. But if you're doing chording on something with 3-4ms
scan times? You probably want this.
### RGB Light Configuration
## RGB Light Configuration
* `#define RGB_DI_PIN D7`
* pin the DI on the ws2812 is hooked-up to
@ -156,7 +163,7 @@ If you define these options you will enable the associated feature, which may in
* `#define RGBW_BB_TWI`
* bit-bangs TWI to EZ RGBW LEDs (only required for Ergodox EZ)
### Mouse Key Options
## Mouse Key Options
* `#define MOUSEKEY_INTERVAL 20`
* `#define MOUSEKEY_DELAY 0`
@ -168,9 +175,7 @@ If you define these options you will enable the associated feature, which may in
This is a [make](https://www.gnu.org/software/make/manual/make.html) file that is included by the top-level `Makefile`. It is used to set some information about the MCU that we will be compiling for as well as enabling and disabling certain features.
## `rules.mk` Options
### Build Options
## Build Options
* `DEFAULT_FOLDER`
* Used to specify a default folder when a keyboard has more than one sub-folder.
@ -179,7 +184,7 @@ This is a [make](https://www.gnu.org/software/make/manual/make.html) file that i
* `LAYOUTS`
* A list of [layouts](feature_layouts.md) this keyboard supports.
### AVR MCU Options
## AVR MCU Options
* `MCU = atmega32u4`
* `F_CPU = 16000000`
* `ARCH = AVR8`
@ -193,7 +198,7 @@ This is a [make](https://www.gnu.org/software/make/manual/make.html) file that i
* `caterina`
* `bootloadHID`
### Feature Options
## Feature Options
Use these to enable or disable building certain features. The more you have enabled the bigger your firmware will be, and you run the risk of building a firmware too large for your MCU.

View File

@ -207,7 +207,7 @@ uint32_t layer_state_set_user(uint32_t state) {
return state;
}
```
### `matrix_init_*` Function Documentation
### `layer_state_set_*` Function Documentation
* Keyboard/Revision: `void uint32_t layer_state_set_kb(uint32_t state)`
* Keymap: `uint32_t layer_state_set_user(uint32_t state)`

View File

@ -88,3 +88,19 @@ Note that Teensy2.0++ bootloader size is 2048byte. Some Makefiles may have wrong
# USBaspLoader 2048
OPT_DEFS += -DBOOTLOADER_SIZE=2048
```
## `avr-gcc: internal compiler error: Abort trap: 6 (program cc1)` on MacOS
This is an issue with updating on brew, causing symlinks that avr-gcc depend on getting mangled.
The solution is to remove and reinstall all affected modules.
```
brew rm avr-gcc
brew rm dfu-programmer
brew rm gcc-arm-none-eabi
brew rm avrdude
brew install avr-gcc
brew install dfu-programmer
brew install gcc-arm-none-eabi
brew install avrdude
```

View File

@ -19,13 +19,15 @@ Currently, the keycodes able to used with these functions are limited to the [Ba
# Switching and Toggling Layers
These functions allow you to activate layers in various ways.
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)
* `MO(layer)` - momentary switch to *layer*. As soon as you let go of the key, the layer is deactivated and you pop back out to the previous layer.
* `LT(layer, kc)` - momentary switch to *layer* when held, and *kc* when tapped.
* `TG(layer)` - toggles a layer on or off.
* `TO(layer)` - Goes to a layer. This code is special, because it lets you go either up or down the stack -- just goes directly to the layer you want. So while other codes only let you go _up_ the stack (from layer 0 to layer 3, for example), `TO(2)` is going to get you to layer 2, no matter where you activate it from -- even if you're currently on layer 5. This gets activated on keydown (as soon as the key is pressed).
* `TT(layer)` - Layer Tap-Toggle. If you hold the key down, the layer becomes active, and then deactivates when you let go. And if you tap it, the layer simply becomes active (toggles on). It needs 5 taps by default, but you can set it by defining `TAPPING_TOGGLE`, for example, `#define TAPPING_TOGGLE 2` for just two taps.
* `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.
* `TG(layer)` - toggles *layer*, activating it if it's inactive and vice versa
* `TO(layer)` - activates *layer* and de-activates all other layers (except your default layer). This function is special, because instead of just adding/removing one layer to your active layer stack, it will completely replace your current active layers, uniquely allowing you to replace higher layers with a lower one. This is activated on keydown (as soon as the key is pressed).
* `TT(layer)` - Layer Tap-Toggle. If you hold the key down, *layer* is activated, and then is de-activated when you let go (like `MO`). If you repeatedly tap it, the layer will be toggled on or off (like `TG`). It needs 5 taps by default, but you can change this by defining `TAPPING_TOGGLE` -- for example, `#define TAPPING_TOGGLE 2` to toggle on just two taps.
# Working with Layers
@ -35,9 +37,9 @@ Care must be taken when switching layers, it's possible to lock yourself into a
If you are just getting started with QMK you will want to keep everything simple. Follow these guidelines when setting up your layers:
* Setup layer 0 as your "base" layer. This is your normal typing layer, and could be whatever layout you want (qwerty, dvorak, colemak, etc.)
* Setup layer 0 as your default, "base" layer. This is your normal typing layer, and could be whatever layout you want (qwerty, dvorak, colemak, etc.). It's important to set this as the lowest layer since it will typically have most or all of the keyboard's keys defined, so would block other layers from having any effect if it were above them (i.e., had a higher layer number).
* Arrange your layers in a "tree" layout, with layer 0 as the root. Do not try to enter the same layer from more than one other layer.
* Never try to stack a higher numbered layer on top of a lower numbered layer. Doing so is tricky and error prone.
* In a layer's keymap, only reference higher-numbered layers. Because layers are processed from the highest-numbered (topmost) active layer down, modifying the state of lower layers can be tricky and error-prone.
### Intermediate Users
@ -49,7 +51,7 @@ Once you have a good feel for how layers work and what you can do, you can get m
Layers stack on top of each other in numerical order. When determining what a keypress does, QMK scans the layers from the top down, stopping when it reaches the first active layer that is not set to `KC_TRNS`. As a result if you activate a layer that is numerically lower than your current layer, and your current layer (or another layer that is active and higher than your target layer) has something other than `KC_TRNS`, that is the key that will be sent, not the key on the layer you just activated. This is the cause of most people's "why doesn't my layer get switched" problem.
Sometimes, you might want to switch between layers in a macro or as part of a tap dance routine. `layer_on` activates a layer, and `layer_off` deactivates it. More layer-related functions can be found in [action_layer.h](../tmk_core/common/action_layer.h).
Sometimes, you might want to switch between layers in a macro or as part of a tap dance routine. `layer_on` activates a layer, and `layer_off` deactivates it. More layer-related functions can be found in [action_layer.h](https://github.com/qmk/qmk_firmware/blob/master/tmk_core/common/action_layer.h).
# Modifier Keys
@ -153,9 +155,11 @@ You can control the behavior of one shot keys by defining these in `config.h`:
* `OSM(mod)` - Momentarily hold down *mod*. You must use the `MOD_*` keycodes as shown in [Mod Tap](#mod-tap), not the `KC_*` codes.
* `OSL(layer)` - momentary switch to *layer*.
Sometimes, you want to activate a one-shot layer as part of a macro or tap dance routine. To do this, you need to call `set_oneshot_layer(LAYER, ONESHOT_START)` on key down, and `set_oneshot_layer(ONESHOT_PRESSED)` on key up. If you want to cancel the oneshot, call `reset_oneshot_layer()`. For more complicated actions, take a look at the oneshot implementation in [`process_record`](../tmk_core/common/action.c#L429).
Sometimes, you want to activate a one-shot layer as part of a macro or tap dance routine. To do this, you need to call `set_oneshot_layer(LAYER, ONESHOT_START)` on key down, and `set_oneshot_layer(ONESHOT_PRESSED)` on key up. If you want to cancel the oneshot, call `reset_oneshot_layer()`. For more complicated actions, take a look at the oneshot implementation in [`process_record`](https://github.com/qmk/qmk_firmware/blob/master/tmk_core/common/action.c#L429).
## Permissive Hold
If you're having issues with OSM translating over Remote Desktop Connection, this can be fixed by opening the settings, going to the "Local Resources" tap, and in the keyboard section, change the drop down to "On this Computer". This will fix the issue and allow OSM to function properly over Remote Desktop.
# Permissive Hold
As of [PR#1359](https://github.com/qmk/qmk_firmware/pull/1359/), there is a new `config.h` option:

View File

@ -1,6 +1,17 @@
# Audio
Your keyboard can make sounds! If you've got a Planck, Preonic, or basically any AVR keyboard that allows access to the C6 or B5 port (`#define C6_AUDIO` and/or `#define B5_AUDIO`), you can hook up a simple speaker and make it beep. You can use those beeps to indicate layer transitions, modifiers, special keys, or just to play some funky 8bit tunes.
Your keyboard can make sounds! If you've got a Planck, Preonic, or basically any AVR keyboard that allows access to certain PWM-capable pins, you can hook up a simple speaker and make it beep. You can use those beeps to indicate layer transitions, modifiers, special keys, or just to play some funky 8bit tunes.
Up to two simultaneous audio voices are supported, one driven by timer 1 and another driven by timer 3. The following pins can be defined as audio outputs in config.h:
Timer 1:
`#define B5_AUDIO`
`#define B6_AUDIO`
`#define B7_AUDIO`
Timer 3:
`#define C4_AUDIO`
`#define C5_AUDIO`
`#define C6_AUDIO`
If you add `AUDIO_ENABLE = yes` to your `rules.mk`, there's a couple different sounds that will automatically be enabled without any other configuration:
@ -86,6 +97,36 @@ You can completely disable Music Mode as well. This is useful, if you're pressed
#define NO_MUSIC_MODE
## Faux Click
This adds a click sound each time you hit a button, to simulate click sounds from the keyboard. And the sounds are slightly different for each keypress, so it doesn't sound like a single long note, if you type rapidly.
* `CK_TOGG` - Toggles the status (will play sound if enabled)
* `CK_RST` - Resets the frequency to the default state
* `CK_UP` - Increases the frequency of the clicks
* `CK_DOWN` - Decreases the frequency of the clicks
The feature is disabled by default, to save space. To enable it, add this to your `config.h`:
#define AUDIO_CLICKY
Additionally, even when enabled, the feature is not enabled by default, so you would need to turn it on first. And since we don't use EEPROM to store the setting (yet), you can default this to on by adding this to your `config.h`:
#define AUDIO_CLICKY_ON
You can configure the default, min and max frequencies, the stepping and built in randomness by defining these values:
| Option | Default Value | Description |
|--------|---------------|-------------|
| `AUDIO_CLICKY_FREQ_DEFAULT` | 440.0f | Sets the default/starting audio frequency for the clicky sounds. |
| `AUDIO_CLICKY_FREQ_MIN` | 65.0f | Sets the lowest frequency (under 60f are a bit buggy). |
| `AUDIO_CLICKY_FREQ_MAX` | 1500.0f | Sets the the highest frequency. Too high may result in coworkers attacking you. |
| `AUDIO_CLICKY_FREQ_FACTOR` | 1.18921f| Sets the stepping of UP/DOWN key codes. |
| `AUDIO_CLICKY_FREQ_RANDOMNESS` | 0.05f | Sets a factor of randomness for the clicks, Setting this to `0f` will make each click identical. |
## MIDI Functionality
This is still a WIP, but check out `quantum/keymap_midi.c` to see what's happening. Enable from the Makefile.

View File

@ -28,10 +28,7 @@ Yes, unfortunately.
characters, you could press and hold the 'a' key for a second or two. This no
longer works with Auto Shift because it is timing your depressed time instead
of emitting a depressed key state to your operating system.
2. Auto Shift is disabled for any key press that is accompanied by one or more
modifiers. Thus, Ctrl+A that you hold for a really long time is not the same
as Ctrl+Shift+A.
3. You will have characters that are shifted when you did not intend on shifting, and
2. You will have characters that are shifted when you did not intend on shifting, and
other characters you wanted shifted, but were not. This simply comes down to
practice. As we get in a hurry, we think we have hit the key long enough
for a shifted version, but we did not. On the other hand, we may think we are
@ -48,6 +45,18 @@ If no `rules.mk` exists, you can create one.
Then compile and install your new firmware with Auto Key enabled! That's it!
## Modifiers
By default, Auto Shift is disabled for any key press that is accompanied by one or more
modifiers. Thus, Ctrl+A that you hold for a really long time is not the same
as Ctrl+Shift+A.
You can re-enable Auto Shift for modifiers by adding another rule to your `rules.mk`
AUTO_SHIFT_MODIFIERS = yes
In which case, Ctrl+A held past the `AUTO_SHIFT_TIMEOUT` will be sent as Ctrl+Shift+A
## Configuring Auto Shift
If desired, there is some configuration that can be done to change the
@ -112,7 +121,7 @@ Map three keys temporarily in your keymap:
| KC_ASRP | Report your current Auto Shift timeout value |
| KC_ASON | Turns on the Auto Shift Function |
| KC_ASOFF | Turns off the Auto Shift Function |
| KC_ASTG | Toggles the statn of the Auto Shift feature |
| KC_ASTG | Toggles the state of the Auto Shift feature |
Compile and upload your new firmware.

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)[feature_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

@ -42,6 +42,8 @@ You can change the behavior of the RGB Lighting by setting these configuration v
| `RGBLIGHT_SAT_STEP` | 17 | How many steps of saturation you'd like. |
| `RGBLIGHT_VAL_STEP` | 17 | The number of levels of brightness you want. |
| `RGBLIGHT_LIMIT_VAL` | 255 | Limit the val of HSV to limit the maximum brightness simply. |
| `RGBLIGHT_SLEEP` | | `#define` this will shut off the lights when the host goes to sleep |
### Animations
@ -90,10 +92,11 @@ rgblight_disable(); // turn all lights off
rgblight_enable(); // turn lights on, based on their previous state (stored in EEPROM)
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
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
```
You can find a list of predefined colors at [`quantum/rgblight_list.h`](https://github.com/qmk/qmk_firmware/blob/master/quantum/rgblight_list.h). Free to add to this list!
## RGB Lighting Keycodes

View File

@ -56,6 +56,29 @@ On the display tab click 'Open stroke display'. With Plover disabled you should
* [Steno Jig](https://joshuagrams.github.io/steno-jig/)
* More resources at the Plover [Learning Stenography](https://github.com/openstenoproject/plover/wiki/Learning-Stenography) wiki
## Interfacing with the code
The steno code has three interceptible hooks. If you define these functions, they will be called at certain points in processing; if they return true, processing continues, otherwise it's assumed you handled things.
```C
bool send_steno_chord_user(steno_mode_t mode, uint8_t chord[6]);
```
This function is called when a chord is about to be sent. Mode will be one of `STENO_MODE_BOLT` or `STENO_MODE_GEMINI`. This represents the actual chord that would be sent via whichever protocol. You can modify the chord provided to alter what gets sent. Remember to return true if you want the regular sending process to happen.
```C
bool process_steno_user(uint16_t keycode, keyrecord_t *record) { return true; }
```
This function is called when a keypress has come in, before it is processed. The keycode should be one of `QK_STENO_BOLT`, `QK_STENO_GEMINI`, or one of the `STN_*` key values.
```C
bool postprocess_steno_user(uint16_t keycode, keyrecord_t *record, steno_mode_t mode, uint8_t chord[6], int8_t pressed);
```
This function is called after a key has been processed, but before any decision about whether or not to send a chord. If `IS_PRESSED(record->event)` is false, and `pressed` is 0 or 1, the chord will be sent shortly, but has not yet been sent. This is where to put hooks for things like, say, live displays of steno chords or keys.
## Keycode Reference
As defined in `keymap_steno.h`.
@ -106,3 +129,4 @@ As defined in `keymap_steno.h`.
|`STN_RES1`||(GeminiPR only)|
|`STN_RES2`||(GeminiPR only)|
|`STN_PWR`||(GeminiPR only)|

View File

@ -22,7 +22,7 @@ This array specifies what actions shall be taken when a tap-dance key is in acti
* `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.
The first option is enough for a lot of cases, that just want dual roles. For example, `ACTION_TAP_DANCE(KC_SPC, KC_ENT)` will result in `Space` being sent on single-tap, `Enter` otherwise.
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.
And that's the bulk of it!

View File

@ -14,12 +14,14 @@ When enabled, a `> ` prompt will appear, where you'll be able to type, backspace
`#define TERMINAL_HELP` enables some other output helpers that aren't really needed with this page.
Pressing "up" and "down" will allow you to cycle through the past 5 commands entered.
## Future Ideas
* Keyboard/user-extensible commands
* Smaller footprint
* Arrow key support
* Command history
* Command history - Done
* SD card support
* LCD support for buffer display
* Keycode -> name string LUT
@ -43,14 +45,39 @@ QMK Firmware
Built: 2017-08-29-20:24:44
```
### `print-buffer`
Outputs the last 5 commands entered
```
> print-buffer
0. print-buffer
1. help
2. about
3. keymap 0
4. help
5. flush-buffer
```
### `flush-buffer`
Clears command buffer
```
> flush-buffer
Buffer cleared!
```
### `help`
Prints out the available commands:
```
> help
commands available:
about help keycode keymap exit
about help keycode keymap exit print-buffer flush-buffer
```
### `keycode <layer> <row> <col>`

View File

@ -3,10 +3,11 @@
If you use more than one keyboard with a similar keymap, you might see the benefit in being able to share code between them. Create your own folder in `users/` named the same as your keymap (ideally your github username, `<name>`) with the following structure:
* `/users/<name>/` (added to the path automatically)
* `readme.md`
* `readme.md` (optional, recommended)
* `rules.mk` (included automatically)
* `<name>.h` (optional)
* `<name>.c` (optional)
* `config.h` (optional)
`<name>.c` will need to be added to the SRC in `rules.mk` like this:
@ -24,10 +25,31 @@ For example,
Will include the `/users/jack/` folder in the path, along with `/users/jack/rules.mk`.
Additionally, `config.h` here will be processed like the same file in your keymap folder. This is handled separately from the `<name>.h` file.
The reason for this, is that `<name>.h` won't be added in time to add settings (such as `#define TAPPING_TERM 100`), and including the `<name.h>` file in any `config.h` files will result in compile issues.
So you should use the `config.h` for QMK settings, and the `<name>.h` file for user or keymap specific settings.
## Readme
Please include authorship (your name, github username, email), and optionally [a license that's GPL compatible](https://www.gnu.org/licenses/license-list.html#GPLCompatibleLicenses).
## `Config.h`
If you do add a `config,h` file, you want to make sure that it only gets processed once. So you may want to start off with something like this:
```c
#ifndef USERSPACE_CONFIG_H
#define USERSPACE_CONFIG_H
// Put normal config.h settings here:
#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](config_options.md).
## Example
For a brief example, checkout `/users/_example/` , or for a more detailed examples check out [`template.h`](https://github.com/qmk/qmk_firmware/blob/master/users/drashna/template.h) and [`template.c`](https://github.com/qmk/qmk_firmware/blob/master/users/drashna/template.c) in `/users/drashna/` .
@ -93,3 +115,11 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
This will add a new `KC_MAKE` keycode that can be used in any of your keymaps. And this keycode will output `make <keyboard>:<keymap">`, making frequent compiling easier. And this will work with any keyboard and any keymap as it will output the current boards info, so that you don't have to type this out every time.
Additionally, this should flash the newly compiled firmware automatically, using the correct utility, based on the bootloader settings (or default to just generating the HEX file). However, it should be noted that this may not work on all systems. AVRDUDE doesn't work on WSL, namely (and will dump the HEX in the ".build" folder instead).
## Override default userspace
By default the userspace used will be the same as the keymap name. In some situations this isn't desirable. For instance, if you use the [layout](feature_layouts.md) feature you can't use the same name for different keymaps (e.g. ANSI and ISO). You can name your layouts `mylayout-ansi` and `mylayout-iso` and add the following line to your layout's `rules.mk`:
```
USER_NAME := mylayout
```

View File

@ -20,7 +20,7 @@ Compatible flashers:
* [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) (recommended GUI)
* [dfu-programmer](https://github.com/dfu-programmer/dfu-programmer) / `:dfu` in QMK (recommended command line)
* [Atmel's Flip](http://www.atmel.com/tools/flip.aspx) (not recommended)
* [Atmel's Flip](http://www.microchip.com/developmenttools/productdetails.aspx?partno=flip) (not recommended)
Flashing sequence:

View File

@ -22,7 +22,7 @@ Given the amount of functionality that QMK exposes it's very easy to confuse new
### Bootmagic and Command
(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.
[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)[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`.
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
@ -45,17 +45,8 @@ The `info.json` file is a JSON formatted dictionary with the following keys avai
* `keyboard_name`
* A free-form text string describing the keyboard.
* Example: `Clueboard 66%`
* `manufacturer`
* A free-form text string naming the manufacturer.
* Example: `Clueboard`
* `identifier`
* The Vendor, Product, and Revision ID's joined by a :
* Example: `c1ed:2370:0001`
* `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.
* `processor`
* The MCU or CPU this keyboard uses.
* Example: `atmega32u4` or `stm32f303`
* `bootloader`
* What bootloader this keyboard uses. Available options:
* `atmel-dfu`
@ -63,7 +54,9 @@ The `info.json` file is a JSON formatted dictionary with the following keys avai
* `lufa-dfu`
* `qmk-dfu`
* `stm32-dfu-util`
* (FIXME: This list is incomplete.)
* `caterina`
* `halfkay`
* `bootloadHID`
* `maintainer`
* GitHub username of the maintainer, or `qmk` for community maintained boards
* `width`

78
docs/internals_defines.md Normal file
View File

@ -0,0 +1,78 @@
# group `defines` {#group__defines}
## Summary
Members | Descriptions
--------------------------------|---------------------------------------------
`define `[`SYSEX_BEGIN`](#group__defines_1ga1a3c39bb790dda8a368c4247caabcf79) |
`define `[`SYSEX_END`](#group__defines_1ga753706d1d28e6f96d7caf1973e80feed) |
`define `[`MIDI_STATUSMASK`](#group__defines_1gab78a1c818a5f5dab7a8946543f126c69) |
`define `[`MIDI_CHANMASK`](#group__defines_1ga239edc0a6f8405d3a8f2804f1590b909) |
`define `[`MIDI_CC`](#group__defines_1ga45f116a1daab76b3c930c2cecfaef215) |
`define `[`MIDI_NOTEON`](#group__defines_1gafd416f27bf3590868c0c1f55c30be4c7) |
`define `[`MIDI_NOTEOFF`](#group__defines_1gabed24bea2d989fd655e2ef2ad0765adc) |
`define `[`MIDI_AFTERTOUCH`](#group__defines_1ga3a322d8cfd53576a2e167c1840551b0f) |
`define `[`MIDI_PITCHBEND`](#group__defines_1gabcc799504e8064679bca03f232223af4) |
`define `[`MIDI_PROGCHANGE`](#group__defines_1gaefb3f1595ffbb9db66b46c2c919a3d42) |
`define `[`MIDI_CHANPRESSURE`](#group__defines_1gaeb3281cc7fcd0daade8ed3d2dfc33dbe) |
`define `[`MIDI_CLOCK`](#group__defines_1gafa5e4e295aafd15ab7893344599b3b89) |
`define `[`MIDI_TICK`](#group__defines_1ga3b99408ff864613765d4c3c2ceb52aa7) |
`define `[`MIDI_START`](#group__defines_1ga8233631c85823aa546f932ad8975caa4) |
`define `[`MIDI_CONTINUE`](#group__defines_1gab24430f0081e27215b0da84dd0ee745c) |
`define `[`MIDI_STOP`](#group__defines_1ga3af9271d4b1f0d22904a0b055f48cf62) |
`define `[`MIDI_ACTIVESENSE`](#group__defines_1gacd88ed42dba52bb4b2052c5656362677) |
`define `[`MIDI_RESET`](#group__defines_1ga02947f30ca62dc332fdeb10c5868323b) |
`define `[`MIDI_TC_QUARTERFRAME`](#group__defines_1gaaa072f33590e236d1bfd8f28e833ae31) |
`define `[`MIDI_SONGPOSITION`](#group__defines_1ga412f6ed33a2150051374bee334ee1705) |
`define `[`MIDI_SONGSELECT`](#group__defines_1gafcab254838b028365ae0259729e72c4e) |
`define `[`MIDI_TUNEREQUEST`](#group__defines_1ga8100b907b8c0a84e58b1c53dcd9bd795) |
`define `[`SYSEX_EDUMANUFID`](#group__defines_1ga5ef855ed955b00a2239ca16afbeb164f) |
## Members
#### `define `[`SYSEX_BEGIN`](#group__defines_1ga1a3c39bb790dda8a368c4247caabcf79) {#group__defines_1ga1a3c39bb790dda8a368c4247caabcf79}
#### `define `[`SYSEX_END`](#group__defines_1ga753706d1d28e6f96d7caf1973e80feed) {#group__defines_1ga753706d1d28e6f96d7caf1973e80feed}
#### `define `[`MIDI_STATUSMASK`](#group__defines_1gab78a1c818a5f5dab7a8946543f126c69) {#group__defines_1gab78a1c818a5f5dab7a8946543f126c69}
#### `define `[`MIDI_CHANMASK`](#group__defines_1ga239edc0a6f8405d3a8f2804f1590b909) {#group__defines_1ga239edc0a6f8405d3a8f2804f1590b909}
#### `define `[`MIDI_CC`](#group__defines_1ga45f116a1daab76b3c930c2cecfaef215) {#group__defines_1ga45f116a1daab76b3c930c2cecfaef215}
#### `define `[`MIDI_NOTEON`](#group__defines_1gafd416f27bf3590868c0c1f55c30be4c7) {#group__defines_1gafd416f27bf3590868c0c1f55c30be4c7}
#### `define `[`MIDI_NOTEOFF`](#group__defines_1gabed24bea2d989fd655e2ef2ad0765adc) {#group__defines_1gabed24bea2d989fd655e2ef2ad0765adc}
#### `define `[`MIDI_AFTERTOUCH`](#group__defines_1ga3a322d8cfd53576a2e167c1840551b0f) {#group__defines_1ga3a322d8cfd53576a2e167c1840551b0f}
#### `define `[`MIDI_PITCHBEND`](#group__defines_1gabcc799504e8064679bca03f232223af4) {#group__defines_1gabcc799504e8064679bca03f232223af4}
#### `define `[`MIDI_PROGCHANGE`](#group__defines_1gaefb3f1595ffbb9db66b46c2c919a3d42) {#group__defines_1gaefb3f1595ffbb9db66b46c2c919a3d42}
#### `define `[`MIDI_CHANPRESSURE`](#group__defines_1gaeb3281cc7fcd0daade8ed3d2dfc33dbe) {#group__defines_1gaeb3281cc7fcd0daade8ed3d2dfc33dbe}
#### `define `[`MIDI_CLOCK`](#group__defines_1gafa5e4e295aafd15ab7893344599b3b89) {#group__defines_1gafa5e4e295aafd15ab7893344599b3b89}
#### `define `[`MIDI_TICK`](#group__defines_1ga3b99408ff864613765d4c3c2ceb52aa7) {#group__defines_1ga3b99408ff864613765d4c3c2ceb52aa7}
#### `define `[`MIDI_START`](#group__defines_1ga8233631c85823aa546f932ad8975caa4) {#group__defines_1ga8233631c85823aa546f932ad8975caa4}
#### `define `[`MIDI_CONTINUE`](#group__defines_1gab24430f0081e27215b0da84dd0ee745c) {#group__defines_1gab24430f0081e27215b0da84dd0ee745c}
#### `define `[`MIDI_STOP`](#group__defines_1ga3af9271d4b1f0d22904a0b055f48cf62) {#group__defines_1ga3af9271d4b1f0d22904a0b055f48cf62}
#### `define `[`MIDI_ACTIVESENSE`](#group__defines_1gacd88ed42dba52bb4b2052c5656362677) {#group__defines_1gacd88ed42dba52bb4b2052c5656362677}
#### `define `[`MIDI_RESET`](#group__defines_1ga02947f30ca62dc332fdeb10c5868323b) {#group__defines_1ga02947f30ca62dc332fdeb10c5868323b}
#### `define `[`MIDI_TC_QUARTERFRAME`](#group__defines_1gaaa072f33590e236d1bfd8f28e833ae31) {#group__defines_1gaaa072f33590e236d1bfd8f28e833ae31}
#### `define `[`MIDI_SONGPOSITION`](#group__defines_1ga412f6ed33a2150051374bee334ee1705) {#group__defines_1ga412f6ed33a2150051374bee334ee1705}
#### `define `[`MIDI_SONGSELECT`](#group__defines_1gafcab254838b028365ae0259729e72c4e) {#group__defines_1gafcab254838b028365ae0259729e72c4e}
#### `define `[`MIDI_TUNEREQUEST`](#group__defines_1ga8100b907b8c0a84e58b1c53dcd9bd795) {#group__defines_1ga8100b907b8c0a84e58b1c53dcd9bd795}
#### `define `[`SYSEX_EDUMANUFID`](#group__defines_1ga5ef855ed955b00a2239ca16afbeb164f) {#group__defines_1ga5ef855ed955b00a2239ca16afbeb164f}

View File

@ -0,0 +1,169 @@
# group `input_callback_reg` {#group__input__callback__reg}
These are the functions you use to register your input callbacks.
The functions are called when the appropriate midi message is matched on the associated device's input.
## Summary
Members | Descriptions
--------------------------------|---------------------------------------------
`public void `[`midi_register_cc_callback`](#group__input__callback__reg_1ga64ab672abbbe393c9c4a83110c8df718)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_three_byte_func_t func)` | Register a control change message (cc) callback.
`public void `[`midi_register_noteon_callback`](#group__input__callback__reg_1ga3962f276c17618923f1152779552103e)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_three_byte_func_t func)` | Register a note on callback.
`public void `[`midi_register_noteoff_callback`](#group__input__callback__reg_1gac847b66051bd6d53b762958be0ec4c6d)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_three_byte_func_t func)` | Register a note off callback.
`public void `[`midi_register_aftertouch_callback`](#group__input__callback__reg_1gaa95bc901bd9edff956a667c9a69dd01f)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_three_byte_func_t func)` | Register an after touch callback.
`public void `[`midi_register_pitchbend_callback`](#group__input__callback__reg_1ga071a28f02ba14f53de219be70ebd9a48)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_three_byte_func_t func)` | Register a pitch bend callback.
`public void `[`midi_register_songposition_callback`](#group__input__callback__reg_1gaf2adfd79637f3553d8f26deb1ca22ed6)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_three_byte_func_t func)` | Register a song position callback.
`public void `[`midi_register_progchange_callback`](#group__input__callback__reg_1gae6ba1a35a4cde9bd15dd42f87401d127)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_two_byte_func_t func)` | Register a program change callback.
`public void `[`midi_register_chanpressure_callback`](#group__input__callback__reg_1ga39b31f1f4fb93917ce039b958f21b4f5)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_two_byte_func_t func)` | Register a channel pressure callback.
`public void `[`midi_register_songselect_callback`](#group__input__callback__reg_1gaf9aafc76a2dc4b9fdbb4106cbda6ce72)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_two_byte_func_t func)` | Register a song select callback.
`public void `[`midi_register_tc_quarterframe_callback`](#group__input__callback__reg_1ga0a119fada2becc628cb15d753b257e6e)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_two_byte_func_t func)` | Register a tc quarter frame callback.
`public void `[`midi_register_realtime_callback`](#group__input__callback__reg_1ga764f440e857b89084b1a07f9da2ff93a)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_one_byte_func_t func)` | Register a realtime callback.
`public void `[`midi_register_tunerequest_callback`](#group__input__callback__reg_1gae40ff3ce20bda79fef87da24b8321cb1)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_one_byte_func_t func)` | Register a tune request callback.
`public void `[`midi_register_sysex_callback`](#group__input__callback__reg_1ga63ce9631b025785c1848d0122d4c4c48)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_sysex_func_t func)` | Register a sysex callback.
`public void `[`midi_register_fallthrough_callback`](#group__input__callback__reg_1ga7ed189164aa9682862b3181153afbd94)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_var_byte_func_t func)` | Register fall through callback.
`public void `[`midi_register_catchall_callback`](#group__input__callback__reg_1ga9dbfed568d047a6cd05708f11fe39e99)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_var_byte_func_t func)` | Register a catch all callback.
## Members
#### `public void `[`midi_register_cc_callback`](#group__input__callback__reg_1ga64ab672abbbe393c9c4a83110c8df718)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_three_byte_func_t func)` {#group__input__callback__reg_1ga64ab672abbbe393c9c4a83110c8df718}
Register a control change message (cc) callback.
#### Parameters
* `device` the device associate with
* `func` the callback function to register
#### `public void `[`midi_register_noteon_callback`](#group__input__callback__reg_1ga3962f276c17618923f1152779552103e)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_three_byte_func_t func)` {#group__input__callback__reg_1ga3962f276c17618923f1152779552103e}
Register a note on callback.
#### Parameters
* `device` the device associate with
* `func` the callback function to register
#### `public void `[`midi_register_noteoff_callback`](#group__input__callback__reg_1gac847b66051bd6d53b762958be0ec4c6d)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_three_byte_func_t func)` {#group__input__callback__reg_1gac847b66051bd6d53b762958be0ec4c6d}
Register a note off callback.
#### Parameters
* `device` the device associate with
* `func` the callback function to register
#### `public void `[`midi_register_aftertouch_callback`](#group__input__callback__reg_1gaa95bc901bd9edff956a667c9a69dd01f)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_three_byte_func_t func)` {#group__input__callback__reg_1gaa95bc901bd9edff956a667c9a69dd01f}
Register an after touch callback.
#### Parameters
* `device` the device associate with
* `func` the callback function to register
#### `public void `[`midi_register_pitchbend_callback`](#group__input__callback__reg_1ga071a28f02ba14f53de219be70ebd9a48)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_three_byte_func_t func)` {#group__input__callback__reg_1ga071a28f02ba14f53de219be70ebd9a48}
Register a pitch bend callback.
#### Parameters
* `device` the device associate with
* `func` the callback function to register
#### `public void `[`midi_register_songposition_callback`](#group__input__callback__reg_1gaf2adfd79637f3553d8f26deb1ca22ed6)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_three_byte_func_t func)` {#group__input__callback__reg_1gaf2adfd79637f3553d8f26deb1ca22ed6}
Register a song position callback.
#### Parameters
* `device` the device associate with
* `func` the callback function to register
#### `public void `[`midi_register_progchange_callback`](#group__input__callback__reg_1gae6ba1a35a4cde9bd15dd42f87401d127)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_two_byte_func_t func)` {#group__input__callback__reg_1gae6ba1a35a4cde9bd15dd42f87401d127}
Register a program change callback.
#### Parameters
* `device` the device associate with
* `func` the callback function to register
#### `public void `[`midi_register_chanpressure_callback`](#group__input__callback__reg_1ga39b31f1f4fb93917ce039b958f21b4f5)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_two_byte_func_t func)` {#group__input__callback__reg_1ga39b31f1f4fb93917ce039b958f21b4f5}
Register a channel pressure callback.
#### Parameters
* `device` the device associate with
* `func` the callback function to register
#### `public void `[`midi_register_songselect_callback`](#group__input__callback__reg_1gaf9aafc76a2dc4b9fdbb4106cbda6ce72)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_two_byte_func_t func)` {#group__input__callback__reg_1gaf9aafc76a2dc4b9fdbb4106cbda6ce72}
Register a song select callback.
#### Parameters
* `device` the device associate with
* `func` the callback function to register
#### `public void `[`midi_register_tc_quarterframe_callback`](#group__input__callback__reg_1ga0a119fada2becc628cb15d753b257e6e)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_two_byte_func_t func)` {#group__input__callback__reg_1ga0a119fada2becc628cb15d753b257e6e}
Register a tc quarter frame callback.
#### Parameters
* `device` the device associate with
* `func` the callback function to register
#### `public void `[`midi_register_realtime_callback`](#group__input__callback__reg_1ga764f440e857b89084b1a07f9da2ff93a)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_one_byte_func_t func)` {#group__input__callback__reg_1ga764f440e857b89084b1a07f9da2ff93a}
Register a realtime callback.
The callback will be called for all of the real time message types.
#### Parameters
* `device` the device associate with
* `func` the callback function to register
#### `public void `[`midi_register_tunerequest_callback`](#group__input__callback__reg_1gae40ff3ce20bda79fef87da24b8321cb1)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_one_byte_func_t func)` {#group__input__callback__reg_1gae40ff3ce20bda79fef87da24b8321cb1}
Register a tune request callback.
#### Parameters
* `device` the device associate with
* `func` the callback function to register
#### `public void `[`midi_register_sysex_callback`](#group__input__callback__reg_1ga63ce9631b025785c1848d0122d4c4c48)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_sysex_func_t func)` {#group__input__callback__reg_1ga63ce9631b025785c1848d0122d4c4c48}
Register a sysex callback.
#### Parameters
* `device` the device associate with
* `func` the callback function to register
#### `public void `[`midi_register_fallthrough_callback`](#group__input__callback__reg_1ga7ed189164aa9682862b3181153afbd94)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_var_byte_func_t func)` {#group__input__callback__reg_1ga7ed189164aa9682862b3181153afbd94}
Register fall through callback.
This is only called if a more specific callback is not matched and called. For instance, if you don't register a note on callback but you get a note on message the fall through callback will be called, if it is registered.
#### Parameters
* `device` the device associate with
* `func` the callback function to register
#### `public void `[`midi_register_catchall_callback`](#group__input__callback__reg_1ga9dbfed568d047a6cd05708f11fe39e99)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_var_byte_func_t func)` {#group__input__callback__reg_1ga9dbfed568d047a6cd05708f11fe39e99}
Register a catch all callback.
If registered, the catch all callback is called for every message that is matched, even if a more specific or the fallthrough callback is registered.
#### Parameters
* `device` the device associate with
* `func` the callback function to register

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}

View File

@ -0,0 +1,31 @@
# group `midi_device_setup_process` {#group__midi__device__setup__process}
These are method that you must use to initialize and run a device.
## Summary
Members | Descriptions
--------------------------------|---------------------------------------------
`public void `[`midi_device_init`](#group__midi__device__setup__process_1gaf29deddc94ea98a59daa0bde1aefd9d9)`(`[`MidiDevice`](#struct__midi__device)` * device)` | Initialize a device.
`public void `[`midi_device_process`](#group__midi__device__setup__process_1gaa3d5993d0e998a1b59bbf5ab9c7b492b)`(`[`MidiDevice`](#struct__midi__device)` * device)` | Process input data.
## Members
#### `public void `[`midi_device_init`](#group__midi__device__setup__process_1gaf29deddc94ea98a59daa0bde1aefd9d9)`(`[`MidiDevice`](#struct__midi__device)` * device)` {#group__midi__device__setup__process_1gaf29deddc94ea98a59daa0bde1aefd9d9}
Initialize a device.
You must call this before using the device in question.
#### Parameters
* `device` the device to initialize
#### `public void `[`midi_device_process`](#group__midi__device__setup__process_1gaa3d5993d0e998a1b59bbf5ab9c7b492b)`(`[`MidiDevice`](#struct__midi__device)` * device)` {#group__midi__device__setup__process_1gaa3d5993d0e998a1b59bbf5ab9c7b492b}
Process input data.
This method drives the input processing, you must call this method frequently if you expect to have your input callbacks called.
#### Parameters
* `device` the device to process

View File

@ -0,0 +1,54 @@
# group `midi_util` {#group__midi__util}
## Summary
Members | Descriptions
--------------------------------|---------------------------------------------
`enum `[`midi_packet_length_t`](#group__midi__util_1gae29ff56aee2b430ffe53933b97e5e79e) | An enumeration of the possible packet length values.
`public bool `[`midi_is_statusbyte`](#group__midi__util_1ga12e3b42ff9cbb4b4f2bc455fc8743ee5)`(uint8_t theByte)` | Test to see if the byte given is a status byte.
`public bool `[`midi_is_realtime`](#group__midi__util_1gad2f52c363e34a8000d80c983c324e2d7)`(uint8_t theByte)` | Test to see if the byte given is a realtime message.
`public `[`midi_packet_length_t`](#group__midi__util_1gae29ff56aee2b430ffe53933b97e5e79e)` `[`midi_packet_length`](#group__midi__util_1gaa168b43af6ae9de0debce1625e4b8175)`(uint8_t status)` | Find the length of the packet associated with the status byte given.
## Members
#### `enum `[`midi_packet_length_t`](#group__midi__util_1gae29ff56aee2b430ffe53933b97e5e79e) {#group__midi__util_1gae29ff56aee2b430ffe53933b97e5e79e}
Values | Descriptions
--------------------------------|---------------------------------------------
UNDEFINED |
ONE |
TWO |
THREE |
An enumeration of the possible packet length values.
#### `public bool `[`midi_is_statusbyte`](#group__midi__util_1ga12e3b42ff9cbb4b4f2bc455fc8743ee5)`(uint8_t theByte)` {#group__midi__util_1ga12e3b42ff9cbb4b4f2bc455fc8743ee5}
Test to see if the byte given is a status byte.
#### Parameters
* `theByte` the byte to test
#### Returns
true if the byte given is a midi status byte
#### `public bool `[`midi_is_realtime`](#group__midi__util_1gad2f52c363e34a8000d80c983c324e2d7)`(uint8_t theByte)` {#group__midi__util_1gad2f52c363e34a8000d80c983c324e2d7}
Test to see if the byte given is a realtime message.
#### Parameters
* `theByte` the byte to test
#### Returns
true if it is a realtime message, false otherwise
#### `public `[`midi_packet_length_t`](#group__midi__util_1gae29ff56aee2b430ffe53933b97e5e79e)` `[`midi_packet_length`](#group__midi__util_1gaa168b43af6ae9de0debce1625e4b8175)`(uint8_t status)` {#group__midi__util_1gaa168b43af6ae9de0debce1625e4b8175}
Find the length of the packet associated with the status byte given.
#### Parameters
* `status` the status byte
#### Returns
the length of the packet, will return UNDEFINED if the byte is not a status byte or if it is a sysex status byte

View File

@ -0,0 +1,241 @@
# group `send_functions` {#group__send__functions}
These are the functions you use to send midi data through a device.
## Summary
Members | Descriptions
--------------------------------|---------------------------------------------
`public void `[`midi_send_cc`](#group__send__functions_1gaaf884811c92df405ca8fe1a00082f960)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t chan,uint8_t num,uint8_t val)` | Send a control change message (cc) via the given device.
`public void `[`midi_send_noteon`](#group__send__functions_1ga467bcf46dbf03ec269ce565b46bc2775)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t chan,uint8_t num,uint8_t vel)` | Send a note on message via the given device.
`public void `[`midi_send_noteoff`](#group__send__functions_1gaedb7d8805425eef5d47d57ddcb4c7a49)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t chan,uint8_t num,uint8_t vel)` | Send a note off message via the given device.
`public void `[`midi_send_aftertouch`](#group__send__functions_1ga0014847571317a0e34b2ef46a6bc584f)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t chan,uint8_t note_num,uint8_t amt)` | Send an after touch message via the given device.
`public void `[`midi_send_pitchbend`](#group__send__functions_1gae5a4a1e71611e7534be80af9ce3d3491)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t chan,int16_t amt)` | Send a pitch bend message via the given device.
`public void `[`midi_send_programchange`](#group__send__functions_1ga7b15588ef25e5e1ff09c2afc3151ce86)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t chan,uint8_t num)` | Send a program change message via the given device.
`public void `[`midi_send_channelpressure`](#group__send__functions_1gaf23e69fdf812e89c0036f51f88ab2e1b)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t chan,uint8_t amt)` | Send a channel pressure message via the given device.
`public void `[`midi_send_clock`](#group__send__functions_1ga4e1b11a7cdb0875f6e03ce7c79c581aa)`(`[`MidiDevice`](#struct__midi__device)` * device)` | Send a clock message via the given device.
`public void `[`midi_send_tick`](#group__send__functions_1ga2b43c7d433d940c5b907595aac947972)`(`[`MidiDevice`](#struct__midi__device)` * device)` | Send a tick message via the given device.
`public void `[`midi_send_start`](#group__send__functions_1ga1569749a8d58ccc56789289d7c7245cc)`(`[`MidiDevice`](#struct__midi__device)` * device)` | Send a start message via the given device.
`public void `[`midi_send_continue`](#group__send__functions_1gaed5dc29d754a27372e89ab8bc20ee120)`(`[`MidiDevice`](#struct__midi__device)` * device)` | Send a continue message via the given device.
`public void `[`midi_send_stop`](#group__send__functions_1ga026e1a620276cb653ac501aa0d12a988)`(`[`MidiDevice`](#struct__midi__device)` * device)` | Send a stop message via the given device.
`public void `[`midi_send_activesense`](#group__send__functions_1ga9b6e4c6ce4719d2604187b325620db37)`(`[`MidiDevice`](#struct__midi__device)` * device)` | Send an active sense message via the given device.
`public void `[`midi_send_reset`](#group__send__functions_1ga3671e39a6d93ca9568fc493001af1b1b)`(`[`MidiDevice`](#struct__midi__device)` * device)` | Send a reset message via the given device.
`public void `[`midi_send_tcquarterframe`](#group__send__functions_1ga5b85639910eec280bb744c934d0fd45a)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t time)` | Send a tc quarter frame message via the given device.
`public void `[`midi_send_songposition`](#group__send__functions_1gab1c9eeef3b57a8cd2e6128d18e85eb7f)`(`[`MidiDevice`](#struct__midi__device)` * device,uint16_t pos)` | Send a song position message via the given device.
`public void `[`midi_send_songselect`](#group__send__functions_1ga42de7838ba70d949af9a50f9facc3c50)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t song)` | Send a song select message via the given device.
`public void `[`midi_send_tunerequest`](#group__send__functions_1ga8db6c7e04d48e4d2266dd59118ca0656)`(`[`MidiDevice`](#struct__midi__device)` * device)` | Send a tune request message via the given device.
`public void `[`midi_send_byte`](#group__send__functions_1ga857e85eb90b288385642d4d991e09881)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t b)` | Send a byte via the given device.
`public void `[`midi_send_data`](#group__send__functions_1ga36e2f2e45369d911b76969361679054b)`(`[`MidiDevice`](#struct__midi__device)` * device,uint16_t count,uint8_t byte0,uint8_t byte1,uint8_t byte2)` | Send up to 3 bytes of data.
`public void `[`midi_send_array`](#group__send__functions_1ga245243cb1da18d2cea18d4b18d846ead)`(`[`MidiDevice`](#struct__midi__device)` * device,uint16_t count,uint8_t * array)` | Send an array of formatted midi data.
## Members
#### `public void `[`midi_send_cc`](#group__send__functions_1gaaf884811c92df405ca8fe1a00082f960)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t chan,uint8_t num,uint8_t val)` {#group__send__functions_1gaaf884811c92df405ca8fe1a00082f960}
Send a control change message (cc) via the given device.
#### Parameters
* `device` the device to use for sending
* `chan` the channel to send on, 0-15
* `num` the cc num
* `val` the value of that cc num
#### `public void `[`midi_send_noteon`](#group__send__functions_1ga467bcf46dbf03ec269ce565b46bc2775)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t chan,uint8_t num,uint8_t vel)` {#group__send__functions_1ga467bcf46dbf03ec269ce565b46bc2775}
Send a note on message via the given device.
#### Parameters
* `device` the device to use for sending
* `chan` the channel to send on, 0-15
* `num` the note number
* `vel` the note velocity
#### `public void `[`midi_send_noteoff`](#group__send__functions_1gaedb7d8805425eef5d47d57ddcb4c7a49)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t chan,uint8_t num,uint8_t vel)` {#group__send__functions_1gaedb7d8805425eef5d47d57ddcb4c7a49}
Send a note off message via the given device.
#### Parameters
* `device` the device to use for sending
* `chan` the channel to send on, 0-15
* `num` the note number
* `vel` the note velocity
#### `public void `[`midi_send_aftertouch`](#group__send__functions_1ga0014847571317a0e34b2ef46a6bc584f)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t chan,uint8_t note_num,uint8_t amt)` {#group__send__functions_1ga0014847571317a0e34b2ef46a6bc584f}
Send an after touch message via the given device.
#### Parameters
* `device` the device to use for sending
* `chan` the channel to send on, 0-15
* `note_num` the note number
* `amt` the after touch amount
#### `public void `[`midi_send_pitchbend`](#group__send__functions_1gae5a4a1e71611e7534be80af9ce3d3491)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t chan,int16_t amt)` {#group__send__functions_1gae5a4a1e71611e7534be80af9ce3d3491}
Send a pitch bend message via the given device.
#### Parameters
* `device` the device to use for sending
* `chan` the channel to send on, 0-15
* `amt` the bend amount range: -8192..8191, 0 means no bend
#### `public void `[`midi_send_programchange`](#group__send__functions_1ga7b15588ef25e5e1ff09c2afc3151ce86)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t chan,uint8_t num)` {#group__send__functions_1ga7b15588ef25e5e1ff09c2afc3151ce86}
Send a program change message via the given device.
#### Parameters
* `device` the device to use for sending
* `chan` the channel to send on, 0-15
* `num` the program to change to
#### `public void `[`midi_send_channelpressure`](#group__send__functions_1gaf23e69fdf812e89c0036f51f88ab2e1b)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t chan,uint8_t amt)` {#group__send__functions_1gaf23e69fdf812e89c0036f51f88ab2e1b}
Send a channel pressure message via the given device.
#### Parameters
* `device` the device to use for sending
* `chan` the channel to send on, 0-15
* `amt` the amount of channel pressure
#### `public void `[`midi_send_clock`](#group__send__functions_1ga4e1b11a7cdb0875f6e03ce7c79c581aa)`(`[`MidiDevice`](#struct__midi__device)` * device)` {#group__send__functions_1ga4e1b11a7cdb0875f6e03ce7c79c581aa}
Send a clock message via the given device.
#### Parameters
* `device` the device to use for sending
#### `public void `[`midi_send_tick`](#group__send__functions_1ga2b43c7d433d940c5b907595aac947972)`(`[`MidiDevice`](#struct__midi__device)` * device)` {#group__send__functions_1ga2b43c7d433d940c5b907595aac947972}
Send a tick message via the given device.
#### Parameters
* `device` the device to use for sending
#### `public void `[`midi_send_start`](#group__send__functions_1ga1569749a8d58ccc56789289d7c7245cc)`(`[`MidiDevice`](#struct__midi__device)` * device)` {#group__send__functions_1ga1569749a8d58ccc56789289d7c7245cc}
Send a start message via the given device.
#### Parameters
* `device` the device to use for sending
#### `public void `[`midi_send_continue`](#group__send__functions_1gaed5dc29d754a27372e89ab8bc20ee120)`(`[`MidiDevice`](#struct__midi__device)` * device)` {#group__send__functions_1gaed5dc29d754a27372e89ab8bc20ee120}
Send a continue message via the given device.
#### Parameters
* `device` the device to use for sending
#### `public void `[`midi_send_stop`](#group__send__functions_1ga026e1a620276cb653ac501aa0d12a988)`(`[`MidiDevice`](#struct__midi__device)` * device)` {#group__send__functions_1ga026e1a620276cb653ac501aa0d12a988}
Send a stop message via the given device.
#### Parameters
* `device` the device to use for sending
#### `public void `[`midi_send_activesense`](#group__send__functions_1ga9b6e4c6ce4719d2604187b325620db37)`(`[`MidiDevice`](#struct__midi__device)` * device)` {#group__send__functions_1ga9b6e4c6ce4719d2604187b325620db37}
Send an active sense message via the given device.
#### Parameters
* `device` the device to use for sending
#### `public void `[`midi_send_reset`](#group__send__functions_1ga3671e39a6d93ca9568fc493001af1b1b)`(`[`MidiDevice`](#struct__midi__device)` * device)` {#group__send__functions_1ga3671e39a6d93ca9568fc493001af1b1b}
Send a reset message via the given device.
#### Parameters
* `device` the device to use for sending
#### `public void `[`midi_send_tcquarterframe`](#group__send__functions_1ga5b85639910eec280bb744c934d0fd45a)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t time)` {#group__send__functions_1ga5b85639910eec280bb744c934d0fd45a}
Send a tc quarter frame message via the given device.
#### Parameters
* `device` the device to use for sending
* `time` the time of this quarter frame, range 0..16383
#### `public void `[`midi_send_songposition`](#group__send__functions_1gab1c9eeef3b57a8cd2e6128d18e85eb7f)`(`[`MidiDevice`](#struct__midi__device)` * device,uint16_t pos)` {#group__send__functions_1gab1c9eeef3b57a8cd2e6128d18e85eb7f}
Send a song position message via the given device.
#### Parameters
* `device` the device to use for sending
* `pos` the song position
#### `public void `[`midi_send_songselect`](#group__send__functions_1ga42de7838ba70d949af9a50f9facc3c50)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t song)` {#group__send__functions_1ga42de7838ba70d949af9a50f9facc3c50}
Send a song select message via the given device.
#### Parameters
* `device` the device to use for sending
* `song` the song to select
#### `public void `[`midi_send_tunerequest`](#group__send__functions_1ga8db6c7e04d48e4d2266dd59118ca0656)`(`[`MidiDevice`](#struct__midi__device)` * device)` {#group__send__functions_1ga8db6c7e04d48e4d2266dd59118ca0656}
Send a tune request message via the given device.
#### Parameters
* `device` the device to use for sending
#### `public void `[`midi_send_byte`](#group__send__functions_1ga857e85eb90b288385642d4d991e09881)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t b)` {#group__send__functions_1ga857e85eb90b288385642d4d991e09881}
Send a byte via the given device.
This is a generic method for sending data via the given midi device. This would be useful for sending sysex data or messages that are not implemented in this API, if there are any. Please contact the author if you find some so we can add them.
#### Parameters
* `device` the device to use for sending
* `b` the byte to send
#### `public void `[`midi_send_data`](#group__send__functions_1ga36e2f2e45369d911b76969361679054b)`(`[`MidiDevice`](#struct__midi__device)` * device,uint16_t count,uint8_t byte0,uint8_t byte1,uint8_t byte2)` {#group__send__functions_1ga36e2f2e45369d911b76969361679054b}
Send up to 3 bytes of data.
% 4 is applied to count so that you can use this to pass sysex through
#### Parameters
* `device` the device to use for sending
* `count` the count of bytes to send, %4 is applied
* `byte0` the first byte
* `byte1` the second byte, ignored if cnt % 4 != 2
* `byte2` the third byte, ignored if cnt % 4 != 3
#### `public void `[`midi_send_array`](#group__send__functions_1ga245243cb1da18d2cea18d4b18d846ead)`(`[`MidiDevice`](#struct__midi__device)` * device,uint16_t count,uint8_t * array)` {#group__send__functions_1ga245243cb1da18d2cea18d4b18d846ead}
Send an array of formatted midi data.
Can be used for sysex.
#### Parameters
* `device` the device to use for sending
* `count` the count of bytes to send
* `array` the array of bytes

View File

@ -0,0 +1,61 @@
# group `sysex_tools` {#group__sysex__tools}
## Summary
Members | Descriptions
--------------------------------|---------------------------------------------
`public uint16_t `[`sysex_encoded_length`](#group__sysex__tools_1ga061e5607030412d6e62e2390d8013f0a)`(uint16_t decoded_length)` | Compute the length of a message after it is encoded.
`public uint16_t `[`sysex_decoded_length`](#group__sysex__tools_1ga121fc227d3acc1c0ea08c9a5c26fa3b0)`(uint16_t encoded_length)` | Compute the length of a message after it is decoded.
`public uint16_t `[`sysex_encode`](#group__sysex__tools_1ga54d77f8d32f92a6f329daefa2b314742)`(uint8_t * encoded,const uint8_t * source,uint16_t length)` | Encode data so that it can be transmitted safely in a sysex message.
`public uint16_t `[`sysex_decode`](#group__sysex__tools_1gaaad1d9ba2d5eca709a0ab4ba40662229)`(uint8_t * decoded,const uint8_t * source,uint16_t length)` | Decode encoded data.
## Members
#### `public uint16_t `[`sysex_encoded_length`](#group__sysex__tools_1ga061e5607030412d6e62e2390d8013f0a)`(uint16_t decoded_length)` {#group__sysex__tools_1ga061e5607030412d6e62e2390d8013f0a}
Compute the length of a message after it is encoded.
#### Parameters
* `decoded_length` The length, in bytes, of the message to encode.
#### Returns
The length, in bytes, of the message after encodeing.
#### `public uint16_t `[`sysex_decoded_length`](#group__sysex__tools_1ga121fc227d3acc1c0ea08c9a5c26fa3b0)`(uint16_t encoded_length)` {#group__sysex__tools_1ga121fc227d3acc1c0ea08c9a5c26fa3b0}
Compute the length of a message after it is decoded.
#### Parameters
* `encoded_length` The length, in bytes, of the encoded message.
#### Returns
The length, in bytes, of the message after it is decoded.
#### `public uint16_t `[`sysex_encode`](#group__sysex__tools_1ga54d77f8d32f92a6f329daefa2b314742)`(uint8_t * encoded,const uint8_t * source,uint16_t length)` {#group__sysex__tools_1ga54d77f8d32f92a6f329daefa2b314742}
Encode data so that it can be transmitted safely in a sysex message.
#### Parameters
* `encoded` The output data buffer, must be at least sysex_encoded_length(length) bytes long.
* `source` The input buffer of data to be encoded.
* `length` The number of bytes from the input buffer to encode.
#### Returns
number of bytes encoded.
#### `public uint16_t `[`sysex_decode`](#group__sysex__tools_1gaaad1d9ba2d5eca709a0ab4ba40662229)`(uint8_t * decoded,const uint8_t * source,uint16_t length)` {#group__sysex__tools_1gaaad1d9ba2d5eca709a0ab4ba40662229}
Decode encoded data.
#### Parameters
* `decoded` The output data buffer, must be at least sysex_decoded_length(length) bytes long.
* `source` The input buffer of data to be decoded.
* `length` The number of bytes from the input buffer to decode.
#### Returns
number of bytes decoded.

View File

@ -368,14 +368,15 @@ This is a reference only. Each group of keys links to the page documenting their
## [Switching and Toggling Layers](feature_advanced_keycodes.md#switching-and-toggling-layers)
|Key |Description |
|---------------|----------------------------------------------------------------------------------|
|`LT(layer, kc)`|Turn on `layer` when held, `kc` when tapped |
|`TO(layer)` |Turn on `layer` when pressed |
|`MO(layer)` |Momentarily turn on `layer` when pressed (requires `KC_TRNS` on destination layer)|
|`DF(layer)` |Set the base (default) layer |
|`TG(layer)` |Toggle `layer` on or off |
|`TT(layer)` |Tap toggle? idk FIXME |
|Key |Description |
|----------------|----------------------------------------------------------------------------------|
|`LT(layer, kc)` |Turn on `layer` when held, `kc` when tapped |
|`TO(layer)` |Turn on `layer` when pressed |
|`MO(layer)` |Momentarily turn on `layer` when pressed (requires `KC_TRNS` on destination layer)|
|`DF(layer)` |Set the base (default) layer |
|`TG(layer)` |Toggle `layer` on or off |
|`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](quantum_keycodes.md#one-shot-keys)

View File

@ -171,6 +171,8 @@ In this case we've instructed QMK to call the `ACTION_FUNCTION` callback, which
> This `fn_actions[]` interface is mostly for backward compatibility. In QMK, you don't need to use `fn_actions[]`. You can directly use `ACTION_FUNCTION(N)` or any other action code value itself normally generated by the macro in `keymaps[][MATRIX_ROWS][MATRIX_COLS]`. N in `F(N)` can only be 0 to 31. Use of the action code directly in `keymaps` unlocks this limitation.
You can get a full list of Action Functions in [action_code.h](https://github.com/qmk/qmk_firmware/blob/master/tmk_core/common/action_code.h).
#### `action_function()`
To actually handle the keypress event we define an `action_function()`. This function will be called when the key is pressed, and then again when the key is released. We have to handle both situations within our code, as well as determining whether to send/release `KC_ESC` or `KC_GRAVE`.

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