Compare commits

..

2624 Commits

Author SHA1 Message Date
Jack Humbert
c208a6d4e5 update docs for isp 2017-06-23 23:09:14 -04:00
Jack Humbert
b9987d65f9 Merge branch 'master' of https://github.com/qmk/qmk_firmware 2017-06-23 23:07:01 -04:00
Jack Humbert
2c65a17752 add other mcu bootloaders 2017-06-23 23:05:42 -04:00
Jack Humbert
dfa6417ae3 Merge pull request #1422 from nstickney/master
update ErgoDox "Familiar" layout
2017-06-23 21:48:17 -04:00
Jack Humbert
918aea5b47 Update _summary.md 2017-06-23 21:29:35 -04:00
Jack Humbert
b4f2f44a6f Create isp_flashing_guide.md 2017-06-23 21:29:04 -04:00
Jack Humbert
1524c2cb16 Merge pull request #1418 from npoirey/master
Frenchdev v1
2017-06-23 18:05:33 -04:00
npoirey
8ad12b1eb7 Updated frenchdev readme 2017-06-23 23:59:30 +02:00
Stick
e43e58aad1 updated README.md 2017-06-23 16:28:06 -05:00
Stick
f4e4d6f8d0 Merge remote-tracking branch 'upstream/master' 2017-06-23 16:02:44 -05:00
Stick
37987837b1 added media keys; many bug fixes 2017-06-23 16:02:01 -05:00
npoirey
a3f151b8e9 Refactoring frenchdev 2017-06-23 21:35:33 +02:00
npoirey
de80e2c756 Moved frenchdev to handwired 2017-06-23 21:25:46 +02:00
Jack Humbert
a1ce43781a Merge pull request #1421 from 333fred/update-layout
Update my layout
2017-06-23 14:43:51 -04:00
Jack Humbert
91f3a73a28 Merge pull request #1419 from Wraul/phantom-improvements
Phantom improvements
2017-06-23 14:43:32 -04:00
Fredric Silberberg
6794495336 Doc updates 2017-06-23 11:36:14 -07:00
Fredric Silberberg
2b26abf9a9 Copy/paste additions. 2017-06-23 11:24:55 -07:00
Fredric Silberberg
946f4854c5 Added backlight control keys 2017-06-23 11:07:28 -07:00
Fredric Silberberg
a2fbd671ad Added a few more VS macros and another ctrl 2017-06-23 11:07:28 -07:00
Fredric Silberberg
7389beb18c Small keymap layout updates 2017-06-23 11:07:28 -07:00
Mathias Andersson
dd9b00543b Update Phantom readme
Added basic description of the keyboard and some build and configuration
instructions.

Also moved the RGB underlight modification instructions to the readme.
2017-06-23 12:07:18 +02:00
Mathias Andersson
7ca335cf5b Adjust Phantom for standard PCB
The previous default configuration and keymap was made for a Phantom
modified with RGB underlight.

This commit makes the default more in line with the "official"
configurations provided by the PCB.

