Compare commits

...

1739 Commits

Author SHA1 Message Date
Jack Humbert
23df3016e8 Merge pull request #1405 from cquiroz/oneshot-mods-timeout
Oneshot mods timeout
2017-06-20 11:40:10 -04:00
Jack Humbert
9019d65b3c Merge pull request #1414 from dvdizon/kbd75
KBD75 - Initial KBD75 port from qmkeyboard.cn source files
2017-06-20 09:19:48 -04:00
Jack Humbert
2c171b3e5f Merge pull request #1413 from lasko/master
This is a complete redo of my keymap. It includes several
2017-06-20 09:18:02 -04:00
Jack Humbert
33a271b8e3 Merge pull request #1412 from nall/master
Fixed offset for knight rgb mode
2017-06-20 09:17:36 -04:00
David Dizon
e71b3c6572 KBD75 - Initial KBD75 port from qmkeyboard.cn source files 2017-06-19 22:59:17 -07:00
Jon Nall
f169c715eb Added custom keymap and enabled Space Cadet 2017-06-19 22:44:42 -07:00
Brandon Height
2ffcf47793 This is a complete redo of my keymap. It includes several
layers including qwerty, colemak, navigation, and gui layers.

I also was playing around with dancing tap keys.
2017-06-19 20:12:30 -07:00
Jon Nall
7ce056cad7 Fixed offset for knight rgb mode 2017-06-19 19:51:37 -07:00
Jack Humbert
3e7bb19612 Merge pull request #1410 from belak/tv44-core
tv44: Add core layout based on the Core 47
2017-06-19 14:05:02 -04:00
Jack Humbert
e951317acb Merge pull request #1409 from fredizzimo/full_unit_test
Take first baby steps towards testing the whole QMK
2017-06-19 14:04:19 -04:00
Kaleb Elwert
f71c990215 tv44: Add core layout based on the Core 47 2017-06-18 22:44:52 -07:00
Fred Sundvik
1aa0be4cf1 Fix serial_link vpath problem 2017-06-19 00:46:53 +03:00
Fred Sundvik
0f163c0028 Add todo to timer.c 2017-06-19 00:24:32 +03:00
Fred Sundvik
fb9b8dadb9 Add a couple of todos to keyboard_report_util.cpp
Also print the modifier state
2017-06-19 00:22:12 +03:00
Fred Sundvik
43d8fa5bf1 More natural interface for setting keyboard leds 2017-06-19 00:19:09 +03:00
Fred Sundvik
36f820be7e Add a test fixture
It only initializes QMK once, and clears the matrix after each test.
2017-06-18 23:49:38 +03:00
Fred Sundvik
e85b185796 Test two keys pressed at once 2017-06-18 21:22:22 +03:00
Fred Sundvik
6a76192fa4 Fix problems with undefined inlines in debug mode 2017-06-18 21:22:22 +03:00
Fred Sundvik
bd1729d5be Actually test for correct key presses 2017-06-18 21:22:22 +03:00
Fred Sundvik
fb95d86b39 Move functions for adding keys from to reports to report.h 2017-06-18 21:22:22 +03:00
Fred Sundvik
017458a07b Move functionality from action_util to report
The functions also takes report_kebyoard_t parameters, so that they can
be used elsewhere.
2017-06-18 21:22:22 +03:00
Fred Sundvik
c38589d861 Fix the order of init and driver creation 2017-06-18 21:22:22 +03:00
Fred Sundvik
3bb0586acc Add a couple of basic tests and implement driver mock 2017-06-18 21:22:22 +03:00
Fred Sundvik
617578399c Add keymap 2017-06-18 21:22:22 +03:00
Fred Sundvik
c588fca06c Empty bootloader_jump 2017-06-18 21:22:22 +03:00
Fred Sundvik
a72e8f0865 Dummy test matrix implementation 2017-06-18 21:22:22 +03:00
Fred Sundvik
1c0fe956ac Split common.mk into common.mk and common_features.mk
To support including keyboard/keymap specific rules before it
2017-06-18 21:22:22 +03:00
Fred Sundvik
d29906cb64 Emulate eeprom 2017-06-18 21:10:42 +03:00
Fred Sundvik
f646f00b93 Rename native to test 2017-06-18 21:10:42 +03:00
Fred Sundvik
83509adc3a Add empty timer functions 2017-06-18 21:10:42 +03:00
Fred Sundvik
26eb97a4a8 Empty implementation of bootloader, suspend and timer 2017-06-18 21:10:42 +03:00
Fred Sundvik
fdfd48e8c8 Fix program mem functionality 2017-06-18 21:10:42 +03:00
Fred Sundvik
efaf0e830b Empty implementation of wait 2017-06-18 21:10:42 +03:00
Fred Sundvik
585d646128 Define MATRIX_COLS and MATRIX_ROWS 2017-06-18 21:10:42 +03:00
Fred Sundvik
8674f9c466 Make sure config.h is included 2017-06-18 21:10:42 +03:00
Fred Sundvik
7424261dae Try to build tmk_common 2017-06-18 21:10:42 +03:00
Fred Sundvik
30f22d450d Add basic infrastrucure for building full tests 2017-06-18 21:08:23 +03:00
Jack Humbert
621ae42a6c revert edit 2017-06-18 13:28:34 -04:00
Jack Humbert
4217cb5bbc Update key_functions.md 2017-06-18 13:26:20 -04:00
Jack Humbert
517f75d893 Merge pull request #1349 from jpetermans/infinity60
Infinity60 backlight support
2017-06-18 12:38:38 -04:00
Jack Humbert
dd73e14c9b Merge pull request #1407 from take-a-CHANCE/master
Adding a planck keymap
2017-06-18 12:35:08 -04:00
Jack Humbert
66e2d6a063 Merge pull request #1406 from jprMesh/atreus52
Atreus52
2017-06-18 12:34:33 -04:00
Jack Humbert
f2e1609801 remove hardware files, move arrow pad 2017-06-18 12:33:14 -04:00
Carlos Quiroz
74d752b531 Remove noisy debug line 2017-06-18 12:17:51 -04:00
Carlos Quiroz
3ab0f4d9e5 Deactivate oneshot mods once timedout 2017-06-18 12:17:51 -04:00
Jack Humbert
5682254f71 Merge pull request #1408 from fredizzimo/fix_build_improve_travis
Fix the two failing keymaps and improve the travis build script
2017-06-18 12:13:56 -04:00
Fred Sundvik
45d437ca04 Make only modified keymaps 2017-06-18 18:30:59 +03:00
Jack Humbert
51a86b85f3 Merge pull request #1361 from fredizzimo/ergodox_infinity_backlight
Add Ergodox Infinity backlight support
2017-06-18 10:15:02 -04:00
Fred Sundvik
2fd670bec0 Add missing include to Ergodox Belak keymap 2017-06-18 17:07:20 +03:00
Fred Sundvik
6ba22b5f5e Don't define RGBLED_NUM in let-split khord keymap
It's already defined correctly by the parent keyboard project, and was
causing problems for rev1, where the pin is different.
2017-06-18 17:03:07 +03:00
Fred Sundvik
a15510b57b Always build everything on master 2017-06-18 17:03:05 +03:00
Fred Sundvik
5acc0e54aa Make all subprojects when a keymap is modified 2017-06-18 16:44:51 +03:00
root
1a8042ae91 Added personal keymap with underglow, right shift, numpad, and bright hidden behind raise/lower 2017-06-17 23:11:37 -04:00
Jonas Rogers
a284245f77 Atreus52- moved parens and braces to left hand. 2017-06-17 22:51:50 -04:00
Jonas Rogers
85d688e92c Atreus52- made dvorak layer default. 2017-06-17 21:21:46 -04:00
Jonas Rogers
4c2f04986a Atreus52- added software reset key. 2017-06-17 21:21:38 -04:00
Jonas
3007d01718 Atreus52- Modified BDO map. 2017-06-17 21:21:30 -04:00
Jonas
3b9fabb9aa Atreus52- BDO keymap. 2017-06-17 21:21:21 -04:00
jprmesh
a8992a2cfe Atreus52- Added Nav layer keymap. 2017-06-17 21:20:16 -04:00
Jonas
7837d96b6e Atreus52- Reworked keymap to be more 40% like. 2017-06-17 21:20:09 -04:00
jprmesh
56026dd4df Atreus52- Swapped thumb keys. 2017-06-17 21:19:59 -04:00
jprmesh
1552fd6ae1 Atreus52- Last changes to config to get it workin. 2017-06-17 21:19:48 -04:00
jprmesh
133908da74 Atreus52- Some keymap changes. 2017-06-17 21:19:45 -04:00
jprMesh
3c2c489768 Atreus52- Fixed spacing and changed to KC_KEYMAP macro. 2017-06-17 21:19:36 -04:00
jprmesh
b236e51b69 Atreus52- finished initial keymap layout. 2017-06-17 21:19:29 -04:00
jprmesh
17e81baab3 Atreus52- Fixed config. 2017-06-17 21:19:18 -04:00
jprmesh
f9eb11a674 Atreus52- Fixed Qwerty Dvorak switch 2017-06-17 21:18:58 -04:00
jprmesh
bb99d7117c Atreus52- Changed to KEYMAP macro format. 2017-06-17 21:18:40 -04:00
jprMesh
a5ba30338f Atreus52- Initial Atreus52 file creation. 2017-06-17 21:18:04 -04:00
Jack Humbert
7feadbd66d Merge pull request #1401 from geofflane/s65_x_fixes3
S65-X Fixes Part 3
2017-06-17 20:14:49 -04:00
Jack Humbert
206233d98c Merge pull request #1402 from belak/tv44-belak-tap-magic
tv44: Rearrange belak keymap and add some tap dance magic
2017-06-17 20:14:23 -04:00
Jack Humbert
82372d36af Merge pull request #1403 from Wraul/kmac-fixes
KMAC fixes
2017-06-17 20:14:05 -04:00
Mathias Andersson
df26ede131 Unify KMAC code indentation
It's a little unclear what the style guidelines are for the QMK project.
But I figured that I should at least keep the indentation consistent
within the KMAC part.
2017-06-17 20:06:28 +02:00
Mathias Andersson
67e150a08a Enable backlight support by default for KMAC 2017-06-17 20:06:28 +02:00
Mathias Andersson
ba945c5e77 Correct layer switching in KMAC keymap readmes 2017-06-17 20:06:28 +02:00
Mathias Andersson
be002137f9 Fix some KMAC code formating 2017-06-17 20:06:28 +02:00
Mathias Andersson
a621c7f88b Don't include the console by default on the KMAC 2017-06-17 20:06:28 +02:00
Kaleb Elwert
722adce095 tv44: Rearrange belak keymap and add some tap dance magic 2017-06-16 17:08:00 -07:00
jamesofarrell
98316ef017 Added Grave Escape (#1391)
* added QK_GRAVE_ESC and KC_GESC

* fixed name

* Fixed keycode emnu

* Removed layer check, added left and right GUI mod detection for OSX GUI+~
2017-06-16 14:56:50 -07:00
Jack Humbert
ff2b01da49 Merge pull request #1400 from belak/belak-ergodox-theme
ergodox: initial addition of belak theme
2017-06-16 17:01:54 -04:00
Jack Humbert
6549e169f8 Merge pull request #1398 from belak/tv44-keymap-changes
TV44 keymap changes
2017-06-16 17:00:36 -04:00
Kaleb Elwert
e9a4a5e961 tv44: add belak keymap 2017-06-16 13:11:40 -07:00
Kaleb Elwert
ef4abfeb31 ergodox: initial addition of belak theme
Imported from external repo https://github.com/belak/ergodox-layout at commit
233008ad8c46a85cb118fca0be093c3e751075b0
2017-06-16 10:57:58 -07:00
Geoff Lane
b4802d7567 Fix home and end to be on <> 2017-06-16 11:57:43 -04:00
Geoff Lane
d2a11b523b LED control on the BL layer 2017-06-15 21:57:50 -04:00
Fred Sundvik
086aad0d7e Make sure backlight is in the range 0-100 2017-06-16 02:06:30 +03:00
Fred Sundvik
ec88a0b3cc Make sure that the backlight level is within the right range 2017-06-16 02:05:38 +03:00
Fred Sundvik
7d5606085f Correctly calculate backlight level 2017-06-16 02:05:15 +03:00
Fred Sundvik
19f0285a76 Fix typo in BACKLIGHT_ENABLE 2017-06-15 23:21:01 +03:00
Kaleb Elwert
29108d1477 tv44: update tong92 keymap to use KEYMAP macro 2017-06-15 12:48:59 -07:00
Kaleb Elwert
4cefb45a2d tv44: update xyverz keymap to use KEYMAP macro 2017-06-15 12:48:44 -07:00
Kaleb Elwert
f894103997 tv44: update default keymap to use KEYMAP macro 2017-06-15 12:47:57 -07:00
Kaleb Elwert
b56a9a9899 tv44: update jeebak keymap to use new macros and remove custom ones 2017-06-15 12:46:25 -07:00
Kaleb Elwert
e32e7dc0f5 tv44: update smt keymap to use new macros and remove custom ones 2017-06-15 12:45:53 -07:00
Kaleb Elwert
44ce179192 tv44: Fix up the KEYMAP macro
Previously KEYMAP referred to the KEYMAP_ARROW layout and had 45 keys. It makes
more sense for the default keymap to be the 44 key layout, as is implied by the
name.

Additionally keymaps for all other known layouts have been added:

KEYMAP - base layout
KEYMAP_ARROW - additional key in bottom right
KEYMAP_COMMAND - additional key in bottom left
KEYMAP_ARROW_COMMAND - combination of KEYMAP_ARROW and KEYMAP_COMMAND
2017-06-15 12:42:23 -07:00
Jack Humbert
d9ffd77ee7 Merge pull request #1397 from geofflane/s65x_fixes
S65x fixes
2017-06-15 15:16:52 -04:00
Geoff Lane
e553bb3af4 LED init works with just pin declared 2017-06-15 13:42:14 -04:00
Geoff Lane
b107d64d69 Use standard QMK key codes for RGB control 2017-06-15 13:12:36 -04:00
Geoff Lane
c81be932d2 Fix left shift in ansi layout 2017-06-15 13:12:36 -04:00
Geoff Lane
899584187f Fix esc key 2017-06-15 13:12:36 -04:00
Jack Humbert
6a75a7d672 Merge pull request #1394 from Khord/master
Adding custom keymap for Let's Split and updates to custom Planck keymap
2017-06-15 12:34:18 -04:00
Jack Humbert
be9fd4b4fa Merge pull request #1396 from shieldsd/master
Minor updates to planck/keymaps/dshields
2017-06-15 12:33:44 -04:00
Daniel Shields
cc158d90ae Minor updates to planck/keymaps/dshields
* tweaks to tap dance keys
* tidy up code
* save a few bytes
2017-06-15 09:41:59 +01:00
Dylan Khor
5c11ba74d8 tap dance and hold changes to make planck match lets split 2017-06-15 03:34:08 -04:00
Dylan Khor
a44ba492ea minor fixes 2017-06-15 03:26:04 -04:00
Dylan Khor
22f985eba7 Add custom let's split keymap 2017-06-15 07:15:27 +00:00
Martin Gondermann
49cfdb544d Added HyperTab and Ctrl/Fn as well as Space cadet parens (#1390)
* Added HyperTab and Ctrl/Escape as well as Space cadet parens to magicmonty keymap

* Replaced CTL_ESC With FN_ESC
2017-06-14 07:20:43 -07:00
fredizzimo
3aa620c1ac Update uGFX and Chibios submodules + fixes (#1363)
* Make submodules point to qmk

* Update uGFX to 2.7

* Use ugfx with custom fixes

* Fix the ChibiOs submodule commit hash

To match the hashes in the mabl/ChibiOS and therefore QMK repository.
2017-06-13 21:13:39 -07:00
Jack Humbert
c2c9cb2505 Merge pull request #1392 from jetpacktuxedo/whitefox
Added whitefox keymap
2017-06-13 22:21:52 -04:00
Ethan Madden
a7942c4f48 Added whitefox keymap 2017-06-13 16:01:28 -07:00
Jack Humbert
3d5d3e1b0c Merge pull request #1387 from antelaurijssen/master
Submitting my own custom layout for S60X keyboard
2017-06-12 20:47:35 -04:00
Ante Laurijssen
f37daa5343 Properly formatted unordered lists in readme.md 2017-06-12 20:24:56 -04:00
Ante Laurijssen
3ee346c07b Mods to readme.md 2017-06-12 20:20:28 -04:00
Ante Laurijssen
78a4cfd453 Modifications to readme.md and deletion of keyboard layout images 2017-06-12 20:13:17 -04:00
Jack Humbert
6b5d67fcc6 Merge pull request #1389 from geofflane/keyboard_s65_x_2
Keyboard S65-X Support #2
2017-06-12 17:08:27 -04:00
Jack Humbert
d1854e0e04 Merge pull request #1388 from bigbigtor/fix_spanish
Fix spanish keymap
2017-06-12 17:06:11 -04:00
Geoff Lane
0440c0f072 Add ISO layout for S65-X 2017-06-12 16:57:01 -04:00
Geoff Lane
568c662c14 Fix media controls in default layout 2017-06-12 16:19:57 -04:00
Geoff Lane
96b0382fb4 Fix backslash and some of the docs 2017-06-12 16:16:42 -04:00
Víctor
21fa16651c Rename ES_RCRB to ES_RCBR for consistency reasons (left curly bracket is defined as ES_LCBR) 2017-06-12 21:44:40 +02:00
Víctor
2c404cca12 Fix keymap definitions referencing inexistent macros 2017-06-12 21:43:34 +02:00
Martin Gondermann
a5b5279da9 Add MIDI layer to magicmonty keymap (#1386)
* Add MIDI layer

* Respect brightness level on layer signalling

* Add hotkey in control layer for signalling state

* Update layout.png

* Remove image and replace it with imgur link
2017-06-12 08:48:01 -07:00
Jack Humbert
52f6bc164e Merge pull request #1385 from qmk/ez-images
Remove images and old .hex files
2017-06-11 22:50:40 -04:00
Jack Humbert
23c448b21d remove .hex, .PNG, .jpg 2017-06-11 22:16:42 -04:00
Jack Humbert
a7ce482d14 remove the rest of the .pngs 2017-06-11 21:24:23 -04:00
Ante Laurijssen
54d48140cd -MIDI Chords now using process_record_user instead of F(n) keys
-Morse Code shift keys implemented
2017-06-11 16:00:40 -04:00
Jack Humbert
c02f9a6ee4 remove most .pngs 2017-06-11 15:36:28 -04:00
Jack Humbert
6bd4df7a90 define limits to functions 2017-06-11 14:28:30 -04:00
Jack Humbert
c22a400603 Merge pull request #1384 from geofflane/keyboard_s65x
Support Sentraq S65-X
2017-06-10 22:18:17 -04:00
Geoff Lane
b1e01e9d1f Support Sentraq S65-X
Add initial support for ANSI layout of S65-X.
Includes support for controlling RGB underlighting.
2017-06-10 21:09:38 -04:00
Jack Humbert
b721779241 Merge pull request #1383 from qmk/deleting-files
Deleting uppercase docs files
2017-06-10 15:14:17 -04:00
Jack Humbert
06f0f92c1a Delete VAGRANT_GUIDE.md 2017-06-10 15:13:24 -04:00
Jack Humbert
7921834663 Delete USB_NKRO.txt 2017-06-10 15:13:15 -04:00
Jack Humbert
d942389e11 Delete TMK_README.md 2017-06-10 15:13:07 -04:00
Jack Humbert
3df614c942 Delete POWER.txt 2017-06-10 15:12:59 -04:00
Jack Humbert
08fdced65f Delete PCB_GUIDE.md 2017-06-10 15:12:52 -04:00
Jack Humbert
de4a38ab1b Delete Macros.md 2017-06-10 15:12:45 -04:00
Jack Humbert
ceb7a63c68 Delete Kiibohd.asciidoc 2017-06-10 15:12:39 -04:00
Jack Humbert
656744e7dd Delete Keymap.md 2017-06-10 15:12:32 -04:00
Jack Humbert
6442822efd Delete Keycodes.md 2017-06-10 15:12:20 -04:00
Jack Humbert
f320ac4bc6 Delete Home.md 2017-06-10 15:12:12 -04:00
Jack Humbert
ee595965ae Delete HAND_WIRE.md 2017-06-10 15:12:04 -04:00
Jack Humbert
4de370ccc3 Delete FUSE.txt 2017-06-10 15:11:53 -04:00
Jack Humbert
4092e45b6b Delete FAQ.md 2017-06-10 15:11:36 -04:00
Jack Humbert
296e8669f3 Delete Embedding.md 2017-06-10 15:11:26 -04:00
Jack Humbert
fa6044ab1d Delete Eclipse.md 2017-06-10 15:11:18 -04:00
Jack Humbert
401aab7d5a Delete CYGWIN_GUIDE.md 2017-06-10 15:11:02 -04:00
Jack Humbert
5e9d5a0a75 Delete BUILD_GUIDE.md 2017-06-10 15:10:44 -04:00
Jack Humbert
995c3141a6 convert docs to lowercase and underscores 2017-06-10 14:58:55 -04:00
Jack Humbert
ca01d94005 convert docs to lowercase and underscores 2017-06-10 14:58:24 -04:00
Jack Humbert
558db0e03f remove leading slash 2017-06-10 12:28:37 -04:00
Jack Humbert
2508b9b6e2 Merge pull request #1380 from qmk/improve_macro_docs
Clean up and improve the macro documentation
2017-06-10 12:27:05 -04:00
Jack Humbert
43b6179feb Merge branch 'master' into improve_macro_docs 2017-06-10 12:26:57 -04:00
Jack Humbert
163754f363 Create Home.md 2017-06-10 12:26:09 -04:00
Jack Humbert
ad49086be5 Create SUMMARY.md 2017-06-10 12:25:04 -04:00
Jack Humbert
2f942c9883 Create Custom-Quantum-Functions.md 2017-06-10 12:23:04 -04:00
Jack Humbert
1da0a19177 make searchable 2017-06-10 12:18:49 -04:00
Jack Humbert
d81135410c Merge pull request #1382 from binaryplease/handwired_binaryplease
Handwired binaryplease
2017-06-09 21:09:52 -04:00
binaryplease
1502c9c935 put colemak and qwert switching on the top right 2017-06-10 02:44:28 +02:00
binaryplease
0c1dc91d74 removed swapping keys in adjust layer 2017-06-10 02:42:27 +02:00
binaryplease
e3f657dfeb commented out unused layers 2017-06-10 02:01:51 +02:00
Jack Humbert
5801a1f8af update music docs 2017-06-09 16:42:30 -04:00
skullY
a0ac0d3cea Move Dynamic Macros into their own file 2017-06-09 12:25:12 -07:00
skullY
767bcac23c Clean up and improve the macro documentation 2017-06-09 11:47:53 -07:00
Jack Humbert
d2aec1625d removes some images 2017-06-09 14:05:33 -04:00
Jack Humbert
728f2f8d00 Merge pull request #1378 from nicinabox/fix-ls-avrdude
Let's Split avrdude portability fix
2017-06-09 10:35:33 -04:00
Jack Humbert
fc39a288ed remove mechmini keymap from ps2avrGB 2017-06-09 10:25:20 -04:00
Jack Humbert
8c4a59611a due diligence, etc 2017-06-09 10:22:58 -04:00
Nic Aitch
3b38e6954a Use single brackets for portability with other shells 2017-06-09 09:14:44 -05:00
Jack Humbert
9ac2ed280c move mechmini to own folder 2017-06-09 10:11:34 -04:00
skullY
2a667eba2a Cleanup the Clueboard readme files. 2017-06-08 20:42:37 -07:00
Ethan Madden
d9f95c5da9 Docfix (#1377)
* SCKLCK is now SCROLLLOCK

Yes, with all three Ls
At least it doesn't have a random K anymore lol

* Removed strange mystery trailing numbers in the docs
2017-06-08 20:05:55 -07:00
Erez Zukerman
481797f92f Documents permissive hold 2017-06-08 23:00:28 -04:00
Martin Gondermann
e4eb4eaa16 Fix layer LED signalling in magicmonty keymap (#1373)
* Fix layer LED signalling in magicmonty keymap

* Include the breathing modes in layer signalling

* Reverts mode to 1 as the other modes flicker

* Add Cursor keys on VIM positions and PAUSE to function layer
2017-06-08 19:55:34 -07:00
Ethan Madden
e82c089b4c SCKLCK is now SCROLLLOCK (#1376)
Yes, with all three Ls
At least it doesn't have a random K anymore lol
2017-06-08 19:54:49 -07:00
Jack Humbert
a3385b7a2f Merge pull request #1375 from Wraul/kmac
Add support for KMAC
2017-06-08 16:42:05 -04:00
Mathias Andersson
1b02b2006e Add support for KMAC 2017-06-08 19:35:27 +02:00
Ante Laurijssen
7146dfea6e Created special shift keys for Morse layer that change variable value, enabling to send “shifted” special morse code characters. 2017-06-07 23:57:14 -04:00
Ante Laurijssen
8f80f35186 Working on Morse Code Macros 2017-06-07 22:01:28 -04:00
Jack Humbert
00d9416626 Merge pull request #1372 from chilifries/master
Added support for Mechmini v1
2017-06-07 21:10:45 -04:00
chilifries
c9e0068cf2 Added support for Mechmini v1 2017-06-07 16:24:40 -07:00
Jack Humbert
84012d8243 Merge pull request #1359 from agbell/PR
Permissive Hold, and two keymaps
2017-06-07 18:47:29 -04:00
Martin Gondermann
8cc0035ea0 Add new keyboard layout for the ClueBoard (#1371) 2017-06-07 08:18:26 -07:00
Jack Humbert
5d83d320cb Merge pull request #1366 from abperiasamy/refine-layout
Replace enter with quote and few reorgs
2017-06-06 12:35:26 -04:00
Jack Humbert
05b0075391 Merge pull request #1368 from shieldsd/master
Additional tap dance keys/functions for planck/keymap/dshields
2017-06-06 12:35:04 -04:00
Daniel Shields
ad7a5bdc4f Additional tap dance keys/functions for planck/keymap/dshields 2017-06-06 13:09:55 +01:00
Ante Laurijssen
1b8ed53f21 Added a couple of custom keys and updated layer image 2017-06-05 22:17:35 -04:00
Jack Humbert
5e18e4ab48 update docs link 2017-06-05 16:25:59 -04:00
Fred Sundvik
b51a0db6ed Add backlight support to the default Ergodox Infinity animations 2017-06-03 22:04:10 +03:00
Adam Bell
0db6ac46aa remove build stuff 2017-06-03 14:32:02 -04:00
Fred Sundvik
2a7f9a7e46 Add backlight control to the IS31FL3731 driver 2017-06-03 21:30:52 +03:00
Fred Sundvik
effffa33a5 Backlight level handling for the visualizer 2017-06-03 21:14:26 +03:00
Adam Bell
4ab61344f5 Adding permissive_hold 2017-06-03 10:28:46 -04:00
Adam Bell
587b0de6e5 adding lets split keymap 2017-06-03 10:28:46 -04:00
Adam Bell
82de4d039d Ergodox Adam keymap 2017-06-03 10:28:36 -04:00
Adam Bell
6d6dee2956 Adding docker compose 2017-06-03 09:32:44 -04:00
Fred Sundvik
0f9bfafb9e Turn off LED matrix by default 2017-06-03 15:31:02 +03:00
Fred Sundvik
a916f4e8b8 Let BACKLIGHT_ENABLE control the Infinity LEDs 2017-06-03 14:34:50 +03:00
Ante Laurijssen
9cfa37bb3d Improvements and corrections to morse code macros layer 2017-06-02 22:57:57 -04:00
Jack Humbert
aaa67f6930 Merge pull request #1357 from shieldsd/gherkin
Initial commit for gherkin keyboard support. Compiles but untested.
2017-06-02 10:23:54 -04:00
Daniel Shields
7cbd16c902 Initial commit for gherkin keyboard support. Compiles but untested. 2017-06-02 14:45:42 +01:00
Jack Humbert
eefec19ad9 Update Keycodes.md 2017-06-02 09:44:08 -04:00
Jack Humbert
af931368ce Merge pull request #1356 from fabienheureux/patch-1
Broken Keymap docs link
2017-06-02 09:21:15 -04:00
Jack Humbert
47c209fa02 Update Keycodes.md 2017-06-02 09:21:01 -04:00
fabienheureux
19816a4998 Broken Keymap docs link 2017-06-02 10:51:12 +02:00
Jack Humbert
9069edd934 Merge pull request #1347 from nooges/nyquist
Add Nyquist keyboard support
2017-06-01 12:58:33 -04:00
Jack Humbert
d548693c8b Merge pull request #1294 from shieldsd/master
Prevent the recording of looping dynamic macros.
2017-06-01 12:18:36 -04:00
Daniel Shields
606e13a47e Prevent the recording of looping dynamic macros.
If a macro play key is inadvertently recorded in a dynamic macro
a loop is created and the macro will not terminate when played.

This should be prevented.
2017-06-01 16:29:58 +01:00
Jack Humbert
ec3e684123 Merge pull request #1350 from originerd/add-originerd-planck-keymap
Add originerd planck keymap
2017-06-01 11:19:40 -04:00
Jack Humbert
05e6dd6527 Merge pull request #1351 from Alfrheim/fixing_dvorak_layout
replacing one R for a T
2017-06-01 11:19:20 -04:00
Jack Humbert
cf77c42c72 Merge pull request #1353 from 333fred/333fred-layout
ergodox/333fred layout
2017-06-01 11:18:56 -04:00
Jack Humbert
cc52856bac Merge pull request #1354 from shieldsd/tweaks
Tweak reported power consumption to work with iOS
2017-06-01 11:18:28 -04:00
Danny Nguyen
aae727d9ec Update keymap layout comments 2017-06-01 11:15:21 -04:00
Daniel Shields
db0ac3bcb3 Tweak reported power consumption to work with iOS 2017-06-01 09:18:33 +01:00
Danny Nguyen
db82b17d6e Remove OLED code and set I2C rate back to 100kHz 2017-06-01 01:26:06 -04:00
Fredric Silberberg
dded79a412 Update licensing on visualizer.c 2017-05-31 18:07:02 -07:00
Fredric Silberberg
cfaf34daec Updated readme 2017-05-31 17:57:38 -07:00
Fredric Silberberg
aa1b1c5756 Added several new macros 2017-05-31 17:42:50 -07:00
Fredric Silberberg
f35c82ccb2 Fixed numpad 0 layout 2017-05-31 10:27:39 -07:00
Alfrheim
974a77a07c replacing one R for a T 2017-05-31 15:19:37 +02:00
Jitae Kim
c33c2bbade Add originerd planck keymap 2017-05-31 22:00:44 +09:00
Fredric Silberberg
4eba71841e Use code blocks for keyboard layouts 2017-05-30 23:56:28 -07:00
Fredric Silberberg
95ae256482 Completed iteration 1 of my layout 2017-05-30 23:52:20 -07:00
jpetermans
9af272e4bb Update lock led processing and remove debug msgs 2017-05-30 21:52:44 -07:00
Jack Humbert
57cfb5f1ae Merge pull request #1348 from Dbroqua/master
Added DK60 keyboard
2017-05-30 23:12:11 -04:00
Ante Laurijssen
fbaf964a85 Improvements to Midi and keymap 2017-05-30 21:27:00 -04:00
Fredric Silberberg
949540d601 Added initial keymap files 2017-05-30 18:01:09 -07:00
dbroqua
c5d3faace5 Merge remote-tracking branch 'origin/feature/DK60' 2017-05-30 23:10:14 +02:00
dbroqua
a381eb01f5 - Updated copyright 2017-05-30 23:09:39 +02:00
Danny Nguyen
7a433a7f3d Update copyright info 2017-05-30 16:52:02 -04:00
Danny Nguyen
fbec02c148 Remove Let’s Split plate files 2017-05-30 16:42:04 -04:00
Damien Broqua
061bb4a0b8 Merge remote-tracking branch 'origin/feature/DK60' 2017-05-30 22:17:20 +02:00
Damien Broqua
05f5243426 - Updated readme 2017-05-30 22:17:03 +02:00
Damien Broqua
55d6750254 Merge remote-tracking branch 'origin/feature/DK60' 2017-05-30 22:15:07 +02:00
Damien Broqua
e280f7aad7 - Added Capslock/Esc led 2017-05-30 22:13:34 +02:00
Jack Humbert
328bde1624 Merge pull request #1323 from nikchi/master
Variable tapping terms
2017-05-30 15:38:22 -04:00
Nick Choi
3c4022c41b hmm? 2017-05-30 14:19:57 -04:00
Nick Choi
2c9f846608 Merge pull request #2 from qmk/master
pull in new qmk changes
2017-05-30 14:17:48 -04:00
Danny Nguyen
be204f9cdd Update readme 2017-05-30 13:29:30 -04:00
Jack Humbert
cb791cf6cd Merge branch 'master' of https://github.com/qmk/qmk_firmware 2017-05-30 12:49:38 -04:00
Jack Humbert
9ecfc23292 make qmk bot do the hard work 2017-05-30 12:49:26 -04:00
Jack Humbert
4549b0417e Merge pull request #1342 from priyadi/adafruit-mouse-buttons
Adafruit Feather BLE / BLE Friend mouse buttons support
2017-05-30 12:10:45 -04:00
Jack Humbert
3a1a7d6472 Merge branch 'master' of https://github.com/qmk/qmk_firmware 2017-05-30 11:46:34 -04:00
Jack Humbert
7eccbfe737 exclude PRs 2017-05-30 11:46:25 -04:00
Damien Broqua
f06f883589 - Some changes on DK60 2017-05-30 16:59:56 +02:00
Ante Laurijssen
06684555d2 Another typo... 2017-05-29 22:16:17 -04:00
Ante Laurijssen
cd4ccee703 Corrected typo in readme.md 2017-05-29 22:13:52 -04:00
Ante Laurijssen
1ef911d150 Added a few images 2017-05-29 22:11:48 -04:00
Ante Laurijssen
4c48c29c0e Added MIDI_CHORD layer and other little fixes.
Updated readme.md
2017-05-29 22:09:06 -04:00
Nick Choi
5393bc6f4e switched to uint8 and 16 2017-05-29 21:25:50 -04:00
Danny Nguyen
4a8da0cb45 Modify pinout and layouts for Nyquist 2017-05-29 16:20:06 -04:00
Danny Nguyen
aeade1b197 Fork Let’s Split files 2017-05-29 16:04:46 -04:00
Jack Humbert
732a115b32 Merge pull request #1344 from qmk/jackhumbert-patch-1
Re-enable mouse buttons from #1327
2017-05-29 15:17:38 -04:00
Jack Humbert
b6c60333e4 Re-enable mouse buttons 2017-05-29 13:21:38 -04:00
Jack Humbert
0c351fa98b no master needed on push maybe 2017-05-29 12:49:25 -04:00
Jack Humbert
bd39e91f78 Merge branch 'master' of https://github.com/qmk/qmk_firmware 2017-05-29 12:15:03 -04:00
Jack Humbert
44832127d7 push to git url 2017-05-29 12:14:49 -04:00
Priyadi Iman Nurcahyo
7eebdd4760 Jokrik's Clueboard layout (#1340) 2017-05-29 09:10:34 -07:00
Jack Humbert
1d6a18db99 Merge pull request #1343 from Maartenwut/patch-1
Added SEND_STRING(); to the documentation.
2017-05-29 11:58:08 -04:00
Jack Humbert
cecf783e14 Merge pull request #1337 from fredizzimo/wsl_setup
Add script for setting up Windows Subsystem for Linux
2017-05-29 11:56:53 -04:00
Maarten Dekkers
91c6113cba Added SEND_STRING(); to the documentation. 2017-05-29 17:53:39 +02:00
Jack Humbert
988941cc0a Merge branch 'master' of https://github.com/qmk/qmk_firmware 2017-05-29 11:37:33 -04:00
Jack Humbert
ee0135fb81 get rid of folders in tar 2017-05-29 11:37:20 -04:00
Jack Humbert
e179dbd9e6 Merge pull request #1341 from Dbroqua/patch-3
Update Differences-from-TMK.md
2017-05-29 10:55:32 -04:00
Jack Humbert
7041055ace Merge branch 'master' of https://github.com/qmk/qmk_firmware 2017-05-29 10:54:56 -04:00
Jack Humbert
ae6b803ad6 more than one en-file, and actually ignore docs 2017-05-29 10:54:46 -04:00
binaryplease
3ea5726739 redefined options in config.h 2017-05-29 13:53:13 +02:00
Damien
51e44fd6c5 Update Differences-from-TMK.md
Removed fn_actions.

According this [comment](https://github.com/qmk/qmk_firmware/pull/1336#issuecomment-304634633)
2017-05-29 13:17:23 +02:00
Priyadi Iman Nurcahyo
f0fc2db4e2 Adafruit Feather BLE / BLE Friend mouse buttons support 2017-05-29 18:17:21 +07:00
Erez Zukerman
80707d529c Merge pull request #1338 from qmk/hf/prevent_stuck_mods
Adds prevent stuck modifiers to EZ default
2017-05-28 20:14:36 -04:00
Erez Zukerman
41fa638aa8 Adds prevent stuck modifiers to EZ default 2017-05-28 20:05:37 -04:00
binaryplease
a83662329d overwriting optins in makefile and configuration 2017-05-29 01:28:18 +02:00
binaryplease
64e4c47ae4 disabled backlight and audio 2017-05-29 01:14:25 +02:00
binaryplease
58af88eb51 copied default planck keymap to handwired_binaryplease; 2017-05-29 00:52:38 +02:00
Jack Humbert
71feac5717 ignore docs, fix tag/hex pushing 2017-05-28 16:16:56 -04:00
Fred Sundvik
78aebe0631 Update windows 10 instructions 2017-05-28 22:35:45 +03:00
Jack Humbert
de0a058da7 Merge pull request #1336 from Dbroqua/patch-2
Update Differences-from-TMK.md
2017-05-28 14:47:57 -04:00
Fred Sundvik
999b35c7f8 Create a symlink to qmk if requested 2017-05-28 21:38:14 +03:00
Fred Sundvik
ec720ac1ea Add activate_wsl to .bashrc 2017-05-28 21:30:55 +03:00
Fred Sundvik
fa4a492677 Fix symlink creation 2017-05-28 21:30:55 +03:00
Fred Sundvik
3e4f2f5590 Use unzip instead of 7zip 2017-05-28 21:30:55 +03:00
Fred Sundvik
3d3999d863 Actually install flip instead of just extracting 2017-05-28 21:30:55 +03:00
Fred Sundvik
b8899b48b4 Make symlink to utils and export programmer variables 2017-05-28 21:30:55 +03:00
Fred Sundvik
9c582fc797 Add install dependencies 2017-05-28 21:30:55 +03:00
Fred Sundvik
477bd4b948 Add prompt for re-downloading the utils 2017-05-28 21:30:55 +03:00
Fred Sundvik
c2096bb515 Add driver installation 2017-05-28 21:30:55 +03:00
Fred Sundvik
aa26464480 Add checks for cloning to the right dir 2017-05-28 21:30:55 +03:00
Fred Sundvik
28a4e90565 Download windows flashing utils and driver_installer 2017-05-28 21:30:55 +03:00
Damien
b2010cd478 Update Differences-from-TMK.md
Hello,

I'm not sure but it seems to be uint8_t for TMK/fn_actions (cf. https://github.com/tmk/tmk_keyboard/blob/master/README.md ).

Regards,
Damien
2017-05-28 19:17:22 +02:00
Jack Humbert
d0d81eecef Merge pull request #1334 from fredizzimo/fix_faq_lineending
Fix line endings in FAQ.md
2017-05-28 12:12:47 -04:00
Ante Laurijssen
a584675735 Midi Chord Function is now working! But some chords lag... 2017-05-28 08:14:17 -04:00
Fred Sundvik
623b1cd866 Fix line endings in FAQ.md 2017-05-28 12:28:02 +03:00
Jack Humbert
b8c1f25072 Updates book.json
Auto commit by GitBook Editor
2017-05-27 22:24:53 +00:00
Jack Humbert
931ad66ffa Updates book.json
Auto commit by GitBook Editor
2017-05-27 22:23:09 +00:00
Jack Humbert
2003cee609 Updates book.json
Auto commit by GitBook Editor
2017-05-27 22:21:58 +00:00
Jack Humbert
c3bdddb637 move book for gitbook 2017-05-27 18:20:46 -04:00
Jack Humbert
c95f08c439 Updates docs/book.json
Auto commit by GitBook Editor
2017-05-27 22:19:38 +00:00
Jack Humbert
7e84b0e3b3 move old doc to docs 2017-05-27 18:14:21 -04:00
Jack Humbert
704794bae3 subtree docs 2017-05-27 18:09:52 -04:00
Jack Humbert
e229dcadb5 Merge pull request #5 from Maartenwut/patch-1
Mention that TT needs 5 taps by default.
2017-05-27 11:03:34 -04:00
Jack Humbert
bb2a8c3611 Updates book.json
Auto commit by GitBook Editor
2017-05-27 14:56:13 +00:00
Maarten Dekkers
e7fccabb1c Mention that TT needs 5 taps by default.
Also gave an example of defining the amount of taps needed.
2017-05-27 12:34:16 +02:00
Jack Humbert
d24da945d1 Merge pull request #1319 from Johannes-Larsson/master
Add planck/johannes layout
2017-05-26 18:33:25 -04:00
Jack Humbert
453877422b Merge pull request #1327 from Dbroqua/master
Added Integration of IBM Trackpoint
2017-05-26 18:32:43 -04:00
Jack Humbert
9851e6f3b1 Merge pull request #1328 from yiancar/qmk_usb_startup_disable
Use variable to disable usb check at startup
2017-05-26 18:31:23 -04:00
Jack Humbert
492115a611 Merge pull request #4 from Dbroqua/master
Update Modding-your-keyboard.md
2017-05-26 18:30:41 -04:00
yiancar
fa1b92fbb1 Use variable to disable usb check at startup
Adds a define variable which when defined disables the usb startup
check. Modified the makefile to separate above define from bluetooth
dependancy
2017-05-26 21:58:43 +01:00
Damien
6d12588cdf Merge pull request #1 from Dbroqua/patch-1
Update Modding-your-keyboard.md
2017-05-26 22:16:09 +02:00
Nick Choi
66e9cf9718 clarified tap 2017-05-26 15:59:34 -04:00
dbroqua
6b994ecd82 - Added schematic for Trackpoint demonstration 2017-05-26 21:27:11 +02:00
dbroqua
81e85a1a4e - Added integration of IBM Trackpoint 2017-05-26 20:35:31 +02:00
Damien
6a0b13191b Update Modding-your-keyboard.md
Updated `USART version` chapter.

I think there were 2 `#endif` too .
2017-05-26 16:00:48 +02:00
Damien
0a4a966c66 Merge pull request #22 from qmk/master
Merge from QMK
2017-05-26 15:57:08 +02:00
Ante Laurijssen
6b1f707ce9 Still working on these MIDI CHORDS! 2017-05-26 09:54:40 -04:00
Nick Choi
1bff72c009 - 2017-05-26 00:19:12 -04:00
Nick Choi
d462409762 tenative readme for variable timing tap 2017-05-26 00:18:59 -04:00
Ante Laurijssen
b4b06f81b5 More changes to keymap.c to try and get midi chords to work 2017-05-25 23:03:33 -04:00
Nick Choi
b3144112d3 removed need to set customtapping term 0. defaults to 0 already 2017-05-25 16:38:06 -04:00
Nick Choi
7c8b166cce changed -1 to 0 can't have negative unsigned ints 🤔 2017-05-25 16:29:57 -04:00
Nick Choi
aeb3a34636 moved specific tap term to its own function
included custom_tapping_term in action struct
2017-05-25 16:26:30 -04:00
jpetermans
ac97870801 reduce recurring writes to lock leds 2017-05-25 13:00:21 -07:00
Nick Choi
e695b5a33b Added per case tapping term, updated FF-nikchi keymap. 2017-05-25 00:41:00 -04:00
Jack Humbert
b003669934 Merge pull request #3 from fieldju/patch-1
Fix typo in Macro.md in dynamic macro section.
2017-05-24 23:43:34 -04:00
Nick Choi
17a378715e Tapping Term and Memes TD for FF 2017-05-24 23:43:02 -04:00
Justin Field
a9ef02105d Fix typo in Macro.md in dynamic macro section. 2017-05-24 20:13:03 -07:00
Ante Laurijssen
1a0dfbbc96 More updates to keymap.c - still errors with midi when trying to compile 2017-05-24 21:15:41 -04:00
Johannes Larsson
6d08de5c67 readme, media keys fix 2017-05-24 21:35:31 +02:00
jpetermans
083267680d Restore deleted MEMO.txt from master 2017-05-24 12:26:56 -07:00
Johannes Larsson
e4f1b238b3 revert changes to config.h 2017-05-24 21:24:13 +02:00
jpetermans
e6c9b07e1c Merge branch 'user_led_configuration' into infinity60
Conflicts:
	keyboards/infinity60/keymaps/jpetermans/keymap.c
2017-05-24 12:07:18 -07:00
jpetermans
2dcd6c38fa Merge remote-tracking branch 'upstream/master' into infinity60 2017-05-24 11:51:20 -07:00
jpetermans
f54b4771eb keymap example update and tweak to set_led_bit function 2017-05-24 11:20:50 -07:00
Jack Humbert
7a4ec3bd92 Merge pull request #1316 from nikchi/master
FrostyFlake Keymap
2017-05-24 13:59:30 -04:00
Johannes Larsson
690957cdbd media keys and stuff 2017-05-24 19:00:56 +02:00
Nick Choi
006ba4bf36 moved unicodemap rules to localer make 2017-05-24 12:36:36 -04:00
Johannes Larsson
b9cf386b21 Merge branch 'master' of https://github.com/qmk/qmk_firmware 2017-05-24 17:58:11 +02:00
Erez Zukerman
ad420e7205 Merge pull request #1317 from qmk/hf/faster_mouse
tweaks default mouse speed constants
2017-05-24 05:09:29 -07:00
Erez Zukerman
a965e5b735 tweaks default mouse speed constants 2017-05-24 07:56:41 -04:00
Nick Choi
ef1714f443 more emoji function comments 2017-05-24 00:35:04 -04:00
Nick Choi
6536b1ce2a Tap dancing emoji support 😩😩 2017-05-23 23:52:48 -04:00
Erez Zukerman
e90a00c88c then some code blocks 2017-05-23 23:09:19 -04:00
Erez Zukerman
870aaa0a7e pipes without backtics 2017-05-23 23:06:35 -04:00
Erez Zukerman
be4ece0f3e grrr 2017-05-23 23:05:19 -04:00
Erez Zukerman
9359abf33e surrounds stuff with backticks 2017-05-23 23:03:30 -04:00
Erez Zukerman
260ddd3290 quick table tweak 2017-05-23 22:58:35 -04:00
Nick Choi
b3eeb9d84a removed s 2017-05-23 18:47:06 -04:00
Nick Choi
0e174fcb48 Merge branch 'master' of https://github.com/nikchi/qmk_firmware 2017-05-23 13:13:23 -04:00
Nick Choi
3ed2147a88 preonic map 2017-05-23 13:13:20 -04:00
Nick Choi
ec86fac6ee Merge pull request #1 from qmk/master
pull new to mine
2017-05-23 13:08:44 -04:00
Ante Laurijssen
4d783d0e69 More work on my keymap.c and added .png images of my different layers. 2017-05-22 23:30:25 -04:00
Johannes Larsson
4f1007952b merge 2017-05-22 15:27:57 +02:00
Johannes Larsson
53b094934f matrix layout 2017-05-22 15:25:53 +02:00
Ante Laurijssen
06433eb1a0 More work on keymap.c and config.h 2017-05-21 22:37:20 -04:00
Jack Humbert
f9a301761f Merge pull request #2 from Vifon/master
Update the dynamic macro docs according to the recent changes
2017-05-21 11:27:41 -04:00
Ante Laurijssen
34a1bf9e20 Merge https://github.com/qmk/qmk_firmware
Update my qmk_firmware fork
2017-05-21 08:44:52 -04:00
Ante Laurijssen
b766407cbe Continuing work on keymap.c 2017-05-21 08:40:42 -04:00
Wojciech Siewierski
8cd9d26246 Update the dynamic macro docs according to the recent changes
See qmk/qmk_firmware#1275.
2017-05-21 14:27:29 +02:00
Jack Humbert
d2ad5afaa6 Merge pull request #1 from Xyverz/master
Adding punctuation for clarity.
2017-05-20 21:44:00 -04:00
xyverz
3588bd694e Adding punctuation for clarity. 2017-05-20 18:39:59 -07:00
Jack Humbert
68b8f37853 favicon 2017-05-20 13:30:27 -04:00
Jack Humbert
33f886ad74 favicon 2017-05-20 13:26:08 -04:00
Jack Humbert
0cd8eb02c7 favicon 2017-05-20 13:20:10 -04:00
Jack Humbert
c7e9e643fa Update readme.md 2017-05-20 12:38:30 -04:00
Jack Humbert
d380ed1f75 Update readme.md 2017-05-20 12:37:31 -04:00
Jack Humbert
684a02ae3f Update SUMMARY.md 2017-05-20 12:30:24 -04:00
Jack Humbert
b3bff6404c Update SUMMARY.md 2017-05-20 12:29:45 -04:00
Jack Humbert
046c5d332f Update SUMMARY.md 2017-05-20 12:27:07 -04:00
Jack Humbert
5e28f88707 Update book.json 2017-05-20 12:07:31 -04:00
Jack Humbert
d678899c83 Update book.json 2017-05-20 12:04:03 -04:00
Jack Humbert
2df879cbe3 Update book.json 2017-05-20 12:02:55 -04:00
jerryen
9c284786e7 Workaround for the macOS caps lock delay (#1308)
* Add 80ms delay for KC_CAPS when used as a tap key

Workaround for the macOS caps lock delay

* Revert "Increase TAPPING_TERM for the Clueboard"

This reverts commit a74e69e9fa.
2017-05-19 17:24:47 -07:00
Jack Humbert
85df687348 m10a lowercase 2017-05-18 18:55:07 -04:00
Erez Zukerman
0d8c73dc8d Merge pull request #1303 from cwesterlund/dvorak_dev_swe
Created a dvorak keymap for Swedish developers using Visual Studio
2017-05-18 15:31:16 -07:00
Ante Laurijssen
c686793b59 Merge https://github.com/qmk/qmk_firmware
Update from QMK main
2017-05-17 23:06:57 -04:00
tengg
aaa01d0a4e ESC/GRAVE/TILDE better handling (#1307)
* revise HHKB bootloader_size to 4096 such that sw reset works

* cleanup esr/grave/tilde handling function
2017-05-17 18:20:01 -07:00
Jack Humbert
8da442f411 update travis script 2017-05-17 20:27:07 -04:00
Ante Laurijssen
26c6f6a85c Added Space Cadet Rollover Disable to config.h 2017-05-16 22:08:45 -04:00
skullY
a74e69e9fa Increase TAPPING_TERM for the Clueboard 2017-05-16 13:09:23 -07:00
skullY
3c5b915078 Make KC_GRV accessible 2017-05-16 13:02:22 -07:00
Christian Westerlund
fcef83a5d0 Created a dvorak keymap for Swedish developers using Visual Studio 2017-05-16 15:15:42 +02:00
Ante Laurijssen
814b570ba1 Working on keymap.c file... 2017-05-15 22:56:33 -04:00
Jack Humbert
e5ed23c0b3 summary test 2017-05-15 22:45:20 -04:00
Jack Humbert
2513912975 Updates book.json
Auto commit by GitBook Editor
2017-05-16 02:39:49 +00:00
Jack Humbert
52562eaaea Updates book.json
Auto commit by GitBook Editor
2017-05-16 02:38:44 +00:00
Jack Humbert
3a7e0dd2f6 Updates book.json
Auto commit by GitBook Editor
2017-05-16 02:36:31 +00:00
Jack Humbert
e0689c000b Updates book.json
Auto commit by GitBook Editor
2017-05-16 02:35:00 +00:00
Jack Humbert
997a847f8c update links 2017-05-15 22:29:17 -04:00
Jack Humbert
60daffbe5d Update SUMMARY.md 2017-05-15 22:00:22 -04:00
Jack Humbert
e5b0095e6c Update SUMMARY.md 2017-05-15 22:00:14 -04:00
Jack Humbert
819f0998bd Updates SUMMARY.md
Auto commit by GitBook Editor
2017-05-16 01:50:44 +00:00
Jack Humbert
7cbbf62f5f Merge pull request #1298 from barrar/master
Anti-ghost improvement for older keyboards with empty spots in matrix
2017-05-15 12:20:17 -04:00
Nick Choi
5d965a8d41 emojis and reorg 2017-05-15 02:19:50 -04:00
Nick Choi
eb660ef218 emoji support but 2017-05-15 01:52:45 -04:00
Nick Choi
b2b72058e5 change readme 2017-05-15 00:12:04 -04:00
Nick Choi
888026ae73 nikchi flake 2017-05-15 00:10:25 -04:00
Ante Laurijssen
ee0b34feaf Started working on custom midi chord function 2017-05-14 20:07:35 -04:00
Jeremiah
25c6ca750f added comments and made function name clearer 2017-05-14 15:36:44 -07:00
Ante Laurijssen
f006ebebbd Initial push of my keymap 2017-05-14 16:07:44 -04:00
Jeremiah
84395e8a04 whoops 2017-05-14 09:36:50 -07:00
Jeremiah
b9b2244b82 faster, less bits :) 2017-05-14 08:01:01 -07:00
Jeremiah
63d9698d5c faster and less bits... again 2017-05-13 19:07:05 -07:00
Jeremiah
37f6f92765 faster and less bits 2017-05-13 18:24:43 -07:00
Jeremiah
7b7e285a98 should be using matrix_row_t 2017-05-13 17:22:38 -07:00
Jeremiah
acd3e97b83 a bit smaller 2017-05-13 17:01:27 -07:00
Jeremiah
99877cdff3 a bit smaller 2017-05-13 16:57:23 -07:00
Jeremiah
b9895771ed improvements 2017-05-13 13:19:28 -07:00
Jack Humbert
95ac79cb67 Updates SUMMARY.md
Auto commit by GitBook Editor
2017-05-13 20:17:26 +00:00
Jack Humbert
694db4130e Updates SUMMARY.md
Auto commit by GitBook Editor
2017-05-13 20:17:21 +00:00
Jack Humbert
7f4cf32af9 Updates book.json
Auto commit by GitBook Editor
2017-05-13 20:10:38 +00:00
Jack Humbert
e7da52c7de Updates book.json
Auto commit by GitBook Editor
2017-05-13 20:09:06 +00:00
Jack Humbert
43d1e05b31 Updates Home.md
Auto commit by GitBook Editor
2017-05-13 20:04:39 +00:00
Jack Humbert
05a6449d2d Updates readme.md
Auto commit by GitBook Editor
2017-05-13 18:25:08 +00:00
Jeremiah
849ed5a6a0 anti-ghost improvement for older keyboards with empty spots in matrix 2017-05-13 08:51:20 -07:00
barrar
4fe58aa6ec Merge pull request #1 from qmk/master
pull
2017-05-13 08:37:25 -07:00
Jack Humbert
04069c94cc Merge pull request #1297 from khogeland/satan-colemak
Colemak layout for GH60 Satan
2017-05-12 16:24:51 -04:00
Jack Humbert
a82e752f64 Merge pull request #1291 from adzenith/persistent
Fix spelling of "persistent"
2017-05-12 16:24:29 -04:00
Kevin Hogeland
b767719fc8 Colemak layout GH60 Satan 2017-05-12 12:03:09 -07:00
Nikolaus Wittenstein
8ddbf7f59f Fix spelling of "persistent"
Fixes #1201.
2017-05-11 15:32:35 -04:00
Jack Humbert
b412bb8d8c Merge pull request #1283 from TerryMathews/master
Establish support for Bathroom Epiphanies Tiger Lily controller
2017-05-11 14:34:02 -04:00
Jack Humbert
d6ce42b01c Merge pull request #1288 from Nephiel/led-set-on-layer-change
Call led_set for layer action events to update LEDs on layer changes
2017-05-11 14:32:56 -04:00
Jack Humbert
de2c51b7ca Merge pull request #1290 from shieldsd/master
Add new features to dshields keymap.
2017-05-11 14:31:11 -04:00
Daniel Shields
eb3f80b924 Add new features to dshields keymap.
- one shot layers, dynamic macros and tap dance keys
- add a basic readme.md and layout image.
2017-05-11 09:16:55 +01:00
jpetermans
164a6c994b reorder mailbox msg data; formatting 2017-05-10 15:53:59 -07:00
Nephiel
bd2c0b9648 Call led_set for layer action events to update LEDs on layer changes 2017-05-10 19:26:39 +02:00
jpetermans
a144968807 remove breath functions from keymap 2017-05-08 16:38:44 -07:00
jpetermans
16774333ad last readme fix 2017-05-08 16:28:04 -07:00
jpetermans
5fc5661147 third readme fix attempt 2017-05-08 16:19:11 -07:00
jpetermans
d1ff2bb9db readme fix 2017-05-08 16:17:40 -07:00
jpetermans
821f72eae9 documentation cleanup 2017-05-08 16:15:20 -07:00
jpetermans
b5675e2025 Merge branch 'user_led_configuration' of https://github.com/jpetermans/qmk_firmware into user_led_configuration
Conflicts:
	keyboards/infinity60/led_controller.c
	keyboards/infinity60/led_controller.h
2017-05-08 15:42:27 -07:00
Stephen Tudor
9a8904a9c0 Add smt keymap for Clueboard (HHKB-style layout) (#1286)
* Add keymap for smt Clueboard (HHKB layout)

* Add readme for smt Clueboard (HHKB) keymap

* Flesh out the keymap a bit more to support Colemak & Dvorak

* Update README with layout image
2017-05-08 15:32:15 -07:00
jpetermans
967cf0f6d4 Merge remote-tracking branch 'upstream/master' into user_led_configuration 2017-05-08 15:24:50 -07:00
jpetermans
5df74f3ba7 updated keymap for new led functions 2017-05-08 15:13:02 -07:00
jpetermans
f1d81d2cc6 minor change on lock leds 2017-05-08 14:55:57 -07:00
jpetermans
2c5b551970 CLeaned out debug code 2017-05-08 14:35:08 -07:00
jpetermans
52f671c23e small code cleanup 2017-05-08 11:57:40 -07:00
Erez Zukerman
153eb95ab2 Merge pull request #1279 from awpr/master
Change to per-key eager debouncing for ErgoDox EZ.
2017-05-07 21:52:00 -04:00
Jack Humbert
d9b70cc1c9 Merge pull request #1275 from Vifon/dynamic_macro/trailing_keypresses
dynamic macros: Trim the trailing modifiers; further cleanup
2017-05-07 20:20:55 -04:00
Jack Humbert
b11a5be62c Merge pull request #1278 from shieldsd/master
Add new keymap for dshields.
2017-05-07 20:18:23 -04:00
Jack Humbert
0b050f6c33 Merge pull request #1280 from tobsn/patch-1
lowercase .jpg
2017-05-07 20:17:47 -04:00
Jack Humbert
05b356dea7 Merge pull request #1282 from coderkun/coderkun_neo2
Merge changes for coderkun’s Neo2 layout
2017-05-07 20:16:30 -04:00
Jack Humbert
7a7b57ffb1 Merge pull request #1284 from bigtunaIO/master
[Bigtuna.IO] Updating Miuni32 Layouts
2017-05-07 20:16:03 -04:00
TerryMathews
84a358845b Fix compile error 2017-05-07 18:00:06 -04:00
Adam Lee
22738df5f5 Merge branch 'dev' 2017-05-07 14:44:28 -07:00
Adam Lee
d099266853 [Miuni32] Rm accidentally committed file 2017-05-07 14:42:21 -07:00
Adam Lee
ba90cf422c Merge remote-tracking branch 'bigtunaio/layouts/adam-lee' into dev 2017-05-07 14:40:37 -07:00
Adam Lee
f2fcab96a8 Merge remote-tracking branch 'upstream/master' 2017-05-07 14:36:10 -07:00
Adam Lee
29df2be2a9 Merge remote-tracking branch 'upstream/master' into dev 2017-05-07 14:35:43 -07:00
TerryMathews
3381254c65 Establish support for Bathroom Epiphanies Tiger Lily controller
Replacement controller for Filco Majestouch 2 104 key keyboard. BE
advises code will also work with the Black Petal controller - I don't
have one to test with. Tests working perfectly on my Filco.
2017-05-07 17:23:19 -04:00
dbroqua
230c70e285 - Initial commit for branch DK60 2017-05-07 22:56:27 +02:00
coderkun
d28d390ad6 Update README for keymap “coderkun_neo2” 2017-05-06 12:25:24 +02:00
coderkun
49046f621b Merge tag '0.5.43' into coderkun_neo2 2017-05-06 12:19:45 +02:00
coderkun
9e7448ea89 Fix F-keys on right hand to start on first key 2017-05-06 12:17:51 +02:00
Tobias O
b2083e21a2 lowercase .jpg I think
i guess that fixes the image link - currently its broken
2017-05-05 23:55:06 +02:00
Daniel Shields
cb60fe393f Add new keymap for dshields. 2017-05-05 14:41:13 +01:00
Wojciech Siewierski
a1e156a3d2 dynamic_macro.h: Do not use backlight_toggle if backlight is disabled
Fixes #1199.
2017-05-05 00:11:24 +02:00
Wojciech Siewierski
10a7cd7e5a dynamic_macro.h: Add debug logs 2017-05-04 23:57:22 +02:00
Wojciech Siewierski
8e94c9b4cb dynamic_macro.h: Make the documentation more clear 2017-05-04 22:39:02 +02:00
Jack Humbert
2704c163da Merge pull request #1272 from Thor77/ps2avrGB-keymap-kc-prefix
[ps2avrGB] Add KEYMAP without KC-prefix
2017-05-04 15:07:57 -04:00
Jack Humbert
3af95509b5 Merge pull request #1273 from Vifon/pr_1267_fix
Add DYN_REC_STOP to the dynamic macros, cleanup PR #1267
2017-05-04 15:07:04 -04:00
tengg
425f0a768b revise HHKB bootloader_size to 4096 such that sw reset works (#1274) 2017-05-04 10:27:35 -07:00
Wojciech Siewierski
4b50ea15a9 dynamic_macro.h: Do not save the keys being held when stopping the recording
More specifically, we save them and then place the `macro_end` pointer
before them so they are essentially ignored and the other macro may
freely overwrite them.
2017-05-04 01:42:09 +02:00
Wojciech Siewierski
436d661775 dynamic_macro.h: Fix an off-by-two error
We need to check whether we just passed the after-the-end point of the
other macro. Instead we were checking whether we are going to reach it
now.
2017-05-04 01:26:35 +02:00
Wojciech Siewierski
5e2a999278 dynamic_macro.h: Always toggle the backlight twice as a notification
Apparently sometimes the backlight was toggled only once and it was left on.
2017-05-04 00:58:01 +02:00
Wojciech Siewierski
40fe30e4d6 dynamic_macro.h: Ignore all the initial key releases
Right after the user initiates the macro recording, they usually need
to release some keys used to access the DYN_REC_START layers. It makes
sense to ignore them.

Note: The keys used to access the DYN_REC_STOP key are *not* ignored.
2017-05-04 00:14:38 +02:00
Thor77
7f3b1232c4 Use KC_KEYMAP for default-keymap
and remove obsolete explicit line-separator "\"
2017-05-03 22:13:46 +02:00
Thor77
38b076d22d Add KEYMAP without KC_##-prefix
and rename old variant to KEYMAP_KC
2017-05-03 22:01:02 +02:00
Jack Humbert
c5cef025ec Merge pull request #1269 from ryanmaclean/patch-6
Cleaning Up Dockerfile Layers Per Official Docs
2017-05-01 12:15:27 -04:00
jpetermans
b27fb216ef Testing initial blink support 2017-04-30 16:27:46 -07:00
Ryan MacLean
7ce94eb468 Cleaning Up Dockerfile Layers Per Official Docs
From the official docs: 

```
Note: The official Debian and Ubuntu images automatically run apt-get clean, so explicit invocation is not required.
```

Also added ` && rm -rf /var/lib/apt/lists/*` as part of the install line which probably does what was intended (no need to make a new layer). 

Added apt-get update to the RUN payload, as it should be part of the same layer. 

Both are documented here: https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/
2017-04-30 15:04:00 -07:00
Jack Humbert
26b51383b2 Merge pull request #1266 from ryanmaclean/patch-5
Adding AMJ60 ANSI Maximized Layout
2017-04-30 16:57:14 -04:00
Jack Humbert
29026ec023 Merge pull request #1268 from priyadi/promethium
Promethium keymap update
2017-04-30 11:18:54 -04:00
Jack Humbert
2d732f484c Merge pull request #1264 from fredizzimo/wsl_support
Add possibility to override the command to execute when flashing
2017-04-30 11:17:47 -04:00
Jack Humbert
d1d2b87f97 fixes s60_x keyboard 2017-04-30 10:48:17 -04:00
Jack Humbert
43aa59c703 Merge pull request #1263 from Dbroqua/master
Fixed bugs for S60-X RGB version
2017-04-30 10:27:40 -04:00
Priyadi Iman Nurcahyo
343f8d368e Simple RGB backlight theming 2017-04-30 18:04:58 +07:00
Priyadi Iman Nurcahyo
2f28652dcc Syntax fix 2017-04-30 18:03:03 +07:00
Weiyi Lou
c8ac556e63 Update vifon keymap to use DYN_REC_STOP 2017-04-30 19:48:07 +10:00
Weiyi Lou
1201d4910f Add cinaeco hhkb keymap 2017-04-30 19:30:39 +10:00
Weiyi Lou
4ff40a551a Add DYN_REC_STOP to dynamic macros
Dynamic macro functionality is modified to check for `DYN_REC_STOP`, so
that macro recording can be stopped with a designated key combination
(e.g. `qs` or anything) instead of mandating the use of a `_DYN` layer.

`_DYN` layer stopping can still be done by passing `DYN_REC_STOP` within
`process_record_user()`:

    bool process_record_user(uint16_t keycode, keyrecord_t *record) {
      uint16_t macro_kc = (keycode == MO(_DYN) ? DYN_REC_STOP : keycode);
      if (!process_record_dynamic_macro(macro_kc, record)) {
        return false;
      }
      return true;
    }
2017-04-30 19:21:44 +10:00
Ryan MacLean
ff512ea5b4 Addind Sample Maxed Out Keymap
Keeping hold space for fn1, adding three other user-mappable keys.
2017-04-29 16:18:26 -07:00
Ryan MacLean
9122b34a47 Adding Maximized Layout
Both split shifts and HHKB split backspace.
2017-04-29 16:16:21 -07:00
Fred Sundvik
18b4d24cc3 Add possibility to override the command to execute when flashing 2017-04-29 23:45:27 +03:00
jpetermans
ff6beeb7a3 simplified lock led function 2017-04-29 09:22:40 -07:00
dbroqua
7180e195e8 Merge branch 'master' of https://github.com/Dbroqua/qmk_firmware 2017-04-29 15:04:01 +02:00
Damien
584b804ee3 Merge pull request #21 from qmk/master
Merge from QMK
2017-04-29 15:03:52 +02:00
dbroqua
838aae1645 - Fixed bugs in rules.mk for S60-X
- Updated dbroqua layout for S60-X (added backlight)
2017-04-29 15:02:54 +02:00
Priyadi Iman Nurcahyo
d8f1949029 Promethium update: demo LED, fix PS2 delay, fix LED ordering, change click frequency 2017-04-29 13:21:27 +07:00
skullydazed
cdef372f57 Document the MAGIC keys 2017-04-28 11:56:03 -07:00
htang156
425e7348d8 Modified ht_156 keymap 2017-04-27 23:12:43 -07:00
jpetermans
b3945c103c Simplified processing in led_controller; more control at user level. 2017-04-26 23:12:25 -07:00
Jack Humbert
26bbfd7812 Merge pull request #1259 from laelath/master
Added a proper README to the lae3 keymap
2017-04-26 19:22:36 -04:00
Andrew Pritchard
cd30a60d0e Change to per-key eager debouncing for ErgoDox EZ.
Empirically, waiting for N consecutive identical scans as a debouncing
strategy doesn't work very well for the ErgoDox EZ where scans are very
slow compared to most keyboards.  Instead, debounce the signals by
eagerly reporting a change as soon as one scan observes it, but then
ignoring further changes from that key for the next N scans.

This is implemented by keeping an extra matrix of uint8 countdowns, such
that only keys whose countdown is currently zero are eligible to change.
When we do observe a change, we bump that key's countdown to DEBOUNCE.
During each scan, every nonzero countdown is decremented.

With this approach to debouncing, much higher debounce constants are
tolerable, because latency does not increase with the constant, and
debounce countdowns on one key do not interfere with events on other
keys.  The only negative effect of increasing the constant is that the
minimum duration of a keypress increases.  Perhaps I'm just extremely
unlucky w.r.t. key switch quality, but I saw occasional bounces even
with DEBOUNCE=10; with 15, I've seen none so far.  That's around 47ms,
which seems like an absolutely insane amount of time for a key to be
bouncy, but at least it works.
2017-04-26 15:29:39 -07:00
laelath
196740a0bb Expanded lae3 keymap readme 2017-04-26 13:56:01 -07:00
Jack Humbert
5a809ac178 Merge pull request #1258 from smt/smt/hhkb
Add smt keymap for HHKB
2017-04-26 15:30:36 -04:00
Jack Humbert
7bd4559b4b Merge pull request #1231 from Dbroqua/master
S60-X RGB support
2017-04-25 14:09:41 -04:00
Jack Humbert
9fa7a788d3 Merge pull request #1253 from laelath/master
Added lae3 keymap
2017-04-25 14:08:52 -04:00
Jack Humbert
627dd8a73c Merge pull request #1255 from ryanmaclean/patch-4
Initial Ortholinear Commit for AMJPad
2017-04-25 14:08:16 -04:00
Jack Humbert
46826adba8 Merge pull request #1257 from MachineIndustries/keyboards/M10A
Add RAMA x Machine Industries M10A to the keyboards directory
2017-04-25 14:07:41 -04:00
Josh Black
d6386b108b Add RAMA x Machine Industries M10A to the keyboards directory 2017-04-25 19:00:44 +01:00
Stephen Tudor
4cc41de50b Add smt keymap for HHKB 2017-04-24 11:16:14 -04:00
Justin Frank
e2a5dfdba6 Switched Alt and GUI key places 2017-04-23 19:38:40 -07:00
Ryan MacLean
d27ff5ccf6 Adding Right Layout 2017-04-22 22:34:14 -07:00
Ryan MacLean
24994046d6 Update keymap.c 2017-04-22 21:26:47 -07:00
Ryan MacLean
2e62ff9807 Initial Ortho Commit (LEFT SIDE)
Using only one layer, and activating it with two keys at the moment. 
As with previous comments, this isn't final, but is a good starting point for a one-handed keyboard, half a Planck-like ortholinear keyboard, or a sample to show a layout with a function layer.
2017-04-22 20:49:34 -07:00
Justin Frank
7f3224b117 Added lae3 keymap 2017-04-22 15:15:17 -07:00
Solomon
187c78f3cb Added an additional clueboard layout. (#1252)
* Current building keymap

* Working media keys

* Added mute key. Fixed volume. Fixed media

* Updating readme

* Swapped readme order
2017-04-22 06:25:41 -07:00
skullydazed
a793e094bc Created Porting Your Keyboard to QMK (ARM and other ChibiOS CPUs) (markdown) 2017-04-21 22:24:02 -07:00
skullY
973e91078b Tweak the shift_fn keymap so it works 2017-04-21 21:46:01 -07:00
dbroqua
215dd126d0 - Moved S60-X RGB in sub project for S60-X 2017-04-19 22:12:23 +02:00
Jack Humbert
460b5f8751 Merge pull request #1246 from reversebias/master
Initial support for the Mitosis Keyboard
2017-04-19 08:43:28 -04:00
reversebias
43fd889d7e Update readme.md 2017-04-19 22:39:44 +10:00
Jack Humbert
95242fe0f1 Merge pull request #1245 from fredizzimo/fix_lcd_pin_configuration
Fix LCD SS pin configuration
2017-04-19 07:50:03 -04:00
Jack Humbert
4760b26bec Merge pull request #1244 from ryanmaclean/patch-3
Adding Maximized Keymap
2017-04-19 07:49:46 -04:00
Jack Humbert
ff4ad46dca Merge pull request #1243 from Xyverz/master
Removed LT macros
2017-04-19 07:47:56 -04:00
cam
43964438fb First Commit 2017-04-19 20:27:49 +10:00
reversebias
3c3be98a06 Delete temp 2017-04-19 20:15:44 +10:00
reversebias
e27c50669a Create temp 2017-04-19 20:12:50 +10:00
Priyadi Iman Nurcahyo
f9d226ca50 tune clicks 2017-04-19 12:35:05 +07:00
Priyadi Iman Nurcahyo
3c7db55ec5 Merge remote-tracking branch 'upstream/master' into promethium 2017-04-19 12:04:15 +07:00
Priyadi Iman Nurcahyo
ce0efa6b9a Fix LED sequence; bug fixes 2017-04-19 12:03:48 +07:00
Fred Sundvik
430a8e1750 Fix LCD SS pin configuration
There was a typo, so the attempted configuration proably didn't do
what it should have done. I think it left the pin floating, and
could cause the LCD problems issue-1230.
2017-04-19 07:59:39 +03:00
Ryan MacLean
34130d56f1 Adding Sample Max Layout 2017-04-18 21:54:58 -07:00
Ryan MacLean
0a8df2c5e3 Adding Maximized Keymap
For use with grid layout pads.
2017-04-18 21:53:10 -07:00
Xyverz
b844fe7efd LT doesn't work with tri_layer. Removed it from this keymap. 2017-04-18 20:36:26 -07:00
Xyverz
3a00aafd39 swapped RAISE with LOWER in layer-tapping macros. 2017-04-18 18:15:46 -07:00
dbroqua
fecb932945 - Fixed bug in keymap for s60-X RGB 2017-04-18 22:26:32 +02:00
Jack Humbert
be0afd24bf Merge pull request #1239 from priyadi/promethium
Keymap updates
2017-04-18 16:17:27 -04:00
Jack Humbert
d926ba22a2 Merge pull request #1238 from priyadi/fauxclicky_fix
Faux clicky bug fixes
2017-04-18 16:16:35 -04:00
Jack Humbert
7a16a30e6a Merge pull request #1236 from Xyverz/master
Revamp TV44 keymap.
2017-04-18 16:08:16 -04:00
Jack Humbert
a25d4a90c3 Merge pull request #1235 from siroken3/siroken3
Siroken3
2017-04-18 16:06:27 -04:00
Priyadi Iman Nurcahyo
5bc0c4a011 Fix Planck compatibility 2017-04-19 02:55:19 +07:00
Priyadi Iman Nurcahyo
3fa0b66289 Keymap updates and some adjustment for latest version of QMK 2017-04-19 02:52:57 +07:00
Priyadi Iman Nurcahyo
ffa4c72a89 Faux clicky bug fixes 2017-04-19 01:40:16 +07:00
Priyadi Iman Nurcahyo
93b2f23bba Promethium rev2
* 10 more indicator LEDs
* Piezo buzzer
* Uses HC138 decoder to free up 5 pins
* Trackpoint buttons are now part of matrix
2017-04-19 01:38:08 +07:00
Xyverz
41d45afd2a Fixed a weird diff mishap. 2017-04-17 21:54:02 -07:00
Xyverz
e11cb44926 Merge branch 'tv44_revamp' 2017-04-17 20:20:27 -07:00
Xyverz
a3aadd888f Updated my TV44 keymap to be more planck-like.
Used the current default planck keymap as a guide.
2017-04-17 20:15:57 -07:00
Jack Humbert
ae8ac581c0 Merge pull request #1234 from whitef0x0/patch-1
Fixed dvorak layout for Atreus50
2017-04-17 19:02:24 -04:00
David Baldwynn
acd63bc03c Fixed dvorak layout for Atreus50 2017-04-17 12:05:47 -07:00
Jack Humbert
f637ab69c2 Merge pull request #1228 from fitzsim/fix-keymap-yoruian-macro
Fix KEYMAP_YORUIAN macro
2017-04-17 13:21:03 -04:00
Xyverz
a343188dcf macros to make keymap reading easier. 2017-04-16 21:52:49 -07:00
Xyverz
a22286e834 Added keymap to TV44 Revamp 2017-04-16 21:09:23 -07:00
htang156
4634e3802c Added simple macros to test. 2017-04-16 17:39:04 -07:00
htang156
c4f93e237e Added media layer for ht_156 2017-04-16 16:08:31 -07:00
htang156
f9aa75fe95 Added ht_156 keymap files 2017-04-16 15:31:05 -07:00
Adam YH Lee
9d4050586d Merge branch 'master' into layouts/adam-lee 2017-04-16 15:20:31 -07:00
Adam YH Lee
857600aa4b Merge branch 'master' into dev 2017-04-16 15:19:20 -07:00
Adam YH Lee
7e930626eb Add a personal layout for adam
Collectively we should keep on working on the "default" layout.
I am adding my own layout to freely explore adjustments
and new features.
2017-04-16 15:06:08 -07:00
Adam YH Lee
22afddb8e8 Replace RALT with RSFT 2017-04-16 14:50:25 -07:00
htang156
3bfe4cdb4f Added END and other keymap file formatting. 2017-04-16 14:19:51 -07:00
htang156
1bab72383c Added DEL and F1 to F12 keys 2017-04-16 14:10:29 -07:00
htang156
ccabf70aeb Added keymap commets to default layout. 2017-04-16 13:40:03 -07:00
jpetermans
046f1baf30 more stable lock led process, added debugging code 2017-04-15 14:37:55 -07:00
skullydazed
6c30fd04d3 Updated Keycodes (markdown) 2017-04-15 13:17:41 -07:00
dbroqua
b133b74897 - Added S-60-X RGB directory (based on qmk.sized.io work) 2017-04-15 16:34:33 +02:00
jpetermans
c0ec1756af Added backlight step functionality 2017-04-14 18:20:12 -07:00
Adam YH Lee
a9f4596062 Add TAB, N, LSFT on Layer 2 2017-04-14 00:02:25 -07:00
Adam YH Lee
f076f16e13 Add KC_T on Layer 2 2017-04-13 23:50:57 -07:00
Adam YH Lee
4810a4a812 Add LCTL + L on Layer 2 2017-04-13 23:47:50 -07:00
Thomas Fitzsimmons
bc7b1843ba Fix KEYMAP_YORUIAN macro
Fix the ordering of the arguments to the KEYMAP macro.
2017-04-14 02:06:58 -04:00
jpetermans
ec1e936dfb fixed bit shift in led_set_bit 2017-04-13 17:51:37 -07:00
jpetermans
1b1adf35bb more flexible led processing functions, all and on/off/toggle
functioning
2017-04-13 17:15:24 -07:00
Jack Humbert
b5e8327755 Merge pull request #1226 from fredizzimo/fix_ergodox_righthand_warning
Add missing serial_link.h include
2017-04-13 16:15:13 -04:00
Fred Sundvik
94b14bdd6a Add missing serial_link.h include
Which fixes a warning when building Ergodox Infinity as a righthand
master.
2017-04-13 23:00:27 +03:00
Jack Humbert
0b31a63dd4 Merge pull request #1225 from fredizzimo/fix_lcd_led_status_buffer_overrun
Fix buffer overrun in lcd_keyframes
2017-04-13 15:26:38 -04:00
Fred Sundvik
5c251b5575 Fix buffer overrun in lcd_keyframes
This would often cause the keyboard to crash when restarting the
computer.
2017-04-13 21:40:06 +03:00
Jack Humbert
41a46c7c8e Merge pull request #1224 from fredizzimo/fix_warnings
Fix all warnings and turn on warnings as errors
2017-04-13 14:07:48 -04:00
Adam YH Lee
f90321bdcb Update keymap - hopefully more usable 2017-04-13 09:25:05 -07:00
Fred Sundvik
d68294615f Add make option for allowing warnings 2017-04-13 16:12:55 +03:00
Fred Sundvik
d8e2ff2964 Fix process_unicode_common.c being included twice 2017-04-13 16:03:01 +03:00
Fred Sundvik
07fc34e962 Fix warnings when ACTION_ONESHOT is disabled 2017-04-13 16:00:29 +03:00
Fred Sundvik
abda6ff7bb Include host.h from suspend.c 2017-04-13 16:00:29 +03:00
Fred Sundvik
08b9eb26c5 Fix warnings in CMD-Preonic
The startup_sound is defined using MUSICAL_NOTEs, since non-constant
initializer expressions are not allowed in C.
2017-04-13 16:00:29 +03:00
Fred Sundvik
109ae2f1e8 Fix warnings in process_printer 2017-04-13 16:00:29 +03:00
Fred Sundvik
a619b93e38 Fix warnings in planck/lucas keymap
Register the unshifted version DE_LESS, rather than the shifted DE_MORE
2017-04-13 16:00:29 +03:00
Fred Sundvik
df30d18458 Fix warnings in kitten_paw/ickerwx keymap 2017-04-13 16:00:29 +03:00
Fred Sundvik
737c1fe641 Make MOUSEKEY_MOVE_MAX and MOUSEKEY_WHEEL_MAX configurable
Kitten_paw/ickerwx was doing that
2017-04-13 16:00:29 +03:00
Fred Sundvik
bbe8876c8d Rename MS-sculpt-mobile to MS_scuplpt_mobile
Subprojects with "-" have problems, since the build system creates
a define containing the subproject name, and "-" is illegal in
macro names.
2017-04-13 16:00:29 +03:00
Fred Sundvik
738b8d2b9c Add SKIP_VERSION option to speed up compilation 2017-04-13 16:00:29 +03:00
Fred Sundvik
e950d4e12f Fix frosty_flake warning when print is disabled 2017-04-13 16:00:29 +03:00
Fred Sundvik
2d1528c69f Fix keymap yoruian on Infinity 2017-04-13 16:00:29 +03:00
Fred Sundvik
f7b59427fa Fix name collision between ChibiOS and keymap_german 2017-04-13 16:00:29 +03:00
Fred Sundvik
12159e782c Fix overflow warning in ordinary keymap 2017-04-13 16:00:29 +03:00
Fred Sundvik
db6d7207b5 Fix overflow warnings in dvorak_programmer 2017-04-13 16:00:29 +03:00
Fred Sundvik
6535804776 Disable array bounds warning in keymap_function_id_to_action 2017-04-13 16:00:29 +03:00
Fred Sundvik
a4ef86034c Fix undefined eeprom warnings in unicode processing 2017-04-13 16:00:29 +03:00
Fred Sundvik
f39e9928eb Enable warnings as errors 2017-04-13 16:00:29 +03:00
Fred Sundvik
224fc8a20f Add makefile option to break on errors 2017-04-13 16:00:29 +03:00
Damien
a43cb6c0af Merge pull request #20 from qmk/master
Merge from QMK
2017-04-13 13:26:02 +02:00
jpetermans
15635817b5 Updated lock led init 2017-04-12 23:32:38 -07:00
Adam YH Lee
dddbcc2af3 Replace double quote with comma 2017-04-12 22:11:08 -07:00
Adam YH Lee
592ff53e41 Enable RGB Animation 2017-04-12 21:19:00 -07:00
Adam YH Lee
73625a603a Merge branch 'master' into miuni32-OA 2017-04-12 20:58:36 -07:00
Johannes Larsson
835adb7848 colemak layout maybe 2017-04-12 23:11:51 +02:00
Jack Humbert
d3301c0f8b Merge pull request #1220 from joedevivo/master
mimic atreus firmware defaults
2017-04-12 15:42:46 -04:00
Jack Humbert
456570efa4 Merge pull request #1212 from Xyverz/master
atreus keymap overhaul
2017-04-12 12:46:08 -04:00
Jack Humbert
30ad505dd0 Merge pull request #1213 from nstickney/master
ErgoDox Familiar layout
2017-04-12 12:45:45 -04:00
Jack Humbert
0de2597f7c Merge pull request #1216 from Khord/master
Added breathing macros/mappings and removed mappings to unused layouts
2017-04-12 12:45:03 -04:00
Jack Humbert
b7f1ea967a Merge pull request #1222 from kamisamamizu/patch-1
Fixed position of BSLS and BSPC on the xd60
2017-04-12 12:44:11 -04:00
Jack Humbert
e5f610b70e Merge pull request #1217 from fredizzimo/ergodox_default_visualizer
Enable Ergodox Infinity LCD visualization
2017-04-12 12:43:46 -04:00
kamisamamizu
446b34edec Fixed position of BSLS and BSPC
They were in the incorrect positions before.
2017-04-12 12:18:38 +02:00
Adam YH Lee
91b11bb4dd Update default layout
This is a 2U Spacebar layout. Spacebar is between V and B.

Issue:

	- RGB MOD does not seem to do anything
2017-04-12 01:12:16 -07:00
Fred Sundvik
1d5567a3a9 Fix code formatting in build_keyboard.mk 2017-04-12 09:52:40 +03:00
jpetermans
0881f2dbfa fixed write_led_page col shift, added option for lock led display 2017-04-11 23:33:48 -07:00
skullydazed
f9c62aa363 Link to ChibiOS 2017-04-11 06:56:12 -07:00
skullydazed
1b0f5e4803 Updated Compatible Microcontrollers (markdown) 2017-04-11 06:55:39 -07:00
skullydazed
c876bb8748 Adding notes about ARM processors 2017-04-11 06:55:24 -07:00
jpetermans
d8e9c183be led init code missing pwm writes for Frame 1 2017-04-10 22:23:45 -07:00
jpetermans
dda858c437 revised led controller code to allow for more options
unable to switch picture displays
2017-04-10 17:36:47 -07:00
Joe DeVivo
dc96fa24e4 mimic atreus firmware defaults 2017-04-10 17:19:27 -07:00
Fred Sundvik
65b7bf6878 Extract Ergodox default visualizer into simple_visualizer
It's good enough if you only want to change the lcd text and color.
2017-04-09 18:34:59 +03:00
Fred Sundvik
c5d2b7ff16 Rename led test to led_keyframes and move animation to Ergodox 2017-04-09 18:34:59 +03:00
Fred Sundvik
306353bf06 Create a file for shared Ergodox Infinity animations 2017-04-09 18:34:59 +03:00
Fred Sundvik
c6ca996f4e Combine startup and resume animations 2017-04-09 18:34:59 +03:00
Fred Sundvik
ed1710589f Fix suspend not disabling backlight 2017-04-09 18:34:59 +03:00
Fred Sundvik
3074269c4a Move the logo drawing keyframe to lcd_keyframes 2017-04-09 18:34:59 +03:00
Fred Sundvik
df67169d42 Move LCD logo to visualizer resources 2017-04-09 18:34:59 +03:00
Fred Sundvik
3eb8785e87 Add automatic flush for the LCD screen 2017-04-09 18:34:59 +03:00
Fred Sundvik
995002fa91 LCD initialization sequence according to the docs
The LCD initialization show now be much better and faster with no
flickering at the startup.

Also fix the contrast control.
2017-04-09 18:34:59 +03:00
Fred Sundvik
3994fb1e79 Yet another try to fix the LCD corruption
It turns out that the ChibiOS K20 SPI driver doesn't handle the
chip select, so it needs to be done manually. Acquiring the bus is
not enough since the pin was in the wrong mode. This is now fixed.

Also increase the frequency of the SPI from around 200kHz to nearly
20 Mhz.
2017-04-09 18:34:59 +03:00
Fred Sundvik
b7041d06ae Move common visualizer keyframes into visualizer_keyframes.h 2017-04-09 18:34:59 +03:00
Fred Sundvik
64d63ab422 Remove the need to manually enable the visualizer 2017-04-09 18:34:59 +03:00
Fred Sundvik
1e7585e767 Separated backlight and LCD disable/enable
Also moved them to correct places
2017-04-09 18:34:59 +03:00
Fred Sundvik
5ba228b684 Move LCD backlight keyframes to its own file 2017-04-09 18:34:59 +03:00
Fred Sundvik
5815c5d317 Move LCD keyframes to its own file 2017-04-09 18:34:59 +03:00
Fred Sundvik
05530b193f Delete visualizer example integration
It's much better to refer to the actual code than to to try to
keep some examples up to date.
2017-04-09 18:34:59 +03:00
Fred Sundvik
05bc4880dd Tweaks to the Ergodox default visualizer
No animation, display led statuses and layer name on the same screen
Don't display layer bitmap
Fully saturated colors for caps, less saturated ones normally
2017-04-09 18:34:59 +03:00
Fred Sundvik
fa6da78ff3 Simple layer display on Infinity Ergodox default layout 2017-04-09 18:34:59 +03:00
Fred Sundvik
65e8127c91 Add visualizer for Ergodox default 2017-04-09 18:34:59 +03:00
Fred Sundvik
5fbaf31dc2 Brightness for Ergodox Infinity emulated LEDs 2017-04-09 18:34:59 +03:00
Fred Sundvik
39385144e7 Emulate Ergodox EZ leds by LCD colors 2017-04-09 18:34:59 +03:00
Fred Sundvik
9a4ce28683 Display layer bitmap and keyboard led states on the LCD 2017-04-09 18:34:59 +03:00
Fred Sundvik
951b6f33a0 CIE 1931 for the LCD backlight 2017-04-09 18:34:59 +03:00
Fred Sundvik
f113f95440 Move CIE1931 and breathing tables to its own file 2017-04-09 18:34:59 +03:00
Fred Sundvik
bc97413bf7 Disable LEDs on Infinity Ergodox 2017-04-09 18:34:59 +03:00
Fred Sundvik
e6f7a8a47a Display QMK logo at startup of Infinity Ergodox 2017-04-09 18:34:59 +03:00
Fred Sundvik
a8f5897b97 Add support for blitting to the Infinity LCD 2017-04-09 18:34:59 +03:00
Fred Sundvik
2b24d35846 Hopefully finally fix the corrupt LCD
The SPI bus is now selected and deselected before each set of commands.
Also speed up things by buffering many commands into a single batch.
2017-04-09 18:34:59 +03:00
Fred Sundvik
503565d174 Only re-send matrix every 5ms
The previous 1ms value was too often, and wouldn't always leave
time for the visualizer
2017-04-09 18:34:59 +03:00
Fred Sundvik
6039a4f6ed Empty implementation of has_onshot_mods_timed_out
When the timeout is zero or not defined, the function now returns false.
Fixes a linker error when the visualizer is enabled
2017-04-09 18:34:59 +03:00
Fred Sundvik
f5c8941652 UGFX is compiled once per keyboard instead of keymap 2017-04-09 18:34:59 +03:00
Fred Sundvik
bb86be1f1f Remove unneeded makefile include 2017-04-09 18:34:59 +03:00
Fred Sundvik
aee9b10e92 Add a keyboard specific visualizer 2017-04-09 18:34:59 +03:00
Dylan Khor
a875299d9a Added breathing macros and removed mappings to unused layouts 2017-04-09 02:02:40 -04:00
Xyverz
a11053bda8 Cleaned up the keymap:
Added MOD_TAP aliases for keymap.c readability.
Updated README to document said changes.
Added additional Dvorak layer to make using the CMD key easier on Macs.
2017-04-08 22:53:46 -07:00
TerryMathews
3899bec4b6 Merge pull request #1 from qmk/master
Catchup
2017-04-08 00:30:54 -04:00
Xyverz
9237b95ebe More missed keycodes; added PSCR, SLCK, and PAUS to ADJUST layer. 2017-04-07 19:42:05 -07:00
Xyverz
6b0842760b Corrected a missed typo in the readme. 2017-04-07 19:23:27 -07:00
jpetermans
a2ac883779 add ability to toggle individual led by address 2017-04-07 15:58:17 -07:00
Stick
bcf70c0203 ErgoDox Familiar layout v1 2017-04-07 16:04:43 -05:00
Xyverz
3607522c12 More tweaks to keymap and readme. 2017-04-06 22:26:13 -07:00
Xyverz
303bc6999e Merge remote-tracking branch 'upstream/master' 2017-04-06 22:07:34 -07:00
Xyverz
8813365ec5 Added readme 2017-04-06 22:03:17 -07:00
Xyverz
3a5f9faca9 Reworked Atreus keymap, added README 2017-04-06 22:02:38 -07:00
jpetermans
af13e9a12d Moved led page arrays to keymap.c and added keymap header to define
individual led addresses
2017-04-06 16:27:51 -07:00
jpetermans
d89114400c Small keymap tweak and clean up. 2017-04-06 15:22:13 -07:00
jpetermans
56be300757 Add Kinetis_i2c settings consistent with whitefox mcuconf 2017-04-06 14:23:14 -07:00
jpetermans
91f2e9fb5e match hal settings to whitefox, fix make rules 2017-04-06 13:53:18 -07:00
jpetermans
02ef122cbb Add led_controller.h to user keymap.c 2017-04-06 13:51:33 -07:00
jpetermans
f66361d678 add led init function to header for use in keymap.c 2017-04-06 13:48:31 -07:00
jpetermans
da4c2d2e3e Adjust led_controller.c matrix sttings and init function 2017-04-06 13:46:54 -07:00
jpetermans
b73c935d36 Added tmk whitefox led files 2017-04-06 13:45:15 -07:00
jpetermans
dfb0a512a0 Added personal configs and keymap to infinity60/keymaps 2017-04-06 13:43:22 -07:00
Stick
7e38541124 Merge remote-tracking branch 'upstream/master' 2017-04-06 13:52:53 -05:00
skullydazed
1054d5554a Updated Custom Quantum Functions (markdown) 2017-04-04 23:14:40 -07:00
skullydazed
e77a5e1751 Updated Custom Quantum Functions (markdown) 2017-04-04 23:14:27 -07:00
Gabe Y
154305ce1b Fix formatting in BUILD_GUIDE.md (#1208) 2017-04-04 22:39:28 -07:00
skullydazed
1ca879687c Updated Custom Quantum Functions (markdown) 2017-04-04 22:35:21 -07:00
skullydazed
32e55f9182 Updated Custom Quantum Functions (markdown) 2017-04-04 22:33:36 -07:00
skullydazed
34836a16ed Updated Custom Quantum Functions (markdown) 2017-04-04 22:33:12 -07:00
skullydazed
b65282f69f Updated Custom Quantum Functions (markdown) 2017-04-04 22:23:01 -07:00
skullydazed
36757de1a7 Updated Custom Quantum Functions (markdown) 2017-04-04 22:16:16 -07:00
skullydazed
891d17f028 Updated Custom Quantum Functions (markdown) 2017-04-04 22:15:41 -07:00
skullydazed
4f48dd7c83 Created Custom Quantum Functions (markdown) 2017-04-04 22:15:17 -07:00
Jack Humbert
0e7a2a77de Updated Becoming a QMK Collaborator (markdown) 2017-04-04 21:42:08 -04:00
Jack Humbert
b096b57b0b Created Becoming a QMK Collaborator (markdown) 2017-04-04 21:21:27 -04:00
Jack Humbert
54f69d02d5 Updated _Sidebar (markdown) 2017-04-04 20:00:34 -04:00
Jack Humbert
78cf15384e Created Adding features to QMK (markdown) 2017-04-04 20:00:06 -04:00
Jack Humbert
8b218857ed Revert 923d32a0eff175fac8d67574456ad9e1bd2941eb...f39bad2a7dd5d57e4a80dd15dec21826ef7a2a67 on Key Functions 2017-04-04 19:42:58 -04:00
Jack Humbert
20d69e2ad4 clean-up keycode stuff 2017-04-04 19:42:10 -04:00
Jack Humbert
46179fbb7b split off tmk differences into own page 2017-04-04 19:32:33 -04:00
Jack Humbert
c0a8953405 Created Differences from TMK (markdown) 2017-04-04 19:30:13 -04:00
Jack Humbert
a07b83fe8e Updated Home (markdown) 2017-04-04 19:25:24 -04:00
Dylan Khor
816ef19f41 Fixed my wording 2017-04-04 15:28:57 -04:00
Dylan Khor
2e78c19054 Added note about homebrew related installation times 2017-04-04 15:26:31 -04:00
Jack Humbert
ffffd1b6c1 Merge pull request #1207 from bigtunaIO/master
Add Bigtuna.io Miuni32
2017-04-04 13:41:50 -04:00
Adam Lee
8e7be3adda Set Bootloader Size to 4K
Use Atmel's default bootloader size, rather than Teensy 2.0's [1].

[1] https://github.com/qmk/qmk_firmware/pull/1207#discussion_r109712786
2017-04-04 10:21:32 -07:00
Adam YH Lee
236826e7c1 Merge branch 'miuni32-OA' 2017-04-03 20:36:13 -07:00
Adam YH Lee
e18768aa77 Add B1gtuna Miuni32
Miuni32 is a 30% ortholinear board.
Please visit www.bigtuna.io for more information.
2017-04-03 20:34:10 -07:00
Jack Humbert
d75a44a02b Merge pull request #1206 from Dan-Saunders/patch-2
Create twolayer.c
2017-04-03 21:13:29 -04:00
Jack Humbert
53951ee086 Merge pull request #1203 from ishtob/master
Updated ssd1306.c fix issues for people not using OLED
2017-04-03 21:12:53 -04:00
Jack Humbert
27aa185222 Merge branch 'master' into master 2017-04-03 21:06:40 -04:00
Stick
bee9183e7f Merge remote-tracking branch 'upstream/master' 2017-04-03 16:59:27 -05:00
Dan Saunders
1454d466e7 Create twolayer.c
fixed issue where Default.c "function key" does not work (actually it's changing my LED steps). Changed layout to be more user friendly for people that use the standard spacebar milled top plate.
2017-04-03 15:14:45 -06:00
Jack Humbert
3ac9259742 Merge pull request #1204 from nooges/lets-split-fixes
Let's split fixes
2017-04-03 16:17:55 -04:00
Danny Nguyen
fbd9d04559 Include use of either TRS or TRRS 2017-04-03 16:16:46 -04:00
Erez Zukerman
13c882a1fb disables space cadet rollover 2017-04-03 15:11:42 -04:00
Danny Nguyen
ed9c18e866 Remove flip-half from keymap 2017-04-03 14:00:33 -04:00
Danny Nguyen
133ed52466 Update Let’s Split readme 2017-04-03 13:24:20 -04:00
Danny Nguyen
e3aeab356a Move SSD1306 function declarations to header file 2017-04-03 13:24:20 -04:00
Danny Nguyen
d90ac76295 Move defines for RGB to after the config.h include 2017-04-03 13:24:20 -04:00
Danny Nguyen
563961328b Rename COMPACT_KEYMAP to KC_KEYMAP and move to lets_split.h 2017-04-03 13:24:20 -04:00
Danny Nguyen
d0cfaba6d2 Revise KEYMAP macro to make left and right halves more clear 2017-04-03 13:24:11 -04:00
ishtob
4e51c1e3ca Update ssd1306.c 2017-04-03 13:17:41 -04:00
Jack Humbert
de52bd5d89 quick fix for space cadet shift 2017-04-03 12:42:58 -04:00
Danny Nguyen
48f4c5997b Move defines for RGB to after the config.h include 2017-04-03 12:06:28 -04:00
Danny Nguyen
344ebbac43 Revert removal of avrdude make option 2017-04-03 11:32:54 -04:00
Jack Humbert
da53f3a529 Merge pull request #1194 from tong92/master
Adds tong92's keymap to tv44
2017-04-02 22:30:11 -04:00
Jack Humbert
8b3fa01667 Merge pull request #1195 from fudanchii/kbod
Handwired 60% keyboard with 8x8 matrix
2017-04-02 22:29:54 -04:00
Jack Humbert
ef4a7a0aa0 Merge pull request #1196 from Dbroqua/master
GH60 - MX HHKB with 7U spacebar
2017-04-02 22:29:24 -04:00
Jack Humbert
1d8e3da233 Merge pull request #1197 from Xyverz/master
Revisions to Xyverz's keymaps
2017-04-02 22:29:07 -04:00
Jack Humbert
e2e8b7b799 Merge pull request #1198 from iamschaefer/patch-1
Update readme.md
2017-04-02 22:28:34 -04:00
Alexander Schaefer
570b4605b2 Update readme.md
There's no readme specifically for the Ergodox EZ now, so link to the Ergodox readme.
2017-04-02 18:44:15 -06:00
Xyverz
c034b61b1a Merge remote-tracking branch 'upstream/master' 2017-04-02 14:49:39 -07:00
Xyverz
7873046479 removed my handwired boards to a new branch. 2017-04-02 14:48:33 -07:00
Damien
3e41cde9f9 Merge pull request #19 from qmk/master
Merge from qmk
2017-04-02 23:29:12 +02:00
dbroqua
e7347ff0de Merge remote-tracking branch 'origin/master' 2017-04-02 23:27:57 +02:00
dbroqua
9e72b7e7e9 - Added MX HHKB like for gh60 with 7u space bar 2017-04-02 23:25:26 +02:00
Priyadi Iman Nurcahyo
0f7a51cef5 Add information about trackpoint 2017-04-02 22:13:05 +07:00
Nurahmadie
649d08742a Use tap-toggle to move between layers.
- Add PDOT key
2017-04-02 18:27:28 +07:00
Nurahmadie
15ddaa7f19 Fix layer stuck, and add numpad support 2017-04-02 18:27:28 +07:00
Nurahmadie
f5d78c739d Forgot semicolon, and add reference link 2017-04-02 18:27:28 +07:00
Nurahmadie
10105f645a Add README 2017-04-02 18:27:28 +07:00
Nurahmadie
c9dd11d5ab Enable alt-F4 without [Fn]
- Add led indicator when keymap not on base layer \o/
2017-04-02 18:27:28 +07:00
Nurahmadie
af7430b896 Add capslock led, and audio buttons
- Also change layer switch to momentary
2017-04-02 18:27:28 +07:00
Nurahmadie
7614c6b7a7 Remove lead keys, fix some typos, rearrange layers 2017-04-02 18:27:28 +07:00
Nurahmadie
8b206e1e75 Add initial keymap
*crossfingers*
2017-04-02 18:27:28 +07:00
Nurahmadie
f8ed4ed573 Initial work for my kbod support in qmk_firmware
- Wiring layout done

No actual keymap yet
2017-04-02 18:27:27 +07:00
=
e508b5e04e Adds tong92's keymap to tv44 2017-04-02 18:27:24 +09:00
coderkun
049f906b5e Fix keymap “coderkun_neo” to use LALT instead of RALT 2017-04-01 12:17:41 +02:00
coderkun
021edb6ec6 Add several Unicode symbols to keymap “coderkun_neo2” 2017-04-01 12:06:27 +02:00
coderkun
c74f47555c Add keymap diagrams to readme of keymap “coderkun_neo2” 2017-04-01 11:15:20 +02:00
coderkun
605c4129cc Merge branch 'master' into coderkun_neo2 2017-04-01 10:56:29 +02:00
Jack Humbert
3448d5d487 Merge pull request #1132 from akatrevorjay/pr/dfu-serial
Allow to specify serial to dfu-util flash
2017-03-31 18:28:26 -04:00
Jack Humbert
ec35fea264 Merge pull request #1190 from osamuaoki/master
Fix typo
2017-03-31 18:28:14 -04:00
Jack Humbert
2b4efaba53 Merge pull request #1189 from Zay950/to_push
Unicode input_mode presistance
2017-03-31 18:27:44 -04:00
Osamu Aoki
caab4d7e45 Fix typo 2017-04-01 01:39:00 +09:00
nielsenz
d1e66e2e07 Worked around some new Makefile issues. 2017-03-30 20:10:34 -07:00
nielsenz
7e54332890 Pulling and pushing troubles 2017-03-30 19:15:43 -07:00
Callum Oakley
b9225a28f2 changed hotkey cluster to accomodate awkward software... again 2017-03-30 19:08:15 -07:00
Callum Oakley
200ae0c519 changed hotkey cluster to accomodate awkward software 2017-03-30 19:08:15 -07:00
Travis La Marr
eedb767279 Add RN42 Bluetooth module support
Added support for sending HID keycodes over the RN42/reflashed HC05 module. Tested on OS X and iOS.
2017-03-30 19:08:15 -07:00
Osamu Aoki
ccbdf90f02 Update to match QMK keymap 2017-03-30 19:08:15 -07:00
Osamu Aoki
3a1ee48cda Typo fix 2017-03-30 19:08:15 -07:00
Osamu Aoki
d029e23260 Updated Home (markdown) 2017-03-31 00:39:20 +09:00
Osamu Aoki
f39bad2a7d Updated Key Functions (markdown) 2017-03-31 00:35:50 +09:00
Osamu Aoki
46977da417 Updated Home (markdown) 2017-03-31 00:31:28 +09:00
Osamu Aoki
1a675efc4f Updated Keycodes (markdown) 2017-03-31 00:25:12 +09:00
Osamu Aoki
3627a50e63 Updated Home (markdown) 2017-03-31 00:04:21 +09:00
Osamu Aoki
97d6184ed0 Updated Keymap (markdown) 2017-03-30 23:57:59 +09:00
Osamu Aoki
5fb058eb34 Updated Home (markdown) 2017-03-30 23:49:07 +09:00
Jack Humbert
b441468795 Merge pull request #1188 from hot-leaf-juice/master
changed hotkey cluster to accomodate awkward software... again
2017-03-30 10:24:37 -04:00
Callum Oakley
3f3f208113 changed hotkey cluster to accomodate awkward software... again 2017-03-30 14:20:18 +01:00
Osamu Aoki
32c511c918 Rename back to right name 2017-03-30 21:51:37 +09:00
Jack Humbert
8994fca4ee Merge pull request #1187 from hot-leaf-juice/master
changed hotkey cluster to acommodate awkward software
2017-03-30 08:46:55 -04:00
Jack Humbert
d359b55520 Merge pull request #1185 from exiva/rn42_bluetooth
Add RN42 Bluetooth module support
2017-03-30 08:46:38 -04:00
Jack Humbert
338edcabd7 Merge pull request #1184 from osamuaoki/master
Update keymap.md to QMK
2017-03-30 08:45:56 -04:00
Callum Oakley
d145a1192f changed hotkey cluster to accomodate awkward software 2017-03-30 13:22:16 +01:00
Erez Zukerman
923d32a0ef Updated Key Functions (markdown) 2017-03-30 09:14:22 +03:00
Xyverz
571f39da66 Tidied up keymaps, Makefiles that actually work, Clueboard make v1.0 2017-03-29 22:32:39 -07:00
Travis La Marr
71da013995 Add RN42 Bluetooth module support
Added support for sending HID keycodes over the RN42/reflashed HC05 module. Tested on OS X and iOS.
2017-03-29 23:03:04 -04:00
Zay950
2366ebfbbd Merge branch 'master' into to_push 2017-03-29 12:00:38 -07:00
Osamu Aoki
c782b269b6 Update to match QMK keymap 2017-03-30 01:03:49 +09:00
Osamu Aoki
4d2be0281c Typo fix 2017-03-30 00:19:44 +09:00
Osamu Aoki
258e2afbbf Typo fixes 2017-03-29 23:41:27 +09:00
Osamu Aoki
c3f7df992d Reminding TMK/QMK difference here should be good idea. 2017-03-29 23:38:06 +09:00
Jack Humbert
942f2ccee4 Merge pull request #1183 from Rovanion/real-master
Added instructions for how to build and flash the firmware with teensy_cli
2017-03-29 09:45:22 -04:00
Rovanion Luckey
d6e51d2008 Added link to the teensy linux page. 2017-03-29 09:34:20 +02:00
skullydazed
23839b8c6d Clarify the quantum license (#1042)
* Clarify the license for files we have signoff on

* Update against the currently signed off files

* Remove unused and not clearly licensed headers

* Replace an #endif I accidentally removed while resolving merge conflicts
2017-03-28 15:20:36 -07:00
Jack Humbert
b83ae5ae5c Merge pull request #1182 from henxing/default_atreus_layout
Default atreus layout
2017-03-28 14:12:41 -04:00
Jack Humbert
49f547dd8e Merge pull request #1139 from Swoy/master
Satan Board "Admiral Strokers" keymap and config
2017-03-28 14:12:21 -04:00
Ole Anders
6de7e5d8dc typo removed {3 ... 2017-03-28 18:45:26 +02:00
Ole Anders
85cac39529 fixed capitalization issue (checkTime => checktime) 2017-03-28 18:41:04 +02:00
Hugh Enxing
3fdc45b4e9 Merge branch 'master' into default_atreus_layout 2017-03-28 12:11:49 -04:00
Ole Anders
411cd4fae2 moved checktime out of function 2017-03-28 17:30:15 +02:00
Ole Anders
f504082f7f declaring checktime before the function it is used in. 2017-03-28 17:17:08 +02:00
Ole Anders
256abc64d5 fixed function to not accept any arguments.
As per Pramod's comment on stack overflow:

In C int foo() and int foo(void) are different functions. int foo()
accepts an arbitrary number of arguments, while int foo(void) accepts 0
arguments. In C++ they mean the same thing. I suggest that you use void
consistently when you mean no arguments.
2017-03-28 17:08:01 +02:00
Ole Anders
1b821eca66 removed varable trace option from makefile 2017-03-28 16:55:25 +02:00
Ole Anders
37b7539af3 slight cleanup as per recommendation 2017-03-28 16:52:56 +02:00
Ole Anders
c72ca58528 Moved key_timer out of function. 2017-03-28 16:50:44 +02:00
Ole Anders
48dfc77718 removed a carriage return 2017-03-28 15:58:46 +02:00
Ole Anders
62faa20ef6 Merge remote-tracking branch 'refs/remotes/qmk/master' 2017-03-28 15:55:33 +02:00
Ole Anders
d5ee0194ab fixed #1139 issues
A fix described by jackhumbert has been sorted out now.
2017-03-28 15:43:04 +02:00
Jack Humbert
5e4daf1c6d Merge pull request #1174 from nooges/atreus50
Add Atreus50 keyboard
2017-03-28 09:34:26 -04:00
Jack Humbert
7e37daa2ce Merge pull request #1112 from newsboytko/newsboytko/midi-keycodes
Flesh out MIDI support
2017-03-28 09:26:54 -04:00
Jack Humbert
216f669276 Merge pull request #1098 from lambdalisue/tapping-force-hold
Add TAPPING_FORCE_HOLD to regulate behaviour
2017-03-28 09:24:22 -04:00
Jack Humbert
cc2fb56ed8 Merge pull request #1167 from smt/smt/satan
Add smt keymap for Satan 'GH60'
2017-03-28 09:18:55 -04:00
Jack Humbert
fa09189195 Merge pull request #1162 from Khord/master
My customized keymap + some tunes for the song list
2017-03-28 09:17:16 -04:00
Danny Nguyen
71857ebc3f Move Atreus50 to hardwired directory and update README 2017-03-28 09:17:09 -04:00
Jack Humbert
6e688ad5c2 Merge pull request #1172 from nooges/hexwire-fixes
Let's Split hexwire keymap fixes
2017-03-28 09:16:47 -04:00
Jack Humbert
99b7b50130 Merge pull request #1157 from jtbarrett/tada68_default
Update readme and default layout for TADA68
2017-03-28 09:15:57 -04:00
Jack Humbert
c948404739 Merge pull request #1180 from mattdibi/master
Italian layout for ergodox keyboard
2017-03-28 09:14:03 -04:00
Jack Humbert
8a0cf32cf5 Merge pull request #1171 from ishtob/master
SSD1306 I2C OLED display support for let's split
2017-03-28 09:13:41 -04:00
Jack Humbert
0f986a1951 Merge pull request #1168 from newsboytko/newsboytko/frosty-flake
Support Frosty Flake Controller (CM Storm QFR)
2017-03-28 09:10:55 -04:00
Jack Humbert
a7811781c5 Merge pull request #1178 from cheesemacfly/master
XD60 different layout
2017-03-28 09:10:02 -04:00
Jack Humbert
417202109b Merge pull request #1163 from jprMesh/atreus62_KC_KEYMAP
Added KC_KEYMAP macro for old style keymaps in Atreus62
2017-03-28 09:09:35 -04:00
Jack Humbert
ee6fbaaad8 Merge pull request #1177 from exiva/bluetooth_refactor
Refactor Bluetooth Handling
2017-03-28 09:08:10 -04:00
mattdibi
2104900030 Removed images from ergodox ez italian layout 2017-03-28 10:19:25 +02:00
mattdibi
221b27c508 Fixed layout title in ergodox ez italian keymap 2017-03-28 10:15:18 +02:00
mattdibi
b9b9a59f22 Fixed italian kymap readme 2017-03-28 10:13:29 +02:00
mattdibi
512eb5e1d5 Updated readme 2017-03-28 10:10:24 +02:00
mattdibi
b6b85ed413 Added italian layout 2017-03-28 09:56:07 +02:00
Stick
b6280d0cac unsatisfied with ESC/GRV/TAB positioning 2017-03-27 21:56:47 -05:00
Stick
a47e916635 Merge remote-tracking branch 'upstream/master' 2017-03-27 21:19:36 -05:00
Stick
a03d946d0c fixed unicode input issue 2017-03-27 21:18:12 -05:00
Erez Zukerman
3c3388d7f6 Updated Mouse keys (markdown) 2017-03-27 09:54:49 +03:00
Erez Zukerman
0605107f13 Updated Mouse keys (markdown) 2017-03-27 09:54:33 +03:00
Erez Zukerman
18bc47ebab Created Mouse keys (markdown) 2017-03-27 09:53:27 +03:00
Erez Zukerman
004a92d9a6 Updated _Sidebar (markdown) 2017-03-27 09:51:57 +03:00
Nicolas Guelpa
a32436d5a1 Create README.md 2017-03-26 15:20:44 -04:00
Nicolas Guelpa
a89ee25db8 Add files via upload 2017-03-26 15:16:55 -04:00
Nicolas Guelpa
c0a6c5f806 fixing layout 2017-03-26 15:07:19 -04:00
agaric
2407b27243 fix link for VAGRANT_GUIDE file 2017-03-25 16:22:08 +09:00
Nicolas Guelpa
739249ff0d Adding different layer 2017-03-24 20:18:59 -04:00
Travis La Marr
43eee52cba Add BLE and EZKey module defines.
Also restored serial init back to original location. Was getting junk data.
2017-03-24 17:14:57 -04:00
Travis La Marr
b4ac0598fa Readd bluetooth output direction on standard key input. 2017-03-24 15:55:02 -04:00
Hugh Enxing
25f2295ba8 Swapped placement of Ctrl and Alt keys to match Technomancy's
default layout
2017-03-24 14:31:02 -04:00
Travis La Marr
ddc036b69e Refactor Bluetooth Handling
Refactored Bluetooth support to make adding new Bluetooth modules
easier in the future.

* Remove `OUT_BLE` key from QMK's keymap. `OUT_BT` is all we need now
as there's no difference anymore.
* Made BLUETOOTH_ENABLE build option legacy as not to break existing
keymaps (Falls back to existing EZ Key support if on)
* Removed `ADAFRUIT_BLE_ENABLE` build option
* Created new build option `BLUETOOTH` with module option (Currently
`AdafruitEZKey` & `AdafruitBLE`)
* Moved all LUFA bluetooth key/mouse events under `BLUETOOTH_ENABLE`
ifdef with selected modules output.
2017-03-24 12:53:55 -04:00
Danny Nguyen
8775a13658 Add RGB support 2017-03-23 14:46:58 -04:00
Danny Nguyen
63e47a6425 Add RGB support for Let’s Split v1 2017-03-23 12:23:20 -04:00
Danny Nguyen
0520341ce4 Cleanup keymap 2017-03-23 11:31:07 -04:00
Danny Nguyen
edfb50ea56 Initial commit for Atreus50 with working audio 2017-03-23 09:42:32 -04:00
Danny Nguyen
e5c5902e95 Move keymap into config file 2017-03-23 08:51:29 -04:00
Danny Nguyen
f3e3ff29a3 Add Makefile in keymap dir 2017-03-23 08:46:35 -04:00
Danny Nguyen
91776772fd Remove line for hands selection via EEPROM, reduce tap duration from 200ms to 150ms 2017-03-23 08:46:35 -04:00
ishtob
2573e581a5 Update readme.md 2017-03-22 15:56:45 -04:00
ishtob
d5f56e91e4 Update i2c.c 2017-03-22 15:50:52 -04:00
ishtob
bb413383ee Update i2c.c 2017-03-22 15:50:18 -04:00
ishtob
092416325b Update i2c.c 2017-03-22 15:49:21 -04:00
ishtob
be0cfbb97e Update i2c.c 2017-03-22 15:48:56 -04:00
ishtob
732a7f2be9 Update matrix.c 2017-03-22 15:47:53 -04:00
ishtob
ebb46694e5 Update split_util.c 2017-03-22 15:45:45 -04:00
ishtob
1f7b8a0343 Update matrix.c 2017-03-22 15:45:15 -04:00
ishtob
d1865db599 OLED code cleanup 2017-03-22 15:19:01 -04:00
ishtob
80270a2791 Add files via upload 2017-03-22 15:14:33 -04:00
ishtob
30f4507492 OLED code cleanup 2017-03-22 15:11:03 -04:00
ishtob
65317a3a02 Added OLED SSD1306 support to I2C 2017-03-22 15:04:11 -04:00
ishtob
423c68c210 Merged Fliphalf, now defined in config, added OLED
Can now use the following in the keymap config.h to call the flipped matrix

```
#define FLIPHALF
```
2017-03-22 15:02:49 -04:00
ishtob
3a7083d810 Delete rules.mk 2017-03-22 15:00:00 -04:00
ishtob
a4bdd6d084 Delete rev2fliphalf.h 2017-03-22 14:59:54 -04:00
ishtob
d012b01108 Delete rev2fliphalf.c 2017-03-22 14:59:42 -04:00
ishtob
6167d7937c Delete config.h 2017-03-22 14:59:32 -04:00
ishtob
dfb5a0e8f4 Delete Makefile 2017-03-22 14:59:20 -04:00
ishtob
f0962bce50 Add files via upload 2017-03-22 14:55:13 -04:00
skullY
7a9437a2e3 Fix a typo 2017-03-21 22:24:34 -07:00
skullY
452949f913 Add #1170 to all the clueboard keymaps 2017-03-21 22:06:47 -07:00
skullydazed
dd967f2c05 Merge pull request #1170 from tengg/master
fixed a bug related to mod + Grave with combined ESC/Grave key
2017-03-21 21:54:24 -07:00
tengg
3cba7a43d9 typo fixed 2017-03-22 00:33:44 -04:00
tengg
a89998b977 fix typo 2017-03-22 00:28:59 -04:00
tengg
9e0ca927f9 fixed a bug related to mod + Grave with combined ESC/Grave key
This only applies to keymaps that has combined esc/grave. Here we call it theKEY.
Think about the motion when we do shift + theKEY (typing ~), or CMD + theKEY (switching window on MAC). Based on the original code, we must do following sequence:  press shift -> press theKEY -> release theKEY -> release shift. However, it is very possible and natural that we do this stroke sequence instead: press shift -> press theKEY -> release shift -> release theKEY.

If we do the 2nd stroke sequence, the code will del_key(ESC) instead of (GRV) when we release theKEY. This caused some inconvenient issues and ghost typing.

By adding a flag, this issue is eliminated and will not affect any other functions.
2017-03-22 00:03:30 -04:00
Stephen Tudor
dce3847ebb Use single _FUNC layer. Move RESET and base layout-changing keys to _FUNC. 2017-03-20 14:12:43 -04:00
Dylan Khor
0ec07ddc1c Merge branch 'master' of https://github.com/Khord/qmk_firmware 2017-03-20 13:16:19 -04:00
Dylan Khor
d7f2bd2964 add pgup, pgdn, home, end 2017-03-20 13:14:48 -04:00
Stephen Tudor
34c5f8094e Remove tap-dance. Raise will be accessed via holding shift while lower is active 2017-03-20 07:43:45 -04:00
Stephen Tudor
b10d950708 Use normal backtick in ESC spot - I've mapped ESC to caps lock 2017-03-20 07:43:24 -04:00
Stephen Tudor
3399e39297 Fix shift tap-dance (can't use one-shot layer) 2017-03-20 07:26:28 -04:00
Gabriel Young
b37f510f32 clean up config 2017-03-19 21:19:05 -07:00
Gabriel Young
a3a304db9a clean up docs and provide defaults for keymap 2017-03-19 21:11:17 -07:00
Gabriel Young
db2da37561 update docs 2017-03-19 20:56:45 -07:00
Gabriel Young
df874a228a fix whitespace 2017-03-19 20:46:56 -07:00
Gabriel Young
7e9ca9a976 support LEDs 2017-03-19 20:45:10 -07:00
Gabriel Young
a43ae7c92f Swap rows and columns to match the schematic 2017-03-19 20:34:53 -07:00
Gabriel Young
4a97ef6c48 start to define keymap; annoying because rows and columns are swapped from schematic 2017-03-19 19:55:55 -07:00
Gabriel Young
d7fc236540 successfully read data from the matrix 2017-03-19 15:59:21 -07:00
Simon Friis Vindum
76b9a2662a MT does work with right-hand side modifiers. See #1166. 2017-03-19 14:00:50 +01:00
Dylan Khor
561da65606 Missing comma 2017-03-19 00:14:43 +00:00
Dylan Khor
ca544ecfb6 Don't feel like tap dancing arrows anymore 2017-03-19 00:07:48 +00:00
Gabriel Young
19fd20261b sketch out frosty flake matrix using custom matrix.c based on kitten paw 2017-03-18 16:19:10 -07:00
Gabriel Young
3766f902a0 boilerplate project created with new_project.sh 2017-03-18 15:38:03 -07:00
Gabriel Young
70d83afff9 Merge branch 'qmk/master' 2017-03-18 14:48:27 -07:00
jprmesh
e123ed8d5f Added KC_KEYMAP macro for old style keymaps in Atreus62 2017-03-17 09:23:55 -04:00
Benny Powers
3c11a8d241 Added missing codes: KC_MEDIA_FAST_FORWARD and KC_MEDIA_REWIND 2017-03-17 12:44:29 +02:00
Dylan Khor
e03ddbe118 tap dance working for esc and arrows 2017-03-16 18:13:53 +00:00
Dylan Khor
4b1d0c5859 remove const 2017-03-16 17:36:31 +00:00
Dylan Khor
c7cddfc539 test td changes 2017-03-16 13:27:26 -04:00
Dylan Khor
6ca1c49d38 test fixes for tap dane 2017-03-16 13:07:01 -04:00
Dylan Khor
0c8f71e3c7 test tap dance 2017-03-16 12:44:56 -04:00
Dylan Khor
24d1745951 add config.h for customization 2017-03-16 12:24:31 -04:00
Dylan Khor
683754bce8 added custom tones 2017-03-16 04:11:47 +00:00
Jack Humbert
c36a4496eb Update config.h 2017-03-15 23:51:56 -04:00
Jack Humbert
c043d1cc47 Update config.h 2017-03-15 23:49:38 -04:00
Dylan Khor
0c0a8ee187 test 2017-03-16 03:46:26 +00:00
Dylan Khor
73a70a2c1c Add Makefile 2017-03-15 23:09:17 -04:00
Dylan Khor
cf28f7bfda Add custom keycap 2017-03-15 23:07:29 -04:00
Jack Humbert
335b398a5d Merge pull request #1152 from UnintendedFeature/bugfix/issue1151
readme keymap.h to quantum_keycodes.h
2017-03-15 11:18:32 -04:00
Jack Humbert
b794719952 Merge pull request #1090 from qmk/backlight_softpwm
Adds soft PWM backlight for non-timed ports
2017-03-15 11:17:07 -04:00
Jack Humbert
ce6dcc2b5d Merge pull request #1146 from khogeland/master
Colemak layout for Clueboard
2017-03-15 11:13:16 -04:00
Jack Humbert
71d6d7b22c Merge pull request #1147 from nooges/numpad20
Add handwired 20-key Numpad
2017-03-15 11:12:52 -04:00
Jack Humbert
8c184847f7 Merge pull request #1150 from nooges/ortho5x13
Add handwired 5x13 ortholinear keyboard
2017-03-15 11:12:30 -04:00
Jack Humbert
8685d73893 Merge pull request #1148 from nooges/hexwire-lets-split
Add Hexwire layout for Let's Split
2017-03-15 11:12:01 -04:00
Jack Humbert
09ee922a63 Merge pull request #1155 from deadcyclo/master
Worked on deadcyclo layout
2017-03-15 11:11:35 -04:00
Jack Humbert
b4a3e5ebea Merge pull request #1145 from smt/smt/lets_split
Add smt keymap for Let's Split (based on serial)
2017-03-15 11:00:06 -04:00
Jack Humbert
3554b93cbd Merge pull request #1144 from milestogo/sculpt2
Microsoft sculpt mobile handwire and new shortcuts macro library
2017-03-15 10:59:34 -04:00
Jack Humbert
2e34d4bd85 update for infinity 2017-03-15 10:57:24 -04:00
Danny Nguyen
52ea58805a Add RGB underglow, move keys to allow Adjust layer to be reached 2017-03-14 09:51:48 -04:00
Jack Humbert
ec9210959f Update readme.md 2017-03-13 12:12:09 -04:00
nstickney
d9efa02cfb added README.md 2017-03-12 22:43:44 -05:00
nstickney
1753c9383e Merge remote-tracking branch 'upstream/master' 2017-03-12 14:51:43 -05:00
nstickney
9895e376e7 added US-International support 2017-03-12 14:51:33 -05:00
Erez Zukerman
987b0f8521 Merge pull request #1154 from dennistruemper/neo2_on_qwerz_hardware
Neo2 on qwertz hardware
2017-03-12 13:50:31 -04:00
James Barrett
96bde794d8 Update readme and default layout for TADA68
Add the default function layer mappings for the keyboard.

Provide flashing instructions in the readme.
2017-03-11 22:09:50 -08:00
Brendan Johan Lee
0d71e631ed [deadcyclo layout] fix an error in layer illustration 2017-03-11 12:27:46 +01:00
Brendan Johan Lee
e66b31a648 [deadcyclo layout] Added second unicode layer, more sane layer switches 2017-03-11 12:22:38 +01:00
Dennis Trümper
e3f934ed91 remove typo from folder name 2017-03-11 12:09:30 +01:00
Dennis Trümper
edb8fcc810 update documentation 2017-03-11 11:44:39 +01:00
Dennis Trümper
303f5aed41 change layer 3 on right thumb back to layer 1 2017-03-11 10:31:22 +01:00
Dennis Trümper
f75c7266a3 working but some documentation needed 2017-03-11 00:02:39 +01:00
Stephen Tudor
b19e34c81e Forsake spacefn in favor of left shift tapdance. Move media controls. 2017-03-10 16:10:05 -05:00
Stephen Tudor
5ae0cfeef5 Add smt keymap for Satan 'GH60' 2017-03-09 13:58:33 -05:00
Lukas Stiebig
8b09fd8b55 readme keymap.h to quantum_keycodes.h
Changed the quantum/keymap.h to quantum/quantum_keycodes.h because this seems to be the file where they keycodes are defined.
2017-03-09 19:41:14 +01:00
Danny Nguyen
20a48e0198 Add handwired 5x13 ortholinear keyboard 2017-03-09 12:02:05 -05:00
Danny Nguyen
a8f872e728 Initial commit for handwired numpad 2017-03-09 10:11:39 -05:00
Danny Nguyen
3df35f712e Add readme for layout 2017-03-09 09:52:33 -05:00
Danny Nguyen
74c6c3d277 Convert keymap to compact version 2017-03-09 09:33:21 -05:00
Danny Nguyen
718b964806 Add hexwire layout for Let’s Split 2017-03-09 09:31:46 -05:00
Kevin Hogeland
06e4b3fe1a Colemak layout for Clueboard 2017-03-09 02:50:23 -08:00
nstickney
ce0b8ea676 Merge remote-tracking branch 'upstream/master' 2017-03-08 22:29:12 -06:00
nstickney
82cbe71bb5 found LT(layer, kc) so I could take out TapDance code 2017-03-08 22:28:18 -06:00
Stephen Tudor
8d4bc714e4 Update smt keymap READMEs 2017-03-08 23:16:58 -05:00
Erez Zukerman
7c7a77d4bf Tweaks keymap to reset on boot 2017-03-08 19:43:10 -05:00
milestogo
feb858c5a9 Merge branch 'master' into sculpt2 2017-03-08 15:51:30 -08:00
milestogo
ffb04bad66 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2017-03-08 15:50:46 -08:00
milestogo
b5bfb5104b docs for babblepaste 2017-03-08 15:48:39 -08:00
Jack Humbert
bfa7e6ce04 Merge pull request #1137 from Skrymir/patch-1
Fixed minor error in ergodox infinity section.
2017-03-08 18:37:30 -05:00
Jack Humbert
8d81667fbe Merge pull request #1138 from nooges/magicforce68
Add Handwired Magicforce68
2017-03-08 18:37:09 -05:00
Jack Humbert
97c4c570e2 Merge pull request #1140 from stites/freebsd
Add FreeBSD support in "util/install_dependencies.sh"
2017-03-08 18:36:34 -05:00
Jack Humbert
85121ec50e Merge pull request #1142 from guni77/my_keymap
My keymap
2017-03-08 18:35:37 -05:00
Jack Humbert
f392f245f9 Merge pull request #1143 from UnintendedFeature/feature/keymap-german-lukas
keymap german lukas
2017-03-08 18:30:23 -05:00
nstickney
fa44e8d4dc corralled image files 2017-03-08 16:26:45 -06:00
Stephen Tudor
88e862e472 Update smt keymaps for consistency 2017-03-08 16:00:23 -05:00
Lukas Stiebig
34fa8fd5d3 readme
Added a readme.md file for the keymap german-lukas.
2017-03-08 21:14:16 +01:00
Lukas Stiebig
2f5143e219 Corrected the description of the layer
Corrected the description of the Shortcuts layer.
2017-03-08 21:09:51 +01:00
Lukas Stiebig
8cc70f4d9d Added german-lukas
Added my keymap called germman-lukas.
2017-03-08 20:58:55 +01:00
Lukas Stiebig
2aa079d93e Left control and alt
Use the left control and the left alt key.
2017-03-08 20:41:35 +01:00
Gunther Gruber
cd1eb8d246 added readme file 2017-03-08 11:13:19 +01:00
milestogo
89aba30c7f fix stupid error w/ mode switch 2017-03-08 01:25:33 -08:00
Anand Babu (AB) Periasamy
b20106d238 Replace enter with quote and few reorgs 2017-03-08 01:12:12 -08:00
milestogo
01980c96e9 added browser babble, removed code from keymap 2017-03-08 01:06:25 -08:00
nstickney
29e7003fc2 SLASH and WHACK functions added (based on algernon's CT_TA) 2017-03-07 22:31:14 -06:00
nstickney
4880e72b77 SLASH and WHACK functions added (based on algernon's CT_TA) 2017-03-07 22:30:43 -06:00
Danny Nguyen
3d082382b2 Fix function layer actions 2017-03-07 23:08:44 -05:00
Danny Nguyen
7042af7020 Add Makefile 2017-03-07 23:06:41 -05:00
nstickney
eab0166f83 Merge remote-tracking branch 'upstream/master' 2017-03-07 19:09:56 -06:00
Ole Anders
1968ec4c24 changed definitions on keymap.c in admiral strokers
Made a few changes to my own keymaps. (organisation)
2017-03-07 19:40:18 +01:00
Ole Anders
25a7c94174 Merge remote-tracking branch 'refs/remotes/qmk/master' 2017-03-07 19:39:00 +01:00
stites
a9959783c0 Add freebsd support in "util/install_dependencies.sh"
A simple addition to the `install_dependencies` script which remaps the debian dependencies to their freebsd package-names. After a recursive clone and using gmake, I can successfully build all firmware from the root directory (minus some warnings generated by gcc-4.9.4 which I can procure on request). however there is a problem running tests.
2017-03-07 13:12:10 -05:00
Danny Nguyen
38a83700c3 Update description 2017-03-07 12:29:48 -05:00
Danny Nguyen
2cd2ac02d1 Add readme file 2017-03-07 12:20:52 -05:00
Danny Nguyen
f3aef727e1 Set pinout and layout 2017-03-07 12:20:52 -05:00
Danny Nguyen
6ee823a821 Add rule for flashing microcontroller using avrdude 2017-03-07 12:20:52 -05:00
Danny Nguyen
1023a47be6 Copy CMD60 as starting point and rename files 2017-03-07 12:20:52 -05:00
Joshua Colbeck
08cba6c09b Fixed minor error in ergodox infinity section. 2017-03-07 09:43:08 -06:00
milestogo
2f677c24a8 working with preprocessor macros for babblepaste 2017-03-06 00:16:44 -08:00
Damien
24ec8f5097 Merge pull request #18 from qmk/master
Merge from qmk
2017-03-05 22:58:13 +01:00
Kenichi Sasaki
fec3b78d78 fix backspace key position. 2017-03-05 21:49:41 +09:00
Xyverz
fbbf618a46 Removed preceeding underscore from MASTER_RIGHT in config.h 2017-03-05 03:48:10 -08:00
skullydazed
615bfc4eca Merge pull request #1107 from qmk/clueboard_cleanup
Rework the clueboard keymaps
2017-03-04 10:34:01 -08:00
Kenichi Sasaki
7e518e1d8f fix again 2017-03-04 23:56:58 +09:00
Xyverz
0d9bceb2fe Merge remote-tracking branch 'upstream/master' 2017-03-03 19:28:35 -08:00
Xyverz
68808b22c0 Final tweaks to my Kinesis keymap and readme 2017-03-03 19:27:24 -08:00
Jack Humbert
b042428d23 Merge pull request #1126 from folkert4/master
Various QOL changes to Espynn's keymap
2017-03-03 10:29:54 -05:00
Jack Humbert
4ab88f3a9e Merge pull request #1129 from unxmaal/unxmaal_spacefn
Layout: Spacebar long-press as fn, for GH60 and GH60 Satan boards
2017-03-03 10:29:19 -05:00
Jack Humbert
2a5d972004 Merge pull request #1130 from hot-leaf-juice/master
moar hotkeys
2017-03-03 10:28:55 -05:00
Trevor Joynson (trevorj)
515b4dd1f7 Allow to specify serial to dfu-util flash 2017-03-02 18:26:26 -08:00
Gabriel Young
0734f56940 add debug messages to audio 2017-03-02 12:28:12 -08:00
Gabriel Young
d11962aeb2 fix 'stop_all_notes' naming to be more consistent 2017-03-02 11:40:06 -08:00
Callum Oakley
61459ab5ba moar hotkeys 2017-03-02 11:40:25 +00:00
Eric Dodd
d35809a982 gh60 satan spacefn 2017-03-01 21:40:13 -05:00
Eric Dodd
a8a4927622 gh60 spacefn 2017-03-01 21:39:19 -05:00
milestogo
b80c97b712 clean up babblepaste 2017-02-28 23:27:49 -08:00
milestogo
0834c520c0 missed config.h stuck modifiers change 2017-02-28 21:54:35 -08:00
milestogo
748401e5c1 keymap and C6 audio testing 2017-02-28 21:53:42 -08:00
skullydazed
82d9abf9f3 Updated License Clarification (markdown) 2017-02-28 21:44:10 -08:00
folkert4
71971e818f Various QOL changes:
Removed some unneeded keys from raise and lower layers
moved the + and = signs, backspace is now more intuitive
moved all the Function keys to CUSTOM layer
added ctrl alt del to CUSTOM layer
simplified the layout picture greatly
2017-02-28 17:49:42 -05:00
Jack Humbert
4c4cf3ca49 Merge pull request #1124 from jmdaly/roadkit_firmware
Add initial version of TheVan Keyboards Roadkit Firmware
2017-02-28 15:48:34 -05:00
Jack Humbert
72c5dd1c93 Merge pull request #1125 from cwhits/upstream
[Planck] Update default keymap for missing keys
2017-02-28 11:51:33 -05:00
Chris Helming
18ba21aa31 Update default maps for missing keys 2017-02-28 11:40:06 -05:00
John M Daly
e12b1a237c Add initial version of TheVan Keyboards Roadkit Firmware 2017-02-28 11:17:18 -05:00
Jack Humbert
4583955914 Merge pull request #1116 from hot-leaf-juice/master
keymap update
2017-02-27 22:18:55 -05:00
Jack Humbert
5bfeb229b8 Merge pull request #1119 from phongnh/master
Removes redundant {} which cause build failure when DEBUG_ACTION is set
2017-02-27 22:18:12 -05:00
Jack Humbert
b851b0b2ae Merge pull request #1121 from Leszek111/master
add layout
2017-02-27 22:17:36 -05:00
skullydazed
71855087cf Removing eltang as he doesn't show up in the current git blame. 2017-02-27 10:34:21 -08:00
Gunther Gruber
38cf08697b small changes in guni.c keymap to work with new qmk_firmware packet 2017-02-27 09:55:24 +01:00
Gunther Gruber
c370c1e1f3 guni keymap 2017-02-27 09:49:06 +01:00
Xyverz
d91e09f116 Updates to the README.md 2017-02-26 19:49:10 -08:00
Xyverz
871ac5058a Minor changes to the keymap: Moved thumb-cluster ESC to Media and Keypad layers 2017-02-26 19:45:57 -08:00
bbbd49a175 Ammend readme.md 2017-02-27 00:27:57 +01:00
138b89e1a1 Add colemak_programmer 2017-02-27 00:16:55 +01:00
Gabriel Young
976c856966 Update size estimates in the Makefile
MIDI_ENABLE = no

   text    data     bss     dec     hex filename
      0   17080       0   17080    42b8 satan_midi.hex

MIDI_ENABLE = yes
MIDI_BASIC undefined
MIDI_ADVANCED undefined

   text    data     bss     dec     hex filename
      0   19494       0   19494    4c26 satan_midi.hex

      +2414 bytes (vs. MIDI_ENABLE = no)

MIDI_ENABLE = yes
      0   20846       0   20846    516e satan_midi.hex

      +1352 bytes (vs. MIDI_ENABLE = yes, MIDI_BASIC off, MIDI_ADVANCED
off)

MIDI_ENABLE = yes
#define MIDI_BASIC
#define MIDI_ADVANCED

   text    data     bss     dec     hex filename
      0   21292       0   21292    532c satan_midi.hex

      +1798 bytes (vs. MIDI_ENABLE = yes, MIDI_BASIC off, MIDI_ADVANCED
off)

Conclusion:
    +2400 to 4200, depending on config
2017-02-25 21:38:35 -08:00
Gabriel Young
b911e1966f Fix redundant process_music.c in sources 2017-02-25 21:13:47 -08:00
Gabriel Young
a64ae10662 Update existing keymaps
Update existing keymaps to enable MIDI_BASIC functionality.  Also added
an option MIDI_ENABLE_STRICT to be strict about keycode use (which also
reduces memory footprint at runtime)
2017-02-25 20:41:13 -08:00
nstickney
b69b214d52 making numbers more familiar 2017-02-25 22:04:21 -06:00
Gabriel Young
ea14ed122f Add basic layer to sample MIDI keycap 2017-02-25 19:37:33 -08:00
Gabriel Young
1000799d1e Factor basic note processing into respective processors 2017-02-25 19:25:33 -08:00
Gabriel Young
525be99ee9 Split MIDI functionality into MIDI_BASIC and MIDI_ADVANCED
MIDI_ENABLE = no

   text	   data	    bss	    dec	    hex	filename
      0	  17080	      0	  17080	   42b8	satan_midi.hex

MIDI_ENABLE = yes
MIDI_BASIC undefined
MIDI_ADVANCED undefined

   text	   data	    bss	    dec	    hex	filename
      0	  19494	      0	  19494	   4c26	satan_midi.hex

MIDI_ENABLE = yes
#define MIDI_BASIC
MIDI_ADVANCED undefined

   text	   data	    bss	    dec	    hex	filename
      0	  19788	      0	  19788	   4d4c	satan_midi.hex

MIDI_ENABLE = yes
MIDI_BASIC undefined
#define MIDI_ADVANCED

   text	   data	    bss	    dec	    hex	filename
      0	  20846	      0	  20846	   516e	satan_midi.hex

MIDI_ENABLE = yes
#define MIDI_BASIC
#define MIDI_ADVANCED

   text	   data	    bss	    dec	    hex	filename
      0	  21140	      0	  21140	   5294	satan_midi.hex
2017-02-25 15:02:43 -08:00
William Forma
99fc4a330e Updated License Clarification (markdown) 2017-02-25 07:03:10 -07:00
Phong Nguyen
d0b4dcc82c Removes redundant {} which cause build failure when DEBUG_ACTION is set 2017-02-25 19:50:46 +07:00
nstickney
ebc6948e96 first two layers of ErgoDox Familiar completeC 2017-02-24 17:11:19 -06:00
nstickney
474f7ee3fd initial layer of familiar layout) 2017-02-23 22:24:32 -06:00
nstickney
498dfdd02c Merge https://github.com/qmk/qmk_firmware 2017-02-23 21:15:40 -06:00
nstickney
9b40dd796e familiar layout graphics, etc 2017-02-23 21:13:45 -06:00
Jack Humbert
c62f3bd74d Merge pull request #1118 from priyadi/promethium
Various keymap updates
2017-02-23 10:21:23 -05:00
Jack Humbert
352c0e7baa Merge pull request #1117 from priyadi/fix_unicode_map
Fix UNICODE_MAP input_mode problem
2017-02-23 10:20:47 -05:00
Priyadi Iman Nurcahyo
af29d0d094 Fix UNICODE_MAP input_mode problem 2017-02-23 18:17:12 +07:00
Priyadi Iman Nurcahyo
b27a8dea1b Merge branch 'master' into promethium 2017-02-23 18:11:59 +07:00
Priyadi Iman Nurcahyo
296b927e77 Fix UNICODE_MAP input_mode problem 2017-02-23 18:10:00 +07:00
Jack Humbert
873fee8038 Updated _Sidebar (markdown) 2017-02-22 22:07:12 -05:00
Jack Humbert
74518260b8 Updated _Sidebar (markdown) 2017-02-22 22:06:56 -05:00
Jack Humbert
4d13a8063d Updated _Sidebar (markdown) 2017-02-22 22:06:37 -05:00
Erez Zukerman
0e54e9d528 Documents TT 2017-02-22 21:33:36 -05:00
Erez Zukerman
3cefa5cc82 Updated _Sidebar (markdown) 2017-02-22 21:32:06 -05:00
Erez Zukerman
24be0efd4b Updated _Sidebar (markdown) 2017-02-22 20:03:51 -05:00
Erez Zukerman
39b51573e6 Moves Modding Your Keyboard to its own page 2017-02-22 19:59:27 -05:00
Erez Zukerman
603e3fd2f6 Created Modding your keyboard (markdown) 2017-02-22 19:59:01 -05:00
Erez Zukerman
729fe5d8d4 Moves porting info to its own page 2017-02-22 19:58:21 -05:00
Erez Zukerman
c008ac79bf Created Porting your keyboard to QMK (markdown) 2017-02-22 19:58:11 -05:00
Erez Zukerman
203d90d9fe Moves Unicode and foreign-language info into its own page. 2017-02-22 19:56:46 -05:00
Erez Zukerman
6fb9c094ec Created Unicode and additional language support (markdown) 2017-02-22 19:56:31 -05:00
Erez Zukerman
6e88c5014b Moves unit testing into its own page. 2017-02-22 19:53:08 -05:00
Erez Zukerman
2c89a77e67 Created Unit testing (markdown) 2017-02-22 19:52:59 -05:00
Callum Oakley
b06961c38b updated readme 2017-02-22 12:26:13 +00:00
Gabriel Young
1d69ccd729 Merge branch 'qmk/master' 2017-02-21 22:01:56 -08:00
Jack Humbert
84b2f86f24 Merge pull request #1113 from kesslern/master
Add dvorak_emacs_software layout for ergodox
2017-02-21 23:35:09 -05:00
Jack Humbert
da41cd1adf Merge pull request #1115 from Skrymir/master
Update from upstream
2017-02-21 23:34:23 -05:00
Josh Colbeck
e51001efcc Merge remote-tracking branch 'qmk/master' 2017-02-21 20:31:16 -06:00
Callum Oakley
1316ca67af added hotkey cluster 2017-02-21 23:07:22 +00:00
Priyadi Iman Nurcahyo
3dab8a60fc added pause, prtsc & ins to list of keys to be processed on release 2017-02-21 16:40:38 +07:00
Priyadi Iman Nurcahyo
57623805e8 Move caps to FUN layer; add Pause key 2017-02-21 16:36:35 +07:00
Xyverz
bf6f7a623d Merge remote-tracking branch 'upstream/master' 2017-02-20 23:54:09 -08:00
Nathan Kessler
b9fce16490 Add dvorak_emacs_software layout for ergodox 2017-02-20 22:55:43 -05:00
Priyadi Iman Nurcahyo
b306f83c6b Move del back to fun+backspce 2017-02-21 04:00:05 +07:00
Priyadi Iman Nurcahyo
77f9363675 Only process Fnumber on key release, and only when layer is still active 2017-02-21 03:24:32 +07:00
Jack Humbert
7ff41df32c Merge pull request #1097 from stanleylai/master
Added support for LED backlight, XD60v2's RGB underglow LED
2017-02-20 11:10:20 -05:00
Gabriel Young
64eecfc530 fix typos in keymap 2017-02-19 22:23:32 -08:00
nstickney
5abe05147c familiar layout v0.1 from ErgoDox-EZ configurator 2017-02-19 21:25:35 -06:00
Gabriel Young
ed15973a3f Document size added by MIDI_ENABLE (~3800 bytes according to my experiments)
satan/keymaps/midi

MIDI_ENABLE = no

   text	   data	    bss	    dec	    hex	filename
      0	  17080	      0	  17080	   42b8	satan_midi.hex

MIDI_ENABLE = yes
#define MIDI_TONE_KEYCODE_OCTAVES 3 // default

   text	   data	    bss	    dec	    hex	filename
      0	  20846	      0	  20846	   516e	satan_midi.hex

MIDI_ENABLE = yes
#define MIDI_TONE_KEYCODE_OCTAVES 2 // fewer octaves

   text	   data	    bss	    dec	    hex	filename
      0	  20846	      0	  20846	   516e	satan_midi.hex
2017-02-19 17:45:08 -08:00
Gabriel Young
d1fe24ad9f Allow customization of the number of tone keycodes and add example keymap 2017-02-19 17:18:05 -08:00
Gabriel Young
ae0752dff5 expose midi_config 2017-02-19 16:43:45 -08:00
Gabriel Young
5e6097f015 add keycodes for transpose range 2017-02-19 16:43:43 -08:00
Gabriel Young
dd8f8e6bae implement modulation 2017-02-19 16:43:02 -08:00
Gabriel Young
7c5e510fe2 add support for pedal cc messages 2017-02-19 16:42:45 -08:00
Gabriel Young
f67aefc522 remove disabled code 2017-02-19 16:42:04 -08:00
Gabriel Young
a4163466cb Alternative version with a tone array
tone array:
   text	   data	    bss	    dec	    hex	filename
      0	  25698	      0	  25698	   6462	satan_newsboytko.hex
0x6480 bytes written into 0x7000 bytes memory (89.73%).

note on array:
   text	   data	    bss	    dec	    hex	filename
      0	  25802	      0	  25802	   64ca	satan_newsboytko.hex
0x6500 bytes written into 0x7000 bytes memory (90.18%).
2017-02-19 16:42:04 -08:00
Gabriel Young
f2b2e05f12 clean up commented code 2017-02-19 16:42:04 -08:00
Gabriel Young
e405ab4bc6 initial implementation of polyphony using variable length array of notes on 2017-02-19 16:41:59 -08:00
Gabriel Young
5ae1411fc3 Expand MIDI key codes 2017-02-19 16:41:10 -08:00
Gabriel Young
40a8a88e72 Merge branch 'qmk/master' 2017-02-19 14:34:58 -08:00
Kenichi Sasaki
c61b5d88a8 change bracket key posision 2017-02-19 22:46:54 +09:00
Stanley Lai
76b1f392ab XD60: Added BL_TOGG back to keymap, with 6 backlight steps 2017-02-18 21:47:11 -08:00
Jack Humbert
db1e9a469a helps to save before committing 2017-02-19 00:11:55 -05:00
Jack Humbert
c2239e6b96 merging 2017-02-19 00:04:14 -05:00
Stanley Lai
d168822477 Updated XD60 readme and photos to reflect v2 PCB 2017-02-18 20:56:17 -08:00
skullydazed
89529a9f17 Updated _Sidebar (markdown) 2017-02-17 14:29:35 -08:00
skullydazed
ab7ffc877a Updated _Sidebar (markdown) 2017-02-17 14:29:24 -08:00
skullydazed
93cd47d491 Updated _Sidebar (markdown) 2017-02-17 14:28:59 -08:00
skullydazed
7990cd2c92 Updated _Sidebar (markdown) 2017-02-17 14:28:35 -08:00
skullydazed
bcc86a09d5 Updated _Sidebar (markdown) 2017-02-17 14:27:58 -08:00
skullydazed
7d29d5f091 Updated _Sidebar (markdown) 2017-02-17 14:27:34 -08:00
skullydazed
e546b7655c Updated Keymap (markdown) 2017-02-17 14:22:55 -08:00
skullydazed
5f9532ea66 Updated Keymap (markdown) 2017-02-17 14:20:25 -08:00
skullydazed
6868497557 Updated Keymap (markdown) 2017-02-17 14:14:10 -08:00
skullydazed
4c9dae0e3b Updated Keymap (markdown) 2017-02-17 14:11:32 -08:00
skullydazed
44cd6aa41a Updated Keymap (markdown) 2017-02-17 14:10:10 -08:00
skullydazed
0bffb86721 Updated Keymap (markdown) 2017-02-17 14:09:50 -08:00
skullydazed
36f8936b03 Created Keymap (markdown) 2017-02-17 14:09:35 -08:00
skullydazed
359245bcc6 Updated FAQ Keymap (markdown) 2017-02-17 13:18:04 -08:00
skullydazed
7da82a6833 Updated FAQ Keymap (markdown) 2017-02-17 13:17:23 -08:00
Kenichi Sasaki
ab5d4ae803 fix 2017-02-18 02:19:56 +09:00
Kenichi Sasaki
6d16d282bf remove reset key 2017-02-18 01:27:12 +09:00
Kenichi Sasaki
e9b1958df2 Added JIS keymap symbols 2017-02-18 01:07:04 +09:00
Kenichi Sasaki
62aacd06ed copied and Meta(ESC) 2017-02-18 00:40:15 +09:00
skullydazed
b51d9d5d3f Updated Home (markdown) 2017-02-16 17:15:38 -08:00
skullydazed
921884de5d Updated Home (markdown) 2017-02-16 17:14:16 -08:00
skullydazed
30bf618864 Updated Home (markdown) 2017-02-16 17:09:39 -08:00
skullydazed
d9527a2f74 Updated Keymap examples (markdown) 2017-02-16 17:09:12 -08:00
skullydazed
56e9a286b5 Updated QMK Overview (markdown) 2017-02-16 17:07:39 -08:00
skullydazed
cdef9bd02f Updated QMK Overview (markdown) 2017-02-16 17:06:00 -08:00
skullydazed
8d88997ffd Updated QMK Overview (markdown) 2017-02-16 17:05:21 -08:00
skullydazed
a3b575b740 Updated QMK Overview (markdown) 2017-02-16 17:04:10 -08:00
skullydazed
f9a7dd6cca Created Make Instructions (markdown) 2017-02-16 17:03:17 -08:00
skullydazed
35d9010c63 Updated QMK Overview (markdown) 2017-02-16 17:00:57 -08:00
skullydazed
42f167eb57 Created QMK Overview (markdown) 2017-02-16 17:00:19 -08:00
skullydazed
e86e6431fc Updated Home (markdown) 2017-02-16 16:39:43 -08:00
skullydazed
b5d35e43c7 Created Macros (markdown) 2017-02-16 16:37:25 -08:00
skullydazed
b5af4e6dda Updated Home (markdown) 2017-02-16 16:34:35 -08:00
skullydazed
c23a2fc928 Updated Home (markdown) 2017-02-16 16:31:17 -08:00
skullydazed
8bc52c0e86 Created Tap Dance (markdown) 2017-02-16 16:30:12 -08:00
skullydazed
ac3753937a Created Leader Key (markdown) 2017-02-16 16:24:28 -08:00
skullydazed
53fde9a1ff Updated Home (markdown) 2017-02-16 16:23:02 -08:00
skullydazed
5730599d18 Created Space Cadet Shift (markdown) 2017-02-16 16:22:17 -08:00
Jack Humbert
2cbd99b663 Updated _Sidebar (markdown) 2017-02-16 19:11:58 -05:00
skullydazed
b7501868a0 Updated Home (markdown) 2017-02-16 15:51:26 -08:00
skullydazed
d817d8743e Created Key Functions (markdown) 2017-02-16 15:51:14 -08:00
skullydazed
d791dd7c91 Updated Keycodes (markdown) 2017-02-16 15:42:13 -08:00
skullydazed
ce8d46d74f Updated Keycodes (markdown) 2017-02-16 15:40:49 -08:00
skullydazed
cad54d5313 Updated Keycodes (markdown) 2017-02-16 15:39:55 -08:00
skullydazed
3c766d29e2 Updated Keycodes (markdown) 2017-02-16 15:34:53 -08:00
skullydazed
7053347efd Updated Keycodes (markdown) 2017-02-16 15:01:36 -08:00
skullydazed
67c4186a9e Updated Keycodes (markdown) 2017-02-16 14:58:44 -08:00
skullydazed
a2a216d316 Updated Keycodes (markdown) 2017-02-16 14:50:55 -08:00
skullydazed
26fda6bfa3 Updated Keycodes (markdown) 2017-02-16 14:50:36 -08:00
skullydazed
18c09dd154 Updated Keycodes (markdown) 2017-02-16 14:48:49 -08:00
skullydazed
2793758db7 Updated Keycodes (markdown) 2017-02-16 14:48:27 -08:00
skullydazed
218bd63294 Updated Keycodes (markdown) 2017-02-16 14:47:56 -08:00
skullydazed
ede95297d3 Updated Keycodes (markdown) 2017-02-16 14:47:31 -08:00
skullydazed
b663cb63c0 Updated Keycodes (markdown) 2017-02-16 14:46:43 -08:00
skullydazed
0b809313d0 Updated Keycodes (markdown) 2017-02-16 14:45:49 -08:00
skullydazed
459f206ec7 Updated Keycodes (markdown) 2017-02-16 14:45:21 -08:00
skullydazed
e1dd99ea74 Updated Keycodes (markdown) 2017-02-16 14:44:32 -08:00
skullydazed
b0efdf8795 Updated Keycodes (markdown) 2017-02-16 14:44:23 -08:00
skullydazed
e6a45c5092 Updated Keycodes (markdown) 2017-02-16 14:44:12 -08:00
skullydazed
896a48bac0 Updated Keycodes (markdown) 2017-02-16 14:08:58 -08:00
skullydazed
e1dc3377a4 Updated Keycodes (markdown) 2017-02-16 14:08:45 -08:00
skullydazed
d2e7b8b469 Updated Keycodes (markdown) 2017-02-16 14:08:33 -08:00
skullydazed
fcbcff8020 Updated Keycodes (markdown) 2017-02-16 14:08:22 -08:00
skullydazed
615dc93fba Created Keycodes (markdown) 2017-02-16 14:07:56 -08:00
skullY
1d87df5262 Add the mouse_keys layout 2017-02-16 14:04:04 -08:00
Xyverz
ca1ec7b121 Fixed the TODO list. 2017-02-16 13:48:54 -08:00
skullY
cbef63d8fa Rework the clueboard keymaps a bit. 2017-02-16 13:40:45 -08:00
Stephen Tudor
33bc4c070c Update smt Planck keymap 2017-02-16 14:32:46 -05:00
Stephen Tudor
334edc3c7d Add smt keymap for Let's Split (based on serial) 2017-02-16 14:32:24 -05:00
Jack Humbert
49e72632d2 remove more warnings 2017-02-16 13:13:38 -05:00
Priyadi Iman Nurcahyo
c18d0a83e6 Merge branch 'master' into promethium 2017-02-17 00:35:32 +07:00
Priyadi Iman Nurcahyo
e5bd81f0a6 Fix integer overflow 2017-02-16 23:56:47 +07:00
Priyadi Iman Nurcahyo
21f4944426 Merge branch 'master' into promethium 2017-02-16 23:53:47 +07:00
Priyadi Iman Nurcahyo
96a8e2d5f5 reposition ins and del key 2017-02-16 23:53:09 +07:00
Jack Humbert
1ac5dc9e52 fix travis and reduce warnings 2017-02-16 11:37:46 -05:00
schwarzgrau
118287420f tiny spelling change "frimware" to "firmware" 2017-02-16 17:24:51 +01:00
Jack Humbert
15dc540cac ignore PRs in versioning 2017-02-16 10:06:02 -05:00
Jack Humbert
e34c3936b7 Merge pull request #1105 from nrrkeene/master
The Ordinary Layout v5
2017-02-16 09:49:24 -05:00
Jack Humbert
0b76f4f508 Merge pull request #1103 from priyadi/promethium
My keymap updates
2017-02-16 09:48:58 -05:00
Xyverz
6fa6e6c4c6 Fixed inaccuracies in keymap comments and the readme. 2017-02-15 23:01:27 -08:00
Xyverz
80d5649f25 More refinements to my Kinesis keymap. Added a readme.md file. 2017-02-15 22:54:52 -08:00
Xyverz
1dabceb197 minor adjustments. 2017-02-15 21:56:48 -08:00
Nicholas Keene
d99f03a1a6 The Ordinary Layout has all the keys in the right places. 2017-02-15 23:11:04 -06:00
Nicholas Keene
7606f784dd This is the best layout, really, come look 2017-02-15 23:02:30 -06:00
Jack Humbert
77b6ac831e Merge pull request #1104 from qmk/layer_tap_toggle
Adds layer tap toggle as TT(layer)
2017-02-15 23:46:31 -05:00
Nicholas Keene
af942f2e57 The Ordinary Layout is the best one, the one you are looking for. Really. Check it out. 2017-02-15 22:33:04 -06:00
Jack Humbert
58823b4e03 fix weirdness with arm and mods 2017-02-15 23:20:35 -05:00
Xyverz
ea20a064b9 Added my keymap to the Kinesis project. 2017-02-15 20:14:32 -08:00
Jack Humbert
f89499e255 unique variable name 2017-02-15 18:14:07 -05:00
Jack Humbert
c2a9acffd7 publicise variables 2017-02-15 17:39:51 -05:00
Jack Humbert
1bb574fe48 add unicode common file, get names right 2017-02-15 17:09:47 -05:00
Jack Humbert
09add35e7f add unicode common file, get names right 2017-02-15 17:09:35 -05:00
Jack Humbert
cbabb4d417 split up unicode systems into different files 2017-02-15 16:36:31 -05:00
Jack Humbert
6788cbd762 give error if both unicode/map are enabled 2017-02-15 12:39:58 -05:00
skullydazed
2210a55e98 Adding Stephan Bosebeck's signoff 2017-02-15 08:31:30 -08:00
Jack Humbert
69ea10f9a9 adds layer tap toggle 2017-02-15 11:25:33 -05:00
Priyadi Iman Nurcahyo
ac04fe0301 Added README for my keymap 2017-02-15 19:40:33 +07:00
Priyadi Iman Nurcahyo
3882f97d2e Move keyboard specific stuff to keyboard specific files, and vice versa 2017-02-15 19:22:58 +07:00
Priyadi Iman Nurcahyo
1eac297a2f Added copyright notice 2017-02-15 16:39:19 +07:00
Priyadi Iman Nurcahyo
c2f0207d59 Merge my Planck-like keyboards 2017-02-15 16:36:31 +07:00
Priyadi Iman Nurcahyo
b128617ede Merge branch 'master' into promethium 2017-02-15 15:51:42 +07:00
Nicholas Keene
54785c1976 The Ordinary Layout is boring, normal, typical, expected. 2017-02-14 22:47:11 -06:00
Nicholas Keene
e006b4a600 The Ordinary Layout has a feature for one-handed chorded typing 2017-02-14 22:32:31 -06:00
Nicholas Keene
1e09698146 All my friends us The Ordinary Layout because it doesn't force you to change you typing habits 2017-02-14 22:31:54 -06:00
Nicholas Keene
c055098952 The Ordinary Layout now has more symbols on the Symbols layer! So useful! 2017-02-14 22:30:07 -06:00
Jack Humbert
7bef285553 Merge pull request #1101 from priyadi/layer_state_set_kb
Add weak layer_state_set_kb hook
2017-02-14 21:33:04 -05:00
Wilba6582
7741f2a498 Updated License Clarification (markdown) 2017-02-15 10:51:54 +11:00
Jack Humbert
c94efed1e6 Created _Sidebar (markdown) 2017-02-14 18:04:20 -05:00
Jack Humbert
eb5b52c6c6 change jackhumbert to qmk 2017-02-14 18:03:27 -05:00
Jack Humbert
5df4372c81 Updated Compatible Microcontrollers (markdown) 2017-02-14 18:01:20 -05:00
Jack Humbert
ba27a11288 Updated Home (markdown) 2017-02-14 17:57:16 -05:00
Jack Humbert
f43e6f224b Created Build Environment Setup (markdown) 2017-02-14 17:56:06 -05:00
Priyadi Iman Nurcahyo
168c912027 Move Alt-Tab position 2017-02-15 05:38:40 +07:00
Priyadi Iman Nurcahyo
d0ee5292b6 Merge branch 'layer_state_set_kb' into promethium 2017-02-15 05:25:45 +07:00
Priyadi Iman Nurcahyo
bd8d717f1f Fix bug fix attempt 2017-02-15 05:25:08 +07:00
Priyadi Iman Nurcahyo
369b3dc723 Merge branch 'layer_state_set_kb' into promethium 2017-02-15 05:23:25 +07:00
Priyadi Iman Nurcahyo
d96175937b Bug fix & added default_layer_state_set_kb 2017-02-15 05:20:15 +07:00
Priyadi Iman Nurcahyo
3c8c3ebe3f Bug fix & added default_layer_state_set_kb 2017-02-15 05:19:31 +07:00
Priyadi Iman Nurcahyo
5e31074633 Merge branch 'layer_state_set_kb' into promethium 2017-02-15 05:11:24 +07:00
Priyadi Iman Nurcahyo
d369bfb83a Add layer_state_set_kb hook 2017-02-15 05:02:15 +07:00
Priyadi Iman Nurcahyo
df311c7b40 num, func, punc 3state layer done right 2017-02-15 05:01:03 +07:00
schwarzgrau
6862ab1609 Updated Home (markdown) 2017-02-14 15:38:05 +01:00
lambdalisue
64f9779fe5 Add TAPPING_FORCE_HOLD to regulate behaviour
See #889 for the detail.
2017-02-14 14:12:54 +09:00
Stanley Lai
3272821d32 Added support for XD60v2 with RGB underglow and LED backlight support 2017-02-13 18:09:02 -08:00
Priyadi Iman Nurcahyo
3758cfd95f GUI layer fixes 2017-02-14 04:17:09 +07:00
Priyadi Iman Nurcahyo
6c692fca7d Alt-tab handling in GUI layer 2017-02-14 03:58:12 +07:00
Stanley Lai
a8eba1bdda Merge remote-tracking branch 'refs/remotes/qmk/master' 2017-02-13 12:36:22 -08:00
Priyadi Iman Nurcahyo
7ae677dcb7 remove stand alone punc layer switcher for now 2017-02-14 03:18:34 +07:00
Priyadi Iman Nurcahyo
cf97749fb7 Updated Home (markdown) 2017-02-14 02:57:15 +07:00
Priyadi Iman Nurcahyo
02662e3869 Add explicit punctuation key for greek layers 2017-02-14 00:46:06 +07:00
Priyadi Iman Nurcahyo
c2531ff43b Func + Num = Punc 2017-02-14 00:44:02 +07:00
Jack Humbert
fd2925efba Merge pull request #1094 from priyadi/faux_clicky
Implement faux-clicky feature
2017-02-13 10:58:50 -05:00
Jack Humbert
21ad0c5bcd Merge pull request #1095 from Mauin/gonnerd/reset_documentation
GON NerD: Add reset button to documentation and default keymap
2017-02-13 10:56:47 -05:00
Priyadi Iman Nurcahyo
15e2dbb2a9 move GRV to ESC position 2017-02-13 22:18:36 +07:00
Priyadi Iman Nurcahyo
903e4d3193 Fix faux clicky toggle key 2017-02-13 20:13:33 +07:00
Marvin Ramin
24a40d63c9 define missing KC_NO macro 2017-02-13 13:44:53 +01:00
Priyadi Iman Nurcahyo
75e57b4bcb Merge branch 'faux_clicky' into promethium 2017-02-13 18:01:57 +07:00
Priyadi Iman Nurcahyo
200488bb31 Merge branch 'promethium' of github.com:priyadi/qmk_firmware into promethium 2017-02-13 17:58:42 +07:00
Priyadi Iman Nurcahyo
40ced77606 Update my Planck layout 2017-02-13 17:58:06 +07:00
Priyadi Iman Nurcahyo
97472aabe6 Forgot to add ifdef to optional feature 2017-02-13 17:58:06 +07:00
Priyadi Iman Nurcahyo
68e5c85999 Remove assignment warning 2017-02-13 17:58:06 +07:00
Priyadi Iman Nurcahyo
455568d197 Workaround to remove warning 2017-02-13 17:58:06 +07:00
Priyadi Iman Nurcahyo
5d5f2ff50d Some space optimization and housekeeping 2017-02-13 17:58:06 +07:00
Marvin Ramin
b28fb29898 adds documentation for reset button and adds one to the default keymap 2017-02-13 09:03:43 +01:00
Priyadi Iman Nurcahyo
8c93c5d9ab Add keycodes to turn on, turn off and toggle faux clicky 2017-02-13 14:55:35 +07:00
milestogo
1622d7147b :
Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware
2017-02-12 21:24:55 -08:00
Jack Humbert
4010360912 adds planck/rev3 makefile so subproject is found 2017-02-12 23:58:44 -05:00
Priyadi Iman Nurcahyo
c68e596f32 Implement faux-clicky feature 2017-02-13 08:03:07 +07:00
Jack Humbert
1e97f77278 update travis badge 2017-02-12 20:01:04 -05:00
Jack Humbert
68970679e7 Merge pull request #1092 from lucwastiaux/master
updated ergodox/dvorak_programmer keymap
2017-02-12 19:38:59 -05:00
luc wastiaux
3bf6c43de7 updated readme 2017-02-13 07:46:07 +08:00
luc wastiaux
352d79e1fb Merge remote-tracking branch 'upstream/master' 2017-02-13 07:44:28 +08:00
Jack Humbert
4505db5d0e Merge pull request #1091 from smt/smt/tv44
Add smt keymap for tv44 (MiniVan)
2017-02-12 18:42:44 -05:00
luc wastiaux
5f8535b356 change thumb cluster key to be shift 2017-02-13 07:16:01 +08:00
Stephen Tudor
b6730285b4 Add smt keymap for tv44 (MiniVan) 2017-02-12 12:46:24 -05:00
Jack Humbert
a773124537 send travis stuff to gitter 2017-02-12 12:23:03 -05:00
Jack Humbert
8d0fdf1008 adds soft pwm for non-timed ports 2017-02-12 11:29:42 -05:00
Priyadi Iman Nurcahyo
97e6bb5a4e Merge branch 'master' into promethium 2017-02-12 17:52:09 +07:00
milestogo
2d655b1830 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2017-02-11 22:11:06 -08:00
milestogo
274b1c53fb keymap update 2017-02-11 22:10:44 -08:00
Xyverz
719f6f0293 Merge remote-tracking branch 'upstream/master' 2017-02-11 21:57:54 -08:00
Xyverz
4894150094 Changes to the keymap to accommodate the RGB Underglow lighting. 2017-02-11 21:54:58 -08:00
Xyverz
134c354fc5 Adding a config file so that I can get RGB underglow for my Let's Split 2017-02-11 21:54:05 -08:00
Priyadi Iman Nurcahyo
bc1308c112 Update my Planck layout 2017-02-12 05:04:14 +07:00
Jack Humbert
a0c2305bd1 Merge pull request #1089 from priyadi/fix_ps2_mouse_warning
Suppress warnings from ps2_mouse.h
2017-02-11 13:18:42 -05:00
Priyadi Iman Nurcahyo
1b7439bfb1 Forgot to add ifdef to optional feature 2017-02-12 00:20:47 +07:00
Priyadi Iman Nurcahyo
aaa58a8d79 Supress warnings from ps2_mouse.h 2017-02-12 00:13:36 +07:00
Priyadi Iman Nurcahyo
e52d793c79 Merge branch 'master' into promethium 2017-02-12 00:09:25 +07:00
Priyadi Iman Nurcahyo
ce6b68f85b Remove assignment warning 2017-02-12 00:07:33 +07:00
Priyadi Iman Nurcahyo
2c1ef84b22 Workaround to remove warning 2017-02-12 00:02:36 +07:00
Priyadi Iman Nurcahyo
89d3ff8f18 Some space optimization and housekeeping 2017-02-12 00:00:01 +07:00
Jack Humbert
6d6b3ee9fb Merge pull request #1065 from milestogo/master
Update to kinesis keymaps
2017-02-11 11:51:06 -05:00
Jack Humbert
3f0b491fc0 Merge pull request #1082 from priyadi/right-side-dual-function
Implement tap mod dual role for right side mods.
2017-02-11 11:50:32 -05:00
Jack Humbert
6bb479ea45 Merge pull request #1085 from priyadi/promethium
Promethium keyboard layout update
2017-02-11 11:49:00 -05:00
Jack Humbert
5bdddb7821 Merge pull request #1087 from mneme/master
Updated keymap for atreus62/mneme
2017-02-11 11:48:39 -05:00
Jack Humbert
199458378b Merge pull request #1088 from Mauin/gon_nerd
add GON NerD
2017-02-11 11:48:11 -05:00
Jack Humbert
bfc33a56d7 don't try to build the readme 2017-02-11 11:39:57 -05:00
Marvin Ramin
5daa3a8836 add GON NerD 2017-02-11 17:14:40 +01:00
Priyadi Iman Nurcahyo
4163a3819e Add regular space to B+N on GUI layer for repeating space 2017-02-11 22:16:19 +07:00
Priyadi Iman Nurcahyo
4c05e39a02 Switch to Emoji layer using Punc + greek 2017-02-11 22:13:35 +07:00
Priyadi Iman Nurcahyo
4586b19be3 Turn off capslock when entering num layer 2017-02-11 22:07:04 +07:00
Priyadi Iman Nurcahyo
c6123b2e4a Move X in number layer away from space 2017-02-11 22:03:34 +07:00
Priyadi Iman Nurcahyo
513286cf98 LSpace + RSpace = switch layer 2017-02-11 21:54:10 +07:00
David Olsson
52e2afe673 correct spelling in readme 2017-02-11 15:09:30 +01:00
Priyadi Iman Nurcahyo
79de0cd119 Implement Capslock LED 2017-02-11 19:03:18 +07:00
David Olsson
052f81aaca Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2017-02-11 10:50:37 +01:00
David Olsson
aa69337cf5 update readme 2017-02-11 10:49:53 +01:00
Priyadi Iman Nurcahyo
9fc3afbef4 simplify battery calculation for now 2017-02-11 14:50:43 +07:00
Xyverz
902d5077cd Merge remote-tracking branch 'upstream/master' 2017-02-10 23:34:27 -08:00
Xyverz
4d7105c2cf Added RGB Underglow to my Preonic 2017-02-10 23:30:08 -08:00
Priyadi Iman Nurcahyo
b31ac35441 Fix emoji layer 2017-02-11 01:30:08 +07:00
Priyadi Iman Nurcahyo
b92515f139 Make room for 'loose keycodes' by halving UNICODE_MAP range 2017-02-11 00:36:08 +07:00
Priyadi Iman Nurcahyo
fdd06d3fca RShift + LShift = Capslock 2017-02-11 00:21:27 +07:00
Priyadi Iman Nurcahyo
bf31f516e3 Add reset keycode 2017-02-11 00:07:44 +07:00
Priyadi Iman Nurcahyo
909fd4ae64 Generalize layer indicators 2017-02-11 00:07:10 +07:00
Jack Humbert
835556da91 Merge pull request #1083 from VoodaGod/bone2planck
fixed readme (i swear)
2017-02-10 11:03:43 -05:00
Priyadi Iman Nurcahyo
229e38f097 Add ifdefs for keyboard layouts 2017-02-10 22:15:15 +07:00
Priyadi Iman Nurcahyo
5944ab246a Implement battery level indicator 2017-02-10 21:28:46 +07:00
luc wastiaux
420a032e8d made left shift an MO for SHELL_NAV 2017-02-10 21:44:27 +08:00
Priyadi Iman Nurcahyo
07879bf66b Add function to cycle backlight modes 2017-02-10 17:45:12 +07:00
Priyadi Iman Nurcahyo
a5b8db52a0 Activate SYS layer by pressing both Ctrls 2017-02-10 17:11:52 +07:00
VoodaGod
c0cfacda98 fixed readme (i swear) 2017-02-10 09:51:08 +01:00
Priyadi Iman Nurcahyo
4ffbfe8298 Restore GUI layer 2017-02-10 14:43:56 +07:00
Priyadi Iman Nurcahyo
0f92d305e2 Add slash/question mark to punc/num layer 2017-02-10 14:32:24 +07:00
milestogo
b0537f75df Merge branch 'master' into sculpt2 2017-02-09 23:28:39 -08:00
milestogo
41c93575a8 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2017-02-09 23:28:15 -08:00
milestogo
5ac0e6e6ae dumber sculpt build 2017-02-09 23:23:39 -08:00
Priyadi Iman Nurcahyo
a4a57d47ed Reimplement GUI Layer 2017-02-10 13:13:04 +07:00
Jack Humbert
6c462e0c01 Merge pull request #1073 from qmk/backlight_changes
Open backlight functionality to all ports
2017-02-09 20:14:35 -05:00
Priyadi Iman Nurcahyo
27e7eac279 Reorganize punctuation & numbers layer 2017-02-10 06:51:10 +07:00
Priyadi Iman Nurcahyo
dee6a6982c Fix LED indicator 2017-02-10 06:31:29 +07:00
Priyadi Iman Nurcahyo
97816df7e7 Implement tap mod dual role for right side mods. 2017-02-10 06:06:59 +07:00
Priyadi Iman Nurcahyo
af97d6b58e Add dvorak & norman layout. Add sys layer. 2017-02-10 06:01:59 +07:00
Priyadi Iman Nurcahyo
92308ed0e5 Remove audio stuff 2017-02-10 02:08:55 +07:00
Vincent Pochet
eddc161d5d Updated License Clarification (markdown) 2017-02-09 18:04:58 +01:00
Wojciech Siewierski
4d905b17f4 Signing off for GPL licensing 2017-02-09 18:00:54 +01:00
Jack Humbert
d537120eab Merge pull request #1078 from VoodaGod/bone2planck
updated Bone2Planck Keymap, Readme & fixed Makefile
2017-02-09 10:38:46 -05:00
Jack Humbert
93ee3bea37 Merge pull request #1079 from r2d2rogers/patch-1
[Typo] correct link to default keymap in readme.
2017-02-09 10:38:09 -05:00
Rob Rogers
2b95f41b91 [Typo] correct link to default keymap in readme. 2017-02-09 09:08:50 -06:00
VoodaGod
c330872f47 updated layout & readme 2017-02-09 13:07:59 +01:00
VoodaGod
986b065654 more formatting 2017-02-09 12:17:13 +01:00
VoodaGod
1becbcb013 readme formatting changes 2017-02-09 11:25:50 +01:00
VoodaGod
cb590bb37b updated readme 2017-02-09 11:21:52 +01:00
VoodaGod
9a64eb8533 updated bone2planck keymap & readme 2017-02-09 10:01:39 +01:00
Priyadi Iman Nurcahyo
4be4ed3397 Add USB-BLE manual output switching and indicator 2017-02-09 01:40:22 +07:00
Priyadi Iman Nurcahyo
3f2c0bfa86 Merge branch 'master' into promethium 2017-02-09 01:01:24 +07:00
Xyverz
060f075fd1 Added another handwired board, the Atreus50.
Added a layer for WOW to my Atreus62.
2017-02-07 22:14:56 -08:00
Jack Humbert
0a9fda968d Merge pull request #1074 from dungdung/kc60_led
Moved KC60 capslock LED code to standard led_set_kb…
2017-02-07 21:25:00 -05:00
Jack Humbert
ad1327cd00 accept numbers in travis build 2017-02-07 20:51:50 -05:00
dungdung
304d84cd08 Moved KC60 capslock LED code to standard led_set_kb so it can be overridden by users 2017-02-07 16:55:40 -08:00
Jack Humbert
f5c8c5d4c8 Merge pull request #1070 from jimmyhchan/fixSplit
Lets split readme eeprom master hand fixes
2017-02-07 15:46:29 -05:00
Jimmy Chan
56d2198b3d rename I2C_MASTER_RIGHT to MASTER_RIGHT since this works for serial as well 2017-02-07 12:36:52 -08:00
Jimmy Chan
048ef311dc udpate readme to reflect QMK and not having the Makefile from ahtn's repo 2017-02-07 12:33:35 -08:00
Jimmy Chan
9c02e2ab49 correctly put eeprom EE_HANDS at addr 0x0a (decimal 10). default to rev2 project. do not default EE_HANDS for the serial keymap
if you compare split_util.h with the original project by ahtn, the
address we look for isLeftHand config went from addr 7 to addr 10
(decimal). The EEP files were not updated.

EE_HANDS should not be enabled by default since it's more confusing for
most users
2017-02-07 12:30:24 -08:00
Jack Humbert
b4e30d3929 added functionality for just a port 2017-02-07 15:23:56 -05:00
Jack Humbert
d639bd2021 Merge pull request #1072 from nicinabox/improve-ls-avrdude-target
Check for Pro Micro serial port automatically
2017-02-07 13:52:03 -05:00
Jack Humbert
42ea912fde Merge pull request #1062 from luizribeiro/fix-win
Fix V-USB bug on Windows 10
2017-02-07 13:49:10 -05:00
Jack Humbert
13c394fba4 Merge pull request #1071 from dungdung/rgb_tweaks
RGB tweaks
2017-02-07 13:32:31 -05:00
Jack Humbert
c0c69a1a7c Merge pull request #1068 from adzenith/master
Minor cleanup
2017-02-07 13:27:41 -05:00
Jack Humbert
3c7fa0acc1 Merge pull request #1046 from LukeSilva/master
Add Tapping Macros to QMK
2017-02-07 13:18:47 -05:00
Jack Humbert
0c2b6951a6 Merge pull request #1057 from priyadi/selectable_output
Implement runtime selectable output (USB or BT)
2017-02-07 13:12:29 -05:00
Jack Humbert
de659486f5 pass through travis errors 2017-02-07 12:36:25 -05:00
Jack Humbert
c256ad51bd Merge pull request #1056 from upils/master
Add reddot handwired keyboard.
2017-02-07 12:20:29 -05:00
Jack Humbert
790dab27b6 Merge pull request #1053 from TerryMathews/master
Let's Split: establish rev2fliphalf subproject
2017-02-07 12:19:45 -05:00
Jack Humbert
616b8604b0 variable scope fix for travis 2017-02-07 11:53:43 -05:00
Jack Humbert
6a92cc2897 correctly assign bash variable 2017-02-07 02:00:07 -05:00
Jack Humbert
c8d5376f11 fix typo 2017-02-07 01:54:58 -05:00
Jack Humbert
f79f38d726 add comma 2017-02-07 01:53:46 -05:00
Jack Humbert
2179a548f4 Merge pull request #1069 from hot-leaf-juice/master
change cmd-l and cmd-r for actual home and end
2017-02-07 01:42:30 -05:00
Jack Humbert
19d63ad72c try building only keyboards needed 2017-02-07 01:35:10 -05:00
Jack Humbert
e5a2306804 Merge pull request #1041 from folkert4/master
Added Espynn's keymap
2017-02-07 00:37:23 -05:00
Jack Humbert
ab07d71b22 Merge pull request #1047 from lordchair/keymap_yale
yale planck layout
2017-02-07 00:30:56 -05:00
Nic Aitch
3dbdd15304 Check for a new serial port every second 2017-02-06 19:57:34 -06:00
Jack Humbert
d4c88626bd Merge pull request #1048 from smt/smt/planck
Add smt's keymap for Planck
2017-02-06 20:21:42 -05:00
Jack Humbert
198a2929ed Merge pull request #1059 from qmk/hf/algr_t
Introduces ALGR_T for dual-function AltGr
2017-02-06 19:33:33 -05:00
Jack Humbert
b5159c964a Merge pull request #1036 from nicinabox/lets-split-improvements
Lets Split flashing improvements
2017-02-06 19:33:07 -05:00
Jack Humbert
4348fb54d6 Merge pull request #960 from ofples/feature/combos
Keyboard combination triggers
2017-02-06 19:31:45 -05:00
TerryMathews
2a2be010d9 Reverse rev2 and rev2fliphalf
Flipped definitions on what constitutes "fliphalf" by popular demand.
2017-02-06 19:23:10 -05:00
TerryMathews
5d55a44afa Revert "Reverse rev2 and rev2fliphalf"
This reverts commit 0537977ba1.
2017-02-06 19:21:21 -05:00
TerryMathews
0537977ba1 Reverse rev2 and rev2fliphalf
Flipped definitions on what constitutes "fliphalf" by popular demand.
2017-02-06 19:14:57 -05:00
Jack Humbert
b6ffda4849 Merge pull request #1010 from SjB/oneshot_timeout_fix
oneshot timeout would only timeout after an event.
2017-02-06 18:57:23 -05:00
Jack Humbert
449ab9109a Merge branch 'master' of github.com:jackhumbert/qmk_firmware 2017-02-06 18:28:50 -05:00
Jack Humbert
35edb382ee [skip build] testing travis script 2017-02-06 18:28:37 -05:00
Jack Humbert
0a3c5c06fe Merge pull request #981 from jonasoberschweiber/osx-surrogate-pairs
Add support for Unicode supplementary planes on OS X
2017-02-06 18:00:47 -05:00
Jack Humbert
5c8cdfd2b5 [skip build] testing travis script 2017-02-06 17:51:20 -05:00
dungdung
a7882b1ffc Added non-animated gradient mode 2017-02-06 14:18:20 -08:00
dungdung
5a1b68d562 Added mode reverse step function 2017-02-06 14:18:20 -08:00
dungdung
0e548f8b5d Christmas mode now works with even RGBED_NUM
Added Christmas mode steps to reduce red and green colors blending into each other
Added Christmas mode interval
Increased green hue to 120
2017-02-06 14:18:20 -08:00
Jack Humbert
246d2583ff Merge pull request #1030 from SjB/refactor_register_code16
speeding up (un)register_code16
2017-02-06 17:06:53 -05:00
Jack Humbert
ee386a29d1 [skip build] testing travis script 2017-02-06 17:00:30 -05:00
Jack Humbert
cf8dac3538 [skip build] testing travis script 2017-02-06 16:56:39 -05:00
Jack Humbert
98adda34c9 [skip build] testing travis script 2017-02-06 16:54:54 -05:00
Jack Humbert
470c8436c2 [skip build] testing travis script 2017-02-06 16:46:44 -05:00
Jack Humbert
3a76f24cbd [skip build] testing travis script 2017-02-06 16:42:18 -05:00
Jack Humbert
835cacb031 fixes qmk.fm linking, tests out auto version incrementing 2017-02-06 16:04:28 -05:00
Callum Oakley
21015918b4 change cmd-l and cmd-r for actual home and end 2017-02-06 12:40:32 +00:00
Ole Anders
d1fb51976a Added new keymap to the Satan GH60 keyboard.
Added new keymap `Admiral Strokers` to the Satan keyboard. This is an
ISO based layout with tap for brackets/ curly on shft and ctl keys.
Furthermore, there is added arrows and media/volume/special/f-keys layer
on the TAB button when you hold.
2017-02-06 11:53:48 +01:00
Nikolaus Wittenstein
06d21009b2 Minor cleanup 2017-02-05 19:55:27 -05:00
Nikolaus Wittenstein
8cbf61c919 Add new DIODE_DIRECTION option
The previous two options were COL2ROW, ROW2COL; this adds CUSTOM_MATRIX
to disable the built-in matrix scanning code.

Most notably, this obviates the need to set MATRIX_ROW_PINS or
MATRIX_COL_PINS.
2017-02-05 19:47:33 -05:00
Nikolaus Wittenstein
d961c80df2 Remove unused matrix_raw variable in matrix.c 2017-02-05 19:41:08 -05:00
bestguy
c3ebd9e61b Fix indent to show code formatting, <keymap_colemak.h> was missing 2017-02-05 16:08:31 -08:00
milestogo
b0dfb037dc Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2017-02-04 20:08:07 -08:00
Nikolaus Wittenstein
101465b6ed Add missing header to ergodox ordinary keymap 2017-02-03 21:09:50 -05:00
Nikolaus Wittenstein
3faf06c880 Fix compile warnings in egodox robot_test_layout
Fixes the warning "right shift count >= width of type" by adding UL to
the end of constants.
2017-02-03 21:07:24 -05:00
Nikolaus Wittenstein
e667e9f6da Fix compile warnings in light_ws2812.c
Fixes the warning "function declaration isn't a prototype" by explicitly
making the parameter list void.
2017-02-03 21:00:13 -05:00
johannes
f936a3d5c2 stuff 2017-02-03 14:10:19 +01:00
Damien Pollet
cdece6811d Signing off for GPL licensing 2017-02-03 13:16:19 +01:00
johannes
453cd25ab8 Merge branch 'master' of https://github.com/Johannes-Larsson/qmk_firmware 2017-02-03 10:49:46 +01:00
johannes
8a7daf34a2 initial keymap 2017-02-03 10:47:37 +01:00
Jordi Orlando
bd43954a70 Fix username typo 2017-02-02 21:23:53 -06:00
Erez Zukerman
eadb1afbd0 fixes typo 2017-02-02 18:32:21 -05:00
skullydazed
4344273c95 Updated License Clarification (markdown) 2017-02-02 13:55:18 -08:00
Erik Dasque
7b798789f9 Updated Home (markdown) 2017-02-02 08:51:36 -05:00
Luiz Ribeiro
a3da586505 Fix V-USB bug on Windows 10 2017-02-01 21:57:44 -05:00
Priyadi Iman Nurcahyo
e7c4f621f1 Restrict outputselect to LUFA only for now 2017-02-01 22:30:06 +07:00
Priyadi Iman Nurcahyo
98f9a2e6df Fix wrong include 2017-02-01 20:18:52 +07:00
Priyadi Iman Nurcahyo
2bef8b5b88 Limit outputselect to AVR only for now 2017-02-01 19:37:52 +07:00
Priyadi Iman Nurcahyo
72e95809a1 Move outputselect to parent dir to satisfy non LUFA keyboards 2017-02-01 17:55:13 +07:00
Priyadi Iman Nurcahyo
c17070eca5 Add layer switcher keycodes: OUT_AUTO, OUT_USB, OUT_BT, OUT_BLE 2017-02-01 15:35:21 +07:00
lucwastiaux
467e284178 increase timeout for dual mode caps key 2017-02-01 13:46:00 +08:00
Erez Zukerman
f46c2b3ca0 Introduces ALGR_T for dual-function AltGr 2017-01-31 21:31:05 -05:00
Erik Dasque
5f79da2d5f Updated Home (markdown) 2017-01-31 20:19:05 -05:00
Priyadi Iman Nurcahyo
d8a9c63c26 Implement runtime selectable output (USB or BT) 2017-02-01 05:07:05 +07:00
upils
f36fc1d2e5 Add reddot handwired keyboard. 2017-01-31 22:37:03 +01:00
milestogo
e8ba4838d3 fixing kinesis reboot 2017-01-30 19:39:23 -08:00
matzebond
e97a2215c7 Updated License Clarification (markdown) 2017-01-30 20:23:22 +01:00
Priyadi Iman Nurcahyo
aa491523ab Signing off my contributions 2017-01-31 02:02:59 +07:00
skullydazed
24a61213aa Adding signify for @IBNobody 2017-01-30 10:57:07 -08:00
skullydazed
3a1e9890dc Adding signify for @lindhe 2017-01-30 10:45:19 -08:00
skullydazed
6cf5c7e7f4 Adding signify for @yangliu 2017-01-30 10:44:38 -08:00
plgruener
50dd22d1bf Updated License Clarification (markdown) 2017-01-30 17:29:40 +01:00
Seb
cb5a8feeb2 Updated License Clarification (markdown) 2017-01-30 09:11:07 +01:00
Xyverz
4f163b006e First revision of the XK-66 keyboard. 2017-01-30 00:00:09 -08:00
TerryMathews
ef9e544a7e Let's Split: establish rev2fliphalf subproject
Subproject to accomodate second half pad built in opposite orientation
(places TRRS jacks on opposing edges for shorter cable runs)
2017-01-29 22:22:32 -05:00
Jordi Orlando
dbeda99de1 Sign off on rgblight.c 2017-01-29 20:08:12 -06:00
TerryMathews
89799309d7 Updated License Clarification (markdown) 2017-01-29 18:31:57 -05:00
DidierLoiseau
761b4e04bf Added my sign off 2017-01-29 21:25:10 +01:00
Wez Furlong
29ea5f92ca Updated License Clarification (markdown) 2017-01-29 12:02:10 -08:00
skullydazed
07b0a4144e Updated License Clarification (markdown) 2017-01-29 10:54:37 -08:00
skullydazed
66ec000886 Updated License Clarification (markdown) 2017-01-29 10:19:15 -08:00
SjB
45e0d09414 moved oneshot cancellation code outside of process_record.
The oneshot cancellation code do not depend on the
action_tapping_process and since process_record get called via the
action_tapping_process logic moved the oneshot cancellation code into
the action_exec function just before the action_tapping_process call
2017-01-29 13:01:47 -05:00
SjB
f644b9a07a registering a weak_mods when using register_code16
Scenario:
Locking the KC_LSHIFT, and then using a tap dance key that registers a
S(KC_9) will unregister the KC_LSHIFT.

The tap dance or any keycode that is registered should not have the
side effect of cancelling a locked moditifier. We should be using a
similar logic as the TMK codes in tmk_core/comman/action.c:158.
2017-01-29 12:29:43 -05:00
Priyadi Iman Nurcahyo
3835b4bfcc Merge branch 'promethium' of github.com:priyadi/qmk_firmware into promethium 2017-01-29 18:38:15 +07:00
Priyadi Iman Nurcahyo
011811af68 minimize LEDs 2017-01-29 18:37:49 +07:00
Priyadi Iman Nurcahyo
306f43e5ee fix greek layers 2017-01-29 18:37:49 +07:00
Priyadi Iman Nurcahyo
c5ab0b2b61 Implement greek layers on my Promethium layout 2017-01-29 18:37:49 +07:00
fredizzimo
9413e3958a Updated License Clarification (markdown) 2017-01-29 11:38:43 +02:00
Gergely Nagy
8b66d71521 Updated License Clarification (markdown) 2017-01-29 10:35:44 +01:00
Pavlos Vinieratos
01c7475d12 add my consent. 2017-01-29 09:29:44 +01:00
Jack Humbert
420074d37f Updated License Clarification (markdown) 2017-01-29 02:37:49 -05:00
skullydazed
db7de0d47c Updated License Clarification (markdown) 2017-01-28 22:12:54 -08:00
skullydazed
8cad52d8f3 Updated License Clarification (markdown) 2017-01-28 22:12:43 -08:00
skullydazed
b1a2c4cd59 Created License Clarification Details (markdown) 2017-01-28 22:08:51 -08:00
skullydazed
6b7e4a9bc9 Updated License Clarification (markdown) 2017-01-28 22:08:15 -08:00
skullydazed
8567544174 Updated License Clarification (markdown) 2017-01-28 22:07:07 -08:00
skullydazed
d5de7e20fd Updated License Clarification (markdown) 2017-01-28 22:04:05 -08:00
skullydazed
8347993d6b Updated License Clarification (markdown) 2017-01-28 22:02:36 -08:00
Yale Thomas
8df30c1c56 added picture of layout 2017-01-28 18:44:14 -08:00
Yale Thomas
ad0ce40db0 usability tweaks 2017-01-28 18:44:01 -08:00
Yale Thomas
d549002d22 mouse keys added 2017-01-28 18:43:40 -08:00
Yale Thomas
4eafa86564 new 'yale' keymap 2017-01-28 18:43:40 -08:00
Stephen Tudor
1d9e0b0120 s/Bkps/Bksp 2017-01-28 20:54:34 -05:00
Luke Silva
77e54e34e1 Add luke keymap, as an example of the tapping macros 2017-01-29 11:27:38 +11:00
Luke Silva
a3357d078e Add support for various tapping macros
A macro key can now be easily set to act as a modifier on hold, and
press a shifted key when tapped. Or to switch layers when held, and
again press a shifted key when tapped.

Various other helper defines have been created which send macros when
the key is pressed, released and tapped, cleaning up the
action_get_macro function inside keymap definitions.

The layer switching macros require a GCC extension - 'compound
statements enclosed within parentheses'. The use of this extension is
already present within the macro subsystem of this project, so its use
in this commit should not cause any additional issues.

MACRO_NONE had to be cast to a (macro_t*) to suppress compiler
warnings within some tapping macros.
2017-01-28 18:42:35 +11:00
Stephen Tudor
7c24ecf580 Carry over Planck updates to my Preonic keymap 2017-01-28 01:38:58 -05:00
Stephen Tudor
321904b8e3 Improve Planck keymap
- added escape+shift mod-tap key
- replaced BRITE with backtick
2017-01-28 01:37:59 -05:00
Stephen Tudor
fa72689145 Merge branch 'master' into smt/planck
* master:
  Clarify license on abnt2 keymap (#1038)
  replace jackhumbert with qmk
  Add gitter image, start update to qmk org
  Remove COLEMAK from preonic_keycodes enum
  layer defines to enum
  Update readme for smt Preonic keymap
  Add smt keymap for Preonic
  updated all the other keymaps to support the new changes.
  fix: infinity60 keyboard was not using quantum features.
  Compare Makefile with itself instead of using `--help`
2017-01-28 00:51:07 -05:00
skullydazed
e364b2267a Updated License Clarification (markdown) 2017-01-27 18:35:59 -08:00
skullydazed
128640a7df Updated License Clarification (markdown) 2017-01-27 18:34:58 -08:00
skullydazed
646d1f83a5 Updated License Clarification (markdown) 2017-01-27 18:31:23 -08:00
skullydazed
143a4ff78f Updated License Clarification (markdown) 2017-01-27 18:19:12 -08:00
skullydazed
00010b47bc Updated License Clarification (markdown) 2017-01-27 17:54:48 -08:00
skullydazed
757a79636b Updated License Clarification (markdown) 2017-01-27 17:54:14 -08:00
skullydazed
35737ee07f Updated License Clarification (markdown) 2017-01-27 17:51:29 -08:00
skullydazed
d51ad5db0f Updated License Clarification (markdown) 2017-01-27 17:47:43 -08:00
lucwastiaux
f6feee8167 eliminate references to shell_layer 2017-01-28 09:45:13 +08:00
skullydazed
223494e691 Updated License Clarification (markdown) 2017-01-27 17:44:58 -08:00
lucwastiaux
a1c53d0f93 documented dual mode capslock 2017-01-28 09:42:55 +08:00
skullydazed
3df44ecfc8 Updated License Clarification (markdown) 2017-01-27 17:08:57 -08:00
milestogo
cb2d4fb80b split kinesis layout into ergodox and planck style symbol layers 2017-01-27 16:45:18 -08:00
skullydazed
858efff8e5 Updated License Clarification (markdown) 2017-01-27 16:27:36 -08:00
skullydazed
6a54982324 Updated License Clarification (markdown) 2017-01-27 16:21:25 -08:00
skullydazed
5942b0f103 Updated License Clarification (markdown) 2017-01-27 14:54:42 -08:00
skullydazed
0eebccb283 Updated License Clarification (markdown) 2017-01-27 14:51:58 -08:00
skullydazed
d524b3f5e5 Updated License Clarification (markdown) 2017-01-27 14:26:21 -08:00
skullydazed
c0a04929f2 Updated License Clarification (markdown) 2017-01-27 14:21:31 -08:00
skullydazed
9adb6f777b Updated License Clarification (markdown) 2017-01-27 14:14:19 -08:00
skullydazed
5c277651a3 Updated License Clarification (markdown) 2017-01-27 11:30:25 -08:00
folkert4
8c794d73fa Added Espynn's keymap 2017-01-27 13:51:39 -05:00
skullydazed
69581f47d5 Updated License Clarification (markdown) 2017-01-27 10:39:31 -08:00
skullydazed
bc68d4ef2c Updated License Clarification (markdown) 2017-01-27 10:38:03 -08:00
skullydazed
4bba3be825 Updated License Clarification (markdown) 2017-01-27 10:35:54 -08:00
skullydazed
228e4add0b Created License Clarification (markdown) 2017-01-27 10:02:33 -08:00
lucwastiaux
93c1bfa646 dual capslock functionality, activating shell nav or brackets 2017-01-27 23:55:33 +08:00
Luke Silva
cfc4149712 Add ability to use tap macros without using functions 2017-01-27 10:28:42 +11:00
Nic Aitch
890ecf6a2a Update readme 2017-01-26 09:31:40 -06:00
Nic Aitch
3131d65563 Add avrdude target 2017-01-26 09:31:27 -06:00
Luke Silva
87bc36253d Fix documentation for TMK actions 2017-01-26 22:44:22 +11:00
Damien
b7b94bfb13 Merge pull request #17 from qmk/master
Merged from QMK project
2017-01-26 09:05:55 +01:00
Stephen Tudor
63e406eca4 Add smt keymap for Planck 2017-01-26 00:24:51 -05:00
Rovanion Luckey
18cc05e2f7 Added instructions for how to build and flash the firmware with teensy_cli. 2017-01-24 10:02:56 +01:00
SjB
2b3859937b speeding up (un)register_code16
In register_code16 and unregister_code16 we call register_code and
unregister_code twice, once for the mods and once for the keycode.
The (un)register_code have many check to see that keycode we have sent
however because we know that we are sending it a mods key, why not
just skip all of it and call (un)register_mods instead. This will skip
alot of checks and should speedup the loop a little.
2017-01-23 23:16:57 -05:00
Erez Zukerman
b420185f5b Added KC_QUES, updated file path. 2017-01-19 20:38:13 -05:00
Xyverz
b8b2a55973 Merge remote-tracking branch 'upstream/master' 2017-01-19 06:54:18 -08:00
Xyverz
80bc598585 Added Let's Split 2017-01-19 06:51:24 -08:00
Xyverz
c8a0ab1867 Changes to Atreus62 keymap, adding Let's Split keymap. 2017-01-19 06:49:59 -08:00
David Olsson
f35adb4f37 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2017-01-18 22:58:49 +01:00
David Olsson
d910b94a3c Don't change ralt to lalt, it's really not the same thing on windows. 2017-01-17 19:33:09 +01:00
David Olsson
53382d9564 whitespace fixes 2017-01-16 21:31:44 +01:00
David Olsson
a37e924e36 vi style arrow keys. Live unicode switch support 2017-01-16 21:10:25 +01:00
Priyadi Iman Nurcahyo
11eb3d5491 Merge branch 'master' into promethium 2017-01-17 01:39:29 +07:00
SjB
6f44ca7a59 oneshot timeout would only timeout after an event.
After setting a ONESHOT_TIMEOUT value, the oneshot layer state would
not expire without an event being triggered (key pressed). The reason
was that in the process_record function we would return priort to
execute the process_action function if it detected a NOEVENT cycle. The
process_action contained the codes to timeout the oneshot layer state.
The codes to clear the oneshot layer state have been move just in
front of where we check for the NOEVENT cycle in the process_record
function.
2017-01-15 23:29:24 -05:00
Damien
f91f0a715d Merge pull request #16 from jackhumbert/master
Forked from jackhumbert/qmk_firmware
2017-01-15 11:07:54 -06:00
Noah Andrews
032712866f Link correctly to keycode.txt 2017-01-13 10:21:47 -05:00
Xyverz
1074642c36 initial commit of my Atreus62 keymap 2017-01-13 01:51:52 -08:00
Christopher Browne
942b78e8c2 Updated Home (markdown) 2017-01-11 18:36:44 -05:00
Christopher Browne
1cefc94082 Destroyed Build Options (org) 2017-01-11 18:36:08 -05:00
Christopher Browne
e7fb34a910 Updated Build Options (org) 2017-01-11 18:25:02 -05:00
Christopher Browne
67868d39f8 Created Build Options (org) 2017-01-11 18:21:41 -05:00
Noah Andrews
8d61e884f2 Fix dfu-programmer link 2017-01-10 14:58:56 -05:00
Xyverz
7a9a5d0e62 Add files via upload
tidying up the keymap
2017-01-09 19:08:46 -08:00
Priyadi Iman Nurcahyo
87b675241a minimize LEDs 2017-01-09 23:19:34 +07:00
Balz Guenat
166f428a2b Updated Home (markdown) 2017-01-09 16:29:04 +01:00
Priyadi Iman Nurcahyo
8c2cc30b0e fix greek layers 2017-01-09 21:24:26 +07:00
Priyadi Iman Nurcahyo
cf0650e3f0 Implement greek layers on my Promethium layout 2017-01-09 19:35:01 +07:00
xyverz
99521a4482 Merge remote-tracking branch 'upstream/master' 2017-01-08 21:47:08 -08:00
xyverz
79343f1c6c Usaility changes to keymap, tidying up a bit. 2017-01-08 21:44:31 -08:00
Damien
0fb82c15a5 Merge pull request #15 from jackhumbert/master
Merge from qmk
2017-01-07 08:45:19 -06:00
Jonas Oberschweiber
0aa413af44 Add support for supplementary planes for OS X 2016-12-31 19:37:56 +01:00
Jack Humbert
4587248cda add warning to install_dep 2016-12-30 11:09:58 -05:00
coderkun
b0ade6dc98 Fix return value of hex_to_keycode() function in keymap “coderkun_neo2” 2016-12-28 20:08:45 +01:00
Erez Zukerman
bdca5c22fe Language edits 2016-12-21 21:54:04 -05:00
Jack Humbert
7571474874 Updated Memory write error, use debug for more info (markdown) 2016-12-20 11:11:45 -05:00
Jack Humbert
dbf13e9c98 Created Memory write error, use debug for more info (markdown) 2016-12-20 09:51:13 -05:00
Ofer Plesser
40abf8bc9c Moved combo processing lower down in process logic 2016-12-16 22:00:29 +02:00
Ofer Plesser
6a462c818c Merge branch 'master' into feature/combos 2016-12-16 21:52:51 +02:00
Ofer Plesser
6e7cfa83b9 Refactored as well as added support for action keys in combos 2016-12-16 21:50:28 +02:00
xyverz
0523657923 Merge remote-tracking branch 'upstream/master' 2016-12-13 18:06:49 -08:00
xyverz
592b90dd22 Changes 2016-12-13 18:05:45 -08:00
Ofer Plesser
b6bf4e0dce Added support for timing out combos if a key as been pressed for longer than COMBO_TERM 2016-12-10 16:11:59 +02:00
Ofer Plesser
eac8fa7999 Implemented basic key combination feature 2016-12-10 00:49:11 +02:00
xyverz
9216bc7377 Merge remote-tracking branch 'upstream/master' 2016-12-06 17:36:19 -08:00
Jack Humbert
b251f2582e Updated Home (markdown) 2016-12-06 09:48:37 -05:00
Jack Humbert
b22b1fd5fb copy over readme for final time 2016-12-06 09:44:22 -05:00
xyverz
f9cf4f75ae Merge remote-tracking branch 'upstream/master' 2016-11-19 09:31:34 -08:00
xyverz
b493f6a4ed Merge remote-tracking branch 'upstream/master' 2016-11-16 22:36:36 -08:00
Zach Nielsen
80c5ada339 Missed removing a function 2016-11-10 13:47:07 -08:00
nielsenz
f388bb5bda Removed some common functions from my keymap 2016-11-10 13:39:46 -08:00
Zach Nielsen
4c0aa02b2e Missed some stuff. Added a song (stole it from reddit). 2016-11-10 12:59:55 -08:00
Zach Nielsen
c07ef5c6ab Adding my (zach) keymaps for planck and preonic 2016-11-10 12:26:56 -08:00
Zach Nielsen
59bef40aab Keep unicode's input_mode through a power cycle 2016-11-10 12:14:54 -08:00
xyverz
8dd422ffe1 Updates to keymap file. 2016-10-31 18:27:05 -07:00
xyverz
063328344a Removed files that weren't supposed to be uploaded from gh60 keymap folder 2016-10-31 18:04:01 -07:00
xyverz
61eb35191a Adding more keymaps. 2016-10-31 17:58:22 -07:00
Xyverz
91b1aa0994 Add files via upload
Minor layout changes
2016-10-18 16:34:42 -07:00
Xyverz
7920063035 Add files via upload
Minor layout changes.
2016-10-18 16:34:00 -07:00
Xyverz
f41d540e81 Add files via upload
Minor changes to my Dvorak keymap. Updated the readme.md to reflect these changes.
2016-10-18 16:28:44 -07:00
Erez Zukerman
b7533e0abf Documents TO. 2016-10-12 22:19:35 -04:00
xyverz
e69e4c1ef2 Merge remote-tracking branch 'jackhumbert/master' 2016-09-30 23:16:50 -07:00
xyverz
e3c3170610 More standardization between the three layouts
Swapped Number Row with Symbols between _L1 and _L2.
2016-09-30 23:10:34 -07:00
Xyverz
8cd3a84025 revisions to my keymap again. 2016-09-30 22:43:15 -07:00
Xyverz
a03d72f597 Updates to my Planck keymap - standardizing the bottom row. 2016-09-30 13:05:21 -07:00
Jack Humbert
c66b090d4c Copy the main readme.md here 2016-09-19 15:27:06 -04:00
DidierLoiseau
d352a8bc29 Importing and building the project 2016-09-18 21:24:56 +02:00
DidierLoiseau
ae7c3a0692 Instruct to use the Eclipse installer instead of extracting the package, describe first launch and plugin installation. 2016-09-18 15:03:27 +02:00
DidierLoiseau
22e234f9b5 Initial version 2016-09-18 13:27:27 +02:00
Xyverz
26d6b90dde Update readme.md 2016-09-17 14:43:25 -07:00
xyverz
6fc5d446f5 Merge remote-tracking branch 'upstream/master' 2016-09-16 22:06:15 -07:00
xyverz
d1c35b1255 removed a couple of mod_tap keys since they had some unintended conseqeunces across various platforms. 2016-09-16 22:02:33 -07:00
Joshua Colbeck
c56693f858 Merge pull request #4 from Skrymir/macroUpdates
Macro updates
2016-07-20 23:50:06 -05:00
Josh Colbeck
aaa180f463 Added reset keys 2016-07-20 23:15:15 -05:00
Joshua Colbeck
03840a8c4d Merge pull request #3 from jackhumbert/master
pulling in remote changes
2016-07-20 21:56:44 -05:00
Josh Colbeck
fb46eb2de1 Added open resource macro
tap to type, hold for resource
2016-07-12 23:52:02 -05:00
Jack Humbert
cab29b61e4 Updated Home (markdown) 2016-07-03 21:34:20 -04:00
Jack Humbert
abfc9265c4 Updated Home (markdown) 2016-07-03 21:33:56 -04:00
Jack Humbert
6b67129c51 Destroyed Build Guide (markdown) 2016-07-03 21:33:40 -04:00
Jack Humbert
c6d0da9a37 Updated FAQ Build (markdown) 2016-06-04 16:13:04 -04:00
Jack Humbert
e04aff10fa Updated FAQ Build (markdown) 2016-06-04 16:12:41 -04:00
leizzer
049e5916a4 Updated Home (markdown) 2016-03-28 02:22:04 -03:00
leizzer
71614e5b98 Updated Home (markdown) 2016-03-28 02:20:27 -03:00
leizzer
b803589e29 Build guide in the wiki section 2016-03-28 02:14:52 -03:00
Phil Hagelberg
2b0b5d804a Add Atreus 2016-02-08 18:23:15 +07:00
tmk
29664234e2 Updated TMK Based Projects (markdown) 2016-02-05 13:33:43 +09:00
tmk
e5e7dbebf6 Updated TMK Based Projects (markdown) 2016-02-05 09:22:16 +09:00
tmk
6778c175f5 Updated TMK Based Projects (markdown) 2016-02-05 09:22:01 +09:00
tmk
a38fc1beae Created Report Descriptor (markdown) 2016-02-02 14:41:14 +09:00
tmk
79f28ac3bd Created USB HID (markdown) 2016-01-29 01:11:35 +09:00
Adrian L Lange
5a7d3dce95 Updated TMK Based Projects (markdown) 2016-01-27 14:30:52 +01:00
Adrian L Lange
aee41b1293 Updated TMK Based Projects (markdown) 2016-01-27 13:45:50 +01:00
Adrian L Lange
6b368a8edc Added link to embedding page 2016-01-27 13:44:43 +01:00
Adrian L Lange
e13934c60a Updated Embedding (markdown) 2016-01-27 13:42:44 +01:00
Adrian L Lange
611ca00918 Added a warning 2016-01-27 13:42:05 +01:00
Adrian L Lange
5eef65f9b4 Created Embedding (markdown) 2016-01-27 13:40:02 +01:00
Adrian L Lange
9b9a1a946e Typo 2016-01-27 12:58:13 +01:00
tmk
78783e23d8 Created Kiibohd (asciidoc) 2016-01-27 08:48:49 +09:00
Hans Viktorin
943d1cc673 Updated TMK Based Projects (markdown) 2016-01-17 15:53:36 +01:00
Ralf Schmitt
f4b5b8486f Updated TMK Based Projects (markdown) 2016-01-16 17:18:58 +01:00
Adrian L Lange
006a1f806a Added link to project 2016-01-16 16:53:55 +01:00
Adrian L Lange
0e5b64f092 Rename title 2016-01-16 16:52:46 +01:00
Adrian L Lange
c4f5db9351 Update links to documentation 2016-01-16 16:12:40 +01:00
Vinícius Cordeiro
266aae0ebc Adding the S60-X to the list of supported keyboards. 2016-01-16 00:16:12 -02:00
tmk
85d56eea38 Updated TMK Based Projects (markdown) 2016-01-16 11:08:36 +09:00
tmk
97fe4201aa Updated Keymap examples (markdown) 2016-01-16 10:56:01 +09:00
tmk
32df47053b Updated TMK Based Projects (markdown) 2016-01-16 10:24:45 +09:00
tmk
8bccc5d217 Updated TMK Own Projects (markdown) 2016-01-16 10:24:16 +09:00
tmk
b3f45e2efd Updated TMK Own Projects (markdown) 2016-01-16 10:22:35 +09:00
tmk
f743e65ab7 Updated Home (markdown) 2016-01-16 10:21:46 +09:00
tmk
5133bb146e Updated TMK based Projects (markdown) 2016-01-16 10:21:23 +09:00
tmk
f95480e3ca Updated TMK own projects (markdown) 2016-01-16 10:21:06 +09:00
tmk
053b3b9847 Created TMK own projects (markdown) 2016-01-16 10:20:33 +09:00
tmk
53278bc658 Updated TMK based Projects (markdown) 2016-01-16 10:18:37 +09:00
tmk
4a34a192b5 Updated Home (markdown) 2016-01-16 10:18:17 +09:00
tmk
a5bf8cc4e1 Updated TMK Projects (markdown) 2016-01-16 10:17:09 +09:00
John Wells
9335aa3965 Fix broken link to keymap 2016-01-04 09:57:49 -07:00
tmk
f791834c68 Updated FAQ (markdown) 2016-01-04 19:38:20 +09:00
tmk
b681171774 Updated FAQ (markdown) 2016-01-04 11:41:19 +09:00
abjr
e6423f50a4 Updated FAQ (markdown) 2015-12-29 17:05:50 -05:00
tmk
dd5bfb6f3e Created Test for ASCIIDOC (asciidoc) 2015-12-17 13:48:33 +09:00
tmk
de235b3e07 Updated Home (markdown) 2015-12-17 12:32:38 +09:00
tmk
23c6af02c2 Updated FAQ (markdown) 2015-12-17 12:28:56 +09:00
tmk
1b495b94a9 Updated FAQ Keymap (markdown) 2015-12-14 15:58:09 +09:00
tmk
33b55c11a8 Updated FAQ Keymap (markdown) 2015-12-14 15:55:43 +09:00
tmk
59adb168b4 Updated FAQ Build (markdown) 2015-12-10 06:11:33 +09:00
tmk
f3b7863b56 Updated FAQ Build (markdown) 2015-12-09 14:45:22 +09:00
tmk
bf88dfa5db Updated FAQ Keymap (markdown) 2015-12-09 12:04:14 +09:00
tmk
4e9170156e Updated FAQ Keymap (markdown) 2015-12-09 12:03:07 +09:00
tmk
fbbf8b501f Updated Keymap examples (markdown) 2015-12-09 10:16:04 +09:00
tmk
304be86c80 Updated Keymap examples (markdown) 2015-12-09 10:13:29 +09:00
tmk
45ce7048d5 Updated Keymap examples (markdown) 2015-12-07 09:48:35 +09:00
tmk
79a23399e8 Created Keymap examples (markdown) 2015-12-07 09:47:52 +09:00
tmk
77a877f5d3 Updated Home (markdown) 2015-12-07 09:47:32 +09:00
tmk
7139a0704b Updated Other Protjects (markdown) 2015-12-05 13:50:39 +09:00
tmk
869e6316d0 Updated Other Protjects (markdown) 2015-12-05 13:47:59 +09:00
tmk
70cf332498 Created Other Protjects (markdown) 2015-12-05 13:45:42 +09:00
tmk
b2d1c4950c Updated Home (markdown) 2015-12-05 13:44:05 +09:00
tmk
0e8f5b0d91 Updated Home (markdown) 2015-12-05 13:43:32 +09:00
tmk
d03be6dbcb Updated Projects (markdown) 2015-12-05 13:43:04 +09:00
tmk
1ef3dee821 Updated FAQ Build (markdown) 2015-11-27 10:59:33 +09:00
tmk
79aa1f3484 Updated FAQ Build (markdown) 2015-11-27 10:59:07 +09:00
tmk
a5fc9c9165 Updated FAQ Build (markdown) 2015-11-27 10:56:20 +09:00
Paul Williamson
03c1f72594 Updated file path for tmk_core 2015-11-11 12:06:40 +00:00
tmk
8002d8dc29 Updated FAQ Keymap (markdown) 2015-10-29 06:21:33 +09:00
tmk
c38bac480b Updated FAQ Keymap (markdown) 2015-10-29 06:03:25 +09:00
tmk
483de13114 Updated FAQ Keymap (markdown) 2015-10-29 05:50:25 +09:00
tmk
06e9019a06 Updated FAQ Keymap (markdown) 2015-10-21 07:03:53 +09:00
tmk
caf197b905 Updated FAQ Keymap (markdown) 2015-10-21 07:03:11 +09:00
tmk
ee732d7753 Updated FAQ Keymap (markdown) 2015-10-21 07:03:01 +09:00
tmk
2196a5facf Updated FAQ (markdown) 2015-10-07 16:31:02 +09:00
tmk
d28ecc1e4a Updated FAQ (markdown) 2015-10-07 16:29:38 +09:00
tmk
eeaef60ffa Updated FAQ Keymap (markdown) 2015-10-07 04:09:04 +09:00
tmk
6e1a6d1981 Updated FAQ Keymap (markdown) 2015-10-06 15:57:00 +09:00
tmk
50e0b35560 Updated FAQ Keymap (markdown) 2015-10-06 15:56:44 +09:00
tmk
f7ae70962c Updated FAQ Keymap (markdown) 2015-10-06 15:49:17 +09:00
tmk
1b0fec884f Updated FAQ Keymap (markdown) 2015-10-06 15:43:51 +09:00
tmk
7328ba0f3b Updated FAQ Keymap (markdown) 2015-10-05 04:05:56 +09:00
tmk
9d25855bb0 Updated FAQ Keymap (markdown) 2015-10-05 04:02:42 +09:00
tmk
08f1bde358 Updated FAQ Keymap (markdown) 2015-10-05 03:51:26 +09:00
tmk
db193b8cf9 Updated FAQ (markdown) 2015-10-03 07:04:27 +09:00
tmk
8d47fe7bc7 Updated FAQ (markdown) 2015-10-03 07:03:58 +09:00
tmk
6163f0ea51 Updated FAQ Keymap (markdown) 2015-09-27 05:48:41 +09:00
tmk
8008a8a9dc Updated FAQ (markdown) 2015-09-19 18:31:10 +09:00
tmk
c8f3e845e7 Updated FAQ Build (markdown) 2015-08-31 10:40:59 +09:00
tmk
14466e820d Updated Previously Asked Questions (markdown => asciidoc) 2015-08-10 10:20:55 +09:00
tmk
86fa48e1ee Updated Previously Asked Questions (mediawiki => markdown) 2015-08-10 10:20:26 +09:00
tmk
7c8a062cd7 Updated Previously Asked Questions (asciidoc => mediawiki) 2015-08-10 10:20:05 +09:00
tmk
bd9d75701c Updated Previously Asked Questions (asciidoc) 2015-08-10 10:17:13 +09:00
tmk
d5bbecc134 Updated Previously Asked Questions (asciidoc) 2015-08-10 10:17:01 +09:00
tmk
3290a75dd0 Updated Previously Asked Questions (asciidoc) 2015-08-10 10:16:36 +09:00
tmk
b216768cef Updated Previously Asked Questions (asciidoc) 2015-08-10 10:16:16 +09:00
tmk
c797334f51 Updated Previously Asked Questions (asciidoc) 2015-08-10 10:15:47 +09:00
tmk
f98e803e5c Updated Previously Asked Questions (asciidoc) 2015-08-10 10:04:23 +09:00
tmk
c84d220b07 Updated Previously Asked Questions (asciidoc) 2015-08-10 10:03:41 +09:00
tmk
3ea6555f88 Updated Previously Asked Questions (asciidoc) 2015-08-10 10:02:46 +09:00
tmk
13b8908951 Updated Previously Asked Questions (asciidoc) 2015-08-10 09:43:38 +09:00
tmk
4a37910295 Updated Previously Asked Questions (mediawiki => asciidoc) 2015-08-10 09:43:16 +09:00
tmk
2945841985 Updated Previously Asked Questions (mediawiki) 2015-08-10 09:35:55 +09:00
tmk
08e31e7995 Updated Previously Asked Questions (markdown => mediawiki) 2015-08-10 09:34:59 +09:00
tmk
7d3dda21a5 Updated Previously Asked Questions (markdown) 2015-08-09 16:18:55 +09:00
tmk
e451b38848 Updated Previously Asked Questions (markdown) 2015-08-09 16:17:29 +09:00
tmk
dcc1abcdd5 Updated Previously Asked Questions (markdown) 2015-08-09 16:17:05 +09:00
tmk
94ccc65542 Updated Previously Asked Questions (markdown) 2015-08-09 16:13:34 +09:00
tmk
c25b5b0093 Created Previously Asked Questions (markdown) 2015-08-09 16:12:01 +09:00
tmk
2c22bbda5a Updated FAQ Keymap (markdown) 2015-07-04 06:10:28 +09:00
Ruslan Ohitin
410bc48e5a Updated FAQ (markdown) 2015-06-09 16:32:24 +06:00
tmk
cd71aeb63e Updated FAQ Keymap (markdown) 2015-05-16 23:58:50 +09:00
tmk
81545bbe10 Updated FAQ Build (markdown) 2015-05-09 13:33:56 +09:00
tmk
b4f1638643 Updated FAQ (markdown) 2015-05-06 10:12:46 +09:00
tmk
c9b11560bf Updated FAQ (markdown) 2015-05-06 10:07:23 +09:00
tmk
ff1130f76d Updated FAQ (markdown) 2015-05-06 08:27:22 +09:00
tmk
3e0c1937f4 Updated Git subtree (markdown) 2015-04-28 10:27:11 +09:00
tmk
398c4feed4 Created Git subtree (markdown) 2015-04-28 10:26:11 +09:00
tmk
5d7a4e3059 Updated FAQ (markdown) 2015-04-13 10:53:40 +09:00
tmk
ac01b69edf Updated FAQ (markdown) 2015-04-13 10:51:28 +09:00
tmk
5031ae08bf Updated FAQ (markdown) 2015-04-13 10:50:34 +09:00
tmk
2c11165fb6 Updated FAQ Keymap (markdown) 2015-03-24 16:39:28 +09:00
tmk
9761907332 Updated FAQ Keymap (markdown) 2015-03-24 16:39:04 +09:00
tmk
2931b8c18c Updated FAQ Keymap (markdown) 2015-03-24 16:31:11 +09:00
tmk
0eff2b199d Updated FAQ Keymap (markdown) 2015-03-24 16:30:35 +09:00
tmk
5e5aee44e5 Updated FAQ Keymap (markdown) 2015-03-09 20:34:06 +09:00
tmk
506c776300 Updated FAQ Keymap (markdown) 2015-03-09 20:30:35 +09:00
tmk
d6141c0bce Updated FAQ Keymap (markdown) 2015-03-09 20:28:55 +09:00
tmk
b64631d02c Updated FAQ Keymap (markdown) 2015-03-09 20:23:18 +09:00
tmk
b321f44ff6 Updated FAQ Keymap (markdown) 2015-03-09 20:22:02 +09:00
tmk
1650d4692c Updated FAQ Keymap (markdown) 2015-03-07 14:19:44 +09:00
tmk
64e64e5153 Updated FAQ Build (markdown) 2015-01-22 13:13:53 +09:00
tmk
12e5912c9a Updated FAQ Build (markdown) 2015-01-14 09:35:19 +09:00
tmk
756706a704 Updated FAQ Keymap (markdown) 2015-01-14 09:25:28 +09:00
tmk
126ba262ef Updated FAQ Build (markdown) 2015-01-14 09:25:15 +09:00
tmk
8bb74c6062 Updated FAQ (markdown) 2015-01-14 09:24:15 +09:00
tmk
c716bc0234 Updated FAQ Build (markdown) 2015-01-14 09:23:20 +09:00
tmk
7c80d1d777 Updated FAQ (markdown) 2015-01-14 09:20:55 +09:00
tmk
416f946463 Updated FAQ (markdown) 2015-01-14 09:20:06 +09:00
tmk
9f02c070ca Updated FAQ (markdown) 2015-01-14 09:16:02 +09:00
tmk
00ec258e31 Created FAQ Build (markdown) 2015-01-14 09:15:50 +09:00
tmk
3c27d7b048 Updated FAQ (markdown) 2015-01-14 09:15:29 +09:00
tmk
28c9339859 Updated Home (markdown) 2015-01-14 09:13:36 +09:00
tmk
07baa1b65d Updated FAQ Keymap (markdown) 2015-01-14 09:11:36 +09:00
tmk
b33cd7d7ec Updated mbed cortex porting (markdown) 2015-01-14 07:03:23 +09:00
tmk
111593b6d8 Updated mbed cortex porting (markdown) 2015-01-14 07:03:11 +09:00
tmk
4785e6d228 Updated mbed cortex porting (markdown) 2015-01-14 07:02:26 +09:00
tmk
a94c683ab9 Updated FAQ Keymap (markdown) 2015-01-14 05:19:43 +09:00
tmk
f27207e807 Updated FAQ Keymap (markdown) 2015-01-14 05:16:09 +09:00
tmk
2f44de6240 Updated FAQ Keymap (markdown) 2015-01-14 05:15:42 +09:00
tmk
59c8a733e6 Updated FAQ Keymap (markdown) 2015-01-14 05:03:47 +09:00
tmk
2acb2f0937 Updated mbed cortex porting (markdown) 2014-12-29 20:30:46 -08:00
tmk
4b46263952 Updated mbed cortex porting (markdown) 2014-12-29 20:30:31 -08:00
tmk
48a3cbf9b3 Updated mbed cortex porting (markdown) 2014-12-29 20:19:32 -08:00
tmk
edfb9363dd Updated mbed cortex porting (markdown) 2014-12-29 20:18:04 -08:00
tmk
75cb446d36 Created mbed cortex porting (markdown) 2014-12-29 20:17:06 -08:00
tmk
464b9a80d4 Updated Home (markdown) 2014-12-29 20:15:33 -08:00
tmk
b105d83bce Updated FAQ (markdown) 2014-12-15 19:07:42 -08:00
tmk
69fe8cf232 Updated FAQ (markdown) 2014-11-26 21:06:32 -08:00
tmk
bf5638e511 Updated FAQ (markdown) 2014-11-26 20:17:46 -08:00
tmk
f7172ff5a6 Updated FAQ Keymap (markdown) 2014-11-26 18:13:26 -08:00
tmk
cca7b10727 Updated FAQ Keymap (markdown) 2014-11-26 18:12:44 -08:00
tmk
d4437d6694 Updated FAQ Keymap (markdown) 2014-11-26 18:12:07 -08:00
tmk
4178b00533 Updated FAQ Keymap (markdown) 2014-11-26 18:11:41 -08:00
tmk
686476fa93 Updated FAQ (markdown) 2014-11-26 17:42:52 -08:00
tmk
2a7bd276a4 Updated FAQ (markdown) 2014-11-26 17:41:59 -08:00
tmk
e40086b2fe Updated FAQ (markdown) 2014-11-26 17:41:40 -08:00
tmk
bdafdf1ef8 Updated FAQ (markdown) 2014-11-26 17:40:28 -08:00
tmk
083c77390a Created FAQ Keymap (markdown) 2014-11-26 17:40:02 -08:00
tmk
1793bfd096 Updated Home (markdown) 2014-11-26 17:38:54 -08:00
tmk
b129491366 Updated Home (markdown) 2014-11-26 17:38:39 -08:00
tmk
ae8ddde1cf Updated Home (markdown) 2014-11-26 17:35:24 -08:00
tmk
43f121497f Created HHKB Alt controller (markdown) 2014-11-23 19:07:09 -08:00
tmk
3d9d4bfe3e Updated Home (markdown) 2014-11-23 19:03:45 -08:00
tmk
67416629e3 Updated FAQ (markdown) 2014-11-16 22:24:54 -08:00
tmk
00a8847daf Updated FAQ (markdown) 2014-11-16 22:00:14 -08:00
tmk
c5dfee04af Updated FAQ (markdown) 2014-11-16 21:50:43 -08:00
tmk
e6d58d5ac2 Updated FAQ (markdown) 2014-11-16 21:49:31 -08:00
tmk
e52a7cf448 Updated FAQ (markdown) 2014-11-08 21:32:43 -08:00
tmk
9e51e54240 Updated FAQ (markdown) 2014-11-08 21:32:20 -08:00
tmk
fb3c7c0572 Updated FAQ (markdown) 2014-11-02 18:02:12 -08:00
tmk
b4eea94baa Updated FAQ (markdown) 2014-11-02 17:58:42 -08:00
tmk
f91c584a44 Updated FAQ (markdown) 2014-10-16 23:42:21 -07:00
tmk
7219c4a4b6 Updated FAQ (markdown) 2014-09-28 00:53:13 -07:00
tmk
6ec6c8017f Updated FAQ (markdown) 2014-09-28 00:44:31 -07:00
tmk
8daad815e8 Updated FAQ (markdown) 2014-09-28 00:41:36 -07:00
tmk
30bbfe92b3 Updated FAQ (markdown) 2014-06-19 21:14:25 -07:00
tmk
3c446334e9 Updated FAQ (markdown) 2014-06-19 21:12:04 -07:00
tmk
520ddc19a1 Updated FAQ (markdown) 2014-05-19 18:39:29 -07:00
tmk
f1ed69fa7b Updated FAQ (markdown) 2014-05-19 18:38:09 -07:00
tmk
b828fff788 Updated FAQ (markdown) 2014-05-16 16:26:25 -07:00
tmk
7fad7ddb0b Updated FAQ (markdown) 2014-05-14 12:38:02 -07:00
tmk
ea13eaf1c0 Updated FAQ (markdown) 2014-05-12 17:56:34 -07:00
tmk
50a763a460 Updated FAQ (markdown) 2014-05-12 17:56:12 -07:00
tmk
fa9ce5771f Updated FAQ (markdown) 2014-04-30 20:45:43 -07:00
tmk
b1a827aaa6 Updated FAQ (markdown) 2014-04-26 12:53:55 -07:00
tmk
62d5ca9b81 Updated Projects (markdown) 2014-04-25 21:13:36 -07:00
tmk
2dbd047aa5 Updated Home (markdown) 2014-04-25 20:38:27 -07:00
tmk
9893fac5c5 Created Projects (markdown) 2014-04-25 20:37:46 -07:00
tmk
22d1aeb409 Updated FAQ (markdown) 2014-04-21 18:11:45 -07:00
tmk
6fc76b224b Updated FAQ (markdown) 2014-04-21 18:10:48 -07:00
tmk
7963233140 Updated FAQ (markdown) 2014-04-14 16:16:06 -07:00
tmk
0f34b9fd44 Updated FAQ (markdown) 2014-04-14 15:31:02 -07:00
tmk
d3388d3468 Updated FAQ (markdown) 2014-04-11 19:32:25 -07:00
tmk
cecb912e53 Updated Compatible Microcontrollers (markdown) 2014-04-10 19:14:41 -07:00
tmk
2f0837bd6e Updated FAQ (markdown) 2014-03-25 08:01:56 -07:00
tmk
0e03275c40 Updated FAQ (markdown) 2014-03-25 08:01:30 -07:00
tmk
ae74a81356 Updated FAQ (markdown) 2014-03-25 08:00:41 -07:00
tmk
43669fb270 Updated FAQ (markdown) 2014-03-24 17:01:43 -07:00
tmk
01a218f36b Updated FAQ (markdown) 2014-03-16 13:39:50 -07:00
tmk
5383d37925 Updated FAQ (markdown) 2014-03-06 17:07:50 -08:00
tmk
10932b8f90 Updated FAQ (markdown) 2014-03-06 17:07:06 -08:00
tmk
a25df9432b Updated FAQ (markdown) 2014-03-06 17:04:09 -08:00
tmk
bf6d2b5ebd Updated FAQ (markdown) 2014-03-03 17:20:54 -08:00
tmk
700a77a0f3 Updated FAQ (markdown) 2014-03-03 17:17:50 -08:00
tmk
4464a288a1 Updated FAQ (markdown) 2014-03-03 17:16:27 -08:00
tmk
f893628865 Updated FAQ (markdown) 2014-03-03 15:17:00 -08:00
tmk
ab4f24a16a Updated FAQ (markdown) 2014-03-03 15:08:02 -08:00
tmk
fb94b97e48 Updated FAQ (markdown) 2014-03-02 22:16:28 -08:00
tmk
e7069410ff Updated FAQ (markdown) 2014-03-01 12:53:20 -08:00
tmk
cd7cba54fe Updated FAQ (markdown) 2014-03-01 12:34:51 -08:00
tmk
ef9902f5ed Updated FAQ (markdown) 2014-03-01 12:13:29 -08:00
tmk
51e37dc5cd Updated FAQ (markdown) 2014-03-01 12:12:59 -08:00
tmk
81055457fa Updated FAQ (markdown) 2014-02-28 18:09:22 -08:00
tmk
5e2f882230 Updated FAQ (markdown) 2014-02-28 18:07:46 -08:00
tmk
50fc1a5a5b Updated FAQ (markdown) 2014-02-28 17:44:30 -08:00
tmk
7a8e9cc136 Created FAQ (markdown) 2014-02-28 17:42:00 -08:00
tmk
1a0be5e750 Updated Home (markdown) 2014-02-28 17:23:32 -08:00
Thomas Russell Murphy
767690aa59 Adding link to the Compatible Microcontrollers list. 2014-01-25 18:11:37 -08:00
Thomas Russell Murphy
1f419424c4 Updated to confirm ATmega32U2 on a custom board. 2014-01-25 18:10:11 -08:00
tmk
444e7cc53b Updated Compatible Microcontrollers (markdown) 2013-11-17 16:39:10 -08:00
Thomas Russell Murphy
f427a6c6d8 Created page. Initial list is the ATmega32U4 from the Teensy. 2013-11-17 11:47:36 -08:00
tmk
b0365c7ac3 Initial Commit 2012-05-13 18:36:16 -07:00
1130 changed files with 52892 additions and 31537 deletions

7
.gitignore vendored
View File

@@ -1,5 +1,6 @@
.dep
*.o
*.bin
*.eep
*.elf
*.hex
@@ -21,6 +22,7 @@ quantum/version.h
.idea/
CMakeLists.txt
.DS_STORE
/util/wsl_downloaded
# Eclipse/PyCharm/Other IDE Settings
.cproject
@@ -32,3 +34,8 @@ CMakeLists.txt
util/Win_Check_Output.txt
.vscode
.stfolder
# ignore image files
*.png
*.jpg
*.gif

6
.gitmodules vendored
View File

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

View File

@@ -5,12 +5,10 @@ language: c
branches:
except:
- /^.*-automated-build$/
- /^[0-9]+\.[0-9]+\.[0-9]+/
env:
global:
- secure: vBTSL34BDPxDilKUuTXqU4CJ26Pv5hogD2nghatkxSQkI1/jbdnLj/DQdPUrMJFDIY6TK3AltsBx72MaMsLQ1JO/Ou24IeHINHXzUC1FlS9yQa48cpxnhX5kzXNyGs3oa0qaFbvnr7RgYRWtmD52n4bIZuSuW+xpBv05x2OCizdT2ZonH33nATaHGFasxROm4qYZ241VfzcUv766V6RVHgL4x9V08warugs+RENVkfzxxwhk3NmkrISabze0gSVJLHBPHxroZC6EUcf/ocobcuDrCwFqtEt90i7pNIAFUE7gZsN2uE75LmpzAWin21G7lLPcPL2k4FJVd8an1HiP2WmscJU6U89fOfMb2viObnKcCzebozBCmKGtHEuXZo9FcReOx49AnQSpmESJGs+q2dL/FApkTjQiyT4J6O5dJpoww0/r57Wx0cmmqjETKBb5rSgXM51Etk3wO09mvcPHsEwrT7qH8r9XWdyCDoEn7FCLX3/LYnf/D4SmZ633YPl5gv3v9XEwxR5+04akjgnvWDSNIaDbWBdxHNb7l4pMc+WR1bwCyMyA7KXj0RrftEGOrm9ZRLe6BkbT4cycA+j77nbPOMcyZChliV9pPQos+4TOJoTzcK2L8yWVoY409aDNVuAjdP6Yum0R2maBGl/etLmIMpJC35C5/lZ+dUNjJAM=
matrix:
- TARGET=all-keyboards AUTOGEN=true
- TARGET=test AUTOGEN=false
before_install:
- wget http://www.atmel.com/images/avr8-gnu-toolchain-3.5.4.1709-linux.any.x86_64.tar.gz
install:
@@ -19,7 +17,8 @@ install:
before_script:
- avr-gcc --version
script:
- make $TARGET AUTOGEN=$AUTOGEN
- make test AUTOGEN=false
- bash util/travis_build.sh
addons:
apt:
packages:
@@ -30,6 +29,11 @@ addons:
- libnewlib-arm-none-eabi
- diffutils
after_success:
if [ "$AUTOGEN" == "true" ]; then
bash util/travis_compiled_push.sh;
fi
bash util/travis_compiled_push.sh
notifications:
webhooks:
urls:
- https://webhooks.gitter.im/e/cca31de3d44b9adb617b
on_success: change # options: [always|never|change] default: always
on_failure: always # options: [always|never|change] default: always
on_start: never # options: [always|never|change] default: always

View File

@@ -1,8 +1,7 @@
FROM debian:jessie
MAINTAINER Erik Dasque <erik@frenchguys.com>
RUN apt-get update
RUN apt-get install --no-install-recommends -y build-essential \
RUN apt-get update && apt-get install --no-install-recommends -y build-essential \
gcc \
unzip \
wget \
@@ -15,10 +14,10 @@ RUN apt-get install --no-install-recommends -y build-essential \
gcc-arm-none-eabi \
binutils-arm-none-eabi \
libnewlib-arm-none-eabi \
git
RUN apt-get clean
RUN rm -rf /var/lib/apt/lists/*
git \
software-properties-common \
avrdude \
&& rm -rf /var/lib/apt/lists/*
ENV keyboard=ergodox
ENV subproject=ez
@@ -26,4 +25,4 @@ ENV keymap=default
VOLUME /qmk
WORKDIR /qmk
CMD make clean ; make keyboard=${keyboard} subproject=${subproject} keymap=${keymap}
CMD make clean; make;

View File

@@ -21,6 +21,8 @@ override SILENT := false
ON_ERROR := error_occurred=1
BREAK_ON_ERRORS = no
STARTING_MAKEFILE := $(firstword $(MAKEFILE_LIST))
ROOT_MAKEFILE := $(lastword $(MAKEFILE_LIST))
ROOT_DIR := $(dir $(ROOT_MAKEFILE))
@@ -417,7 +419,7 @@ define BUILD_TEST
MAKE_TARGET := $2
COMMAND := $1
MAKE_CMD := $$(MAKE) -r -R -C $(ROOT_DIR) -f build_test.mk $$(MAKE_TARGET)
MAKE_VARS := TEST=$$(TEST_NAME)
MAKE_VARS := TEST=$$(TEST_NAME) FULL_TESTS=$$(FULL_TESTS)
MAKE_MSG := $$(MSG_MAKE_TEST)
$$(eval $$(call BUILD))
ifneq ($$(MAKE_TARGET),clean)
@@ -462,20 +464,25 @@ endef
include $(ROOT_DIR)/message.mk
ifeq ($(strip $(BREAK_ON_ERRORS)), yes)
HANDLE_ERROR = exit 1
else
HANDLE_ERROR = echo $$error_occurred > $(ERROR_FILE)
endif
# The empty line is important here, as it will force a new shell to be created for each command
# Otherwise the command line will become too long with a lot of keyboards and keymaps
define RUN_COMMAND
+error_occurred=0;\
$(COMMAND_$(SILENT_MODE)_$(COMMAND))\
if [ $$error_occurred -gt 0 ]; then echo $$error_occurred > $(ERROR_FILE); fi;
if [ $$error_occurred -gt 0 ]; then $(HANDLE_ERROR); fi;
endef
define RUN_TEST
+error_occurred=0;\
$($(TEST)_COMMAND)\
if [ $$error_occurred -gt 0 ]; then echo $$error_occurred > $(ERROR_FILE); fi;
if [ $$error_occurred -gt 0 ]; then $(HANDLE_ERROR); fi;
endef
# Allow specifying just the subproject, in the keyboard directory, which will compile all keymaps
@@ -527,14 +534,22 @@ test: test-all
.PHONY: test-clean
test-clean: test-all-clean
ifdef SKIP_VERSION
SKIP_GIT := yes
endif
# Generate the version.h file
ifndef SKIP_GIT
GIT_VERSION := $(shell git describe --abbrev=6 --dirty --always --tags 2>/dev/null || date +"%Y-%m-%d-%H:%M:%S")
else
GIT_VERSION := NA
endif
ifndef SKIP_VERSION
BUILD_DATE := $(shell date +"%Y-%m-%d-%H:%M:%S")
$(shell echo '#define QMK_VERSION "$(GIT_VERSION)"' > $(ROOT_DIR)/quantum/version.h)
$(shell echo '#define QMK_BUILDDATE "$(BUILD_DATE)"' >> $(ROOT_DIR)/quantum/version.h)
else
BUILD_DATE := NA
endif
include $(ROOT_DIR)/testlist.mk

24
book.json Normal file
View File

@@ -0,0 +1,24 @@
{
"structure": {
"readme": "home.md",
"summary": "_summary.md"
},
"plugins" : ["toolbar", "edit-link", "anchors"],
"pluginsConfig": {
"edit-link": {
"base": "https://github.com/qmk/qmk_firmware/edit/master/docs",
"label": "Suggest an edit"
},
"toolbar": {
"buttons":
[
{
"label": "QMK Firmware",
"icon": "fa fa-github",
"url": "https://github.com/qmk/qmk_firmware"
}
]
}
},
"root": "./docs/"
}

30
build_full_test.mk Normal file
View File

@@ -0,0 +1,30 @@
# Copyright 2017 Fred Sundvik
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#include $(TMK_PATH)/protocol.mk
TEST_PATH=tests/$(TEST)
$(TEST)_SRC= \
$(TEST_PATH)/test.cpp \
$(TMK_COMMON_SRC) \
$(QUANTUM_SRC) \
tests/test_common/matrix.c \
tests/test_common/test_driver.cpp \
tests/test_common/keyboard_report_util.cpp \
tests/test_common/test_fixture.cpp
$(TEST)_DEFS=$(TMK_COMMON_DEFS)
$(TEST)_CONFIG=$(TEST_PATH)/config.h
VPATH+=$(TOP_DIR)/tests/test_common

View File

@@ -7,11 +7,11 @@ endif
include common.mk
ifneq ($(SUBPROJECT),)
TARGET ?= $(KEYBOARD)_$(SUBPROJECT)_$(KEYMAP)
KEYBOARD_OUTPUT := $(BUILD_DIR)/obj_$(KEYBOARD)_$(SUBPROJECT)
TARGET ?= $(KEYBOARD)_$(SUBPROJECT)_$(KEYMAP)
KEYBOARD_OUTPUT := $(BUILD_DIR)/obj_$(KEYBOARD)_$(SUBPROJECT)
else
TARGET ?= $(KEYBOARD)_$(KEYMAP)
KEYBOARD_OUTPUT := $(BUILD_DIR)/obj_$(KEYBOARD)
TARGET ?= $(KEYBOARD)_$(KEYMAP)
KEYBOARD_OUTPUT := $(BUILD_DIR)/obj_$(KEYBOARD)
endif
# Force expansion
@@ -20,70 +20,67 @@ TARGET := $(TARGET)
MASTER ?= left
ifdef master
MASTER = $(master)
MASTER = $(master)
endif
ifeq ($(MASTER),right)
OPT_DEFS += -DMASTER_IS_ON_RIGHT
else
ifneq ($(MASTER),left)
ifeq ($(MASTER),right)
OPT_DEFS += -DMASTER_IS_ON_RIGHT
else
ifneq ($(MASTER),left)
$(error MASTER does not have a valid value(left/right))
endif
endif
endif
KEYBOARD_PATH := keyboards/$(KEYBOARD)
KEYBOARD_C := $(KEYBOARD_PATH)/$(KEYBOARD).c
ifneq ("$(wildcard $(KEYBOARD_C))","")
include $(KEYBOARD_PATH)/rules.mk
else
else
$(error "$(KEYBOARD_C)" does not exist)
endif
ifneq ($(SUBPROJECT),)
SUBPROJECT_PATH := keyboards/$(KEYBOARD)/$(SUBPROJECT)
SUBPROJECT_C := $(SUBPROJECT_PATH)/$(SUBPROJECT).c
ifneq ("$(wildcard $(SUBPROJECT_C))","")
OPT_DEFS += -DSUBPROJECT_$(SUBPROJECT)
include $(SUBPROJECT_PATH)/rules.mk
else
else
$(error "$(SUBPROJECT_PATH)/$(SUBPROJECT).c" does not exist)
endif
endif
# We can assume a ChibiOS target When MCU_FAMILY is defined, since it's not used for LUFA
ifdef MCU_FAMILY
PLATFORM=CHIBIOS
PLATFORM=CHIBIOS
else
PLATFORM=AVR
PLATFORM=AVR
endif
ifeq ($(PLATFORM),CHIBIOS)
include $(TMK_PATH)/protocol/chibios.mk
include $(TMK_PATH)/chibios.mk
OPT_OS = chibios
ifneq ("$(wildcard $(SUBPROJECT_PATH)/bootloader_defs.h)","")
OPT_DEFS += -include $(SUBPROJECT_PATH)/bootloader_defs.h
else ifneq ("$(wildcard $(SUBPROJECT_PATH)/boards/$(BOARD)/bootloader_defs.h)","")
OPT_DEFS += -include $(SUBPROJECT_PATH)/boards/$(BOARD)/bootloader_defs.h
else ifneq ("$(wildcard $(KEYBOARD_PATH)/bootloader_defs.h)","")
OPT_DEFS += -include $(KEYBOARD_PATH)/bootloader_defs.h
else ifneq ("$(wildcard $(KEYBOARD_PATH)/boards/$(BOARD)/bootloader_defs.h)","")
OPT_DEFS += -include $(KEYBOARD_PATH)/boards/$(BOARD)/bootloader_defs.h
endif
include $(TMK_PATH)/protocol/chibios.mk
include $(TMK_PATH)/chibios.mk
OPT_OS = chibios
ifneq ("$(wildcard $(SUBPROJECT_PATH)/bootloader_defs.h)","")
OPT_DEFS += -include $(SUBPROJECT_PATH)/bootloader_defs.h
else ifneq ("$(wildcard $(SUBPROJECT_PATH)/boards/$(BOARD)/bootloader_defs.h)","")
OPT_DEFS += -include $(SUBPROJECT_PATH)/boards/$(BOARD)/bootloader_defs.h
else ifneq ("$(wildcard $(KEYBOARD_PATH)/bootloader_defs.h)","")
OPT_DEFS += -include $(KEYBOARD_PATH)/bootloader_defs.h
else ifneq ("$(wildcard $(KEYBOARD_PATH)/boards/$(BOARD)/bootloader_defs.h)","")
OPT_DEFS += -include $(KEYBOARD_PATH)/boards/$(BOARD)/bootloader_defs.h
endif
endif
CONFIG_H = $(KEYBOARD_PATH)/config.h
ifneq ($(SUBPROJECT),)
ifneq ("$(wildcard $(SUBPROJECT_C))","")
CONFIG_H = $(SUBPROJECT_PATH)/config.h
endif
ifneq ("$(wildcard $(SUBPROJECT_C))","")
CONFIG_H = $(SUBPROJECT_PATH)/config.h
endif
endif
# Save the defines and includes here, so we don't include any keymap specific ones
# Save the defines and includes here, so we don't include any keymap specific ones
PROJECT_DEFS := $(OPT_DEFS)
PROJECT_INC := $(VPATH) $(EXTRAINCDIRS) $(SUBPROJECT_PATH) $(KEYBOARD_PATH)
PROJECT_CONFIG := $(CONFIG_H)
@@ -112,94 +109,16 @@ KEYMAP_OUTPUT := $(BUILD_DIR)/obj_$(TARGET)
ifneq ("$(wildcard $(KEYMAP_PATH)/config.h)","")
CONFIG_H = $(KEYMAP_PATH)/config.h
CONFIG_H = $(KEYMAP_PATH)/config.h
endif
# # project specific files
SRC += $(KEYBOARD_C) \
$(KEYMAP_C) \
$(QUANTUM_DIR)/quantum.c \
$(QUANTUM_DIR)/keymap_common.c \
$(QUANTUM_DIR)/keycode_config.c \
$(QUANTUM_DIR)/process_keycode/process_leader.c
$(KEYMAP_C) \
$(QUANTUM_SRC)
ifneq ($(SUBPROJECT),)
SRC += $(SUBPROJECT_C)
endif
ifndef CUSTOM_MATRIX
SRC += $(QUANTUM_DIR)/matrix.c
endif
ifeq ($(strip $(API_SYSEX_ENABLE)), yes)
OPT_DEFS += -DAPI_SYSEX_ENABLE
SRC += $(QUANTUM_DIR)/api/api_sysex.c
OPT_DEFS += -DAPI_ENABLE
SRC += $(QUANTUM_DIR)/api.c
MIDI_ENABLE=yes
endif
ifeq ($(strip $(MIDI_ENABLE)), yes)
OPT_DEFS += -DMIDI_ENABLE
SRC += $(QUANTUM_DIR)/process_keycode/process_midi.c
endif
ifeq ($(strip $(VIRTSER_ENABLE)), yes)
OPT_DEFS += -DVIRTSER_ENABLE
endif
ifeq ($(strip $(AUDIO_ENABLE)), yes)
OPT_DEFS += -DAUDIO_ENABLE
SRC += $(QUANTUM_DIR)/process_keycode/process_music.c
SRC += $(QUANTUM_DIR)/audio/audio.c
SRC += $(QUANTUM_DIR)/audio/voices.c
SRC += $(QUANTUM_DIR)/audio/luts.c
endif
ifeq ($(strip $(UCIS_ENABLE)), yes)
OPT_DEFS += -DUCIS_ENABLE
UNICODE_ENABLE = yes
endif
ifeq ($(strip $(UNICODEMAP_ENABLE)), yes)
OPT_DEFS += -DUNICODEMAP_ENABLE
UNICODE_ENABLE = yes
endif
ifeq ($(strip $(UNICODE_ENABLE)), yes)
OPT_DEFS += -DUNICODE_ENABLE
SRC += $(QUANTUM_DIR)/process_keycode/process_unicode.c
endif
ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
OPT_DEFS += -DRGBLIGHT_ENABLE
SRC += $(QUANTUM_DIR)/light_ws2812.c
SRC += $(QUANTUM_DIR)/rgblight.c
endif
ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
OPT_DEFS += -DTAP_DANCE_ENABLE
SRC += $(QUANTUM_DIR)/process_keycode/process_tap_dance.c
endif
ifeq ($(strip $(PRINTING_ENABLE)), yes)
OPT_DEFS += -DPRINTING_ENABLE
SRC += $(QUANTUM_DIR)/process_keycode/process_printer.c
SRC += $(TMK_DIR)/protocol/serial_uart.c
endif
ifeq ($(strip $(SERIAL_LINK_ENABLE)), yes)
SRC += $(patsubst $(QUANTUM_PATH)/%,%,$(SERIAL_SRC))
OPT_DEFS += $(SERIAL_DEFS)
VAPTH += $(SERIAL_PATH)
endif
ifneq ($(strip $(VARIABLE_TRACE)),)
SRC += $(QUANTUM_DIR)/variable_trace.c
OPT_DEFS += -DNUM_TRACED_VARIABLES=$(strip $(VARIABLE_TRACE))
ifneq ($(strip $(MAX_VARIABLE_TRACE_SIZE)),)
OPT_DEFS += -DMAX_VARIABLE_TRACE_SIZE=$(strip $(MAX_VARIABLE_TRACE_SIZE))
endif
SRC += $(SUBPROJECT_C)
endif
# Optimize size but this may cause error "relocation truncated to fit"
@@ -208,41 +127,42 @@ endif
# Search Path
VPATH += $(KEYMAP_PATH)
ifneq ($(SUBPROJECT),)
VPATH += $(SUBPROJECT_PATH)
VPATH += $(SUBPROJECT_PATH)
endif
VPATH += $(KEYBOARD_PATH)
VPATH += $(COMMON_VPATH)
include common_features.mk
include $(TMK_PATH)/protocol.mk
include $(TMK_PATH)/common.mk
SRC += $(TMK_COMMON_SRC)
OPT_DEFS += $(TMK_COMMON_DEFS)
EXTRALDFLAGS += $(TMK_COMMON_LDFLAGS)
ifeq ($(PLATFORM),AVR)
ifeq ($(strip $(PROTOCOL)), VUSB)
include $(TMK_PATH)/protocol/vusb.mk
include $(TMK_PATH)/protocol/vusb.mk
else
include $(TMK_PATH)/protocol/lufa.mk
include $(TMK_PATH)/protocol/lufa.mk
endif
include $(TMK_PATH)/avr.mk
include $(TMK_PATH)/avr.mk
endif
ifeq ($(strip $(VISUALIZER_ENABLE)), yes)
VISUALIZER_DIR = $(QUANTUM_DIR)/visualizer
VISUALIZER_PATH = $(QUANTUM_PATH)/visualizer
include $(VISUALIZER_PATH)/visualizer.mk
VISUALIZER_DIR = $(QUANTUM_DIR)/visualizer
VISUALIZER_PATH = $(QUANTUM_PATH)/visualizer
include $(VISUALIZER_PATH)/visualizer.mk
endif
OUTPUTS := $(KEYMAP_OUTPUT) $(KEYBOARD_OUTPUT)
$(KEYMAP_OUTPUT)_SRC := $(SRC)
$(KEYMAP_OUTPUT)_DEFS := $(OPT_DEFS) -DQMK_KEYBOARD=\"$(KEYBOARD)\" -DQMK_KEYMAP=\"$(KEYMAP)\"
$(KEYMAP_OUTPUT)_DEFS := $(OPT_DEFS) $(GFXDEFS) -DQMK_KEYBOARD=\"$(KEYBOARD)\" -DQMK_KEYMAP=\"$(KEYMAP)\"
$(KEYMAP_OUTPUT)_INC := $(VPATH) $(EXTRAINCDIRS)
$(KEYMAP_OUTPUT)_CONFIG := $(CONFIG_H)
$(KEYBOARD_OUTPUT)_SRC := $(CHIBISRC)
$(KEYBOARD_OUTPUT)_DEFS := $(PROJECT_DEFS)
$(KEYBOARD_OUTPUT)_INC := $(PROJECT_INC)
$(KEYBOARD_OUTPUT)_SRC := $(CHIBISRC) $(GFXSRC)
$(KEYBOARD_OUTPUT)_DEFS := $(PROJECT_DEFS) $(GFXDEFS)
$(KEYBOARD_OUTPUT)_INC := $(PROJECT_INC) $(GFXINC)
$(KEYBOARD_OUTPUT)_CONFIG := $(PROJECT_CONFIG)
# Default target.

View File

@@ -40,13 +40,23 @@ VPATH +=\
all: elf
VPATH += $(COMMON_VPATH)
PLATFORM:=TEST
ifneq ($(filter $(FULL_TESTS),$(TEST)),)
include tests/$(TEST)/rules.mk
endif
include common_features.mk
include $(TMK_PATH)/common.mk
include $(QUANTUM_PATH)/serial_link/tests/rules.mk
ifneq ($(filter $(FULL_TESTS),$(TEST)),)
include build_full_test.mk
endif
$(TEST_OBJ)/$(TEST)_SRC := $($(TEST)_SRC)
$(TEST_OBJ)/$(TEST)_INC := $($(TEST)_INC) $(VPATH) $(GTEST_INC)
$(TEST_OBJ)/$(TEST)_DEFS := $($(TEST)_DEFS)
$(TEST_OBJ)/$(TEST)_CONFIG := $($(TEST)_CONFIG)
include $(TMK_PATH)/native.mk
include $(TMK_PATH)/rules.mk

View File

@@ -11,17 +11,10 @@ QUANTUM_PATH = $(TOP_DIR)/$(QUANTUM_DIR)
BUILD_DIR := $(TOP_DIR)/.build
SERIAL_DIR := $(QUANTUM_DIR)/serial_link
SERIAL_PATH := $(QUANTUM_PATH)/serial_link
SERIAL_SRC := $(wildcard $(SERIAL_PATH)/protocol/*.c)
SERIAL_SRC += $(wildcard $(SERIAL_PATH)/system/*.c)
SERIAL_DEFS += -DSERIAL_LINK_ENABLE
COMMON_VPATH := $(TOP_DIR)
COMMON_VPATH += $(TMK_PATH)
COMMON_VPATH += $(QUANTUM_PATH)
COMMON_VPATH += $(QUANTUM_PATH)/keymap_extras
COMMON_VPATH += $(QUANTUM_PATH)/audio
COMMON_VPATH += $(QUANTUM_PATH)/process_keycode
COMMON_VPATH += $(QUANTUM_PATH)/api
COMMON_VPATH += $(SERIAL_PATH)
COMMON_VPATH += $(QUANTUM_PATH)/api

153
common_features.mk Normal file
View File

@@ -0,0 +1,153 @@
# Copyright 2017 Fred Sundvik
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
SERIAL_DIR := $(QUANTUM_DIR)/serial_link
SERIAL_PATH := $(QUANTUM_PATH)/serial_link
SERIAL_SRC := $(wildcard $(SERIAL_PATH)/protocol/*.c)
SERIAL_SRC += $(wildcard $(SERIAL_PATH)/system/*.c)
SERIAL_DEFS += -DSERIAL_LINK_ENABLE
COMMON_VPATH += $(SERIAL_PATH)
ifeq ($(strip $(API_SYSEX_ENABLE)), yes)
OPT_DEFS += -DAPI_SYSEX_ENABLE
SRC += $(QUANTUM_DIR)/api/api_sysex.c
OPT_DEFS += -DAPI_ENABLE
SRC += $(QUANTUM_DIR)/api.c
MIDI_ENABLE=yes
endif
MUSIC_ENABLE := 0
ifeq ($(strip $(AUDIO_ENABLE)), yes)
OPT_DEFS += -DAUDIO_ENABLE
MUSIC_ENABLE := 1
SRC += $(QUANTUM_DIR)/process_keycode/process_audio.c
SRC += $(QUANTUM_DIR)/audio/audio.c
SRC += $(QUANTUM_DIR)/audio/voices.c
SRC += $(QUANTUM_DIR)/audio/luts.c
endif
ifeq ($(strip $(MIDI_ENABLE)), yes)
OPT_DEFS += -DMIDI_ENABLE
MUSIC_ENABLE := 1
SRC += $(QUANTUM_DIR)/process_keycode/process_midi.c
endif
ifeq ($(MUSIC_ENABLE), 1)
SRC += $(QUANTUM_DIR)/process_keycode/process_music.c
endif
ifeq ($(strip $(COMBO_ENABLE)), yes)
OPT_DEFS += -DCOMBO_ENABLE
SRC += $(QUANTUM_DIR)/process_keycode/process_combo.c
endif
ifeq ($(strip $(VIRTSER_ENABLE)), yes)
OPT_DEFS += -DVIRTSER_ENABLE
endif
ifeq ($(strip $(FAUXCLICKY_ENABLE)), yes)
OPT_DEFS += -DFAUXCLICKY_ENABLE
SRC += $(QUANTUM_DIR)/fauxclicky.c
endif
ifeq ($(strip $(UCIS_ENABLE)), yes)
OPT_DEFS += -DUCIS_ENABLE
UNICODE_COMMON = yes
SRC += $(QUANTUM_DIR)/process_keycode/process_ucis.c
endif
ifeq ($(strip $(UNICODEMAP_ENABLE)), yes)
OPT_DEFS += -DUNICODEMAP_ENABLE
UNICODE_COMMON = yes
SRC += $(QUANTUM_DIR)/process_keycode/process_unicodemap.c
endif
ifeq ($(strip $(UNICODE_ENABLE)), yes)
OPT_DEFS += -DUNICODE_ENABLE
UNICODE_COMMON = yes
SRC += $(QUANTUM_DIR)/process_keycode/process_unicode.c
endif
ifeq ($(strip $(UNICODE_COMMON)), yes)
SRC += $(QUANTUM_DIR)/process_keycode/process_unicode_common.c
endif
ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
OPT_DEFS += -DRGBLIGHT_ENABLE
SRC += $(QUANTUM_DIR)/light_ws2812.c
SRC += $(QUANTUM_DIR)/rgblight.c
CIE1931_CURVE = yes
LED_BREATHING_TABLE = yes
endif
ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
OPT_DEFS += -DTAP_DANCE_ENABLE
SRC += $(QUANTUM_DIR)/process_keycode/process_tap_dance.c
endif
ifeq ($(strip $(PRINTING_ENABLE)), yes)
OPT_DEFS += -DPRINTING_ENABLE
SRC += $(QUANTUM_DIR)/process_keycode/process_printer.c
SRC += $(TMK_DIR)/protocol/serial_uart.c
endif
ifeq ($(strip $(SERIAL_LINK_ENABLE)), yes)
SRC += $(patsubst $(QUANTUM_PATH)/%,%,$(SERIAL_SRC))
OPT_DEFS += $(SERIAL_DEFS)
VAPTH += $(SERIAL_PATH)
endif
ifneq ($(strip $(VARIABLE_TRACE)),)
SRC += $(QUANTUM_DIR)/variable_trace.c
OPT_DEFS += -DNUM_TRACED_VARIABLES=$(strip $(VARIABLE_TRACE))
ifneq ($(strip $(MAX_VARIABLE_TRACE_SIZE)),)
OPT_DEFS += -DMAX_VARIABLE_TRACE_SIZE=$(strip $(MAX_VARIABLE_TRACE_SIZE))
endif
endif
ifeq ($(strip $(LCD_ENABLE)), yes)
CIE1931_CURVE = yes
endif
ifeq ($(strip $(BACKLIGHT_ENABLE)), yes)
ifeq ($(strip $(VISUALIZER_ENABLE)), yes)
CIE1931_CURVE = yes
endif
endif
ifeq ($(strip $(CIE1931_CURVE)), yes)
OPT_DEFS += -DUSE_CIE1931_CURVE
LED_TABLES = yes
endif
ifeq ($(strip $(LED_BREATHING_TABLE)), yes)
OPT_DEFS += -DUSE_LED_BREATHING_TABLE
LED_TABLES = yes
endif
ifeq ($(strip $(LED_TABLES)), yes)
SRC += $(QUANTUM_DIR)/led_tables.c
endif
QUANTUM_SRC:= \
$(QUANTUM_DIR)/quantum.c \
$(QUANTUM_DIR)/keymap_common.c \
$(QUANTUM_DIR)/keycode_config.c \
$(QUANTUM_DIR)/process_keycode/process_leader.c
ifndef CUSTOM_MATRIX
QUANTUM_SRC += $(QUANTUM_DIR)/matrix.c
endif

View File

@@ -1,339 +0,0 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.

View File

@@ -1,674 +0,0 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
<program> Copyright (C) <year> <name of author>
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<http://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<http://www.gnu.org/philosophy/why-not-lgpl.html>.

28
docs/_summary.md Normal file
View File

@@ -0,0 +1,28 @@
### Getting started
* [Introduction](home.md)
* [QMK Overview](qmk_overview.md)
* [Build Environment Setup](build_environment_setup.md)
### Making a keymap
* [Keymap overview](keymap.md)
* [Custom Quantum Functions](custom_quantum_functions.md)
* [Keycodes](keycodes.md)
* [Layer switching](key_functions.md)
* [Leader Key](leader_key.md)
* [Macros](macros.md)
* [Dynamic Macros](dynamic_macros.md)
* [Space Cadet](space_cadet_shift.md)
* [Tap Dance](tap_dance.md)
* [Mouse keys](mouse_keys.md)
* [FAQ: Creating a Keymap](faq_keymap.md)
* [FAQ: Compiling QMK](faq_build.md)
### For hardware makers and modders
* [Modding your keyboard](modding_your_keyboard.md)
* [Porting your keyboard to QMK](porting_your_keyboard_to_qmk.md)
* [Adding features to QMK](adding_features_to_qmk.md)
### Other topics
* [General FAQ](faq.md)
* [Differences from TMK](differences_from_tmk.md)

View File

@@ -0,0 +1,7 @@
If you have an idea for a custom feature or extra hardware connection, we'd love to accept it into QMK! These are generally done via [pull request](https://github.com/qmk/qmk_firmware/pulls) after forking, and here are some things to keep in mind when creating one:
* **Disable by default** - memory is a pretty limited on most chips QMK supports, and it's important that current keymaps aren't broken, so please allow your feature to be turned **on**, rather than being turned off. If you think it should be on by default, or reduces the size of the code, [open an issue](https://github.com/qmk/qmk_firmware/issues) for everyone to discuss it!
* **Compile locally before submitting** - hopefully this one is obvious, but things need to compile! Our Travis system will catch any issues, but it's generally faster for you to compile a few keyboards locally instead of waiting for the results to come back.
* **Consider subprojects and different chip-bases** - there are several keyboards that have subprojects that have allow for slightly different configurations, and even different chip-bases. Try to make a feature supported in ARM and AVR, or automatically disabled in one that doesn't work.
* **Explain your feature** - submitting a markdown write-up of what your feature does with your PR may be needed, and it will allow a collaborator to easily copy it into the wiki for documentation (after proofing and editing).
* **Don't refactor code** - to maintain a clear vision of how things are laid out in QMK, we try to plan out refactors in-depth, and have a collaborator make the changes. If you have an idea for refactoring, or suggestions, [open an issue](https://github.com/qmk/qmk_firmware/issues).

View File

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

View File

@@ -0,0 +1,119 @@
### Windows 10
#### Creators Update
If you have Windows 10 with Creators Update or later, you can build and flash the firmware directly. Before the Creators Update, only building was possible. If you don't have it yet or if are unsure, follow [these instructions](https://support.microsoft.com/en-us/instantanswers/d4efb316-79f0-1aa1-9ef3-dcada78f3fa0/get-the-windows-10-creators-update).
#### Windows Subsystem for Linux
In addition to the Creators Update, you need Windows 10 Subystem for Linux, so install it following [these instructions](http://www.howtogeek.com/249966/how-to-install-and-use-the-linux-bash-shell-on-windows-10/). If you already have the Windows 10 Subsystem for Linux from the Anniversary update it's recommended that you [upgrade](https://betanews.com/2017/04/14/upgrade-windows-subsystem-for-linux/) it to 16.04LTS, because some keyboards don't compile with the toolchains included in 14.04LTS. Note that you need to know what your are doing if you chose the `sudo do-release-upgrade` method.
#### Git
If you already have cloned the repository on your Windows file system you can ignore this section.
You will need to clone the repository to your Windows file system using the normal Git for Windows and **not** the WSL Git. So if you haven't installed Git before, [download](https://git-scm.com/download/win) and install it. Then [set it up](https://git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup), it's important that you setup the e-mail and user name, especially if you are planning to contribute.
Once Git is installed, open the Git bash command and change the directory to where you want to clone QMK, note that you have to use forward slashes, and that your c drive is accessed like this `/c/path/to/where/you/want/to/go`. Then run `git clone --recurse-submodules https://github.com/qmk/qmk_firmware`, this will create a new folder `qmk_firmware` as a subfolder of the current one.
#### Toolchain setup
The Toolchain setup is done through the Windows Subsystem for Linux, and the process is fully automated. If you want to do everything manually, there are no other instructions than the scripts themselves, but you can always open issues and ask for more information.
1. Open "Bash On Ubuntu On Windows" from the start menu.
2. Go to the directory where you cloned `qmk_firmware`. Note that the paths start with `/mnt/` in the WSL, so you have to write for example `cd /mnt/c/path/to/qmk_firmware`.
3. Run `util/wsl_install.sh` and follow the on-screen instructions.
4. Close the Bash command window, and re-open it.
5. You are ready to compile and flash the firmware!
#### Some important things to keep in mind
* You can run `util/wsl_install.sh` again to get all the newest updates.
* Your QMK repository need to be on a Windows file system path, since WSL can't run executables outside it.
* The WSL Git is **not** compatible with the Windows Git, so use the Windows Git Bash or a windows Git GUI for all Git operations
* You can edit files either inside WSL or normally using Windows, but note that if you edit makefiles or shell scripts, make sure you are using an editor that saves the files with Unix line endings. Otherwise the compilation might not work.
### Windows (Vista and later)
1. If you have ever installed WinAVR, uninstall it.
2. Install [MHV AVR Tools](https://infernoembedded.com/sites/default/files/project/MHV_AVR_Tools_20131101.exe). Disable smatch, but **be sure to leave the option to add the tools to the PATH checked**.
3. If you are going to flash Infinity based keyboards you will need to install dfu-util, refer to the instructions by [Input Club](https://github.com/kiibohd/controller/wiki/Loading-DFU-Firmware).
4. Install [MinGW](https://sourceforge.net/projects/mingw/files/Installer/mingw-get-setup.exe/download). During installation, uncheck the option to install a graphical user interface. **DO NOT change the default installation folder.** The scripts depend on the default location.
5. Clone this repository. [This link will download it as a zip file, which you'll need to extract.](https://github.com/qmk/qmk_firmware/archive/master.zip) Open the extracted folder in Windows Explorer.
6. Open the `\util` folder.
7. Double-click on the `1-setup-path-win` batch script to run it. You'll need to accept a User Account Control prompt. Press the spacebar to dismiss the success message in the command prompt that pops up.
8. Right-click on the `2-setup-environment-win` batch script, select "Run as administrator", and accept the User Account Control prompt. This part may take a couple of minutes, and you'll need to approve a driver installation, but once it finishes, your environment is complete!
If you have trouble and want to ask for help, it is useful to generate a *Win_Check_Output.txt* file by running `Win_Check.bat` in the `\util` folder.
### Mac
If you're using [homebrew,](http://brew.sh/) you can use the following commands:
brew tap osx-cross/avr
brew install avr-libc
brew install dfu-programmer
This is the recommended method. If you don't have homebrew, [install it!](http://brew.sh/) It's very much worth it for anyone who works in the command line. Note that the `make` and `make install` portion during the homebrew installation of avr-libc can take over 20 minutes and exhibit high CPU usage.
You can also try these instructions:
1. Install Xcode from the App Store.
2. Install the Command Line Tools from `Xcode->Preferences->Downloads`.
3. Install [DFU-Programmer](https://dfu-programmer.github.io/).
If you are going to flash Infinity based keyboards you will also need dfu-util
brew install dfu-util
### Linux
To ensure you are always up to date, you can just run `sudo util/install_dependencies.sh`. That should always install all the dependencies needed. **This will run `apt-get upgrade`.**
You can also install things manually, but this documentation might not be always up to date with all requirements.
The current requirements are the following, but not all might be needed depending on what you do. Also note that some systems might not have all the dependencies available as packages, or they might be named differently.
```
build-essential
gcc
unzip
wget
zip
gcc-avr
binutils-avr
avr-libc
dfu-programmer
dfu-util
gcc-arm-none-eabi
binutils-arm-none-eabi
libnewlib-arm-none-eabi
git
```
Install the dependencies with your favorite package manager.
Debian/Ubuntu example:
sudo apt-get update
sudo apt-get install gcc unzip wget zip gcc-avr binutils-avr avr-libc dfu-programmer dfu-util gcc-arm-none-eabi binutils-arm-none-eabi libnewlib-arm-none-eabi
### Docker
If this is a bit complex for you, Docker might be the turn-key solution you need. After installing [Docker](https://www.docker.com/products/docker), run the following command at the root of the QMK folder to build a keyboard/keymap:
```bash
# You'll run this every time you want to build a keymap
# modify the keymap and keyboard assigment to compile what you want
# defaults are ergodox/default
docker run -e keymap=gwen -e subproject=ez -e keyboard=ergodox --rm -v $('pwd'):/qmk:rw edasque/qmk_firmware
# On windows docker seems to have issue with VOLUME tag in Dockerfile, and $('pwd') won't print a windows compliant path, use full path instead like this
docker run -e keymap=default -e subproject=ez -e keyboard=ergobox --rm -v D:/Users/Sacapuces/Documents/Repositories/qmk:/qmk:rw edasque/qmk_firmware
```
This will compile the targeted keyboard/keymap and leave it in your QMK directory for you to flash.
### Vagrant
If you have any problems building the firmware, you can try using a tool called Vagrant. It will set up a virtual computer with a known configuration that's ready-to-go for firmware building. OLKB does NOT host the files for this virtual computer. Details on how to set up Vagrant are in the [vagrant guide](vagrant_guide.md).
## Verify Your Installation
1. If you haven't already, obtain this repository ([https://github.com/qmk/qmk_firmware](https://github.com/qmk/qmk_firmware)). You can either download it as a zip file and extract it, or clone it using the command line tool git or the Github Desktop application.
2. Open up a terminal or command prompt and navigate to the `qmk_firmware` folder using the `cd` command. The command prompt will typically open to your home directory. If, for example, you cloned the repository to your Documents folder, then you would type `cd Documents/qmk_firmware`. If you extracted the file from a zip, then it may be named `qmk_firmware-master` instead.
3. To confirm that you're in the correct location, you can display the contents of your current folder using the `dir` command on Windows, or the `ls` command on Linux or Mac. You should see several files, including `readme.md` and a `quantum` folder. From here, you need to navigate to the appropriate folder under `keyboards/`. For example, if you're building for a Planck, run `cd keyboards/planck`.
4. Once you're in the correct keyboard-specific folder, run the `make` command. This should output a lot of information about the build process. More information about the `make` command can be found below.

View File

@@ -35,7 +35,7 @@ Debian/Ubuntu example:
sudo apt-get install gcc-avr avr-libc dfu-programmer
### Vagrant
If you have any problems building the firmware, you can try using a tool called Vagrant. It will set up a virtual computer with a known configuration that's ready-to-go for firmware building. OLKB does NOT host the files for this virtual computer. Details on how to set up Vagrant are in the [VAGRANT_GUIDE file](VAGRANT_GUIDE.md).
If you have any problems building the firmware, you can try using a tool called Vagrant. It will set up a virtual computer with a known configuration that's ready-to-go for firmware building. OLKB does NOT host the files for this virtual computer. Details on how to set up Vagrant are in the [vagrant guide](vagrant_guide.md).
## Verify Your Installation
1. If you haven't already, obtain this repository ([https://github.com/qmk/qmk_firmware](https://github.com/qmk/qmk_firmware)). You can either download it as a zip file and extract it, or clone it using the command line tool git or the Github Desktop application.
@@ -96,7 +96,7 @@ The keyboard `config.h` is included only if the keymap one doesn't exist. The fo
```
#undef MY_SETTING
#define MY_SETTING 4
```c
```
For a value of `4` for this imaginary setting. So we `undef` it first, then `define` it.

View File

@@ -1,7 +1,7 @@
Build Firmware and Program Controller
=====================================
## This guide may be out-dated - use doc/BUILD_GUIDE.md instead
## This guide may be out-dated - use [build_guide.md](build_guide.md) instead
Download and Install
--------------------

View File

@@ -0,0 +1,25 @@
# Atmel AVR
QMK should run on any Atmel AVR processor with enough Flash. It has been tested on the following:
* ATmega32U4 ([PJRC Teensy 2.0](http://www.pjrc.com/teensy/))
* AT90USB1286 ([PJRC Teensy++ 2.0](http://www.pjrc.com/teensy/))
* AT90USB1287 ([Atmel USBKEY](http://www.atmel.com/tools/AT90USBKEY.aspx))
* ATmega168P with using [V-USB](http://www.obdev.at/products/vusb/index.html)
* ATmega328P with using [V-USB](http://www.obdev.at/products/vusb/index.html)
* ATmega32U2
* AT90USB1286, 646, 647 should work
* AT90USB162 testing...
NOTE: To enable full features of firmware you'll need 32KB flash size.
Please add any tested microcontrollers to this list.
# ARM
You can also use any ARM processor that [ChibiOS](http://www.chibios.org) supports. The following processors have been tested:
* [Kinetis MKL26Z64](http://www.nxp.com/products/microcontrollers-and-processors/arm-processors/kinetis-cortex-m-mcus/l-series-ultra-low-power-m0-plus/kinetis-kl2x-48-mhz-usb-ultra-low-power-microcontrollers-mcus-based-on-arm-cortex-m0-plus-core:KL2x)
* [Kinetis MK20DX128](http://www.nxp.com/assets/documents/data/en/data-sheets/K20P64M50SF0.pdf)
* [Kinetis MK20DX128](http://www.nxp.com/assets/documents/data/en/data-sheets/K20P64M50SF0.pdf)
* [Kinetis MK20DX256](http://www.nxp.com/products/microcontrollers-and-processors/arm-processors/kinetis-cortex-m-mcus/k-series-performance-m4/k2x-usb/kinetis-k20-72-mhz-full-speed-usb-mixed-signal-integration-microcontrollers-mcus-based-on-arm-cortex-m4-core:K20_72)

View File

@@ -0,0 +1,123 @@
A custom keyboard is about more than sending button presses to your computer. QMK has designed hooks to allow you to inject code, override functionality, and otherwise customize how your keyboard responds in different situations.
## A Word on Keyboards vs Keymap
We have structured QMK as a hierarchy:
* Core (`_quantum`)
* Keyboard/Revision (`_kb`)
* Keymap (`_user`)
Each of the functions described below can be defined with a `_kb()` suffix or an `_user()` suffix. We intend for you to use the `_kb()` suffix at the Keyboard/Revision level, while the `_user()` suffix should be used at the Keymap level.
When defining functions at the Keyboard/Revision level it is important that your `_kb()` implementation call `_user()` before executing anything else- otherwise the keymap level function will never be called.
## Matrix Initialization Code
* Keyboard/Revision: `void matrix_init_kb(void)`
* Keymap: `void matrix_init_user(void)`
This function gets called when the matrix is initiated. You should use this function to initialize any custom hardware you may have, such as speakers, LED drivers, or other features which need to be setup after the keyboard powers on.
### Example
```
void matrix_init_kb(void) {
// put your keyboard start-up code here
// runs once when the firmware starts up
matrix_init_user();
// JTAG disable for PORT F. write JTD bit twice within four cycles.
MCUCR |= (1<<JTD);
MCUCR |= (1<<JTD);
// * Set our LED pins as output
DDRB |= (1<<0);
DDRB |= (1<<1);
DDRB |= (1<<2);
DDRB |= (1<<3);
DDRB |= (1<<4);
}
```
## Matrix Scanning Code
* Keyboard/Revision: `void matrix_scan_kb(void)`
* Keymap: `void matrix_scan_user(void)`
This function gets called at every matrix scan, which is basically as often as the MCU can handle. Be careful what you put here, as it will get run a lot.
You should use this function if you need custom matrix scanning code. It can also be used for custom status output (such as LED's or a display) or other functionality that you want to trigger regularly even when the user isn't typing.
## Hook Into Key Presses
* Keyboard/Revision: `bool process_record_kb(uint16_t keycode, keyrecord_t *record)`
* Keymap: `bool process_record_user(uint16_t keycode, keyrecord_t *record)`
This function gets called every time a key is pressed or released. This is particularly useful when defining custom keys or overriding the behavior of existing keys.
The return value is whether or not QMK should continue processing the keycode - returning `false` stops the execution.
The `keycode` variable is whatever is defined in your keymap, eg `MO(1)`, `KC_L`, etc. and can be switch-cased to execute code whenever a particular code is pressed.
The `record` variable contains infomation about the actual press:
```
keyrecord_t record {
+-keyevent_t event {
| +-keypos_t key {
| | +-uint8_t col
| | +-uint8_t row
| | }
| +-bool pressed
| +-uint16_t time
| }
}
```
The conditional `if (record->event.pressed)` can tell if the key is being pressed or released, and you can execute code based on that.
## LED Control
* Keyboard/Revision: `void led_set_kb(uint8_t usb_led)`
* Keymap: `void led_set_user(uint8_t usb_led)`
This allows you to control the 5 LED's defined as part of the USB Keyboard spec. It will be called when the state of one of those 5 LEDs changes.
* `USB_LED_NUM_LOCK`
* `USB_LED_CAPS_LOCK`
* `USB_LED_SCROLL_LOCK`
* `USB_LED_COMPOSE`
* `USB_LED_KANA`
### Example:
```
void led_set_kb(uint8_t usb_led) {
if (usb_led & (1<<USB_LED_NUM_LOCK)) {
PORTB |= (1<<0);
} else {
PORTB &= ~(1<<0);
}
if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
PORTB |= (1<<1);
} else {
PORTB &= ~(1<<1);
}
if (usb_led & (1<<USB_LED_SCROLL_LOCK)) {
PORTB |= (1<<2);
} else {
PORTB &= ~(1<<2);
}
if (usb_led & (1<<USB_LED_COMPOSE_LOCK)) {
PORTB |= (1<<3);
} else {
PORTB &= ~(1<<3);
}
if (usb_led & (1<<USB_LED_KANA_LOCK)) {
PORTB |= (1<<4);
} else {
PORTB &= ~(1<<4);
}
}
```

0
doc/CYGWIN_GUIDE.md → docs/cygwin_guide.md Executable file → Normal file
View File

View File

@@ -0,0 +1,7 @@
Understanding the essential changes made on the [tmk_keyboard firmware](http://github.com/tmk/tmk_keyboard) should help you understand the QMK Firmware.
| Firmware |TMK |QMK |
|------------------------------|-----------------------|-------------------------|
| Maintainer |hasu (@tmk) |Jack Humbert et al. |
| Build path customization | `TMK_DIR = ...` | `include .../Makefile` |
| `keymaps` array data | 3D array of `uint8_t` holding **keycode** | 3D array of `uint16_t` holding **keycode** |

63
docs/dynamic_macros.md Normal file
View File

@@ -0,0 +1,63 @@
# Dynamic macros: record and replay macros in runtime
QMK supports temporarily macros created on the fly. We call these Dynamic Macros. They are defined by the user from the keyboard and are lost when the keyboard is unplugged or otherwise rebooted.
You can store one or two macros and they may have a combined total of 128 keypresses. You can increase this size at the cost of RAM.
To enable them, first add a new element to the `planck_keycodes` enum — `DYNAMIC_MACRO_RANGE`:
```c
enum planck_keycodes {
QWERTY = SAFE_RANGE,
COLEMAK,
DVORAK,
PLOVER,
LOWER,
RAISE,
BACKLIT,
EXT_PLV,
DYNAMIC_MACRO_RANGE,
};
```
It must be the last element because `dynamic_macros.h` will add some more keycodes after it.
Below it include the `dynamic_macro.h` header:
```c
#include "dynamic_macro.h"`
```
Add the following keys to your keymap:
* `DYN_REC_START1` — start recording the macro 1,
* `DYN_REC_START2` — start recording the macro 2,
* `DYN_MACRO_PLAY1` — replay the macro 1,
* `DYN_MACRO_PLAY2` — replay the macro 2,
* `DYN_REC_STOP` — finish the macro that is currently being recorded.
Add the following code to the very beginning of your `process_record_user()` function:
```c
if (!process_record_dynamic_macro(keycode, record)) {
return false;
}
```
That should be everything necessary. To start recording the macro, press either `DYN_REC_START1` or `DYN_REC_START2`. To finish the recording, press the `DYN_REC_STOP` layer button. To replay the macro, press either `DYN_MACRO_PLAY1` or `DYN_MACRO_PLAY2`.
Note that it's possible to replay a macro as part of a macro. It's ok to replay macro 2 while recording macro 1 and vice versa but never create recursive macros i.e. macro 1 that replays macro 1. If you do so and the keyboard will get unresponsive, unplug the keyboard and plug it again.
For users of the earlier versions of dynamic macros: It is still possible to finish the macro recording using just the layer modifier used to access the dynamic macro keys, without a dedicated `DYN_REC_STOP` key. If you want this behavior back, use the following snippet instead of the one above:
```c
uint16_t macro_kc = (keycode == MO(_DYN) ? DYN_REC_STOP : keycode);
if (!process_record_dynamic_macro(macro_kc, record)) {
return false;
}
```
If the LED's start blinking during the recording with each keypress, it means there is no more space for the macro in the macro buffer. To fit the macro in, either make the other macro shorter (they share the same buffer) or increase the buffer size by setting the `DYNAMIC_MACRO_SIZE` preprocessor macro (default value: 128; please read the comments for it in the header).
For the details about the internals of the dynamic macros, please read the comments in the `dynamic_macro.h` header.

84
docs/eclipse.md Normal file
View File

@@ -0,0 +1,84 @@
[Eclipse](https://en.wikipedia.org/wiki/Eclipse_(software)) is an open-source [Integrated Development Environment](https://en.wikipedia.org/wiki/Integrated_development_environment) (IDE) widely used for Java development, but with an extensible plugin system that allows to customize it for other languages and usages.
Using an IDE such as Eclipse provides many advantages over a plain text editor, such as:
* intelligent code completion
* convenient navigation in the code
* refactoring tools
* build automation (no need for the command-line)
* a GUI for GIT
* static code analysis
* many other tools such as debugging, code formatting, showing call hierarchies etc.
The purpose of the is page is to document how to set-up Eclipse for developing AVR software, and working on the QMK code base.
Note that this set-up has been tested on Ubuntu 16.04 only for the moment.
# Prerequisites
## Build environment
Before starting, you must have followed the [Getting Started](home.md#getting-started) section corresponding to your system. In particular, you must have been able to build the firmware with [the `make` command](../#the-make-command).
## Java
Eclipse is a Java application, so you will need to install Java 8 or more recent to be able to run it. You may choose between the JRE or the JDK, the latter being useful if you intend to do Java development.
# Install Eclipse and its plugins
Eclipse comes in [several flavours](http://www.eclipse.org/downloads/eclipse-packages/) depending on the target usage that you will have. There is no package comprising the AVR stack, so we will need to start from Eclipse CDT (C/C++ Development Tooling) and install the necessary plugins.
## Download and install Eclipse CDT
If you already have Eclipse CDT on your system, you can skip this step. However it is advised to keep it up-to-date for better support.
If you have another Eclipse package installed, it is normally possible to [install the CDT plugin over it](https://eclipse.org/cdt/downloads.php). However it is probably better to reinstall it from scratch to keep it light and avoid the clutter of tools that you don't need for the projects you will be working on.
Installation is very simple: follow the [5 Steps to Install Eclipse](https://eclipse.org/downloads/eclipse-packages/?show_instructions=TRUE), and choose **Eclipse IDE for C/C++ Developers** at Step 3.
Alternatively, you can also directly [download Eclipse IDE for C/C++ Developers](http://www.eclipse.org/downloads/eclipse-packages/) ([direct link to current version](http://www.eclipse.org/downloads/packages/eclipse-ide-cc-developers/neonr)) and extract the package to the location of your choice (this creates an `eclipse` folder).
## First Launch
When installation is complete, click the <kbd>Launch</kbd> button. (If you extracted the package manually, open the Eclipse installation folder and double-click the `eclipse` executable)
When you are prompted with the Workspace Selector, select a directory that will hold Eclipse metadata and usually your projects. **Do not select the `qmk_firmware` directory**, this will be the project directory. Select the parent folder instead, or another (preferably empty) folder of your choice (the default is fine if you do not use it yet).
Once started, click the <kbd>Workbench</kbd> button at the top right to switch to the workbench view (there is a also checkbox at the bottom to skip the welcome screen at startup).
## Install the necessary plugins
Note: you do not need to restart Eclipse after installing each plugin. Simply restart once all plugins are installed.
### [The AVR plugin](http://avr-eclipse.sourceforge.net/)
This is the most important plugin as it will allow Eclipse to _understand_ AVR C code. Follow [the instructions for using the update site](http://avr-eclipse.sourceforge.net/wiki/index.php/Plugin_Download#Update_Site), and agree with the security warning for unsigned content.
### [ANSI Escape in Console](https://marketplace.eclipse.org/content/ansi-escape-console)
This plugin is necessary to properly display the colored build output generated by the QMK makefile.
1. Open <kbd><kbd>Help</kbd> > <kbd>Eclipse Marketplace…</kbd></kbd>
2. Search for _ANSI Escape in Console_
3. Click the <samp>Install</samp> button of the plugin
4. Follow the instructions and agree again with the security warning for unsigned content.
Once both plugins are installed, restart Eclipse as prompted.
# Configure Eclipse for QMK
## Importing the project
1. Click <kbd><kbd>File</kbd> > <kbd>New</kbd> > <kbd>Makefile Project with Existing Code</kbd></kbd>
2. On the next screen:
* Select the directory where you cloned the repository as _Existing Code Location_;
* (Optional) Give a different name to the project¹, e.g. _QMK_ or _Quantum_;
* Select the _AVR-GCC Toolchain_;
* Keep the rest as-is and click <kbd>Finish</kbd>
![Importing QMK in Eclipse](http://i.imgur.com/oHYR1yW.png)
3. The project will now be loaded and indexed. Its files can be browsed easily through the _Project Explorer_ on the left.
¹ There might be issues for importing the project with a custom name. If it does not work properly, try leaving the default project name (i.e. the name of the directory, probably `qmk_firmware`).
## Build your keyboard
We will now configure a make target that cleans the project and builds the keymap of your choice.
1. On the right side of the screen, select the <kbd>Make Target</kbd> tab
2. Expand the folder structure to the keyboard of your choice, e.g. `qmk_firmware/keyboards/ergodox`
3. Right-click on the keyboard folder and select <kbd>New…</kbd> (or select the folder and click the <kbd>New Make Target</kbd> icon above the tree)
4. Choose a name for your build target, e.g. _clean \<your keymap\>_
5. Make Target: this is the arguments that you give to `make` when building from the command line. If your target name does not match these arguments, uncheck <kbd>Same as target name</kbd> and input the correct arguments, e.g. `clean <your keymap>`
6. Leave the other options checked and click <kbd>OK</kbd>. Your make target will now appear under the selected keyboard.
7. (Optional) Toggle the <kbd>Hide Empty Folders</kbd> icon button above the targets tree to only show your build target.
8. Double-click the build target you created to trigger a build.
9. Select the <kbd>Console</kbd> view at the bottom to view the running build.

64
docs/embedding.md Normal file
View File

@@ -0,0 +1,64 @@
# WARNING: Until issue [#173](https://github.com/tmk/tmk_keyboard/issues/173) goes through, the [core][1] repository will not be up-to-date with the latest changes and fixes, but can still be used.
If you want to use TMK for your own keyboard project, you've got three options for embedding the [core][1].
The recommended option is [subtrees](#1-git-subtree).
After adding the embed you'll need to [modify the Makefile](#modifications-to-the-makefile) of your project to point to the core correctly.
## 1. git subtree
In order to set up the subtree in your project, first add the core repository as a remote:
```
git remote add -f core https://github.com/tmk/tmk_core
```
Then add the core as a subtree (directory) in your local repository:
```
git subtree add -P tmk_core core master --squash
```
And that's it!
When you want to update the subtree in your repository to match the master on [tmk_core][1], do this:
```
git subtree pull -P tmk_core core master --squash
```
## 2. git submodule
In order to set up the submodule in your project, first add a new submodule:
```
git submodule add https://github.com/tmk/tmk_core tmk_core
```
Then pull, sync and update the submodule:
```
git pull
git submodule sync --recursive
git submodule update --init --recursive
```
And that's it!
When you want to update the subtree in your repository to match the master on [tmk_core][1], follow the same steps as above.
If you want to clone a repository from GitHub that has submodule(s) in it, pass <kbd>--recursive</kbd> when cloning, like so:
`git clone --recursive https://github.com/<username>/<repository>`
## 3. Manually (without git)
*Note: This is not recommended in any way, but it's still possible.*
Download a zipped version of the [tmk_core][1] repository using this link:
<https://github.com/tmk/tmk_core/archive/master.zip>
Extract the zip in your project's directory, then rename the folder to <kbd>tmk_core</kbd>.
## Modifications to the *Makefile*
The one thing you have to make sure to change in the *Makefile* (compared to [tmk_keyboard](https://github.com/tmk/tmk_keyboard) drivers' *[Makefile](https://github.com/tmk/tmk_keyboard/blob/master/keyboard/gh60/Makefile#L45)*) is the "TMK_DIR" variable, which needs to point to the embed directory:
```Makefile
TMK_DIR = ./tmk_core
```
[1]: https://github.com/tmk/tmk_core

238
docs/faq.md Normal file
View File

@@ -0,0 +1,238 @@
## READ FIRST
- **README** of top directory : https://github.com/tmk/tmk_keyboard/blob/master/README.md
- **README** of target project(keyboard/converter) directory.
Note that you'll need to read **both**.
# Build
- [[FAQ/Build]]
# Keymap
- [[FAQ/Keymap]]
# Debug Console
## hid_listen can't recognize device
When debug console of your device is not ready you will see like this:
Waiting for device:.........
once the device is pluged in then *hid_listen* finds it you will get this message:
Waiting for new device:.........................
Listening:
Check if you can't get this 'Listening:' message:
- build with `CONSOLE_ENABLE=yes` in **Makefile**.
You may need privilege to access the device on OS like Linux.
- try `sudo hid_listen`
## Can't get message on console
Check:
- *hid_listen* finds your device. See above.
- Enable debug with pressing **Magic**+d. See [Magic Commands](https://github.com/tmk/tmk_keyboard#magic-commands).
- set `debug_enable=true` usually in `matrix_init()` in **matrix.c**.
- try using 'print' function instead of debug print. See **common/print.h**.
- disconnect other devices with console function. See [Issue #97](https://github.com/tmk/tmk_keyboard/issues/97).
## Linux or UNIX like system requires Super User privilege
Just use 'sudo' to execute *hid_listen* with privilege.
```
$ sudo hid_listen
```
Or add an *udev rule* for TMK devices with placing a file in rules directory. The directory may vary on each system.
File: /etc/udev/rules.d/52-tmk-keyboard.rules(in case of Ubuntu)
```
# tmk keyboard products https://github.com/tmk/tmk_keyboard
SUBSYSTEMS=="usb", ATTRS{idVendor}=="feed", MODE:="0666"
```
***
# Miscellaneous
## NKRO Doesn't work
First you have to compile frimware with this build option `NKRO_ENABLE` in **Makefile**.
Try `Magic` **N** command(`LShift+RShift+N` by default) when **NKRO** still doesn't work. You can use this command to toggle between **NKRO** and **6KRO** mode temporarily. In some situations **NKRO** doesn't work you need to switch to **6KRO** mode, in particular when you are in BIOS.
If your firmeare built with `BOOTMAGIC_ENABLE` you need to turn its switch on by `BootMagic` **N** command(`Space+N` by default). This setting is stored in EEPROM and keeped over power cycles.
https://github.com/tmk/tmk_keyboard#boot-magic-configuration---virtual-dip-switch
## TrackPoint needs reset circuit(PS/2 mouse support)
Without reset circuit you will have inconsistent reuslt due to improper initialize of the hardware. See circuit schematic of TPM754.
- http://geekhack.org/index.php?topic=50176.msg1127447#msg1127447
- http://www.mikrocontroller.net/attachment/52583/tpm754.pdf
## Can't read column of matrix beyond 16
Use `1UL<<16` instead of `1<<16` in `read_cols()` in **matrix.h** when your columns goes beyond 16.
In C `1` means one of **int** type which is **16bit** in case of AVR so you can't shift left more than 15. You will get unexpected zero when you say `1<<16`. You have to use **unsigned long** type with `1UL`.
http://deskthority.net/workshop-f7/rebuilding-and-redesigning-a-classic-thinkpad-keyboard-t6181-60.html#p146279
## Pull-up Resistor
In some case converters needed to have pull-up resistors to work correctly. Place the resistor between VCC and signal line in parallel.
For example:
```
Keyboard Conveter
,------.
5V------+------|VCC |
| | |
R | |
| | |
Signal--+------|PD0 |
| |
GND------------|GND |
`------'
R: 1K Ohm resistor
```
https://github.com/tmk/tmk_keyboard/issues/71
## Arduino Micro's pin naming is confusing
Note that Arduino Micro PCB marking is different from real AVR port name. D0 of Arduino Micro is not PD0, PD0 is D3. Check schematic yourself.
http://arduino.cc/en/uploads/Main/arduino-micro-schematic.pdf
## Bootloader jump doesn't work
Properly configure bootloader size in **Makefile**. With wrong section size bootloader won't probably start with **Magic command** and **Boot Magic**.
```
# Size of Bootloaders in bytes:
# Atmel DFU loader(ATmega32U4) 4096
# Atmel DFU loader(AT90USB128) 8192
# LUFA bootloader(ATmega32U4) 4096
# Arduino Caterina(ATmega32U4) 4096
# USBaspLoader(ATmega***) 2048
# Teensy halfKay(ATmega32U4) 512
# Teensy++ halfKay(AT90USB128) 2048
OPT_DEFS += -DBOOTLOADER_SIZE=4096
```
AVR Boot section size are defined by setting **BOOTSZ** fuse in fact. Consult with your MCU datasheet.
Note that **Word**(2 bytes) size and address are used in datasheet while TMK uses **Byte**.
AVR Boot section is located at end of Flash memory like the followings.
```
byte Atmel/LUFA(ATMega32u4) byte Atmel(AT90SUB1286)
0x0000 +---------------+ 0x00000 +---------------+
| | | |
| | | |
| Application | | Application |
| | | |
= = = =
| | 32KB-4KB | | 128KB-8KB
0x6000 +---------------+ 0x1E000 +---------------+
| Bootloader | 4KB | Bootloader | 8KB
0x7FFF +---------------+ 0x1FFFF +---------------+
byte Teensy(ATMega32u4) byte Teensy++(AT90SUB1286)
0x0000 +---------------+ 0x00000 +---------------+
| | | |
| | | |
| Application | | Application |
| | | |
= = = =
| | 32KB-512B | | 128KB-2KB
0x7E00 +---------------+ 0x1FC00 +---------------+
| Bootloader | 512B | Bootloader | 2KB
0x7FFF +---------------+ 0x1FFFF +---------------+
```
And see this discussion for further reference.
https://github.com/tmk/tmk_keyboard/issues/179
## Special Extra key doesn't work(System, Audio control keys)
You need to define `EXTRAKEY_ENABLE` in **makefile** to use them in TMK.
```
EXTRAKEY_ENABLE = yes # Audio control and System control
```
http://deskthority.net/workshop-f7/tmk-keyboard-firmware-collection-t4478-60.html#p157919
## Wakeup from sleep doesn't work
In Windows check `Allow this device to wake the computer` setting in Power **Management property** tab of **Device Manager**. Also check BIOS setting.
Pressing any key during sleep should wake host.
## Using Arduino?
**Note that Arduino pin naming is different from actual chip.** For example, Arduino pin `D0` is not `PD0`. Check circuit with its schematics yourself.
- http://arduino.cc/en/uploads/Main/arduino-leonardo-schematic_3b.pdf
- http://arduino.cc/en/uploads/Main/arduino-micro-schematic.pdf
Arduino leonardo and micro have **ATMega32U4** and can be used for TMK, though Arduino bootloader may be a problem.
## Using PF4-7 pins of USB AVR?
You need to set JTD bit of MCUCR yourself to use PF4-7 as GPIO. Those pins are configured to serve JTAG function by default. MCUs like ATMega*U* or AT90USB* are affeteced with this.
If you are using Teensy this isn't needed. Teensy is shipped with JTAGEN fuse bit unprogrammed to disable the function.
See this code.
```
// JTAG disable for PORT F. write JTD bit twice within four cycles.
MCUCR |= (1<<JTD);
MCUCR |= (1<<JTD);
```
https://github.com/tmk/tmk_keyboard/blob/master/keyboard/hbkb/matrix.c#L67
And read **26.5.1 MCU Control Register MCUCR** of ATMega32U4 datasheet.
## Adding LED indicators of Lock keys
You need your own LED indicators for CapsLock, ScrollLock and NumLock? See this post.
http://deskthority.net/workshop-f7/tmk-keyboard-firmware-collection-t4478-120.html#p191560
## Program Arduino Micro/Leonardo
Push reset button and then run command like this within 8 seconds.
```
avrdude -patmega32u4 -cavr109 -b57600 -Uflash:w:adb_usb.hex -P/dev/ttyACM0
```
Device name will vary depending on your system.
http://arduino.cc/en/Main/ArduinoBoardMicro
https://geekhack.org/index.php?topic=14290.msg1563867#msg1563867
## USB 3 compatibility
I heard some people have a problem with USB 3 port, try USB 2 port.
## Mac compatibility
### OS X 10.11 and Hub
https://geekhack.org/index.php?topic=14290.msg1884034#msg1884034
## Problem on BIOS(UEFI)/Resume(Sleep&Wake)/Power cycles
Some people reported their keyboard stops working on BIOS and/or after resume(power cycles).
As of now root of its cause is not clear but some build options seem to be related. In Makefile try to disable those options like `CONSOLE_ENABLE`, `NKRO_ENABLE`, `SLEEP_LED_ENABLE` and/or others.
https://github.com/tmk/tmk_keyboard/issues/266
https://geekhack.org/index.php?topic=41989.msg1967778#msg1967778
## FLIP doesn't work
### AtLibUsbDfu.dll not found
Remove current driver and reinstall one FLIP provides from DeviceManager.
http://imgur.com/a/bnwzy

151
docs/faq_build.md Normal file
View File

@@ -0,0 +1,151 @@
## READ FIRST
- https://github.com/qmk/qmk_firmware/blob/master/docs/build_guide.md
In short,
$ make [-f Makefile.<variant>] [KEYMAP=...] clean
$ make [-f Makefile.<variant>] [KEYMAP=...]
$ make [-f Makefile.<variant>] [KEYMAP=...] dfu
## Can't program on Linux and Mac
You will need proper permission to operate a device. For Linux users see udev rules below.
Easy way is to use `sudo` command, if you are not familiar with this command check its manual with `man sudo` or this page on line.
https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man8/sudo.8.html
In short when your controller is ATMega32u4,
$ sudo dfu-programmer atmega32u4 erase --force
$ sudo dfu-programmer atmega32u4 flash your.hex
$ sudo dfu-programmer atmega32u4 reset
or just
$ sudo make dfu
But to run `make` with root privilege is not good idea. Use former method as possible.
## Do 'make clean' before 'make'
You'll need `make clean` after you edit **config.h** or change options like `KEYMAP`.
Frist remove all files made in previous build,
$ make clean
then build new firmware.
$ make [KEYMAP=...]
Also you can always try `make clean` when you get other strange result during build.
## WINAVR is obsolete
It is no longer recommended and may cause some problem.
See [Issue #99](https://github.com/tmk/tmk_keyboard/issues/99).
## USB stack: LUFA or PJRC?
Use **LUFA**.
**PJRC** stack won't be supported actively anymore. There is no reason to hesitate to use LUFA except for binary size(about 1KB lager?). But **PJRC** is still very useful for debug and development purpose.
See also [Issue #50](https://github.com/tmk/tmk_keyboard/issues/50) and [Issue #58](https://github.com/tmk/tmk_keyboard/issues/58).
## Edit configuration but not change
You will need followings after editing `CONSOLE_ENABLE`, `NKRO_ENABLE`, `EXTRAKEY_ENABLE` or `MOUSEKEY_ENABLE` option in **Makefile**.
### 1. make clean
This will be needed when you edit **config.h**.
### 2. Remove Drivers from Device Manager(Windows)
**Windows only.** Linux, OSX and other OS's doesn't require this. It looks like Windows keeps using driver installed when device was connected first time even after the device changes its configuration. To load proper drivers for new configuration you need to remove existent drivers from **Drvice Manager**.
### 3. Build with different VID:PID
**Windows only.** If method 2. does't work fou you try this. Change Vendor ID or Product ID in **config.h** and build firmware. Windows should recognize it as whole new device and start drivers install process.
### 4. Just try other ports
This will be useful and the easiest workaround for **Windows**.
## USB VID and PID
You can use any ID you want with editing `config.h`. Using any presumably unused ID will be no problem in fact except for very least chance of collision with other product.
For example TMK uses following numbers by default.
```
keyboard:
hhkb: FEED:CAFE
gh60: FEED:6060
converter:
x68k: FEED:6800
ps2: FEED:6512
adb: FEED:0ADB
ibm4704: FEED:4704
pc98: FEED:9898
```
Also see this.
https://github.com/tmk/tmk_keyboard/issues/150
You can buy a really unique VID:PID here. I don't think you need this for personal use.
- http://www.obdev.at/products/vusb/license.html
- http://www.mcselec.com/index.php?page=shop.product_details&flypage=shop.flypage&product_id=92&option=com_phpshop&Itemid=1
## Linux udev rules
On Linux you need proper privilege to access device file of MCU, you'll have to use `sudo` when flashing firmware. You can circumvent this with placing these files in `/etc/udev/rules.d/`.
**/etc/udev/rules.d/50-atmel-dfu.rules:**
```
# Atmel ATMega32U4
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ff4", MODE:="0666"
# Atmel USBKEY AT90USB1287
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ffb", MODE:="0666"
# Atmel ATMega32U2
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ff0", MODE:="0666"
```
**/etc/udev/rules.d/52-tmk-keyboard.rules:**
```
# tmk keyboard products https://github.com/tmk/tmk_keyboard
SUBSYSTEMS=="usb", ATTRS{idVendor}=="feed", MODE:="0666"
```
## Cortex: cstddef: No such file or directory
GCC 4.8 of Ubuntu 14.04 had this problem and had to update to 4.9 with this PPA.
https://launchpad.net/~terry.guo/+archive/ubuntu/gcc-arm-embedded
https://github.com/tmk/tmk_keyboard/issues/212
https://github.com/tmk/tmk_keyboard/wiki/mbed-cortex-porting#compile-error-cstddef
https://developer.mbed.org/forum/mbed/topic/5205/
## 'clock_prescale_set' and 'clock_div_1' not available
Your toolchain is too old to support the MCU. For example WinAVR 20100110 doesn't support ATMega32u2.
```
Compiling C: ../../tmk_core/protocol/lufa/lufa.c
avr-gcc -c -mmcu=atmega32u2 -gdwarf-2 -DF_CPU=16000000UL -DINTERRUPT_CONTROL_ENDPOINT -DBOOTLOADER_SIZE=4096 -DF_USB=16000000UL -DARCH=ARCH_AVR8 -DUSB_DEVICE_ONLY -DUSE_FLASH_DESCRIPTORS -DUSE_STATIC_OPTIONS="(USB_DEVICE_OPT_FULLSPEED | USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL)" -DFIXED_CONTROL_ENDPOINT_SIZE=8 -DFIXED_NUM_CONFIGURATIONS=1 -DPROTOCOL_LUFA -DEXTRAKEY_ENABLE -DCONSOLE_ENABLE -DCOMMAND_ENABLE -DVERSION=unknown -Os -funsigned-char -funsigned-bitfields -ffunction-sections -fdata-sections -fno-inline-small-functions -fpack-struct -fshort-enums -fno-strict-aliasing -Wall -Wstrict-prototypes -Wa,-adhlns=obj_alps64/protocol/lufa/lufa.lst -I. -I../../tmk_core -I../../tmk_core/protocol/lufa -I../../tmk_core/protocol/lufa/LUFA-git -I../../tmk_core/common -std=gnu99 -include config.h -MMD -MP -MF .dep/obj_alps64_protocol_lufa_lufa.o.d ../../tmk_core/protocol/lufa/lufa.c -o obj_alps64/protocol/lufa/lufa.o
../../tmk_core/protocol/lufa/lufa.c: In function 'setup_mcu':
../../tmk_core/protocol/lufa/lufa.c:575: warning: implicit declaration of function 'clock_prescale_set'
../../tmk_core/protocol/lufa/lufa.c:575: error: 'clock_div_1' undeclared (first use in this function)
../../tmk_core/protocol/lufa/lufa.c:575: error: (Each undeclared identifier is reported only once
../../tmk_core/protocol/lufa/lufa.c:575: error: for each function it appears in.)
make: *** [obj_alps64/protocol/lufa/lufa.o] Error 1
```
## BOOTLOADER_SIZE for AVR
Note that Teensy2.0++ bootloader size is 2048byte. Some Makefiles may have wrong comment.
```
# Boot Section Size in *bytes*
# Teensy halfKay 512
# Teensy++ halfKay 2048
# Atmel DFU loader 4096 (TMK Alt Controller)
# LUFA bootloader 4096
# USBaspLoader 2048
OPT_DEFS += -DBOOTLOADER_SIZE=2048
```

265
docs/faq_keymap.md Normal file
View File

@@ -0,0 +1,265 @@
## READ FIRST
https://github.com/tmk/tmk_core/blob/master/doc/keymap.md
## How to get keycode
See [Keycodes](Keycodes). Keycodes are actually defined in [common/keycode.h](https://github.com/qmk/qmk_firmware/blob/master/tmk_core/common/keycode.h).
## Sysrq key
Use keycode for Print Screen(`KC_PSCREEN` or `KC_PSCR`) instead of `KC_SYSREQ`. Key combination of 'Alt + Print Screen' is recognized as 'System request'.
See [issue #168](https://github.com/tmk/tmk_keyboard/issues/168) and
- http://en.wikipedia.org/wiki/Magic_SysRq_key
- http://en.wikipedia.org/wiki/System_request
## Power key doesn't work
Use `KC_PWR` instead of `KC_POWER` or vice versa.
- `KC_PWR` works with Windows and Linux, not with OSX.
- `KC_POWER` works with OSX and Linux, not with Windows.
http://geekhack.org/index.php?topic=14290.msg1327264#msg1327264
## Oneshot modifier
Solves my personal 'the' problem. I often got 'the' or 'THe' wrongly instead of 'The'. Oneshot Shift mitgates this for me.
https://github.com/tmk/tmk_keyboard/issues/67
## Modifier/Layer stuck
Modifier keys or layers can be stuck unless layer switching is configured properly.
For Modifier keys and layer actions you have to place `KC_TRANS` on same position of destination layer to unregister the modifier key or return to previous layer on release event.
- https://github.com/tmk/tmk_core/blob/master/doc/keymap.md#31-momentary-switching
- http://geekhack.org/index.php?topic=57008.msg1492604#msg1492604
- https://github.com/tmk/tmk_keyboard/issues/248
## Mechanical Lock Switch Support
https://github.com/tmk/tmk_keyboard#mechanical-locking-support
This feature is for *mechanical lock switch* like this Alps one.
http://deskthority.net/wiki/Alps_SKCL_Lock
Using enabling this feature and using keycodes `LCAP`, `LNUM` or `LSCR` in keymap you can use physical locking CapsLock, NumLock or ScrollLock keys as you expected.
Old vintage mechanical keyboards occasionally have lock switches but modern ones don't have. ***You don't need this feature in most case and just use keycodes `CAPS`, `NLCK` and `SLCK`.***
## Input special charactors other than ASCII like Cédille 'Ç'
NO UNIVERSAL METHOD TO INPUT THOSE WORKS OVER ALL SYSTEMS. You have to define **MACRO** in way specific to your OS or layout.
See this post for example **MACRO** code.
http://deskthority.net/workshop-f7/tmk-keyboard-firmware-collection-t4478-120.html#p195620
On **Windows** you can use `AltGr` key or **Alt code**.
- http://en.wikipedia.org/wiki/AltGr_key
- http://en.wikipedia.org/wiki/Alt_code
On **Mac** OS defines `Option` key combinations.
- http://en.wikipedia.org/wiki/Option_key#Alternative_keyboard_input
On **Xorg** you can use `compose` key, instead.
- http://en.wikipedia.org/wiki/Compose_key
And see this for **Unicode** input.
- http://en.wikipedia.org/wiki/Unicode_input
## Apple/Mac keyboard Fn
Not supported.
Apple/Mac keyboard sends keycode for Fn unlike most of other keyboards.
I think you can send Apple Fn key using Apple venter specific Page 0xff01 and usage 0x0003. But you have to change HID Report Descriptor for this, of course.
https://opensource.apple.com/source/IOHIDFamily/IOHIDFamily-606.1.7/IOHIDFamily/AppleHIDUsageTables.h
## Media control keys in Mac OSX
#### KC_MNXT and KC_MPRV does not work on Mac
Use `KC_MFFD`(`KC_MEDIA_FAST_FORWARD`) and `KC_MRWD`(`KC_MEDIA_REWIND`) instead of `KC_MNXT` and `KC_MPRV`.
See https://github.com/tmk/tmk_keyboard/issues/195
## Keys supported in Mac OSX?
You can know which keycodes are supported in OSX from this source code.
`usb_2_adb_keymap` array maps Keyboard/Keypad Page usages to ADB scancodes(OSX internal keycodes).
https://opensource.apple.com/source/IOHIDFamily/IOHIDFamily-606.1.7/IOHIDFamily/Cosmo_USB2ADB.c
And `IOHIDConsumer::dispatchConsumerEvent` handles Consumer page usages.
https://opensource.apple.com/source/IOHIDFamily/IOHIDFamily-606.1.7/IOHIDFamily/IOHIDConsumer.cpp
## JIS keys in Mac OSX
Japanese JIS keyboard specific keys like `無変換(Muhenkan)`, `変換(Henkan)`, `ひらがな(hiragana)` are not recognized on OSX. You can use **Seil** to enable those keys, try following options.
* Enable NFER Key on PC keyboard
* Enable XFER Key on PC keyboard
* Enable KATAKANA Key on PC keyboard
https://pqrs.org/osx/karabiner/seil.html
## RN-42 Bluetooth doesn't work with Karabiner
Karabiner - Keymapping tool on Mac OSX - ignores inputs from RN-42 module by default. You have to enable this option to make Karabiner working with your keyboard.
https://github.com/tekezo/Karabiner/issues/403#issuecomment-102559237
See these for the deail of this problem.
https://github.com/tmk/tmk_keyboard/issues/213
https://github.com/tekezo/Karabiner/issues/403
## Esc and `~ on a key
You can define FC660 and Poker style ESC with `ACTION_LAYER_MODS`.
https://github.com/tmk/tmk_core/blob/master/doc/keymap.md#35-momentary-switching-with-modifiers
```
#include "keymap_common.h"
/* Leopold FC660
* https://elitekeyboards.com/products.php?sub=leopold,compact&pid=fc660c
* Shift + Esc = ~
* Fn + Esc = `
*
* Votex Poker II
* https://adprice.fedorapeople.org/poker2_manual.pdf
* Fn + Esc = `
* Fn + Shift + Esc = ~
*/
const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* 0: qwerty */
[0] = KEYMAP( \
ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, NUHS,BSPC, \
TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, \
LCTL,A, S, D, F, G, H, J, K, L, SCLN,QUOT,ENT, \
FN0, NUBS,Z, X, C, V, B, N, M, COMM,DOT, SLSH,RSFT,ESC, \
LCTL,LGUI,LALT, SPC, RALT,FN1, RGUI,RCTL),
[1] = KEYMAP( \
GRV, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,\
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS),
[2] = KEYMAP( \
GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS,TRNS, \
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,\
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS),
};
const uint16_t PROGMEM fn_actions[] = {
// https://github.com/tmk/tmk_core/blob/master/doc/keymap.md#35-momentary-switching-with-modifiers
[0] = ACTION_LAYER_MODS(1, MOD_LSFT),
[1] = ACTION_LAYER_MOMENTARY(2),
};
```
Otherwise, you can write code, see this.
https://github.com/p3lim/keyboard_firmware/commit/fd799c12b69a5ab5addd1d4c03380a1b8ef8e9dc
## 32 Fn keys are not enough?
### actionmap
It uses 16 bit codes and has no limitation of 32 Fn at the expense of memory space. TMK keymap is actually is 8 bit codes as subset of the actionmap.
https://github.com/tmk/tmk_keyboard/issues?utf8=%E2%9C%93&q=is%3Aissue+actionmap
### extension for modified keys
https://geekhack.org/index.php?topic=41989.msg1885526#msg1885526
## Arrow on Right Modifier keys with Dual-Role
This turns right modifer keys into arrow keys when the keys are tapped while still modifiers when the keys are hold. In TMK the dual-role function is dubbed **TAP**.
```
#include "keymap_common.h"
/* Arrow keys on right modifier keys with TMK dual role feature
*
* https://github.com/tmk/tmk_core/blob/master/doc/keymap.md#213-modifier-with-tap-keydual-role
* https://en.wikipedia.org/wiki/Modifier_key#Dual-role_keys
*/
const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* 0: qwerty */
[0] = KEYMAP( \
ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, NUHS,BSPC, \
TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, \
LCTL,A, S, D, F, G, H, J, K, L, SCLN,QUOT,ENT, \
LSFT,NUBS,Z, X, C, V, B, N, M, COMM,DOT, SLSH,FN0, ESC, \
FN4, LGUI,LALT, SPC, APP, FN2, FN1, FN3),
[1] = KEYMAP( \
GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS,TRNS, \
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,\
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,FN5, TRNS, \
TRNS,TRNS,TRNS, TRNS, TRNS,FN7, FN6, FN8),
};
const uint16_t PROGMEM fn_actions[] = {
[0] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_UP),
[1] = ACTION_MODS_TAP_KEY(MOD_RGUI, KC_DOWN),
[2] = ACTION_MODS_TAP_KEY(MOD_RALT, KC_LEFT),
[3] = ACTION_MODS_TAP_KEY(MOD_RCTL, KC_RIGHT),
[4] = ACTION_LAYER_MOMENTARY(1),
[5] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_PGUP),
[6] = ACTION_MODS_TAP_KEY(MOD_RGUI, KC_PGDN),
[7] = ACTION_MODS_TAP_KEY(MOD_RALT, KC_HOME),
[8] = ACTION_MODS_TAP_KEY(MOD_RCTL, KC_END),
};
```
Dual-role key: https://en.wikipedia.org/wiki/Modifier_key#Dual-role_keys
## Eject on Mac OSX
`EJCT` keycode works on OSX. https://github.com/tmk/tmk_keyboard/issues/250
It seems Windows 10 ignores the code and Linux/Xorg recognizes but has no mapping by default.
Not sure what keycode Eject is on genuine Apple keyboard actually. HHKB uses `F20` for Eject key(`Fn+f`) on Mac mode but this is not same as Apple Eject keycode probably.
## What's weak_mods and real_mods in action_util.c
___TO BE IMPROVED___
real_mods is intended to retains state of real/physical modifier key state, while
weak_mods retains state of virtual or temprary modifiers which should not affect state real modifier key.
Let's say you hold down physical left shift key and type ACTION_MODS_KEY(LSHIFT, KC_A),
with weak_mods,
* (1) hold down left shift: real_mods |= MOD_BIT(LSHIFT)
* (2) press ACTION_MODS_KEY(LSHIFT, KC_A): weak_mods |= MOD_BIT(LSHIFT)
* (3) release ACTION_MODS_KEY(LSHIFT, KC_A): waek_mods &= ~MOD_BIT(LSHIFT)
real_mods still keeps modifier state.
without weak mods,
* (1) hold down left shift: real_mods |= MOD_BIT(LSHIFT)
* (2) press ACTION_MODS_KEY(LSHIFT, KC_A): real_mods |= MOD_BIT(LSHIFT)
* (3) release ACTION_MODS_KEY(LSHIFT, KC_A): real_mods &= ~MOD_BIT(LSHIFT)
here real_mods lost state for 'physical left shift'.
weak_mods is ORed with real_mods when keyboard report is sent.
https://github.com/tmk/tmk_core/blob/master/common/action_util.c#L57
## Timer functionality
It's possible to start timers and read values for time-specific events - here's an example:
```c
static uint16_t key_timer;
key_timer = timer_read();
if (timer_elapsed(key_timer) < 100) {
// do something if less than 100ms have passed
} else {
// do something if 100ms or more have passed
}
```
It's best to declare the `static uint16_t key_timer;` at the top of the file, outside of any code blocks you're using it in.

7
docs/git_subtree.md Normal file
View File

@@ -0,0 +1,7 @@
## Update core branch procedure
git co master
git subtree split -P tmk_core -b <tmp_branch>
git co core
git merge <tmp_branch>
git co master
git subtree merge -P tmk_core --squash

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 242 B

View File

@@ -282,7 +282,7 @@ It's also important to use the `KEYMAP` function we defined earlier - this is wh
#### Compiling your firmware
After you've written out your entire keymap, you're ready to get the firmware compiled and onto your Teensy. Before compiling, you'll need to get your [development environment set-up](/doc/BUILD_GUIDE.md) - you can skip the dfu-programmer instructions, but you'll need to download and install the [Teensy Loader](https://www.pjrc.com/teensy/loader.html) to get the firmware on your Teensy.
After you've written out your entire keymap, you're ready to get the firmware compiled and onto your Teensy. Before compiling, you'll need to get your [development environment set-up](build_guide.md) - you can skip the dfu-programmer instructions, but you'll need to download and install the [Teensy Loader](https://www.pjrc.com/teensy/loader.html) to get the firmware on your Teensy.
Once everything is installed, running `make` in the terminal should get you some output, and eventually a `<project_name>.hex` file in that folder. If you're having trouble with this step, see the end of the guide for the trouble-shooting section.

View File

@@ -0,0 +1,5 @@
# Alternative Controller for HHKB
* [Geekhack.org thread](https://geekhack.org/index.php?topic=12047.0)
* [Connector unmate](https://geekhack.org/index.php?topic=12047.msg1543860#msg1543860)

134
docs/home.md Normal file
View File

@@ -0,0 +1,134 @@
# Quantum Mechanical Keyboard Firmware
You have found the QMK Firmware documentation site. This is a keyboard firmware based on the [tmk\_keyboard firmware](http://github.com/tmk/tmk_keyboard) \([view differences](differences_from_tmk.md)\) with some useful features for Atmel AVR controllers, and more specifically, the [OLKB product line](http://olkb.com), the [ErgoDox EZ](http://www.ergodox-ez.com) keyboard, and the [Clueboard product line](http://clueboard.co/). It has also been ported to ARM chips using ChibiOS. You can use it to power your own hand-wired or custom keyboard PCB.
# Getting started
Before you are able to compile, you'll need to install an environment for AVR or ARM development. You'll find the instructions for any OS below. If you find another/better way to set things up from scratch, please consider [making a pull request](https://github.com/qmk/qmk_firmware/pulls) with your changes!
* [Build Environment Setup](build_environment_setup.md)
* [QMK Overview](qmk_overview.md)
# Configuring QMK Firmware
The QMK Firmware can be configured via the `keymaps` array data. For simply generating a [basic keycode](keycodes.md), you add it as an element of your `keymaps` array data. For more complicated actions, there are more advanced keycodes that are organized carefully to represent common operations, some of which can be found on the [Key Functions](key_functions.md) page.
For more details of the `keymaps` array, see [Keymap Overview](keymap.md) page.
## Space Cadet Shift: The future, built in
Steve Losh [described](http://stevelosh.com/blog/2012/10/a-modern-space-cadet/) the Space Cadet Shift quite well. Essentially, you hit the left Shift on its own, and you get an opening parenthesis; hit the right Shift on its own, and you get the closing one. When hit with other keys, the Shift key keeps working as it always does. Yes, it's as cool as it sounds. Head on over to the [Space Cadet Shift](space_cadet_shift.md) page to read about it.
## The Leader key: A new kind of modifier
Most modifiers have to be held or toggled. But what if you had a key that indicated the start of a sequence? You could press that key and then rapidly press 1-3 more keys to trigger a macro, or enter a special layer, or anything else you might want to do. To learn more about it check out the [Leader Key](leader_key.md) page.
## Tap Dance: A single key can do 3, 5, or 100 different things
Hit the semicolon key once, send a semicolon. Hit it twice, rapidly -- send a colon. Hit it three times, and your keyboard's LEDs do a wild dance. That's just one example of what Tap Dance can do. Read more about it on the [Tap Dance](tap_dance.md) page.
## Temporarily setting the default layer
`DF(layer)` - sets default layer to _layer_. The default layer is the one at the "bottom" of the layer stack - the ultimate fallback layer. This currently does not persist over power loss. When you plug the keyboard back in, layer 0 will always be the default. It is theoretically possible to work around that, but that's not what `DF` does.
## Macro shortcuts: Send a whole string when pressing just one key
How would you like a single keypress to send a whole word, sentence, paragraph, or even document? Head on over to the [Macros](macros.md) page to read up on all aspects of Simple and Dynamic Macros.
## Additional keycode aliases for software-implemented layouts \(Colemak, Dvorak, etc\)
Everything is assuming you're in Qwerty \(in software\) by default, but there is built-in support for using a Colemak or Dvorak layout by including this at the top of your keymap:
```
#include <keymap_colemak.h>
```
If you use Dvorak, use `keymap_dvorak.h` instead of `keymap_colemak.h` for this line. After including this line, you will get access to:
* `CM_*` for all of the Colemak-equivalent characters
* `DV_*` for all of the Dvorak-equivalent characters
These implementations assume you're using Colemak or Dvorak on your OS, not on your keyboard - this is referred to as a software-implemented layout. If your computer is in Qwerty and your keymap is in Colemak or Dvorak, this is referred to as a firmware-implemented layout, and you won't need these features.
To give an example, if you're using software-implemented Colemak, and want to get an `F`, you would use `CM_F`. Using `KC_F` under these same circumstances would result in `T`.
## Backlight Breathing
In order to enable backlight breathing, the following line must be added to your config.h file.
```
#define BACKLIGHT_BREATHING
```
The following function calls are used to control the breathing effect.
* `breathing_enable()` - Enable the free-running breathing effect.
* `breathing_disable()` - Disable the free-running breathing effect immediately.
* `breathing_self_disable()` - Disable the free-running breathing effect after the current effect ends.
* `breathing_toggle()` - Toggle the free-running breathing effect.
* `breathing_defaults()` - Reset the speed and brightness settings of the breathing effect.
The following function calls are used to control the maximum brightness of the breathing effect.
* `breathing_intensity_set(value)` - Set the brightness of the breathing effect when it is at its max value.
* `breathing_intensity_default()` - Reset the brightness of the breathing effect to the default value based on the current backlight intensity.
The following function calls are used to control the cycling speed of the breathing effect.
* `breathing_speed_set(value)` - Set the speed of the breathing effect - how fast it cycles.
* `breathing_speed_inc(value)` - Increase the speed of the breathing effect by a fixed value.
* `breathing_speed_dec(value)` - Decrease the speed of the breathing effect by a fixed value.
* `breathing_speed_default()` - Reset the speed of the breathing effect to the default value.
The following example shows how to enable the backlight breathing effect when the FUNCTION layer macro button is pressed:
```
case MACRO_FUNCTION:
if (record->event.pressed)
{
breathing_speed_set(3);
breathing_enable();
layer_on(LAYER_FUNCTION);
}
else
{
breathing_speed_set(1);
breathing_self_disable();
layer_off(LAYER_FUNCTION);
}
break;
```
The following example shows how to pulse the backlight on-off-on when the RAISED layer macro button is pressed:
```
case MACRO_RAISED:
if (record->event.pressed)
{
layer_on(LAYER_RAISED);
breathing_speed_set(2);
breathing_pulse();
update_tri_layer(LAYER_LOWER, LAYER_RAISED, LAYER_ADJUST);
}
else
{
layer_off(LAYER_RAISED);
update_tri_layer(LAYER_LOWER, LAYER_RAISED, LAYER_ADJUST);
}
break;
```
## Other firmware shortcut keycodes
* `RESET` - puts the MCU in DFU mode for flashing new firmware \(with `make dfu`\)
* `DEBUG` - the firmware into debug mode - you'll need hid\_listen to see things
* `BL_ON` - turns the backlight on
* `BL_OFF` - turns the backlight off
* `BL_<n>` - sets the backlight to level _n_
* `BL_INC` - increments the backlight level by one
* `BL_DEC` - decrements the backlight level by one
* `BL_TOGG` - toggles the backlight
* `BL_STEP` - steps through the backlight levels
Enable the backlight from the Makefile.

121
docs/key_functions.md Normal file
View File

@@ -0,0 +1,121 @@
# Quick Aliases To Common Actions
Your keymap can include shortcuts to common operations (called "function actions" in tmk).
These functions work the same way that their `ACTION_*` functions do - they're just quick aliases. To dig into all of the tmk `ACTION_*` functions, please see the [TMK documentation](keymap.md#2-action).
Instead of using `FNx` when defining `ACTION_*` functions, you can use `F(x)` - the benefit here is being able to use more than 32 function actions (up to 4096), if you happen to need them.
### Limits of these aliases
Currently, the keycodes able to used with these functions are limited to the TMK ones, meaning you can't use keycodes like `KC_TILD`, or anything greater than 0xFF. For a full list of the keycodes able to be used, [see this list](keycode.txt).
### Switching and toggling 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. When you apply this to a key, that same key must be set as `KC_TRNS` on the destination layer. Otherwise, you won't make it back to the original layer when you release the key (and you'll get a keycode sent). You can only switch to layers *above* your current layer. If you're on layer 0 and you use `MO(1)`, that will switch to layer 1 just fine. But if you include `MO(3)` on layer 5, that won't do anything for you -- because layer 3 is lower than layer 5 on the stack.
`OSL(layer)` - momentary switch to *layer*, as a one-shot operation. So if you have a key that's defined as `OSL(1)`, and you tap that key, then only the very next keystroke would come from layer 1. You would drop back to layer zero immediately after that one keystroke. That's handy if you have a layer full of custom shortcuts -- for example, a dedicated key for closing a window. So you tap your one-shot layer mod, then tap that magic 'close window' key, and keep typing like a boss. Layer 1 would remain active as long as you hold that key down, too (so you can use it like a momentary toggle-layer key with extra powers).
`LT(layer, kc)` - momentary switch to *layer* when held, and *kc* when tapped. Like `MO()`, this only works upwards in the layer stack (`layer` must be higher than the current layer).
`TG(layer)` - toggles a layer on or off. As with `MO()`, you should set this key as `KC_TRNS` in the destination layer so that tapping it again actually toggles back to the original layer. Only works upwards in the layer stack.
`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 1` for just one tap.
### Fun with modifier keys
* `LSFT(kc)` - applies left Shift to *kc* (keycode) - `S(kc)` is an alias
* `RSFT(kc)` - applies right Shift to *kc*
* `LCTL(kc)` - applies left Control to *kc*
* `RCTL(kc)` - applies right Control to *kc*
* `LALT(kc)` - applies left Alt to *kc*
* `RALT(kc)` - applies right Alt to *kc*
* `LGUI(kc)` - applies left GUI (command/win) to *kc*
* `RGUI(kc)` - applies right GUI (command/win) to *kc*
* `HYPR(kc)` - applies Hyper (all modifiers) to *kc*
* `MEH(kc)` - applies Meh (all modifiers except Win/Cmd) to *kc*
* `LCAG(kc)` - applies CtrlAltGui to *kc*
You can also chain these, like this:
LALT(LCTL(KC_DEL)) -- this makes a key that sends Alt, Control, and Delete in a single keypress.
The following shortcuts automatically add `LSFT()` to keycodes to get commonly used symbols. Their long names are also available and documented in `quantum/quantum_keycodes.h`.
KC_TILD ~
KC_EXLM !
KC_QUES ?
KC_AT @
KC_HASH #
KC_DLR $
KC_PERC %
KC_CIRC ^
KC_AMPR &
KC_ASTR *
KC_LPRN (
KC_RPRN )
KC_UNDS _
KC_PLUS +
KC_DQUO "
KC_LCBR {
KC_RCBR }
KC_LABK <
KC_RABK >
KC_PIPE |
KC_COLN :
`OSM(mod)` - this is a "one shot" modifier. So let's say you have your left Shift key defined as `OSM(MOD_LSFT)`. Tap it, let go, and Shift is "on" -- but only for the next character you'll type. So to write "The", you don't need to hold down Shift -- you tap it, tap t, and move on with life. And if you hold down the left Shift key, it just works as a left Shift key, as you would expect (so you could type THE). There's also a magical, secret way to "lock" a modifier by tapping it multiple times. If you want to learn more about that, open an issue. :)
`MT(mod, kc)` - is *mod* (modifier key - MOD_LCTL, MOD_LSFT) when held, and *kc* when tapped. In other words, you can have a key that sends Esc (or the letter O or whatever) when you tap it, but works as a Control key or a Shift key when you hold it down.
These are the values you can use for the `mod` in `MT()` and `OSM()`:
* MOD_LCTL
* MOD_LSFT
* MOD_LALT
* MOD_LGUI
* MOD_RCTL
* MOD_RSFT
* MOD_RALT
* MOD_RGUI
* MOD_HYPR
* MOD_MEH
These can also be combined like `MOD_LCTL | MOD_LSFT` e.g. `MT(MOD_LCTL | MOD_LSFT, KC_ESC)` which would activate Control and Shift when held, and send Escape when tapped. Note however, that you cannot mix right and left side modifiers.
We've added shortcuts to make common modifier/tap (mod-tap) mappings more compact:
* `CTL_T(kc)` - is LCTL when held and *kc* when tapped
* `SFT_T(kc)` - is LSFT when held and *kc* when tapped
* `ALT_T(kc)` - is LALT when held and *kc* when tapped
* `ALGR_T(kc)` - is AltGr when held and *kc* when tapped
* `GUI_T(kc)` - is LGUI when held and *kc* when tapped
* `ALL_T(kc)` - is Hyper (all mods) when held and *kc* when tapped. To read more about what you can do with a Hyper key, see [this blog post by Brett Terpstra](http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/)
* `LCAG_T(kc)` - is CtrlAltGui when held and *kc* when tapped
* `MEH_T(kc)` - is like Hyper, but not as cool -- does not include the Cmd/Win key, so just sends Alt+Ctrl+Shift.
##### Permissive Hold
As of [PR#1359](https://github.com/qmk/qmk_firmware/pull/1359/), there is a new `config.h` option:
```
#define PERMISSIVE_HOLD
```
This makes it easier for fast typists to use dual-function keys. As described in the PR:
Without this, if you let go of a held key inside the tapping term, it won't register.
Example: (Tapping Term = 200)
- SHFT_T(KC_A) Down
- KC_X Down
- KC_X Up
- SHFT_T(KC_A) Up
With permissive hold, if above is typed within tapping term, this will emit `X` (so, Shift+X).
With defaults, if above is typed within tapping term, this will emit `ax`, which I doubt is what anyone really wants

View File

@@ -78,25 +78,25 @@ KC_F9 42 Keyboard F9
KC_F10 43 Keyboard F10
KC_F11 44 Keyboard F11
KC_F12 45 Keyboard F12
KC_PSCREEN KC_PSCR 46 Keyboard PrintScreen1
KC_SCKLOCK KC_SLCK 47 Keyboard Scroll Lock11
KC_PAUSE KC_PAUS 48 Keyboard Pause1
KC_INSERT KC_INS 49 Keyboard Insert1
KC_HOME 4A Keyboard Home1
KC_PGUP 4B Keyboard PageUp1
KC_PSCREEN KC_PSCR 46 Keyboard PrintScreen
KC_SCROLLLOCK KC_SLCK 47 Keyboard Scroll Lock
KC_PAUSE KC_PAUS 48 Keyboard Pause
KC_INSERT KC_INS 49 Keyboard Insert
KC_HOME 4A Keyboard Home
KC_PGUP 4B Keyboard PageUp
KC_DELETE KC_DEL 4C Keyboard Delete Forward
KC_END 4D Keyboard End1
KC_PGDOWN KC_PGDN 4E Keyboard PageDown1
KC_RIGHT KC_RGHT 4F Keyboard RightArrow1
KC_LEFT 50 Keyboard LeftArrow1
KC_DOWN 51 Keyboard DownArrow1
KC_UP 52 Keyboard UpArrow1
KC_NUMLOCK KC_NLCK 53 Keypad Num Lock and Clear11
KC_END 4D Keyboard End
KC_PGDOWN KC_PGDN 4E Keyboard PageDown
KC_RIGHT KC_RGHT 4F Keyboard RightArrow
KC_LEFT 50 Keyboard LeftArrow
KC_DOWN 51 Keyboard DownArrow
KC_UP 52 Keyboard UpArrow
KC_NUMLOCK KC_NLCK 53 Keypad Num Lock and Clear
KC_KP_SLASH KC_PSLS 54 Keypad /
KC_KP_ASTERISK KC_PAST 55 Keypad *
KC_KP_MINUS KC_PMNS 56 Keypad -
KC_KP_PLUS KC_PPLS 57 Keypad +
KC_KP_ENTER KC_PENT 58 Keypad ENTER5
KC_KP_ENTER KC_PENT 58 Keypad ENTER
KC_KP_1 KC_P1 59 Keypad 1 and End
KC_KP_2 KC_P2 5A Keypad 2 and Down Arrow
KC_KP_3 KC_P3 5B Keypad 3 and PageDn
@@ -109,8 +109,8 @@ KC_KP_9 KC_P9 61 Keypad 9 and PageUp
KC_KP_0 KC_P0 62 Keypad 0 and Insert
KC_KP_DOT KC_PDOT 63 Keypad . and Delete
KC_NONUS_BSLASH KC_NUBS 64 Keyboard Non-US \ and |
KC_APPLICATION KC_APP 65 Keyboard Application10
KC_POWER 66 Keyboard Power9
KC_APPLICATION KC_APP 65 Keyboard Application
KC_POWER 66 Keyboard Power
KC_KP_EQUAL KC_PEQL 67 Keypad =
KC_F13 68 Keyboard F13
KC_F14 69 Keyboard F14
@@ -138,12 +138,12 @@ KC_FIND 7E Keyboard Find
KC__MUTE 7F Keyboard Mute
KC__VOLUP 80 Keyboard Volume Up
KC__VOLDOWN 81 Keyboard Volume Down
KC_LOCKING_CAPS 82 Keyboard Locking Caps Lock12
KC_LOCKING_NUM 83 Keyboard Locking Num Lock12
KC_LOCKING_SCROLL 84 Keyboard Locking Scroll Lock12
KC_KP_COMMA KC_PCMM 85 Keypad Comma27
KC_KP_EQUAL_AS400 86 Keypad Equal Sign29
KC_INT1 KC_RO 87 Keyboard International115,28
KC_LOCKING_CAPS 82 Keyboard Locking Caps Lock
KC_LOCKING_NUM 83 Keyboard Locking Num Lock
KC_LOCKING_SCROLL 84 Keyboard Locking Scroll Lock
KC_KP_COMMA KC_PCMM 85 Keypad Comma
KC_KP_EQUAL_AS400 86 Keypad Equal Sign
KC_INT1 KC_RO 87 Keyboard International115
KC_INT2 KC_KANA 88 Keyboard International216
KC_INT3 KC_JYEN 89 Keyboard International317
KC_INT4 KC_HENK 8A Keyboard International418
@@ -161,8 +161,8 @@ KC_LANG6 95 Keyboard LANG68
KC_LANG7 96 Keyboard LANG78
KC_LANG8 97 Keyboard LANG88
KC_LANG9 98 Keyboard LANG98
KC_ALT_ERASE 99 Keyboard Alternate Erase7
KC_SYSREQ 9A Keyboard SysReq/Attention1
KC_ALT_ERASE 99 Keyboard Alternate Erase
KC_SYSREQ 9A Keyboard SysReq/Attention
KC_CANCEL 9B Keyboard Cancel
KC_CLEAR 9C Keyboard Clear
KC_PRIOR 9D Keyboard Prior

228
docs/keycodes.md Normal file
View File

@@ -0,0 +1,228 @@
# Overview
When defining a [keymap](keymap.md) each key needs a valid key definition.
This page documents the symbols that correspond to keycodes that are available to you in QMK.
To customize your board, they can be used by themselves or as **action codes** in combination with one of the [many C macros](https://github.com/qmk/qmk_firmware/wiki#c-macros-for-action-code).
The source of truth for these codes is [tmk_core/common/keycode.h](https://github.com/qmk/qmk_firmware/blob/master/tmk_core/common/keycode.h) file in the qmk source code.
# The Keycodes
Keycodes in QMK are based on [HID Usage Keyboard/Keypad Page(0x07)](http://www.usb.org/developers/hidpage/Hut1_12v2.pdf) with following exceptions:
* `KC_NO` = 0 for no action
* `KC_TRNS` = 1 for layer transparency
* internal special keycodes in the `0xA5-DF` range (tmk heritage).
## Letters and Numbers
|KC_1|KC_2|KC_3|KC_4|KC_5|KC_6|KC_7|KC_8|
|----|----|----|----|----|----|----|----|
|KC_9|KC_0|KC_F1|KC_F2|KC_F3|KC_F4|KC_F5|KC_F6|
|KC_F7|KC_F8|KC_F9|KC_F10|KC_F11|KC_F12|KC_F13|KC_F14|
|KC_F15|KC_F16|KC_F17|KC_F18|KC_F19|KC_F20|KC_F21|KC_F22|
|KC_F23|KC_F24|KC_A|KC_B|KC_C|KC_D|KC_E|KC_F|
|KC_G|KC_H|KC_I|KC_J|KC_K|KC_L|KC_M|KC_N|
|KC_O|KC_P|KC_Q|KC_R|KC_S|KC_T|KC_U|KC_V|
|KC_W|KC_X|KC_Y|KC_Z|||||
## Punctuation
|Long Name|Short Name|Description|
|---------|----------|-----------|
|KC_ENTER|KC_ENT|`Return (ENTER)`|
|KC_ESCAPE|KC_ESC|`ESCAPE`|
|KC_BSPACE|KC_BSPC|`DELETE (Backspace)`|
|KC_TAB||`Tab`|
|KC_SPACE|KC_SPC|Spacebar|
|KC_MINUS|KC_MINS|`-` and `_`|
|KC_EQUAL|KC_EQL|`=` and `+`|
|KC_LBRACKET|KC_LBRC|`[` and `{`|
|KC_RBRACKET|KC_RBRC|`]` and `}`|
|KC_BSLASH|KC_BSLS|`\` and <code>&#124;</code> |
|KC_NONUS_HASH|KC_NUHS|Non-US `#` and `~`|
|KC_NONUS_BSLASH|KC_NUBS|Non-US `\` and <code>&#124;</code> |
|KC_INT1|KC_RO|JIS `\` and <code>&#124;</code> |
|KC_INT2|KC_KANA|International216|
|KC_INT3|KC_JYEN|Yen Symbol (`¥`)|
|KC_SCOLON|KC_SCLN|`;` and `:`|
|KC_QUOTE|KC_QUOT|`` and `“`|
|KC_GRAVE|KC_GRV|Grave Accent and Tilde|
|KC_COMMA|KC_COMM|`,` and `<`|
|KC_DOT||`.` and `>`|
|KC_SLASH|KC_SLSH|`/` and `?`|
|KC_CAPSLOCK|KC_CAPS|Caps Lock|
## Modifiers
|Long Name|Short Name|Description|
|---------|----------|-----------|
|KC_LCTRL|KC_LCTL|LeftControl|
|KC_LSHIFT|KC_LSFT|LeftShift|
|KC_LALT||LeftAlt|
|KC_LGUI||Left GUI(Windows/Apple/Meta key)|
|KC_RCTRL|KC_RCTL|RightControl|
|KC_RSHIFT|KC_RSFT|RightShift|
|KC_RALT||RightAlt|
|KC_RGUI||Right GUI(Windows/Apple/Meta key)|
|KC_LOCKING_CAPS||Locking Caps Lock|
|KC_LOCKING_NUM||Locking Num Lock|
|KC_LOCKING_SCROLL||Locking Scroll Lock|
|KC_INT4|KC_HENK|JIS Henken|
|KC_INT5|KC_MHEN|JIS Muhenken|
## Commands
|Long Name|Short Name|Description|
|---------|----------|-----------|
|KC_PSCREEN|KC_PSCR|PrintScreen|
|KC_SCROLLLOCK|KC_SLCK|Scroll Lock|
|KC_PAUSE|KC_PAUS|Pause|
|KC_INSERT|KC_INS|Insert|
|KC_HOME||Home|
|KC_PGUP||PageUp|
|KC_DELETE|KC_DEL|Delete Forward|
|KC_END||End|
|KC_PGDOWN|KC_PGDN|PageDown|
|KC_RIGHT|KC_RGHT|RightArrow|
|KC_LEFT||LeftArrow|
|KC_DOWN||DownArrow|
|KC_UP||UpArrow|
|KC_APPLICATION|KC_APP|Application|
|KC_POWER||Power|
|KC_EXECUTE||Execute|
|KC_HELP||Help|
|KC_MENU||Menu|
|KC_SELECT||Select|
|KC_AGAIN||Again|
|KC_UNDO||Undo|
|KC_CUT||Cut|
|KC_COPY||Copy|
|KC_PASTE||Paste|
|KC_FIND||Find|
|KC_ALT_ERASE||Alternate Erase|
|KC_SYSREQ||SysReq/Attention|
|KC_CANCEL||Cancel|
|KC_CLEAR||Clear|
|KC_PRIOR||Prior|
|KC_RETURN||Return|
|KC_SEPARATOR||Separator|
|KC_OUT||Out|
|KC_OPER||Oper|
|KC_CLEAR_AGAIN||Clear/Again|
|KC_CRSEL||CrSel/Props|
|KC_EXSEL||ExSel|
|KC_SYSTEM_POWER|KC_PWR|System Power Down|
|KC_SYSTEM_SLEEP|KC_SLEP|System Sleep|
|KC_SYSTEM_WAKE|KC_WAKE|System Wake|
|KC_MAIL|KC_MAIL||
|KC_CALCULATOR|KC_CALC||
|KC_MY_COMPUTER|KC_MYCM||
|KC_WWW_SEARCH|KC_WSCH||
|KC_WWW_HOME|KC_WHOM||
|KC_WWW_BACK|KC_WBAK||
|KC_WWW_FORWARD|KC_WFWD||
|KC_WWW_STOP|KC_WSTP||
|KC_WWW_REFRESH|KC_WREF||
|KC_WWW_FAVORITES|KC_WFAV||
## Media Keys
Windows and Mac use different key codes for next track and previous track. Make sure you choose the keycode that corresponds to your OS.
|Long Name|Short Name|Description|
|---------|----------|-----------|
|KC_STOP||Stop|
|KC__MUTE||Mute|
|KC__VOLUP||Volume Up|
|KC__VOLDOWN||Volume Down|
|KC_AUDIO_MUTE|KC_MUTE||
|KC_AUDIO_VOL_UP|KC_VOLU||
|KC_AUDIO_VOL_DOWN|KC_VOLD||
|KC_MEDIA_NEXT_TRACK|KC_MNXT|Next Track (Windows)|
|KC_MEDIA_PREV_TRACK|KC_MPRV|Previous Track (Windows)|
|KC_MEDIA_FAST_FORWARD|KC_MFFD|Next Track (macOS)|
|KC_MEDIA_REWIND|KC_MRWD|Previous Track (macOS)|
|KC_MEDIA_STOP|KC_MSTP||
|KC_MEDIA_PLAY_PAUSE|KC_MPLY||
|KC_MEDIA_SELECT|KC_MSEL||
## Numpad
|Long Name|Short Name|Description|
|---------|----------|-----------|
|KC_NUMLOCK|KC_NLCK|Keypad Num Lock and Clear|
|KC_KP_SLASH|KC_PSLS|Keypad /|
|KC_KP_ASTERISK|KC_PAST|Keypad *|
|KC_KP_MINUS|KC_PMNS|Keypad -|
|KC_KP_PLUS|KC_PPLS|Keypad +|
|KC_KP_ENTER|KC_PENT|Keypad ENTER|
|KC_KP_1|KC_P1|Keypad 1 and End|
|KC_KP_2|KC_P2|Keypad 2 and Down Arrow|
|KC_KP_3|KC_P3|Keypad 3 and PageDn|
|KC_KP_4|KC_P4|Keypad 4 and Left Arrow|
|KC_KP_5|KC_P5|Keypad 5|
|KC_KP_6|KC_P6|Keypad 6 and Right Arrow|
|KC_KP_7|KC_P7|Keypad 7 and Home|
|KC_KP_8|KC_P8|Keypad 8 and Up Arrow|
|KC_KP_9|KC_P9|Keypad 9 and PageUp|
|KC_KP_0|KC_P0|Keypad 0 and Insert|
|KC_KP_DOT|KC_PDOT|Keypad . and Delete|
|KC_KP_EQUAL|KC_PEQL|Keypad =|
|KC_KP_COMMA|KC_PCMM|Keypad Comma|
|KC_KP_EQUAL_AS400||Keypad Equal Sign|
## Special Keys
|Long Name|Short Name|Description|
|---------|----------|-----------|
|KC_NO||Ignore this key. (NOOP) |
## Mousekey
|Long Name|Short Name|Description|
|---------|----------|-----------|
|KC_MS_UP|KC_MS_U|Mouse Cursor Up|
|KC_MS_DOWN|KC_MS_D|Mouse Cursor Down|
|KC_MS_LEFT|KC_MS_L|Mouse Cursor Left|
|KC_MS_RIGHT|KC_MS_R|Mouse Cursor Right|
|KC_MS_BTN1|KC_BTN1|Mouse Button 1|
|KC_MS_BTN2|KC_BTN2|Mouse Button 2|
|KC_MS_BTN3|KC_BTN3|Mouse Button 3|
|KC_MS_BTN4|KC_BTN4|Mouse Button 4|
|KC_MS_BTN5|KC_BTN5|Mouse Button 5|
|KC_MS_WH_UP|KC_WH_U|Mouse Wheel Up|
|KC_MS_WH_DOWN|KC_WH_D|Mouse Wheel Down|
|KC_MS_WH_LEFT|KC_WH_L|Mouse Wheel Left|
|KC_MS_WH_RIGHT|KC_WH_R|Mouse Wheel Right|
|KC_MS_ACCEL0|KC_ACL0|Mouse Acceleration 0|
|KC_MS_ACCEL1|KC_ACL1|Mouse Acceleration 1|
|KC_MS_ACCEL2|KC_ACL2|Mouse Acceleration 2|
## Magic Keys
The following keys can be used to turn on and off various "Magic" features. These include Boot Magic (holding certain keys down while plugging the keyboard in) and the Magic Key.
|Long Name|Short Name|Description|
|---------|----------|-----------|
|MAGIC_SWAP_CONTROL_CAPSLOCK||Swap Capslock and Control|
|MAGIC_CAPSLOCK_TO_CONTROL||Change Capslock to Control|
|MAGIC_SWAP_ALT_GUI||Swap ALT and GUI|
|MAGIC_SWAP_LALT_LGUI||Swap LALT and LGUI|
|MAGIC_SWAP_RALT_RGUI||Swap RALT and RGUI|
|MAGIC_NO_GUI||Disable off the GUI key|
|MAGIC_SWAP_GRAVE_ESC||Swap the GRAVE (~ `) and Esc keys|
|MAGIC_SWAP_BACKSLASH_BACKSPACE||Swap Backslash and Backspace|
|MAGIC_UNSWAP_CONTROL_CAPSLOCK||Disable the Control/Caps Swap|
|MAGIC_UNCAPSLOCK_TO_CONTROL||Turn Capslock back into Capslock|
|MAGIC_UNSWAP_ALT_GUI||Turn the ALT/GUI swap off|
|MAGIC_UNSWAP_LALT_LGUI||Turn the LALT/LGUI swap off|
|MAGIC_UNSWAP_RALT_RGUI||Turn the RALT/RGUI swap off|
|MAGIC_UNNO_GUI||Enable the GUI key|
|MAGIC_UNSWAP_GRAVE_ESC||Turn the GRAVE/ESC swap off|
|MAGIC_UNSWAP_BACKSLASH_BACKSPACE||Turn the Backslash/Backspace swap off|
|MAGIC_HOST_NKRO||Turn NKRO on|
|MAGIC_UNHOST_NKRO||Turn NKRO off|
|MAGIC_TOGGLE_NKRO||Toggle NKRO on or off|

222
docs/keymap.md Normal file
View File

@@ -0,0 +1,222 @@
# Keymap Overview
QMK keymaps are defined inside a C source file. The data structure is an array of arrays. The outer array is a list of layer arrays while the inner layer array is a list of keys. Most keyboards define a `KEYMAP()` macro to help you create this array of arrays.
## Keymap and layers
In QMK, **`const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS]`** holds multiple **layers** of keymap information in **16 bit** data holding the **action code**. You can define **32 layers** at most.
For trivial key definitions, the higher 8 bits of the **action code** are all 0 and the lower 8 bits holds the USB HID usage code generated by the key as **keycode**.
Respective layers can be validated simultaneously. Layers are indexed with 0 to 31 and higher layer has precedence.
Keymap: 32 Layers Layer: action code matrix
----------------- ---------------------
stack of layers array_of_action_code[row][column]
____________ precedence _______________________
/ / | high / ESC / F1 / F2 / F3 ....
31 /___________// | /-----/-----/-----/-----
30 /___________// | / TAB / Q / W / E ....
29 /___________/ | /-----/-----/-----/-----
: _:_:_:_:_:__ | : /LCtrl/ A / S / D ....
: / : : : : : / | : / : : : :
2 /___________// | 2 `--------------------------
1 /___________// | 1 `--------------------------
0 /___________/ V low 0 `--------------------------
Sometimes, the action code stored in keymap may be referred as keycode in some documents due to the TMK history.
### Keymap layer status
Keymap layer has its state in two 32 bit parameters:
* **`default_layer_state`** indicates a base keymap layer(0-31) which is always valid and to be referred.
* **`layer_state`** () has current on/off status of the layer on its each bit.
Keymap has its state in two parameter **`default_layer`** indicates a base keymap layer(0-31) which is always valid and to be referred, **`keymap_stat`** is 16bit variable which has current on/off status of layers on its each bit.
Keymap layer '0' is usually `default_layer` and which is the only valid layer and other layers is initially off after boot up firmware, though, you can configured them in `config.h`.
To change `default_layer` will be useful when you switch key layout completely, say you want Colmak instead of Qwerty.
Initial state of Keymap Change base layout
----------------------- ------------------
31 31
30 30
29 29
: :
: : ____________
2 ____________ 2 / /
1 / / ,->1 /___________/
,->0 /___________/ | 0
| |
`--- default_layer = 0 `--- default_layer = 1
layer_state = 0x00000001 layer_state = 0x00000002
On the other hand, you shall change `layer_state` to overlay base layer with some layers for feature such as navigation keys, function key(F1-F12), media keys or special actions.
Overlay feature layer
--------------------- bit|status
____________ ---+------
31 / / 31 | 0
30 /___________// -----> 30 | 1
29 /___________/ -----> 29 | 1
: : | :
: ____________ : | :
2 / / 2 | 0
,->1 /___________/ -----> 1 | 1
| 0 0 | 0
| +
`--- default_layer = 1 |
layer_state = 0x60000002 <-'
### Layer Precedence and Transparency
Note that ***higher layer has higher priority on stack of layers***, namely firmware falls down from top layer to bottom to look up keycode. Once it spots keycode other than **`KC_TRNS`**(transparent) on a layer it stops searching and lower layers aren't referred.
You can place `KC_TRANS` on overlay layer changes just part of layout to fall back on lower or base layer.
Key with `KC_TRANS` (`KC_TRNS` and `_______` are the alias) doesn't has its own keycode and refers to lower valid layers for keycode, instead.
## Anatomy Of A `keymap.c`
For this example we will walk through the [default Clueboard keymap](https://github.com/qmk/qmk_firmware/blob/master/keyboards/clueboard/keymaps/default/keymap.c). You'll find it helpful to open that file in another browser window so you can look at everything in context.
There are 3 main sections of a `keymap.c` file you'll want to concern yourself with:
* [The Definitions](#definitions)
* [The Layer/Keymap Datastructure](#layers-and-keymaps)
* [Custom Functions](#custom-functions), if any
### Definitions
At the top of the file you'll find this:
#include "clueboard.h"
// Helpful defines
#define GRAVE_MODS (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)|MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI)|MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT))
#define _______ KC_TRNS
// Each layer gets a name for readability.
// The underscores don't mean anything - you can
// have a layer called STUFF or any other name.
// Layer names don't all need to be of the same
// length, and you can also skip them entirely
// and just use numbers.
#define _BL 0
#define _FL 1
#define _CL 2
These are some handy definitions we can use when building our keymap and our custom function. The `GRAVE_MODS` definition will be used later in our custom function. The `_______` define makes it easier to see what keys a layer is overriding, while the `_BL`, `_FL`, and `_CL` defines make it easier to refer to each of our layers.
### Layers and Keymaps
The main part of this file is the `keymaps[]` definition. This is where you list your layers and the contents of those layers. This part of the file begins with this definition:
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
After this you'll find a list of KEYMAP() macros. A KEYMAP() is simply a list of keys to define a single layer. Typically you'll have one or more "base layers" (such as QWERTY, Dvorak, or Colemak) and then you'll layer on top of that one or more "function" layers. Due to the way layers are processed you can't overlay a "lower" layer on top of a "higher" layer.
`keymaps[][MATRIX_ROWS][MATRIX_COLS]` in QMK holds the 16 bit action code (sometimes referred as the quantum keycode) in it. For the keycode representing typical keys, its high byte is 0 and its low byte is the USB HID usage ID for keyboard.
> TMK from which QMK was forked uses `const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS]` instead and holds the 8 bit keycode. Some keycode values are reserved to induce execution of certain action codes via the `fn_actions[]` array.
#### Base Layer
Here is an example of the Clueboard's base layer:
/* Keymap _BL: Base Layer (Default Layer)
*/
[_BL] = KEYMAP(
F(0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC, KC_PGUP, \
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN, \
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, \
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_RSFT, KC_UP, \
KC_LCTL, KC_LGUI, KC_LALT, KC_MHEN, KC_SPC,KC_SPC, KC_HENK, KC_RALT, KC_RCTL, MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT),
Some interesting things to note about this:
* From a C source point of view it's only a single array, but we have embedded whitespace to more easily visualize where each key is on the physical device.
* Plain keyboard scancodes are prefixed with KC_, while "special" keys are not.
* The upper left key activates custom function 0 (`F(0)`)
* The "Fn" key is defined with `MO(_FL)`, which moves to the `_FL` layer while that key is being held down.
#### Function Overlay Layer
Our function layer is, from a code point of view, no different from the base layer. Conceptually, however, you will build that layer as an overlay, not a replacement. For many people this distinction does not matter, but as you build more complicated layering setups it matters more and more.
[_FL] = KEYMAP(
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL, BL_STEP, \
_______, _______, _______,_______,_______,_______,_______,_______,KC_PSCR,KC_SLCK, KC_PAUS, _______, _______, _______, _______, \
_______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, \
_______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, KC_PGUP, \
_______, _______, _______, _______, _______,_______, _______, _______, _______, MO(_FL), KC_HOME, KC_PGDN, KC_END),
Some interesting things to note:
* We have used our `_______` definition to turn `KC_TRNS` into `_______`. This makes it easier to spot the keys that have changed on this layer.
* While in this layer if you press one of the `_______` keys it will activate the key in the next lowest active layer.
### Custom Functions
At the bottom of the file we've defined a single custom function. This function defines a key that sends `KC_ESC` when pressed without modifiers and `KC_GRAVE` when modifiers are held. There are a couple pieces that need to be in place for this to work, and we will go over both of them.
#### `fn_actions[]`
We define the `fn_actions[]` array to point to custom functions. `F(N)` in a keymap will call element N of that array. For the Clueboard's that looks like this:
const uint16_t PROGMEM fn_actions[] = {
[0] = ACTION_FUNCTION(0), // Calls action_function()
};
In this case we've instructed QMK to call the `ACTION_FUNCTION` callback, which we will define in the next section.
> 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.
#### `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`.
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
static uint8_t mods_pressed;
switch (id) {
case 0:
/* Handle the combined Grave/Esc key
*/
mods_pressed = get_mods()&GRAVE_MODS; // Check to see what mods are pressed
if (record->event.pressed) {
/* The key is being pressed.
*/
if (mods_pressed) {
add_key(KC_GRV);
send_keyboard_report();
} else {
add_key(KC_ESC);
send_keyboard_report();
}
} else {
/* The key is being released.
*/
if (mods_pressed) {
del_key(KC_GRV);
send_keyboard_report();
} else {
del_key(KC_ESC);
send_keyboard_report();
}
}
break;
}
}
# Nitty Gritty Details
This should have given you a basic overview for creating your own keymap. For more details see the following resources:
* https://github.com/qmk/qmk_firmware/wiki/Keycodes
* https://github.com/qmk/qmk_firmware/wiki/FAQ-Keymap
* https://github.com/qmk/qmk_firmware/wiki/Keymap-examples
We are actively working to improve these docs. If you have suggestions for how they could be made better please [file an issue](https://github.com/qmk/qmk_firmware/issues/new)!

37
docs/keymap_examples.md Normal file
View File

@@ -0,0 +1,37 @@
# Share your keymap idea here!
https://github.com/tmk/tmk_keyboard/issues/265
---
## Reverse-shifted for numbers
With pressing Shift and '1' key you get **1** while with just '1' key you get **!**.
- https://geekhack.org/index.php?topic=41989.msg1959718#msg1959718
## KBT Pure layout
Keymap code on Alps64
https://github.com/thisisshi/tmk_keyboard/blob/15fe63e8d181a8a95988dcc71929f0024df55caa/keyboard/alps64/keymap_pure.c
and guide.
https://github.com/thisisshi/tmk_keyboard/blob/77ac0805ade565fb23657e3644c920ada71edccf/keyboard/alps64/Guide.md
## Prevent stuck modifiers
Consider the following scenario:
1. Layer 0 has a key defined as Shift.
2. The same key is defined on layer 1 as the letter A.
3. User presses Shift.
4. User switches to layer 1 for whatever reason.
5. User releases Shift, or rather the letter A.
6. User switches back to layer 0.
Shift was actually never released and is still considered pressed.
If such situation bothers you add this to your `config.h`:
#define PREVENT_STUCK_MODIFIERS
This option uses 5 bytes of memory per every 8 keys on the keyboard
rounded up (5 bits per key). For example on Planck (48 keys) it uses
(48/8)\*5 = 30 bytes.

View File

@@ -1,15 +1,30 @@
Keymap framework - how to define your keymap
============================================
***NOTE: This is not final version, may be inconsistent with source code and changed occasionally for a while.***
***NOTE: This is updated for QMK but this is still work in progress. This may still be inconsistent with the source code.***
QMK is based on TMK. Understanding the essential changes made should help you understand variable names etc.
## TMK vs. QMK
| Firmware |TMK |QMK |
|---------------------------|-----------------------|-------------------------|
| Maintainer |hasu |Jack Humbert et al. |
| Build path customization | `TMK_DIR = ...` | `include .../Makefile` |
| `keymaps` data | 3D array of `uint8_t` holding **keycode** | 3D array of `uint16_t` holding **action code** |
| `fn_actions` data | 1D array of `uint16_t` holding **action code** | 1D array of `uint16_t` holding **action code** |
Since QMK is based on TMK and uses major portion of TMK code as is, understanding the essential changes made should help you understand the code.
## 0. Keymap and layers
**Keymap** is comprised of multiple layers of key layout, you can define **32 layers** at most.
**Layer** is an array of **keycodes** to define **actions** for each physical keys.
respective layers can be validated simultaneously. Layers are indexed with 0 to 31 and higher layer has precedence.
In QMK, **`const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS]`** holds multiple **layers** of keymap information in **16 bit** data holding the **action code**. You can define **32 layers** at most.
Keymap: 32 Layers Layer: Keycode matrix
For trivial key definitions, the higher 8 bits of the **action code** are all 0 and the lower 8 bits holds the USB HID usage code generated by the key as **keycode**.
Respective layers can be validated simultaneously. Layers are indexed with 0 to 31 and higher layer has precedence.
Keymap: 32 Layers Layer: action code matrix
----------------- ---------------------
stack of layers array_of_keycode[row][column]
stack of layers array_of_action_code[row][column]
____________ precedence _______________________
/ / | high / ESC / F1 / F2 / F3 ....
31 /___________// | /-----/-----/-----/-----
@@ -22,11 +37,15 @@ respective layers can be validated simultaneously. Layers are indexed with 0 to
0 /___________/ V low 0 `--------------------------
Sometimes, the action code stored in keymap may be referred as keycode in some documents due to the TMK history.
### 0.1 Keymap status
Keymap has its state in two parameters:
**`default_layer`** indicates a base keymap layer(0-31) which is always valid and to be referred, **`keymap_stat`** is 16bit variable which has current on/off status of layers on its each bit.
### 0.1 Keymap layer status
Keymap layer has its state in two 32 bit parameters:
* **`default_layer_state`** indicates a base keymap layer(0-31) which is always valid and to be referred.
* **`layer_state`** () has current on/off status of the layer on its each bit.
Keymap has its state in two parameter **`default_layer`** indicates a base keymap layer(0-31) which is always valid and to be referred, **`keymap_stat`** is 16bit variable which has current on/off status of layers on its each bit.
Keymap layer '0' is usually `default_layer` and which is the only valid layer and other layers is initially off after boot up firmware, though, you can configured them in `config.h`.
To change `default_layer` will be useful when you switch key layout completely, say you want Colmak instead of Qwerty.
@@ -67,97 +86,132 @@ On the other hand, you shall change `layer_state` to overlay base layer with som
### 0.2 Layer Precedence and Transparency
Note that ***higher layer has higher priority on stack of layers***, namely firmware falls down from top layer to bottom to look up keycode. Once it spots keycode other than **`KC_TRNS`**(transparent) on a layer it stops searching and lower layers aren't referred.
You can place `KC_TRNS` on overlay layer changes just part of layout to fall back on lower or base layer.
Key with `KC_TRANS` doesn't has its own keycode and refers to lower valid layers for keycode, instead.
You can place `KC_TRANS` on overlay layer changes just part of layout to fall back on lower or base layer.
Key with `KC_TRANS` (`KC_TRNS` and `_______` are the alias) doesn't has its own keycode and refers to lower valid layers for keycode, instead.
See example below.
### 0.3 Keymap Example
Keymap is **`keymaps[]`** C array in fact and you can define layers in it with **`KEYMAP()`** C macro and keycodes. To use complex actions you need to define `Fn` keycode in **`fn_actions[]`** array.
Keymap in this QMK is **`static const uint16_t PROGMEM keymaps[]`** C array in fact and you can define layers in it with **`KEYMAP()`** C macro and keycodes. To use complex actions you need to define `Fn` keycode in **`fn_actions[]`** array. It holds the 16 bit quantum keycode (action code).
> Please note that keymap in the TMK, which QMK was forked from, is **`static const uint8_t PROGMEM keymaps[]`** C array which holds the 8 bit keycode (~USB HID usage code).
This is a keymap example for [HHKB](http://en.wikipedia.org/wiki/Happy_Hacking_Keyboard) keyboard.
This example has three layers, 'Qwerty' as base layer, 'Cursor' and 'Mousekey'.
This example has three layers, 'QWERTY' as base layer, 'FN' and 'MOUSE'.
In this example,
`Fn0` is a **momentary layer switching** key, you can use keys on Cursor layer while holding the key.
`Fn1` is a momentary layer switching key with tapping feature, you can get semicolon **';'** with taping the key and switch layers while holding the key. The word **'tap'** or **'tapping'** mean to press and release a key quickly.
`Fn2` is a **toggle layer switch** key, you can stay switched layer after releasing the key unlike momentary switching.
`MO(layer)` is a **momentary layer switching** key.
You can find other keymap definitions in file `keymap.c` located on project directories.
```
/*
* dbroqua HHKB Layout
*/
#include "hhkb.h"
static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* 0: Qwerty
* ,-----------------------------------------------------------.
* |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \| `|
* |-----------------------------------------------------------|
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]|Backs|
* |-----------------------------------------------------------|
* |Contro| A| S| D| F| G| H| J| K| L|Fn1| '|Enter |
* |-----------------------------------------------------------|
* |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift |Fn0|
* `-----------------------------------------------------------'
* |Gui|Alt |Space |Alt |Fn2|
* `-------------------------------------------'
*/
KEYMAP(ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSLS,GRV, \
TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSPC, \
LCTL,A, S, D, F, G, H, J, K, L, FN1, QUOT,ENT, \
LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH,RSFT,FN0, \
LGUI,LALT, SPC, RALT,FN2),
/* 1: Cursor(HHKB mode)
* ,-----------------------------------------------------------.
* |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
* |-----------------------------------------------------------|
* |Caps | | | | | | | |Psc|Slk|Pus|Up | |Backs|
* |-----------------------------------------------------------|
* |Contro|VoD|VoU|Mut| | | *| /|Hom|PgU|Lef|Rig|Enter |
* |-----------------------------------------------------------|
* |Shift | | | | | | +| -|End|PgD|Dow|Shift | |
* `-----------------------------------------------------------'
* |Gui |Alt |Space |Alt |Gui|
* `--------------------------------------------'
*/
KEYMAP(PWR, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \
CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS,UP, TRNS,BSPC, \
LCTL,VOLD,VOLU,MUTE,TRNS,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT,ENT, \
LSFT,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END, PGDN,DOWN,RSFT,TRNS, \
LGUI,LALT, SPC, RALT,RGUI),
/* 2: Mousekey
* ,-----------------------------------------------------------.
* |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
* |-----------------------------------------------------------|
* |Tab | | | | | |MwL|MwD|MwU|MwR| | | |Backs|
* |-----------------------------------------------------------|
* |Contro| | | | | |McL|McD|McU|McR| | |Return |
* |-----------------------------------------------------------|
* |Shift | | | | |Mb3|Mb2|Mb1|Mb4|Mb5| |Shift | |
* `-----------------------------------------------------------'
* |Gui |Alt |Mb1 |Alt | |
* `--------------------------------------------'
* Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel
*/
KEYMAP(ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \
TAB, TRNS,TRNS,TRNS,TRNS,TRNS,WH_L,WH_D,WH_U,WH_R,TRNS,TRNS,TRNS,BSPC, \
LCTL,TRNS,ACL0,ACL1,ACL2,TRNS,MS_L,MS_D,MS_U,MS_R,TRNS,QUOT,ENT, \
LSFT,TRNS,TRNS,TRNS,TRNS,BTN3,BTN2,BTN1,BTN4,BTN5,SLSH,RSFT,TRNS, \
LGUI,LALT, BTN1, RALT,TRNS),
};
#define BASE 0
#define FN 1
#define MOUSE 2
static const uint16_t PROGMEM fn_actions[] = {
ACTION_LAYER_MOMENTARY(1), // FN0
ACTION_LAYER_TAP_KEY(2, KC_SCLN), // FN1
ACTION_LAYER_TOGGLE(2), // FN2
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* BASE Level: Default Layer
* ,-----------------------------------------------------------------------------------------.
* | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` |
* |-----------------------------------------------------------------------------------------+
* | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Bksp |
* |-----------------------------------------------------------------------------------------+
* | Ctrl | A | S | D | F | G | H | J | K | L | ; | ' | Enter |
* |-----------------------------------------------------------------------------------------+
* | Shift | Z | X | C | V | B | N | M | , | . | / | Shift | fn |
* +-----------------------------------------------------------------------------------------+
* | Gui | Alt | Space | AltGr |Mouse|
* `----------------------------------------------------------------´
*/
[BASE] = KEYMAP(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, \
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, \
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(FN), \
KC_LGUI, KC_LALT, /* */ KC_SPC, KC_RALT, MO(MOUSE)
),
/* FN Layer
* ,-----------------------------------------------------------------------------------------.
* | Pwr | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F0 | F11 | F12 | Ins | Del|
* |-----------------------------------------------------------------------------------------+
* | Caps | | | | | | | |PrtSc| Slck| Paus| Up | | |
* |-----------------------------------------------------------------------------------------+
* | | Vol-| Vol+| Mute| | | * | / | Home| PgUp| Left |Right| |
* |-----------------------------------------------------------------------------------------+
* | | Prev| Play| Next| | | + | - | End |PgDwn| Down| | |
* +-----------------------------------------------------------------------------------------+
* | | | | Stop | |
* `----------------------------------------------------------------´
*/
[FN] = KEYMAP(
KC_PWR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, \
KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_TRNS, \
KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS, \
KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_TRNS, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, \
KC_TRNS, KC_TRNS, KC_TRNS, KC_MSTP, KC_TRNS
),
/* MOUSE Layer
* ,-----------------------------------------------------------------------------------------.
* | | | | | | | | | | | | | | | |
* |-----------------------------------------------------------------------------------------+
* | | | WUp | | | | | | | | Btn1| Up | Btn2| |
* |-----------------------------------------------------------------------------------------+
* | | WLt | WDn | WRt | | | | | | | Left |Right| |
* |-----------------------------------------------------------------------------------------+
* | | | | | | | | | | Btn3| Down| | |
* +-----------------------------------------------------------------------------------------+
* | | | | | |
* `----------------------------------------------------------------´
*/
[MOUSE] = KEYMAP(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
KC_TRNS, KC_TRNS, KC_WH_U, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_MS_U, KC_BTN2, KC_TRNS, \
KC_TRNS, KC_WH_L, KC_WH_D, KC_WH_R, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_R, KC_TRNS, \
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN3, KC_MS_D, KC_TRNS, KC_TRNS, \
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
};
const uint16_t PROGMEM fn_actions[] = {
};
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{
// MACRODOWN only works in this function
switch(id) {
case 0:
if (record->event.pressed) {
register_code(KC_RSFT);
} else {
unregister_code(KC_RSFT);
}
break;
}
return MACRO_NONE;
};
```
## 1. Keycode
See [`common/keycode.h`](../common/keycode.h) or keycode table below for the detail. Keycode is internal **8bit code** to indicate action performed on key in keymap. Keycode has `KC_` prefixed symbol respectively. Most of keycodes like `KC_A` have simple action registers key to host on press and unregister on release, while some of other keycodes has some special actions like `Fn` keys, Media control keys, System control keys and Mousekeys.
See [`tmk_core/common/keycode.h`](../tmk_core/common/keycode.h) or keycode table below for the detail. Keycode is internal **8bit code** to indicate action performed on key in keymap. Keycodes are based on [HID Usage Keyboard/Keypad Page(0x07)](http://www.usb.org/developers/hidpage/Hut1_12v2.pdf) plus special codes in the `0xA5-DF` range.
***In `KEYMAP()` macro you should omit prefix part `KC_` of keycode to keep keymap compact.*** For example, just use `A` instead you place `KC_A` in `KEYMAP()`. Some keycodes has 4-letter **short name** in addition to descriptive name, you'll prefer short one in `KEYMAP()`.
Keycode has `KC_` prefixed symbol respectively. Most of keycodes like `KC_A` have simple action registers key to host on press and unregister on release, while some of other keycodes has some special actions like `Fn` keys, Media control keys, System control keys and Mousekeys.
keymaps[]
In `KEYMAP()` macro, TMK recommends you to keep prefix part `KC_` of keycode to keep keymap compact. For example, just use `A` instead you place `KC_A` in `KEYMAP()`. But this doesn't apply for QMK.
The `KEYMAP()` macro defines correspondence between the physical key location to the electrical key connection.
Some keycodes has 7-letter **short name** such as `KC_COMM` in addition to descriptive name `KC_COMMA`, you'll prefer short one in `KEYMAP()`.
### 1.0 Other key
- `KC_NO` for no action
@@ -192,7 +246,10 @@ There are 8 modifiers which has discrimination between left and right.
- `KC_WSCH`, `KC_WHOM`, `KC_WBAK`, `KC_WFWD`, `KC_WSTP`, `KC_WREF`, `KC_WFAV` for web browser operation
### 1.5 Fn key
`KC_FNnn` are keycodes for `Fn` key which not given any actions at the beginning unlike most of keycodes has its own inborn action. To use these keycodes in `KEYMAP()` you need to assign action you want at first. Action of `Fn` key is defined in `fn_actions[]` and its index of the array is identical with number part of `KC_FNnn`. Thus `KC_FN0` keycode indicates the action defined in first element of the array. ***32 `Fn` keys can be defined at most.***
You don't need to use this functionality under QMK since this is a backward compatibility functionality. Unlike TMK, you can write action code itself directly in **`static const uint16_t PROGMEM keymaps[]`** C array using `MO(layer)`, etc.
`KC_FNnn` are keycodes for `Fn` key which not given any actions at the beginning unlike most of keycodes has its own inborn action. To use these keycodes in `KEYMAP()` you need to assign action you want at first. Action of `Fn` key is defined in `fn_actions[]` and its index of the array is identical with number part of `KC_FNnn`. Thus `KC_FN0` keycode indicates the action defined in first element of the array. ***Only 32 `Fn` keys can be defined at most.***
### 1.6 Keycode Table
See keycode table in [`doc/keycode.txt`](./keycode.txt) for description of keycodes.
@@ -549,6 +606,9 @@ Layer switching with tap key:
[dual_role]: http://en.wikipedia.org/wiki/Modifier_key#Dual-role_keys
When user hold a key after tap, it repeat the tapped key rather to hold a modifier key.
If you prefer to hold a modifier instead, define `TAPPING_FORCE_HOLD` in `config.h`.
See https://github.com/qmk/qmk_firmware/issues/889 for the detail.
### 4.2 Tap Toggle
This is a feature to assign both toggle layer and momentary switch layer action to just same one physical key. It works as momentary layer switch when holding a key but toggle switch with several taps.
@@ -581,15 +641,11 @@ Similar to layer tap toggle, this works as a momentary modifier when holding, bu
## 5. Legacy Keymap
This was used in prior version and still works due to legacy support code in `common/keymap.c`. Legacy keymap doesn't support many of features that new keymap offers. ***It is not recommended to use Legacy Keymap for new project.***
To enable Legacy Keymap support define this macro in `config.h`.
#define USE_LEGACY_KEYMAP
In QMK, `tmk_core/common/keymap.c` is missing and its replacement `quantum/keymap_common.c` lacks Legacy Keymap support.
Legacy Keymap uses two arrays `fn_layer[]` and `fn_keycode[]` to define Fn key. The index of arrays corresponds with postfix number of `Fn` key. Array `fn_layer[]` indicates destination layer to switch and `fn_keycode[]` has keycodes to send when tapping `Fn` key.
In following setting example, `Fn0`, `Fn1` and `Fn2` switch layer to 1, 2 and 2 respectively. `Fn2` registers `Space` key when tapping while `Fn0` and `Fn1` doesn't send any key.
In the following legacy keymap setting example, `Fn0`, `Fn1` and `Fn2` switch layer to 1, 2 and 2 respectively. `Fn2` registers `Space` key when tapping while `Fn0` and `Fn1` doesn't send any key.
static const uint8_t PROGMEM fn_layer[] = {
1, // Fn0
@@ -603,6 +659,7 @@ In following setting example, `Fn0`, `Fn1` and `Fn2` switch layer to 1, 2 and 2
KC_SPC, // Fn2
};
Under QMK, these can be realized using action code ACTION_LAYER_TAP_KEY(1, KC_NO), ACTION_LAYER_TAP_KEY(2, KC_NO), and ACTION_LAYER_TAP_KEY(2, KC_SPC) in the `keymaps` directly.
## 6. Terminology
***TBD***

29
docs/kiibohd.asciidoc Normal file
View File

@@ -0,0 +1,29 @@
== KLL vs TMK
1. **Shift** = Memontary
1. Latch = One shot
1. Lock = Toggle
## KLL terminology
### Fall-through
When a key is undefined on a particular layer, the key
definition on the previously stacked layer will be used. Eventually
the key definition will be set to using the default layer. If the None
keyword is used, then the fall-through will stop and no action will
take place.
###Latch
When referring to keyboards, a key function that is only enabled
until the release of the next keypress.
###Lock
When referring to keyboards, a key function that is enabled until
that key is pressed again (e.g. Caps Lock).
### NKRO
N-Key Rollover is the capability to press N number of keys at the
same time on a keyboard and have them all register on the OS simultaneously.
### Scan Code
Row x Column code or native protocol code used by the keyboard.
### Shift
When referring to keyboards, a key function that is enabled while
that key is held.
### USB Code
Keyboard Press/Release codes as defined by the USB HID
Spec.

37
docs/leader_key.md Normal file
View File

@@ -0,0 +1,37 @@
# The Leader key: A new kind of modifier
If you've ever used Vim, you know what a Leader key is. If not, you're about to discover a wonderful concept. :) Instead of hitting Alt+Shift+W for example (holding down three keys at the same time), what if you could hit a _sequence_ of keys instead? So you'd hit our special modifier (the Leader key), followed by W and then C (just a rapid succession of keys), and something would happen.
That's what `KC_LEAD` does. Here's an example:
1. Pick a key on your keyboard you want to use as the Leader key. Assign it the keycode `KC_LEAD`. This key would be dedicated just for this -- it's a single action key, can't be used for anything else.
2. Include the line `#define LEADER_TIMEOUT 300` somewhere in your keymap.c file, probably near the top. The 300 there is 300ms -- that's how long you have for the sequence of keys following the leader. You can tweak this value for comfort, of course.
3. Within your `matrix_scan_user` function, do something like this:
```
LEADER_EXTERNS();
void matrix_scan_user(void) {
LEADER_DICTIONARY() {
leading = false;
leader_end();
SEQ_ONE_KEY(KC_F) {
register_code(KC_S);
unregister_code(KC_S);
}
SEQ_TWO_KEYS(KC_A, KC_S) {
register_code(KC_H);
unregister_code(KC_H);
}
SEQ_THREE_KEYS(KC_A, KC_S, KC_D) {
register_code(KC_LGUI);
register_code(KC_S);
unregister_code(KC_S);
unregister_code(KC_LGUI);
}
}
}
```
As you can see, you have three function. you can use - `SEQ_ONE_KEY` for single-key sequences (Leader followed by just one key), and `SEQ_TWO_KEYS` and `SEQ_THREE_KEYS` for longer sequences. Each of these accepts one or more keycodes as arguments. This is an important point: You can use keycodes from **any layer on your keyboard**. That layer would need to be active for the leader macro to fire, obviously.

View File

@@ -0,0 +1,38 @@
# Overview
As raised in #1038 and other issues, the licensing status of QMK is not clear. In an effort to remove ambiguity and to clarify the licensing status of the quantum code we are identifying the providence of our source code files and clarifying what license applies to each one.
# Signoff
This section documents the people who need to sign off on applying the GPL to one or more of their contributions. If your name appears below and you consent to applying the GPL to your contributions, please put today's date in the last field of your row. Please stick to the following date format: 2017 Jan 28
Username | Files | Sign Off Date |
---------|-------|---------------|
@0xdec | quantum/rgblight.c | 2017 Jan 29 |
@algernon | quantum/quantum.c<br>quantum/quantum.h<br>quantum/process_keycode/process_tap_dance.c<br>quantum/process_keycode/process_tap_dance.h<br>quantum/process_keycode/process_unicode.c<br>quantum/process_keycode/process_unicode.h | 2017 Jan 29 |
@cdlm | quantum/template/template.c<br>quantum/template/template.h | 2017 Feb 03 |
@DidierLoiseau | quantum/keymap_extras/keymap_canadian_multilingual.h<br>quantum/keymap_extras/keymap_bepo.h |2017 Jan 29 |
@eltang | quantum/config_common.h<br>quantum/matrix.c<br>quantum/quantum.c<br>quantum/quantum.h<br>quantum/rgblight.c<br>quantum/rgblight.h<br>quantum/template/config.h | 2017 Feb 28 |
@ezuk | quantum/matrix.c<br>quantum/quantum.c<br>quantum/quantum.h<br>quantum/quantum_keycodes.h<br>quantum/rgblight.c<br>quantum/rgblight.h<br>quantum/keymap_extras/keymap_colemak.h<br>quantum/keymap_extras/keymap_nordic.h | 2017 Jan 31 |
@fredizzimo | quantum/config_common.h<br>quantum/keycode_config.h<br>quantum/keymap.h<br>quantum/keymap_common.c<br>quantum/keymap_common.c<br>quantum/matrix.c<br>quantum/quantum.h<br>quantum/rgblight.c<br>quantum/rgblight.h<br>quantum/api/api_sysex.c | 2017 Jan 29 |
@h-youhei | quantum/keymap_extras/keymap_jp.h | 2017 Jan 28 |
@heartsekai | quantum/keymap_extras/keymap_german_ch.h | 2017 Jan 29 |
@IBnobody | quantum/keycode_config.h<br>quantum/matrix.c<br>quantum/quantum.c<br>quantum/audio/audio.c<br>quantum/audio/audio.h<br>quantum/audio/audio_pwm.c<br>quantum/audio/audio_pwm.c<br>quantum/audio/voices.c<br>quantum/audio/voices.h<br>quantum/template/config.h<br>quantum/template/template.c | 2017 Jan 30 |
@jackhumbert | quantum/config_common.h<br>quantum/keycode_config.h<br>quantum/keymap.h<br>quantum/keymap_common.c<br>quantum/light_ws2812.c<br>quantum/light_ws2812.h<br>quantum/matrix.c<br>quantum/quantum.c<br>quantum/quantum.h<br>quantum/quantum_keycodes.h<br>quantum/rgblight.c<br>quantum/rgblight.h<br>quantum/api/api_sysex.c<br>quantum/audio/audio.c<br>quantum/audio/audio.h<br>quantum/audio/audio_pwm.c<br>quantum/audio/audio_pwm.c<br>quantum/audio/voices.c<br>quantum/audio/voices.h<br>quantum/keymap_extras/keymap_colemak.h<br>quantum/keymap_extras/keymap_dvorak.h<br>quantum/keymap_extras/keymap_fr_ch.h<br>quantum/keymap_extras/keymap_french.h<br>quantum/keymap_extras/keymap_french_osx.h<br>quantum/keymap_extras/keymap_german.h<br>quantum/keymap_extras/keymap_german_ch.h<br>quantum/keymap_extras/keymap_german_osx.h<br>quantum/keymap_extras/keymap_neo2.h<br>quantum/keymap_extras/keymap_nordic.h<br>quantum/keymap_extras/keymap_plover.h<br>quantum/keymap_extras/keymap_spanish.h<br>quantum/keymap_extras/keymap_uk.h<br>quantum/process_keycode/process_midi.c<br>quantum/process_keycode/process_music.c<br>quantum/process_keycode/process_tap_dance.c<br>quantum/process_keycode/process_tap_dance.h<br>quantum/process_keycode/process_unicode.c<br>quantum/process_keycode/process_unicode.h<br>quantum/template/config.h<br>quantum/template/template.c<br>quantum/template/template.h | 2017-01-29 |
@jakllsch | quantum/keymap_extras/keymap_dvorak.h<br>quantum/keymap_extras/keymap_fr_ch.h<br>quantum/keymap_extras/keymap_french.h<br>quantum/keymap_extras/keymap_german.h<br>quantum/keymap_extras/keymap_german_ch.h<br>quantum/keymap_extras/keymap_nordic.h<br>quantum/keymap_extras/keymap_spanish.h<br>quantum/keymap_extras/keymap_uk.h | 2017 Jan 29 |
kuel | quantum/keymap_extras/keymap_unicode_cyrillic.h<br>quantum/keymap_extras/keymap_russian.h | |
@lindhe | quantum/keymap_extras/keymap_nordic.h<br>quantum/keymap_extras/keymap_norwegian.h | 2017 Jan 30 |
@matzebond | quantum/keymap_extras/keymap_german.h<br>quantum/keymap_extras/keymap_neo2.h | 2017 Jan 30 |
@plgruener | quantum/keymap_extras/keymap_german.h<br>quantum/keymap_extras/keymap_neo2.h | 2017 Jan 30 |
@priyadi | quantum/quantum.c<br>quantum/process_keycode/process_unicode.c<br>quantum/process_keycode/process_unicode.h | 2017 Jan 31 |
@pvinis | quantum/quantum.c<br>quantum/quantum.h<br>quantum/process_keycode/process_tap_dance.c<br>quantum/process_keycode/process_tap_dance.h | 2017 Jan 29 |
@Smilliam | quantum/quantum.c | 2017 Feb 25 |
@sperochon | quantum/keymap_extras/keymap_french_osx.h | 2017 Jan 30 |
stephan . bosebeck at holidayinsider.com | quantum/keymap_extras/keymap_german_osx.h | 2017 Feb 15 |
@TerryMathews | quantum/quantum.c | 2017 Jan 29 |
@Twey | quantum/keymap_extras/keymap_plover.h | |
@Vifon | quantum/dynamic_macro.h<br>quantum/quantum.c | 2017 Feb 09 |
@vincent-pochet | quantum/keymap_extras/keymap_fr_ch.h | 2017 Feb 09 |
@wez | quantum/dynamic_macro.h | 2017 Jan 29 |
@Wilba6582 | quantum/keymap.h<br>quantum/keymap_common.c<br>quantum/quantum_keycodes.h | 2017 Feb 15 |
@yangliu | quantum/light_ws2812.c<br>quantum/light_ws2812.h<br>quantum/rgblight.c<br>quantum/rgblight.h | 2017 Jan 30 |

File diff suppressed because it is too large Load Diff

158
docs/macros.md Normal file
View File

@@ -0,0 +1,158 @@
# Macros - Send multiple keystrokes when pressing just one key
QMK has a number of ways to define and use macros. These can do anything you want- type common phrases for you, copypasta, repetitive game movements, or even help you code.
**Security Note**: While it is possible to use macros to send passwords, credit card numbers, and other sensitive information it is a supremely bad idea to do so. Anyone who gets ahold of your keyboard will be able to access that information by opening a text editor.
# Macro Definitions
By default QMK assumes you don't have any macros. To define your macros you create an `action_get_macro()` function. For example:
```c
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
if (record->event.pressed) {
switch(id) {
case 0:
return MACRO(D(LSFT), T(H), U(LSFT), T(I), D(LSFT), T(1), U(LSFT), END);
case 1:
return MACRO(D(LSFT), T(B), U(LSFT), T(Y), T(E), D(LSFT), T(1), U(LSFT), END);
}
}
return MACRO_NONE;
};
```
This defines two macros which will be run when the key they are assigned to is pressed. If you'd like them to run when the release is released instead you can change the if statement:
```c
if (!record->event.pressed) {
```
## Macro Commands
A macro can include the following commands:
* I() change interval of stroke in milliseconds.
* D() press key.
* U() release key.
* T() type key(press and release).
* W() wait (milliseconds).
* END end mark.
## Sending strings
Sometimes you just want a key to type out words or phrases. For the most common situations we've provided `SEND_STRING()`, which will type out your string for you instead of having to build a `MACRO()`. Right now it assumes a US keymap with a QWERTY layout, so if you are using something else it may not behave as you expect.
For example:
```c
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
if (record->event.pressed) {
switch(id) {
case 0:
SEND_STRING("QMK is the best thing ever!");
return false;
}
}
return MACRO_NONE;
};
```
## Mapping a Macro to a key
Use the `M()` function within your `KEYMAP()` to call a macro. For example, here is the keymap for a 2-key keyboard:
```c
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = KEYMAP(
M(0), M(1)
),
};
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
if (record->event.pressed) {
switch(id) {
case 0:
return MACRO(D(LSFT), T(H), U(LSFT), T(I), D(LSFT), T(1), U(LSFT), END);
case 1:
return MACRO(D(LSFT), T(B), U(LSFT), T(Y), T(E), D(LSFT), T(1), U(LSFT), END);
}
}
return MACRO_NONE;
};
```
When you press the key on the left it will type "Hi!" and when you press the key on the right it will type "Bye!".
## Naming your macros
If you have a bunch of macros you want to refer to from your keymap while keeping the keymap easily readable you can name them using `#define` at the top of your file.
```c
#define M_HI M(0)
#define M_BYE M(1)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = KEYMAP(
M_HI, M_BYE
),
};
```
# Advanced macro functions
While working within the `action_get_macro()` function block there are some functions you may find useful. Keep in mind that while you can write some fairly advanced code within a macro if your functionality gets too complex you may want to define a custom keycode instead. Macros are meant to be simple.
#### `record->event.pressed`
This is a boolean value that can be tested to see if the switch is being pressed or released. An example of this is
```c
if (record->event.pressed) {
// on keydown
} else {
// on keyup
}
```
#### `register_code(<kc>);`
This sends the `<kc>` keydown event to the computer. Some examples would be `KC_ESC`, `KC_C`, `KC_4`, and even modifiers such as `KC_LSFT` and `KC_LGUI`.
#### `unregister_code(<kc>);`
Parallel to `register_code` function, this sends the `<kc>` keyup event to the computer. If you don't use this, the key will be held down until it's sent.
#### `clear_keyboard();`
This will clear all mods and keys currently pressed.
#### `clear_mods();`
This will clear all mods currently pressed.
#### `clear_keyboard_but_mods();`
This will clear all keys besides the mods currently pressed.
# Advanced Example: Single-key copy/paste (hold to copy, tap to paste)
This example defines a macro which sends `Ctrl-C` when pressed down, and `Ctrl-V` when released.
```c
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
switch(id) {
case 0: {
if (record->event.pressed) {
return MACRO( D(LCTL), T(C), U(LCTL), END );
} else {
return MACRO( D(LCTL), T(V), U(LCTL), END );
}
break;
}
}
return MACRO_NONE;
};
```

167
docs/make_instructions.md Normal file
View File

@@ -0,0 +1,167 @@
# More detailed make instruction
The full syntax of the `make` command is the following, but parts of the command can be left out if you run it from other directories than the `root` (as you might already have noticed by reading the simple instructions).
`<keyboard>-<subproject>-<keymap>-<target>`, where:
* `<keyboard>` is the name of the keyboard, for example `planck`
* Use `allkb` to compile all keyboards
* `<subproject>` is the name of the subproject (revision or sub-model of the keyboard). For example, for Ergodox it can be `ez` or `infinity`, and for Planck `rev3` or `rev4`.
* If the keyboard doesn't have any subprojects, it can be left out
* To compile the default subproject, you can leave it out, or specify `defaultsp`
* Use `allsp` to compile all subprojects
* `<keymap>` is the name of the keymap, for example `algernon`
* Use `allkm` to compile all keymaps
* `<target>` will be explained in more detail below.
**Note:** When you leave some parts of the command out, you should also remove the dash (`-`).
As mentioned above, there are some shortcuts, when you are in a:
* `keyboard` folder, the command will automatically fill the `<keyboard>` part. So you only need to type `<subproject>-<keymap>-<target>`
* `subproject` folder, it will fill in both `<keyboard>` and `<subproject>`
* `keymap` folder, then `<keyboard>` and `<keymap>` will be filled in. If you need to specify the `<subproject>` use the following syntax `<subproject>-<target>`
* Note in order to support this shortcut, the keymap needs its own Makefile (see the example [here](https://github.com/qmk/qmk_firmware/blob/master/doc/keymap_makefile_example.mk))
* `keymap` folder of a `subproject`, then everything except the `<target>` will be filled in
The `<target>` means the following
* If no target is given, then it's the same as `all` below
* `all` compiles the keyboard and generates a `<keyboard>_<keymap>.hex` file in whichever folder you run `make` from. These files are ignored by git, so don't worry about deleting them when committing/creating pull requests.
* `dfu`, `teensy` or `dfu-util`, compile and upload the firmware to the keyboard. If the compilation fails, then nothing will be uploaded. The programmer to use depends on the keyboard. For most keyboards it's `dfu`, but for Infinity keyboards you should use `dfu-util`, and `teensy` for standard Teensys. To find out which command you should use for your keyboard, check the keyboard specific readme. **Note** that some operating systems needs root access for these commands to work, so in that case you need to run for example `sudo make dfu`.
* `clean`, cleans the build output folders to make sure that everything is built from scratch. Run this before normal compilation if you have some unexplainable problems.
Some other targets are supported but, but not important enough to be documented here. Check the source code of the make files for more information.
You can also add extra options at the end of the make command line, after the target
* `make COLOR=false` - turns off color output
* `make SILENT=true` - turns off output besides errors/warnings
* `make VERBOSE=true` - outputs all of the gcc stuff (not interesting, unless you need to debug)
* `make EXTRAFLAGS=-E` - Preprocess the code without doing any compiling (useful if you are trying to debug #define commands)
The make command itself also has some additional options, type `make --help` for more information. The most useful is probably `-jx`, which specifies that you want to compile using more than one CPU, the `x` represents the number of CPUs that you want to use. Setting that can greatly reduce the compile times, especially if you are compiling many keyboards/keymaps. I usually set it to one less than the number of CPUs that I have, so that I have some left for doing other things while it's compiling. Note that not all operating systems and make versions supports that option.
Here are some examples commands
* `make allkb-allsp-allkm` builds everything (all keyboards, all subprojects, all keymaps). Running just `make` from the `root` will also run this.
* `make` from within a `keyboard` directory, is the same as `make keyboard-allsp-allkm`, which compiles all subprojects and keymaps of the keyboard. **NOTE** that this behaviour has changed. Previously it compiled just the default keymap.
* `make ergodox-infinity-algernon-clean` will clean the build output of the Ergodox Infinity keyboard. This example uses the full syntax and can be run from any folder with a `Makefile`
* `make dfu COLOR=false` from within a keymap folder, builds and uploads the keymap, but without color output.
## The `Makefile`
There are 5 different `make` and `Makefile` locations:
* root (`/`)
* keyboard (`/keyboards/<keyboard>/`)
* keymap (`/keyboards/<keyboard>/keymaps/<keymap>/`)
* subproject (`/keyboards/<keyboard>/<subproject>`)
* subproject keymap (`/keyboards/<keyboard>/<subproject>/keymaps/<keymap>`)
The root contains the code used to automatically figure out which keymap or keymaps to compile based on your current directory and commandline arguments. It's considered stable, and shouldn't be modified. The keyboard one will contain the MCU set-up and default settings for your keyboard, and shouldn't be modified unless you are the producer of that keyboard. The keymap Makefile can be modified by users, and is optional. It is included automatically if it exists. You can see an example [here](https://github.com/qmk/qmk_firmware/blob/master/doc/keymap_makefile_example.mk) - the last few lines are the most important. The settings you set here will override any defaults set in the keyboard Makefile. **The file is required if you want to run `make` in the keymap folder.**
For keyboards and subprojects, the make files are split in two parts `Makefile` and `rules.mk`. All settings can be found in the `rules.mk` file, while the `Makefile` is just there for support and including the root `Makefile`. Keymaps contain just one `Makefile` for simplicity.
### Makefile options
Set these variables to `no` to disable them, and `yes` to enable them.
`BOOTMAGIC_ENABLE`
This allows you to hold a key and the salt key (space by default) and have access to a various EEPROM settings that persist over power loss. It's advised you keep this disabled, as the settings are often changed by accident, and produce confusing results that makes it difficult to debug. It's one of the more common problems encountered in help sessions.
Consumes about 1000 bytes.
`MOUSEKEY_ENABLE`
This gives you control over cursor movements and clicks via keycodes/custom functions.
`EXTRAKEY_ENABLE`
This allows you to use the system and audio control key codes.
`CONSOLE_ENABLE`
This allows you to print messages that can be read using [`hid_listen`](https://www.pjrc.com/teensy/hid_listen.html).
By default, all debug (*dprint*) print (*print*, *xprintf*), and user print (*uprint*) messages will be enabled. This will eat up a significant portion of the flash and may make the keyboard .hex file too big to program.
To disable debug messages (*dprint*) and reduce the .hex file size, include `#define NO_DEBUG` in your `config.h` file.
To disable print messages (*print*, *xprintf*) and user print messages (*uprint*) and reduce the .hex file size, include `#define NO_PRINT` in your `config.h` file.
To disable print messages (*print*, *xprintf*) and **KEEP** user print messages (*uprint*), include `#define USER_PRINT` in your `config.h` file.
To see the text, open `hid_listen` and enjoy looking at your printed messages.
**NOTE:** Do not include *uprint* messages in anything other than your keymap code. It must not be used within the QMK system framework. Otherwise, you will bloat other people's .hex files.
Consumes about 400 bytes.
`COMMAND_ENABLE`
This enables magic commands, typically fired with the default magic key combo `LSHIFT+RSHIFT+KEY`. Magic commands include turning on debugging messages (`MAGIC+D`) or temporarily toggling NKRO (`MAGIC+N`).
`SLEEP_LED_ENABLE`
Enables your LED to breath while your computer is sleeping. Timer1 is being used here. This feature is largely unused and untested, and needs updating/abstracting.
`NKRO_ENABLE`
This allows the keyboard to tell the host OS that up to 248 keys are held down at once (default without NKRO is 6). NKRO is off by default, even if `NKRO_ENABLE` is set. NKRO can be forced by adding `#define FORCE_NKRO` to your config.h or by binding `MAGIC_TOGGLE_NKRO` to a key and then hitting the key.
`BACKLIGHT_ENABLE`
This enables your backlight on Timer1 and ports B5, B6, or B7 (for now). You can specify your port by putting this in your `config.h`:
#define BACKLIGHT_PIN B7
`MIDI_ENABLE`
This enables MIDI sending and receiving with your keyboard. To enter MIDI send mode, you can use the keycode `MI_ON`, and `MI_OFF` to turn it off. This is a largely untested feature, but more information can be found in the `quantum/quantum.c` file.
`UNICODE_ENABLE`
This allows you to send unicode symbols via `UC(<unicode>)` in your keymap. Only codes up to 0x7FFF are currently supported.
`UNICODEMAP_ENABLE`
This allows sending unicode symbols using `X(<unicode>)` in your keymap. Codes
up to 0xFFFFFFFF are supported, including emojis. You will need to maintain
a separate mapping table in your keymap file.
Known limitations:
- Under Mac OS, only codes up to 0xFFFF are supported.
- Under Linux ibus, only codes up to 0xFFFFF are supported (but anything important is still under this limit for now).
Characters out of range supported by the OS will be ignored.
`BLUETOOTH_ENABLE`
This allows you to interface with a Bluefruit EZ-key to send keycodes wirelessly. It uses the D2 and D3 pins.
`AUDIO_ENABLE`
This allows you output audio on the C6 pin (needs abstracting). See the [audio section](#audio-output-from-a-speaker) for more information.
`FAUXCLICKY_ENABLE`
Uses buzzer to emulate clicky switches. A cheap imitation of the Cherry blue switches. By default, uses the C6 pin, same as AUDIO_ENABLE.
`VARIABLE_TRACE`
Use this to debug changes to variable values, see the [tracing variables](#tracing-variables) section for more information.
`API_SYSEX_ENABLE`
This enables using the Quantum SYSEX API to send strings (somewhere?)
This consumes about 5390 bytes.
### Customizing Makefile options on a per-keymap basis
If your keymap directory has a file called `Makefile` (note the filename), any Makefile options you set in that file will take precedence over other Makefile options for your particular keyboard.
So let's say your keyboard's makefile has `BACKLIGHT_ENABLE = yes` (or maybe doesn't even list the `BACKLIGHT_ENABLE` option, which would cause it to be off). You want your particular keymap to not have the debug console, so you make a file called `Makefile` and specify `BACKLIGHT_ENABLE = no`.
You can use the `docs/keymap_makefile_example.md` as a template/starting point.

View File

@@ -0,0 +1,36 @@
## supported projects
### PS/2 converter
Confirmed it works on NXP LPC11U35.
- http://developer.mbed.org/platforms/TG-LPC11U35-501/
### Infinity keyboard
It runs on Freescale MK20DX128.
## compile error: cstddef
Experienced this with arm-none-eabi-gcc (4.8.2-14ubuntu1+6) 4.8.2 on ubuntu 14.04.
And resolved with 4.9.3 installed from:
- https://launchpad.net/gcc-arm-embedded
- https://launchpad.net/~terry.guo/+archive/ubuntu/gcc-arm-embedded
```
$ make -f Makefile.mbed
mkdir -p build/.
arm-none-eabi-g++ -include config_mbed.h -mcpu=cortex-m0 -mthumb -c -g -fno-common -fmessage-length=0 -Wall -fno-exceptions -ffunction-sections -fdata-sections -fomit-frame-pointer -fshort-wchar -fno-builtin -MMD -MP -DNDEBUG -Os -DTARGET_LPC11U35_401 -DTARGET_M0 -DTARGET_NXP -DTARGET_LPC11UXX -DTOOLCHAIN_GCC_ARM -DTOOLCHAIN_GCC -D__CORTEX_M0 -DARM_MATH_CM0 -DMBED_BUILD_TIMESTAMP=1399108688.49 -D__MBED__=1 -std=gnu++98 -I. -I../../mbed-sdk/libraries/mbed/targets -I../../mbed-sdk/libraries/mbed/targets/cmsis -I../../mbed-sdk/libraries/mbed/targets/cmsis/TARGET_NXP -I../../mbed-sdk/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11UXX -I../../mbed-sdk/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11UXX/TOOLCHAIN_GCC_ARM -I../../mbed-sdk/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11UXX/TOOLCHAIN_GCC_ARM/TARGET_LPC11U35_501 -I../../mbed-sdk/libraries/mbed/targets/hal -I../../mbed-sdk/libraries/mbed/targets/hal/TARGET_NXP -I../../mbed-sdk/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX -I../../mbed-sdk/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/TARGET_MCU_LPC11U35_501 -I../../mbed-sdk/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/TARGET_MCU_LPC11U35_501/TARGET_LPC11U35_501 -I../../mbed-sdk/libraries/mbed -I../../mbed-sdk/libraries/mbed/hal -I../../mbed-sdk/libraries/mbed/api -I../../mbed-sdk/libraries/mbed/common -I../../mbed-sdk/libraries/USBDevice -I../../mbed-sdk/libraries/USBDevice/USBHID -I../../mbed-sdk/libraries/USBDevice/USBDevice -I../../mbed-sdk/libraries/USBDevice/USBAudio -I../../mbed-sdk/libraries/USBDevice/USBSerial -I../../mbed-sdk/libraries/USBDevice/USBMSD -I../../mbed-sdk/libraries/USBDevice/USBMIDI -I../../protocol/mbed -I../../common -I../../protocol -o build/./main.o main.cpp
In file included from ../../mbed-sdk/libraries/mbed/api/mbed.h:21:0,
from main.cpp:1:
../../mbed-sdk/libraries/mbed/api/platform.h:25:19: fatal error: cstddef: No such file or directory
#include <cstddef>
^
compilation terminated.
make: *** [build/./main.o] Error 1
[13:13] noname@desk:/mnt/old_root/home/noname/tmp/tmk_keyboard/converter/ps2_usb
$ arm-none-eabi-gcc --version
arm-none-eabi-gcc (4.8.2-14ubuntu1+6) 4.8.2
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
```

View File

@@ -0,0 +1,21 @@
In rare circumstances, your keyboard/device can become unwritable, and `dfu-programmer` will give you an error like this:
Erasing flash... Success
Checking memory from 0x0 to 0x6FFF... Empty.
Checking memory from 0x0 to 0x607F... Empty.
0% 100% Programming 0x6080 bytes...
[ X ERROR
Memory write error, use debug for more info.
Currently the only way to solve this is to [reprogram the chip via ISP](https://www.reddit.com/r/olkb/comments/4rjzen/flashing_error_on_mac_os_x/d52rj8o/). This requires another device to be hooked up to a couple of exposed pins on the PCB. There is a guide on how to do this [here](https://learn.sparkfun.com/tutorials/installing-an-arduino-bootloader), and [this is where things are on the Planck PCB](http://imgur.com/lvbxbHt).
An example command to flash the board once things are hooked up is:
avrdude -c usbtiny -p m32u4 -U flash:w:planck_default_rev4.hex
Research is still being done on why this happens, but here are some cases:
* [`make -f Makefile.rn42 dfu` and not the dfu-programmer commands worked for @tybenz](https://github.com/tmk/tmk_keyboard/issues/316) - also see [the hhkb keyboard on tmk](https://github.com/tmk/tmk_keyboard/tree/master/keyboard/hhkb)
* [Doing a force erase works here](https://geekhack.org/index.php?topic=12047.msg1520147#msg1520147)
* [`dfu-programmer atmega32u4 erase --force` works here as well](https://forum.fhem.de/index.php?topic=29777.0) [DE]
* [Unresolved, but some data dumps](https://github.com/dfu-programmer/dfu-programmer/issues/29)

View File

@@ -0,0 +1,388 @@
## Audio output from a speaker
Your keyboard can make sounds! If you've got a Planck, Preonic, or basically any keyboard that allows access to the C6 port, 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.
The audio code lives in [quantum/audio/audio.h](https://github.com/qmk/qmk_firmware/blob/master/quantum/audio/audio.h) and in the other files in the audio directory. It's enabled by default on the Planck [stock keymap](https://github.com/qmk/qmk_firmware/blob/master/keyboards/planck/keymaps/default/keymap.c). Here are the important bits:
```
#include "audio.h"
```
Then, lower down the file:
```
float tone_startup[][2] = {
ED_NOTE(_E7 ),
E__NOTE(_CS7),
E__NOTE(_E6 ),
E__NOTE(_A6 ),
M__NOTE(_CS7, 20)
};
```
This is how you write a song. Each of these lines is a note, so we have a little ditty composed of five notes here.
Then, we have this chunk:
```
float tone_qwerty[][2] = SONG(QWERTY_SOUND);
float tone_dvorak[][2] = SONG(DVORAK_SOUND);
float tone_colemak[][2] = SONG(COLEMAK_SOUND);
float tone_plover[][2] = SONG(PLOVER_SOUND);
float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND);
float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
float goodbye[][2] = SONG(GOODBYE_SOUND);
```
Wherein we bind predefined songs (from [quantum/audio/song_list.h](https://github.com/qmk/qmk_firmware/blob/master/quantum/audio/song_list.h)) into named variables. This is one optimization that helps save on memory: These songs only take up memory when you reference them in your keymap, because they're essentially all preprocessor directives.
So now you have something called `tone_plover` for example. How do you make it play the Plover tune, then? If you look further down the keymap, you'll see this:
```
PLAY_NOTE_ARRAY(tone_plover, false, 0); // Signature is: Song name, repeat, rest style
```
This is inside one of the macros. So when that macro executes, your keyboard plays that particular chime.
"Rest style" in the method signature above (the last parameter) specifies if there's a rest (a moment of silence) between the notes.
## Music mode
The music mode maps your columns to a chromatic scale, and your rows to octaves. This works best with ortholinear keyboards, but can be made to work with others. All keycodes less than `0xFF` get blocked, so you won't type while playing notes - if you have special keys/mods, those will still work. A work-around for this is to jump to a different layer with KC_NOs before (or after) enabling music mode.
Recording is experimental due to some memory issues - if you experience some weird behavior, unplugging/replugging your keyboard will fix things.
Keycodes available:
* `MU_ON` - Turn music mode on
* `MU_OFF` - Turn music mode off
* `MU_TOG` - Toggle music mode
In music mode, the following keycodes work differently, and don't pass through:
* `LCTL` - start a recording
* `LALT` - stop recording/stop playing
* `LGUI` - play recording
* `KC_UP` - speed-up playback
* `KC_DOWN` - slow-down playback
## MIDI functionalty
This is still a WIP, but check out `quantum/keymap_midi.c` to see what's happening. Enable from the Makefile.
## Bluetooth functionality
This requires [some hardware changes](https://www.reddit.com/r/MechanicalKeyboards/comments/3psx0q/the_planck_keyboard_with_bluetooth_guide_and/?ref=search_posts), but can be enabled via the Makefile. The firmware will still output characters via USB, so be aware of this when charging via a computer. It would make sense to have a switch on the Bluefruit to turn it off at will.
## RGB Under Glow Mod
![Planck with RGB Underglow](https://raw.githubusercontent.com/qmk/qmk_firmware/master/keyboards/planck/keymaps/yang/planck-with-rgb-underglow.jpg)
Here is a quick demo on Youtube (with NPKC KC60) (https://www.youtube.com/watch?v=VKrpPAHlisY).
For this mod, you need an unused pin wiring to DI of WS2812 strip. After wiring the VCC, GND, and DI, you can enable the underglow in your Makefile.
RGBLIGHT_ENABLE = yes
In order to use the underglow animation functions, you need to have `#define RGBLIGHT_ANIMATIONS` in your `config.h`.
Please add the following options into your config.h, and set them up according your hardware configuration. These settings are for the `F4` pin by default:
#define RGB_DI_PIN F4 // The pin your RGB strip is wired to
#define RGBLIGHT_ANIMATIONS // Require for fancier stuff (not compatible with audio)
#define RGBLED_NUM 14 // Number of LEDs
#define RGBLIGHT_HUE_STEP 10
#define RGBLIGHT_SAT_STEP 17
#define RGBLIGHT_VAL_STEP 17
You'll need to edit `RGB_DI_PIN` to the pin you have your `DI` on your RGB strip wired to.
The firmware supports 5 different light effects, and the color (hue, saturation, brightness) can be customized in most effects. To control the underglow, you need to modify your keymap file to assign those functions to some keys/key combinations. For details, please check this keymap. `keyboards/planck/keymaps/yang/keymap.c`
### WS2812 Wiring
![WS2812 Wiring](https://raw.githubusercontent.com/qmk/qmk_firmware/master/keyboards/planck/keymaps/yang/WS2812-wiring.jpg)
Please note the USB port can only supply a limited amount of power to the keyboard (500mA by standard, however, modern computer and most usb hubs can provide 700+mA.). According to the data of NeoPixel from Adafruit, 30 WS2812 LEDs require a 5V 1A power supply, LEDs used in this mod should not more than 20.
## PS/2 Mouse Support
Its possible to hook up a PS/2 mouse (for example touchpads or trackpoints) to your keyboard as a composite device.
To hook up a Trackpoint, you need to obtain a Trackpoint module (i.e. harvest from a Thinkpad keyboard), identify the function of each pin of the module, and make the necessary circuitry between controller and Trackpoint module. For more information, please refer to [Trackpoint Hardware](https://deskthority.net/wiki/TrackPoint_Hardware) page on Deskthority Wiki.
There are three available modes for hooking up PS/2 devices: USART (best), interrupts (better) or busywait (not recommended).
### Busywait version
Note: This is not recommended, you may encounter jerky movement or unsent inputs. Please use interrupt or USART version if possible.
In rules.mk:
```
PS2_MOUSE_ENABLE = yes
PS2_USE_BUSYWAIT = yes
```
In your keyboard config.h:
```
#ifdef PS2_USE_BUSYWAIT
# define PS2_CLOCK_PORT PORTD
# define PS2_CLOCK_PIN PIND
# define PS2_CLOCK_DDR DDRD
# define PS2_CLOCK_BIT 1
# define PS2_DATA_PORT PORTD
# define PS2_DATA_PIN PIND
# define PS2_DATA_DDR DDRD
# define PS2_DATA_BIT 2
#endif
```
### Interrupt version
The following example uses D2 for clock and D5 for data. You can use any INT or PCINT pin for clock, and any pin for data.
In rules.mk:
```
PS2_MOUSE_ENABLE = yes
PS2_USE_INT = yes
```
In your keyboard config.h:
```
#ifdef PS2_USE_INT
#define PS2_CLOCK_PORT PORTD
#define PS2_CLOCK_PIN PIND
#define PS2_CLOCK_DDR DDRD
#define PS2_CLOCK_BIT 2
#define PS2_DATA_PORT PORTD
#define PS2_DATA_PIN PIND
#define PS2_DATA_DDR DDRD
#define PS2_DATA_BIT 5
#define PS2_INT_INIT() do { \
EICRA |= ((1<<ISC21) | \
(0<<ISC20)); \
} while (0)
#define PS2_INT_ON() do { \
EIMSK |= (1<<INT2); \
} while (0)
#define PS2_INT_OFF() do { \
EIMSK &= ~(1<<INT2); \
} while (0)
#define PS2_INT_VECT INT2_vect
#endif
```
### USART version
To use USART on the ATMega32u4, you have to use PD5 for clock and PD2 for data. If one of those are unavailable, you need to use interrupt version.
In rules.mk:
```
PS2_MOUSE_ENABLE = yes
PS2_USE_USART = yes
```
In your keyboard config.h:
```
#ifdef PS2_USE_USART
#define PS2_CLOCK_PORT PORTD
#define PS2_CLOCK_PIN PIND
#define PS2_CLOCK_DDR DDRD
#define PS2_CLOCK_BIT 5
#define PS2_DATA_PORT PORTD
#define PS2_DATA_PIN PIND
#define PS2_DATA_DDR DDRD
#define PS2_DATA_BIT 2
/* synchronous, odd parity, 1-bit stop, 8-bit data, sample at falling edge */
/* set DDR of CLOCK as input to be slave */
#define PS2_USART_INIT() do { \
PS2_CLOCK_DDR &= ~(1<<PS2_CLOCK_BIT); \
PS2_DATA_DDR &= ~(1<<PS2_DATA_BIT); \
UCSR1C = ((1 << UMSEL10) | \
(3 << UPM10) | \
(0 << USBS1) | \
(3 << UCSZ10) | \
(0 << UCPOL1)); \
UCSR1A = 0; \
UBRR1H = 0; \
UBRR1L = 0; \
} while (0)
#define PS2_USART_RX_INT_ON() do { \
UCSR1B = ((1 << RXCIE1) | \
(1 << RXEN1)); \
} while (0)
#define PS2_USART_RX_POLL_ON() do { \
UCSR1B = (1 << RXEN1); \
} while (0)
#define PS2_USART_OFF() do { \
UCSR1C = 0; \
UCSR1B &= ~((1 << RXEN1) | \
(1 << TXEN1)); \
} while (0)
#define PS2_USART_RX_READY (UCSR1A & (1<<RXC1))
#define PS2_USART_RX_DATA UDR1
#define PS2_USART_ERROR (UCSR1A & ((1<<FE1) | (1<<DOR1) | (1<<UPE1)))
#define PS2_USART_RX_VECT USART1_RX_vect
#endif
```
### Additional Settings
#### PS/2 mouse features
These enable settings supported by the PS/2 mouse protocol: http://www.computer-engineering.org/ps2mouse/
```
/* Use remote mode instead of the default stream mode (see link) */
#define PS2_MOUSE_USE_REMOTE_MODE
/* Enable the scrollwheel or scroll gesture on your mouse or touchpad */
#define PS2_MOUSE_ENABLE_SCROLLING
/* Some mice will need a scroll mask to be configured. The default is 0xFF. */
#define PS2_MOUSE_SCROLL_MASK 0x0F
/* Applies a transformation to the movement before sending to the host (see link) */
#define PS2_MOUSE_USE_2_1_SCALING
/* The time to wait after initializing the ps2 host */
#define PS2_MOUSE_INIT_DELAY 1000 /* Default */
```
You can also call the following functions from ps2_mouse.h
```
void ps2_mouse_disable_data_reporting(void);
void ps2_mouse_enable_data_reporting(void);
void ps2_mouse_set_remote_mode(void);
void ps2_mouse_set_stream_mode(void);
void ps2_mouse_set_scaling_2_1(void);
void ps2_mouse_set_scaling_1_1(void);
void ps2_mouse_set_resolution(ps2_mouse_resolution_t resolution);
void ps2_mouse_set_sample_rate(ps2_mouse_sample_rate_t sample_rate);
```
#### Fine control
Use the following defines to change the sensitivity and speed of the mouse.
Note: you can also use `ps2_mouse_set_resolution` for the same effect (not supported on most touchpads).
```
#define PS2_MOUSE_X_MULTIPLIER 3
#define PS2_MOUSE_Y_MULTIPLIER 3
#define PS2_MOUSE_V_MULTIPLIER 1
```
#### Scroll button
If you're using a trackpoint, you will likely want to be able to use it for scrolling.
Its possible to enable a "scroll button/s" that when pressed will cause the mouse to scroll instead of moving.
To enable the feature, you must set a scroll button mask as follows:
```
#define PS2_MOUSE_SCROLL_BTN_MASK (1<<PS2_MOUSE_BUTTON_MIDDLE) /* Default */
```
To disable the scroll button feature:
```
#define PS2_MOUSE_SCROLL_BTN_MASK 0
```
The available buttons are:
```
#define PS2_MOUSE_BTN_LEFT 0
#define PS2_MOUSE_BTN_RIGHT 1
#define PS2_MOUSE_BTN_MIDDLE 2
```
You can also combine buttons in the mask by `|`ing them together.
Once you've configured your scroll button mask, you must configure the scroll button send interval.
This is the interval before which if the scroll buttons were released they would be sent to the host.
After this interval, they will cause the mouse to scroll and will not be sent.
```
#define PS2_MOUSE_SCROLL_BTN_SEND 300 /* Default */
```
To disable sending the scroll buttons:
```
#define PS2_MOUSE_SCROLL_BTN_SEND 0
```
Fine control over the scrolling is supported with the following defines:
```
#define PS2_MOUSE_SCROLL_DIVISOR_H 2
#define PS2_MOUSE_SCROLL_DIVISOR_V 2
```
#### Debug settings
To debug the mouse, add `debug_mouse = true` or enable via bootmagic.
```
/* To debug the mouse reports */
#define PS2_MOUSE_DEBUG_HID
#define PS2_MOUSE_DEBUG_RAW
```
## Safety Considerations
You probably don't want to "brick" your keyboard, making it impossible
to rewrite firmware onto it. Here are some of the parameters to show
what things are (and likely aren't) too risky.
- If your keyboard map does not include RESET, then, to get into DFU
mode, you will need to press the reset button on the PCB, which
requires unscrewing the bottom.
- Messing with tmk_core / common files might make the keyboard
inoperable
- Too large a .hex file is trouble; `make dfu` will erase the block,
test the size (oops, wrong order!), which errors out, failing to
flash the keyboard, leaving it in DFU mode.
- To this end, note that the maximum .hex file size on Planck is
7000h (28672 decimal)
```
Linking: .build/planck_rev4_cbbrowne.elf [OK]
Creating load file for Flash: .build/planck_rev4_cbbrowne.hex [OK]
Size after:
text data bss dec hex filename
0 22396 0 22396 577c planck_rev4_cbbrowne.hex
```
- The above file is of size 22396/577ch, which is less than
28672/7000h
- As long as you have a suitable alternative .hex file around, you
can retry, loading that one
- Some of the options you might specify in your keyboard's Makefile
consume extra memory; watch out for BOOTMAGIC_ENABLE,
MOUSEKEY_ENABLE, EXTRAKEY_ENABLE, CONSOLE_ENABLE, API_SYSEX_ENABLE
- DFU tools do /not/ allow you to write into the bootloader (unless
you throw in extra fruitsalad of options), so there is little risk
there.
- EEPROM has around a 100000 write cycle. You shouldn't rewrite the
firmware repeatedly and continually; that'll burn the EEPROM
eventually.

17
docs/mouse_keys.md Normal file
View File

@@ -0,0 +1,17 @@
# Can I increase the speed of the mouse keys?
**Q:** The default speed for controlling the mouse with the keyboard is slow. I've tried increasing the mouse's sensitivity at work using xset m and it worked, although sometimes it changes by itself for some reason. At home, on Arch Linux, this does not change ti. I've looked through the forums and resolved to use libinput using xinput but using that I only manage to change the speed of the mouse using the actual mouse. The speed of the mouse using the keyboard controls remained unchanged.
Is there perhaps something I can input in the keymap.c to change the sensitivity? Or some other surefire way of increasing the speed?
Thanks!
**A:** In your keymap's config.h:
```
#define MOUSEKEY_INTERVAL 20
#define MOUSEKEY_DELAY 0
#define MOUSEKEY_TIME_TO_MAX 60
#define MOUSEKEY_MAX_SPEED 7
#define MOUSEKEY_WHEEL_DELAY 0
```
Tweak away. A lower interval or higher max speed will effectively make the mouse move faster. Time-to-max controls acceleration. (See [this Reddit thread for the original discussion](https://www.reddit.com/r/ErgoDoxEZ/comments/61fwr2/a_reliable_way_to_increase_the_speed_of_the_mouse/)).

View File

@@ -119,7 +119,7 @@ A number of other keycodes have been added that you may find useful:
The extended keymap extends the number of function layers from 32 to the near-infinite value of 256. Rather than using `FN<num>` notation (still available, but limited to `FN0`-`FN31`), you can use the `FUNC(<num>)` notation. `F(<num>)` is a shortcut for this.
The function actions are unchanged, and you can see the full list of them [here](https://github.com/jackhumbert/tmk_keyboard/blob/master/common/action_code.h). They are explained in detail [here](https://github.com/jackhumbert/tmk_keyboard/blob/master/doc/keymap.md#2-action).
The function actions are unchanged, and you can see the full list of them [here](https://github.com/qmk/qmk_firmware/blob/master/tmk_core/common/action_code.h). They are explained in detail [here](keymap.md#2-action).
### Macros

View File

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

View File

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

View File

@@ -0,0 +1,14 @@
= Previously Asked Questions
:toc:
:toc-placement: preamble
toc::[]
= Question thread
http://deskthority.net/workshop-f7/how-to-build-your-very-own-keyboard-firmware-t7177-270.html
= Questions
== Columns beyond 16(uint16_t) cannot be read
* https://github.com/tmk/tmk_keyboard/wiki/FAQ#cant-read-comlumn-of-matrix-beyond-16
* http://deskthority.net/workshop-f7/how-to-build-your-very-own-keyboard-firmware-t7177-270.html#p247051
* http://deskthority.net/workshop-f7/rebuilding-and-redesigning-a-classic-thinkpad-keyboard-t6181-60.html#p146279

75
docs/qmk_overview.md Normal file
View File

@@ -0,0 +1,75 @@
# QMK Overview
This page attempts to explain the basic information you need to know to work with the QMK project. It assumes that you are familiar with navigating a UNIX shell, but does not assume you are familiar with C or with compiling using make.
# Basic QMK structure
QMK is a fork of @tmk's [tmk_keyboard](https://github.com/tmk/tmk_keyboard) project. The original TMK code, with modifications, can be found in the `tmk` folder. The QMK additions to the project may be found in the `quantum` folder. Keyboard projects may be found in the `handwired` and `keyboard` folders.
## Keyboard project structure
Within the `handwired` and `keyboard` folders is a directory for each keyboard project, for example `qmk_firmware/keyboards/clueboard`. Within you'll find the following structure:
* `keymaps/`: Different keymaps that can be built
* `rules.mk`: The file that sets the default "make" options. Do not edit this file directly, instead use a keymap specific `Makefile`.
* `config.h`: The file that sets the default compile time options. Do not edit this file directly, instead use a keymap specific `config.h`.
### Keymap structure
In every keymap folder, the following files may be found. Only `keymap.c` is required, if the rest of the files are not found the default options will be chosen.
* `config.h`: the options to configure your keymap
* `keymap.c`: all of your keymap code, required
* `Makefile`: the features of QMK that are enabled, required to run `make` in your keymap folder
* `readme.md`: a description of your keymap, how others might use it, and explanations of features
* Other files: Some people choose to include an image depicting the layout, and other files that help people to use or understand a particular keymap.
# The `make` command
The `make` command is how you compile the firmware into a .hex file, which can be loaded by a dfu programmer (like dfu-progammer via `make dfu`) or the [Teensy loader](https://www.pjrc.com/teensy/loader.html) (only used with Teensys). It it recommended that you always run make from within the `root` folder.
**NOTE:** To abort a make command press `Ctrl-c`
For more details on the QMK build process see [Make Instructions](make_instructions.md).
### Simple instructions for building and uploading a keyboard
**Most keyboards have more specific instructions in the keyboard specific readme.md file, so please check that first**
1. Enter the `root` folder
2. Run `make <keyboard>-<subproject>-<keymap>-<programmer>`
In the above commands, replace:
* `<keyboard>` with the name of your keyboard
* `<keymap>` with the name of your keymap
* `<subproject>` with the name of the subproject (revision or sub-model of your keyboard). For example, for Ergodox it can be `ez` or `infinity`, and for Planck `rev3` or `rev4`.
* If the keyboard doesn't have a subproject, or if you are happy with the default (defined in `rules.mk` file of the `keyboard` folder), you can leave it out. But remember to also remove the dash (`-`) from the command.
* `<programmer>` The programmer to use. Most keyboards use `dfu`, but some use `teensy`. Infinity keyboards use `dfu-util`. Check the readme file in the keyboard folder to find out which programmer to use.
* If you don't add `-<programmer` to the command line, the firmware will be still be compiled into a hex file, but the upload will be skipped.
**NOTE:** Some operating systems will refuse to program unless you run the make command as root for example `sudo make clueboard-default-dfu`
## Make Examples
* Build all Clueboard keymaps: `make clueboard`
* Build the default Planck keymap: `make planck-rev4-default`
* Build and flash your ergodox-ez: `make ergodox-ez-default-teensy`
# The `config.h` file
There are 2 `config.h` locations:
* keyboard (`/keyboards/<keyboard>/`)
* keymap (`/keyboards/<keyboard>/keymaps/<keymap>/`)
The keyboard `config.h` is included only if the keymap one doesn't exist. The format to use for your custom one [is here](https://github.com/qmk/qmk_firmware/blob/master/doc/keymap_config_h_example.h). If you want to override a setting from the parent `config.h` file, you need to do this:
```c
#undef MY_SETTING
#define MY_SETTING 4
```
For a value of `4` for this imaginary setting. So we `undef` it first, then `define` it.
You can then override any settings, rather than having to copy and paste the whole thing.

View File

@@ -0,0 +1 @@
# Get Report Descriptor with lsusb

24
docs/space_cadet_shift.md Normal file
View File

@@ -0,0 +1,24 @@
## Space Cadet Shift: The future, built in
Steve Losh [described](http://stevelosh.com/blog/2012/10/a-modern-space-cadet/) the Space Cadet Shift quite well. Essentially, you hit the left Shift on its own, and you get an opening parenthesis; hit the right Shift on its own, and you get the closing one. When hit with other keys, the Shift key keeps working as it always does. Yes, it's as cool as it sounds.
To use it, use `KC_LSPO` (Left Shift, Parens Open) for your left Shift on your keymap, and `KC_RSPC` (Right Shift, Parens Close) for your right Shift.
It's defaulted to work on US keyboards, but if your layout uses different keys for parenthesis, you can define those in your `config.h` like this:
#define LSPO_KEY KC_9
#define RSPC_KEY KC_0
You can also choose between different rollover behaviors of the shift keys by defining:
#define DISABLE_SPACE_CADET_ROLLOVER
in your `config.h`. Disabling rollover allows you to use the opposite shift key to cancel the space cadet state in the event of an erroneous press instead of emitting a pair of parentheses when the keys are released.
The only other thing you're going to want to do is create a `Makefile` in your keymap directory and set the following:
```
COMMAND_ENABLE = no # Commands for debug and configuration
```
This is just to keep the keyboard from going into command mode when you hold both Shift keys at the same time.

144
docs/tap_dance.md Normal file
View File

@@ -0,0 +1,144 @@
# Tap Dance: A single key can do 3, 5, or 100 different things
Hit the semicolon key once, send a semicolon. Hit it twice, rapidly -- send a colon. Hit it three times, and your keyboard's LEDs do a wild dance. That's just one example of what Tap Dance can do. It's one of the nicest community-contributed features in the firmware, conceived and created by [algernon](https://github.com/algernon) in [#451](https://github.com/qmk/qmk_firmware/pull/451). Here's how algernon describes the feature:
With this feature one can specify keys that behave differently, based on the amount of times they have been tapped, and when interrupted, they get handled before the interrupter.
To make it clear how this is different from `ACTION_FUNCTION_TAP`, lets explore a certain setup! We want one key to send `Space` on single tap, but `Enter` on double-tap.
With `ACTION_FUNCTION_TAP`, it is quite a rain-dance to set this up, and has the problem that when the sequence is interrupted, the interrupting key will be send first. Thus, `SPC a` will result in `a SPC` being sent, if they are typed within `TAPPING_TERM`. With the tap dance feature, that'll come out as `SPC a`, correctly.
The implementation hooks into two parts of the system, to achieve this: into `process_record_quantum()`, and the matrix scan. We need the latter to be able to time out a tap sequence even when a key is not being pressed, so `SPC` alone will time out and register after `TAPPING_TERM` time.
But lets start with how to use it, first!
First, you will need `TAP_DANCE_ENABLE=yes` in your `Makefile`, because the feature is disabled by default. This adds a little less than 1k to the firmware size. Next, you will want to define some tap-dance keys, which is easiest to do with the `TD()` macro, that - similar to `F()`, takes a number, which will later be used as an index into the `tap_dance_actions` array.
This array specifies what actions shall be taken when a tap-dance key is in action. Currently, there are three possible options:
* `ACTION_TAP_DANCE_DOUBLE(kc1, kc2)`: Sends the `kc1` keycode when tapped once, `kc2` otherwise. When the key is held, the appropriate keycode is registered: `kc1` when pressed and held, `kc2` when tapped once, then pressed and held.
* `ACTION_TAP_DANCE_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.
And that's the bulk of it!
And now, on to the explanation of how it works!
The main entry point is `process_tap_dance()`, called from `process_record_quantum()`, which is run for every keypress, and our handler gets to run early. This function checks whether the key pressed is a tap-dance key. If it is not, and a tap-dance was in action, we handle that first, and enqueue the newly pressed key. If it is a tap-dance key, then we check if it is the same as the already active one (if there's one active, that is). If it is not, we fire off the old one first, then register the new one. If it was the same, we increment the counter and the timer.
This means that you have `TAPPING_TERM` time to tap the key again, you do not have to input all the taps within that timeframe. This allows for longer tap counts, with minimal impact on responsiveness.
Our next stop is `matrix_scan_tap_dance()`. This handles the timeout of tap-dance keys.
For the sake of flexibility, tap-dance actions can be either a pair of keycodes, or a user function. The latter allows one to handle higher tap counts, or do extra things, like blink the LEDs, fiddle with the backlighting, and so on. This is accomplished by using an union, and some clever macros.
### Examples
Here's a simple example for a single definition:
1. In your `makefile`, add `TAP_DANCE_ENABLE = yes`
2. In your `config.h` (which you can copy from `qmk_firmware/keyboards/planck/config.h` to your keymap directory), add `#define TAPPING_TERM 200`
3. In your `keymap.c` file, define the variables and definitions, then add to your keymap:
```c
//Tap Dance Declarations
enum {
TD_ESC_CAPS = 0
};
//Tap Dance Definitions
qk_tap_dance_action_t tap_dance_actions[] = {
//Tap once for Esc, twice for Caps Lock
[TD_ESC_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CAPS)
// Other declarations would go here, separated by commas, if you have them
};
//In Layer declaration, add tap dance item in place of a key code
TD(TD_ESC_CAPS)
```
Here's a more complex example involving custom actions:
```c
enum {
CT_SE = 0,
CT_CLN,
CT_EGG,
CT_FLSH,
};
/* Have the above three on the keymap, TD(CT_SE), etc... */
void dance_cln_finished (qk_tap_dance_state_t *state, void *user_data) {
if (state->count == 1) {
register_code (KC_RSFT);
register_code (KC_SCLN);
} else {
register_code (KC_SCLN);
}
}
void dance_cln_reset (qk_tap_dance_state_t *state, void *user_data) {
if (state->count == 1) {
unregister_code (KC_RSFT);
unregister_code (KC_SCLN);
} else {
unregister_code (KC_SCLN);
}
}
void dance_egg (qk_tap_dance_state_t *state, void *user_data) {
if (state->count >= 100) {
SEND_STRING ("Safety dance!");
reset_tap_dance (state);
}
}
// on each tap, light up one led, from right to left
// on the forth tap, turn them off from right to left
void dance_flsh_each(qk_tap_dance_state_t *state, void *user_data) {
switch (state->count) {
case 1:
ergodox_right_led_3_on();
break;
case 2:
ergodox_right_led_2_on();
break;
case 3:
ergodox_right_led_1_on();
break;
case 4:
ergodox_right_led_3_off();
_delay_ms(50);
ergodox_right_led_2_off();
_delay_ms(50);
ergodox_right_led_1_off();
}
}
// on the fourth tap, set the keyboard on flash state
void dance_flsh_finished(qk_tap_dance_state_t *state, void *user_data) {
if (state->count >= 4) {
reset_keyboard();
reset_tap_dance(state);
}
}
// if the flash state didnt happen, then turn off leds, left to right
void dance_flsh_reset(qk_tap_dance_state_t *state, void *user_data) {
ergodox_right_led_1_off();
_delay_ms(50);
ergodox_right_led_2_off();
_delay_ms(50);
ergodox_right_led_3_off();
}
qk_tap_dance_action_t tap_dance_actions[] = {
[CT_SE] = ACTION_TAP_DANCE_DOUBLE (KC_SPC, KC_ENT)
,[CT_CLN] = ACTION_TAP_DANCE_FN_ADVANCED (NULL, dance_cln_finished, dance_cln_reset)
,[CT_EGG] = ACTION_TAP_DANCE_FN (dance_egg)
,[CT_FLSH] = ACTION_TAP_DANCE_FN_ADVANCED (dance_flsh_each, dance_flsh_finished, dance_flsh_reset)
};
```

View File

@@ -0,0 +1,17 @@
.Makefile
[source,Makefile]
----
# Build Options
# comment out to disable the options.
#
BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = yes # Console for debug(+400)
COMMAND_ENABLE = yes # Commands for debug and configuration
#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
----

View File

@@ -0,0 +1,34 @@
## TMK based projects
Add your project here!
See https://github.com/tmk/tmk_keyboard/issues/173
### keyboards
**S60-X**: [DIY 60% keyboard](https://www.massdrop.com/buy/sentraq-60-diy-keyboard-kit?mode=guest_open) designed by [VinnyCordeiro](https://github.com/VinnyCordeiro) for Sentraq:
- https://github.com/VinnyCordeiro/tmk_keyboard
**Octagon V1**: Korean custom keyboard designed by Duck.
- https://github.com/xauser/tmk_keyboard/tree/xauser
**Compact L3**: Custom keyboard designed by LifeZone and LeeKu.
- https://github.com/xauser/tmk_keyboard/tree/xauser
**KMAC, 1,2 and Happy**: Custom keyboard designed by kbdmania.
- https://github.com/ageaenes/tmk_keyboard
**P60**: [DIY wired 60% keyboard](https://imgur.com/a/zwsDN) by [p3lim](https://github.com/p3lim).
- https://github.com/p3lim/keyboard_firmware
**Nerd, Kitten Paw, Lightsaber, Phantom, Lightpad, Ergodox** on [xauser](https://github.com/xauser)'s repository
- https://github.com/xauser/tmk_keyboard/tree/xauser
**ErgoDox** on [cub-unanic](https://github.com/cub-uanic)'s repository
- https://github.com/cub-uanic/tmk_keyboard/tree/master/keyboard/ergodox
**Atreus** by [technomancy](https://atreus.technomancy.us)
- https://github.com/technomancy/tmk_keyboard/tree/atreus/keyboard/atreus
**[mcdox](https://github.com/DavidMcEwan/mcdox)**
- https://github.com/DavidMcEwan/tmk_keyboard/tree/master/keyboard/mcdox
### converters

69
docs/tmk_own_projects.md Normal file
View File

@@ -0,0 +1,69 @@
## TMK own projects by hasu
Located in [tmk_keyboard](https://github.com/tmk/tmk_keyboard/tree/master/) repository.
### converter
* [ps2_usb] - [PS/2 keyboard to USB][GH_ps2]
* [adb_usb] - [ADB keyboard to USB][GH_adb]
* [m0110_usb] - [Macintosh 128K/512K/Plus keyboard to USB][GH_m0110]
* [terminal_usb] - [IBM Model M terminal keyboard(PS/2 scancode set3) to USB][GH_terminal]
* [news_usb] - [Sony NEWS keyboard to USB][GH_news]
* [x68k_usb] - [Sharp X68000 keyboard to USB][GH_x68k]
* [sun_usb] - [Sun] to USB(type4, 5 and 3?)
* [pc98_usb] - [PC98] to USB
* [usb_usb] - USB to USB(experimental)
* [ascii_usb] - ASCII(Serial console terminal) to USB
* [ibm4704_usb] - [IBM 4704 keyboard Converter][GH_ibm4704]
### keyboard
* [hhkb] - [Happy Hacking Keyboard pro][GH_hhkb]
* [gh60] - [GH60][GH60_diy] DIY 60% keyboard [prototype][GH60_proto]
* [hbkb] - [Happy Buckling spring keyboard][GH_hbkb](IBM Model M 60% mod)
* [hid_liber] - [HID liberation][HID_liber] controller (by alaricljs)
* [phantom] - [Phantom] keyboard (by Tranquilite)
* [IIgs_Standard] - Apple [IIGS] keyboard mod(by JeffreySung)
* [macway] - [Compact keyboard mod][GH_macway] [retired]
* [KMAC] - Korean custom keyboard
* [Lightsaber] - Korean custom keyboard
[ps2_usb]: https://github.com/tmk/tmk_keyboard/tree/master/converter/ps2_usb/
[adb_usb]: https://github.com/tmk/tmk_keyboard/tree/master/converter/adb_usb/
[m0110_usb]: https://github.com/tmk/tmk_keyboard/tree/master/converter/m0110_usb
[terminal_usb]: https://github.com/tmk/tmk_keyboard/tree/master/converter/terminal_usb/
[news_usb]: https://github.com/tmk/tmk_keyboard/tree/master/converter/news_usb/
[x68k_usb]: https://github.com/tmk/tmk_keyboard/tree/master/converter/x68k_usb/
[sun_usb]: https://github.com/tmk/tmk_keyboard/tree/master/converter/sun_usb/
[pc98_usb]: https://github.com/tmk/tmk_keyboard/tree/master/converter/pc98_usb/
[usb_usb]: https://github.com/tmk/tmk_keyboard/tree/master/converter/usb_usb/
[ascii_usb]: https://github.com/tmk/tmk_keyboard/tree/master/converter/ascii_usb/
[ibm4704_usb]: https://github.com/tmk/tmk_keyboard/tree/master/converter/ibm4704_usb
[hhkb]: https://github.com/tmk/tmk_keyboard/tree/master/keyboard/hhkb/
[gh60]: https://github.com/tmk/tmk_keyboard/tree/master/keyboard/gh60/
[hbkb]: https://github.com/tmk/tmk_keyboard/tree/master/keyboard/hbkb/
[hid_liber]: https://github.com/tmk/tmk_keyboard/tree/master/keyboard/hid_liber/
[phantom]: https://github.com/tmk/tmk_keyboard/tree/master/keyboard/phantom/
[IIgs_Standard]: https://github.com/tmk/tmk_keyboard/tree/master/keyboard/IIgs/
[macway]: https://github.com/tmk/tmk_keyboard/tree/master/keyboard/macway/
[KMAC]: https://github.com/tmk/tmk_keyboard/tree/master/keyboard/kmac/
[Lightsaber]: https://github.com/tmk/tmk_keyboard/tree/master/keyboard/lightsaber/
[GH_macway]: http://geekhack.org/showwiki.php?title=Island:11930
[GH_hhkb]: http://geekhack.org/showwiki.php?title=Island:12047
[GH_ps2]: http://geekhack.org/showwiki.php?title=Island:14618
[GH_adb]: http://geekhack.org/showwiki.php?title=Island:14290
[GH_hhkb_bt]: http://geekhack.org/showwiki.php?title=Island:20851
[GH_m0110]: http://geekhack.org/showwiki.php?title=Island:24965
[GH_news]: http://geekhack.org/showwiki.php?title=Island:25759
[GH_terminal]: http://geekhack.org/showwiki.php?title=Island:27272
[GH_x68k]: http://geekhack.org/showwiki.php?title=Island:29060
[GH_hbkb]: http://geekhack.org/showwiki.php?title=Island:29483
[GH_ibm4704]: http://geekhack.org/index.php?topic=54706.0
[HID_liber]: http://deskthority.net/wiki/HID_Liberation_Device_-_DIY_Instructions
[Phantom]: http://geekhack.org/index.php?topic=26742
[GH60_diy]: http://geekhack.org/index.php?topic=34959
[GH60_proto]: http://geekhack.org/index.php?topic=37570.0
[PC98]: http://en.wikipedia.org/wiki/NEC_PC-9801
[Sun]: http://en.wikipedia.org/wiki/Sun-3
[IIGS]: http://en.wikipedia.org/wiki/Apple_IIGS
See other [[TMK Based Projects]]

View File

@@ -113,13 +113,13 @@ Third party libraries like LUFA, PJRC and V-USB have their own license respectiv
Build Firmware and Program Controller
-------------------------------------
See [build environment setup](/readme.md#build-environment-setup), or the readme in the particular keyboards/* folder.
See [build environment setup](build_environment_setup.md), or the readme in the particular keyboards/* folder.
Change your keymap
------------------
See [doc/keymap.md](tmk_core/doc/keymap.md).
See [keymap.md](keymap.md).
@@ -159,7 +159,7 @@ Boot Magic Configuration - Virtual DIP Switch
Boot Magic are executed during boot up time. Press Magic key below then plug in keyboard cable.
Note that you must use keys of **Layer 0** as Magic keys. These settings are stored in EEPROM so that retain your configure over power cycles.
To avoid configuring accidentally additive salt key `KC_SPACE` also needs to be pressed along with the following configuration keys. The salt key is configurable in `config.h`. See [tmk_core/common/bootmagic.h](tmk_core/common/bootmagic.h).
To avoid configuring accidentally additive salt key `KC_SPACE` also needs to be pressed along with the following configuration keys. The salt key is configurable in `config.h`. See [tmk_core/common/bootmagic.h](/tmk_core/common/bootmagic.h).
#### General
- Skip reading EEPROM to start with default configuration(`ESC`)
@@ -240,4 +240,4 @@ Coding Style
Other Keyboard Firmware Projects
------------------
You can learn a lot about keyboard firmware from these. See [doc/other_projects.md](tmk_core/doc/other_projects.md).
You can learn a lot about keyboard firmware from these. See [docs/other_projects.md](other_projects.md).

View File

@@ -0,0 +1,54 @@
## Unicode support
There are three Unicode keymap definition method available in QMK:
### UNICODE_ENABLE
Supports Unicode input up to 0xFFFF. The keycode function is `UC(n)` in
keymap file, where *n* is a 4 digit hexadecimal.
### UNICODEMAP_ENABLE
Supports Unicode up to 0xFFFFFFFF. You need to maintain a separate mapping
table `const uint32_t PROGMEM unicode_map[] = {...}` in your keymap file.
The keycode function is `X(n)` where *n* is the array index of the mapping
table.
### UCIS_ENABLE
TBD
Unicode input in QMK works by inputing a sequence of characters to the OS,
sort of like macro. Unfortunately, each OS has different ideas on how Unicode is inputted.
This is the current list of Unicode input method in QMK:
* UC_OSX: MacOS Unicode Hex Input support. Works only up to 0xFFFF. Disabled by default. To enable: go to System Preferences -> Keyboard -> Input Sources, and enable Unicode Hex.
* UC_LNX: Unicode input method under Linux. Works up to 0xFFFFF. Should work almost anywhere on ibus enabled distros. Without ibus, this works under GTK apps, but rarely anywhere else.
* UC_WIN: (not recommended) Windows built-in Unicode input. To enable: create registry key under `HKEY_CURRENT_USER\Control Panel\Input Method\EnableHexNumpad` of type `REG_SZ` called `EnableHexNumpad`, set its value to 1, and reboot. This method is not recommended because of reliability and compatibility issue, use WinCompose method below instead.
* UC_WINC: Windows Unicode input using WinCompose. Requires [WinCompose](https://github.com/samhocevar/wincompose). Works reliably under many (all?) variations of Windows.
## Additional language support
In `quantum/keymap_extras/`, you'll see various language files - these work the same way as the alternative layout ones do. Most are defined by their two letter country/language code followed by an underscore and a 4-letter abbreviation of its name. `FR_UGRV` which will result in a `ù` when using a software-implemented AZERTY layout. It's currently difficult to send such characters in just the firmware.
## International Characters on Windows
[AutoHotkey](https://autohotkey.com) allows Windows users to create custom hotkeys among others.
The method does not require Unicode support in the keyboard itself but depends instead of AutoHotkey running in the background.
First you need to select a modifier combination that is not in use by any of your programs.
CtrlAltWin is not used very widely and should therefore be perfect for this.
There is a macro defined for a mod-tab combo `LCAG_T`.
Add this mod-tab combo to a key on your keyboard, e.g.: `LCAG_T(KC_TAB)`.
This makes the key behave like a tab key if pressed and released immediately but changes it to the modifier if used with another key.
In the default script of AutoHotkey you can define custom hotkeys.
<^<!<#a::Send, ä
<^<!<#<+a::Send, Ä
The hotkeys above are for the combination CtrlAltGui and CtrlAltGuiShift plus the letter a.
AutoHotkey inserts the Text right of `Send, ` when this combination is pressed.

68
docs/unit_testing.md Normal file
View File

@@ -0,0 +1,68 @@
# Unit Testing
If you are new to unit testing, then you can find many good resources on internet. However most of it is scattered around in small pieces here and there, and there's also many different opinions, so I won't give any recommendations.
Instead I recommend these two books, explaining two different styles of Unit Testing in detail.
* "Test Driven Development: By Example: Kent Beck"
* "Growing Object-Oriented Software, Guided By Tests: Steve Freeman, Nat Pryce"
If you prefer videos there are Uncle Bob's [Clean Coders Videos](https://cleancoders.com/), which unfortunately cost quite a bit, especially if you want to watch many of them. But James Shore has a free [Let's Play](http://www.jamesshore.com/Blog/Lets-Play) video series.
## Google Test and Google Mock
It's possible to Unit Test your code using [Google Test](https://github.com/google/googletest). The Google Test framework also includes another component for writing testing mocks and stubs, called "Google Mock". For information how to write the actual tests, please refer to the documentation on that site.
## Use of C++
Note that Google Test and therefore any test has to be written in C++, even if the rest of the QMK codebases is written in C. This should hopefully not be a problem even if you don't know any C++, since there's quite clear documentation and examples of the required C++ features, and you can write the rest of the test code almost as you would write normal C. Note that some compiler errors which you might get can look quite scary, but just read carefully what it says, and you should be ok.
One thing to remember, is that you have to append `extern "C"` around all of your C file includes.
## Adding tests for new or existing features
If you want to unit test some feature, then take a look at the existing serial_link tests, in the `quantum/serial_link/tests folder`, and follow the steps below to create a similar structure.
1. If it doesn't already exist, add a test subfolder to the folder containing the feature.
2. Create a `testlist.mk` and a `rules.mk` file in that folder.
3. Include those files from the root folder `testlist.mk`and `build_test.mk` respectively.
4. Add a new name for your testgroup to the `testlist.mk` file. Each group defined there will be a separate executable. And that's how you can support mocking out different parts. Note that it's worth adding some common prefix, just like it's done for the serial_link tests. The reason for that is that the make command allows substring filtering, so this way you can easily run a subset of the tests.
5. Define the source files and required options in the `rules.mk` file.
* `_SRC` for source files
* `_DEFS` for additional defines
* `_INC` for additional include folders
6. Write the tests in a new cpp file inside the test folder you created. That file has to be one of the files included from the `rules.mk` file.
Note how there's several different tests, each mocking out a separate part. Also note that each of them only compiles the very minimum that's needed for the tests. It's recommend that you try to do the same. For a relevant video check out [Matt Hargett "Advanced Unit Testing in C & C++](https://www.youtube.com/watch?v=Wmy6g-aVgZI)
## Running the tests
To run all the tests in the codebase, type `make test`. You can also run test matching a substring by typing `make test-matchingsubstring` Note that the tests are always compiled with the native compiler of your platform, so they are also run like any other program on your computer.
## Debugging the tests
If there are problems with the tests, you can find the executable in the `./build/test` folder. You should be able to run those with GDB or a similar debugger.
## Full Integration tests
It's not yet possible to do a full integration test, where you would compile the whole firmware and define a keymap that you are going to test. However there are plans for doing that, because writing tests that way would probably be easier, at least for people that are not used to unit testing.
In that model you would emulate the input, and expect a certain output from the emulated keyboard.
# Tracing variables
Sometimes you might wonder why a variable gets changed and where, and this can be quite tricky to track down without having a debugger. It's of course possible to manually add print statements to track it, but you can also enable the variable trace feature. This works for both for variables that are changed by the code, and when the variable is changed by some memory corruption.
To take the feature into use add `VARIABLE_TRACE=x` to the end of you make command. `x` represents the number of variables you want to trace, which is usually 1.
Then at a suitable place in the code, call `ADD_TRACED_VARIABLE`, to begin the tracing. For example to trace all the layer changes, you can do this
```c
void matrix_init_user(void) {
ADD_TRACED_VARIABLE("layer", &layer_state, sizeof(layer_state));
}
```
This will add a traced variable named "layer" (the name is just for your information), which tracks the memory location of `layer_state`. It tracks 4 bytes (the size of `layer_state`), so any modification to the variable will be reported. By default you can not specify a size bigger than 4, but you can change it by adding `MAX_VARIABLE_TRACE_SIZE=x` to the end of the make command line.
In order to actually detect changes to the variables you should call `VERIFY_TRACED_VARIABLES` around the code that you think that modifies the variable. If a variable is modified it will tell you between which two `VERIFY_TRACED_VARIABLES` calls the modification happened. You can then add more calls to track it down further. I don't recommend spamming the codebase with calls. It's better to start with a few, and then keep adding them in a binary search fashion. You can also delete the ones you don't need, as each call need to store the file name and line number in the ROM, so you can run out of memory if you add too many calls.
Also remember to delete all the tracing code once you have found the bug, as you wouldn't want to create a pull request with tracing code.

11
docs/usb_hid.md Normal file
View File

@@ -0,0 +1,11 @@
# Getting Report Descriptor
```
$ cd /sys/bus/usb/drivers/usbhid
$ ls
1-1.3.4:1.0 1-1.3.4:1.2 bind new_id uevent
1-1.3.4:1.1 1-1.3.4:1.3 module remove_id unbind
$ echo -n 1-1.4\:1.0 | sudo tee unbind
$ sudo lsusb -vvv -d 046d:c01d
$ echo -n 1-1.4\:1.0 | sudo tee bind
```

View File

@@ -13,11 +13,11 @@ Other than having Vagrant and Virtualbox installed and possibly a restart of you
Build Firmware and Program Controller
-------------------------------------
See [/doc/BUIDE_GUIDE.md](/doc/BUILD_GUIDE.md), or the readme in the particular keyboards/* folder.
See [build_guide.md](build_guide.md), or the readme in the particular keyboards/* folder.
Change your keymap
------------------
See [/doc/keymap.md](/doc/keymap.md).
See [keymap.md](keymap.md).
## Flashing the firmware

View File

@@ -147,6 +147,21 @@
{k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d} \
}
#define KEYMAP_MAX( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k49,\
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3c, \
k40, k41, k42, k45, k4a, k4b, k4c, k4d \
) \
{ \
{k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d}, \
{k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d}, \
{k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d}, \
{k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d}, \
{k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, k49, k4a, k4b, k4c, k4d} \
}
void matrix_init_user(void);
void matrix_scan_user(void);

View File

@@ -0,0 +1,61 @@
// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
// this is the style you want to emulate.
#include "amj60.h"
// Each layer gets a name for readability, which is then used in the keymap matrix below.
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
// Layer names don't all need to be of the same length, obviously, and you can also skip them
// entirely and just use numbers.
#define _DEF 0
#define _SPC 1
// dual-role shortcuts
#define SPACEDUAL LT(_SPC, KC_SPACE)
// increase readability
#define _______ KC_TRNS
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap _DEF: Default Layer
* ,-----------------------------------------------------------.
* |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \ | ~ |
* |-----------------------------------------------------------|
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| bspc|
* |-----------------------------------------------------------|
* |Caps | A| S| D| F| G| H| J| K| L| ;| '| Return |
* |-----------------------------------------------------------|
* |Sft | Fn0| Z| X| C| V| B| N| M| ,| .| /| Sft |Fn2|
* |-----------------------------------------------------------|
* |Ctrl|Win |Alt | Space/Fn0 |Alt |Win |Menu|RCtl|
* `-----------------------------------------------------------'
*/
[_DEF] = KEYMAP_MAX(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, \
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, \
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
KC_LSFT, F(0), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, F(1), \
KC_LCTL, KC_LALT, KC_LGUI, SPACEDUAL, KC_RGUI, KC_RALT, KC_RCTL, F(2)),
/* Keymap 1: F-and-vim Layer, modified with Space (by holding space)
* ,-----------------------------------------------------------.
* |PrSc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| | |
* |-----------------------------------------------------------|
* | |Paus| Up| [ | ] | | | | ( | ) | | | | Del |
* |-----------------------------------------------------------|
* | |Lft|Dwn|Rgt| | |Left|Down|Right|Up| | | PLAY |
* |-----------------------------------------------------------|
* | | | | | < | > | |M0 | | | | | Vol+ | |
* |-----------------------------------------------------------|
* | | | | |Alt |Prev|Vol-|Next|
* `-----------------------------------------------------------'
*/
[_SPC] = KEYMAP_MAX(
KC_PSCR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, \
_______, KC_PAUS, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
_______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, KC_MPLY, \
_______, _______, _______, _______, _______, _______, KC_SPACE, M(0), _______, _______, _______, _______, KC_VOLU, _______, \
_______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT),
};

View File

@@ -39,7 +39,22 @@
{k40, k41, k42, k43}, \
{k50, XXX, k52, XXX} \
}
#define MAXKEYMAP( \
k00, k01, k02, k03, \
k10, k11, k12, k13, \
k20, k21, k22, k23, \
k30, k31, k32, k33, \
k40, k41, k42, k43, \
k50, k51, k52, k53\
) \
{ \
{k00, k01, k02, k03}, \
{k10, k11, k12, k13}, \
{k20, k21, k22, k23}, \
{k30, k31, k32, k33}, \
{k40, k41, k42, k43}, \
{k50, k51, k52, k53} \
}
void matrix_init_user(void);
void matrix_scan_user(void);

View File

@@ -0,0 +1,102 @@
#include "amjpad.h"
#ifdef RGBLIGHT_ENABLE
#include "rgblight.h"
#endif
// Used for SHIFT_ESC
#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
// Each layer gets a name for readability, which is then used in the keymap matrix below.
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
// Layer names don't all need to be of the same length, obviously, and you can also skip them
// entirely and just use numbers.
#define _BL 0
#define _FL 1
#define _______ KC_TRNS
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap _BL: (Base Layer) Default Layer
* ,-------------------.
* |Esc |Setp| - | = |
* |----|----|----|----|
* | F1 | F2 | F3 | F4 |
* |----|----|----|----|
* | 7 | 8 | 9 | - |
* |----|----|----|----|
* | 4 | 5 | 6 | LF |
* |----|----|----|----|
* | 1 | 2 | 3 | \ |
* |----|----|----|----|
* |Left|Down| Up |Rght|
* `-------------------'
*/
[_BL] = MAXKEYMAP(
KC_ESC, KC_TAB, KC_MINS,KC_EQL, \
KC_F1, KC_F2, KC_F3, KC_F4, \
KC_P7, KC_P8, KC_P9, KC_PMNS, \
KC_P4, KC_P5, KC_P6, KC_PENT, \
KC_P1, KC_P2, KC_P3, KC_BSLS, \
KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT),
/* Keymap _FL: Function Layer
* ,-------------------.
* |Esc |TAB |BS | = |
* |----|----|----|----|
* | NL | / | * | - |
* |----|----|----|----|
* | 7 | 8 | 9 | |
* |----|----|----|RST |
* | 4 | 5 | 6 | |
* |----|----|----|----|
* | 1 | 2 | 3 | |
* |----|----|----| En |
* | 0 |./FN| |
* `-------------------'
*/
[_FL] = MAXKEYMAP(
KC_ESC,KC_TAB,KC_BSPC,KC_PEQL, \
KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \
KC_P7, KC_P8, KC_P9, RESET, \
KC_P4, KC_P5, KC_P6, KC_PENT, \
KC_P1, KC_P2, KC_P3, KC_PENT, \
KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT),
};
enum function_id {
SHIFT_ESC,
};
const uint16_t PROGMEM fn_actions[] = {
[0] = ACTION_FUNCTION(SHIFT_ESC),
};
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
static uint8_t shift_esc_shift_mask;
switch (id) {
case SHIFT_ESC:
shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK;
if (record->event.pressed) {
if (shift_esc_shift_mask) {
add_key(KC_GRV);
send_keyboard_report();
} else {
add_key(KC_ESC);
send_keyboard_report();
}
} else {
if (shift_esc_shift_mask) {
del_key(KC_GRV);
send_keyboard_report();
} else {
del_key(KC_ESC);
send_keyboard_report();
}
}
break;
}
}

View File

@@ -0,0 +1,65 @@
#include "amjpad.h"
#ifdef RGBLIGHT_ENABLE
#include "rgblight.h"
#endif
// Each layer gets a name for readability, which is then used in the keymap matrix below.
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
// Layer names don't all need to be of the same length, obviously, and you can also skip them
// entirely and just use numbers.
#define _BL 0
#define _FL 1
#define _______ KC_TRNS
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap _BL: (Base Layer) Default Layer
* ,-------------------.
* | T | G | B |Spac|
* |----|----|----|----|
* | R | F | V | Fn |
* |----|----|----|----|
* | E | D | C | OS |
* |----|----|----|----|
* | W | S | X | Alt|
* |----|----|----|----|
* | Q | A | Z | Ctl|
* |----|----|----|----|
* | Esc| Tab|Shft| Fn2|
* `-------------------'
*/
[_BL] = MAXKEYMAP(
KC_T, KC_G, KC_B, KC_SPACE,\
KC_R, KC_F, KC_V, MO(1), \
KC_E, KC_D, KC_C, KC_LGUI, \
KC_W, KC_S, KC_X, KC_LALT, \
KC_Q, KC_A, KC_Z, KC_LCTL, \
KC_TAB, KC_ESC, KC_LSHIFT, MO(1)),
/* Keymap _FL: Function Layer
* ,-------------------.
* | 5 | F5 | F11|Spac|
* |----|----|----|----|
* | 4 | F4 | F10| |
* |----|----|----|----|
* | 3 | F3 | F9 | OS |
* |----|----|----|----|
* | 2 | F2 | F8 | Alt|
* |----|----|----|----|
* | 1 | F1 | F7 | Ctl|
* |----|----|----|----|
* | ` | Del|Shft| |
* `-------------------'
*/
[_FL] = MAXKEYMAP(
KC_5, KC_F5, KC_F11, _______, \
KC_4, KC_F4, KC_F10, _______, \
KC_3, KC_F3, KC_F9, _______, \
KC_2, KC_F2, KC_F8, _______, \
KC_1, KC_F1, KC_F7, _______, \
KC_GRV,KC_DEL, _______, _______),
};

View File

@@ -0,0 +1,65 @@
#include "amjpad.h"
#ifdef RGBLIGHT_ENABLE
#include "rgblight.h"
#endif
// Each layer gets a name for readability, which is then used in the keymap matrix below.
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
// Layer names don't all need to be of the same length, obviously, and you can also skip them
// entirely and just use numbers.
#define _BL 0
#define _FL 1
#define _______ KC_TRNS
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap _BL: (Base Layer) Default Layer
* ,-------------------.
* |Spac| N | H | Y |
* |----|----|----|----|
* | Fn | M | J | U |
* |----|----|----|----|
* |Left| , | K | I |
* |----|----|----|----|
* |Down| . | L | O |
* |----|----|----|----|
* | Up | / | ; | P |
* |----|----|----|----|
* |Rght| Ret| " |Bspc|
* `-------------------'
*/
[_BL] = MAXKEYMAP(
KC_SPACE, KC_N, KC_H, KC_Y, \
MO(1), KC_M, KC_J, KC_U, \
KC_LEFT, KC_COMM, KC_K, KC_I, \
KC_DOWN, KC_DOT, KC_L, KC_O, \
KC_UP, KC_SLASH, KC_SCLN, KC_P, \
KC_RIGHT, KC_ENT, KC_QUOT, KC_BSPC),
/* Keymap _FL: Function Layer
* ,-------------------.
* |Esc | F12| F6 | 6 |
* |----|----|----|----|
* | NL | M | - | 7 |
* |----|----|----|----|
* |Left| , | = | 8 |
* |----|----|----|----|
* |Down| . | [ | 9 |
* |----|----|----|----|
* | Up | / | ] | 0 |
* |----|----|----|----|
* |Rght| Ret| \ | Del|
* `-------------------'
*/
[_FL] = MAXKEYMAP(
_______, KC_F12, KC_F6, KC_6, \
_______, _______, KC_MINS, KC_7, \
_______, _______, KC_EQL, KC_8, \
_______, _______, KC_LBRC, KC_9, \
_______, _______, KC_RBRC, KC_0, \
_______, _______, KC_BSLS, KC_DEL),
};

View File

@@ -255,7 +255,7 @@ float tone_scroll_off[][2] = SONG(SCROLL_LOCK_OFF_SOUND);
#endif /* AUDIO_ENABLE */
void persistant_default_layer_set(uint16_t default_layer)
void persistent_default_layer_set(uint16_t default_layer)
{
eeconfig_update_default_layer(default_layer);
default_layer_set(default_layer);
@@ -366,7 +366,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
case MACRO_QWERTY:
if (record->event.pressed)
{
persistant_default_layer_set(1UL<<LAYER_QWERTY);
persistent_default_layer_set(1UL<<LAYER_QWERTY);
}
break;

View File

@@ -0,0 +1,72 @@
#include "atomic.h"
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* QWERTY - MIT ENHANCED / GRID COMPATIBLE
* .---------------------------------------------------------------------------------------------------------------------- 2u ------------.
* | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | XXXXXX . BACKSP |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
* | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | DEL |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------|
* | LCTRL1 | A | S | D | F | G | H | J | K | L | ; | ' | XXXXXX . ENTER | PG UP |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------|
* | LSHIFT | Z | X | C | V | B | N | M | , | . | / | XXXXXX . RSHIFT | UP | PG DN |
* |--------+--------+--------+--------+--------+- 6.25u ---------+--------+--------+--------+--------+-----------------+--------+--------|
* | BRITE | LALT | FN | XXXXXX . SPACE | RCTRL | RALT | FN | LEFT | DOWN | RIGHT |
* '--------------------------------------------------------------------------------------------------------------------------------------'
*/
[0] = { /* QWERTY */
{ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC },
{ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL },
{ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_ENT, KC_PGUP },
{ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN },
{ M(0), KC_ALT, MO(1), KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RCTL, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT },
},
/* FUNCTION
* .---------------------------------------------------------------------------------------------------------------------- 2u ------------.
* | GRV | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | XXXXXX . |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
* | SCR LK | F13 | F14 | F15 | F16 | F17 | F18 | F19 | F20 | F21 | F22 | F23 | F24 | PAUSE | PR SCR |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------|
* | CAP LK | MS BT5 | MS BT4 | MS BT3 | MS BT2 | SLOW M | FAST M | NEXT | VOL+ | VOL- | PLAY | | XXXXXX . | WHEEL+ |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------|
* | NUM LK | | | | | | | | INSERT | END1 | HOME | XXXXXX . | MOUS U | WHEEL- |
* |--------+--------+--------+--------+--------+- 6.25 ------------+--------+--------+------+--------+-----------------+--------+--------|
* | | | FN | XXXXXX . MS BT1 | | | FN | MOUS L | MOUS D | MOUS R |
* '--------------------------------------------------------------------------------------------------------------------------------------'
*/
[1] = { /* FUNCTION LAYER*/
{ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ___T___, ___T___ },
{ KC_SLCK, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, KC_PAUS, KC_PSCR },
{ KC_CAPS, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, KC_ACL0, KC_ACL2, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, _______, ___T___, ___T___, KC_WH_U },
{ KC_NLCK, _______, _______, _______, _______, _______, _______, _______, KC_INSERT, KC_END, KC_HOME, ___T___, ___T___, KC_MS_U, KC_WH_D },
{ _______, _______, MO(1), _______, _______, KC_BTN1, KC_BTN1, _______, _______, _______, _______, MO(1), KC_MS_L, KC_MS_D, KC_MS_R },
},
};
const uint16_t PROGMEM fn_actions[] = {
[1] = ACTION_LAYER_MOMENTARY(1),
[2] = ACTION_LAYER_MOMENTARY(1),
};
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{
// MACRODOWN only works in this function
switch(id) {
case 0:
if (record->event.pressed) {
register_code(KC_RSFT);
#ifdef BACKLIGHT_ENABLE
backlight_step();
#endif
} else {
unregister_code(KC_RSFT);
}
break;
}
return MACRO_NONE;
};

View File

@@ -15,8 +15,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QW] = { /* Qwerty */
{KC_Q, KC_W, KC_E, KC_R, KC_T, KC_TRNS, KC_Y, KC_U, KC_I, KC_O, KC_P },
{KC_A, KC_S, KC_D, KC_F, KC_G, KC_TRNS, KC_H, KC_J, KC_K, KC_L, KC_SCLN },
{KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LALT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH },
{KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_SPC, MO(_RS), KC_MINS, KC_QUOT, KC_ENT }
{KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LCTL, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH },
{KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_BSPC, KC_LALT, KC_SPC, MO(_RS), KC_MINS, KC_QUOT, KC_ENT }
},
/*
* ! @ up { } || pgup 7 8 9 *
@@ -27,8 +27,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_RS] = { /* [> RAISE <] */
{KC_EXLM, KC_AT, KC_UP, KC_LCBR, KC_RCBR, KC_TRNS, KC_PGUP, KC_7, KC_8, KC_9, KC_ASTR},
{KC_HASH, KC_LEFT, KC_DOWN, KC_RGHT, KC_DLR, KC_TRNS, KC_PGDN, KC_4, KC_5, KC_6, KC_PLUS},
{KC_LBRC, KC_RBRC, KC_LPRN, KC_RPRN, KC_AMPR, KC_LALT, KC_GRV, KC_1, KC_2, KC_3, KC_BSLS},
{TG(_LW), KC_INS, KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_SPC, KC_TRNS, KC_DOT, KC_0, KC_EQL}
{KC_LBRC, KC_RBRC, KC_LPRN, KC_RPRN, KC_AMPR, KC_LCTL, KC_GRV, KC_1, KC_2, KC_3, KC_BSLS},
{TG(_LW), KC_INS, KC_LGUI, KC_LSFT, KC_BSPC, KC_LALT, KC_SPC, KC_TRNS, KC_DOT, KC_0, KC_EQL}
},
/*
* insert home up end pgup || up F7 F8 F9 F10
@@ -39,8 +39,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_LW] = { /* [> LOWER <] */
{KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_TRNS, KC_UP, KC_F7, KC_F8, KC_F9, KC_F10},
{KC_DELT, KC_LEFT, KC_DOWN, KC_RGHT, KC_DOWN, KC_TRNS, KC_DOWN, KC_F4, KC_F5, KC_F6, KC_F11},
{KC_TRNS, KC_VOLU, KC_TRNS, KC_TRNS, RESET, KC_LALT, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F12},
{KC_TRNS, KC_VOLD, KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_SPC, DF(_QW), KC_PSCR, KC_SLCK, KC_PAUS}
{KC_NO, KC_VOLU, KC_NO, KC_NO, RESET, KC_LCTL, KC_NO, KC_F1, KC_F2, KC_F3, KC_F12},
{KC_NO, KC_VOLD, KC_LGUI, KC_LSFT, KC_BSPC, KC_LALT, KC_SPC, TO(_QW), KC_PSCR, KC_SLCK, KC_PAUS}
}};
const uint16_t PROGMEM fn_actions[] = {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 73 KiB

View File

@@ -10,7 +10,7 @@ I won't claim that this layout is perfect for everyone. It does make several sig
## Base Layer ##
![Atreus base layout](atreus-replica-base.png)
![Atreus base layout](http://imgur.com/YbOjS7O)
The letters on this layout are arranged in the [Colemak Mod-DH layout](https://colemakmods.github.io/mod-dh/).
@@ -22,7 +22,7 @@ In addition to the Shift keys, there are three dual-purpose keys: Ctrl (Delete),
## Extend Layer ##
![Atreus extend layer](atreus-replica-extend.png)
![Atreus extend layer](http://imgur.com/WiKkMQw)
This layout is designed primarily for keyboard navigation. Arrow keys are easily accessible under the right hand (a welcome change from the original Atreus layout, which places them under the left hand), along with Home/End and PgUp/PgDn.
@@ -34,7 +34,7 @@ The Space key exists to prevent going from this layer directly into the Number l
## Number and Symbol Layer ##
![Atreus number and symbol layer](atreus-replica-num.png)
![Atreus number and symbol layer](http://imgur.com/gfTXcjC)
This layer provides the only way of accessing number keys on this keyboard, since it's too small for its own number row. Note that even though they are laid out in the number pad fashion, they send the "regular" number keystrokes. Games and programs that specifically use NumPad keys are not supported in this layout at the moment.
@@ -42,7 +42,7 @@ This layer also provides plenty of symbol shortcuts. Most of these can be access
## Function Layer ##
![Atreus function layer](atreus-replica-function.png)
![Atreus function layer](http://imgur.com/m5x0MxZ)
Function keys (F1-F12) are on this layer. Their layout in groups of four comes from Jeremy's Atreus layout in this repository. I'd been using 1-9 in a numpad layout, then adding 10-12 on the side...I suppose it took seeing someone else do it this way for me to realize how much more sense it makes.
@@ -52,7 +52,7 @@ Finally, the reset key is on this layer, as well as toggles from Colemak to QWER
## Gaming Layer ##
![Atreus gaming layer](atreus-replica-game.png)
![Atreus gaming layer](http://imgur.com/4S5AO4E)
This is a small layer developed to allow some simple gameplay without a mouse. This layer is a toggle (from the Number layer), so it is designed to stay on while in use.

View File

@@ -12,78 +12,213 @@ extern keymap_config_t keymap_config;
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
// Layer names don't all need to be of the same length, obviously, and you can also skip them
// entirely and just use numbers.
#define _DV 0
#define _QW 1
#define _CM 2
#define _L1 3
#define _L2 4
#define _DVORAK 0
#define _QWERTY 1
#define _COLEMAK 2
#define _DVORMAC 3
#define _LOWER 4
#define _RAISE 5
#define _ADJUST 16
// Macro name shortcuts
#define DVORAK M(_DV)
#define QWERTY M(_QW)
#define COLEMAK M(_CM)
enum planck_keycodes {
DVORAK = SAFE_RANGE,
QWERTY,
COLEMAK,
DVORMAC,
LOWER,
RAISE,
BACKLIT
};
// Adding macros to make the keymaps below much easier to read.
#define SFTSCLN SFT_T(KC_SCLN)
#define SFTSLSH SFT_T(KC_SLSH)
#define SFTZED SFT_T(KC_Z)
#define ALTENT ALT_T(KC_ENT)
#define ESCTRL CTL_T(KC_ESC)
#define TABALT ALT_T(KC_TAB)
// Fillers to make layering more clear
#define _______ KC_TRNS
#define XXXXXXX KC_NO
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_DV] = { /* Dvorak */
{KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_NO, KC_F, KC_G, KC_C, KC_R, KC_L },
{KC_A, KC_O, KC_E, KC_U, KC_I, KC_NO, KC_D, KC_H, KC_T, KC_N, KC_S },
{SFT_T(KC_SCLN), KC_Q, KC_J, KC_K, KC_X, CTL_T(KC_DEL), KC_B, KC_M, KC_W, KC_V, SFT_T(KC_Z) },
{KC_ESC, KC_TAB, KC_LGUI, MO(_L2), KC_BSPC, ALT_T(KC_ENT), KC_SPC, MO(_L1), KC_MINS, KC_SLSH, KC_EQL}
/* Dvorak Layer
,----------------------------------. ,----------------------------------.
| ' | , | . | P | Y | | F | G | C | R | L |
|------+------+------+------+------| |------+------+------+------+------|
| A | O | E | U | I | | D | H | T | N | S |
|------+------+------+------+------|------.,------|------+------+------+------+------|
|SFT/ ;| Q | J | K | X | CTRL ||Alt / | B | M | W | V |SFT/ Z|
|------+------+------+------+------| ||Enter |------+------+------+------+------|
| Esc | Tab | GUI | LOWER| BkSp |------'`------| Spc | RAISE| - | / | \ |
`----------------------------------' `----------------------------------' */
[_DVORAK] = {
{KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, XXXXXXX, KC_F, KC_G, KC_C, KC_R, KC_L },
{KC_A, KC_O, KC_E, KC_U, KC_I, XXXXXXX, KC_D, KC_H, KC_T, KC_N, KC_S },
{SFTSCLN, KC_Q, KC_J, KC_K, KC_X, KC_LCTL, KC_B, KC_M, KC_W, KC_V, SFTZED },
{ESCTRL, TABALT, KC_LGUI, LOWER, KC_BSPC, ALTENT, KC_SPC, RAISE, KC_MINS, KC_SLSH, KC_BSLS}
},
[_QW] = { /* Qwerty */
{KC_Q, KC_W, KC_E, KC_R, KC_T, KC_NO, KC_Y, KC_U, KC_I, KC_O, KC_P },
{KC_A, KC_S, KC_D, KC_F, KC_G, KC_NO, KC_H, KC_J, KC_K, KC_L, KC_SCLN},
{SFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, CTL_T(KC_DEL), KC_N, KC_M, KC_COMM, KC_DOT, SFT_T(KC_SLSH) },
{KC_ESC, KC_TAB, KC_LGUI, MO(_L2), KC_BSPC, ALT_T(KC_ENT), KC_SPC, MO(_L1), KC_MINS, KC_QUOT, KC_ENT}
/* QWERTY Layer
,----------------------------------. ,----------------------------------.
| Q | W | E | R | T | | Y | U | I | O | P |
|------+------+------+------+------| |------+------+------+------+------|
| A | S | D | F | G | | H | J | K | L | ; |
|------+------+------+------+------|------.,------|------+------+------+------+------|
|SFT/ Z| X | C | V | B | CTRL ||Alt / | N | M | , | . |SFT/ /|
|------+------+------+------+------| ||Enter |------+------+------+------+------|
| Esc | Tab | GUI | LOWER| BkSp |------'`------| Spc | RAISE| - | ' | \ |
`----------------------------------' `----------------------------------' */
[_QWERTY] = {
{KC_Q, KC_W, KC_E, KC_R, KC_T, XXXXXXX, KC_Y, KC_U, KC_I, KC_O, KC_P },
{KC_A, KC_S, KC_D, KC_F, KC_G, XXXXXXX, KC_H, KC_J, KC_K, KC_L, KC_SCLN},
{SFTZED, KC_X, KC_C, KC_V, KC_B, KC_LCTL, KC_N, KC_M, KC_COMM, KC_DOT, SFTSLSH},
{ESCTRL, TABALT, KC_LGUI, LOWER, KC_BSPC, ALTENT, KC_SPC, RAISE, KC_MINS, KC_QUOT, KC_BSLS}
},
[_CM] = { /* Colemak */
{KC_Q, KC_W, KC_F, KC_P, KC_G, KC_NO, KC_J, KC_L, KC_U, KC_Y, KC_SCLN},
{KC_A, KC_R, KC_S, KC_T, KC_D, KC_NO, KC_H, KC_N, KC_E, KC_I, KC_O },
{SFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, CTL_T(KC_DEL), KC_K, KC_M, KC_COMM, KC_DOT, SFT_T(KC_SLSH) },
{KC_ESC, KC_TAB, KC_LGUI, MO(_L2), KC_BSPC, ALT_T(KC_ENT), KC_SPC, MO(_L1), KC_MINS, KC_QUOT, KC_ENT}
/* Colemak Layer
,----------------------------------. ,----------------------------------.
| Q | W | F | P | G | | J | L | U | Y | L |
|------+------+------+------+------| |------+------+------+------+------|
| A | R | S | T | D | | H | N | E | I | S |
|------+------+------+------+------|------.,------|------+------+------+------+------|
|SFT/ Z| X | C | V | B | CTRL ||Alt / | K | M | , | . |SFT/ /|
|------+------+------+------+------| ||Enter |------+------+------+------+------|
| Esc | Tab | GUI | LOWER| BkSp |------'`------| Spc | RAISE| - | ' | \ |
`----------------------------------' `----------------------------------'*/
[_COLEMAK] = {
{KC_Q, KC_W, KC_F, KC_P, KC_G, XXXXXXX, KC_J, KC_L, KC_U, KC_Y, KC_SCLN},
{KC_A, KC_R, KC_S, KC_T, KC_D, XXXXXXX, KC_H, KC_N, KC_E, KC_I, KC_O },
{SFTZED, KC_X, KC_C, KC_V, KC_B, KC_LCTL, KC_K, KC_M, KC_COMM, KC_DOT, SFTSLSH},
{ESCTRL, TABALT, KC_LGUI, LOWER, KC_BSPC, ALTENT, KC_SPC, RAISE, KC_MINS, KC_QUOT, KC_BSLS}
},
[_L1] = { /* LAYER 1 */
{KC_1, KC_2, KC_3, KC_4, KC_5, KC_NO, KC_6, KC_7, KC_8, KC_9, KC_0 },
{KC_TAB, KC_INS, KC_UP, KC_DEL, KC_HOME, KC_NO, KC_PGUP, KC_MUTE, KC_VOLD, KC_VOLU, KC_EQL },
{KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, KC_LCTL, KC_PGDN, KC_MPRV, KC_MPLY, KC_MNXT, KC_BSLS},
{KC_TRNS, KC_GRV, KC_LGUI, KC_TRNS, KC_DEL, KC_LALT, KC_SPC, KC_TRNS, KC_LBRC, KC_RBRC, KC_ENT }
/* Dvorak Layer with Command key on left thumb instead of Control
,----------------------------------. ,----------------------------------.
| ' | , | . | P | Y | | F | G | C | R | L |
|------+------+------+------+------| |------+------+------+------+------|
| A | O | E | U | I | | D | H | T | N | S |
|------+------+------+------+------|------.,------|------+------+------+------+------|
|SFT/ ;| Q | J | K | X | CMD ||Alt / | B | M | W | V |SFT/ Z|
|------+------+------+------+------| ||Enter |------+------+------+------+------|
| Esc | Tab | GUI | LOWER| BkSp |------'`------| Spc | RAISE| - | / | \ |
`----------------------------------' `----------------------------------' */
[_DVORMAC] = {
{KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, XXXXXXX, KC_F, KC_G, KC_C, KC_R, KC_L },
{KC_A, KC_O, KC_E, KC_U, KC_I, XXXXXXX, KC_D, KC_H, KC_T, KC_N, KC_S },
{SFTSCLN, KC_Q, KC_J, KC_K, KC_X, KC_LGUI, KC_B, KC_M, KC_W, KC_V, SFTZED },
{ESCTRL, TABALT, KC_LGUI, LOWER, KC_BSPC, ALTENT, KC_SPC, RAISE, KC_MINS, KC_SLSH, KC_BSLS}
},
[_L2] = { /* LAYER 2 */
{KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_NO, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN},
{KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_NO, KC_TRNS, KC_F6, KC_F7, KC_F8, KC_PLUS},
{KC_TRNS, KC_TRNS, DVORAK, QWERTY, COLEMAK, KC_LCTL, KC_TRNS, KC_F9, KC_F10, KC_F11, KC_F12 },
{KC_TRNS, KC_TRNS, KC_LGUI, KC_TRNS, KC_BSPC, KC_LALT, KC_SPC, KC_TRNS, LSFT(KC_LBRC), LSFT(KC_RBRC), RESET}
/* LOWER Layer
,----------------------------------. ,----------------------------------.
| ! | @ | # | $ | % | | ^ | & | * | ( | ) |
|------+------+------+------+------| |------+------+------+------+------|
| CAPS | | UP | | Home | | PgDn | | + | { | } |
|------+------+------+------+------|------.,------|------+------+------+------+------|
| | Left | Down | Right| End | || | PgUp | Mute | Vol- | Vol+ | |
|------+------+------+------+------| || |------+------+------+------+------|
| ~ | | | | Del |------'`------| Ins | | | | |
`----------------------------------' `----------------------------------'*/
[_LOWER] = {
{KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, XXXXXXX, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN},
{KC_CAPS, _______, KC_UP, _______, KC_HOME, XXXXXXX, KC_PGUP, _______, KC_PLUS, KC_LCBR, KC_RCBR},
{_______, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, _______, KC_PGDN, KC_MUTE, KC_VOLD, KC_VOLU, _______},
{KC_TILD, _______, _______, _______, KC_DEL, _______, KC_INS, _______, _______, _______, _______}
},
/* RAISE Layer
,----------------------------------. ,----------------------------------.
| 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 |
|------+------+------+------+------| |------+------+------+------+------|
| CAPS | | UP | | Home | | PgDn | | = | [ | ] |
|------+------+------+------+------|------.,------|------+------+------+------+------|
| | Left | Down | Right| End | || | PgUp | Prev | Play | Next | |
|------+------+------+------+------| || |------+------+------+------+------|
| ` | | | | Del |------'`------| Ins | | | | |
`----------------------------------' `----------------------------------'*/
[_RAISE] = {
{KC_1, KC_2, KC_3, KC_4, KC_5, XXXXXXX, KC_6, KC_7, KC_8, KC_9, KC_0 },
{KC_CAPS, _______, KC_UP, _______, KC_HOME, XXXXXXX, KC_PGUP, _______, KC_EQL, KC_LBRC, KC_RBRC},
{_______, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, _______, KC_PGDN, KC_MPRV, KC_MPLY, KC_MNXT, _______},
{KC_GRV, _______, _______, _______, KC_DEL, _______, KC_INS, _______, _______, _______, _______}
},
/* ADJUST Layer
,----------------------------------. ,----------------------------------.
| F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 |
|------+------+------+------+------| |------+------+------+------+------|
| F11 | | | | | | | PrSc | ScLk | Paus | F12 |
|------+------+------+------+------|------.,------|------+------+------+------+------|
| |QWERTY|COLEMK|DVORAK|DVORMC| || | | | | | |
|------+------+------+------+------| || |------+------+------+------+------|
| | | | | |------'`------| | | | | RESET|
`----------------------------------' `----------------------------------'*/
[_ADJUST] = {
{KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, XXXXXXX, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10 },
{KC_F11, _______, _______, _______, _______, XXXXXXX, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_F12 },
{_______, QWERTY, COLEMAK, DVORAK, DVORMAC, _______, _______, _______, _______, _______, _______},
{_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET }
}
};
const uint16_t PROGMEM fn_actions[] = {
};
void persistant_default_layer_set(uint16_t default_layer) {
void persistent_default_layer_set(uint16_t default_layer) {
eeconfig_update_default_layer(default_layer);
default_layer_set(default_layer);
}
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{
switch(id) {
case _DV:
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case QWERTY:
if (record->event.pressed) {
persistant_default_layer_set(1UL<<_DV);
persistent_default_layer_set(1UL<<_QWERTY);
}
return false;
break;
case _QW:
case COLEMAK:
if (record->event.pressed) {
persistant_default_layer_set(1UL<<_QW);
persistent_default_layer_set(1UL<<_COLEMAK);
}
return false;
break;
case _CM:
case DVORAK:
if (record->event.pressed) {
persistant_default_layer_set(1UL<<_CM);
persistent_default_layer_set(1UL<<_DVORAK);
}
return false;
break;
case DVORMAC:
if (record->event.pressed) {
persistent_default_layer_set(1UL<<_DVORMAC);
}
return false;
break;
case LOWER:
if (record->event.pressed) {
layer_on(_LOWER);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
} else {
layer_off(_LOWER);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
}
return false;
break;
case RAISE:
if (record->event.pressed) {
layer_on(_RAISE);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
} else {
layer_off(_RAISE);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
}
return false;
break;
}
return MACRO_NONE;
return true;
};

View File

@@ -0,0 +1,107 @@
# Xyverz's Atreus Keymap
## About this keymap:
This is the second iteration of my Atreus keymap. The first one was as close to the planck as I could get at the
time, but still very much like the original Atreus keymap. I've managed to get things working better now and have
implemented (more like copied) the RAISE/LOWER/ADJUST layers. This is a work in progress, but I think I'm closer
to a final go with this.
I'm using MOD_TAP quite a bit in this keymap. On all layers, R4 pinky keys use mod-tap and are SHIFT when held
and their normal keys when tapped. In addition, ESC and TAB are also set as Ctrl and ALT respectively when held,
and Enter/ALT on the right thumb key for all layers.
I've enabled persistent keymaps for Qwerty, Dvorak and Colemak layers, similar to the default Planck layouts.
Recently added: Documentation, Formatting, and another Dvorak layer that has Command on the left thumb, instead of
Control.
## Still to do:
* Enjoy this revision; figure out new things later.
### Layer 0: Dvorak layer
,----------------------------------. ,----------------------------------.
| ' | , | . | P | Y | | F | G | C | R | L |
|------+------+------+------+------| |------+------+------+------+------|
| A | O | E | U | I | | D | H | T | N | S |
|------+------+------+------+------|------.,------|------+------+------+------+------|
|Shft ;| Q | J | K | X | CTRL ||Alt / | B | M | W | V |Shft Z|
|------+------+------+------+------| ||Enter |------+------+------+------+------|
| Esc | Tab | GUI | LOWER| BkSp |------'`------| Spc | RAISE| - | / | \ |
`----------------------------------' `----------------------------------'
### Layer 1: QWERTY layer
,----------------------------------. ,----------------------------------.
| Q | W | E | R | T | | Y | U | I | O | P |
|------+------+------+------+------| |------+------+------+------+------|
| A | S | D | F | G | | H | J | K | L | ; |
|------+------+------+------+------|------.,------|------+------+------+------+------|
|Shft Z| X | C | V | B | CTRL ||Alt / | N | M | , | . |Shft /|
|------+------+------+------+------| ||Enter |------+------+------+------+------|
| Esc | Tab | GUI | LOWER| BkSp |------'`------| Spc | RAISE| - | ' | \ |
`----------------------------------' `----------------------------------'
### Keymap 2: Colemak layer
,----------------------------------. ,----------------------------------.
| Q | W | F | P | G | | J | L | U | Y | L |
|------+------+------+------+------| |------+------+------+------+------|
| A | R | S | T | D | | H | N | E | I | S |
|------+------+------+------+------|------.,------|------+------+------+------+------|
|Shft Z| X | C | V | B | CTRL ||Alt / | K | M | , | . |Shft /|
|------+------+------+------+------| ||Enter |------+------+------+------+------|
| Esc | Tab | GUI | LOWER| BkSp |------'`------| Spc | RAISE| - | ' | \ |
`----------------------------------' `----------------------------------'
### Keymap 3: Dvorak for Mac layout
,----------------------------------. ,----------------------------------.
| ' | , | . | P | Y | | F | G | C | R | L |
|------+------+------+------+------| |------+------+------+------+------|
| A | O | E | U | I | | D | H | T | N | S |
|------+------+------+------+------|------.,------|------+------+------+------+------|
|SFT/ ;| Q | J | K | X | CMD ||Alt / | B | M | W | V |SFT/ Z|
|------+------+------+------+------| ||Enter |------+------+------+------+------|
| Esc | Tab | GUI | LOWER| BkSp |------'`------| Spc | RAISE| - | / | \ |
`----------------------------------' `----------------------------------'
### Keymap 4: LOWER layer
,----------------------------------. ,----------------------------------.
| ! | @ | # | $ | % | | ^ | & | * | ( | ) |
|------+------+------+------+------| |------+------+------+------+------|
| CAPS | | UP | | Home | | PgDn | | + | { | } |
|------+------+------+------+------|------.,------|------+------+------+------+------|
| | Left | Down | Right| End | || | PgUp | Mute | Vol- | Vol+ | |
|------+------+------+------+------| || |------+------+------+------+------|
| ~ | | | | Del |------'`------| Ins | | | | |
`----------------------------------' `----------------------------------'
### Keymap 5: RAISE layer
,----------------------------------. ,----------------------------------.
| 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 |
|------+------+------+------+------| |------+------+------+------+------|
| CAPS | | UP | | Home | | PgDn | | = | [ | ] |
|------+------+------+------+------|------.,------|------+------+------+------+------|
| | Left | Down | Right| End | || | PgUp | Prev | Play | Next | |
|------+------+------+------+------| || |------+------+------+------+------|
| ` | | | | Del |------'`------| Ins | | | | |
`----------------------------------' `----------------------------------'
### Keymap 6: ADJUST layer
,----------------------------------. ,----------------------------------.
| F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 |
|------+------+------+------+------| |------+------+------+------+------|
| F11 | | | | | | | PScr | SLck | Paus | F12 |
|------+------+------+------+------|------.,------|------+------+------+------+------|
| |QWERTY|COLEMK|DVORAK|DVORMC| || | | | | | |
|------+------+------+------+------| || |------+------+------+------+------|
| | | | | |------'`------| | | | | RESET|
`----------------------------------' `----------------------------------'

View File

@@ -9,18 +9,34 @@ void promicro_bootloader_jmp(bool program);
// The first section contains all of the arguements
// The second converts the arguments into a two-dimensional array
#define KEYMAP( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, \
k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, \
k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d \
) \
{ \
{ k00, k01, k02, k03, k04, k05, KC_NO, k06, k07, k08, k09, k0a, k0b }, \
{ k10, k11, k12, k13, k14, k15, KC_NO, k16, k17, k18, k19, k1a, k1b }, \
{ k20, k21, k22, k23, k24, k25, KC_NO, k26, k27, k28, k29, k2a, k2b }, \
{ k30, k31, k32, k33, k34, k35, k46, k36, k37, k38, k39, k3a, k3b }, \
{ k40, k41, k42, k43, k44, k45, k47, k48, k49, k4a, k4b, k4c, k4d } \
{ k00, k01, k02, k03, k04, k05, KC_NO, k06, k07, k08, k09, k0a, k0b }, \
{ k10, k11, k12, k13, k14, k15, KC_NO, k16, k17, k18, k19, k1a, k1b }, \
{ k20, k21, k22, k23, k24, k25, KC_NO, k26, k27, k28, k29, k2a, k2b }, \
{ k30, k31, k32, k33, k34, k35, k46, k36, k37, k38, k39, k3a, k3b }, \
{ k40, k41, k42, k43, k44, k45, k47, k48, k49, k4a, k4b, k4c, k4d } \
}
#endif
// Used to create a keymap using only KC_ prefixed keys.
#define KC_KEYMAP( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, \
k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d \
) \
{ \
{ KC_##k00, KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05, KC_NO, KC_##k06, KC_##k07, KC_##k08, KC_##k09, KC_##k0a, KC_##k0b }, \
{ KC_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15, KC_NO, KC_##k16, KC_##k17, KC_##k18, KC_##k19, KC_##k1a, KC_##k1b }, \
{ KC_##k20, KC_##k21, KC_##k22, KC_##k23, KC_##k24, KC_##k25, KC_NO, KC_##k26, KC_##k27, KC_##k28, KC_##k29, KC_##k2a, KC_##k2b }, \
{ KC_##k30, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k35, KC_##k47, KC_##k36, KC_##k37, KC_##k38, KC_##k39, KC_##k3a, KC_##k3b }, \
{ KC_##k40, KC_##k41, KC_##k42, KC_##k43, KC_##k44, KC_##k45, KC_##k46, KC_##k48, KC_##k49, KC_##k4a, KC_##k4b, KC_##k4c, KC_##k4d } \
}
#endif

View File

@@ -0,0 +1,4 @@
NKRO_ENABLE = true
MOUSEKEY_ENABLE = no
EXTRAKEY_ENABLE = yes
CONSOLE_ENABLE = no

View File

@@ -0,0 +1,10 @@
<!-- -*- mode: markdown; fill-column: 8192 -*- -->
Atreus52 Modification
=======================
Firmware for my custom keyboard based on the Atreus layout, but with 5 rows and only 5 columns per hand.
More documentation coming soon.
# License
GPL-3+

View File

@@ -0,0 +1,18 @@
#include "../../config.h"
#undef MANUFACTURER
#undef PRODUCT
#undef DESCRIPTION
#undef MATRIX_ROW_PINS
#undef MATRIX_COL_PINS
#undef DIODE_DIRECTION
/* USB Device descriptor parameter */
#define MANUFACTURER Mesh Industries
#define PRODUCT Atreus52 Treeboard
#define DESCRIPTION q.m.k. keyboard firmware for Atreus52
#define MATRIX_ROW_PINS { C6, D7, E6, B4, B5 }
#define MATRIX_COL_PINS { B2, B1, F7, F6, F5, F4, B6, D3, D2, D1, D0, D4, B3 }
#define DIODE_DIRECTION COL2ROW

View File

@@ -0,0 +1,99 @@
#include "atreus62.h"
// Layers
#define DVORAK 0
#define QWERTY 1
#define RAISE 2
#define LOWER 3
#define BDO 4
#define RESETL 5
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[DVORAK] = KC_KEYMAP(
NO, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, NO, \
NO, QUOT, COMM, DOT, P, Y, F, G, C, R, L, NO, \
NO, A, O, E, U, I, D, H, T, N, S, NO, \
NO, SCLN, Q, J, K, X, B, M, W, V, Z, NO, \
NO, FN2, LALT, LCTL, FN1, LSFT, BSPC, ENT, SPC, FN0, LGUI, LEFT, RGHT, NO ),
[QWERTY] = KC_KEYMAP(
NO, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, NO, \
NO, Q, W, E, R, T, Y, U, I, O, P, NO, \
NO, A, S, D, F, G, H, J, K, L, SCLN, NO, \
NO, Z, X, C, V, B, N, M, COMM, DOT, SLSH, NO, \
NO, FN2, LALT, LCTL, FN1, LSFT, BSPC, ENT, SPC, FN0, LGUI, LEFT, RGHT, NO ),
[RAISE] = KC_KEYMAP(
NO, MRWD, MPRV, MPLY, MNXT, MFFD, TRNS, MUTE, VOLD, VOLU, DEL, NO, \
NO, TILD, GRV, LCBR, RCBR, DQUO, QUOT, EQL, PLUS, MINS, QUES, NO, \
NO, ESC, TAB, LPRN, RPRN, BSLS, SLSH, LEFT, DOWN, UP, RGHT, NO, \
NO, TRNS, TRNS, LBRC, RBRC, TRNS, INS, PIPE, UNDS, TRNS, TRNS, NO, \
NO, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, FN3, NO ),
[LOWER] = KC_KEYMAP(
NO, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, NO, \
NO, EXLM, AT, HASH, DLR, PERC, CIRC, AMPR, ASTR, LPRN, RPRN, NO, \
NO, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, NO, \
NO, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, DOT, TRNS, TRNS, TRNS, NO, \
NO, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, NO ),
[BDO] = KC_KEYMAP(
NO, ESC, 1, 2, 3, 4, 5, 0, SLSH, U, C, NO, \
NO, TAB, Q, W, E, R, 6, Y, I, O, P, NO, \
NO, LSFT, A, S, D, F, 7, G, H, J, K, NO, \
NO, T, Z, X, C, V, 8, B, N, M, L, NO, \
NO, LCTL, SPC, SPC, SPC, SPC, COMM, ENT, 9, NO, NO, NO, FN2, NO ),
[RESETL] = KEYMAP(
KC_NO, RESET, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_FN3,KC_NO )
};
const uint16_t PROGMEM fn_actions[] = {
[0] = ACTION_LAYER_MOMENTARY(RAISE), // Raise layer
[1] = ACTION_LAYER_MOMENTARY(LOWER), // Lower layer
[2] = ACTION_LAYER_TOGGLE(BDO), // BDO layer
[3] = ACTION_LAYER_TOGGLE(RESETL) // RESET layer
};
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{
// MACRODOWN only works in this function
switch (id) {
case 0:
if (record->event.pressed) {
register_code(KC_RSFT);
}
else {
unregister_code(KC_RSFT);
}
break;
}
return MACRO_NONE;
};
static uint8_t qw_dv_swap_state = 0;
bool process_record_user (uint16_t keycode, keyrecord_t *record) {
if (keycode == KC_LGUI) {
if (record->event.pressed)
qw_dv_swap_state |= 0b00000001;
else
qw_dv_swap_state &= ~(0b00000001);
}
if (keycode == KC_LCTL) {
if (record->event.pressed)
qw_dv_swap_state |= 0b00000010;
else
qw_dv_swap_state &= ~(0b00000010);
}
if (qw_dv_swap_state == 0b00000011) {
layer_invert(DVORAK);
}
return true;
}

View File

@@ -1,6 +1,6 @@
<!-- -*- mode: markdown; fill-column: 8192 -*- -->
Mnemes Swedish Bonaza
Mnemes Swedish Bonanza
=======================
My Layout in process, most of the code is shamelessly stolen from [algernons][algernon] excellent layout
@@ -21,7 +21,7 @@ It's for Windows (current work forces me to) and Swedish (matter of birth) so ym
## Base layer
![Base layer](img/base.png)
![Base layer](http://imgur.com/zTYxnE0)
* The number row doubles as a function row. Short presses produces numbers, long presses produces Fxx
@@ -33,19 +33,21 @@ It's for Windows (current work forces me to) and Swedish (matter of birth) so ym
- `LEAD s l` : `λ`.
- `LEAD s s` : `¯\_(ツ)_/¯`
- `LEAD s f` : `凸(ツ)凸`
- `LEAD u l` : Set unicode input mode to linux.
- `LEAD s w` : Set unicode input mode to windows.
- `LEAD a *` : Application switching based on position in start menu. Very specific to my computer.
## Nav layer
![Nav layer](img/fun.png)
![Nav layer](http://imgur.com/cbMWVDC)
Basic navigation on the right hand and modifiers close
by for the left. The latter because I tend to use `ctrl+arrows` quite a lot.
## Sym layer
![Sym layer](img/sym.png)
![Sym layer](http://imgur.com/n2jmqFU)
* Easy access to most symbols I use on a daily basis. Most common are on the home row, the rest are grouped as best as I could.

View File

@@ -1,7 +1,7 @@
#define ONESHOT_TIMEOUT 3000
#define TAPPING_TERM 200
#define PREVENT_STUCK_MODIFIERS
#define FORCE_NKRO
#define LEADER_TIMEOUT 1000
#include "../../config.h"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 448 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 420 KiB

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