qmk_firmware/docs
Jacob Jerrell eeba0cec17
Pull in Upstream (#1)
* Various tweaks for some Input:Club build processes

* change KEYMAP to LAYOUT for all new keyboards made using this script

* 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

* Add Nyquist keymap (#2692)

* nyquist

* danielhklein nyquist setup

* shift left controls

* remove readme

* cleanup before pr

* ready for pr

* 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

* Add 2 missing F-Row keys

* Add TKC1800 info.json

Created an info.json for the tkc1800.

* Clueboard 60 info.json

 - adds
   - LAYOUT_60_ansi
   - LAYOUT_60_iso
   - KEYMAP_AEK
   - KEYMAP
   - LAYOUT_60_ansi_split_bs_rshift

* Add the Speedo keyboard

* Fix KC60 info.json file (#2707)

* change KEYMAP to LAYOUT in all the KC60 files

* Redo the info.json file

* Small fixes to TKC1800

 - adjust F-row to use 0.25 spacing
 - split left shift
 - add key_count

* 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

* 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.

* Pull information from config.h and rules.mk (#2711)

* Pull information from config.h and rules.mk

* Readd the kbd75 maintainer

* Remove obsolete info.json entries (#2712)

* Clean up some long-standing errors when populating the API (#2715)

* 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

* 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

* hhkb jp personal keymap (#2698)

* Add JJ40 Cockpit personal keymap (#2713)

* Add JJ40 Cockpit keymap

* Fix lower layer symbols

* 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-10 20:21:40 -05:00
..
gitbook/images RGB improvements (#1684) 2017-09-06 14:49:19 -07:00
_summary.md rename api docs to internals 2018-03-26 11:43:37 -07:00
becoming_a_qmk_collaborator.md Convert all headings to Title Case 2017-12-09 10:46:11 -05:00
compatible_microcontrollers.md Convert all headings to Title Case 2017-12-09 10:46:11 -05:00
config_options.md Fixes and updates to docs (#2611) 2018-03-25 16:44:17 -07:00
contributing.md Trim trailing whitespace 2017-12-09 10:46:11 -05:00
custom_quantum_functions.md Fix custom functions documation for layer_state_set* 2018-03-24 12:49:56 -04:00
documentation_best_practices.md Fix some of the more obvious typos 2017-12-09 10:46:11 -05:00
documentation_templates.md Make arguments redo, subproject elimination (#1784) 2017-10-14 11:32:19 -10:00
eclipse.md Fixed typo of 'confid.h' to 'config.h' (#2448) 2018-02-28 16:43:15 -05:00
faq_build.md Fixes and updates to docs (#2611) 2018-03-25 16:44:17 -07:00
faq_debug.md Trim trailing whitespace 2017-12-09 10:46:11 -05:00
faq_general.md Convert all headings to Title Case 2017-12-09 10:46:11 -05:00
faq_keymap.md More thoroughly document Bootmagic and Command (#2455) 2018-03-02 09:21:03 -08:00
faq.md Overhaul the Getting Started section and add a FAQ section 2017-08-16 15:47:20 -04:00
feature_advanced_keycodes.md Fixes and updates to docs (#2611) 2018-03-25 16:44:17 -07:00
feature_audio.md Fixed typo of 'confid.h' to 'config.h' (#2448) 2018-02-28 16:43:15 -05:00
feature_auto_shift.md Fix typo in autoshift docs: statn (#2579) 2018-03-23 16:03:19 -07:00
feature_backlight.md Clarify that we actually have max 16 total backlight levels 2018-01-12 12:52:35 -05:00
feature_bluetooth.md Format keycode tables 2017-12-09 10:46:11 -05:00
feature_bootmagic.md More thoroughly document Bootmagic and Command (#2455) 2018-03-02 09:21:03 -08:00
feature_command.md More thoroughly document Bootmagic and Command (#2455) 2018-03-02 09:21:03 -08:00
feature_dynamic_macros.md Trim trailing whitespace 2017-12-09 10:46:11 -05:00
feature_grave_esc.md Format keycode tables 2017-12-09 10:46:11 -05:00
feature_key_lock.md Convert all headings to Title Case 2017-12-09 10:46:11 -05:00
feature_layouts.md Clarify the format for layout names 2018-01-19 11:58:19 -08:00
feature_leader_key.md Convert all headings to Title Case 2017-12-09 10:46:11 -05:00
feature_macros.md Add SS_RALT for AltGR usage in macros 2018-03-09 13:15:10 -05:00
feature_mouse_keys.md Fixed dead links (#2451) 2018-03-01 07:45:47 -08:00
feature_pointing_device.md Fix some of the more obvious typos 2017-12-09 10:46:11 -05:00
feature_ps2_mouse.md Trim trailing whitespace 2017-12-09 10:46:11 -05:00
feature_rgblight.md Add rgblist to docs 2018-03-28 16:55:58 -04:00
feature_space_cadet.md Fix some of the more obvious typos 2017-12-09 10:46:11 -05:00
feature_space_shift_cadet.md new planck keymap, new feature - hybrid shift/enter action key (great for small keyboards!) (#2100) 2017-12-14 00:20:44 -05:00
feature_stenography.md Pull in Upstream (#1) 2018-04-10 20:21:40 -05:00
feature_swap_hands.md Add keycodes for swap-hands feature. 2018-03-16 16:33:43 -04:00
feature_tap_dance.md Trim trailing whitespace 2017-12-09 10:46:11 -05:00
feature_terminal.md Trim trailing whitespace 2017-12-09 10:46:11 -05:00
feature_thermal_printer.md Format keycode tables 2017-12-09 10:46:11 -05:00
feature_unicode.md Fix some of the more obvious typos 2017-12-09 10:46:11 -05:00
feature_userspace.md Add userspace config.h handling to build script (#2640) 2018-04-01 00:02:40 -04:00
features.md Fix some of the more obvious typos 2017-12-09 10:46:11 -05:00
flashing.md Trim trailing whitespace 2017-12-09 10:46:11 -05:00
fuse.txt convert docs to lowercase and underscores 2017-06-10 14:58:24 -04:00
getting_started_build_tools.md Fixed formatting for Fedora example 2018-02-23 13:13:30 -05:00
getting_started_getting_help.md Add a newbie guide for people completely new to QMK (#2480) 2018-03-06 14:37:48 -08:00
getting_started_github.md Convert all headings to Title Case 2017-12-09 10:46:11 -05:00
getting_started_introduction.md Convert all headings to Title Case 2017-12-09 10:46:11 -05:00
getting_started_make_guide.md Trim trailing whitespace 2017-12-09 10:46:11 -05:00
getting_started_vagrant.md Fix some of the more obvious typos 2017-12-09 10:46:11 -05:00
hand_wire.md Trim trailing whitespace 2017-12-09 10:46:11 -05:00
hardware_avr.md backlight breathing overhaul (#2187) 2018-01-01 17:47:51 -05:00
hardware_drivers.md Convert all headings to Title Case 2017-12-09 10:46:11 -05:00
hardware_keyboard_guidelines.md Pull in Upstream (#1) 2018-04-10 20:21:40 -05:00
hardware.md Fix some of the more obvious typos 2017-12-09 10:46:11 -05:00
how_keyboards_work.md Convert all headings to Title Case 2017-12-09 10:46:11 -05:00
internals_defines.md rename api docs to internals 2018-03-26 11:43:37 -07:00
internals_input_callback_reg.md rename api docs to internals 2018-03-26 11:43:37 -07:00
internals_midi_device_setup_process.md rename api docs to internals 2018-03-26 11:43:37 -07:00
internals_midi_device.md rename api docs to internals 2018-03-26 11:43:37 -07:00
internals_midi_util.md rename api docs to internals 2018-03-26 11:43:37 -07:00
internals_send_functions.md rename api docs to internals 2018-03-26 11:43:37 -07:00
internals_sysex_tools.md rename api docs to internals 2018-03-26 11:43:37 -07:00
isp_flashing_guide.md Trim trailing whitespace 2017-12-09 10:46:11 -05:00
keycode.txt Trim trailing whitespace 2017-12-09 10:46:11 -05:00
keycodes_basic.md Add CMD and WIN aliases for KC_GUI, GUI(kc), GUI_T(kc), etc. 2018-03-16 16:37:44 -04:00
keycodes_us_ansi_shifted.md Trim trailing whitespace 2017-12-09 10:46:11 -05:00
keycodes.md Add macro for momentarily switching to a layer while some mods are active (#2460) 2018-03-20 22:59:54 -04:00
keymap.md Fixes and updates to docs (#2611) 2018-03-25 16:44:17 -07:00
newbs_building_firmware.md warn->danger 2018-03-06 15:39:46 -08:00
newbs_flashing.md Expand Newb Guide flashing document (#2588) 2018-03-26 13:34:18 -04:00
newbs_getting_started.md Move the linux tutorials to an info box on newbs_getting_started 2018-03-06 20:51:26 -08:00
newbs_testing_debugging.md Add a newbie guide for people completely new to QMK (#2480) 2018-03-06 14:37:48 -08:00
newbs.md Move the linux tutorials to an info box on newbs_getting_started 2018-03-06 20:51:26 -08:00
porting_your_keyboard_to_qmk_(arm_and_other_chibios_cpus).md Fix some of the more obvious typos 2017-12-09 10:46:11 -05:00
power.txt Trim trailing whitespace 2017-12-09 10:46:11 -05:00
quantum_keycodes.md Trim trailing whitespace 2017-12-09 10:46:11 -05:00
README.md Convert all headings to Title Case 2017-12-09 10:46:11 -05:00
redirects.json Disable the glossary linking to fix #2498 (#2499) 2018-03-08 10:31:08 -08:00
reference_glossary.md Disable the glossary linking to fix #2498 (#2499) 2018-03-08 10:31:08 -08:00
understanding_qmk.md Fixed dead links (#2451) 2018-03-01 07:45:47 -08:00
unit_testing.md Trim trailing whitespace 2017-12-09 10:46:11 -05:00
usb_nkro.txt convert docs to lowercase and underscores 2017-06-10 14:58:55 -04:00

Quantum Mechanical Keyboard Firmware

What is QMK Firmware?

QMK (Quantum Mechanical Keyboard) is an open source community that maintains QMK Firmware, QMK Flasher, qmk.fm, and these docs. QMK Firmware is a keyboard firmware based on the tmk_keyboard with some useful features for Atmel AVR controllers, and more specifically, the OLKB product line, the ErgoDox EZ keyboard, and the Clueboard product line. It has also been ported to ARM chips using ChibiOS. You can use it to power your own hand-wired or custom keyboard PCB.

How to Get It

If you plan on contributing a keymap, keyboard, or features to QMK, the easiest thing to do is fork the repo through Github, and clone your repo locally to make your changes, push them, then open a Pull Request from your fork.

Otherwise, you can either download it directly (zip, tar), or clone it via git (git@github.com:qmk/qmk_firmware.git), or https (https://github.com/qmk/qmk_firmware.git).

How to Compile

Before you are able to compile, you'll need to install an environment for AVR or/and ARM development. Once that is complete, you'll use the make command to build a keyboard and keymap with the following notation:

make planck/rev4:default

This would build the rev4 revision of the planck with the default keymap. Not all keyboards have revisions (also called subprojects or folders), in which case, it can be omitted:

make preonic:default

How to Customize

QMK has lots of features to explore, and a good deal of reference documentation to dig through. Most features are taken advantage of by modifying your keymap, and changing the keycodes.