The previous default have been moved to a separate keymap named
`rgbmod`. It has also been updated to better match the template keymap.
2017-06-23 12:07:18 +02:00
Mathias Andersson
3522496f24 Update Phantom config to better match template 2017-06-23 12:07:18 +02:00
Mathias Andersson
67b8bf8f70 Move Phantom LED handling to phantom.c
This is more in line with the structure provided by the keyboard
template.
2017-06-23 12:07:18 +02:00
Stick
98373f2fc1 added tapdance locking 2017-06-22 22:22:43 -05:00
npoirey
a012c24225 Removed image from git and added references to imgur album for Frenchdev keyboard. 2017-06-22 22:19:50 +02:00
Stick
fa96d64f37 Merge remote-tracking branch 'upstream/master' 2017-06-22 13:06:30 -05:00
Jack Humbert
2b98ec67f3 Update _summary.md 2017-06-22 13:23:08 -04:00
Jack Humbert
7b3c9cc8de Create adding_a_keyboard_to_qmk.md 2017-06-22 13:22:21 -04:00
Jack Humbert
f32c68ee65 Update porting_your_keyboard_to_qmk.md 2017-06-22 13:21:43 -04:00
Jack Humbert
c21c2cc92b Merge pull request #1416 from geofflane/feature/s65_x_std_grv_esc
Use the new Quantum KC_GESC instead of custom code
2017-06-22 12:38:45 -04:00
Erez Zukerman
fe9556104b Merge pull request #1331 from ariasuni/master
Fix undefined reference errors with avr-gcc 7.1
2017-06-22 08:40:59 -04:00
npoirey
0fb835c54c Fix warning in frenchdev 2017-06-22 10:47:44 +02:00
npoirey
23b0fc20e3 Frenchdev v1 2017-06-22 10:34:23 +02:00
Jack Humbert
9d22a1a6d8 add group edge via travis updates 2017-06-21 11:23:33 -04:00
Geoff Lane
8705ac408d Use the new Quantum KC_GESC instead of custom code 2017-06-21 09:37:20 -04:00
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
Stick
4b50ab029d Revert "ugly workaround for ErgoDoxEZ LED bugs: turn 'em all off"
This reverts commit f397402e10.
2017-06-08 08:59:33 -05:00
Stick
5a70cb30ee trying to fix LEDs 2017-06-08 08:59:30 -05:00
Stick
3af2bca1fc Merge remote-tracking branch 'upstream/master' 2017-06-08 08:52:32 -05: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
Stick
035f7bb1bf Merge remote-tracking branch 'upstream/master' 2017-06-07 15:55:52 -05: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
Stick
f397402e10 ugly workaround for ErgoDoxEZ LED bugs: turn 'em all off 2017-06-02 20:02:02 -05:00
Stick
4cf17210b6 moved alt out from under space 2017-06-02 19:51:29 -05:00
Stick
4ba9917f82 Merge remote-tracking branch 'upstream/master' 2017-06-02 19:50:54 -05: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
ariasuni
e87691fa5d Fix undefined reference errors with avr-gcc 7.1 2017-05-27 00:25:35 +02: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
Stick
8665ed3efc small changes 2017-04-18 09:46:07 -05: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
f0633f2540 Merge pull request #1063 from osamuaoki/master
Typo fixes
2017-02-02 18:33:04 -05:00
Erez Zukerman
eadb1afbd0 fixes typo 2017-02-02 18:32:21 -05:00
Erez Zukerman
404f79ef14 Merge pull request #1058 from edasque/master
Reverted Dockerfile to put the CMD back
2017-02-02 18:31:25 -05:00
skullydazed
4344273c95 Updated License Clarification (markdown) 2017-02-02 13:55:18 -08:00
Osamu Aoki
f787f4291a Typo fixes 2017-02-02 23:15:08 +09: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
Erez Zukerman
45e5b32781 Merge pull request #1049 from SjB/tap_dance_save_oneshot_mods
race condition between oneshot_mods and tap_dance
2017-02-01 20:12:44 -05:00
Erez Zukerman
a5d10e8c2e Merge pull request #1054 from deadcyclo/master
Adds support for ergodox shine and unicode and emoji support to the deadcyclo layout
2017-02-01 20:11:37 -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
Brendan Johan Lee
02a95ee08c Merge remote-tracking branch 'upstream/master' 2017-02-01 08:56:35 +01: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
Erik Dasque
407f949e4b Reverted Dockerfile to put the CMD back 2017-01-31 19:59:59 -05:00
Erez Zukerman
748316fc43 Merge pull request #1039 from zabereer/albert_ergodox_keymap
albert ergodox keymap
2017-01-31 19:29:19 -05:00
Erez Zukerman
0081101c30 Merge pull request #1055 from matzebond/master
update my neo2 keymap
2017-01-31 19:25:46 -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
Matthias Schmitt
4c3630dc17 update my neo2 keymap 2017-01-30 23:10:28 +01: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
Brendan Johan Lee
f70758622b [deadcyclo layout] Refactoring. Use custom functions and macros 2017-01-30 19:42:27 +01:00
plgruener
50dd22d1bf Updated License Clarification (markdown) 2017-01-30 17:29:40 +01:00
Brendan Johan Lee
f400ac1d7d [deadcyclo layout] fixed failing tests 2017-01-30 15:45:16 +01:00
Brendan Johan Lee
d43f4a5f57 Merge remote-tracking branch 'upstream/master' 2017-01-30 12:59:17 +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
SjB
5a860b71a1 race condition between oneshot_mods and tap_dance
since the keycode for a tap dance process gets process only after the
TAPPING_TERM timeout, you really only have ONESHOT_TIMEOUT -
TAPPING_TERM time to tap or double tap on the key. This fix save the
oneshot_mods into the action.state structure and applies the mods with
the keycode when it's registered. It also unregisters the mod when the
the tap dance process gets reset.
2017-01-29 13:26:31 -05: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
ec05f65421 Merge pull request #1043 from potz/patch-1
Clarify license on abnt2 keymap (#1038)
2017-01-27 18:40:59 -08: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
Potiguar Faga
2fe18a50ec Clarify license on abnt2 keymap (#1038) 2017-01-27 18:22:44 -02: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
Jack Humbert
a28f689387 Merge pull request #869 from dylanjgscott/master
Use `type cmp` to test for cmp in Makefile
2017-01-27 11:23:02 -05:00
lucwastiaux
93c1bfa646 dual capslock functionality, activating shell nav or brackets 2017-01-27 23:55:33 +08:00
Brendan Johan Lee
d7aa4724fb Merge remote-tracking branch 'upstream/master' 2017-01-27 15:24:08 +01:00
Brendan Johan Lee
13fa63b192 [deadcyclo layout] Added more unicode keys and ibus unicode compose trigger keys 2017-01-27 13:53:02 +01:00
Jack Humbert
712f3de16f Merge pull request #1035 from qmk/qmk_org_changes
Updated urls due to transfer to qmk org
2017-01-27 00:28:46 -05:00
Luke Silva
cfc4149712 Add ability to use tap macros without using functions 2017-01-27 10:28:42 +11:00
Albert Pretorius
fffe76a7b7 albert ergodox keymap 2017-01-26 20:07:47 +00: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
Brendan Johan Lee
8a645aa9ad Merge remote-tracking branch 'upstream/master' 2017-01-26 11:56:32 +01:00
Damien
b7b94bfb13 Merge pull request #17 from qmk/master
Merged from QMK project
2017-01-26 09:05:55 +01:00
Jack Humbert
c9ca368008 replace jackhumbert with qmk 2017-01-26 01:52:43 -05:00
Jack Humbert
aac7c0aa4d Merge pull request #1029 from SjB/qmk_infinity60
fix: infinity60 keyboard was not using quantum features.
2017-01-26 01:28:44 -05:00
Jack Humbert
0212a30aa6 Merge pull request #1033 from smt/smt/preonic
Add smt's keymap for Preonic
2017-01-26 01:27:51 -05:00
Jack Humbert
1b20243092 Add gitter image, start update to qmk org 2017-01-26 01:26:17 -05:00
Stephen Tudor
63e406eca4 Add smt keymap for Planck 2017-01-26 00:24:51 -05:00
Stephen Tudor
6546dddddb Remove COLEMAK from preonic_keycodes enum 2017-01-25 10:57:42 -05:00
Jack Humbert
7e3962f36a Merge branch 'master' of github.com:jackhumbert/qmk_firmware 2017-01-25 10:02:06 -05:00
Jack Humbert
938422ce99 layer defines to enum 2017-01-25 10:02:01 -05:00
Brendan Johan Lee
8af48194f2 [deadcyclo layout] Added lotsof new emojis and some new unicode keys 2017-01-25 15:16:38 +01:00
Stephen Tudor
51fe4f0d34 Update readme for smt Preonic keymap 2017-01-25 01:08:51 -05:00
Stephen Tudor
b3cf96ec2e Add smt keymap for Preonic 2017-01-25 00:47:45 -05:00
Brendan Johan Lee
d0db044164 Merge remote-tracking branch 'upstream/master' 2017-01-24 21:56:18 +01:00
Brendan Johan Lee
37ed3d13a4 [deadcyclo layout] Added unicode layer 2017-01-24 21:54:34 +01:00
Brendan Johan Lee
3c32e38036 [deadcyclo layout] Added support for ergodox ez shine 2017-01-24 19:10:35 +01: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
Jack Humbert
71137deba2 Merge pull request #1014 from SjB/lcd_mods_status
added mods status bit to visualizer.
2017-01-24 00:34:55 -05:00
SjB
9111cc00f5 updated all the other keymaps to support the new changes.
qmk firmware requires the matrix_init_user and matrix_scan_user
function to be implementated. Added these function to all the existing
keymaps.
2017-01-24 00:24:01 -05: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
SjB
a777495683 fix: infinity60 keyboard was not using quantum features.
the quantum matrix codes where not being initialized or/and called
so no feature of the quantum firmware could be used. These codes have
been added and now we can enjoy the quantum firmware goodness.
2017-01-23 23:15:31 -05:00
Dylan Scott
245f77b863 Compare Makefile with itself instead of using --help 2017-01-24 13:53:46 +11:00
Jack Humbert
841d7e6a1d turn off rgb_midi in ez 2017-01-23 13:55:24 -05:00
Jack Humbert
6d377bcc9c Merge pull request #1026 from TerryMathews/master
Let's Split: More code cleanup
2017-01-23 00:33:29 -05:00
TerryMathews
372af5e3f6 More code cleanup
Missed a few commented out vestigal defines in revx/config.h that had
been moved to keymap/serial and i2c.
2017-01-22 22:06:53 -05:00
Jack Humbert
0026f4ec09 Merge pull request #1018 from hot-leaf-juice/master
simplified my keymap
2017-01-22 19:01:34 -05:00
Christopher Browne
89461e743e More keyboard map tweaking (#1019)
* Add HOME/END keys as upper/lower on arrow-up/down

* Reduce .hex file size by turning off unneeded options

* Put digit keypad onto left hand upon RAISE; this will sometimes be preferable to double-hits of right hand
2017-01-22 19:01:07 -05:00
Jack Humbert
79a823d802 Merge pull request #1020 from remigius42/master
Swiss German layout for Ergodox EZ & Infinity
2017-01-22 18:59:57 -05:00
Jack Humbert
a8a1fbbac8 Merge pull request #1022 from lucwastiaux/master
Improvements to Dvorak Programmer Ergodox keymap
2017-01-22 18:59:12 -05:00
Jack Humbert
a54944ac33 Merge pull request #1021 from luizribeiro/ps2avrGB
Support for ps2avrGB / winkeyless.kr boards
2017-01-22 18:58:46 -05:00
Jack Humbert
405b2ae267 Merge pull request #1023 from TerryMathews/master
Corrects Let's Split code
2017-01-22 18:57:44 -05:00
TerryMathews
99d548c4fb Missed commenting out notes at end of line 2017-01-22 15:57:30 -05:00
TerryMathews
a00957abca Fixed keymap matrix on rev2
* Fixed keymap matrix in rev2 so that left half and right half match
when in same orientation.
2017-01-22 15:50:08 -05:00
TerryMathews
efa526f570 Created lines to uncomment keyboards built upside down
* Reverses column order to fix left-to-right key order that occurs if
PCB assembled upside down.
2017-01-22 15:46:43 -05:00
TerryMathews
9d24943ec1 Refactor code to eliminate duplicate defines
* Moved duplicated defines out of inappropriate source files (matrix
pins in keymap subdirectory)
* Eliminated default keymap directory
* Hardcoded serial keymap to use serial defines and EE_CONFIG
* Hardcoded i2c keymap to use i2c defines
2017-01-22 15:37:48 -05:00
Luiz Ribeiro
84661ac44b Upgrade AVR 8-bit Toolchain to 3.5.4 on Travis 2017-01-22 12:38:42 -05:00
Andreas Schmidt
08c192caea SG Ergodox layout: Updated layout documentation
- Swiss German Ergodox layout:
    Updated layout documentation based on previous
    layout changes.
2017-01-22 12:57:58 +01:00
Andreas Schmidt
afd2c2ee9e SG Ergodox layout: Fixed ENTER key mapping
- Swiss German Ergodox layout:
    Additional ENTER key was mapped to wrong layer
    and keyboard half.
2017-01-22 12:43:46 +01:00
Andreas Schmidt
c2c8a12022 SG Ergodox layout: Minor code formatting changes
- Swiss German Ergodox layout:
    Removed unnecessary spaces.
2017-01-22 12:35:24 +01:00
Andreas Schmidt
5c4a73d788 SG Ergodox layout: Add ENTER to left keyboard
- Swiss German Ergodox layout:
    Added ENTER key to left keyboard half on media layer
    such that the enter key is available on both halves to
    be able to flash both halves without an additional keyboard.
2017-01-22 12:32:40 +01:00
Andreas Schmidt
3fd9aa3660 SG Ergodox layout: Add <br/> macro to media layer
- Added <br/> macro to media layer of Swiss German layout
    for Ergodox
2017-01-22 12:30:18 +01:00
lucwastiaux
803a861b4e document BRACKETS and SHELL_LAYER 2017-01-22 10:32:17 +08:00
Luiz Ribeiro
642d0acef5 Added a copyright header to the default keymap... ¯\_(ツ)_/¯ 2017-01-21 18:23:44 -05:00
Luiz Ribeiro
bfbab75292 Slightly saner default keymap for ps2avrGB and removed some unused code 2017-01-21 18:15:39 -05:00
Luiz Ribeiro
9ce38cbccf Simplified and polished a bit the code changes on tmk_core 2017-01-21 17:18:05 -05:00
Andreas Schmidt
eb6abb6305 Renamed JSON source of Ergodox Swiss German
- Renamed the JSON source files for the layout description of
    the Ergodox Swiss German keymap
2017-01-21 20:58:28 +01:00
Andreas Schmidt
6b5cd656fd Correct layout description of ergodox swissgerman
- Added missing HTML macros to media layer.
2017-01-21 20:55:18 +01:00
Andreas Schmidt
250628de04 Removed Ergodox EZ & Infinity specific keymaps
- Removed the keymaps for Swiss German spefic for Ergodox EZ
    and Infinity after previously merging them.
2017-01-21 20:22:24 +01:00
Andreas Schmidt
c26c81c7f3 Merged keymap for Ergodox EZ & Infinity
- Merged keymap for Ergodox EZ & Infinity into one single
    keymap using pre-processor macros.
2017-01-21 20:20:47 +01:00
Luiz Ribeiro
461dfd4462 Simplification and code polish on ps2avrGB directory 2017-01-21 13:52:23 -05:00
Luiz Ribeiro
f7462aaa61 Got ps2avrGB to work with the V-USB protocol 2017-01-21 12:55:19 -05:00
lucwastiaux
4cf0f7dd16 make shell layer more compatible with default layer 2017-01-21 23:42:23 +08:00
Andreas Schmidt
bf0b355bc8 Add Swiss German layout for Ergodox Infinity
- Add Swiss German layout for Ergodox Infinity based on default
    layout for Ergodox EZ.
- Minor changes in the event loop to prevent flashing display
    background lights.
2017-01-21 16:24:41 +01:00
Andreas Schmidt
cbb1927d6f Add Swiss German layout for Ergodox EZ
- Add Swiss German layout for Ergodox EZ based on default
    layout for Ergodox EZ.
- Minor changes in the event loop to prevent flashing of leds.
2017-01-21 16:22:40 +01:00
lucwastiaux
01e750a372 couple of changes to the shell layer 2017-01-21 23:15:37 +08:00
Callum Oakley
dc3937d485 simplify 2017-01-20 21:22:18 +00: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
lucwastiaux
072237bce8 introduce shell_layer 2017-01-19 22:45:30 +08:00
Jack Humbert
10ff962321 Merge pull request #1016 from arthurnn/patch-1
this is the atreus doc
2017-01-18 21:28:43 -05:00
Arthur Nogueira Neves
489d0ab581 this is the atreus doc 2017-01-18 21:12:02 -05:00
David Olsson
f35adb4f37 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2017-01-18 22:58:49 +01:00
SjB
9eb8d05246 added mods status bit to visualizer.
Since we can't read the real_mods and oneshot_mods static variable
directly within the update_user_visualizer_state
function (Threading and serial link). We are know storing the mods
states in the visualizer_keyboard_status_t structure. We can now
display the status of the modifier keys on the LCD display.
2017-01-17 21:57:32 -05:00
Jack Humbert
3d264adfc5 Merge pull request #1013 from mitchlloyd/mitch-keymap-update
Update mitch layout for new keymaps
2017-01-17 16:38:31 -05:00
Mitch Lloyd
0815c7ae17 Update mitch layout for new keymaps 2017-01-17 13:01:07 -08: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
lucwastiaux
1ac15e6b3a put shell nav under tab, introduce an OSL for the brackets layer 2017-01-17 20:34:05 +08: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
Jack Humbert
6f44885615 Merge pull request #987 from belak/belak/whitefox-initial-support
Initial whitefox support
2017-01-15 01:14:02 -05:00
Jack Humbert
81b89f8b2b Merge pull request #996 from milestogo/master
kinesis keyboard with subdirectories for different hardware - matches pull #911
2017-01-15 01:13:15 -05:00
Jack Humbert
99d0b54e5e Merge pull request #999 from deadcyclo/master
Adds layer images to the deadcyclo layout readme
2017-01-15 01:12:21 -05:00
Jack Humbert
b2dcac9655 Merge pull request #1003 from mneme/master
Layout "Mneme" for Atreus62
2017-01-15 01:12:04 -05:00
Jack Humbert
ff76ee8377 Merge pull request #1005 from kd0kkv/patch-1
Update keymap.c
2017-01-15 01:11:38 -05:00
Jack Humbert
5036112d39 Merge pull request #1006 from Vifon/master
Update the vifon keymap
2017-01-15 01:11:04 -05:00
Jack Humbert
a896b300ec Merge pull request #1007 from bryan4887/bryan
Added Bryan's keymap
2017-01-15 01:10:39 -05:00
Jack Humbert
5521d854d0 Merge pull request #1009 from getclacking/master
Typo fix
2017-01-15 01:09:50 -05:00
Jason Milkins
b56ec38d5c Typo fix 2017-01-15 14:08:17 +08:00
Bryan Hernandez
aa0939b5ef Added Bryan's keymap 2017-01-13 21:51:55 -06:00
Erez Zukerman
0fde5a34e2 Merge pull request #1004 from jackhumbert/hf/scmd
Adds SCMD and SCMD_T
2017-01-13 21:16:10 -05:00
Jack Humbert
7288e5ab9c Update quantum_keycodes.h 2017-01-13 14:04:51 -05:00
Wojciech Siewierski
c6299a7859 Update the vifon keymap 2017-01-13 18:52:13 +01:00
Noah Andrews
032712866f Link correctly to keycode.txt 2017-01-13 10:21:47 -05:00
kd0kkv
c660d5f814 Update keymap.c
Fixed the default querty layout to have a B button and just one F
2017-01-13 08:30:46 -06:00
Xyverz
1074642c36 initial commit of my Atreus62 keymap 2017-01-13 01:51:52 -08:00
David Olsson
236a0b0b60 Update makefile.
Readme.
2017-01-12 16:00:09 +01:00
David Olsson
b2419b31d3 - Change docs to match keymap.
- Switched around modifiers on the function layer to match muscle memory.
- Added support for application switching.
2017-01-12 15:36:14 +01:00
Erez Zukerman
3717cf5864 A shot at aliasing 2017-01-12 07:38:07 -05:00
Erez Zukerman
8459bb97c1 Adds SCMD and SCMD_T 2017-01-11 21:57:41 -05: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
David Olsson
ed975f2454 Remove comments and change to correct KN_PLUS instead of KC_PLUS. 2017-01-12 00:14:42 +01:00
David Olsson
1bef7bf45a Link fix in readme. 2017-01-11 23:43:13 +01:00
David Olsson
e491f5a4d0 Readme + minor change to make it match reality. 2017-01-11 23:41:07 +01:00
David Olsson
3a453a03ed Atreus62 first semi-final draft 2017-01-11 23:00:34 +01:00
Noah Andrews
8d61e884f2 Fix dfu-programmer link 2017-01-10 14:58:56 -05:00
Brendan Johan Lee
c4fca8b6bc Fixed incorrect layer image in deadcyclo readme 2017-01-10 19:23:59 +01:00
Brendan Johan Lee
1121753746 Merge remote-tracking branch 'upstream/master' 2017-01-10 19:21:33 +01:00
Brendan Johan Lee
db1aec159d Added layer images to deadcyclo layout readme 2017-01-10 19:20:25 +01:00
Kaleb Elwert
a55c5e3ea3 Wait for two ticks rather than 1 2017-01-10 03:00:36 -08:00
Xyverz
7a9a5d0e62 Add files via upload
tidying up the keymap
2017-01-09 19:08:46 -08:00
Kaleb Elwert
0b38204e62 Fix mismatched indentation 2017-01-09 11:57:44 -08:00
Kaleb Elwert
49a00a535f Update clock frequencies to match the infinity ergodox 2017-01-09 11:15:10 -08:00
Kaleb Elwert
a702f4631e Increase tick frequency for responsiveness
Based off of PR #866 which did the same thing for the infinity60
2017-01-09 10:54:36 -08:00
Kaleb Elwert
ef2ebeb3ca Remove KC_ prefix from KEYMAP macro to match other keyboards 2017-01-09 10:45:34 -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
milestogo
9d4cc2f3f1 removing old programmer layout, in favor of milestogo 2017-01-08 22:25:41 -08:00
milestogo
62f1c13c3a trying to clean up duplicate docs 2017-01-08 22:17:47 -08:00
milestogo
f74ff86f9c kinesis remap 2017-01-08 22:02:01 -08: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
Jack Humbert
176b93d08e Merge pull request #994 from priyadi/unicode_mods_fix
Unregister all mods before inputting Unicode, and reregister afterwards
2017-01-08 21:12:02 -05:00
Jack Humbert
18d013b25b Merge pull request #993 from priyadi/greek_layer
Greek alphabet layer
2017-01-08 21:11:32 -05:00
Jack Humbert
d8b445b03b Merge pull request #990 from replicaJunction/master
Update replicaJunction keymap
2017-01-08 21:10:42 -05:00
Priyadi Iman Nurcahyo
30b80a23f3 Unregister all mods before inputting Unicode, and reregister afterwards 2017-01-09 02:59:10 +07:00
Priyadi Iman Nurcahyo
02055406e8 Greek alphabet layer 2017-01-09 02:50:13 +07:00
Priyadi Iman Nurcahyo
3a71f3534a Merge branch 'promethium' of github.com:priyadi/qmk_firmware into promethium 2017-01-09 02:48:07 +07:00
Priyadi Iman Nurcahyo
58b2536bf1 om telolet om 2017-01-08 23:45:16 +07:00
Priyadi Iman Nurcahyo
b0a9bd319b om telolet om 2017-01-08 22:45:16 +07:00
Joshua T
cfb45027bb Removed build.bat
Make.exe is easy enough to use, and there's no real sense in having a wrapper aroung it.
2017-01-07 14:05:04 -06:00
Joshua T
8f8d104759 Merged from upstream 2017-01-07 14:01:21 -06:00
Joshua T
b7b44dc481 Updated README and images to reflect latest keymap 2017-01-07 13:57:51 -06:00
Joshua T
677ae86bde Added another Shift on Extend layer.
This moves the GUI key to the pinkie, but honestly, I never use that function anyway.
2017-01-07 13:07:55 -06:00
Damien
0fb82c15a5 Merge pull request #15 from jackhumbert/master
Merge from qmk
2017-01-07 08:45:19 -06:00
Joshua T
fe51724544 Updated Atreus layout to 0.4
Removed Alt on base layer, replaced with Function layer.

Moved function keys to left hand.  Added mouse keys to right hand on the function layer.

Moved middle click on gaming layer to be consistent with mouse layer.

Added macro _USER. Macro contents are not implemented yet.
2017-01-06 19:56:57 -06:00
Joshua T
5ce7ec9ea5 Increased TAPPING_TERM to 200 2017-01-06 17:08:14 -06:00
Joshua T
6fba925f41 Fixed key not matching its diagram 2017-01-06 17:07:58 -06:00
Jack Humbert
e7df488a92 Merge pull request #989 from ishigoya/master
Keymap
2017-01-06 17:28:45 -05:00
ishigoya
402e6c13a1 new file: keyboards/ergodox/keymaps/ishigoya-jp/img/keyboard-layout-enL.png
new file:   keyboards/ergodox/keymaps/ishigoya-jp/img/keyboard-layout-jpL.png
	new file:   keyboards/ergodox/keymaps/ishigoya-jp/img/keyboard-layout-numL.png
	modified:   keyboards/ergodox/keymaps/ishigoya-jp/keymap.c
	new file:   keyboards/ergodox/keymaps/ishigoya-jp/readme.md
2017-01-06 17:53:04 +09:00
ishigoya
0bd03d698c new file: keyboards/ergodox/keymaps/ishigoya-jp/keymap.c 2017-01-06 16:41:14 +09:00
Kaleb Elwert
ca9a3dcb71 Fix unrelated spelling error 2017-01-04 21:20:06 -08:00
Kaleb Elwert
ccde1d8b5e Add white fox to keyboards readme 2017-01-04 21:19:32 -08:00
Jack Humbert
e5c7b5d8fc Merge pull request #983 from common-nighthawk/master
adds personal keymap for ergodox optimized for macOS with Vim
2017-01-04 23:41:56 -05:00
Jack Humbert
6a59dfb4c6 Merge pull request #984 from deadcyclo/master
Added the deadcyclo layout
2017-01-04 23:41:29 -05:00
Jack Humbert
ad290946f2 Merge pull request #988 from jcowgar/master
Added Jeremy’s developers keymap for the Planck
2017-01-04 23:39:52 -05:00
Jeremy Cowgar
5fca9ff4d5 Added Jeremy’s developers keymap for the Planck 2017-01-04 10:51:00 -05:00
Kaleb Elwert
262d31c389 Add whitefox readme 2017-01-04 00:29:58 -08:00
Kaleb Elwert
300c71a023 Remove unneeded define 2017-01-04 00:05:18 -08:00
Kaleb Elwert
8377d5fdc5 Initial whitefox support 2017-01-03 23:41:52 -08:00
Brendan Johan Lee
a85aefd27a fix version macro making layer 3 sticky on deadcyclo layout 2017-01-03 15:09:25 +01:00
Brendan Johan Lee
b23a963bec Added the deadcyclo layout 2017-01-02 19:12:06 +01:00
Jack Humbert
ffc1d97672 Update config.h 2017-01-02 09:57:39 -05:00
Daniel
0de3a5d0b2 reverts change outside of personal keymap. 2017-01-01 21:02:43 -07:00
Daniel
acffbb480f adds dedicated double-quote key. 2017-01-01 20:09:30 -07:00
Jack Humbert
847377fb43 Merge pull request #980 from TerryMathews/master
Establish support for AMJPAD
2016-12-31 13:38:10 -05:00
Jonas Oberschweiber
0aa413af44 Add support for supplementary planes for OS X 2016-12-31 19:37:56 +01:00
TerryMathews
925ed44405 Establish support for AMJPAD 2016-12-31 13:19:05 -05:00
Jack Humbert
6dbcc50f56 Merge pull request #975 from fredizzimo/remove_temp_files
Remove extra file that has been commited by mistake
2016-12-30 11:12:47 -05:00
Jack Humbert
4587248cda add warning to install_dep 2016-12-30 11:09:58 -05:00
Jack Humbert
f98062081b Merge pull request #976 from fredizzimo/fix_makefile_on_cygwin
Fix makefile on cygwin
2016-12-30 11:08:02 -05:00
Jack Humbert
460bf008f5 Merge pull request #973 from Wilba6582/keycode_refactor
Keycode refactor
2016-12-30 11:07:17 -05:00
Jack Humbert
07e266bbc6 Merge pull request #971 from algernon/ergodox-ez/algernon
ergodox: Update algernon's keymap to v1.10
2016-12-30 11:06:21 -05:00
Jack Humbert
2eced29675 Merge pull request #974 from fredizzimo/remove_malloc_from_sysex
API Sysex fixes
2016-12-30 11:05:50 -05:00
Jack Humbert
8a76075ca7 Merge pull request #972 from mechkeys/rgb_compat
Add extern for 'led' global, set 'weak' attribute for rgblight_set()
2016-12-29 21:42:16 -05:00
Scott Wilson
b8e74c378b Removed errant + 2016-12-29 09:32:02 -05:00
Fred Sundvik
1d1f2b4ee2 Clean up the SKIP_GIT code 2016-12-29 15:20:43 +02:00
Fred Sundvik
2acfd2ab2b Remove extra parenthesis from Makefile
Cygwin had trouble running the tests
2016-12-29 14:56:01 +02:00
Fred Sundvik
52430ef0d6 Remove extra file that has been commited by mistake 2016-12-29 12:26:41 +02:00
Fred Sundvik
dd685eceb2 API Sysex fixes
Fix memory leaks by using stack instead of malloc
Reduce memory usage by having less temporary bufffers
Remove warnings by adding includes
Decrease code size by 608 bytes (mostly due to not linking malloc)
More robust handling of buffer overflows
2016-12-29 12:13:30 +02:00
Wilba6582
d8a608f3ff Keycode refactor 2016-12-29 18:28:48 +11:00
Scott Wilson
748181dccd Add extern for 'led' global, set 'weak' attribute for rgblight_set() 2016-12-28 16:29:02 -05:00
coderkun
b0ade6dc98 Fix return value of hex_to_keycode() function in keymap “coderkun_neo2” 2016-12-28 20:08:45 +01:00
Gergely Nagy
eb588d630c ergodox: Update algernon's keymap to v1.10
Miscellaneous
=============

* `µ` can now be entered with UCIS.
* `™` can now be entered with UCIS.

Tools
=====

* `tools/hid-commands` can now find Banshee, and prefers it over Kodi.
* `tools/hid-commands` can now find Chrome too, not juts Chromium.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2016-12-28 19:27:48 +01:00
Jack Humbert
223cffd92f Merge pull request #968 from ofples/bugfix/right-modifiers
Fixed bug in do_code16
2016-12-28 13:07:16 -05:00
Jack Humbert
d3ec88cd07 Merge pull request #966 from Dbroqua/master
Some updates for GH60 and Satan keyboard
2016-12-28 13:04:08 -05:00
dbroqua
db48b28eeb - Updated dbroqua layout for Satan keyboard 2016-12-24 14:53:15 +01:00
dbroqua
033f0b92c4 - Added RGB layer on dbroqua GH60 layout 2016-12-24 14:43:07 +01:00
Jack Humbert
273faa4d9c add different scales for music mode 2016-12-23 20:59:00 -05:00
Ofer Plesser
01038ab54c Added check that makes sure a code is a right modifier before considering it as one 2016-12-23 21:51:11 +02:00
Jack Humbert
cae269b08b Christmas RGB light mode 2016-12-23 10:29:19 -05:00
dbroqua
6be061c6d4 - Fixed bug in dbroqua layout for Satan keyboard 2016-12-22 19:08:17 +01:00
dbroqua
46ff5f3b90 - Fixed bad typo in dbroqua layout for gh60
- Removed unused function in dbroqua layout for gh60
2016-12-22 08:26:55 +01:00
Erez Zukerman
bdca5c22fe Language edits 2016-12-21 21:54:04 -05:00
Erez Zukerman
9675e1357f Update readme.md 2016-12-21 21:09:20 -05:00
Erez Zukerman
a81279158b Update readme.md 2016-12-21 21:08:55 -05:00
Erez Zukerman
4e4f365c87 updates readme 2016-12-21 21:05:58 -05:00
Erez Zukerman
10864def46 New default firmware graphic 2016-12-21 21:03:53 -05:00
dbroqua
5ee136a36f - Renamed dbroqua_hhkb as dbroqua for gh60 layout 2016-12-21 23:12:33 +01:00
dbroqua
d6c545f471 - Rewrote dbroqua layout for Satan keyboard and adding RGB light 2016-12-21 23:08:30 +01:00
Jack Humbert
2fa36e38cf initial subatomic keymap (text) 2016-12-21 00:22:32 -05:00
Jack Humbert
438a5d685b limit voices by default, add some drums 2016-12-20 19:38:22 -05:00
dbroqua
b7696fb3b0 - Updated gh60 files 2016-12-20 18:43:06 +01: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
Jack Humbert
53ea854462 Merge branch 'master' of github.com:jackhumbert/qmk_firmware 2016-12-19 21:01:27 -05:00
Jack Humbert
dd114e648e planck preonic update 2016-12-19 21:01:23 -05:00
Jack Humbert
29c527f0f0 Merge pull request #964 from climbalima/master
added case stl
2016-12-19 14:06:39 -05:00
climbalima
281aa1dad0 added case stl from se7en9057 2016-12-19 14:01:40 -05:00
Jack Humbert
101416eb82 Merge branch 'master' of github.com:jackhumbert/qmk_firmware 2016-12-19 11:18:22 -05:00
Jack Humbert
06c64bbff3 rgb clean-up, api clean-up 2016-12-19 11:18:18 -05:00
Jack Humbert
ea926369b8 Merge pull request #963 from Wilba6582/fix_900
Fixes issue #900 KC_PWR not working
2016-12-19 11:07:39 -05:00
Wilba6582
a305da2bc9 Fixes issue #900 2016-12-20 02:46:50 +11:00
Erez Zukerman
29731588b7 Flips off MIDI and API_SYSEX 2016-12-19 08:27:05 -05:00
Jack Humbert
8e28bf39d8 Merge pull request #958 from pvinis/master
make a sysctl MO button so i can quickly use the arrows
2016-12-18 20:56:20 -05:00
Jack Humbert
96cc053799 Merge pull request #961 from Dbroqua/master
Updated kc60 layout for dbroqua_hhkb
2016-12-18 20:55:52 -05:00
Jack Humbert
e05fd4fc66 Merge pull request #962 from stanleylai/master
Added XD60 Support
2016-12-18 20:55:38 -05:00
Stanley Lai
5834d4b262 Merge remote-tracking branch 'refs/remotes/jackhumbert/master' 2016-12-18 15:35:59 -08:00
Stanley Lai
91913146db Added XD60 support 2016-12-18 15:35:03 -08:00
Stanley Lai
b49d7800ae Merge remote-tracking branch 'refs/remotes/jackhumbert/master' 2016-12-17 13:49:13 -08:00
dbroqua
e9f69ff46e - Revert local fail o_O 2016-12-17 22:33:45 +01:00
dbroqua
c3469b8d21 Merge branch 'master' of https://github.com/Dbroqua/qmk_firmware 2016-12-17 22:28:56 +01:00
Damien
c9803f78b2 Merge pull request #14 from jackhumbert/master
Merged from jackhumbert/qmk_firmware
2016-12-17 22:28:45 +01:00
dbroqua
df50bee5a8 Merge branch 'master' of https://github.com/Dbroqua/qmk_firmware 2016-12-17 22:25:21 +01:00
dbroqua
46b93f02d5 - Added capslock key 2016-12-17 22:25:08 +01:00
Erez Zukerman
8a65c640ec Adds a troubleshooting layout for resetting the EEPROM 2016-12-16 20:53:42 -05:00
Erez Zukerman
df32d5b769 Removes alt/j dual function 2016-12-16 20:13:40 -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
Pavlos Vinieratos
34d6f07d2c make a sysctl MO button so i can quickly use the arrows 2016-12-16 09:46:03 +01:00
Jack Humbert
b8e13167c8 Merge pull request #957 from priyadi/qwertz-dot-comma
Update my layouts using QWERTZ style dot & comma, move QUOT to SCLN position
2016-12-15 22:52:12 -05:00
Priyadi Iman Nurcahyo
c641e46567 QWERTZ style dot & comma, move QUOT to SCLN position 2016-12-16 01:16:55 +07:00
Jack Humbert
61ab3018c7 Merge pull request #956 from sgoodwin/master
Make keymap compile again.
2016-12-15 10:02:31 -05:00
Samuel Ryan Goodwin
826c929c49 Make keymap compile again. 2016-12-15 09:52:57 +01:00
Jack Humbert
36dddd45fb Merge pull request #949 from priyadi/promethium
Promethium firmware update
2016-12-15 00:03:18 -05:00
Jack Humbert
803040d4ee Merge pull request #952 from pvinis/master
update my keymap a bit
2016-12-15 00:03:02 -05:00
Jack Humbert
97f9b05efb Merge pull request #953 from priyadi/ibm_terminal
IBM Terminal M-122 converter support
2016-12-15 00:02:45 -05:00
Jack Humbert
2ba7f38bf4 Merge pull request #955 from askreet/powerDrawPerKeyboard
Allow power consumption to be set per-keyboard.
2016-12-15 00:02:19 -05:00
Kyle Smith
83e613ad23 Allow power consumption to be set per-keyboard. 2016-12-14 23:29:33 -05:00
climbalima
16483409cf better switch spacing in svg 2016-12-14 23:11:04 -05:00
lucwastiaux
ebe351a690 enable brackets using the - key on the right, and cleanups 2016-12-15 07:22:31 +08:00
Priyadi Iman Nurcahyo
e58304c094 My layout for M-122 terminal keyboard 2016-12-14 22:34:23 +07:00
Priyadi Iman Nurcahyo
dc49231391 Update KEYMAP macro to be consistent with the rest of QMK 2016-12-14 22:33:56 +07:00
Priyadi Iman Nurcahyo
bd5f323bec IBM Terminal M-122 converter support
Code ported from TMK to QMK.
2016-12-14 16:21:01 +07: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
Priyadi Iman Nurcahyo
e5b165c255 fine tune trackpoint initialization 2016-12-14 07:10:28 +07:00
Priyadi Iman Nurcahyo
32e952bda9 disable remote mode 2016-12-14 06:03:27 +07:00
Priyadi Iman Nurcahyo
0b54b32361 Enable Adafruit BLE support 2016-12-14 06:03:27 +07:00
Priyadi Iman Nurcahyo
9838ddcead Pretend to be Thinkpad USB Keyboard 2016-12-14 06:03:27 +07:00
Priyadi Iman Nurcahyo
a747343b61 Enable PS2 remote mode 2016-12-14 06:03:27 +07:00
Jack Humbert
20892bf706 Merge pull request #948 from climbalima/master
svg bug fix and added pilcrow to hand wire
2016-12-12 23:32:14 -05:00
climbalima
5dce74d0ff svg bug fix and added pilcrow to hand wire 2016-12-12 22:36:16 -05:00
Jack Humbert
ae95834f5a specialise music variables 2016-12-12 16:06:41 -05:00
Jack Humbert
0edfe55bfe re-enable audio and extrakeys 2016-12-12 15:39:07 -05:00
Jack Humbert
0213acbdbe Merge pull request #946 from climbalima/master
Changed lets split svg to support boston meetup pcb
2016-12-12 00:47:48 -05:00
Jack Humbert
6cd55d89e6 Merge pull request #945 from priyadi/planck_priyadi
Remove unneeded options to reduce firmware size
2016-12-12 00:47:29 -05:00
Jack Humbert
f2e5ca25db Merge pull request #944 from priyadi/negmousefix
Allow negative values for mouse movements
2016-12-12 00:46:59 -05:00
Jack Humbert
a30591cd53 Merge pull request #943 from lucwastiaux/master
Update dvorak_programmer layout
2016-12-12 00:46:32 -05:00
Jack Humbert
02fa4e3ce2 Merge pull request #942 from priyadi/cpp11
The adafruit BLE C++ code requires -std=c++11
2016-12-12 00:46:12 -05:00
climbalima
7bc1caa21c changed svg after merge 2016-12-10 23:18:46 -05:00
climbalima
73d6018296 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-12-10 23:15:47 -05:00
climbalima
56515ba503 changed svg to support proto pcb 2016-12-10 23:13:36 -05: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
Priyadi Iman Nurcahyo
a6db20e518 Remove unneeded options to reduce firmware size 2016-12-10 21:08:22 +07:00
Priyadi Iman Nurcahyo
434b286032 Allow negative values for mouse movements 2016-12-10 19:40:44 +07:00
lucwastiaux
75d7eb9cb5 put home/end on thumb cluster 2016-12-10 13:20:05 +08:00
lucwastiaux
a3c8949627 readme updates 2016-12-10 12:52:59 +08:00
lucwastiaux
9240f27ba9 Merge remote-tracking branch 'upstream/master' 2016-12-10 12:49:47 +08:00
lucwastiaux
dc4c8875ba use thumb cluster key to toggle brackets layer 2016-12-10 12:37:32 +08:00
Ofer Plesser
eac8fa7999 Implemented basic key combination feature 2016-12-10 00:49:11 +02:00
Priyadi Iman Nurcahyo
901f29e3aa The adafruit BLE C++ code requires -std=c++11 2016-12-10 04:08:08 +07:00
Damien
13c4080a1d Merge pull request #13 from jackhumbert/master
Merged from qmk
2016-12-09 19:44:03 +01:00
Pavlos Vinieratos
9a59fee667 tap dance for some layers. one tap sysctl, two taps mouse. 2016-12-09 16:01:11 +01:00
Pavlos Vinieratos
063ade6bb5 add light for some layers 2016-12-09 16:00:46 +01:00
Pavlos Vinieratos
be2863e56d separate sysctl and mouse layers 2016-12-09 16:00:10 +01:00
Pavlos Vinieratos
d5914a4dfe add alt key 2016-12-09 14:37:22 +01:00
Pavlos Vinieratos
5d241479f5 media keys 2016-12-09 14:37:07 +01:00
xyverz
9216bc7377 Merge remote-tracking branch 'upstream/master' 2016-12-06 17:36:19 -08:00
Daniel
1f52dbcac0 removes double-tab brackets and adds back quot to left cmd. 2016-12-06 14:15:23 -06:00
Jack Humbert
985a091a73 Update readme.md 2016-12-06 09:49:05 -05: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
Erez Zukerman
cd41355069 Merge pull request #936 from jackhumbert/f/shine_default
Official default factory firmware for ErgoDox EZ Shine
2016-12-06 07:57:02 -05:00
Erez Zukerman
82922a4937 A new default layout that supports Shine 2016-12-05 20:35:03 -05:00
Erez Zukerman
a05b6a72d9 Adjusts config for better mousekey support 2016-12-05 20:34:24 -05:00
Jack Humbert
c87d039839 Merge pull request #921 from Wilba6582/raw_hid
Initial version of Raw HID interface
2016-12-05 00:13:37 -05:00
Jack Humbert
1eec2b7277 Update planck.c 2016-12-04 23:11:22 -05:00
Jack Humbert
b66845ca7f Update rules.mk 2016-12-04 23:10:44 -05:00
Jack Humbert
7e4341e437 Update rules.mk 2016-12-04 23:01:07 -05:00
Jack Humbert
d15d1d3833 Merge pull request #935 from priyadi/promethium
Promethium handwired keyboard firmware update
2016-12-04 21:07:26 -05:00
Priyadi Iman Nurcahyo
c7d11fd001 Remove unnecessary build options 2016-12-05 02:15:38 +07:00
Priyadi Iman Nurcahyo
e18a75609d Merge branch 'master' into promethium 2016-12-05 02:01:20 +07:00
Jack Humbert
dd2911151b Merge pull request #932 from climbalima/master
Added ponoko svg for lets split
2016-12-04 13:53:25 -05:00
Jack Humbert
082f7ed3d3 Merge pull request #933 from priyadi/ps2_mouse_init_user2
Implemented weak ps2_mouse_init_user()
2016-12-04 13:52:17 -05:00
Priyadi Iman Nurcahyo
236c040859 syntax error fix 2016-12-05 01:38:41 +07:00
Priyadi Iman Nurcahyo
07d29b7d29 syntax error fix 2016-12-05 01:22:40 +07:00
Priyadi Iman Nurcahyo
d059624bfb Implemented weak ps2_mouse_init_user()
There are a lot of PS/2 commands, some are vendor/device specific, so we
provide a weak ps2_mouse_init_user() to be implemented in each keyboard
that need it.
2016-12-05 01:21:17 +07:00
Priyadi Iman Nurcahyo
73073f270b Trackpoint initialization 2016-12-05 01:15:04 +07:00
Priyadi Iman Nurcahyo
6ef3060b42 Implemented weak ps2_mouse_init_user()
There are a lot of PS/2 commands, some are vendor/device specific, so we
provide a weak ps2_mouse_init_user() to be implemented in each keyboard
that need it.
2016-12-05 01:07:12 +07:00
Priyadi Iman Nurcahyo
fc80aa9974 Merge branch 'master' into promethium 2016-12-04 23:57:47 +07:00
Priyadi Iman Nurcahyo
a8e5f61805 fix emoji LED indicators. 2016-12-04 23:55:06 +07:00
Priyadi Iman Nurcahyo
75b18773bd fix RGB LED order 2016-12-04 14:51:27 +07:00
climbalima
0f71c81df8 having trouble with conflicts 2016-12-03 17:37:41 -05:00
climbalima
45b7718fb1 cleaned up personal projects 2016-12-03 17:30:40 -05:00
climbalima
59c54d651b Merge https://github.com/climbalima/qmk_firmware 2016-12-03 17:15:22 -05:00
climbalima
ae66f0d702 added plate files for lets split 2016-12-03 17:09:11 -05:00
climbalima
2186e5ae85 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-12-03 17:01:26 -05:00
Jack Humbert
f39e1b5dfe cleans-up formatting of readme 2016-12-03 14:36:39 -05:00
Jack Humbert
d0c667c790 Merge pull request #931 from OferPlesser/feature/improve-ps2-mouse
Improving ps/2 mouse
2016-12-03 10:13:11 -05:00
Jack Humbert
464f7d9687 Merge pull request #916 from wez/ble_4
Connect the adafruit ble code to the lufa main loop
2016-12-03 10:12:38 -05:00
Ofer Plesser
f0768f8be9 Forgot to use define in delay instead of hardcoded number 2016-12-03 13:41:56 +02:00
Ofer Plesser
8e2732edf3 Updated ps2 mouse documentation in readme 2016-12-03 13:11:37 +02:00
Ofer Plesser
9f41544e1d Added back PS2_MOUSE_INIT_DELAY define 2016-12-03 13:09:42 +02:00
ofples
d639e08a31 Refactored and improved ps2 mouse feature 2016-12-03 13:05:02 +02:00
Wez Furlong
044fa3ff85 Connect the adafruit ble code to the lufa main loop
There are now 3 potential locations to send HID reports:

1. USB
2. The bluefruit easy key
3. Adafruit BLE

Generally speaking, if USB is connected then we should prefer to
send the reports there; it is generally the best channel for this.

The bluefruit module has no feedback about bluetooth connectivity
so the code must speculatively send reports over both USB and bluetooth.

The BLE module has connectivity feedback.  In general we want to
prefer to send HID reports over USB while connected there, even
if BLE is connected.  Except that it is convenient to force them
over BLE while testing the implementation.

This policy has been extracted out into a where_to_send function
which returns a bitmask of which of the channels should be used.
2016-12-02 22:46:23 -08:00
Jack Humbert
7f88c9506c Merge pull request #930 from cbbrowne/master
Adds warnings to Planck keymaps that exceed 0x7000 bytes in size #929
2016-12-02 15:21:04 -05:00
Jack Humbert
11d263118a Merge pull request #929 from jackhumbert/hf/size-warnings
Adds warnings to Planck keymaps that exceed 0x7000 bytes in size
2016-12-02 15:20:44 -05:00
cbbrowne
cee0cf8a6e Adds warnings to Planck keymaps that exceed 0x7000 bytes in size #929 2016-12-02 14:12:55 -05:00
Jack Humbert
245c9508bd adds warnings to 4 keymaps 2016-12-02 13:32:50 -05:00
Jack Humbert
e14b0e8e7e Merge pull request #881 from NoahAndrews/patch-1
Recommend WSL on Windows 10 [Discussion]
2016-12-02 13:22:03 -05:00
Jack Humbert
78f8fe361f Merge pull request #915 from wez/ble_3
Add support for Adafruit BLE modules
2016-12-02 13:14:04 -05:00
Jack Humbert
8f0a8cb7a6 Merge pull request #914 from wez/ble_2
Add arduino-alike GPIO pin control helpers
2016-12-02 13:12:56 -05:00
Jack Humbert
ead68248c5 Merge pull request #913 from wez/ble_1
Tidy up atomicity in timer.c and ring_buffer.h
2016-12-02 13:12:19 -05:00
Jack Humbert
4bcec04c01 Merge pull request #924 from cbbrowne/master
Keymapping revs, revisions to documentation on API_SYSEX_ENABLE
2016-12-02 13:06:31 -05:00
Erez Zukerman
555e41d9e5 Annotates nordic 2016-12-02 13:03:51 -05:00
Erez Zukerman
aa70aa3962 Tweaks Kristian's layout again 2016-12-02 13:03:39 -05:00
Erez Zukerman
5d43a2aecf Kristian's keymap 2016-12-02 12:53:18 -05:00
cbbrowne
f6e86cd2c9 I also want page-down/page-up on UPPER layer 2016-12-02 12:35:03 -05:00
cbbrowne
570e784140 I want page-down/page-up - put those on LOWER-Left/Right near bottom corner 2016-12-02 12:31:43 -05:00
cbbrowne
95a160bf92 Improve docs on memory usage 2016-12-01 16:31:51 -05:00
cbbrowne
af4c44deef Improve docs on SYSEX bit 2016-12-01 16:31:30 -05:00
cbbrowne
b787ed9dc6 More notes on .hex size protection 2016-12-01 16:24:03 -05:00
cbbrowne
1f290f6213 Make my builds smaller 2016-12-01 16:21:15 -05:00
cbbrowne
13eb2f826b Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-12-01 12:54:16 -05:00
Erez Zukerman
66b13a66e9 Better layout 2016-11-30 22:22:57 -05:00
Wilba6582
fe001d46fd Initial version of Raw HID interface 2016-12-01 00:44:54 +11:00
cbbrowne
ff1b563e85 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-11-29 12:20:26 -05:00
Jack Humbert
81ea909467 Merge pull request #919 from jackhumbert/hf/robot_test_layout
Test layout for ErgoDox EZ manufacturing robot
2016-11-29 11:22:31 -05:00
Erez Zukerman
4094544d41 Test layout for ErgoDox EZ manufacturing robot 2016-11-29 09:23:16 -05:00
Erez Zukerman
51ae6da99e Merge pull request #918 from jackhumbert/wu5y7
Adds Ergodox EZ RGB lights (both sides using I2C) and implements API base, Midi SysEx API
2016-11-29 08:16:04 -05:00
Erez Zukerman
7b219a7f60 Merge pull request #917 from gid0/master
keyboards/ergodox/keymaps/bepo : merge from author
2016-11-29 08:13:49 -05:00
Jack Humbert
f946d830f9 guess i didnt pull 2016-11-29 00:11:11 -05:00
Jack Humbert
efbc205efd Merge branch 'wu5y7' of github.com:jackhumbert/qmk_firmware into wu5y7 2016-11-29 00:10:06 -05:00
Jack Humbert
d0cefef946 enable rgblight by default for ez 2016-11-29 00:09:56 -05:00
Jack Humbert
06f18e95d4 enable api sysex for ez 2016-11-29 00:06:12 -05:00
Jack Humbert
6e0f994950 Merge branch 'master' of github.com:jackhumbert/qmk_firmware into wu5y7 2016-11-28 23:51:07 -05:00
cbbrowne
5776f39667 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-11-28 12:27:42 -05:00
Olivier
5a2501d90f Add the AZERTY compatibility layer. 2016-11-28 16:38:03 +01:00
Olivier
f02eccbb29 Change layer names (cosmetic change) and reorder them so that the "shift" layer can be accessed from the "alt" layer when in QWERTY compat mode. 2016-11-28 14:16:42 +01:00
Erez Zukerman
84735836e3 Tweaks position of TOG not to conflict with MO 2016-11-28 08:13:32 -05:00
Olivier
d2b6438e39 A little cleanup, add some comments, change others. 2016-11-28 14:10:31 +01:00
Erez Zukerman
9caf866618 Tweaks EZ Makefile 2016-11-28 07:59:01 -05:00
Erez Zukerman
2d0ada0190 Pulls LED config into common config for EZ 2016-11-28 07:55:02 -05:00
Olivier
3f1fca2eb8 Adjust comment. 2016-11-28 11:21:23 +01:00
Olivier
e26a80508f Reorganize the numeric keypad layer more like a traditional numeric keypad. 2016-11-28 11:20:00 +01:00
Wez Furlong
712476cd28 Add support for Adafruit BLE modules
This implements some helper functions that allow sending key reports
to an SPI based Bluetooth Low Energy module, such as the Adafruit
Feather 32u4 Bluefruit LE.

There is some plumbing required in lufa.c to enable this; that
is in a follow-on commit.
2016-11-27 23:49:44 -08:00
Wez Furlong
8485bb34d2 Add arduino-alike GPIO pin control helpers
Unlike the arduino functions, these don't take abstract pin numbers,
they take pin labels like `B0`.  Also, rather than taking very
generic parameter names, these take slightly more descriptive
enum values.

These improve the clarity of code that would otherwise be inscrutable
bit manipulation in tersely named port register names.
2016-11-27 22:58:34 -08:00
Wez Furlong
be4e75423a Tidy up atomicity in timer.c and ring_buffer.h
Adopt the macros for saving/restoring the interrupt state
that are provided by the avr gcc environment.

Removing intialization of the timer value; this shaves off
a few bytes because globals are default initialized to zero.
2016-11-27 22:58:34 -08:00
Olivier
d6d0b7eada Merge https://github.com/jackhumbert/qmk_firmware 2016-11-27 23:23:21 +01:00
Daniel
a94eb16bd7 removes the double actions from the metakeys. 2016-11-27 16:12:32 -06:00
dbroqua
a849bdc581 - Merged 2016-11-27 11:44:30 +01:00
Jack Humbert
7edac212c8 separated into api files/folder 2016-11-26 15:38:44 -05:00
Jack Humbert
1585fc4b61 Merge pull request #908 from priyadi/promethium
My handwired keyboard firmware
2016-11-26 13:40:42 -05:00
Priyadi Iman Nurcahyo
12c1314b02 update docs 2016-11-27 00:40:31 +07:00
Jack Humbert
b5c811bde5 Merge pull request #907 from priyadi/unicode_docs
Update Unicode documentation
2016-11-26 12:38:48 -05:00
Jack Humbert
637170d560 Merge pull request #906 from priyadi/unicode_map_fix_warning
fix strict-prototypes warning
2016-11-26 12:38:10 -05:00
Priyadi Iman Nurcahyo
a182cbc031 Update Unicode documentation 2016-11-27 00:34:29 +07:00
Priyadi Iman Nurcahyo
6fee7e178f fix strict-prototypes warning 2016-11-26 23:53:15 +07:00
Priyadi Iman Nurcahyo
a1f88bf7bf Merge branch 'promethium' of github.com:priyadi/qmk_firmware into promethium 2016-11-26 23:48:52 +07:00
Priyadi Iman Nurcahyo
0f39ab5219 remove ifdef on chip type 2016-11-26 23:48:11 +07:00
Priyadi Iman Nurcahyo
7f3c9c6a39 protocols.mk is already included in latest QMK 2016-11-26 23:48:11 +07:00
Priyadi Iman Nurcahyo
b5019bef05 change init delay to 2000ms 2016-11-26 23:48:11 +07:00
Priyadi Iman Nurcahyo
8ee389c9b6 My Promethium keyboard firmware 2016-11-26 23:48:11 +07:00
Jack Humbert
746fd15638 Merge pull request #905 from priyadi/ps2_documentation
A few addition to PS2 documentation.
2016-11-26 10:46:41 -05:00
Jack Humbert
fbd4c34c0f Merge pull request #904 from priyadi/ps2_remove_hardcoded_pins
PS2 pins configuration belongs to each keyboards config.h
2016-11-26 10:46:29 -05:00
Priyadi Iman Nurcahyo
f2214ce1cb remove define checks. didn't work because of include ordering. 2016-11-26 15:57:48 +07:00
Priyadi Iman Nurcahyo
d9d67e7b76 add macro error when a required define is missing 2016-11-26 15:26:02 +07:00
Priyadi Iman Nurcahyo
f837406ace A few addition to PS2 documentation. 2016-11-26 14:23:55 +07:00
Priyadi Iman Nurcahyo
17acde94ee Fix unterminated ifndef 2016-11-26 14:02:38 +07:00
Priyadi Iman Nurcahyo
de1df63953 PS2 pins configuration belongs to each keyboards config.h
Each keyboard might have different pin configuration. And keeping this
here will trigger redefinition warning on keyboards that have PS2
defines.
2016-11-26 13:55:41 +07:00
Priyadi Iman Nurcahyo
2cf9b93758 remove ifdef on chip type 2016-11-26 13:47:03 +07:00
Priyadi Iman Nurcahyo
6313ec7ef9 protocols.mk is already included in latest QMK 2016-11-26 13:46:05 +07:00
Priyadi Iman Nurcahyo
b94e5b2aa6 change init delay to 2000ms 2016-11-26 13:44:50 +07:00
Jack Humbert
7a1eca784f Merge pull request #903 from priyadi/ps2_init_delay
Make PS2 init delay configurable.
2016-11-26 01:34:49 -05:00
Priyadi Iman Nurcahyo
b5511b9a8a Merge branch 'master' into promethium 2016-11-26 13:31:17 +07:00
Priyadi Iman Nurcahyo
9a071f051c Make PS2 init delay configurable. Some devices are not fully powered up
after 1s.
2016-11-26 13:24:53 +07:00
Priyadi Iman Nurcahyo
4b0d16cd7b My Promethium keyboard firmware 2016-11-26 13:11:40 +07:00
cbbrowne
e3c735e400 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-11-25 12:06:35 -05:00
Jack Humbert
bf23ac96f6 Merge pull request #902 from OferPlesser/feature/ps2-mouse-support
PS/2 mouse support
2016-11-25 11:22:44 -05:00
ofples
97e7486d4c Added documentation for PS/2 mouse in readme 2016-11-25 12:10:44 +02:00
ofples
0c9d66eb59 Removed comment 2016-11-25 09:20:41 +02:00
ofples
03d6e165bb Added missing endif for ifdef __AVR_ATmega32U4__ and removed the unnecessary one at the end of the file 2016-11-25 09:17:40 +02:00
ofples
3be13d1ffb Added protocol.mk to build 2016-11-25 09:15:12 +02:00
Jack Humbert
98d7ad6f49 Merge pull request #899 from Wilba6582/suspend_fix
Fixed NO_SUSPEND_POWER_DOWN handling
2016-11-24 22:20:08 -05:00
Jack Humbert
f25596b8dc rgblight fixes 2016-11-23 21:28:12 -05:00
Jack Humbert
cefa8468fb travis pls 2016-11-23 20:16:38 -05:00
Jack Humbert
2e23689b8e converted to new format 2016-11-23 18:52:02 -05:00
cbbrowne
c05cbaf534 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-11-23 17:47:16 -05:00
Wilba6582
cf3926a8e1 Fixed NO_SUSPEND_POWER_DOWN handling 2016-11-23 19:45:50 +11:00
Jack Humbert
3d7aaa31e4 converted to 8bit messages 2016-11-23 00:30:06 -05:00
Wilba6582
5893f0fa1f Fixed NO_SUSPEND_POWER_DOWN handling 2016-11-23 16:22:57 +11:00
Jack Humbert
2b3a3ca678 Merge pull request #898 from PureSpider/backlight-fix
Set backlight status to on if it's at maximum brightness already and the brightness increase keybind is used
2016-11-22 18:41:37 -05:00
Jack Humbert
e131de3df6 Merge pull request #896 from h-youhei/jp106
Add japanese keymap
2016-11-22 18:39:54 -05:00
PureSpider
d37becc0a9 Set backlight status to on if it's at maximum brightness already and the brightness increase keybind is used
Before it was turned on but the status wasn't set to on, so you had to
push the backlight toggle bind twice to turn it off again
2016-11-22 22:12:57 +01:00
h-youhei
2febf9b9f7 Add japanese keymap 2016-11-22 20:40:12 +09:00
Jack Humbert
450a8fb5b6 Merge branch 'master' of github.com:jackhumbert/qmk_firmware into wu5y7 2016-11-21 20:17:45 -05:00
Jack Humbert
06a2677b7e fix infinity 2016-11-21 20:17:32 -05:00
Jack Humbert
6390033e86 cleaning up midid 2016-11-21 20:14:16 -05:00
Jack Humbert
af119baf71 Merge pull request #894 from dchagniot/ergodoxDvorakEmacs
Ergodox dvorak emacs
2016-11-21 20:00:40 -05:00
Jack Humbert
4bb0eaef26 Merge pull request #893 from Sihui/sh-hhkb-jp
[HHKB JP with Dvorak]
2016-11-21 20:00:13 -05:00
Jack Humbert
be265decae Merge pull request #892 from fredizzimo/disable_ergodox_lcd
Always initialize the Infinity Ergodox backlight
2016-11-21 19:59:39 -05:00
Jack Humbert
377583d9f3 Merge pull request #891 from g-sam/galson-keymap
adds galson keymap
2016-11-21 19:59:17 -05:00
Jack Humbert
132c079534 Merge pull request #890 from algernon/f/space-cadet/timeout
Add a timeout to space-cadet shift.
2016-11-21 19:58:55 -05:00
Jack Humbert
e0fc186c28 Merge pull request #888 from climbalima/master
Added pro micro to maxipad
2016-11-21 19:58:24 -05:00
Jack Humbert
ea472fb018 Merge pull request #887 from profet23/atreus62
atreus62 Keyboard Support
2016-11-21 19:58:00 -05:00
Jack Humbert
664c0a036b cleaning up new code 2016-11-21 19:50:55 -05:00
Jack Humbert
27ebacb15d merging lets_split 2016-11-21 19:18:47 -05:00
Jack Humbert
c1037b1dc0 working with helper, qmk_helper_windows@05b0105 2016-11-21 18:05:06 -05:00
Jack Humbert
b57cf3c0c8 more structure to the package 2016-11-21 12:54:06 -05:00
Sihui Huang
b75538c0bf add del to new cmd 2016-11-20 14:45:51 -08:00
Sihui Huang
390a1bda8b add space to NewCmd layer 2016-11-20 13:32:25 -08:00
Sihui Huang
ccc34851f2 add space to NewCmd layer 2016-11-20 13:31:41 -08:00
Didier Chagniot
6f24344be7 typo fix 2016-11-20 20:51:05 +01:00
Sihui Huang
23f63ed1b9 Update README.md 2016-11-20 11:18:08 -08:00
Sihui Huang
34aa59c6d5 Update README.md 2016-11-20 11:13:57 -08:00
Sihui Huang
11f17e3b23 Update README.md 2016-11-20 11:12:48 -08:00
Sihui Huang
a8b1c47f0f add sh-hhkb-jp layers 2016-11-20 11:10:26 -08:00
Fred Sundvik
c86bbf474e Always initialze the Infinity Ergodox backlight
Otherwise it will stay lit. The set_led functionality is also disabled
since it doesn't work properly for slaves.
2016-11-20 19:28:10 +02:00
Jack Humbert
3b990c08dc Merge pull request #878 from sethbc/add_sethbc_gh60_keymap
add sethbc keymap for gh60 and update macro expansion
2016-11-19 13:05:30 -05:00
xyverz
f9cf4f75ae Merge remote-tracking branch 'upstream/master' 2016-11-19 09:31:34 -08:00
Seth Chandler
df8724ce08 remove KC expansion from GH60 2016-11-19 12:19:21 -05:00
Gergely Nagy
74a1f00713 Fix the Space Cadet timeout code
Define a default TAPPING_TERM in quantum.c, for keyboards that do not
have it set. Fixes the CI failure.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2016-11-19 18:19:18 +01:00
Seth Chandler
620e4f74d3 move KC expansion to separate macros 2016-11-19 11:37:12 -05:00
Seth Chandler
ac7d202d4f merge upstream/master 2016-11-19 11:20:41 -05:00
samgalson@gmail.com
7f5e71d79f adds galson keymap 2016-11-19 14:21:12 +00:00
Gergely Nagy
ffa5b1e7ea Add a timeout to space-cadet shift.
When one holds a Space Cadet shift, to have it act as a shift, so that
mouse behaviour changes, when released without any other key pressed, it
still registers a paren. To remedy this, add a hold timeout: if the key
is held longer than TAPPING_TERM, it will not register the parens.

Fixes #884, with the side-effect of not being able to have parens
trigger the OS-side repeat anymore.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2016-11-19 11:32:09 +01:00
climbalima
102a830bbd changed readme 2016-11-19 00:49:20 -05:00
climbalima
e356de2220 added the pinout for pro micro into maxipad 2016-11-19 00:44:52 -05:00
climbalima
01736a502e just saving 2016-11-18 23:40:34 -05:00
Jack Humbert
a06115df19 don't always detect a matrix change (fixes debounce) 2016-11-18 23:20:07 -05:00
Jack Humbert
ab6557c1a0 wqMerge branch 'wu5y7' of https://github.com/jackhumbert/qmk_firmware into wu5y7 2016-11-18 22:22:29 -05:00
Jack Humbert
161bd5596b midi back and forth 2016-11-18 22:22:24 -05:00
Daniel
abee809298 moves brackets to top row. 2016-11-18 11:11:08 -06:00
Erez Zukerman
285c5a91f2 Groundwork for dedicated color keycodes 2016-11-17 20:56:36 -05:00
Erez Zukerman
9bbc9a7ce0 Initial Erez Experimental keymap tweaks 2016-11-17 19:47:08 -05:00
Jack Humbert
3774a7fcda rgb light through midi 2016-11-17 17:42:14 -05:00
xyverz
b493f6a4ed Merge remote-tracking branch 'upstream/master' 2016-11-16 22:36:36 -08:00
Benjamin Grabkowitz
6c5fce5c1a Adding readme placeholder 2016-11-16 23:59:42 -05:00
Benjamin Grabkowitz
00d88b74ad Adding Support for atreus62 keyboard. https://github.com/profet23/atreus62 2016-11-16 23:52:36 -05:00
Jack Humbert
c38b3e3be9 Merge pull request #883 from climbalima/master
added rev2 lets split after merging with qmk
2016-11-16 21:17:51 -05:00
climbalima
b085a34506 fixed readme conflicts 2016-11-16 20:44:49 -05:00
climbalima
21b6b4e6c4 should have fixed conflixed 2016-11-16 19:49:38 -05:00
climbalima
668c739702 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-11-16 19:28:30 -05:00
climbalima
5cac51a773 Merge https://github.com/climbalima/qmk_firmware 2016-11-16 19:26:38 -05:00
climbalima
1dd6ceb45d Updated my repo to current qmk 2016-11-16 19:18:54 -05:00
Jack Humbert
72e78a017f Merge pull request #882 from seebs/master
dvorak/plover keyboard layout
2016-11-16 17:15:58 -05:00
cbbrowne
5b88e7ab9a Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-11-16 17:05:11 -05:00
Seebs
4da698fda3 dvorak/plover keyboard layout
Plover's steno support likes quasi-qwerty, and gaming likes qwerty,
and I like dvorak, so... what if I could have it all?

Signed-off-by: seebs <seebs@seebs.net>
2016-11-16 15:44:26 -06:00
Jack Humbert
9f1b27c5ba Merge pull request #880 from psyill/master
Added keymap "videck", an ErgoDox keymap for Vi(m) users.
2016-11-16 14:54:18 -05:00
Jack Humbert
e025a94bc2 Merge pull request #879 from sethbc/update_sethbc_ergodox_keymap
update sethbc ergodox keymap
2016-11-16 14:53:52 -05:00
Jack Humbert
d85f6deb9b Merge pull request #877 from sethbc/update_sethbc_satan_keymap
update sethbc keymap
2016-11-16 14:51:18 -05:00
Jack Humbert
6dde65c2a9 Merge pull request #876 from Dbroqua/master
Updated kc60/dbroqua layout and added satan/dbroqua_hhkb
2016-11-16 14:49:55 -05:00
Jack Humbert
17e1a4f825 Merge pull request #866 from fredizzimo/infinity60_clockfixes
Increase the infinity60 system tick frequency
2016-11-16 14:42:53 -05:00
Jack Humbert
7541122cad Merge pull request #860 from IBNobody/master
Improved Quantum Matrix
2016-11-16 14:41:10 -05:00
Jack Humbert
530dd3377e animations, midi, etc 2016-11-15 13:18:10 -05:00
climbalima
bce6e52391 fixed conflict 2016-11-14 23:08:10 -05:00
climbalima
dd22c787b8 fixed extra paste 2016-11-14 23:05:37 -05:00
Noah Andrews
702405f039 Recommend WSL on Windows 10
At this point, I consider the batch scripts @IBNobody and I worked on to mostly be a failure. They've proven to be unreliable, too dependent on the environment they're being run in, and I've seen far too many examples of people having frustrating issues with them that I haven't been able to help them with. They can also produce misleading and confusing error messages. I've been pointing people to use the WSL for a while now. Eventually, I think we should make a proper replacement for the batch scripts, possibly with an environment in msys2. For now, the WSL method in Windows 10 is far more reliable, and is easy to set up. 

I also cleaned up some things in the WSL instructions themselves.
2016-11-14 10:03:18 -05:00
Jack Humbert
e9f7487518 mostly working 2016-11-13 23:02:38 -05:00
Hans Ellegård
162f603b1c Added keymap "videck", an ErgoDox keymap for Vi(m) users. 2016-11-13 22:44:41 +01:00
Seth Chandler
aa76425395 oops, fixed inverted if statement 2016-11-13 01:04:10 -05:00
Seth Chandler
34bf8558cd update sethbc ergodox keymap 2016-11-13 00:56:46 -05:00
Seth Chandler
b2bc215934 add sethbc keymap for gh60 and update macro expansion in connection with same 2016-11-13 00:42:07 -05:00
Seth Chandler
28249498bc update sethbc keymap 2016-11-12 23:56:57 -05:00
Jack Humbert
33e62c080c merging 2016-11-12 20:54:37 -05:00
Damien
0a99cf300c Merge pull request #12 from jackhumbert/master
Merged from qmk
2016-11-12 19:33:07 +01:00
dbroqua
3bc51065a4 Merge branch 'master' of https://github.com/Dbroqua/qmk_firmware 2016-11-12 19:27:03 +01:00
dbroqua
19ebf6161f - Added dbroqua_hhkb layout for Satan PCB 2016-11-12 19:23:38 +01:00
cbbrowne
c609edc362 Merge branch 'master' of github.com:cbbrowne/qmk_firmware 2016-11-11 10:39:11 -05:00
cbbrowne
992ec01b5d Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-11-11 10:39:07 -05:00
Chris Browne
de3117f483 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-11-10 23:32:29 -05:00
climbalima
ec0db2933c Merge branch 'master' of https://github.com/climbalima/qmk_firmware
second try
2016-11-10 20:06:54 -05:00
climbalima
b5cecb4cc9 Added both revisions into one folder 2016-11-10 20:03:24 -05:00
Jack Humbert
631b8999a7 Merge pull request #868 from potz/master
Add brazilian ABNT2 keymap
2016-11-10 18:45:09 -05:00
climbalima
79f82d3d80 returned to o 2016-11-10 18:43:31 -05:00
climbalima
6e27f6fbde Changes to be committed:
new file:   keyboards/lets_splitv2/Makefile
	new file:   keyboards/lets_splitv2/config.h
	new file:   keyboards/lets_splitv2/i2c.c
	new file:   keyboards/lets_splitv2/i2c.h
	new file:   keyboards/lets_splitv2/imgs/split-keyboard-i2c-schematic.png
	new file:   keyboards/lets_splitv2/imgs/split-keyboard-serial-schematic.png
	new file:   keyboards/lets_splitv2/keymaps/default/keymap.c
	new file:   keyboards/lets_splitv2/lets_split.c
	new file:   keyboards/lets_splitv2/lets_split.h
	new file:   keyboards/lets_splitv2/matrix.c
	new file:   keyboards/lets_splitv2/pro_micro.h
	new file:   keyboards/lets_splitv2/readme.md
	new file:   keyboards/lets_splitv2/serial.c
	new file:   keyboards/lets_splitv2/serial.h
	new file:   keyboards/lets_splitv2/split_util.c
	new file:   keyboards/lets_splitv2/split_util.h
	new file:   keyboards/maxipad/Makefile
	new file:   keyboards/maxipad/config.h
	new file:   keyboards/maxipad/keymaps/default/Makefile
	new file:   keyboards/maxipad/keymaps/default/config.h
	new file:   keyboards/maxipad/keymaps/default/keymap.c
	new file:   keyboards/maxipad/keymaps/default/readme.md
	new file:   keyboards/maxipad/maxipad.c
	new file:   keyboards/maxipad/maxipad.h
	new file:   keyboards/maxipad/readme.md
2016-11-10 18:19:13 -05: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
Erez Zukerman
f73a378f0f Merge pull request #870 from NoahAndrews/patch-1
Add proper shortcode for KC_DELETE to keycode.txt
2016-11-10 09:43:38 -05:00
IBNobody
1803dbc6d5 Merge remote-tracking branch 'refs/remotes/jackhumbert/master' 2016-11-08 21:11:24 -06:00
Noah Andrews
64218f0f70 Add proper shortcode for KC_DELETE to keycode.txt 2016-11-08 22:05:24 -05:00
Potiguar Faga
7aa31ad338 Add brazilian ABNT2 keymap 2016-11-08 13:32:04 -02:00
cbbrowne
83b67b0cf3 Merge branch 'master' of github.com:cbbrowne/qmk_firmware 2016-11-07 12:49:05 -05:00
cbbrowne
cdad01b57a Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-11-07 12:48:34 -05:00
Jack Humbert
a9e0fd410c Merge pull request #867 from fredizzimo/variable_trace
Variable trace
2016-11-07 10:55:05 -05:00
Jack Humbert
309d93184e Merge pull request #852 from J3RN/remove-z-slash-controls
Removed the control action when holding z or /
2016-11-07 10:47:32 -05:00
Fred Sundvik
0ba3e523a7 Add documentation for the variable tracing 2016-11-06 22:44:43 +02:00
Fred Sundvik
a377017c95 Add possibility to control variable trace from make 2016-11-06 22:11:24 +02:00
Fred Sundvik
f519b94be7 Add variable trace
For debugging changes to variables, either normally or as a result
of a memory corruption.
2016-11-06 21:58:34 +02:00
Jonathan Arnett
1d766c596e Removed the control action when holding z or / 2016-11-06 13:48:20 -05:00
Chris Browne
a4255664ce Merge branch 'master' of github.com:cbbrowne/qmk_firmware 2016-11-06 07:52:44 -05:00
Chris Browne
4f1cb9fd5e Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-11-06 07:52:21 -05:00
Fred Sundvik
c06e2486ab Increase the infinity60 system tick frequency 2016-11-05 22:45:21 +02:00
lucwastiaux
b8e204322a added more shortcut keys 2016-11-05 12:07:33 +08:00
lucwastiaux
78a1dc84dd updated readme 2016-11-05 11:58:23 +08:00
lucwastiaux
ff8b4a1d89 removed brackets anywhere but in brackets layer, added mouse layer back in, replaced all HYPR with MEH, put semicolon-newline and end-newline on symbol layer 2016-11-05 11:56:59 +08:00
Damien
7697f23538 Merge pull request #11 from jackhumbert/master
Merged from jackhumbert
2016-11-03 21:50:31 +01:00
cbbrowne
930ae4b7ff Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-11-01 13:09:27 -04:00
IBNobody
78976d8f7a Adding SKIP_GIT to speed up compiles. 2016-11-01 11:52:58 -05:00
IBNobody
9e6c57af2a Merge remote-tracking branch 'refs/remotes/jackhumbert/master' 2016-11-01 10:56:56 -05:00
Erez Zukerman
d5270af111 Implements dedicated text zoom keys 2016-11-01 10:03:58 -04:00
Erez Zukerman
7a9be2562d Merge pull request #851 from J3RN/momentary
Switched to momentary
2016-10-31 21:41:19 -04:00
Erez Zukerman
a6401076d5 Merge pull request #843 from lucwastiaux/master
Adding Ergodox Dvorak Programmer layout
2016-10-31 21:40:58 -04:00
Erez Zukerman
bd40844e4e Merge pull request #836 from 20lives/master
added new layout
2016-10-31 21:39:40 -04: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
cbbrowne
b90366285f Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-10-31 11:45:54 -04:00
Jack Humbert
964b8574ee Merge pull request #839 from priyadi/planck-priyadi-modification
Update priyadi's keymap for Planck; added readme
2016-10-30 12:26:20 -04:00
Jack Humbert
d75de44551 Merge pull request #854 from slebedev/master
Add link to article about Unicode Hex Input in readme
2016-10-30 12:25:52 -04:00
Jack Humbert
b0317abe42 Merge pull request #857 from fredizzimo/fix_makefile_too_long_bash
Run each sumbmake in a separate shell
2016-10-30 12:25:22 -04:00
Fred Sundvik
d956dd1248 Run each sumbmake in a separate shell
This will fix the situation where the commandline gets too long when
there are many keyboards and keymaps.
2016-10-30 17:03:01 +02:00
IBNobody
f403028974 added fixed debounce code 2016-10-29 16:12:58 -05:00
Sergey Lebedev
552f469dfc Add link to article about Unicode Hex Input in readme
For me it wasn't clear what is `Unicode Hex Input`, that article
  clarifies it (at least for me).
2016-10-29 22:08:11 +03:00
IBNobody
e40c33f754 Merge branch 'master' of https://github.com/IBNobody/qmk_firmware 2016-10-29 11:13:15 -05:00
IBNobody
32f88c0717 Made scanning more efficient 2016-10-29 10:39:03 -05:00
IBNobody
4c6960835c Refactoring Matrix scanning 2016-10-28 16:24:20 -05:00
IBNobody
508eddf8ba Fixing Debounce - WIP 2016-10-28 14:21:38 -05:00
IBNobody
a0fdb6b81a Merge remote-tracking branch 'refs/remotes/jackhumbert/master' 2016-10-28 09:28:47 -05:00
dbroqua
2082c6f110 - Fixed typo in gh60/dbroqua layout 2016-10-26 22:24:26 +02:00
cbbrowne
2a2920d92c Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-10-26 10:55:41 -04:00
lucwastiaux
055247f35d re-introduce brackets layer 2016-10-26 21:00:58 +08:00
Damien
41d7460f53 Merge pull request #10 from jackhumbert/master
Merge from jackhumbert/qmk_firmware
2016-10-26 07:43:58 +02:00
Jack Humbert
f44ead1462 Merge pull request #827 from Dbroqua/master
Updated dbroqua layout for HHKB keyboard and added new layout for KC60
2016-10-26 01:19:27 -04:00
Jack Humbert
67cf367a45 Merge pull request #849 from hot-leaf-juice/master
tiny keymap change
2016-10-26 00:52:13 -04:00
Jack Humbert
003cb9124c Merge pull request #848 from andrebeat/fix-dockerfile
Add subproject env var to dockerfile
2016-10-26 00:51:51 -04:00
Jack Humbert
cbb7e95284 Merge pull request #847 from yinshanyang/master
added notes on using Arduino Pro Micro 3.3V with Let’s Split
2016-10-26 00:51:39 -04:00
Jack Humbert
8d60354d5a Merge pull request #844 from priyadi/unicode_wincompose_input
Unicode WinCompose input method
2016-10-26 00:48:44 -04:00
Jack Humbert
108d0e89a6 Merge pull request #842 from priyadi/unicode_map_length
UNICODE_MAP: remove 5 char limit; ignore leading zeroes; handle OS limitations
2016-10-26 00:48:00 -04:00
Jack Humbert
3b34cf7e6c Merge pull request #841 from jacwib/master
Update jacwib keymap to version 1.2
2016-10-26 00:47:30 -04:00
Jack Humbert
f2dd125a1e Merge pull request #831 from kejadlen/master
add alphadox layouts to atreus and ergodox
2016-10-26 00:46:56 -04:00
Jack Humbert
c66c86cace Merge pull request #834 from kazufukurou/master
add programmer dvorak keymap
2016-10-26 00:45:59 -04:00
Alpha Chen
427ea7a889 [alphadox] remove tmk reset code 2016-10-25 09:00:45 -07:00
Alpha Chen
e2916f8ab1 [ergodox][alphadox] undefine tapping_term, ignore_mod_tap_interrupt 2016-10-25 09:00:45 -07:00
Alpha Chen
22cb73fad3 add alphadox layouts to atreus and ergodox 2016-10-25 09:00:45 -07:00
Callum Oakley
6bbb0b030e replace lock key with general power key 2016-10-25 11:51:32 +01:00
Callum Oakley
c0a9fa8eea switched to standard volume keys 2016-10-25 11:37:09 +01:00
Andre Silva
1557d16562 add subproject env var to dockerfile 2016-10-24 20:29:34 +01:00
Joshua T
7d698cc494 Added comments with ASCII art keymaps 2016-10-24 10:30:00 -05:00
Yin Shanyang
7550abbb7f added notes on using Arduino Pro Micro 3.3V with Let’s Split 2016-10-24 15:36:24 +08:00
IBNobody
ef8f618027 Fixing Line Terminations 2016-10-23 23:03:26 -05:00
IBNobody
17170ba76d Fixed some large keyboard bugs
Fixed some bugs relating to keyboards with more than 16 columns. Also
added the ability to mask off keyboard matrix bits.
2016-10-23 23:00:43 -05:00
IBNobody
05ceef2350 Merge remote-tracking branch 'refs/remotes/jackhumbert/master' 2016-10-23 20:45:20 -05:00
Lior Haim
0d26320cf3 merge upstream 2016-10-23 20:22:28 +03:00
Chris Browne
6a0313ac26 Merge branch 'master' of github.com:cbbrowne/qmk_firmware 2016-10-23 10:28:47 -04:00
Chris Browne
ed8efcf86d Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-10-23 10:28:02 -04:00
jacwib
b7611d5037 1.2 update 2016-10-23 15:57:36 +02:00
Priyadi Iman Nurcahyo
c6f6172fd5 Use WinCompose unicode input method instead of HexNumpad 2016-10-23 19:35:06 +07:00
Priyadi Iman Nurcahyo
4a666c2010 Unicode WinCompose input method 2016-10-23 19:15:33 +07:00
lucwastiaux
919caaccb7 adding readme 2016-10-23 11:44:16 +08:00
Priyadi Iman Nurcahyo
e7d5dc89f2 UNICODE_MAP: remove 5 char limit; ignore leading zeroes; handle OS limitations 2016-10-23 05:36:26 +07:00
jacwib
dbcbd8ee3c Update readme to reflect 1.1 changes. 2016-10-22 21:32:39 +02:00
jacwib
83b2149885 Update keymap to reflect 1.1 changes. 2016-10-22 21:29:47 +02:00
jacwib
a625c2201a Update readme to reflect changes 2016-10-22 21:29:11 +02:00
lucwastiaux
14ac397d5d add up/down keys on thumb clusters 2016-10-23 00:47:58 +08:00
lucwastiaux
64ac74cab6 remove brackets layer, replace a few shortcuts on thumb cluster 2016-10-23 00:44:34 +08:00
lucwastiaux
97e3106848 type brackets in symbol layer, using bottom row 2016-10-23 00:11:16 +08:00
lucwastiaux
e0c9ec54dd add tap-dance support, make right shift double-tap=caplock 2016-10-22 22:39:24 +08:00
lucwastiaux
bc8092245c change include files 2016-10-22 22:29:05 +08:00
lucwastiaux
53a2bf9215 added dvorak programmer layout 2016-10-22 22:22:34 +08:00
Priyadi Iman Nurcahyo
5fa44c594f Update priyadi's keymap for Planck; added readme 2016-10-22 18:47:51 +07:00
twentylives
8727976a1a fixed copy-cut-paste buttons 2016-10-21 12:13:44 +03:00
cbbrowne
976136a0b2 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-10-20 12:03:15 -04:00
Erez Zukerman
2e2b9962cd Merge pull request #833 from h-parks/master
Win10 Writer's Block - An ErgoDox Keymap
2016-10-20 08:55:16 -04:00
Erez Zukerman
c3dee2bb66 Merge pull request #832 from PhoenixRion/master
Phoenix Layout
2016-10-20 08:53:47 -04:00
twentylives
4ebbb3c297 Merge branch 'master' of https://github.com/20lives/qmk_firmware 2016-10-20 11:07:53 +03:00
twentylives
7090c99adf fixed base layer = key 2016-10-20 11:07:14 +03:00
Artyom Mironov
6e003b1e3f add programmer dvorak keymap 2016-10-19 23:45:55 +03:00
20lives
464af700eb fix readme 2016-10-19 20:26:58 +03:00
twentylives
65c1127b49 update pics and readme 2016-10-19 20:23:10 +03:00
h-parks
f2197611c7 Win10 Writer's Block - An ErgoDox Keymap
fix for compiling on infinity:

replaced `_delay_ms()' with `wait_ms()'
included "wait.h"
2016-10-19 09:33:37 -05:00
h-parks
1688c014cc Win10 Writer's Block - An ErgoDox Keymap
This is a QWERTY layout for ErgoDox on QMK. It's designed to work well in MS Office-like environments. It's tested on Windows 7 and 10.
2016-10-18 21:58:33 -05: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
cbbrowne
729b4cdef3 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-10-18 18:11:54 -04:00
IBNobody
826417bfc0 Updating Vision keyboard files 2016-10-18 16:45:45 -05:00
Ryan Ascheman
fad20756e3 update header file 2016-10-18 13:58:59 -07:00
Ryan Ascheman
cabfd78309 didn't read PR comment close enough, correcting folder 2016-10-18 12:48:07 -07:00
Ryan Ascheman
60326eded2 moving keymap to new location 2016-10-18 12:44:30 -07:00
Ryan Ascheman
55b8b8477c Merge remote-tracking branch 'upstream/master'
* upstream/master: (1239 commits)
  Update ez.c
  removes planck/rev3 temporarily
  Move hand_swap_config to ez.c, removes error for infinity
  Update Makefile
  ergodox: Update algernon's keymap to v1.9
  Added VS Code dir to .gitignore
  Support the Pegasus Hoof controller.
  [Jack & Erez] Simplifies and documents TO
  add readme
  use wait_ms instead of _delay_ms
  add messenger
  init keymap
  Add example keymap
  Adding whiskey_tango_foxtrot_capslock ergodox keymap
  Unicode map framework. Allow unicode up to 0xFFFFF using separate mapping table
  CIE 1931 dim curve
  Apply the dim curve to the RGB output
  Update the Cluecard readme files
  Tune snake and knight intervals for Cluecard
  Tunable RGB light intervals
  ...
2016-10-18 12:42:02 -07:00
20lives
48eb5112b5 Update readme.md 2016-10-18 22:35:05 +03:00
20lives
31193b9cff Update readme.md 2016-10-18 22:33:42 +03:00
twentylives
28dfaa20f5 adding dvorak hebrew layout 2016-10-18 22:27:36 +03:00
Jack Humbert
04df74f636 Merge pull request #829 from r2d2rogers/master
Move hand_swap_config to ez.c, removes error for infinity
2016-10-18 15:19:00 -04:00
Jack Humbert
d8417f9f6e Merge pull request #824 from dsvensson/pegasushoof
Support the Pegasus Hoof controller.
2016-10-18 15:18:19 -04:00
Rob Rogers
75ea142d01 Update ez.c 2016-10-18 13:59:19 -05:00
Jack Humbert
b466628c0b Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-10-18 13:58:20 -04:00
Jack Humbert
18b5c3dccf removes planck/rev3 temporarily 2016-10-18 13:57:56 -04:00
Erez Zukerman
0d8844dcb8 Merge pull request #826 from algernon/ergodox-ez/algernon
ergodox: Update algernon's keymap to v1.9
2016-10-17 18:12:31 -04:00
cbbrowne
778dbe46d2 Merge branch 'master' of github.com:cbbrowne/qmk_firmware 2016-10-17 10:54:09 -04:00
cbbrowne
0469bd8ffa Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-10-17 10:53:39 -04:00
Rob Rogers
1dcee07eab Move hand_swap_config to ez.c, removes error for infinity 2016-10-17 08:04:29 -05:00
Chris Browne
62e6789ab2 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-10-16 20:59:52 -04:00
Jack Humbert
a889b899e2 working with power limit 2016-10-16 16:03:56 -04:00
Jack Humbert
5f91fb4136 working with power limit 2016-10-16 16:03:33 -04:00
Jack Humbert
80ac73a21c Update Makefile 2016-10-16 15:59:50 -04:00
Jack Humbert
52d7f7d277 Merge pull request #815 from priyadi/unicode_map
Allow unicode up to 0xFFFFF using separate mapping table
2016-10-16 15:49:45 -04:00
Jack Humbert
5e2b843538 Merge pull request #825 from replicaJunction/pr-vscode
Added VS Code dir to .gitignore
2016-10-16 15:49:33 -04:00
dbroqua
911b52a494 - Added HHKB like layout for KC60 pcb 2016-10-16 15:37:47 +02:00
Gergely Nagy
f9d8cf35f6 ergodox: Update algernon's keymap to v1.9
Overall changes
===============

* `F12` was replaced by an `Fx` key, that activate the **Media** layer
  as a one-shot layer, and also `Alt` as a one-shot modifier.

Base layer changes
==================

* The `Media Stop` key is now a tap-dance key, and resets the device for
  programming on the fourth tap.

Miscellaneous
=============

* `π` can now be entered with UCIS.
* `🐁` can now be entered with UCIS.

Tools
=====

* The `tools/layer-notify` tool was removed, it was an example, which I
  don't use.

`tools/hid-commands`
--------------------

* Now looks at the `DISABLE_APPSEL_START` environment value, and does
  not display an AppSel notification if it is non-empty.
* Will attempt to re-program the keyboard when receiving a `reflash`
  command.
* No longer tries to select Emacs 24 on `APPSEL_EMACS`, rather, it goes
  for any Emacs.
* The `APPSEL_MUSIC` command now includes Kodi in the list too, as the
  last choice.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2016-10-16 08:01:50 +02:00
Joshua T
2a918718f1 Added VS Code dir to .gitignore 2016-10-15 18:46:39 -05:00
Joshua T
d9dede476f Added VS Code dir to .gitignore 2016-10-15 18:40:26 -05:00
Joshua T
896c1e6f1e Added a bit more detail to header 2016-10-15 18:19:09 -05:00
Joshua T
a2adff94bb Reversed tilde and grave 2016-10-15 18:05:22 -05:00
Joshua T
825563f34d Moved Extend tab and ^tab 2016-10-15 17:56:09 -05:00
Joshua T
1455a44a44 Added = to match Atreus 2016-10-15 17:41:36 -05:00
Joshua T
80fe2ea676 Switched Tab and Ctrl back 2016-10-15 17:23:25 -05:00
Joshua T
0714981288 Fixed typo 2016-10-15 17:19:07 -05:00
Joshua T
c67f6ee872 Added Menu key (the rclick menu) 2016-10-15 17:03:27 -05:00
Joshua T
d9db5395b3 Updated layout to 1.2 - lots of changes
Rewrote QWERTY to make it a first-class citizen instead of just a glorified game layer.

Added a lot of keys to Extend layer to bring it in line with my Atreus.

Plenty of other changes too.
2016-10-15 16:51:40 -05:00
Joshua T
a9c8f2f5b8 Reduced TAPPING_TERM to 150
Also removed duplicate definition of PREVENT_STUCK_MODIFIERS
2016-10-15 16:44:26 -05:00
Joshua T
8ec7341fb2 Added Ctrl+` (ConEmu shortcut) 2016-10-15 15:28:16 -05:00
Joshua T
2e6a1a53d7 Merge remote-tracking branch 'upstream/master' 2016-10-15 15:14:10 -05:00
dbroqua
28ca1f5345 Merge branch 'master' of https://github.com/Dbroqua/qmk_firmware 2016-10-14 21:53:37 +02:00
Damien
2098b363ea Merge pull request #9 from jackhumbert/master
Merge from jackhumbert
2016-10-13 21:51:35 +02:00
cbbrowne
f74c560be8 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-10-13 13:05:33 -04:00
Daniel Svensson
b73adf0dea Support the Pegasus Hoof controller.
Replacement controller for Filco Majestouch TKL keyboards.

matrix.c ported from:
https://github.com/BathroomEpiphanies/epiphanies_tmk_keyboard

More details:
http://bathroomepiphanies.com/controllers/
2016-10-13 12:50:54 +02:00
Erez Zukerman
0a9ad8f335 Merge pull request #818 from pvinis/pvinis-keymap
pvinis keymap
2016-10-13 06:41:51 -04:00
Erez Zukerman
16e362cfc4 Merge pull request #822 from jackhumbert/hotfix/simplify_to
[Jack & Erez] Simplifies and documents TO
2016-10-13 06:41:07 -04:00
Erez Zukerman
b7533e0abf Documents TO. 2016-10-12 22:19:35 -04:00
Jack & Erez
e27a754b70 [Jack & Erez] Simplifies and documents TO 2016-10-12 22:18:27 -04:00
cbbrowne
99ca59baf8 I keep mis-using UPPER|LOWER/SLASH, and getting RESET.
With RESET shifted to the UPPER+LOWER layer, it is now time to change that key to Alt-Slash, which, in Emacs, does automatic word completion
2016-10-12 12:03:54 -04:00
cbbrowne
dbb8cbac18 Merge branch 'master' of github.com:cbbrowne/qmk_firmware 2016-10-12 11:57:46 -04:00
Pavlos Vinieratos
0853227ede add readme 2016-10-11 11:25:54 +02:00
Pavlos Vinieratos
538cdda78e use wait_ms instead of _delay_ms 2016-10-11 10:34:47 +02:00
Pavlos Vinieratos
bcc0fa5c81 add messenger 2016-10-11 10:34:47 +02:00
Pavlos Vinieratos
2855de5f0f init keymap 2016-10-11 10:34:47 +02:00
Erez Zukerman
698d02122b Merge pull request #803 from coderkun/coderkun_neo2
Merge Unicode fixes for keymap “coderkun_neo2”
2016-10-10 19:59:28 -04:00
Erez Zukerman
be60c057dc Merge pull request #809 from nathanejohnson/osx_whiskey_tango_foxtrot_capslock
Adding whiskey_tango_foxtrot_capslock ergodox keymap
2016-10-10 19:58:59 -04:00
Chris Browne
92ca95641f Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-10-10 17:19:47 -04:00
Chris Browne
4b682ea63e Merge branch 'master' of github.com:cbbrowne/qmk_firmware 2016-10-10 17:18:15 -04:00
Jack Humbert
aa8aa6af75 Merge pull request #808 from npoirey/master
Altgr quick combination and updated readme
2016-10-10 00:22:12 -04:00
Jack Humbert
49fe93fbb3 Merge pull request #811 from Vifon/planck_keymap_vifon
New Planck keymap: vifon
2016-10-10 00:21:01 -04:00
Jack Humbert
0f119e09a5 Merge pull request #810 from Vifon/dynamic_macros
Reduce the default dynamic macro buffer
2016-10-10 00:20:46 -04:00
Jack Humbert
03b6fcdaf0 Merge pull request #814 from fredizzimo/rgb_tuning
Improve the RGB led effects
2016-10-10 00:20:24 -04:00
Jack Humbert
4859be084d Merge pull request #813 from fredizzimo/add_cluecard_rgb_effects
Add a Cluecard keymap for testing the RGB effects
2016-10-10 00:19:34 -04:00
Priyadi Iman Nurcahyo
932705706e Add example keymap 2016-10-10 01:35:41 +07:00
Nathan Johnson
e95c1e3f2c Adding whiskey_tango_foxtrot_capslock ergodox keymap 2016-10-09 12:58:31 -05:00
Priyadi Iman Nurcahyo
5b2e455d3b Unicode map framework. Allow unicode up to 0xFFFFF using separate
mapping table
2016-10-10 00:56:09 +07:00
Fred Sundvik
ffae9d84c5 CIE 1931 dim curve 2016-10-09 20:07:23 +03:00
Fred Sundvik
92a3a96849 Apply the dim curve to the RGB output
Just like it's supposed to be used. It now looks much better.
2016-10-09 20:04:33 +03:00
Fred Sundvik
db4dce7312 Update the Cluecard readme files 2016-10-09 19:37:47 +03:00
Fred Sundvik
02c9a99215 Tune snake and knight intervals for Cluecard 2016-10-09 19:27:11 +03:00
Fred Sundvik
9b0e21f87f Tunable RGB light intervals 2016-10-09 19:26:16 +03:00
Fred Sundvik
0ae07ae64d Tune the snake and knight effect parameters for Cluecard 2016-10-09 19:11:52 +03:00
Jonathan Arnett
f284bc6af9 Switched to momentary
Also updated the style of these lines slightly to match the style of the
default keymap
2016-10-09 11:40:08 -04:00
Wojciech Siewierski
26759e126e New Planck keymap: vifon 2016-10-09 13:34:17 +02:00
Wojciech Siewierski
70f32842e5 Reduce the default dynamic macro buffer
There have been reports of it leaving not enough free memory preventing
the keyboard from working properly.
2016-10-09 12:52:39 +02:00
Fred Sundvik
2d7b549e21 Add keymap with audio disabled but RGB effects enabled 2016-10-09 01:38:55 +03:00
Damien
811257a0c8 Merge pull request #8 from jackhumbert/master
Merge from jackhumbert
2016-10-07 22:27:36 +02:00
npoirey
628a48c788 Updated Readme to help windows users use docker for build 2016-10-07 17:21:38 +02:00
npoirey
1048a588c7 Add Altgr combination for non US layouts 2016-10-07 17:21:38 +02:00
IBNobody
973f526bb4 Merge remote-tracking branch 'refs/remotes/jackhumbert/master' 2016-10-06 20:17:16 -05:00
Jack Humbert
a9df99b81c Merge pull request #807 from hot-leaf-juice/master
minor update to callum planck keymap
2016-10-06 19:44:53 -04:00
Jack Humbert
91d2b64850 Merge pull request #805 from SethSenpai/gamenum
Gamenum
2016-10-06 19:44:39 -04:00
Callum Oakley
387b94a6cf updated readme 2016-10-06 07:24:26 +01:00
Callum Oakley
059990e05a added lock screen button and fixed error in diagram 2016-10-06 07:23:12 +01:00
Jack Humbert
b8679bbe04 RGBW lights 2016-10-05 20:41:38 -04:00
SethSenpai
b7442999df updated the wrong makefile like a dummy 2016-10-04 07:58:28 +00:00
SethSenpai
aac3ba61a5 added rules.mk 2016-10-04 07:52:13 +00:00
IBNobody
8ed1208b42 Merge remote-tracking branch 'refs/remotes/jackhumbert/master' 2016-10-03 18:46:10 -05:00
Erez Zukerman
d465e3f0c3 Merge pull request #804 from algernon/ergodox-ez/algernon
ergodox: Update algernon's keymap to v1.8
2016-10-03 17:49:23 -04:00
dbroqua
0320fbf6f4 - Updated dbroqua layout for HHKB keyboard (added some missing fn keys) 2016-10-03 23:30:31 +02:00
SethSenpai
0e2786e396 updated readme with images 2016-10-03 18:27:52 +00:00
Gergely Nagy
aa9c6e9f59 ergodox: Update algernon's keymap to v1.8
ADORE
-----

* Major rearrangements were made, to reduce pinky use, and to balance
  out the hand usage.

Tools
-----

* The `hid-commands` tool will now display a notification when
  the **AppSel** layer is triggered.
* The `log-to-heatmap.py` tool now treats the innermost keys on the
  bottom row as thumb keys, as far as statistics are concerned.

Miscellaneous
-------------

* Fixed the **Steno** toggle key.
* My wife is now present on the keyboard too.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2016-10-03 19:20:00 +02:00
coderkun
8dd69a1b05 Overwrite method hex_to_unicode() for make it compatible with Neo 2016-10-03 16:36:21 +02:00
coderkun
4c9071964b Merge branch 'master' into coderkun_neo2 2016-10-03 16:35:40 +02:00
Jack Humbert
86065dca4d Merge pull request #799 from coderkun/master
Declare Unicode method hex_to_keycode() as “weak”
2016-10-03 10:27:06 -04:00
Jack Humbert
fc86ef6c95 Merge pull request #798 from Dbroqua/master
Updated dbroqua layout for HHKB keyboard
2016-10-03 10:26:39 -04:00
Jack Humbert
37d587d62b Merge pull request #797 from hot-leaf-juice/master
Made some simplifications leveraging the LALT(), LGUI(), and S() functions.
2016-10-03 10:26:21 -04:00
SethSenpai
0f06e94d5d update readme 2016-10-03 09:07:37 +00:00
SethSenpai
468e855207 moved folder, update readme 2016-10-03 08:59:50 +00:00
SethSenpai
c0c0c579ff added gamenum handwired keyboard 2016-10-03 08:53:09 +00:00
coderkun
a3f5a4cf58 Declare Unicode method hex_to_keycode() as “weak”
Declare Unicode method hex_to_keycode() as “weak” to be able to override it in keymaps.
2016-10-02 10:37:51 +02:00
coderkun
8655677584 Merge branch 'master' into coderkun_neo2 2016-10-02 10:04:29 +02:00
coderkun
a10e100bd5 Add double arrow Unicode characters to FMU layer 2016-10-02 09:55:38 +02:00
dbroqua
6a090c5df7 - Fixed key name in default layer definition 2016-10-01 19:04:11 +02:00
dbroqua
7cd210722d Merge remote-tracking branch 'origin/master' 2016-10-01 18:28:48 +02:00
dbroqua
8747c0786e - Updated dbroqua layout for HHKB keyboard 2016-10-01 18:28:33 +02:00
Callum Oakley
633da3bdb6 Made some simplifications leveraging the LALT(), LGUI(), and S() functions. 2016-10-01 13:03:46 +01: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
Damien
7abd3b4ddd Merge pull request #7 from jackhumbert/master
Merge from jackhumbert
2016-09-30 22:55:07 +02:00
Xyverz
a03d72f597 Updates to my Planck keymap - standardizing the bottom row. 2016-09-30 13:05:21 -07:00
Erez Zukerman
35e6870e5c Merge pull request #788 from chwilk/kastyle-refresh
Kastyle refresh
2016-09-30 08:59:59 -04:00
Erez Zukerman
fede822fce Merge pull request #789 from cmclen/master
Contributing new keymap to Ergodox
2016-09-30 08:59:24 -04:00
Jack Humbert
7c76d36454 Merge pull request #794 from AGausmann/midi-patch
Missing ifdef statement
2016-09-29 23:32:23 -04:00
Jack Humbert
d3fdc3a00f Merge pull request #792 from hot-leaf-juice/master
Big restructure, plus mouse and some convenience keys.
2016-09-29 23:31:59 -04:00
Damien
eb0f21a984 Merge pull request #6 from jackhumbert/master
Merge from jackhumbert
2016-09-29 22:59:31 +02:00
Adam Gausmann
8d99140d1b Missing ifdef statement 2016-09-29 14:46:10 -05:00
Callum Oakley
3c7d2e765a Merge branch 'master' of https://github.com/hot-leaf-juice/qmk_firmware 2016-09-29 07:49:45 +01:00
Callum Oakley
2f07ad8e8a added en-dash and gbp keys and updated readme 2016-09-29 07:49:27 +01:00
Callum Oakley
c762ea975a big restructure now I only have to consider macOS, also added mouse, more function keys, and some neat macros 2016-09-29 07:49:27 +01:00
Callum Oakley
fa2724360b removed windows layer and updated brightness keys for macOS Sierra 2016-09-29 07:49:27 +01:00
Callum Oakley
02635e5924 changed RALT to LALT on Windows 2016-09-29 07:49:27 +01:00
Callum Oakley
b2ecd296ae fixed comments 2016-09-29 07:49:27 +01:00
Callum Oakley
c593564aca Update readme.md 2016-09-29 07:49:27 +01:00
Callum Oakley
ff09695897 Update readme.md 2016-09-29 07:49:27 +01:00
Callum Oakley
6ad8a06c73 updated readme 2016-09-29 07:49:27 +01:00
Callum Oakley
b51f51c614 added close key for alt-f4 macro 2016-09-29 07:49:27 +01:00
Callum Oakley
41227856f4 added a toggle between Mac and Windows base layers (with swapped cmd and ctrl) 2016-09-29 07:49:27 +01:00
Callum Oakley
ce57b94908 added en-dash and gbp keys and updated readme 2016-09-29 07:47:30 +01:00
Jack Humbert
f0db230c46 Merge pull request #790 from IBNobody/master
Fix #770, Fix #779, Update Vision
2016-09-28 23:57:50 -04:00
IBNobody
78767bf208 Fix #770, Fix #779 2016-09-28 20:26:41 -05:00
IBNobody
72e643998f Merge remote-tracking branch 'refs/remotes/jackhumbert/master' 2016-09-28 20:21:19 -05:00
IBNobody
3d45860dc2 Updating Vision to beta layout. 2016-09-28 20:19:28 -05:00
Callum Oakley
8fa41f1ca1 big restructure now I only have to consider macOS, also added mouse, more function keys, and some neat macros 2016-09-28 23:15:35 +01:00
Chris McLennon
cce294df86 Remove config.h 2016-09-28 14:44:41 -05:00
Chris McLennon
65b0eff6d8 Contributing new keymap to Ergodox 2016-09-28 13:24:29 -05:00
Callum Oakley
ddb8eb842d removed windows layer and updated brightness keys for macOS Sierra 2016-09-28 08:04:38 +01:00
Callum Oakley
848bb6df43 changed RALT to LALT on Windows 2016-09-28 07:28:08 +01:00
Callum Oakley
d387534687 fixed comments 2016-09-28 07:28:08 +01:00
Callum Oakley
1c1aa729b1 Update readme.md 2016-09-28 07:28:08 +01:00
Callum Oakley
65f035933b Update readme.md 2016-09-28 07:28:08 +01:00
Callum Oakley
0c243d0d5d updated readme 2016-09-28 07:28:08 +01:00
Callum Oakley
f442348e50 added close key for alt-f4 macro 2016-09-28 07:28:08 +01:00
Callum Oakley
7bca9bc402 added a toggle between Mac and Windows base layers (with swapped cmd and ctrl) 2016-09-28 07:28:08 +01:00
chwilk
32cc2f6bd9 Added description of kastyle keymap 2016-09-27 11:27:09 -05:00
chwilk
e1bfe13090 Moved hand_swap_config array so all keyboards get it defined 2016-09-26 15:49:10 -05:00
chwilk
90fd0810db Updated kastyle keymap, including swap hands feature 2016-09-26 01:05:06 -05:00
chwilk
04c0a1c3e2 Added ONEHAND_ENABLE to allow SWAP HANDS actions 2016-09-26 01:04:33 -05:00
Jack Humbert
812219e8a0 Merge pull request #786 from mannkind/patch-1
Fix lets_split.c so that audio can be disabled
2016-09-25 22:43:38 -04:00
Dustin
c40ad11615 Fix lets_split.c so that audio can be disabled
Matching the use of `#ifdef AUDIO_ENABLE` used in `matrix_init_kb()` in order to compile firmware for the Let's Split keyboard without audio enabled.
2016-09-25 19:04:20 -07:00
IBNobody
24a953ae64 Merge remote-tracking branch 'refs/remotes/jackhumbert/master' 2016-09-25 16:36:30 -05:00
Jack Humbert
f24b3f4589 Merge pull request #785 from jcowgar/master
Added Jeremy’s Atreus Layout
2016-09-25 16:45:08 -04:00
Jack Humbert
a64840613f Merge pull request #784 from Dbroqua/master
Added dbroqua layout for HHKB keyboard
2016-09-25 16:44:50 -04:00
Jack Humbert
628c5bcc62 Merge pull request #781 from cbbrowne/master
Recent enhancements to keyboard map
2016-09-25 16:43:55 -04:00
Jeremy Cowgar
77099c777a Added Jeremy’s Atreus Layout 2016-09-25 12:27:29 -04:00
dbroqua
f0441f08b8 - Added dbroqua layout for HHKB keyboard 2016-09-25 16:32:06 +02:00
Damien
b75cb53c4a Merge pull request #5 from jackhumbert/master
Merge from jackhumbert
2016-09-25 14:03:27 +02:00
Erez Zukerman
6725262516 Merge branch 'master' of github.com:jackhumbert/qmk_firmware 2016-09-23 20:57:41 -04:00
Erez Zukerman
1a96b2cdc8 Disables sleep LED by default 2016-09-23 20:57:36 -04:00
cbbrowne
3f020c0b92 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-09-23 17:51:32 -04:00
Jack Humbert
e1fa9073c2 Merge pull request #778 from TerryMathews/master
Establish support for TADA68
2016-09-23 15:27:20 -04:00
Jack Humbert
3d42d60b7f Merge pull request #776 from DidierLoiseau/issue-772
Fix issue #772 Meh and Hyper not working
2016-09-23 15:26:28 -04:00
TerryMathews
e71d4f3235 Disable RGB led support until a suitable pin is located 2016-09-23 14:20:05 -04:00
cbbrowne
888bd89ba7 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-09-23 12:05:25 -04:00
TerryMathews
fad5487266 Initial support for TADA68 2016-09-22 23:33:22 -04:00
Erez Zukerman
ce6a9a6c38 Merge branch 'master' of github.com:jackhumbert/qmk_firmware 2016-09-22 22:05:18 -04:00
Erez Zukerman
6e5142ca3e Adds EPRM reset key 2016-09-22 22:05:12 -04:00
Erez Zukerman
545f0ca00e Merge pull request #760 from algernon/ergodox-ez/algernon
Update the ergodox/algernon keymap to v1.7
2016-09-22 21:38:59 -04:00
Didier Loiseau
d430999047 Fix issue #772 Meh and Hyper not working 2016-09-23 01:20:49 +02:00
cbbrowne
7a183b4e8b Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-09-22 16:32:29 -04:00
Jack Humbert
0f205a854f Merge pull request #771 from UnderSampled/master
Impossible Layout
2016-09-21 15:56:00 -04:00
Jack Humbert
bd57faa7bf Merge pull request #769 from pvinis/fix/tap-dance-each-tap-restore
[tap dance] restore each_tap functionality
2016-09-21 15:55:18 -04:00
Jack Humbert
3dc1f39d40 Merge pull request #768 from Dbroqua/master
Updated backlight levels for KC60
2016-09-21 15:53:27 -04:00
Jack Humbert
c1414e59c2 Merge pull request #767 from IBNobody/lets_split_reduce_hex_size
Lets split reduce hex size
2016-09-21 15:53:11 -04:00
UnderSampled
9e6a493172 Fixed Impossible Layout readme tables (again) 2016-09-21 18:55:14 +00:00
cbbrowne
3b57a35532 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-09-21 12:19:23 -04:00
Stephen Christie
073a1f21bb Corrected Impossible Layout readme tables 2016-09-21 14:45:05 +00:00
Stephen Christie
9d629719cb Filled Impossible Layout documentation 2016-09-21 14:41:37 +00:00
Pavlos Vinieratos
cda4b534fa add user_data field 2016-09-21 11:29:43 +02:00
Pavlos Vinieratos
0edc82f030 formatting 2016-09-21 11:29:34 +02:00
Pavlos Vinieratos
e1f131db8e restore each_tap callback 2016-09-21 10:23:51 +02:00
dbroqua
7a91cce869 - Updated backlight levels for KC60 2016-09-21 08:02:51 +02:00
IBNobody
b30e6c1c9e Created I2C and Serial keymaps for unit testing
Having a dedicated I2C keymap and a dedicated serial keymap will allow
the testing suite to check both conditions.
2016-09-20 21:46:33 -05:00
IBNobody
6631abc1cb Made Serial and I2C not include the Other
This saves 192 bytes
2016-09-20 21:38:59 -05:00
IBNobody
f956802f29 Merge remote-tracking branch 'refs/remotes/jackhumbert/master' 2016-09-20 20:31:09 -05:00
Jack Humbert
d1d54dedac Merge pull request #765 from jakllsch/more-shifted-dvorak-keycodes
Add more shifted Dvorak key code definitions
2016-09-20 21:02:07 -04:00
Jack Humbert
4d493cd05c Merge pull request #763 from Dbroqua/master
Updated dbroqua layout for KC60
2016-09-20 21:00:47 -04:00
Stephen Christie
86e85438d3 Fixed Qwerty Fn layer to match documented design 2016-09-20 15:45:50 -04:00
IBNobody
3b1df7fb00 Merge remote-tracking branch 'refs/remotes/jackhumbert/master' 2016-09-19 21:00:20 -05:00
Stephen Christie
57a6828a7a Merge branch 'master' of http://github.com/jackhumbert/qmk_firmware 2016-09-19 18:05:58 -04:00
Jack Humbert
c66b090d4c Copy the main readme.md here 2016-09-19 15:27:06 -04:00
Jonathan A. Kollasch
f0021c9cb9 Add more shifted Dvorak key code definitions 2016-09-19 14:25:44 -05:00
cbbrowne
2c3fcc6c08 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-09-19 11:13:53 -04:00
dbroqua
9a2e24fa98 - Removed HHKB like layout 2016-09-19 13:36:36 +02:00
dbroqua
21b6e4c1f3 Merge remote-tracking branch 'origin/master' 2016-09-19 13:26:18 +02:00
Damien
c438a2a265 Merge pull request #4 from jackhumbert/master
Merge from jackhumbert
2016-09-19 13:25:37 +02:00
dbroqua
94af0194dd - Updated dbroqua layout for kc60 2016-09-19 13:22:34 +02:00
Jack Humbert
5f9c2f63ff Merge pull request #761 from runcom/fix-yum-installs
util/install_dependecies.sh: fix yum packages
2016-09-19 01:22:38 -04:00
Jack Humbert
c678676e41 Merge pull request #755 from IBNobody/master
Fix USER PRINT/NO PRINT warning w/ Bootmagic
2016-09-19 01:21:25 -04:00
Jack Humbert
6282fc8dc1 Merge pull request #751 from erlandsona/master
My Atreus Layout
2016-09-19 01:20:04 -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
Antonio Murdaca
edc7441800 util/install_dependecies.sh: fix yum packages
Signed-off-by: Antonio Murdaca <runcom@redhat.com>
2016-09-18 12:42:58 +02:00
Gergely Nagy
3e128552d9 Update the ergodox/algernon keymap to v1.7
Overall changes
===============

* The number row has been completely rearranged on both the **Base** and
  the **ADORE** layers.
* The number/function key behavior was changed: function keys are now on
  the **Media**.
* The `:`/`;` and `-`/`_` keys were put back to their thumb position on
  the bottom row, on both the **Base** and **ADORE** layers.
* The bottom large keys on the inner side of each half now function as
  [tmux](http://tmux.github.io/) keys: the left to send the prefix, the
  right to send the `display-panes` key. The left also doubles as a GNU
  screen prefix key, and sends `C-a` when double tapped.
* A number of functions, such as the **AppSel** layer, now require the
  `hid-commands` tool to be running, with the output of `hid_listen`
  being piped to it.

ADORE
=====

* `Y` and `X` have been swapped again.

Media/Navigation layer
======================

* The function keys are now on this layer.
* Mouse keys have been removed.
* Media start/stop/prev/next have been removed.
* `Print screen` has been removed.
* There is only one screen lock key now.

Heatmap
=======

* Fixed a few issues in the finger-stats calculation.
* The tool now also timestamps and saves all input lines to a logfile,
  which it loads on start, allowing one to continue the collection after
  upgrading the tool.
* The heatmap tool will now colorize the stats by default.
* The periodic stats are now printed in a more compact format.

Tools
=====

* Added a new tool, `tools/layer-notify` that listens to layer change
  events on the HID console, and pops up a notification on layer
  changes.
* Another new tool, `tools/text-to-log.py` has been added that converts
  arbitrary text to a keylogger output, which can be fed to the heatmap
  generator.
* A number of features have been moved to the `tools/hid-commands`
  utility. These generally are OS dependent, and are easier to implement
  on the software side.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2016-09-18 11:48:47 +02:00
Xyverz
26d6b90dde Update readme.md 2016-09-17 14:43:25 -07:00
dbroqua
602b058b9e - Added capslock led for KC60 keyboard (based on gitbug.com/jpec/kc60 works) 2016-09-17 19:40:56 +02: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
cbbrowne
cc7604d116 Add breathing, as initial implementation with the RAISE/LOWER keys. And throw in extra macros to shorten keymaps 2016-09-16 17:15:33 -04:00
IBNobody
bbf06d516a Added notes on vagrant file fixes, UPRINT 2016-09-15 21:44:03 -05:00
IBNobody
39cbf1c221 Fixed Batch Syntax on different versions of Windows 2016-09-15 19:49:29 -05:00
Austin Erlandson
ac6125cbea Revert because the IGNORE_MOD_TAP_INTERRUPT flag didn't feel right. 2016-09-15 11:19:54 -05:00
Austin Erlandson
e50f15e360 Add IGNORE_MOD_TAP_INTERRUPT to fix overloaded mod keys sending mod on diads... 2016-09-15 10:58:28 -05:00
cbbrowne
24e8d01dc9 Move ALT... 2016-09-15 11:28:12 -04:00
cbbrowne
0db06def9b Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-09-15 11:27:37 -04:00
IBNobody
4f5f5f0103 Fixed Win_Check Verbose mode. 2016-09-15 07:59:14 -05:00
IBNobody
edb5e72605 Merge remote-tracking branch 'refs/remotes/jackhumbert/master' 2016-09-15 07:52:10 -05:00
IBNobody
0d3ce58b6b Renamed to Win_Check, Removed SET for privacy. 2016-09-14 22:53:23 -05:00
Erez Zukerman
a258358b6c Merge pull request #758 from absenth/development
Absenth Ergodox Keymap Improvements
2016-09-14 22:51:41 -04:00
IBNobody
bcc4213edc Marked the Win_Check_Output.txt file as ignored 2016-09-14 21:39:19 -05:00
IBNobody
b4622eb894 Fixed a last minute format bug. 2016-09-14 21:34:28 -05:00
IBNobody
e72f8dfd7e Adding WinCheck Script for windows install help 2016-09-14 20:22:18 -05:00
Lars R. Noldan
8a01bbc422 Adding Space Cadet, And Correcting Ascii Keymap 2016-09-14 11:54:13 -05:00
Austin Erlandson
c8e7cca6ed Copy config overrides to my keymap directory... 2016-09-14 09:39:57 -05:00
IBNobody
9c574b493c Changed Docs, Moved RetroRefit to Handwired 2016-09-13 22:05:10 -05:00
cbbrowne
5d643bb7ee Got Right SHIFT + Right CTRL 2016-09-13 16:29:01 -04:00
cbbrowne
5be2795ca1 C macros for my favorite complex keystrokes 2016-09-13 16:17:51 -04:00
cbbrowne
fdeaf1d9f8 Give layers longer names 2016-09-13 15:49:46 -04:00
cbbrowne
344929e067 Give layers longer names 2016-09-13 15:48:50 -04:00
Austin Erlandson
3668b29520 Shorten TAPPING_TERM for better responsiveness of overloaded keys... 2016-09-13 11:20:59 -05:00
Austin Erlandson
6098704145 Small update 2016-09-13 10:35:59 -05:00
IBNobody
cb1ac2a3ed Fixed NO_PRINT / USER_PRINT conflict warning. 2016-09-12 20:20:31 -05:00
IBNobody
e9a093451e Clean up atomic keymap (#9)
* Added keyboard help macros

* Fixing Atomic PVC keymap / adding print help
2016-09-12 19:54:52 -05:00
IBNobody
658db40df9 Merge remote-tracking branch 'refs/remotes/jackhumbert/master' 2016-09-12 18:56:16 -05:00
Austin Erlandson
cf17eb0f43 Get rid of sleep button... 2016-09-12 18:36:41 -05:00
Austin Erlandson
0c3aede09e Latest making use of overloaded modifiers... 2016-09-12 18:23:24 -05:00
Austin Erlandson
af4c25c475 My Atreus Layout 2016-09-12 15:20:51 -05:00
cbbrowne
103ba24df2 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-09-12 13:24:31 -04:00
cbbrowne
6a7ef59629 Ongoing experiment; have a special layer for RESET 2016-09-12 13:24:22 -04:00
IBNobody
498eddedc5 Merge remote-tracking branch 'refs/remotes/jackhumbert/master' 2016-09-10 21:51:21 -05:00
Didier Chagniot
83b6dd0cd6 readme.md updated 2016-09-10 00:20:21 +02:00
Didier Chagniot
67dfde765f typing with it 2016-09-09 21:42:35 +02:00
Daniel
b807867f95 moves brackets from J/K to U/I to remove block of common vim sequence. 2016-09-06 21:56:27 -06:00
Daniel
250f096144 adds tap dance and macro to move underscore and l- and r- brackets to base layer. 2016-09-02 14:35:15 -06:00
Daniel
0c598f53c1 adds Hyper key. improves media layer. first attempt at tap dance. 2016-09-01 23:37:52 -06:00
Joshua T
5520b0022f Merge remote-tracking branch 'upstream/master' 2016-09-01 07:40:46 -05:00
Daniel
dbac9f4954 Merge remote-tracking branch 'upstream/master' 2016-08-31 22:15:47 -06:00
Damien
af24ea558a Merge pull request #3 from jackhumbert/master
Merge from jackhumbert
2016-08-29 22:33:50 +02:00
Damien
8e058135e2 Merge pull request #2 from jackhumbert/master
Merge from jackhumbert
2016-08-26 07:55:30 +02:00
Joshua T
b0c3d59681 Fixed getting "stuck" in gaming layer 2016-08-24 23:49:33 -05:00
Joshua T
42fa91a57d Merge remote-tracking branch 'upstream/master' 2016-08-24 23:46:52 -05:00
Joshua T
cac69cb580 Several key placement fixes.
* Switched Tab and Super on the default layout
* Moved Shift on Extend to pinky
* Moved Caps Lock to upper right corner
* Moved gaming toggle to avoid blocking Escape
2016-08-24 23:41:14 -05:00
Olivier
73d2a470ee Merge https://github.com/jackhumbert/qmk_firmware 2016-08-25 00:11:37 +02:00
Olivier
b5172e3afa Rename file following upstream folder rename. 2016-08-20 18:19:03 +02:00
Olivier
009ab77d3e Merge https://github.com/jackhumbert/qmk_firmware 2016-08-20 18:07:02 +02:00
Joshua T
bc1059bc1e Minor changes to Extend and Number layers.
Brought QWERTY layer in line with normal layer. Removed Undo function, as it interfered with Shift. Moved Tab and Shift-Tab, and added Insert.
2016-08-16 21:55:33 -05:00
Daniel
8019a074cf minor tweaks to numpad and media layer 2016-08-14 20:43:05 -05:00
Daniel
558bf2ed07 completes first-pass at media layer 2016-08-12 19:27:44 -05:00
Daniel
916d12f9fa completes first-pass at symbol layer 2016-08-12 14:37:13 -05:00
Daniel
fe7b46579c completes first-pass at base layer 2016-08-10 19:37:59 -05:00
Joshua T
6a24bac9c4 Moved Shift keys to Z and ?
Instead of using a thumb shift, I was given the idea of using the pinky keys as dual-role keys that also send the Shift keypress.

This gives me a Shift key on each hand again, but it will make me learn to Shift with opposite hands after all.
2016-08-09 22:16:21 -05:00
Joshua T
82223aec6c Created build.bat
Helper batch file for building the keyboard.
2016-08-09 21:34:55 -05:00
Joshua T
ec67d32bd4 Merged branch master into master 2016-08-09 21:30:31 -05:00
Joshua T
ea8638b944 Changed left thumb back to Ctrl/Alt
Removed Shift from left thumb
2016-08-09 21:29:22 -05:00
Joshua T
fdb8a4cd65 Created keymap-specific config.h 2016-08-09 21:28:31 -05:00
Joshua T
5d78311612 Reverted Ergodox config.h
I will create a separate config.h for my keymap
2016-08-09 21:27:38 -05:00
Joshua T
daa83afe2b Created keymap local config.h file
Reverted the Atreus config.h to default and added one specific to this keymap.
2016-08-09 20:51:22 -05:00
Joshua T
6df31120a1 Merge remote-tracking branch 'upstream/master' 2016-08-07 23:28:59 -05:00
Stephen Christie
bf2b260429 Merge branch 'master' of http://github.com/jackhumbert/qmk_firmware 2016-08-02 22:51:30 -04:00
Stephen Christie
0acb394ac4 Moved Insert, PrtSc, Pause to Adjust; Corner enter 2016-08-02 22:32:27 -04:00
Stephen Christie
76ef37e72d Corrected Qwerty/Fn Mismatch. 2016-08-01 18:54:25 -04:00
Stephen Christie
4b74c90cdb Added quote key. 2016-07-31 22:39:25 -04:00
Joshua T
cf795a6f93 Moved PREVENT_STUCK_MODIFIERS to config.h 2016-07-30 09:19:17 -05:00
Joshua T
0064f1f84c Moved my Ergodox keymap to match upstream changes 2016-07-30 08:46:01 -05:00
Joshua T
e9a501d447 Merge remote-tracking branch 'upstream/master' 2016-07-30 08:41:22 -05:00
Stephen Christie
5f2d3f27de Moved CapsLk, ScrollLk, and NumLk to Adjust layer 2016-07-30 00:56:43 -04:00
Stephen Christie
c018743729 Connected all layers through Adjust layer 2016-07-29 00:08:48 -04:00
Stephen Christie
6567fa1ebe Fixed Function keys (Impossible layout) 2016-07-28 14:57:45 -04:00
Stephen Christie
a4e5a4d566 Modified Qwerty, created Qwerty with numbers 2016-07-28 13:49:25 -04:00
Stephen Christie
57952949fe General table cleanup. 2016-07-26 23:33:21 -04:00
Stephen Christie
ff8136b883 Modified Plover layer for Impossible's home position. 2016-07-26 17:39:21 -04:00
Stephen Christie
465cf08c63 Removed unused layers (keeping QWERTY for later/reference) 2016-07-26 17:37:56 -04:00
Stephen Christie
fb2a7d787a Removed unused layers (left QWERTY for later use/reference) 2016-07-26 17:29:19 -04:00
Joshua T
5607b716ba Merge remote-tracking branch 'upstream/master' 2016-07-26 01:49:24 -05:00
Joshua T
876a6bdd4c Modified Atreus extend and Ergodox.
Atreus: Removed home row Shift. It's under the thumb anyway. Also replaced dual modifier keys with macro keys (cut, copy, paste, undo).

Ergodox: Made Colemak the default layer instead of Dvorak. Also began the process of bringing it in line with the Atreus layout I've been working on.
2016-07-26 01:44:57 -05:00
Stephen Christie
723857bf8a Table for Fn
layer.
2016-07-22 18:19:07 -04:00
Stephen Christie
a39eaa7fb5 Switched to natural arrows, put ENTER on middle Fn, swapped Shift and CTRL. 2016-07-22 17:46:23 -04:00
Stephen Christie
eeb100f87d First draft of the 'impossible' layout. 2016-07-21 18:19:08 -04: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
Joshua T
15ee180f0e Created readme and added screenshots 2016-07-20 00:38:56 -05:00
Joshua T
2a4947b28b Modified Atreus layout to account for keymap() function 2016-07-19 17:39:15 -05:00
Joshua T
8cb2cf375b Adjusted Atreus KEYMAP() function.
This change adjusts the KEYMAP() function to provide a more visual representation of the key positions on the keyboard. Previously, keymaps have been defined directly using arrays for the Atreus keyboard. While this works, it doesn't utilize the helpful KEYMAP() function at all to allow the user to visually position the key codes for ease of editing. See the Ergodox-EZ KEYMAP() function and layouts for a great example of how this can work.

This change should not break any existing Atreus layouts. At the time of this commit, there are two existing layouts for the Atreus board, and neither use the KEYMAP() function.
2016-07-19 17:33:10 -05:00
Joshua T
377bcb00fb Added Gaming layer and removed Dvorak
Also added tap/hold functions on central keys
2016-07-19 17:01:21 -05:00
Joshua T
0642126720 Merge branch 'master' of https://github.com/replicaJunction/qmk_firmware 2016-07-15 18:02:38 -05:00
Joshua T
243ae75256 Added default layer switch QWERTY to Colemak 2016-07-15 18:02:23 -05:00
Joshua T
c5768a5f32 Added default layer switch QWERTY to Colemak 2016-07-15 17:49:14 -05:00
Joshua T
77377e2784 Fixed a merge conflict 2016-07-15 17:44:39 -05:00
Joshua T
42843d9b62 Merge remote-tracking branch 'upstream/master' 2016-07-15 01:01:19 -05:00
Joshua T
92e7291ad7 Corrected merge conflict 2016-07-13 22:41:02 -05:00
Joshua T
f90d89458c Created replicaJunction keymaps. 2016-07-13 22:37:34 -05:00
Josh Colbeck
fb46eb2de1 Added open resource macro
tap to type, hold for resource
2016-07-12 23:52:02 -05:00
Joshua T
32725dae5b Created replicaJunction keymaps. 2016-07-11 17:49:12 -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
Olivier
4cfb262faa Spellchecking. 2016-07-04 01:10:40 +02:00
Olivier
703dc26853 Merge https://github.com/jackhumbert/qmk_firmware 2016-07-03 16:58:09 +02:00
Olivier
82edc37238 Move Escape and Insert keys, Escape is now easier to reach (useful for vi). Change the layer switching used to keep a bepo layout on US keyboards. 2016-07-03 16:44:57 +02:00
Olivier
6d195dc60c Add a Makefile for the keymap to disable command mode (to keep the keyboard from going into command mode when both Shift keys are hold at the same time) and to allow issuing a simple "make" in the keymap folder to compile it. 2016-07-03 16:27:08 +02:00
Olivier
9aceaaed4c Replace the "Ctrl+Alt+Fx" macro I was using to switch terminals without moving hands by a numeric layer switch key like on the left half, for consistency. 2016-07-03 15:51:55 +02:00
Olivier
17a3dbc159 Integrate mouse keys into function layer, delete mouse layer. 2016-07-03 14:38:03 +02: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
Ryan Ascheman
d1c70328f8 update volume control to match arrow change 2016-05-12 10:32:26 -07:00
Ryan Ascheman
7929ee4879 update readme 2016-04-25 15:40:52 -07:00
Ryan Ascheman
c1f143124d initial changes, no doc changes 2016-04-19 14:21:23 -07: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
Christopher Browne
04759d63ef Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-02-06 19:49:52 -05: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
1465 changed files with 84846 additions and 12738 deletions

10
.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
@@ -29,3 +31,11 @@ CMakeLists.txt
.idea
.browse.VC.db*
*.stackdump
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

@@ -1,24 +1,28 @@
os: linux
dist: trusty
sudo: required
group: edge
language: c
compiler: avr-gcc
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:
- tar -zxf avr8-gnu-toolchain-3.5.4.1709-linux.any.x86_64.tar.gz
- export PATH="$PATH:$TRAVIS_BUILD_DIR/avr8-gnu-toolchain-linux_x86_64/bin"
before_script:
- avr-gcc --version
script:
- make $TARGET AUTOGEN=$AUTOGEN
- make test AUTOGEN=false
- bash util/travis_build.sh
addons:
apt:
packages:
- avr-libc
- gcc-avr
- dfu-programmer
- pandoc
- gcc-arm-none-eabi
@@ -26,6 +30,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,14 +14,15 @@ 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
ENV keymap=default
VOLUME /qmk
WORKDIR /qmk
CMD make clean ; make keyboard=${keyboard} keymap=${keymap}
CMD make clean; make;

116
Makefile
View File

@@ -16,10 +16,12 @@ ifdef SILENT
endif
# We need to make sure that silent is always turned off at the top level
# Otherwise the [OK], [ERROR] and [WARN] messags won't be displayed correctly
# Otherwise the [OK], [ERROR] and [WARN] messages won't be displayed correctly
override SILENT := false
ON_ERROR := error_occured=1
ON_ERROR := error_occurred=1
BREAK_ON_ERRORS = no
STARTING_MAKEFILE := $(firstword $(MAKEFILE_LIST))
ROOT_MAKEFILE := $(lastword $(MAKEFILE_LIST))
@@ -32,29 +34,31 @@ ABS_ROOT_MAKEFILE := $(abspath $(ROOT_MAKEFILE))
ABS_STARTING_DIR := $(dir $(ABS_STARTING_MAKEFILE))
ABS_ROOT_DIR := $(dir $(ABS_ROOT_MAKEFILE))
STARTING_DIR := $(subst $(ABS_ROOT_DIR),,$(ABS_STARTING_DIR))
TEST_DIR := $(ROOT_DIR)/.build/test
BUILD_DIR := $(ROOT_DIR)/.build
TEST_DIR := $(BUILD_DIR)/test
ERROR_FILE := $(BUILD_DIR)/error_occurred
MAKEFILE_INCLUDED=yes
# Helper function to process the newt element of a space separated path
# Helper function to process the newt element of a space separated path
# It works a bit like the traditional functional head tail
# so the CURRENT_PATH_ELEMENT will beome the new head
# so the CURRENT_PATH_ELEMENT will become the new head
# and the PATH_ELEMENTS are the rest that are still unprocessed
define NEXT_PATH_ELEMENT
$$(eval CURRENT_PATH_ELEMENT := $$(firstword $$(PATH_ELEMENTS)))
$$(eval PATH_ELEMENTS := $$(wordlist 2,9999,$$(PATH_ELEMENTS)))
endef
# We change the / to spaces so that we more easily can work with the elements
# We change the / to spaces so that we more easily can work with the elements
# separately
PATH_ELEMENTS := $(subst /, ,$(STARTING_DIR))
# Initialize the path elements list for further processing
$(eval $(call NEXT_PATH_ELEMENT))
# This function sets the KEYBOARD; KEYMAP and SUBPROJECT to the correct
# This function sets the KEYBOARD; KEYMAP and SUBPROJECT to the correct
# variables depending on which directory you stand in.
# It's really a very simple if else chain, if you squint enough,
# but the makefile syntax makes it very verbose.
# It's really a very simple if else chain, if you squint enough,
# but the makefile syntax makes it very verbose.
# If we are in a subfolder of keyboards
ifeq ($(CURRENT_PATH_ELEMENT),keyboards)
$(eval $(call NEXT_PATH_ELEMENT))
@@ -82,7 +86,7 @@ endif
# Only consider folders with makefiles, to prevent errors in case there are extra folders
KEYBOARDS := $(notdir $(patsubst %/Makefile,%,$(wildcard $(ROOT_DIR)/keyboards/*/Makefile)))
#Compability with the old make variables, anything you specify directly on the command line
#Compatibility with the old make variables, anything you specify directly on the command line
# always overrides the detected folders
ifdef keyboard
KEYBOARD := $(keyboard)
@@ -104,12 +108,12 @@ endif
#$(info Keyboards: $(KEYBOARDS))
# Set the default goal depening on where we are running make from
# Set the default goal depending on where we are running make from
# this handles the case where you run make without any arguments
.DEFAULT_GOAL := all
ifneq ($(KEYMAP),)
ifeq ($(SUBPROJECT),)
# Inside a keymap folder, just build the keymap, with the
# Inside a keymap folder, just build the keymap, with the
# default subproject
.DEFAULT_GOAL := $(KEYBOARD)-$(KEYMAP)
else
@@ -161,24 +165,24 @@ define TRY_TO_MATCH_RULE_FROM_LIST_HELPER3
ifneq ($1,)
ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,$$(firstword $1)),true)
MATCHED_ITEM := $$(firstword $1)
else
else
$$(eval $$(call TRY_TO_MATCH_RULE_FROM_LIST_HELPER3,$$(wordlist 2,9999,$1)))
endif
endif
endef
# A recursive helper function for finding the longest match
# $1 The list to be checed
# It works by always removing the currently matched item from the list
# $1 The list to be checked
# It works by always removing the currently matched item from the list
# and call itself recursively, until a match is found
define TRY_TO_MATCH_RULE_FROM_LIST_HELPER2
# Stop the recursion when the list is empty
# Stop the recursion when the list is empty
ifneq ($1,)
RULE_BEFORE := $$(RULE)
$$(eval $$(call TRY_TO_MATCH_RULE_FROM_LIST_HELPER3,$1))
# If a match is found in the current list, otherwise just return what we had before
ifeq ($$(RULE_FOUND),true)
# Save the best match so far and call itself recursivel
# Save the best match so far and call itself recursively
BEST_MATCH := $$(MATCHED_ITEM)
BEST_MATCH_RULE := $$(RULE)
RULE_FOUND := false
@@ -268,7 +272,7 @@ define PARSE_KEYBOARD
$$(eval $$(call PARSE_SUBPROJECT,$$(SUBPROJECT)))
# If there's no matching subproject, we assume it's the default
# This will allow you to leave the subproject part of the target out
else
else
$$(eval $$(call PARSE_SUBPROJECT,))
endif
endef
@@ -283,7 +287,7 @@ endef
# When entering this, the keyboard and subproject are known, so now we need
# to determine which keymaps are going to get compiled
define PARSE_SUBPROJECT
# If we want to compile the default subproject, then we need to
# If we want to compile the default subproject, then we need to
# include the correct makefile to determine the actual name of it
CURRENT_SP := $1
ifeq ($$(CURRENT_SP),)
@@ -302,7 +306,7 @@ define PARSE_SUBPROJECT
endif
endif
# The special allsp is handled later
ifneq ($$(CURRENT_SP),allsp)
ifneq ($$(CURRENT_SP),allsp)
# get a list of all keymaps
KEYMAPS := $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/keymaps/*/.)))
ifneq ($$(CURRENT_SP),)
@@ -335,13 +339,13 @@ define PARSE_SUBPROJECT
$$(eval $$(call PARSE_ALL_KEYMAPS))
endif
else
# As earlier mentione,d when allsb is specified, we call our self recursively
# As earlier mentioned when allsb is specified, we call our self recursively
# for all of the subprojects
$$(eval $$(call PARSE_ALL_IN_LIST,PARSE_SUBPROJECT,$(SUBPROJECTS)))
endif
endef
# If we want to parse all subprojects, but the keyboard doesn't have any,
# If we want to parse all subprojects, but the keyboard doesn't have any,
# then use defaultsp instead
define PARSE_ALL_SUBPROJECTS
ifeq ($$(SUBPROJECTS),)
@@ -401,11 +405,11 @@ define BUILD
printf "$$(MAKE_MSG)\n\n"; \
$$(MAKE_CMD) $$(MAKE_VARS) SILENT=false; \
if [ $$$$? -gt 0 ]; \
then error_occured=1; \
then error_occurred=1; \
fi;
endef
# Just parse all the keymaps for a specifc keyboard
# Just parse all the keymaps for a specific keyboard
define PARSE_ALL_KEYMAPS
$$(eval $$(call PARSE_ALL_IN_LIST,PARSE_KEYMAP,$$(KEYMAPS)))
endef
@@ -415,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)
@@ -426,7 +430,7 @@ define BUILD_TEST
printf "$$(TEST_MSG)\n"; \
$$(TEST_EXECUTABLE); \
if [ $$$$? -gt 0 ]; \
then error_occured=1; \
then error_occurred=1; \
fi; \
printf "\n";
endif
@@ -446,7 +450,7 @@ endef
# Set the silent mode depending on if we are trying to compile multiple keyboards or not
# By default it's on in that case, but it can be overriden by specifying silent=false
# By default it's on in that case, but it can be overridden by specifying silent=false
# from the command line
define SET_SILENT_MODE
ifdef SUB_IS_SILENT
@@ -460,20 +464,39 @@ endef
include $(ROOT_DIR)/message.mk
RUN_COMMAND = \
$(COMMAND_$(SILENT_MODE)_$(COMMAND))
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 $(HANDLE_ERROR); fi;
endef
define RUN_TEST
+error_occurred=0;\
$($(TEST)_COMMAND)\
if [ $$error_occurred -gt 0 ]; then $(HANDLE_ERROR); fi;
endef
# Allow specifying just the subproject, in the keyboard directory, which will compile all keymaps
SUBPROJECTS := $(notdir $(patsubst %/Makefile,%,$(wildcard ./*/Makefile)))
.PHONY: $(SUBPROJECTS)
$(SUBPROJECTS): %: %-allkm
$(SUBPROJECTS): %: %-allkm
# Let's match everything, we handle all the rule parsing ourselves
.PHONY: %
%:
%:
# Check if we have the CMP tool installed
cmp --version >/dev/null 2>&1; if [ $$? -gt 0 ]; then printf "$(MSG_NO_CMP)"; exit 1; fi;
cmp $(ROOT_DIR)/Makefile $(ROOT_DIR)/Makefile >/dev/null 2>&1; if [ $$? -gt 0 ]; then printf "$(MSG_NO_CMP)"; exit 1; fi;
# Check if the submodules are dirty, and display a warning if they are
ifndef SKIP_GIT
git submodule status --recursive 2>/dev/null | \
while IFS= read -r x; do \
case "$$x" in \
@@ -481,23 +504,24 @@ $(SUBPROJECTS): %: %-allkm
*) printf "$(MSG_SUBMODULE_DIRTY)";break;; \
esac \
done
endif
rm -f $(ERROR_FILE) > /dev/null 2>&1
$(eval $(call PARSE_RULE,$@))
$(eval $(call SET_SILENT_MODE))
# Run all the commands in the same shell, notice the + at the first line
# it has to be there to allow parallel execution of the submake
# This always tries to compile everything, even if error occurs in the middle
# But we return the error code at the end, to trigger travis failures
+error_occured=0; \
$(foreach COMMAND,$(COMMANDS),$(RUN_COMMAND)) \
if [ $$error_occured -gt 0 ]; then printf "$(MSG_ERRORS)" & exit $$error_occured; fi;\
$(foreach TEST,$(TESTS),$($(TEST)_COMMAND)) \
if [ $$error_occured -gt 0 ]; then printf "$(MSG_ERRORS)" & exit $$error_occured; fi;\
$(foreach COMMAND,$(COMMANDS),$(RUN_COMMAND))
if [ -f $(ERROR_FILE) ]; then printf "$(MSG_ERRORS)" & exit 1; fi;
$(foreach TEST,$(TESTS),$(RUN_TEST))
if [ -f $(ERROR_FILE) ]; then printf "$(MSG_ERRORS)" & exit 1; fi;
# All should compile everything
.PHONY: all
all: all-keyboards test-all
# Define some shortcuts, mostly for compability with the old syntax
# Define some shortcuts, mostly for compatibility with the old syntax
.PHONY: all-keyboards
all-keyboards: allkb-allsp-allkm
@@ -510,10 +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
GIT_VERSION := $(shell git describe --abbrev=6 --dirty --always --tags 2>/dev/null || date +"%Y-%m-%d-%H:%M:%S")
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
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,67 +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 $(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 $(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 $(SERIAL_LINK_ENABLE)), yes)
SRC += $(patsubst $(QUANTUM_PATH)/%,%,$(SERIAL_SRC))
OPT_DEFS += $(SERIAL_DEFS)
VAPTH += $(SERIAL_PATH)
SRC += $(SUBPROJECT_C)
endif
# Optimize size but this may cause error "relocation truncated to fit"
@@ -181,36 +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)
include $(TMK_PATH)/protocol/lufa.mk
include $(TMK_PATH)/avr.mk
ifeq ($(strip $(PROTOCOL)), VUSB)
include $(TMK_PATH)/protocol/vusb.mk
else
include $(TMK_PATH)/protocol/lufa.mk
endif
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,16 +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 += $(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>.

30
docs/_summary.md Normal file
View File

@@ -0,0 +1,30 @@
### 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
* [Adding a keyboard to QMK](adding_a_keyboard_to_qmk.md)
* [Porting your keyboard to QMK](porting_your_keyboard_to_qmk.md)
* [Modding your keyboard](modding_your_keyboard.md)
* [Adding features to QMK](adding_features_to_qmk.md)
* [ISP flashing guide](isp_flashing_guide.md)
### Other topics
* [General FAQ](faq.md)
* [Differences from TMK](differences_from_tmk.md)

View File

@@ -0,0 +1,35 @@
# Adding your keyboard to QMK
We welcome all keyboard projects into QMK, but ask that you try to stick to a couple guidelines that help us keep things organised and consistent.
## Naming your directory/project
All names should be lowercase alphanumeric, and separated by an underscore (`_`), but not begin with one. Dashes (`-`) aren't allow by our build system, and will confuse it with keymaps/subprojects. Your directory and your `.h` and `.c` files should have exactly the same name. Subprojects/revision should follow the same format.
## `readme.md`
All projects need to have a `readme.md` file that explains what the keyboard is, who made it, where it is available, and links to move information (template coming).
## Image/Hardware files
In an effort to keep the repo size down, we're no longer accepting images of any format in the repo, with few exceptions. Hosting them elsewhere (imgur) and linking them in the readme.md is the preferred method.
Any sort of hardware file (plate, case, pcb) can't be stored in qmk_firmware, but we have the [qmk.fm repo](https://github.com/qmk/qmk.fm) where such files (as well as in-depth info) can be store, and viewed on [qmk.fm](http://qmk.fm). Downloadable files are stored in `/<keyboard>/` (name follows the same format as above) which are served at `http://qmk.fm/<keyboard>/`, and pages are generated from `/_pages/<keyboard>/` which are served at the same location (.md files are generated into .html files through Jekyll). Check out the `lets_split` directory for an example.
## Non-production/handwired projects
We're happy to accept any project that uses QMK, including prototypes and handwired ones, but we have a separate `/keyboards/handwired/` folder for them, so the main `/keyboards/` folder doesn't get overcrowded. If a prototype project becomes a production project at some point in the future, we'd be happy to move it to the main `/keyboards/` folder!
## Warnings as errors
When developing your keyboard, keep in mind that all warnings will be treated as errors - these small warnings can build-up and cause larger errors down the road (and keeping them is generally a bad practice).
## Licenses
If you're adapting your keyboard's setup from another project, but not using the same code, but sure to update the copyright header at the top of the files to show your name, it this format:
Copyright 2017 Your Name <your@email.com>
## Technical details
If you're looking for more information on making your keyboard work with QMK, [check out this guide](porting_your_keyboard_to_qmk.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

@@ -6,7 +6,7 @@
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. 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.
4. Clone this repository. [This link will download it as a zip file, which you'll need to extract.](https://github.com/jackhumbert/qmk_firmware/archive/master.zip) Open the extracted folder in Windows Explorer.
4. 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.
5. 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.
6. 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!
7. Future build commands should be run from the standard Windows command prompt, which you can find by searching for "command prompt" from the start menu or start screen. Ignore the "MHV AVR Shell".
@@ -35,10 +35,10 @@ 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/jackhumbert/qmk_firmware](https://github.com/jackhumbert/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.
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.
@@ -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);
}
}
```

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

@@ -234,7 +234,7 @@ If you did everything else right. This part should be a snap! Grab the latest so
###Build Planck and Load the Firmware
```
$ cd ~/src
$ git clone https://github.com/jackhumbert/qmk_firmware.git
$ git clone https://github.com/qmk/qmk_firmware.git
$ cd qmk_firmware/keyboards/planck
$ make
```

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

@@ -183,7 +183,7 @@ As you move along, be sure that the Teensy is staying in place - recutting and s
From here, you should have a working keyboard with the correct firmware. Before we attach the Teensy permanently to the keyboard, let's quickly get some firmware loaded onto the Teensy so we can test each keyswitch.
To start out, download [the firmware](https://github.com/jackhumbert/qmk_firmware/) - we'll be using my (Jack's) fork of TMK called QMK/Quantum. We'll be doing a lot from the Terminal/command prompt, so get that open, along with a decent text editor like [Sublime Text](http://www.sublimetext.com/).
To start out, download [the firmware](https://github.com/qmk/qmk_firmware/) - we'll be using my (Jack's) fork of TMK called QMK/Quantum. We'll be doing a lot from the Terminal/command prompt, so get that open, along with a decent text editor like [Sublime Text](http://www.sublimetext.com/).
The first thing we're going to do is create a new project using the script in the root directory of the firmware. In your terminal, run this command with `<project_name>` replaced by the name of your project - it'll need to be different from any other project in the `keyboards/` folder:
@@ -276,13 +276,13 @@ This can be accomplished by using the following `keymaps` definition:
),
};
Note that the layout of the keycodes is similar to the physical layout of our keyboard - this make it much easier to see what's going on. A lot of the keycodes should be fairly obvious, but for a full list of them, check out [tmk_code/doc/keycode.txt](https://github.com/jackhumbert/qmk_firmware/blob/master/tmk_core/doc/keycode.txt) - there are also a lot of aliases to condense your keymap file.
Note that the layout of the keycodes is similar to the physical layout of our keyboard - this make it much easier to see what's going on. A lot of the keycodes should be fairly obvious, but for a full list of them, check out [tmk_code/doc/keycode.txt](https://github.com/qmk/qmk_firmware/blob/master/tmk_core/doc/keycode.txt) - there are also a lot of aliases to condense your keymap file.
It's also important to use the `KEYMAP` function we defined earlier - this is what allows the firmware to associate our intended readable keymap with the actual wiring.
#### Compiling your firmware
After you've written out your entire keymap, you're ready to get the firmware compiled and onto your Teensy. Before compiling, you'll need to get your [development environment set-up](/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.
@@ -306,7 +306,7 @@ If you've done all of these things, keep in mind that sometimes you might have h
Now that you have a working board, it's time to get things in their permanent positions. I've often used liberal amounts of hot glue to secure and insulate things, so if that's your style, start spreading that stuff like butter. Otherwise, double-sided tape is always an elegant solution, and electrical tape is a distant second. Due to the nature of these builds, a lot of this part is up to you and how you planned (or didn't plan) things out.
There are a lot of possibilities inside the firmware - check out the [readme](https://github.com/jackhumbert/qmk_firmware/blob/master/readme.md) for a full feature list, and dive into the different project (Planck, Ergodox EZ, etc) to see how people use all of them. You can always stop by [the OLKB subreddit for help!](http://reddit.com/r/olkb)
There are a lot of possibilities inside the firmware - check out the [readme](https://github.com/qmk/qmk_firmware/blob/master/readme.md) for a full feature list, and dive into the different project (Planck, Ergodox EZ, etc) to see how people use all of them. You can always stop by [the OLKB subreddit for help!](http://reddit.com/r/olkb)
## Trouble-shooting compiling

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.

106
docs/isp_flashing_guide.md Normal file
View File

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

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_DELETE KC_DELETE 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_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 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. __[We now have a guide on ISP flashing](isp_flashing_guide.md)__ 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

@@ -5,7 +5,7 @@
### Windows
1. 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**.
2. 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.
3. Clone this repository. [This link will download it as a zip file, which you'll need to extract.](https://github.com/jackhumbert/qmk_firmware/archive/master.zip) Open the extracted folder in Windows Explorer.
3. 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.
4. Right-click on the 1-setup-path-win batch script, select "Run as administrator", and accept the User Account Control prompt. Press the spacebar to dismiss the success message in the command prompt that pops up.
5. 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!
@@ -32,7 +32,7 @@ Note that, since it will be directly accessing USB hardware, the
`dfu-programmer` program needs to be run as root.
## Verify Your Installation
1. Clone the following repository: https://github.com/jackhumbert/qmk_firmware
1. Clone the following repository: https://github.com/qmk/qmk_firmware
2. Open a Terminal and `cd` into `qmk_firmware/keyboards/planck`
3. Run `make`. This should output a lot of information about the build process.
@@ -80,7 +80,7 @@ when trying to 'make dfu' on Windows you need to copy the dfu-programmer.exe to
### Keymap
Unlike the other keymaps, prefixing the keycodes with `KC_` is required. A full list of the keycodes is available [here](https://github.com/jackhumbert/qmk_firmware/blob/master/tmk_core/doc/keycode.txt). For the keycodes available only in the extended keymap, see this [header file](https://github.com/jackhumbert/qmk_firmware/blob/master/quantum/keymap_common.h).
Unlike the other keymaps, prefixing the keycodes with `KC_` is required. A full list of the keycodes is available [here](https://github.com/qmk/qmk_firmware/blob/master/tmk_core/doc/keycode.txt). For the keycodes available only in the extended keymap, see this [header file](https://github.com/qmk/qmk_firmware/blob/master/quantum/keymap_common.h).
You can use modifiers with keycodes like this:
@@ -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,63 @@
# Porting your keyboard to QMK
This page describes the technical details of porting an existing keyboard to QMK. If you're looking to add your keyboard to QMK, please [look through these guidelines](adding_a_keyboard_to_qmk.md)!
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, as long as they're hosted elsewhere (imgur).
## `/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

@@ -6,17 +6,18 @@ This project includes a Vagrantfile that will allow you to build a new firmware
Using the `/Vagrantfile` in this repository requires you have [Vagrant](http://www.vagrantup.com/) as well as [VirtualBox](https://www.virtualbox.org/) (or [VMware Workstation](https://www.vmware.com/products/workstation) and [Vagrant VMware plugin](http://www.vagrantup.com/vmware) but the (paid) VMware plugin requires a licensed copy of VMware Workstation/Fusion).
*COMPATIBILITY NOTICE* Certain versions of Virtualbox 5 appear to have an incompatibility with the Virtualbox extensions installed in the boxes in this Vagrantfile. If you encounter any issues with the /vagrant mount not succeeding, please upgrade your version of Virtualbox to at least 5.0.12.
*COMPATIBILITY NOTICE* Certain versions of Virtualbox 5 appear to have an incompatibility with the Virtualbox extensions installed in the boxes in this Vagrantfile. If you encounter any issues with the /vagrant mount not succeeding, please upgrade your version of Virtualbox to at least 5.0.12. **Alternately, you can try running the following command:** `vagrant plugin install vagrant-vbguest`
Other than having Vagrant and Virtualbox installed and possibly a restart of your computer afterwards, you can simple run a 'vagrant up' anywhere inside the folder where you checked out this project and it will start a Linux virtual machine that contains all the tools required to build this project. There is a post Vagrant startup hint that will get you off on the right foot, otherwise you can also reference the build documentation below.
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

@@ -67,7 +67,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define RGB_DI_PIN E2
#define RGBLIGHT_TIMER
#define RGBLIGHT_ANIMATIONS
#define RGBLED_NUM 8 // Number of LEDs
#define RGBLIGHT_HUE_STEP 10
#define RGBLIGHT_SAT_STEP 17

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),
};

30
keyboards/amjpad/amjpad.c Normal file
View File

@@ -0,0 +1,30 @@
#include "amjpad.h"
#include "led.h"
void matrix_init_kb(void) {
// put your keyboard start-up code here
// runs once when the firmware starts up
matrix_init_user();
led_init_ports();
};
void matrix_scan_kb(void) {
// put your looping keyboard code here
// runs every cycle (a lot)
matrix_scan_user();
};
void led_init_ports(void) {
// * Set our LED pins as output
DDRD |= (1<<6);
}
void led_set_kb(uint8_t usb_led) {
if (usb_led & (1<<USB_LED_NUM_LOCK)) {
// Turn numlock on
PORTD &= ~(1<<6);
} else {
// Turn numlock off
PORTD |= (1<<6);
}
}

61
keyboards/amjpad/amjpad.h Normal file
View File

@@ -0,0 +1,61 @@
#ifndef AMJPAD_H
#define ADMJPAD_H
#include "quantum.h"
// readability
#define XXX KC_NO
/* AMJPAD matrix layout
* ,-------------------.
* | 00 | 01 | 02 | 03 |
* |----|----|----|----|
* | 10 | 11 | 12 | 13 |
* |----|----|----|----|
* | 20 | 21 | 22 | |
* |----|----|----| 23 |
* | 30 | 31 | 32 | |
* |----|----|----|----|
* | 40 | 41 | 42 | |
* |----|----|----| 43 |
* | 50 | 52 | |
* `-------------------'
*/
// The first section contains all of the arguments
// The second converts the arguments into a two-dimensional array
#define KEYMAP( \
k00, k01, k02, k03, \
k10, k11, k12, k13, \
k20, k21, k22, k23, \
k30, k31, k32, \
k40, k41, k42, k43, \
k50, k52 \
) \
{ \
{k00, k01, k02, k03}, \
{k10, k11, k12, k13}, \
{k20, k21, k22, k23}, \
{k30, k31, k32, XXX}, \
{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);
#endif

94
keyboards/amjpad/config.h Normal file
View File

@@ -0,0 +1,94 @@
/*
Copyright 2012 Jun Wako <wakojun@gmail.com>
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/>.
*/
#ifndef CONFIG_H
#define CONFIG_H
#include "config_common.h"
/* USB Device descriptor parameter */
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x6060
#define DEVICE_VER 0x0003
#define MANUFACTURER AMJ
#define PRODUCT PAD
#define DESCRIPTION QMK keyboard firmware for AMJ PAD
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 4
// ROWS: Top to bottom, COLS: Left to right
#define MATRIX_ROW_PINS { F7, F6, F5, F4, D5, D0 }
#define MATRIX_COL_PINS { F1, F0, E6, C7 }
#define UNUSED_PINS
#define BACKLIGHT_PIN B6
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
/* define if matrix has ghost */
//#define MATRIX_HAS_GHOST
/* Set 0 if debouncing isn't needed */
#define DEBOUNCING_DELAY 5
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
/* key combination for command */
#define IS_COMMAND() ( \
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
/* Backlight configuration
*/
#define BACKLIGHT_LEVELS 4
/* Underlight configuration
*/
#define RGB_DI_PIN E2
#define RGBLIGHT_ANIMATIONS
#define RGBLED_NUM 8 // Number of LEDs
#define RGBLIGHT_HUE_STEP 10
#define RGBLIGHT_SAT_STEP 17
#define RGBLIGHT_VAL_STEP 17
/*
* Feature disable options
* These options are also useful to firmware size reduction.
*/
/* disable debug print */
//#define NO_DEBUG
/* disable print */
//#define NO_PRINT
/* disable action features */
//#define NO_ACTION_LAYER
//#define NO_ACTION_TAPPING
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
#endif

View File

@@ -0,0 +1,101 @@
#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 |TAB |BS | = |
* |----|----|----|----|
* | NL | / | * | - |
* |----|----|----|----|
* | 7 | 8 | 9 | |
* |----|----|----| + |
* | 4 | 5 | 6 | |
* |----|----|----|----|
* | 1 | 2 | 3 | |
* |----|----|----| En |
* | 0 |./FN| |
* `-------------------'
*/
[_BL] = KEYMAP(
KC_ESC,KC_TAB,KC_BSPC,KC_PEQL, \
KC_NLCK,KC_PSLS,KC_PAST,KC_PMNS, \
KC_P7, KC_P8, KC_P9, KC_PPLS, \
KC_P4, KC_P5, KC_P6, \
KC_P1, KC_P2, KC_P3, KC_PENT, \
KC_P0, LT(_FL,KC_PDOT)),
/* Keymap _FL: Function Layer
* ,-------------------.
* |Esc |TAB |BS | = |
* |----|----|----|----|
* | NL | / | * | - |
* |----|----|----|----|
* | 7 | 8 | 9 | |
* |----|----|----|RST |
* | 4 | 5 | 6 | |
* |----|----|----|----|
* | 1 | 2 | 3 | |
* |----|----|----| En |
* | 0 |./FN| |
* `-------------------'
*/
[_FL] = KEYMAP(
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_P1, KC_P2, KC_P3, KC_PENT, \
KC_P0, LT(_FL,KC_PDOT)),
};
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,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),
};

66
keyboards/amjpad/rules.mk Normal file
View File

@@ -0,0 +1,66 @@
# MCU name
#MCU = at90usb1287
MCU = atmega32u4
# Processor frequency.
# This will define a symbol, F_CPU, in all source code files equal to the
# processor frequency in Hz. You can then use this symbol in your source code to
# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
# automatically to create a 32-bit value in your source code.
#
# This will be an integer division of F_USB below, as it is sourced by
# F_USB after it has run through any CPU prescalers. Note that this value
# does not *change* the processor frequency - it should merely be updated to
# reflect the processor speed set externally so that the code can use accurate
# software delays.
F_CPU = 16000000
#
# LUFA specific
#
# Target architecture (see library "Board Types" documentation).
ARCH = AVR8
# Input clock frequency.
# This will define a symbol, F_USB, in all source code files equal to the
# input clock frequency (before any prescaling is performed) in Hz. This value may
# differ from F_CPU if prescaling is used on the latter, and is required as the
# raw input clock is fed directly to the PLL sections of the AVR for high speed
# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
# at the end, this will be done automatically to create a 32-bit value in your
# source code.
#
# If no clock division is performed on the input clock inside the AVR (via the
# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
F_USB = $(F_CPU)
# Interrupt driven control endpoint task(+60)
OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
# Boot Section Size in *bytes*
# Teensy halfKay 512
# Teensy++ halfKay 1024
# Atmel DFU loader 4096
# LUFA bootloader 4096
# USBaspLoader 2048
OPT_DEFS += -DBOOTLOADER_SIZE=4096
# Build Options
# comment out to disable the options.
#
BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE ?= no # 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
NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
RGBLIGHT_ENABLE ?= no # Enable keyboard underlight functionality (+4870)
BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality (+1150)
MIDI_ENABLE ?= no # MIDI controls
AUDIO_ENABLE ?= no
UNICODE_ENABLE ?= no # Unicode
BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID

View File

@@ -1,7 +1,7 @@
BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = no # Console for debug(+400)
CONSOLE_ENABLE = yes # Console for debug(+400)
COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality

View File

@@ -150,10 +150,17 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/* disable debug print */
//#define NO_DEBUG
#ifndef NO_DEBUG
# define NO_DEBUG
#endif
/* disable print */
//#define NO_PRINT
// #ifndef NO_PRINT
// # define NO_PRINT
// #endif
/* Only print user print statements */
#define USER_PRINT
/* disable action features */
//#define NO_ACTION_LAYER

View File

@@ -2,48 +2,59 @@
#include "action_layer.h"
#include "eeconfig.h"
#include "led.h"
#include "mousekey.h"
#ifdef AUDIO_ENABLE
#include "audio.h"
#include "song_list.h"
#endif
#define LAYER_QWERTY 0
#define LAYER_COLEMAK 1
#define LAYER_DVORAK 2
#define LAYER_UPPER 3
#define LAYER_LOWER 4
#define LAYER_FUNCTION 5
#define LAYER_MOUSE 6
#define LAYER_ADJUST 7
#define MACRO_QWERTY 0
#define MACRO_COLEMAK 1
#define MACRO_DVORAK 2
#define MACRO_UPPER 3
#define MACRO_LOWER 4
#define MACRO_FUNCTION 5
#define MACRO_MOUSE 6
#define MACRO_TIMBRE_1 7
#define MACRO_TIMBRE_2 8
#define MACRO_TIMBRE_3 9
#define MACRO_TIMBRE_4 10
#define MACRO_TEMPO_U 11
#define MACRO_TEMPO_D 12
#define MACRO_TONE_DEFAULT 13
#define MACRO_MUSIC_TOGGLE 14
#define MACRO_AUDIO_TOGGLE 16
#define MACRO_INC_VOICE 18
#define MACRO_DEC_VOICE 19
#define MACRO_BACKLIGHT 20
#define MACRO_BREATH_TOGGLE 21
#define MACRO_BREATH_SPEED_INC 23
#define MACRO_BREATH_SPEED_DEC 24
#define MACRO_BREATH_DEFAULT 25
enum keyboard_layers {
LAYER_QWERTY = 0,
LAYER_UPPER,
LAYER_LOWER,
LAYER_FUNCTION,
LAYER_MOUSE,
LAYER_ADJUST,
};
enum keyboard_macros {
MACRO_QWERTY = 0,
MACRO_UPPER,
MACRO_LOWER,
MACRO_FUNCTION,
MACRO_MOUSE,
MACRO_TIMBRE_1,
MACRO_TIMBRE_2,
MACRO_TIMBRE_3,
MACRO_TIMBRE_4,
MACRO_TEMPO_U,
MACRO_TEMPO_D,
MACRO_TONE_DEFAULT,
MACRO_MUSIC_TOGGLE,
MACRO_AUDIO_TOGGLE,
MACRO_INC_VOICE,
MACRO_DEC_VOICE,
MACRO_BACKLIGHT,
MACRO_BREATH_TOGGLE,
MACRO_BREATH_SPEED_INC,
MACRO_BREATH_SPEED_DEC,
MACRO_BREATH_DEFAULT,
MACRO_MOUSE_MOVE_UL,
MACRO_MOUSE_MOVE_UR,
MACRO_MOUSE_MOVE_DL,
MACRO_MOUSE_MOVE_DR,
MACRO_HELP_1,
MACRO_HELP_2,
MACRO_HELP_3,
MACRO_HELP_4,
MACRO_HELP_5,
MACRO_HELP_6,
MACRO_HELP_7,
MACRO_HELP_8,
MACRO_HELP_9,
};
#define M_QWRTY M(MACRO_QWERTY)
#define M_COLMK M(MACRO_COLEMAK)
#define M_DVORK M(MACRO_DVORAK)
#define M_UPPER M(MACRO_UPPER)
#define M_LOWER M(MACRO_LOWER)
#define M_FUNCT M(MACRO_FUNCTION)
@@ -60,6 +71,19 @@
#define M_BSPDU M(MACRO_BREATH_SPEED_INC)
#define M_BSPDD M(MACRO_BREATH_SPEED_DEC)
#define M_BDFLT M(MACRO_BREATH_DEFAULT)
#define M_MS_UL M(MACRO_MOUSE_MOVE_UL)
#define M_MS_UR M(MACRO_MOUSE_MOVE_UR)
#define M_MS_DL M(MACRO_MOUSE_MOVE_DL)
#define M_MS_DR M(MACRO_MOUSE_MOVE_DR)
#define M_HELP1 M(MACRO_HELP_1)
#define M_HELP2 M(MACRO_HELP_2)
#define M_HELP3 M(MACRO_HELP_3)
#define M_HELP4 M(MACRO_HELP_4)
#define M_HELP5 M(MACRO_HELP_5)
#define M_HELP6 M(MACRO_HELP_6)
#define M_HELP7 M(MACRO_HELP_7)
#define M_HELP8 M(MACRO_HELP_8)
#define M_HELP9 M(MACRO_HELP_9)
#define VC_UP M(MACRO_INC_VOICE)
@@ -77,6 +101,7 @@
#define SC_ACLS LALT(KC_F4)
#define SC_CCLS LCTL(KC_F4)
#define TG_NKRO MAGIC_TOGGLE_NKRO
#define OS_SHFT KC_FN0
#define _______ KC_TRNS
@@ -86,169 +111,126 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* QWERTY
* .---------------------------------------------------------------------------------------------------------------------- 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 ------------+--------|
* | CAPS | 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 |
* |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------|
* | LCTRL | LWIN | FN | LALT | UPPER | XXXXXX . SPACE | LOWER | SHIFT | RALT | APP | RCTRL | LEFT | DOWN | RIGHT |
* '--------------------------------------------------------------------------------------------------------------------------------------'
*/
[LAYER_QWERTY] = { // 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_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_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 },
{ KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_UPPER, KC_SPC, KC_SPC, M_LOWER, OS_SHFT, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT },
},
/* COLEMAK
* .---------------------------------------------------------------------------------------------------------------------- 2u ------------.
* | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | XXXXXX . BACKSP |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
* | TAB | Q | W | F | P | G | J | L | U | Y | ; | [ | ] | \ | DEL |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------|
* | BACKSP | A | R | S | T | D | H | N | E | I | O | ' | XXXXXX . ENTER | PG UP |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------|
* | LSHIFT | Z | X | C | V | B | K | M | , | . | / | XXXXXX . RSHIFT | UP | PG DN |
* |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------|
* | LCTRL | LWIN | FN | LALT | UPPER | XXXXXX . SPACE | LOWER | SHIFT | RALT | APP | RCTRL | LEFT | DOWN | RIGHT |
* '--------------------------------------------------------------------------------------------------------------------------------------'
*/
[LAYER_COLEMAK] = { // COLEMAK
{ 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_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL },
{ KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_ENT, KC_ENT, KC_PGUP },
{ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN },
{ KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_UPPER, KC_SPC, KC_SPC, M_LOWER, OS_SHFT, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT },
},
/* DVORAK
* .---------------------------------------------------------------------------------------------------------------------- 2u ------------.
* | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | [ | ] | XXXXXX . BACKSP |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
* | TAB | ' | , | . | P | Y | F | G | C | R | L | / | = | \ | DEL |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------|
* | CAPS | A | O | E | U | I | D | H | T | N | S | - | XXXXXX . ENTER | PG UP |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------|
* | LSHIFT | ; | Q | J | K | X | B | M | W | V | Z | XXXXXX . RSHIFT | UP | PG DN |
* |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------|
* | LCTRL | LWIN | FN | LALT | UPPER | XXXXXX . SPACE | LOWER | SHIFT | RALT | APP | RCTRL | LEFT | DOWN | RIGHT |
* '--------------------------------------------------------------------------------------------------------------------------------------'
*/
[LAYER_DVORAK] = { // DVORAK
{ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC, KC_BSPC, KC_BSPC },
{ KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_EQL, KC_BSLS, KC_DEL },
{ KC_CAPS, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, KC_ENT, KC_ENT, KC_PGUP },
{ KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN },
{ KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_UPPER, KC_SPC, KC_SPC, M_LOWER, OS_SHFT, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT },
},
/* UPPER
* .---------------------------------------------------------------------------------------------------------------------- 2u ------------.
* | PRINT | BR TOG | BR SP+ | BR SP- | BR RST | XXXXXX | XXXXXX | NUM LK | / | * | | NUM LK | SCR LK | XXXXXX . PAUSE |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
* | | F1 | F2 | F3 | F4 | | | 7 | 8 | 9 | - | | | | INS |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------|
* | CAP LK | F5 | F6 | F7 | F8 | | | 4 | 5 | 6 | + | | XXXXXX . | HOME |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------|
* | | F9 | F10 | F11 | F12 | | | 1 | 2 | 3 | ENTER | XXXXXX . | | END |
* |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------|
* | | | | | | 0 | | RALT | . | ENTER | | | | |
* '--------------------------------------------------------------------------------------------------------------------------------------'
*/
[LAYER_UPPER] = { // UPPER
{ KC_PSCR, M_BRTOG, M_BSPDU, M_BSPDD, M_BDFLT, XXXXXXX, XXXXXXX, KC_NLCK, KC_PSLS, KC_PAST, XXXXXXX, XXXXXXX, KC_SLCK, KC_PAUS, KC_PAUS },
{ _______, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, XXXXXXX, KC_KP_7, KC_KP_8, KC_KP_9, KC_PMNS, _______, _______, _______, KC_INS },
{ KC_CAPS, KC_F5, KC_F6, KC_F7, KC_F8, XXXXXXX, XXXXXXX, KC_KP_4, KC_KP_5, KC_KP_6, KC_PPLS, _______, ________________, KC_HOME },
{ _______, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, KC_KP_1, KC_KP_2, KC_KP_3, KC_PENT, ________________, _______, KC_END },
{ _______, _______, _______, _______, _______, KC_KP_0, KC_KP_0, _______, KC_RALT, KC_PDOT, KC_PENT, _______, _______, _______, _______ },
},
/* LOWER
* .---------------------------------------------------------------------------------------------------------------------- 2u ------------.
* | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | XXXXXX . BACKSP |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
* | | $ | { | [ | ( | % | # | ) | ] | } | @ | | | | INS |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------|
* | | ^ | * | + | - | / | \ | _ | ' | " | ` | | XXXXXX . | HOME |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------|
* | | | | & | ! | ~ | ; | : | = | < | > | ? | XXXXXX . | | END |
* |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------|
* | | | | | | | | | | | | | | |
* '--------------------------------------------------------------------------------------------------------------------------------------'
*/
[LAYER_LOWER] = { // LOWER
{ _______, 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_DLR, KC_LCBR, KC_LBRC, KC_LPRN, KC_PERC, KC_HASH, KC_RPRN, KC_RBRC, KC_RCBR, KC_AT, _______, _______, _______, KC_INS },
{ _______, KC_CIRC, KC_ASTR, KC_PPLS, KC_PMNS, KC_SLSH, KC_BSLS, KC_UNDS, KC_QUOT, KC_DQT, KC_GRV, _______, ________________, KC_HOME },
{ _______, KC_PIPE, KC_AMPR, KC_EXLM, KC_TILD, KC_SCLN, KC_COLN, KC_EQL, KC_LT, KC_GT, KC_QUES, ________________, _______, KC_END },
{ _______, _______, _______, _______, _______, ________________, _______, _______, _______, _______, _______, _______, _______, _______ },
},
/* FUNCTION
* .---------------------------------------------------------------------------------------------------------------------- 2u ------------.
* | NUM LK | | | | | | | | | | | | | XXXXXX . |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
* | SCR LK | F13 | F14 | F15 | F16 | | | | | | | | | | |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------|
* | CAP LK | F17 | F18 | F19 | F20 | | | | | | | | XXXXXX . | |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------|
* | | F21 | F22 | F23 | F24 | | | | | | | XXXXXX . | VOL UP | MUTE |
* |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------|
* | | | | | | PLAY/PAUSE | | | | | | PTRACK | VOL DN | NTRACK |
* '--------------------------------------------------------------------------------------------------------------------------------------'
*/
[LAYER_FUNCTION] = { // FUNCTION
{ KC_NLCK, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXXXXXXXXXXX },
{ KC_SLCK, KC_F13, KC_F14, KC_F15, KC_F16, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX },
{ KC_CAPS, KC_F17, KC_F18, KC_F19, KC_F20, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXXXXXXXXXXX, XXXXXXX },
{ _______, KC_F21, KC_F22, KC_F23, KC_F24, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, ________________, KC_VOLU, KC_MUTE },
{ _______, _______, _______, _______, _______, KC_MPLY, KC_MPLY, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT },
},
#ifdef MOUSEKEY_ENABLE
[LAYER_MOUSE] = { // MOUSE
{ _______, KC_ACL0, KC_ACL1, KC_ACL2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXXXXXXXXXXX },
{ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX },
{ XXXXXXX, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXXXXXXXXXXX, KC_WH_U },
{ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, ________________, KC_MS_U, KC_WH_D },
{ _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R },
},
#endif
[LAYER_ADJUST] = { // ADJUST
{ _______, TIMBR_1, TIMBR_2, TIMBR_3, TIMBR_4, TMPO_UP, TMPO_DN, TMPO_DF, _______, _______, _______, MU_TOG, AU_TOG, ________________ },
{ _______, M_QWRTY, M_COLMK, M_DVORK, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ },
{ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________, _______ },
{ _______, _______, _______, _______, M_BACKL, RESET, _______, M_MOUSE, _______, _______, _______, ________________, MUV_IN, _______ },
{ _______, _______, _______, _______, _______, ________________, _______, _______, _______, _______, _______, _______, MUV_DE, _______ },
},
/*
[LAYER_EMPTY] = { // LAYER
{ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________ },
{ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ },
{ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________, _______ },
{ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________, _______, _______ },
{ _______, _______, _______, _______, _______, ________________, _______, _______, _______, _______, _______, _______, _______, _______ },
},
/* LAYER = LAYER_QWERTY
.--------------------------------------------------------------------------------------------------------------------------------------.
| ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | BACKSP . BACKSP |
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
| TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | DEL |
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
| CAP LK | A | S | D | F | G | H | J | K | L | ; | ' | ENTER . ENTER | PG UP |
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
| LSHIFT | Z | X | C | V | B | N | M | , | . | / | RSHIFT . RSHIFT | UP | PG DN |
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
| LCTRL | LWIN | FN | LALT | UPPER | SPACE . SPACE | LOWER | OSHIFT | RALT | APP | RCTRL | LEFT | DOWN | RIGHT |
'--------------------------------------------------------------------------------------------------------------------------------------'
*/
[LAYER_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_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_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 },
{ KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_UPPER, KC_SPC , KC_SPC , M_LOWER, OS_SHFT, KC_RALT, KC_APP , KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT }
},
/* LAYER = LAYER_UPPER
.--------------------------------------------------------------------------------------------------------------------------------------.
| PRINT | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | NUM LK | KP / | KP * | KP - | XXXXXX | XXXXXX | ______ . ______ |
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
| PAUSE | F1 | F2 | F3 | F4 | NUM LK | KP / | KP 7 | KP 8 | KP 9 | KP - | ______ | ______ | ______ | INS |
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
| ______ | F5 | F6 | F7 | F8 | CAP LK | KP * | KP 4 | KP 5 | KP 6 | KP + | ______ | ______ . ______ | HOME |
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
| ______ | F9 | F10 | F11 | F12 | SCR LK | KP 0 | KP 1 | KP 2 | KP 3 | KP ENT | ______ . ______ | ______ | END |
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
| ______ | ______ | ______ | ______ | UPPER | KP 0 . KP 0 | ______ | RALT | KP . | KP ENT | ______ | ______ | ______ | ______ |
'--------------------------------------------------------------------------------------------------------------------------------------'
*/
[LAYER_UPPER] = {
{ KC_PSCR, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, XXXXXXX, XXXXXXX, _______, _______ },
{ KC_PAUS, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_NLCK, KC_PSLS, KC_KP_7, KC_KP_8, KC_KP_9, KC_PMNS, _______, _______, _______, KC_INS },
{ _______, KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_CAPS, KC_PAST, KC_KP_4, KC_KP_5, KC_KP_6, KC_PPLS, _______, _______, _______, KC_HOME },
{ _______, KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_SLCK, KC_KP_0, KC_KP_1, KC_KP_2, KC_KP_3, KC_PENT, _______, _______, _______, KC_END },
{ _______, _______, _______, _______, M_UPPER, KC_KP_0, KC_KP_0, _______, KC_RALT, KC_PDOT, KC_PENT, _______, _______, _______, _______ }
},
/* LAYER = LAYER_LOWER
.--------------------------------------------------------------------------------------------------------------------------------------.
| PRINT | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | ______ . ______ |
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
| ______ | $ | { | [ | ( | % | # | ) | ] | } | @ | ______ | ______ | ______ | INS |
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
| ______ | ^ | * | + | - | / | \ | _ | ' | " | ` | ______ | ______ . ______ | HOME |
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
| ______ | | | & | ! | ~ | ; | : | = | < | > | ? | ______ . ______ | ______ | END |
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
| ______ | ______ | ______ | ______ | ______ | ______ . ______ | LOWER | ______ | ______ | ______ | ______ | ______ | ______ | ______ |
'--------------------------------------------------------------------------------------------------------------------------------------'
*/
[LAYER_LOWER] = {
{ 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_DLR , KC_LCBR, KC_LBRC, KC_LPRN, KC_PERC, KC_HASH, KC_RPRN, KC_RBRC, KC_RCBR, KC_AT , _______, _______, _______, KC_INS },
{ _______, KC_CIRC, KC_ASTR, KC_PLUS, KC_MINS, KC_SLSH, KC_BSLS, KC_UNDS, KC_QUOT, KC_DQT , KC_GRV , _______, _______, _______, KC_HOME },
{ _______, KC_PIPE, KC_AMPR, KC_EXLM, KC_TILD, KC_SCLN, KC_COLN, KC_EQL , KC_LT , KC_GT , KC_QUES, _______, _______, _______, KC_END },
{ _______, _______, _______, _______, _______, _______, _______, M_LOWER, _______, _______, _______, _______, _______, _______, _______ }
},
/* LAYER = LAYER_FUNCTION
.--------------------------------------------------------------------------------------------------------------------------------------.
| XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX . XXXXXX |
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
| XXXXXX | F13 | F14 | F15 | F16 | NUM LK | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX |
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
| XXXXXX | F17 | F18 | F19 | F20 | SCR LK | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX . XXXXXX | XXXXXX |
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
| ______ | F21 | F22 | F23 | F24 | CAP LK | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | ______ . ______ | VOL UP | MUTE |
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
| ______ | ______ | FN | ______ | ______ | PLAY . PLAY | ______ | ______ | ______ | ______ | ______ | PREV | VOL DN | NEXT |
'--------------------------------------------------------------------------------------------------------------------------------------'
*/
[LAYER_FUNCTION] = {
{ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX },
{ XXXXXXX, KC_F13 , KC_F14 , KC_F15 , KC_F16 , KC_NLCK, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX },
{ XXXXXXX, KC_F17 , KC_F18 , KC_F19 , KC_F20 , KC_SLCK, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX },
{ _______, KC_F21 , KC_F22 , KC_F23 , KC_F24 , KC_CAPS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, KC_VOLU, KC_MUTE },
{ _______, _______, M_FUNCT, _______, _______, KC_MPLY, KC_MPLY, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT }
},
/* LAYER = LAYER_MOUSE
.--------------------------------------------------------------------------------------------------------------------------------------.
| ESC | MS AC0 | MS AC1 | MS AC2 | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX . XXXXXX |
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
| XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | MS UL | MS U | MS UR | XXXXXX | XXXXXX | XXXXXX | MS WHL | MS WHR |
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
| XXXXXX | MS BT5 | MS BT4 | MS BT3 | MS BT2 | XXXXXX | XXXXXX | MS L | XXXXXX | MS R | XXXXXX | XXXXXX | XXXXXX . XXXXXX | MS WHU |
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
| ______ | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | MS DL | MS D | MS DR | XXXXXX | ______ . ______ | MS U | MS WHD |
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
| ______ | ______ | ______ | ______ | ______ | MS BT1 . MS BT1 | ______ | ______ | ______ | ______ | ______ | MS L | MS D | MS R |
'--------------------------------------------------------------------------------------------------------------------------------------'
*/
[LAYER_MOUSE] = {
{ KC_ESC , KC_ACL0, KC_ACL1, KC_ACL2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX },
{ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, M_MS_UL, KC_MS_U, M_MS_UR, XXXXXXX, XXXXXXX, XXXXXXX, KC_WH_L, KC_WH_R },
{ XXXXXXX, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, XXXXXXX, XXXXXXX, KC_MS_L, XXXXXXX, KC_MS_R, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_WH_U },
{ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, M_MS_DL, KC_MS_D, M_MS_DR, XXXXXXX, _______, _______, KC_MS_U, KC_WH_D },
{ _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R }
},
/* LAYER = LAYER_ADJUST
.--------------------------------------------------------------------------------------------------------------------------------------.
| XXXXXX | HELP 1 | HELP 2 | HELP 3 | HELP 4 | HELP 5 | HELP 6 | HELP 7 | HELP 8 | HELP 9 | XXXXXX | MUSIC | AUDIO | XXXXXX . XXXXXX |
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
| XXXXXX | BRTOG | BRSPD+ | BRSPD- | BRDFLT | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX |
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
| XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX . XXXXXX | XXXXXX |
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
| XXXXXX | QWERTY | XXXXXX | XXXXXX | BACKLT | RESET | XXXXXX | MOUSE | XXXXXX | XXXXXX | XXXXXX | XXXXXX . XXXXXX | VOICE+ | XXXXXX |
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
| XXXXXX | XXXXXX | XXXXXX | XXXXXX | UPPER | XXXXXX . XXXXXX | LOWER | XXXXXX | XXXXXX | XXXXXX | XXXXXX | TEMPO- | VOICE- | TEMPO+ |
'--------------------------------------------------------------------------------------------------------------------------------------'
*/
[LAYER_ADJUST] = {
{ XXXXXXX, M_HELP1, M_HELP2, M_HELP3, M_HELP4, M_HELP5, M_HELP6, M_HELP7, M_HELP8, M_HELP9, XXXXXXX, MU_TOG , AU_TOG , XXXXXXX, XXXXXXX },
{ XXXXXXX, M_BRTOG, M_BSPDU, M_BSPDD, M_BDFLT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX },
{ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX },
{ XXXXXXX, M_QWRTY, XXXXXXX, XXXXXXX, M_BACKL, RESET , XXXXXXX, M_MOUSE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MUV_IN , XXXXXXX },
{ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, M_UPPER, XXXXXXX, XXXXXXX, M_LOWER, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, TMPO_DN, MUV_DE , TMPO_UP }
},
};
#ifdef AUDIO_ENABLE
@@ -273,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);
@@ -290,6 +272,69 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
switch(id)
{
case MACRO_HELP_1:
if (record->event.pressed)
{
uprintf("1");
}
break;
case MACRO_HELP_2:
if (record->event.pressed)
{
uprintf("2");
}
break;
case MACRO_HELP_3:
if (record->event.pressed)
{
uprintf("3");
}
break;
case MACRO_HELP_4:
if (record->event.pressed)
{
uprintf("4");
}
break;
case MACRO_HELP_5:
if (record->event.pressed)
{
uprintf("5");
}
break;
case MACRO_HELP_6:
if (record->event.pressed)
{
uprintf("6");
}
break;
case MACRO_HELP_7:
if (record->event.pressed)
{
uprintf("7");
}
break;
case MACRO_HELP_8:
if (record->event.pressed)
{
uprintf("8");
}
break;
case MACRO_HELP_9:
if (record->event.pressed)
{
uprintf("9");
}
break;
case MACRO_BREATH_TOGGLE:
if (record->event.pressed)
{
@@ -321,30 +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);
#ifdef AUDIO_ENABLE
PLAY_NOTE_ARRAY(tone_qwerty, false, STACCATO);
#endif /* AUDIO_ENABLE */
}
break;
case MACRO_COLEMAK:
if (record->event.pressed)
{
persistant_default_layer_set(1UL<<LAYER_COLEMAK);
#ifdef AUDIO_ENABLE
PLAY_NOTE_ARRAY(tone_colemak, false, STACCATO);
#endif /* AUDIO_ENABLE */
}
break;
case MACRO_DVORAK:
if (record->event.pressed)
{
persistant_default_layer_set(1UL<<LAYER_DVORAK);
#ifdef AUDIO_ENABLE
PLAY_NOTE_ARRAY(tone_dvorak, false, STACCATO);
#endif /* AUDIO_ENABLE */
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

@@ -0,0 +1,80 @@
/*
Copyright 2012 Jun Wako <wakojun@gmail.com>
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/>.
*/
#ifndef CONFIG_H
#define CONFIG_H
#include "config_common.h"
/* USB Device descriptor parameter */
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x6060
#define DEVICE_VER 0x0001
#define MANUFACTURER Arbitrary Definitions
#define PRODUCT Planckeus
#define DESCRIPTION q.m.k. keyboard firmware for Planckeus
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 11
#define MATRIX_ROW_PINS { D0, D1, D2, D3 }
#define MATRIX_COL_PINS { F6, F5, F4, F1, F0, F7, B0, B1, B2, B3, B7 }
#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
/* define if matrix has ghost */
//#define MATRIX_HAS_GHOST
/* number of backlight levels */
//#define BACKLIGHT_LEVELS 3
/* Set 0 if debouncing isn't needed */
#define DEBOUNCING_DELAY 5
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
/* key combination for command */
#define IS_COMMAND() ( \
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
/*
* Feature disable options
* These options are also useful to firmware size reduction.
*/
/* disable debug print */
//#define NO_DEBUG
/* disable print */
//#define NO_PRINT
/* disable action features */
//#define NO_ACTION_LAYER
//#define NO_ACTION_TAPPING
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
#endif

View File

@@ -0,0 +1,45 @@
#include "atreus.h"
#define BASE 0
#define SYMB 1
#define ETC 2
enum macro_id {
TEENSY,
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[BASE] = KEYMAP(
KC_Q, KC_W, KC_D, KC_F, KC_K, KC_J, KC_U, KC_R, KC_L, KC_SCLN,
LT(ETC,KC_A), KC_S, KC_E, KC_T, KC_G, KC_Y, KC_N, KC_I, KC_O, KC_H,
SFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_P, KC_M, KC_COMM, KC_DOT, SFT_T(KC_SLSH),
KC_GRV, KC_DEL, KC_LALT, GUI_T(KC_TAB), LT(SYMB,KC_BSPC), CTL_T(KC_ESC), SFT_T(KC_ENT), LT(SYMB,KC_SPC), GUI_T(KC_LEFT), KC_DOWN, KC_UP, LCAG_T(KC_RGHT)
),
[SYMB] = KEYMAP(
KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, KC_EQL, KC_7, KC_8, KC_9, KC_PLUS,
KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_BSLS, KC_MINS, KC_4, KC_5, KC_6, KC_QUOT,
KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_ASTR, KC_UNDS, KC_1, KC_2, KC_3, KC_DQUO,
KC_TILD, KC_AMPR, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_0, KC_NO, KC_DOT, KC_TRNS
),
[ETC] = KEYMAP(
RESET, KC_NO, KC_NO, KC_NO, KC_PGUP, KC_VOLU, KC_F7, KC_F8, KC_F9, KC_HOME,
LT(ETC,KC_A), KC_NO, KC_NO, KC_NO, KC_PGDN, KC_VOLD, KC_F4, KC_F5, KC_F6, KC_END,
KC_NO, KC_NO, KC_NO, KC_NO, KC_DEL, KC_MUTE, KC_F1, KC_F2, KC_F3, KC_INS,
KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO
),
};
const uint16_t PROGMEM fn_actions[] = {
};
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
switch(id) {
case TEENSY:
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[] = {

View File

@@ -0,0 +1,96 @@
/*
Copyright 2012 Jun Wako <wakojun@gmail.com>
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/>.
*/
#ifndef CONFIG_H
#define CONFIG_H
#include "config_common.h"
/* Make Overloaded Keys switch faster */
#define TAPPING_TERM 150
/* USB Device descriptor parameter */
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x6060
#define DEVICE_VER 0x0001
#define MANUFACTURER Technomancy
#define PRODUCT Atreus
#define DESCRIPTION q.m.k. keyboard firmware for Atreus
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 11
// Change this to how you wired your keyboard
// COLS: Left to right, ROWS: Top to bottom
#if defined(ATREUS_ASTAR)
# define MATRIX_ROW_PINS { D0, D1, D3, D2 }
#if defined(PCBDOWN)
# define MATRIX_COL_PINS { B7, D6, F7, F6, B6, D4, E6, B4, B5, C6, D7 }
#else
# define MATRIX_COL_PINS { D7, C6, B5, B4, E6, D4, B6, F6, F7, D6, B7 }
#endif
# define UNUSED_PINS
#elif defined(ATREUS_TEENSY2)
# define MATRIX_ROW_PINS { D0, D1, D2, D3 }
# define MATRIX_COL_PINS { F6, F5, F4, B7, B6, B5, B4, B3, B2, B1, B0 }
# define UNUSED_PINS
#endif
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
/* define if matrix has ghost */
//#define MATRIX_HAS_GHOST
/* number of backlight levels */
//#define BACKLIGHT_LEVELS 3
/* Set 0 if debouncing isn't needed */
#define DEBOUNCING_DELAY 5
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
/* key combination for command */
#define IS_COMMAND() ( \
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
/*
* Feature disable options
* These options are also useful to firmware size reduction.
*/
/* disable debug print */
//#define NO_DEBUG
/* disable print */
//#define NO_PRINT
/* disable action features */
//#define NO_ACTION_LAYER
//#define NO_ACTION_TAPPING
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
#endif

View File

@@ -0,0 +1,61 @@
// this is the style you want to emulate.
// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
#include "atreus.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 BASE 0
#define NUMS 1
#define MOUS 2
// Some quick aliases, just to make it look pretty
#define _______ KC_TRNS
#define XXXXXXX KC_NO
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[BASE] = KEYMAP( /* Qwerty */
KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ,
KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN ,
SFT_T(KC_Z), KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , SFT_T(KC_QUOT),
KC_LCTL , KC_LALT, KC_LALT, KC_LGUI, KC_BSPC, KC_ESC, KC_ENT, KC_SPC, F(NUMS), KC_RALT, KC_SLSH, KC_BSLS ),
[NUMS] = KEYMAP( /* Numbers / Arrows / Symbols */
KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_LPRN, KC_RPRN, KC_MINS, KC_EQL , KC_LBRC,
KC_TAB , KC_5 , KC_6 , KC_7 , KC_8 , KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, KC_RBRC,
_______, KC_9 , KC_0 , KC_DOT , KC_COMM, KC_HOME, KC_PGDN, KC_PGUP, KC_END , _______,
_______, _______, _______, _______, KC_DEL , F(MOUS), _______, _______, _______, _______, _______, _______),
[MOUS] = KEYMAP( /* Mouse and Media Keys */
KC_SLCK, KC_PAUSE, KC_F11 , KC_F10 , KC_F9 , KC_F8 , KC_F7 , KC_F6 , KC_F5 , KC_F4,
KC_VOLD, KC_ACL0 , KC_ACL1, KC_ACL2, KC_VOLU, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_F3,
KC_MUTE, KC_MPRV , KC_MPLY, KC_MNXT, KC_MUTE, KC_WH_R, KC_WH_U, KC_WH_D, KC_WH_L, KC_F2,
_______, _______ , _______, _______, _______, _______, _______, KC_BTN1, F(BASE), RESET , KC_F12 , KC_F1)
};
// I prefer this layer switching strategy to the TG and MO functions.
// so that I can get out of mouse mode just by tapping/holding my base layer FN key.
const uint16_t PROGMEM fn_actions[] = {
[BASE] = ACTION_LAYER_OFF(2, 1), // switch back to layer 0
[NUMS] = ACTION_LAYER_MOMENTARY(1), // to Fn overlay
[MOUS] = ACTION_LAYER_ON(2, 1) // switch to layer 2
};
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;
};

View File

@@ -0,0 +1,66 @@
// This is the personal keymap of Jeremy Cowgar (@jcowgar). It is written for the programmer.
#include "atreus.h"
#include "action_layer.h"
#include "keymap_colemak.h"
#define PREVENT_STUCK_MODIFIERS
// Each layer gets a name for readability, which is then used in the keymap matrix below.
#define ALPH 0
#define NUMS 1
#define CURS 2
#define SYMB 3
#define FKEY 4
// Some handy macros to keep the keymaps clean and easier to maintain
#define KM_SAVE LGUI(CM_S)
#define KM_CLSE LGUI(CM_W)
#define KM_OPEN LGUI(CM_O)
#define KM_COPY LGUI(KC_C)
#define KM_CUT LGUI(KC_X)
#define KM_PAST LGUI(KC_V)
#define KM_UNDO LGUI(KC_Z)
#define KM_REDO LGUI(LSFT(KC_Z))
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[ALPH] = {
{KC_Q, KC_W, KC_E, KC_R, KC_T, KC_TRNS, KC_Y, KC_U, KC_I, KC_O, KC_P},
{KC_A, LT(NUMS, KC_S), LT(FKEY, KC_D), KC_F, KC_G, KC_TRNS, KC_H, KC_J, LT(CURS, KC_K), LT(SYMB, 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_LCTL, KC_ESC, KC_NO, KC_LSFT, KC_SPC, KC_LGUI, KC_ENT, KC_RSFT, KC_NO, KC_ESC, KC_RCTL}
},
[NUMS] = {
{KC_TRNS, KC_TRNS, KC_TRNS, KC_ASTR, KC_SLSH, KC_TRNS, KC_TRNS, KC_7, KC_8, KC_9, KC_SLSH},
{KC_TRNS, KC_TRNS, KC_EQL, KC_PLUS, KC_MINS, KC_TRNS, KC_LPRN, KC_4, KC_5, KC_6, KC_ASTR},
{KC_TRNS, KC_TRNS, KC_DOT, KC_COMM, CM_SCLN, KC_TRNS, KC_RPRN, KC_1, KC_2, KC_3, KC_MINS},
{KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_0, KC_DOT, KC_EQL, KC_PLUS}
},
[CURS] = {
{KC_TRNS, KC_BSPC, KC_UP, KC_DELT, KC_PGUP, KC_TRNS, KC_TRNS, KM_SAVE, KC_TRNS, KM_OPEN, KC_TRNS},
{KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_TRNS, KM_UNDO, KC_LALT, KC_TRNS, KC_LGUI, KC_TRNS},
{KC_TRNS, KC_VOLD, KC_MUTE, KC_VOLU, KC_MPLY, KM_COPY, KM_REDO, KM_CLSE, KC_TRNS, KC_TRNS, KC_TRNS},
{KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TAB, KM_CUT, KM_PAST, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
},
[SYMB] = {
{KC_BSLS, KC_EXLM, KC_LABK, KC_RABK, CM_COLN, KC_TRNS, KC_UNDS, KC_DLR, KC_QUES, KC_TRNS, KC_PERC},
{KC_AT, KC_AMPR, KC_LPRN, KC_RPRN, CM_SCLN, KC_TRNS, KC_COMM, KC_DOT, KC_QUOT, KC_TRNS, KC_TILD},
{KC_HASH, KC_PIPE, KC_LCBR, KC_RCBR, KC_SLSH, KC_TRNS, KC_TRNS, KC_GRV, KC_DQT, KC_TRNS, KC_CIRC},
{KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
},
[FKEY] = {
{KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F9, KC_F10, KC_F11, KC_F12},
{KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F5, KC_F6, KC_F7, KC_F8},
{KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4},
{KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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)
{
switch(id) {}
return MACRO_NONE;
};

View File

@@ -0,0 +1,45 @@
Jeremy's Atreus Key Mapping
===========================
I am a programmer by trade that suffers from the beginning stages of RSI. As a programmer I use letters, symbols and cursor navigation most often. To prevent strange finger gymnastics, I wrote a script to rank which non-letter characters occurred in my primary source projects most often and then placed these characters in the easiest to reach locations, for me. I made heavy use of momentary layer toggling.
My layout is also geared toward a software based Colemak mapping. I would like it to be hardware, but I use my Laptop on the go frequently and thus my laptop keyboard. I have moved the keycaps to reflect the Colemak layout. My laptop is a MacBook Pro (2015).
## Main Layers
1. [Letters](http://www.keyboard-layout-editor.com/#/gists/6861cb9df09ce78efaddf8aa7471e3ac)
2. [Symbols](http://www.keyboard-layout-editor.com/#/gists/8956a18b508a78e93b9c38ec3fcccaa5)
3. [Navigation](http://www.keyboard-layout-editor.com/#/gists/6ed492b714a7f54eb1c5de09b87fd8c4)
4. [Numbers](http://www.keyboard-layout-editor.com/#/gists/399ceb5624e8388e48a3a5eacac8e973)
5. [Function Keys](http://www.keyboard-layout-editor.com/#/gists/7fd7dc24c7048316f3724b1893c64e89)
## Notes
### General
Some characters can be accessed multiple ways. This was done because you may be in a given layer, such as numbers, where when doing math, you may need quick access to the parentheses characters for grouping. This prevents some layer switching.
I own an ErgoDox and plan on porting this as a base layer, then using the extra keys the ErgoDox provides accordingly. My goal, though, is to be fully functional on this base setup and build everything into muscle memory.
### Symbol Layer
1. I placed characters that deal with an if statement close together, such as !, & and |.
2. All matching brace/bracket characters are together as well.
### Number Layer
1. Everything I did was a compromise when trying to mimic a ten-key. I did the best I could.
2. Operators are duplicated on the right and left. I do not find it comfortable to use my pinky much, so I tend to use my left hand for +, -, * and / but those were also placed on the right hand to mimic the ten-key.
3. Parentheses were added for typing on the calculator.
### Cursor Layer
1. It includes basic audio controls because they didn't really fit anywhere else
2. It contains basic file manipulation. I'm not sure that was a good idea. I do save all the time, but Cmd+S isn't exactly hard.
3. It contains the backspace and delete keys right on top of the left and right arrows.
4. Cmd and Opt keys are duplicated. This makes for very easy navigation, for example on a Mac, Opt+Left/Right moves word by word. It also backspaces or deletes word by word.
### Function Layer
1. Almost all other layers I saw grouped the F keys into a bunch of three. This only gives nine function keys in order if you attempt to stay as close to the home row as possible. I went with a group of four, which gives all twelve function keys to the right hand, one row below and above the home row.
2. I duplicated the Command and Option keys the same as on the cursor layer. This makes it dead easy to hit modified function keys such as Cmd+Opt+F5. It's also easy to toss in a Shift modifier in there with the right thumb since the bottom row is preserved.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 74 KiB

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