Compare commits

..

1059 Commits

Author SHA1 Message Date
732a115b32 Merge pull request #1344 from qmk/jackhumbert-patch-1
Re-enable mouse buttons from #1327
2017-05-29 15:17:38 -04:00
b6c60333e4 Re-enable mouse buttons 2017-05-29 13:21:38 -04:00
0c351fa98b no master needed on push maybe 2017-05-29 12:49:25 -04:00
bd39e91f78 Merge branch 'master' of https://github.com/qmk/qmk_firmware 2017-05-29 12:15:03 -04:00
44832127d7 push to git url 2017-05-29 12:14:49 -04:00
7eebdd4760 Jokrik's Clueboard layout (#1340) 2017-05-29 09:10:34 -07:00
1d6a18db99 Merge pull request #1343 from Maartenwut/patch-1
Added SEND_STRING(); to the documentation.
2017-05-29 11:58:08 -04:00
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
91c6113cba Added SEND_STRING(); to the documentation. 2017-05-29 17:53:39 +02:00
988941cc0a Merge branch 'master' of https://github.com/qmk/qmk_firmware 2017-05-29 11:37:33 -04:00
ee0135fb81 get rid of folders in tar 2017-05-29 11:37:20 -04:00
e179dbd9e6 Merge pull request #1341 from Dbroqua/patch-3
Update Differences-from-TMK.md
2017-05-29 10:55:32 -04:00
7041055ace Merge branch 'master' of https://github.com/qmk/qmk_firmware 2017-05-29 10:54:56 -04:00
ae6b803ad6 more than one en-file, and actually ignore docs 2017-05-29 10:54:46 -04:00
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
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
41fa638aa8 Adds prevent stuck modifiers to EZ default 2017-05-28 20:05:37 -04:00
71feac5717 ignore docs, fix tag/hex pushing 2017-05-28 16:16:56 -04:00
78aebe0631 Update windows 10 instructions 2017-05-28 22:35:45 +03:00
de0a058da7 Merge pull request #1336 from Dbroqua/patch-2
Update Differences-from-TMK.md
2017-05-28 14:47:57 -04:00
999b35c7f8 Create a symlink to qmk if requested 2017-05-28 21:38:14 +03:00
ec720ac1ea Add activate_wsl to .bashrc 2017-05-28 21:30:55 +03:00
fa4a492677 Fix symlink creation 2017-05-28 21:30:55 +03:00
3e4f2f5590 Use unzip instead of 7zip 2017-05-28 21:30:55 +03:00
3d3999d863 Actually install flip instead of just extracting 2017-05-28 21:30:55 +03:00
b8899b48b4 Make symlink to utils and export programmer variables 2017-05-28 21:30:55 +03:00
9c582fc797 Add install dependencies 2017-05-28 21:30:55 +03:00
477bd4b948 Add prompt for re-downloading the utils 2017-05-28 21:30:55 +03:00
c2096bb515 Add driver installation 2017-05-28 21:30:55 +03:00
aa26464480 Add checks for cloning to the right dir 2017-05-28 21:30:55 +03:00
28a4e90565 Download windows flashing utils and driver_installer 2017-05-28 21:30:55 +03:00
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
d0d81eecef Merge pull request #1334 from fredizzimo/fix_faq_lineending
Fix line endings in FAQ.md
2017-05-28 12:12:47 -04:00
623b1cd866 Fix line endings in FAQ.md 2017-05-28 12:28:02 +03:00
b8c1f25072 Updates book.json
Auto commit by GitBook Editor
2017-05-27 22:24:53 +00:00
931ad66ffa Updates book.json
Auto commit by GitBook Editor
2017-05-27 22:23:09 +00:00
2003cee609 Updates book.json
Auto commit by GitBook Editor
2017-05-27 22:21:58 +00:00
c3bdddb637 move book for gitbook 2017-05-27 18:20:46 -04:00
c95f08c439 Updates docs/book.json
Auto commit by GitBook Editor
2017-05-27 22:19:38 +00:00
7e84b0e3b3 move old doc to docs 2017-05-27 18:14:21 -04:00
704794bae3 subtree docs 2017-05-27 18:09:52 -04:00
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
bb2a8c3611 Updates book.json
Auto commit by GitBook Editor
2017-05-27 14:56:13 +00:00
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
d24da945d1 Merge pull request #1319 from Johannes-Larsson/master
Add planck/johannes layout
2017-05-26 18:33:25 -04:00
453877422b Merge pull request #1327 from Dbroqua/master
Added Integration of IBM Trackpoint
2017-05-26 18:32:43 -04:00
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
492115a611 Merge pull request #4 from Dbroqua/master
Update Modding-your-keyboard.md
2017-05-26 18:30:41 -04:00
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
6d12588cdf Merge pull request #1 from Dbroqua/patch-1
Update Modding-your-keyboard.md
2017-05-26 22:16:09 +02:00
6b994ecd82 - Added schematic for Trackpoint demonstration 2017-05-26 21:27:11 +02:00
81e85a1a4e - Added integration of IBM Trackpoint 2017-05-26 20:35:31 +02:00
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
0a4a966c66 Merge pull request #22 from qmk/master
Merge from QMK
2017-05-26 15:57:08 +02:00
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
a9ef02105d Fix typo in Macro.md in dynamic macro section. 2017-05-24 20:13:03 -07:00
6d08de5c67 readme, media keys fix 2017-05-24 21:35:31 +02:00
e4f1b238b3 revert changes to config.h 2017-05-24 21:24:13 +02:00
7a4ec3bd92 Merge pull request #1316 from nikchi/master
FrostyFlake Keymap
2017-05-24 13:59:30 -04:00
690957cdbd media keys and stuff 2017-05-24 19:00:56 +02:00
006ba4bf36 moved unicodemap rules to localer make 2017-05-24 12:36:36 -04:00
b9cf386b21 Merge branch 'master' of https://github.com/qmk/qmk_firmware 2017-05-24 17:58:11 +02:00
ad420e7205 Merge pull request #1317 from qmk/hf/faster_mouse
tweaks default mouse speed constants
2017-05-24 05:09:29 -07:00
a965e5b735 tweaks default mouse speed constants 2017-05-24 07:56:41 -04:00
ef1714f443 more emoji function comments 2017-05-24 00:35:04 -04:00
6536b1ce2a Tap dancing emoji support 😩😩 2017-05-23 23:52:48 -04:00
e90a00c88c then some code blocks 2017-05-23 23:09:19 -04:00
870aaa0a7e pipes without backtics 2017-05-23 23:06:35 -04:00
be4ece0f3e grrr 2017-05-23 23:05:19 -04:00
9359abf33e surrounds stuff with backticks 2017-05-23 23:03:30 -04:00
260ddd3290 quick table tweak 2017-05-23 22:58:35 -04:00
b3eeb9d84a removed s 2017-05-23 18:47:06 -04:00
0e174fcb48 Merge branch 'master' of https://github.com/nikchi/qmk_firmware 2017-05-23 13:13:23 -04:00
3ed2147a88 preonic map 2017-05-23 13:13:20 -04:00
ec86fac6ee Merge pull request #1 from qmk/master
pull new to mine
2017-05-23 13:08:44 -04:00
4f1007952b merge 2017-05-22 15:27:57 +02:00
53b094934f matrix layout 2017-05-22 15:25:53 +02:00
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
8cd9d26246 Update the dynamic macro docs according to the recent changes
See qmk/qmk_firmware#1275.
2017-05-21 14:27:29 +02:00
d2ad5afaa6 Merge pull request #1 from Xyverz/master
Adding punctuation for clarity.
2017-05-20 21:44:00 -04:00
3588bd694e Adding punctuation for clarity. 2017-05-20 18:39:59 -07:00
68b8f37853 favicon 2017-05-20 13:30:27 -04:00
33f886ad74 favicon 2017-05-20 13:26:08 -04:00
0cd8eb02c7 favicon 2017-05-20 13:20:10 -04:00
c7e9e643fa Update readme.md 2017-05-20 12:38:30 -04:00
d380ed1f75 Update readme.md 2017-05-20 12:37:31 -04:00
684a02ae3f Update SUMMARY.md 2017-05-20 12:30:24 -04:00
b3bff6404c Update SUMMARY.md 2017-05-20 12:29:45 -04:00
046c5d332f Update SUMMARY.md 2017-05-20 12:27:07 -04:00
5e28f88707 Update book.json 2017-05-20 12:07:31 -04:00
d678899c83 Update book.json 2017-05-20 12:04:03 -04:00
2df879cbe3 Update book.json 2017-05-20 12:02:55 -04:00
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 a74e69e9fa889113ee31fbc8dc7e6848fdb07576.
2017-05-19 17:24:47 -07:00
85df687348 m10a lowercase 2017-05-18 18:55:07 -04:00
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
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
8da442f411 update travis script 2017-05-17 20:27:07 -04:00
a74e69e9fa Increase TAPPING_TERM for the Clueboard 2017-05-16 13:09:23 -07:00
3c5b915078 Make KC_GRV accessible 2017-05-16 13:02:22 -07:00
fcef83a5d0 Created a dvorak keymap for Swedish developers using Visual Studio 2017-05-16 15:15:42 +02:00
e5ed23c0b3 summary test 2017-05-15 22:45:20 -04:00
2513912975 Updates book.json
Auto commit by GitBook Editor
2017-05-16 02:39:49 +00:00
52562eaaea Updates book.json
Auto commit by GitBook Editor
2017-05-16 02:38:44 +00:00
3a7e0dd2f6 Updates book.json
Auto commit by GitBook Editor
2017-05-16 02:36:31 +00:00
e0689c000b Updates book.json
Auto commit by GitBook Editor
2017-05-16 02:35:00 +00:00
997a847f8c update links 2017-05-15 22:29:17 -04:00
60daffbe5d Update SUMMARY.md 2017-05-15 22:00:22 -04:00
e5b0095e6c Update SUMMARY.md 2017-05-15 22:00:14 -04:00
819f0998bd Updates SUMMARY.md
Auto commit by GitBook Editor
2017-05-16 01:50:44 +00:00
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
5d965a8d41 emojis and reorg 2017-05-15 02:19:50 -04:00
eb660ef218 emoji support but 2017-05-15 01:52:45 -04:00
b2b72058e5 change readme 2017-05-15 00:12:04 -04:00
888026ae73 nikchi flake 2017-05-15 00:10:25 -04:00
25c6ca750f added comments and made function name clearer 2017-05-14 15:36:44 -07:00
84395e8a04 whoops 2017-05-14 09:36:50 -07:00
b9b2244b82 faster, less bits :) 2017-05-14 08:01:01 -07:00
63d9698d5c faster and less bits... again 2017-05-13 19:07:05 -07:00
37f6f92765 faster and less bits 2017-05-13 18:24:43 -07:00
7b7e285a98 should be using matrix_row_t 2017-05-13 17:22:38 -07:00
acd3e97b83 a bit smaller 2017-05-13 17:01:27 -07:00
99877cdff3 a bit smaller 2017-05-13 16:57:23 -07:00
b9895771ed improvements 2017-05-13 13:19:28 -07:00
95ac79cb67 Updates SUMMARY.md
Auto commit by GitBook Editor
2017-05-13 20:17:26 +00:00
694db4130e Updates SUMMARY.md
Auto commit by GitBook Editor
2017-05-13 20:17:21 +00:00
7f4cf32af9 Updates book.json
Auto commit by GitBook Editor
2017-05-13 20:10:38 +00:00
e7da52c7de Updates book.json
Auto commit by GitBook Editor
2017-05-13 20:09:06 +00:00
43d1e05b31 Updates Home.md
Auto commit by GitBook Editor
2017-05-13 20:04:39 +00:00
05a6449d2d Updates readme.md
Auto commit by GitBook Editor
2017-05-13 18:25:08 +00:00
849ed5a6a0 anti-ghost improvement for older keyboards with empty spots in matrix 2017-05-13 08:51:20 -07:00
4fe58aa6ec Merge pull request #1 from qmk/master
pull
2017-05-13 08:37:25 -07:00
04069c94cc Merge pull request #1297 from khogeland/satan-colemak
Colemak layout for GH60 Satan
2017-05-12 16:24:51 -04:00
a82e752f64 Merge pull request #1291 from adzenith/persistent
Fix spelling of "persistent"
2017-05-12 16:24:29 -04:00
b767719fc8 Colemak layout GH60 Satan 2017-05-12 12:03:09 -07:00
8ddbf7f59f Fix spelling of "persistent"
Fixes #1201.
2017-05-11 15:32:35 -04:00
b412bb8d8c Merge pull request #1283 from TerryMathews/master
Establish support for Bathroom Epiphanies Tiger Lily controller
2017-05-11 14:34:02 -04:00
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
de2c51b7ca Merge pull request #1290 from shieldsd/master
Add new features to dshields keymap.
2017-05-11 14:31:11 -04:00
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
bd2c0b9648 Call led_set for layer action events to update LEDs on layer changes 2017-05-10 19:26:39 +02:00
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
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
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
b11a5be62c Merge pull request #1278 from shieldsd/master
Add new keymap for dshields.
2017-05-07 20:18:23 -04:00
0b050f6c33 Merge pull request #1280 from tobsn/patch-1
lowercase .jpg
2017-05-07 20:17:47 -04:00
05b356dea7 Merge pull request #1282 from coderkun/coderkun_neo2
Merge changes for coderkun’s Neo2 layout
2017-05-07 20:16:30 -04:00
7a7b57ffb1 Merge pull request #1284 from bigtunaIO/master
[Bigtuna.IO] Updating Miuni32 Layouts
2017-05-07 20:16:03 -04:00
84a358845b Fix compile error 2017-05-07 18:00:06 -04:00
22738df5f5 Merge branch 'dev' 2017-05-07 14:44:28 -07:00
d099266853 [Miuni32] Rm accidentally committed file 2017-05-07 14:42:21 -07:00
ba90cf422c Merge remote-tracking branch 'bigtunaio/layouts/adam-lee' into dev 2017-05-07 14:40:37 -07:00
f2fcab96a8 Merge remote-tracking branch 'upstream/master' 2017-05-07 14:36:10 -07:00
29df2be2a9 Merge remote-tracking branch 'upstream/master' into dev 2017-05-07 14:35:43 -07:00
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
d28d390ad6 Update README for keymap “coderkun_neo2” 2017-05-06 12:25:24 +02:00
49046f621b Merge tag '0.5.43' into coderkun_neo2 2017-05-06 12:19:45 +02:00
9e7448ea89 Fix F-keys on right hand to start on first key 2017-05-06 12:17:51 +02:00
b2083e21a2 lowercase .jpg I think
i guess that fixes the image link - currently its broken
2017-05-05 23:55:06 +02:00
cb60fe393f Add new keymap for dshields. 2017-05-05 14:41:13 +01:00
a1e156a3d2 dynamic_macro.h: Do not use backlight_toggle if backlight is disabled
Fixes #1199.
2017-05-05 00:11:24 +02:00
10a7cd7e5a dynamic_macro.h: Add debug logs 2017-05-04 23:57:22 +02:00
8e94c9b4cb dynamic_macro.h: Make the documentation more clear 2017-05-04 22:39:02 +02:00
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
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
425f0a768b revise HHKB bootloader_size to 4096 such that sw reset works (#1274) 2017-05-04 10:27:35 -07:00
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
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
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
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
7f3b1232c4 Use KC_KEYMAP for default-keymap
and remove obsolete explicit line-separator "\"
2017-05-03 22:13:46 +02:00
38b076d22d Add KEYMAP without KC_##-prefix
and rename old variant to KEYMAP_KC
2017-05-03 22:01:02 +02:00
c5cef025ec Merge pull request #1269 from ryanmaclean/patch-6
Cleaning Up Dockerfile Layers Per Official Docs
2017-05-01 12:15:27 -04:00
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
26b51383b2 Merge pull request #1266 from ryanmaclean/patch-5
Adding AMJ60 ANSI Maximized Layout
2017-04-30 16:57:14 -04:00
29026ec023 Merge pull request #1268 from priyadi/promethium
Promethium keymap update
2017-04-30 11:18:54 -04:00
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
d1d2b87f97 fixes s60_x keyboard 2017-04-30 10:48:17 -04:00
43aa59c703 Merge pull request #1263 from Dbroqua/master
Fixed bugs for S60-X RGB version
2017-04-30 10:27:40 -04:00
343f8d368e Simple RGB backlight theming 2017-04-30 18:04:58 +07:00
2f28652dcc Syntax fix 2017-04-30 18:03:03 +07:00
c8ac556e63 Update vifon keymap to use DYN_REC_STOP 2017-04-30 19:48:07 +10:00
1201d4910f Add cinaeco hhkb keymap 2017-04-30 19:30:39 +10:00
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
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
9122b34a47 Adding Maximized Layout
Both split shifts and HHKB split backspace.
2017-04-29 16:16:21 -07:00
18b4d24cc3 Add possibility to override the command to execute when flashing 2017-04-29 23:45:27 +03:00
7180e195e8 Merge branch 'master' of https://github.com/Dbroqua/qmk_firmware 2017-04-29 15:04:01 +02:00
584b804ee3 Merge pull request #21 from qmk/master
Merge from QMK
2017-04-29 15:03:52 +02:00
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
d8f1949029 Promethium update: demo LED, fix PS2 delay, fix LED ordering, change click frequency 2017-04-29 13:21:27 +07:00
cdef372f57 Document the MAGIC keys 2017-04-28 11:56:03 -07:00
425e7348d8 Modified ht_156 keymap 2017-04-27 23:12:43 -07:00
26bbfd7812 Merge pull request #1259 from laelath/master
Added a proper README to the lae3 keymap
2017-04-26 19:22:36 -04:00
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
196740a0bb Expanded lae3 keymap readme 2017-04-26 13:56:01 -07:00
5a809ac178 Merge pull request #1258 from smt/smt/hhkb
Add smt keymap for HHKB
2017-04-26 15:30:36 -04:00
7bd4559b4b Merge pull request #1231 from Dbroqua/master
S60-X RGB support
2017-04-25 14:09:41 -04:00
9fa7a788d3 Merge pull request #1253 from laelath/master
Added lae3 keymap
2017-04-25 14:08:52 -04:00
627dd8a73c Merge pull request #1255 from ryanmaclean/patch-4
Initial Ortholinear Commit for AMJPad
2017-04-25 14:08:16 -04:00
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
d6386b108b Add RAMA x Machine Industries M10A to the keyboards directory 2017-04-25 19:00:44 +01:00
4cc41de50b Add smt keymap for HHKB 2017-04-24 11:16:14 -04:00
e2a5dfdba6 Switched Alt and GUI key places 2017-04-23 19:38:40 -07:00
d27ff5ccf6 Adding Right Layout 2017-04-22 22:34:14 -07:00
24994046d6 Update keymap.c 2017-04-22 21:26:47 -07:00
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
7f3224b117 Added lae3 keymap 2017-04-22 15:15:17 -07:00
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
a793e094bc Created Porting Your Keyboard to QMK (ARM and other ChibiOS CPUs) (markdown) 2017-04-21 22:24:02 -07:00
973e91078b Tweak the shift_fn keymap so it works 2017-04-21 21:46:01 -07:00
215dd126d0 - Moved S60-X RGB in sub project for S60-X 2017-04-19 22:12:23 +02:00
460b5f8751 Merge pull request #1246 from reversebias/master
Initial support for the Mitosis Keyboard
2017-04-19 08:43:28 -04:00
43fd889d7e Update readme.md 2017-04-19 22:39:44 +10:00
95242fe0f1 Merge pull request #1245 from fredizzimo/fix_lcd_pin_configuration
Fix LCD SS pin configuration
2017-04-19 07:50:03 -04:00
4760b26bec Merge pull request #1244 from ryanmaclean/patch-3
Adding Maximized Keymap
2017-04-19 07:49:46 -04:00
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
3c3be98a06 Delete temp 2017-04-19 20:15:44 +10:00
e27c50669a Create temp 2017-04-19 20:12:50 +10:00
f9d226ca50 tune clicks 2017-04-19 12:35:05 +07:00
3c7db55ec5 Merge remote-tracking branch 'upstream/master' into promethium 2017-04-19 12:04:15 +07:00
ce0efa6b9a Fix LED sequence; bug fixes 2017-04-19 12:03:48 +07:00
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
34130d56f1 Adding Sample Max Layout 2017-04-18 21:54:58 -07:00
0a8df2c5e3 Adding Maximized Keymap
For use with grid layout pads.
2017-04-18 21:53:10 -07:00
b844fe7efd LT doesn't work with tri_layer. Removed it from this keymap. 2017-04-18 20:36:26 -07:00
3a00aafd39 swapped RAISE with LOWER in layer-tapping macros. 2017-04-18 18:15:46 -07:00
fecb932945 - Fixed bug in keymap for s60-X RGB 2017-04-18 22:26:32 +02:00
be0afd24bf Merge pull request #1239 from priyadi/promethium
Keymap updates
2017-04-18 16:17:27 -04:00
d926ba22a2 Merge pull request #1238 from priyadi/fauxclicky_fix
Faux clicky bug fixes
2017-04-18 16:16:35 -04:00
7a16a30e6a Merge pull request #1236 from Xyverz/master
Revamp TV44 keymap.
2017-04-18 16:08:16 -04:00
a25d4a90c3 Merge pull request #1235 from siroken3/siroken3
Siroken3
2017-04-18 16:06:27 -04:00
5bc0c4a011 Fix Planck compatibility 2017-04-19 02:55:19 +07:00
3fa0b66289 Keymap updates and some adjustment for latest version of QMK 2017-04-19 02:52:57 +07:00
ffa4c72a89 Faux clicky bug fixes 2017-04-19 01:40:16 +07:00
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
41d45afd2a Fixed a weird diff mishap. 2017-04-17 21:54:02 -07:00
e11cb44926 Merge branch 'tv44_revamp' 2017-04-17 20:20:27 -07:00
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
ae8ac581c0 Merge pull request #1234 from whitef0x0/patch-1
Fixed dvorak layout for Atreus50
2017-04-17 19:02:24 -04:00
acd63bc03c Fixed dvorak layout for Atreus50 2017-04-17 12:05:47 -07:00
f637ab69c2 Merge pull request #1228 from fitzsim/fix-keymap-yoruian-macro
Fix KEYMAP_YORUIAN macro
2017-04-17 13:21:03 -04:00
a343188dcf macros to make keymap reading easier. 2017-04-16 21:52:49 -07:00
a22286e834 Added keymap to TV44 Revamp 2017-04-16 21:09:23 -07:00
4634e3802c Added simple macros to test. 2017-04-16 17:39:04 -07:00
c4f93e237e Added media layer for ht_156 2017-04-16 16:08:31 -07:00
f9aa75fe95 Added ht_156 keymap files 2017-04-16 15:31:05 -07:00
9d4050586d Merge branch 'master' into layouts/adam-lee 2017-04-16 15:20:31 -07:00
857600aa4b Merge branch 'master' into dev 2017-04-16 15:19:20 -07:00
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
22afddb8e8 Replace RALT with RSFT 2017-04-16 14:50:25 -07:00
3bfe4cdb4f Added END and other keymap file formatting. 2017-04-16 14:19:51 -07:00
1bab72383c Added DEL and F1 to F12 keys 2017-04-16 14:10:29 -07:00
ccabf70aeb Added keymap commets to default layout. 2017-04-16 13:40:03 -07:00
6c30fd04d3 Updated Keycodes (markdown) 2017-04-15 13:17:41 -07:00
b133b74897 - Added S-60-X RGB directory (based on qmk.sized.io work) 2017-04-15 16:34:33 +02:00
a9f4596062 Add TAB, N, LSFT on Layer 2 2017-04-14 00:02:25 -07:00
f076f16e13 Add KC_T on Layer 2 2017-04-13 23:50:57 -07:00
4810a4a812 Add LCTL + L on Layer 2 2017-04-13 23:47:50 -07:00
bc7b1843ba Fix KEYMAP_YORUIAN macro
Fix the ordering of the arguments to the KEYMAP macro.
2017-04-14 02:06:58 -04:00
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
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
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
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
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
f90321bdcb Update keymap - hopefully more usable 2017-04-13 09:25:05 -07:00
d68294615f Add make option for allowing warnings 2017-04-13 16:12:55 +03:00
d8e2ff2964 Fix process_unicode_common.c being included twice 2017-04-13 16:03:01 +03:00
07fc34e962 Fix warnings when ACTION_ONESHOT is disabled 2017-04-13 16:00:29 +03:00
abda6ff7bb Include host.h from suspend.c 2017-04-13 16:00:29 +03:00
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
109ae2f1e8 Fix warnings in process_printer 2017-04-13 16:00:29 +03:00
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
df30d18458 Fix warnings in kitten_paw/ickerwx keymap 2017-04-13 16:00:29 +03:00
737c1fe641 Make MOUSEKEY_MOVE_MAX and MOUSEKEY_WHEEL_MAX configurable
Kitten_paw/ickerwx was doing that
2017-04-13 16:00:29 +03:00
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
738b8d2b9c Add SKIP_VERSION option to speed up compilation 2017-04-13 16:00:29 +03:00
e950d4e12f Fix frosty_flake warning when print is disabled 2017-04-13 16:00:29 +03:00
2d1528c69f Fix keymap yoruian on Infinity 2017-04-13 16:00:29 +03:00
f7b59427fa Fix name collision between ChibiOS and keymap_german 2017-04-13 16:00:29 +03:00
12159e782c Fix overflow warning in ordinary keymap 2017-04-13 16:00:29 +03:00
db6d7207b5 Fix overflow warnings in dvorak_programmer 2017-04-13 16:00:29 +03:00
6535804776 Disable array bounds warning in keymap_function_id_to_action 2017-04-13 16:00:29 +03:00
a4ef86034c Fix undefined eeprom warnings in unicode processing 2017-04-13 16:00:29 +03:00
f39e9928eb Enable warnings as errors 2017-04-13 16:00:29 +03:00
224fc8a20f Add makefile option to break on errors 2017-04-13 16:00:29 +03:00
a43cb6c0af Merge pull request #20 from qmk/master
Merge from QMK
2017-04-13 13:26:02 +02:00
dddbcc2af3 Replace double quote with comma 2017-04-12 22:11:08 -07:00
592ff53e41 Enable RGB Animation 2017-04-12 21:19:00 -07:00
73625a603a Merge branch 'master' into miuni32-OA 2017-04-12 20:58:36 -07:00
835adb7848 colemak layout maybe 2017-04-12 23:11:51 +02:00
d3301c0f8b Merge pull request #1220 from joedevivo/master
mimic atreus firmware defaults
2017-04-12 15:42:46 -04:00
456570efa4 Merge pull request #1212 from Xyverz/master
atreus keymap overhaul
2017-04-12 12:46:08 -04:00
30ad505dd0 Merge pull request #1213 from nstickney/master
ErgoDox Familiar layout
2017-04-12 12:45:45 -04:00
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
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
e5f610b70e Merge pull request #1217 from fredizzimo/ergodox_default_visualizer
Enable Ergodox Infinity LCD visualization
2017-04-12 12:43:46 -04:00
446b34edec Fixed position of BSLS and BSPC
They were in the incorrect positions before.
2017-04-12 12:18:38 +02:00
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
1d5567a3a9 Fix code formatting in build_keyboard.mk 2017-04-12 09:52:40 +03:00
f9c62aa363 Link to ChibiOS 2017-04-11 06:56:12 -07:00
1b0f5e4803 Updated Compatible Microcontrollers (markdown) 2017-04-11 06:55:39 -07:00
c876bb8748 Adding notes about ARM processors 2017-04-11 06:55:24 -07:00
dc96fa24e4 mimic atreus firmware defaults 2017-04-10 17:19:27 -07:00
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
c5d2b7ff16 Rename led test to led_keyframes and move animation to Ergodox 2017-04-09 18:34:59 +03:00
306353bf06 Create a file for shared Ergodox Infinity animations 2017-04-09 18:34:59 +03:00
c6ca996f4e Combine startup and resume animations 2017-04-09 18:34:59 +03:00
ed1710589f Fix suspend not disabling backlight 2017-04-09 18:34:59 +03:00
3074269c4a Move the logo drawing keyframe to lcd_keyframes 2017-04-09 18:34:59 +03:00
df67169d42 Move LCD logo to visualizer resources 2017-04-09 18:34:59 +03:00
3eb8785e87 Add automatic flush for the LCD screen 2017-04-09 18:34:59 +03:00
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
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
b7041d06ae Move common visualizer keyframes into visualizer_keyframes.h 2017-04-09 18:34:59 +03:00
64d63ab422 Remove the need to manually enable the visualizer 2017-04-09 18:34:59 +03:00
1e7585e767 Separated backlight and LCD disable/enable
Also moved them to correct places
2017-04-09 18:34:59 +03:00
5ba228b684 Move LCD backlight keyframes to its own file 2017-04-09 18:34:59 +03:00
5815c5d317 Move LCD keyframes to its own file 2017-04-09 18:34:59 +03:00
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
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
fa6da78ff3 Simple layer display on Infinity Ergodox default layout 2017-04-09 18:34:59 +03:00
65e8127c91 Add visualizer for Ergodox default 2017-04-09 18:34:59 +03:00
5fbaf31dc2 Brightness for Ergodox Infinity emulated LEDs 2017-04-09 18:34:59 +03:00
39385144e7 Emulate Ergodox EZ leds by LCD colors 2017-04-09 18:34:59 +03:00
9a4ce28683 Display layer bitmap and keyboard led states on the LCD 2017-04-09 18:34:59 +03:00
951b6f33a0 CIE 1931 for the LCD backlight 2017-04-09 18:34:59 +03:00
f113f95440 Move CIE1931 and breathing tables to its own file 2017-04-09 18:34:59 +03:00
bc97413bf7 Disable LEDs on Infinity Ergodox 2017-04-09 18:34:59 +03:00
e6f7a8a47a Display QMK logo at startup of Infinity Ergodox 2017-04-09 18:34:59 +03:00
a8f5897b97 Add support for blitting to the Infinity LCD 2017-04-09 18:34:59 +03:00
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
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
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
f5c8941652 UGFX is compiled once per keyboard instead of keymap 2017-04-09 18:34:59 +03:00
bb86be1f1f Remove unneeded makefile include 2017-04-09 18:34:59 +03:00
aee9b10e92 Add a keyboard specific visualizer 2017-04-09 18:34:59 +03:00
a875299d9a Added breathing macros and removed mappings to unused layouts 2017-04-09 02:02:40 -04:00
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
3899bec4b6 Merge pull request #1 from qmk/master
Catchup
2017-04-08 00:30:54 -04:00
9237b95ebe More missed keycodes; added PSCR, SLCK, and PAUS to ADJUST layer. 2017-04-07 19:42:05 -07:00
6b0842760b Corrected a missed typo in the readme. 2017-04-07 19:23:27 -07:00
bcf70c0203 ErgoDox Familiar layout v1 2017-04-07 16:04:43 -05:00
3607522c12 More tweaks to keymap and readme. 2017-04-06 22:26:13 -07:00
303bc6999e Merge remote-tracking branch 'upstream/master' 2017-04-06 22:07:34 -07:00
8813365ec5 Added readme 2017-04-06 22:03:17 -07:00
3a5f9faca9 Reworked Atreus keymap, added README 2017-04-06 22:02:38 -07:00
7e38541124 Merge remote-tracking branch 'upstream/master' 2017-04-06 13:52:53 -05:00
1054d5554a Updated Custom Quantum Functions (markdown) 2017-04-04 23:14:40 -07:00
e77a5e1751 Updated Custom Quantum Functions (markdown) 2017-04-04 23:14:27 -07:00
154305ce1b Fix formatting in BUILD_GUIDE.md (#1208) 2017-04-04 22:39:28 -07:00
1ca879687c Updated Custom Quantum Functions (markdown) 2017-04-04 22:35:21 -07:00
32e55f9182 Updated Custom Quantum Functions (markdown) 2017-04-04 22:33:36 -07:00
34836a16ed Updated Custom Quantum Functions (markdown) 2017-04-04 22:33:12 -07:00
b65282f69f Updated Custom Quantum Functions (markdown) 2017-04-04 22:23:01 -07:00
36757de1a7 Updated Custom Quantum Functions (markdown) 2017-04-04 22:16:16 -07:00
891d17f028 Updated Custom Quantum Functions (markdown) 2017-04-04 22:15:41 -07:00
4f48dd7c83 Created Custom Quantum Functions (markdown) 2017-04-04 22:15:17 -07:00
0e7a2a77de Updated Becoming a QMK Collaborator (markdown) 2017-04-04 21:42:08 -04:00
b096b57b0b Created Becoming a QMK Collaborator (markdown) 2017-04-04 21:21:27 -04:00
54f69d02d5 Updated _Sidebar (markdown) 2017-04-04 20:00:34 -04:00
78cf15384e Created Adding features to QMK (markdown) 2017-04-04 20:00:06 -04:00
8b218857ed Revert 923d32a0eff175fac8d67574456ad9e1bd2941eb...f39bad2a7dd5d57e4a80dd15dec21826ef7a2a67 on Key Functions 2017-04-04 19:42:58 -04:00
20d69e2ad4 clean-up keycode stuff 2017-04-04 19:42:10 -04:00
46179fbb7b split off tmk differences into own page 2017-04-04 19:32:33 -04:00
c0a8953405 Created Differences from TMK (markdown) 2017-04-04 19:30:13 -04:00
a07b83fe8e Updated Home (markdown) 2017-04-04 19:25:24 -04:00
816ef19f41 Fixed my wording 2017-04-04 15:28:57 -04:00
2e78c19054 Added note about homebrew related installation times 2017-04-04 15:26:31 -04:00
ffffd1b6c1 Merge pull request #1207 from bigtunaIO/master
Add Bigtuna.io Miuni32
2017-04-04 13:41:50 -04:00
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
236826e7c1 Merge branch 'miuni32-OA' 2017-04-03 20:36:13 -07:00
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
d75a44a02b Merge pull request #1206 from Dan-Saunders/patch-2
Create twolayer.c
2017-04-03 21:13:29 -04:00
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
27aa185222 Merge branch 'master' into master 2017-04-03 21:06:40 -04:00
bee9183e7f Merge remote-tracking branch 'upstream/master' 2017-04-03 16:59:27 -05:00
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
3ac9259742 Merge pull request #1204 from nooges/lets-split-fixes
Let's split fixes
2017-04-03 16:17:55 -04:00
fbd9d04559 Include use of either TRS or TRRS 2017-04-03 16:16:46 -04:00
13c882a1fb disables space cadet rollover 2017-04-03 15:11:42 -04:00
ed9c18e866 Remove flip-half from keymap 2017-04-03 14:00:33 -04:00
133ed52466 Update Let’s Split readme 2017-04-03 13:24:20 -04:00
e3aeab356a Move SSD1306 function declarations to header file 2017-04-03 13:24:20 -04:00
d90ac76295 Move defines for RGB to after the config.h include 2017-04-03 13:24:20 -04:00
563961328b Rename COMPACT_KEYMAP to KC_KEYMAP and move to lets_split.h 2017-04-03 13:24:20 -04:00
d0cfaba6d2 Revise KEYMAP macro to make left and right halves more clear 2017-04-03 13:24:11 -04:00
4e51c1e3ca Update ssd1306.c 2017-04-03 13:17:41 -04:00
de52bd5d89 quick fix for space cadet shift 2017-04-03 12:42:58 -04:00
48f4c5997b Move defines for RGB to after the config.h include 2017-04-03 12:06:28 -04:00
344ebbac43 Revert removal of avrdude make option 2017-04-03 11:32:54 -04:00
da53f3a529 Merge pull request #1194 from tong92/master
Adds tong92's keymap to tv44
2017-04-02 22:30:11 -04:00
8b3fa01667 Merge pull request #1195 from fudanchii/kbod
Handwired 60% keyboard with 8x8 matrix
2017-04-02 22:29:54 -04:00
ef4a7a0aa0 Merge pull request #1196 from Dbroqua/master
GH60 - MX HHKB with 7U spacebar
2017-04-02 22:29:24 -04:00
1d8e3da233 Merge pull request #1197 from Xyverz/master
Revisions to Xyverz's keymaps
2017-04-02 22:29:07 -04:00
e2e8b7b799 Merge pull request #1198 from iamschaefer/patch-1
Update readme.md
2017-04-02 22:28:34 -04:00
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
c034b61b1a Merge remote-tracking branch 'upstream/master' 2017-04-02 14:49:39 -07:00
7873046479 removed my handwired boards to a new branch. 2017-04-02 14:48:33 -07:00
3e41cde9f9 Merge pull request #19 from qmk/master
Merge from qmk
2017-04-02 23:29:12 +02:00
e7347ff0de Merge remote-tracking branch 'origin/master' 2017-04-02 23:27:57 +02:00
9e72b7e7e9 - Added MX HHKB like for gh60 with 7u space bar 2017-04-02 23:25:26 +02:00
0f7a51cef5 Add information about trackpoint 2017-04-02 22:13:05 +07:00
649d08742a Use tap-toggle to move between layers.
- Add PDOT key
2017-04-02 18:27:28 +07:00
15ddaa7f19 Fix layer stuck, and add numpad support 2017-04-02 18:27:28 +07:00
f5d78c739d Forgot semicolon, and add reference link 2017-04-02 18:27:28 +07:00
10105f645a Add README 2017-04-02 18:27:28 +07:00
c9dd11d5ab Enable alt-F4 without [Fn]
- Add led indicator when keymap not on base layer \o/
2017-04-02 18:27:28 +07:00
af7430b896 Add capslock led, and audio buttons
- Also change layer switch to momentary
2017-04-02 18:27:28 +07:00
7614c6b7a7 Remove lead keys, fix some typos, rearrange layers 2017-04-02 18:27:28 +07:00
8b206e1e75 Add initial keymap
*crossfingers*
2017-04-02 18:27:28 +07:00
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
049f906b5e Fix keymap “coderkun_neo” to use LALT instead of RALT 2017-04-01 12:17:41 +02:00
021edb6ec6 Add several Unicode symbols to keymap “coderkun_neo2” 2017-04-01 12:06:27 +02:00
c74f47555c Add keymap diagrams to readme of keymap “coderkun_neo2” 2017-04-01 11:15:20 +02:00
605c4129cc Merge branch 'master' into coderkun_neo2 2017-04-01 10:56:29 +02:00
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
ec35fea264 Merge pull request #1190 from osamuaoki/master
Fix typo
2017-03-31 18:28:14 -04:00
2b4efaba53 Merge pull request #1189 from Zay950/to_push
Unicode input_mode presistance
2017-03-31 18:27:44 -04:00
caab4d7e45 Fix typo 2017-04-01 01:39:00 +09:00
d1e66e2e07 Worked around some new Makefile issues. 2017-03-30 20:10:34 -07:00
7e54332890 Pulling and pushing troubles 2017-03-30 19:15:43 -07:00
b9225a28f2 changed hotkey cluster to accomodate awkward software... again 2017-03-30 19:08:15 -07:00
200ae0c519 changed hotkey cluster to accomodate awkward software 2017-03-30 19:08:15 -07:00
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
ccbdf90f02 Update to match QMK keymap 2017-03-30 19:08:15 -07:00
3a1ee48cda Typo fix 2017-03-30 19:08:15 -07:00
d029e23260 Updated Home (markdown) 2017-03-31 00:39:20 +09:00
f39bad2a7d Updated Key Functions (markdown) 2017-03-31 00:35:50 +09:00
46977da417 Updated Home (markdown) 2017-03-31 00:31:28 +09:00
1a675efc4f Updated Keycodes (markdown) 2017-03-31 00:25:12 +09:00
3627a50e63 Updated Home (markdown) 2017-03-31 00:04:21 +09:00
97d6184ed0 Updated Keymap (markdown) 2017-03-30 23:57:59 +09:00
5fb058eb34 Updated Home (markdown) 2017-03-30 23:49:07 +09:00
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
3f3f208113 changed hotkey cluster to accomodate awkward software... again 2017-03-30 14:20:18 +01:00
32c511c918 Rename back to right name 2017-03-30 21:51:37 +09:00
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
d359b55520 Merge pull request #1185 from exiva/rn42_bluetooth
Add RN42 Bluetooth module support
2017-03-30 08:46:38 -04:00
338edcabd7 Merge pull request #1184 from osamuaoki/master
Update keymap.md to QMK
2017-03-30 08:45:56 -04:00
d145a1192f changed hotkey cluster to accomodate awkward software 2017-03-30 13:22:16 +01:00
923d32a0ef Updated Key Functions (markdown) 2017-03-30 09:14:22 +03:00
571f39da66 Tidied up keymaps, Makefiles that actually work, Clueboard make v1.0 2017-03-29 22:32:39 -07:00
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
2366ebfbbd Merge branch 'master' into to_push 2017-03-29 12:00:38 -07:00
c782b269b6 Update to match QMK keymap 2017-03-30 01:03:49 +09:00
4d2be0281c Typo fix 2017-03-30 00:19:44 +09:00
258e2afbbf Typo fixes 2017-03-29 23:41:27 +09:00
c3f7df992d Reminding TMK/QMK difference here should be good idea. 2017-03-29 23:38:06 +09:00
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
d6e51d2008 Added link to the teensy linux page. 2017-03-29 09:34:20 +02:00
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
b83ae5ae5c Merge pull request #1182 from henxing/default_atreus_layout
Default atreus layout
2017-03-28 14:12:41 -04:00
49f547dd8e Merge pull request #1139 from Swoy/master
Satan Board "Admiral Strokers" keymap and config
2017-03-28 14:12:21 -04:00
6de7e5d8dc typo removed {3 ... 2017-03-28 18:45:26 +02:00
85cac39529 fixed capitalization issue (checkTime => checktime) 2017-03-28 18:41:04 +02:00
3fdc45b4e9 Merge branch 'master' into default_atreus_layout 2017-03-28 12:11:49 -04:00
411cd4fae2 moved checktime out of function 2017-03-28 17:30:15 +02:00
f504082f7f declaring checktime before the function it is used in. 2017-03-28 17:17:08 +02:00
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
1b821eca66 removed varable trace option from makefile 2017-03-28 16:55:25 +02:00
37b7539af3 slight cleanup as per recommendation 2017-03-28 16:52:56 +02:00
c72ca58528 Moved key_timer out of function. 2017-03-28 16:50:44 +02:00
48dfc77718 removed a carriage return 2017-03-28 15:58:46 +02:00
62faa20ef6 Merge remote-tracking branch 'refs/remotes/qmk/master' 2017-03-28 15:55:33 +02:00
d5ee0194ab fixed #1139 issues
A fix described by jackhumbert has been sorted out now.
2017-03-28 15:43:04 +02:00
5e4daf1c6d Merge pull request #1174 from nooges/atreus50
Add Atreus50 keyboard
2017-03-28 09:34:26 -04:00
7e37daa2ce Merge pull request #1112 from newsboytko/newsboytko/midi-keycodes
Flesh out MIDI support
2017-03-28 09:26:54 -04:00
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
cc2fb56ed8 Merge pull request #1167 from smt/smt/satan
Add smt keymap for Satan 'GH60'
2017-03-28 09:18:55 -04:00
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
71857ebc3f Move Atreus50 to hardwired directory and update README 2017-03-28 09:17:09 -04:00
6e688ad5c2 Merge pull request #1172 from nooges/hexwire-fixes
Let's Split hexwire keymap fixes
2017-03-28 09:16:47 -04:00
99b7b50130 Merge pull request #1157 from jtbarrett/tada68_default
Update readme and default layout for TADA68
2017-03-28 09:15:57 -04:00
c948404739 Merge pull request #1180 from mattdibi/master
Italian layout for ergodox keyboard
2017-03-28 09:14:03 -04:00
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
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
a7811781c5 Merge pull request #1178 from cheesemacfly/master
XD60 different layout
2017-03-28 09:10:02 -04:00
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
2104900030 Removed images from ergodox ez italian layout 2017-03-28 10:19:25 +02:00
221b27c508 Fixed layout title in ergodox ez italian keymap 2017-03-28 10:15:18 +02:00
b9b9a59f22 Fixed italian kymap readme 2017-03-28 10:13:29 +02:00
512eb5e1d5 Updated readme 2017-03-28 10:10:24 +02:00
b6b85ed413 Added italian layout 2017-03-28 09:56:07 +02:00
b6280d0cac unsatisfied with ESC/GRV/TAB positioning 2017-03-27 21:56:47 -05:00
a47e916635 Merge remote-tracking branch 'upstream/master' 2017-03-27 21:19:36 -05:00
a03d946d0c fixed unicode input issue 2017-03-27 21:18:12 -05:00
3c3388d7f6 Updated Mouse keys (markdown) 2017-03-27 09:54:49 +03:00
0605107f13 Updated Mouse keys (markdown) 2017-03-27 09:54:33 +03:00
18bc47ebab Created Mouse keys (markdown) 2017-03-27 09:53:27 +03:00
004a92d9a6 Updated _Sidebar (markdown) 2017-03-27 09:51:57 +03:00
a32436d5a1 Create README.md 2017-03-26 15:20:44 -04:00
a89ee25db8 Add files via upload 2017-03-26 15:16:55 -04:00
c0a6c5f806 fixing layout 2017-03-26 15:07:19 -04:00
2407b27243 fix link for VAGRANT_GUIDE file 2017-03-25 16:22:08 +09:00
739249ff0d Adding different layer 2017-03-24 20:18:59 -04:00
25f2295ba8 Swapped placement of Ctrl and Alt keys to match Technomancy's
default layout
2017-03-24 14:31:02 -04:00
8775a13658 Add RGB support 2017-03-23 14:46:58 -04:00
63e47a6425 Add RGB support for Let’s Split v1 2017-03-23 12:23:20 -04:00
0520341ce4 Cleanup keymap 2017-03-23 11:31:07 -04:00
edfb50ea56 Initial commit for Atreus50 with working audio 2017-03-23 09:42:32 -04:00
e5c5902e95 Move keymap into config file 2017-03-23 08:51:29 -04:00
f3e3ff29a3 Add Makefile in keymap dir 2017-03-23 08:46:35 -04:00
91776772fd Remove line for hands selection via EEPROM, reduce tap duration from 200ms to 150ms 2017-03-23 08:46:35 -04:00
2573e581a5 Update readme.md 2017-03-22 15:56:45 -04:00
d5f56e91e4 Update i2c.c 2017-03-22 15:50:52 -04:00
bb413383ee Update i2c.c 2017-03-22 15:50:18 -04:00
092416325b Update i2c.c 2017-03-22 15:49:21 -04:00
be0cfbb97e Update i2c.c 2017-03-22 15:48:56 -04:00
732a7f2be9 Update matrix.c 2017-03-22 15:47:53 -04:00
ebb46694e5 Update split_util.c 2017-03-22 15:45:45 -04:00
1f7b8a0343 Update matrix.c 2017-03-22 15:45:15 -04:00
d1865db599 OLED code cleanup 2017-03-22 15:19:01 -04:00
80270a2791 Add files via upload 2017-03-22 15:14:33 -04:00
30f4507492 OLED code cleanup 2017-03-22 15:11:03 -04:00
65317a3a02 Added OLED SSD1306 support to I2C 2017-03-22 15:04:11 -04:00
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
3a7083d810 Delete rules.mk 2017-03-22 15:00:00 -04:00
a4bdd6d084 Delete rev2fliphalf.h 2017-03-22 14:59:54 -04:00
d012b01108 Delete rev2fliphalf.c 2017-03-22 14:59:42 -04:00
6167d7937c Delete config.h 2017-03-22 14:59:32 -04:00
dfb5a0e8f4 Delete Makefile 2017-03-22 14:59:20 -04:00
f0962bce50 Add files via upload 2017-03-22 14:55:13 -04:00
dce3847ebb Use single _FUNC layer. Move RESET and base layout-changing keys to _FUNC. 2017-03-20 14:12:43 -04:00
0ec07ddc1c Merge branch 'master' of https://github.com/Khord/qmk_firmware 2017-03-20 13:16:19 -04:00
d7f2bd2964 add pgup, pgdn, home, end 2017-03-20 13:14:48 -04:00
34c5f8094e Remove tap-dance. Raise will be accessed via holding shift while lower is active 2017-03-20 07:43:45 -04:00
b10d950708 Use normal backtick in ESC spot - I've mapped ESC to caps lock 2017-03-20 07:43:24 -04:00
3399e39297 Fix shift tap-dance (can't use one-shot layer) 2017-03-20 07:26:28 -04:00
b37f510f32 clean up config 2017-03-19 21:19:05 -07:00
a3a304db9a clean up docs and provide defaults for keymap 2017-03-19 21:11:17 -07:00
db2da37561 update docs 2017-03-19 20:56:45 -07:00
df874a228a fix whitespace 2017-03-19 20:46:56 -07:00
7e9ca9a976 support LEDs 2017-03-19 20:45:10 -07:00
a43ae7c92f Swap rows and columns to match the schematic 2017-03-19 20:34:53 -07:00
4a97ef6c48 start to define keymap; annoying because rows and columns are swapped from schematic 2017-03-19 19:55:55 -07:00
d7fc236540 successfully read data from the matrix 2017-03-19 15:59:21 -07:00
76b9a2662a MT does work with right-hand side modifiers. See #1166. 2017-03-19 14:00:50 +01:00
561da65606 Missing comma 2017-03-19 00:14:43 +00:00
ca544ecfb6 Don't feel like tap dancing arrows anymore 2017-03-19 00:07:48 +00:00
19fd20261b sketch out frosty flake matrix using custom matrix.c based on kitten paw 2017-03-18 16:19:10 -07:00
3766f902a0 boilerplate project created with new_project.sh 2017-03-18 15:38:03 -07:00
70d83afff9 Merge branch 'qmk/master' 2017-03-18 14:48:27 -07:00
e123ed8d5f Added KC_KEYMAP macro for old style keymaps in Atreus62 2017-03-17 09:23:55 -04:00
3c11a8d241 Added missing codes: KC_MEDIA_FAST_FORWARD and KC_MEDIA_REWIND 2017-03-17 12:44:29 +02:00
e03ddbe118 tap dance working for esc and arrows 2017-03-16 18:13:53 +00:00
4b1d0c5859 remove const 2017-03-16 17:36:31 +00:00
c7cddfc539 test td changes 2017-03-16 13:27:26 -04:00
6ca1c49d38 test fixes for tap dane 2017-03-16 13:07:01 -04:00
0c8f71e3c7 test tap dance 2017-03-16 12:44:56 -04:00
24d1745951 add config.h for customization 2017-03-16 12:24:31 -04:00
683754bce8 added custom tones 2017-03-16 04:11:47 +00:00
0c0a8ee187 test 2017-03-16 03:46:26 +00:00
73a70a2c1c Add Makefile 2017-03-15 23:09:17 -04:00
cf28f7bfda Add custom keycap 2017-03-15 23:07:29 -04:00
d9efa02cfb added README.md 2017-03-12 22:43:44 -05:00
1753c9383e Merge remote-tracking branch 'upstream/master' 2017-03-12 14:51:43 -05:00
9895e376e7 added US-International support 2017-03-12 14:51:33 -05:00
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
b19e34c81e Forsake spacefn in favor of left shift tapdance. Move media controls. 2017-03-10 16:10:05 -05:00
5ae0cfeef5 Add smt keymap for Satan 'GH60' 2017-03-09 13:58:33 -05:00
ce0b8ea676 Merge remote-tracking branch 'upstream/master' 2017-03-08 22:29:12 -06:00
82cbe71bb5 found LT(layer, kc) so I could take out TapDance code 2017-03-08 22:28:18 -06:00
fa44e8d4dc corralled image files 2017-03-08 16:26:45 -06:00
29e7003fc2 SLASH and WHACK functions added (based on algernon's CT_TA) 2017-03-07 22:31:14 -06:00
4880e72b77 SLASH and WHACK functions added (based on algernon's CT_TA) 2017-03-07 22:30:43 -06:00
eab0166f83 Merge remote-tracking branch 'upstream/master' 2017-03-07 19:09:56 -06:00
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
25a7c94174 Merge remote-tracking branch 'refs/remotes/qmk/master' 2017-03-07 19:39:00 +01:00
24ec8f5097 Merge pull request #18 from qmk/master
Merge from qmk
2017-03-05 22:58:13 +01:00
fec3b78d78 fix backspace key position. 2017-03-05 21:49:41 +09:00
fbbf618a46 Removed preceeding underscore from MASTER_RIGHT in config.h 2017-03-05 03:48:10 -08:00
7e518e1d8f fix again 2017-03-04 23:56:58 +09:00
0d9bceb2fe Merge remote-tracking branch 'upstream/master' 2017-03-03 19:28:35 -08:00
68808b22c0 Final tweaks to my Kinesis keymap and readme 2017-03-03 19:27:24 -08:00
515b4dd1f7 Allow to specify serial to dfu-util flash 2017-03-02 18:26:26 -08:00
0734f56940 add debug messages to audio 2017-03-02 12:28:12 -08:00
d11962aeb2 fix 'stop_all_notes' naming to be more consistent 2017-03-02 11:40:06 -08:00
82d9abf9f3 Updated License Clarification (markdown) 2017-02-28 21:44:10 -08:00
71855087cf Removing eltang as he doesn't show up in the current git blame. 2017-02-27 10:34:21 -08:00
d91e09f116 Updates to the README.md 2017-02-26 19:49:10 -08:00
871ac5058a Minor changes to the keymap: Moved thumb-cluster ESC to Media and Keypad layers 2017-02-26 19:45:57 -08:00
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
b911e1966f Fix redundant process_music.c in sources 2017-02-25 21:13:47 -08:00
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
b69b214d52 making numbers more familiar 2017-02-25 22:04:21 -06:00
ea14ed122f Add basic layer to sample MIDI keycap 2017-02-25 19:37:33 -08:00
1000799d1e Factor basic note processing into respective processors 2017-02-25 19:25:33 -08:00
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
99fc4a330e Updated License Clarification (markdown) 2017-02-25 07:03:10 -07:00
ebc6948e96 first two layers of ErgoDox Familiar completeC 2017-02-24 17:11:19 -06:00
474f7ee3fd initial layer of familiar layout) 2017-02-23 22:24:32 -06:00
498dfdd02c Merge https://github.com/qmk/qmk_firmware 2017-02-23 21:15:40 -06:00
9b40dd796e familiar layout graphics, etc 2017-02-23 21:13:45 -06:00
873fee8038 Updated _Sidebar (markdown) 2017-02-22 22:07:12 -05:00
74518260b8 Updated _Sidebar (markdown) 2017-02-22 22:06:56 -05:00
4d13a8063d Updated _Sidebar (markdown) 2017-02-22 22:06:37 -05:00
0e54e9d528 Documents TT 2017-02-22 21:33:36 -05:00
3cefa5cc82 Updated _Sidebar (markdown) 2017-02-22 21:32:06 -05:00
24be0efd4b Updated _Sidebar (markdown) 2017-02-22 20:03:51 -05:00
39b51573e6 Moves Modding Your Keyboard to its own page 2017-02-22 19:59:27 -05:00
603e3fd2f6 Created Modding your keyboard (markdown) 2017-02-22 19:59:01 -05:00
729fe5d8d4 Moves porting info to its own page 2017-02-22 19:58:21 -05:00
c008ac79bf Created Porting your keyboard to QMK (markdown) 2017-02-22 19:58:11 -05:00
203d90d9fe Moves Unicode and foreign-language info into its own page. 2017-02-22 19:56:46 -05:00
6fb9c094ec Created Unicode and additional language support (markdown) 2017-02-22 19:56:31 -05:00
6e88c5014b Moves unit testing into its own page. 2017-02-22 19:53:08 -05:00
2c89a77e67 Created Unit testing (markdown) 2017-02-22 19:52:59 -05:00
1d69ccd729 Merge branch 'qmk/master' 2017-02-21 22:01:56 -08:00
bf6f7a623d Merge remote-tracking branch 'upstream/master' 2017-02-20 23:54:09 -08:00
64eecfc530 fix typos in keymap 2017-02-19 22:23:32 -08:00
5abe05147c familiar layout v0.1 from ErgoDox-EZ configurator 2017-02-19 21:25:35 -06:00
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
d1fe24ad9f Allow customization of the number of tone keycodes and add example keymap 2017-02-19 17:18:05 -08:00
ae0752dff5 expose midi_config 2017-02-19 16:43:45 -08:00
5e6097f015 add keycodes for transpose range 2017-02-19 16:43:43 -08:00
dd8f8e6bae implement modulation 2017-02-19 16:43:02 -08:00
7c5e510fe2 add support for pedal cc messages 2017-02-19 16:42:45 -08:00
f67aefc522 remove disabled code 2017-02-19 16:42:04 -08:00
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
f2b2e05f12 clean up commented code 2017-02-19 16:42:04 -08:00
e405ab4bc6 initial implementation of polyphony using variable length array of notes on 2017-02-19 16:41:59 -08:00
5ae1411fc3 Expand MIDI key codes 2017-02-19 16:41:10 -08:00
40a8a88e72 Merge branch 'qmk/master' 2017-02-19 14:34:58 -08:00
c61b5d88a8 change bracket key posision 2017-02-19 22:46:54 +09:00
89529a9f17 Updated _Sidebar (markdown) 2017-02-17 14:29:35 -08:00
ab7ffc877a Updated _Sidebar (markdown) 2017-02-17 14:29:24 -08:00
93cd47d491 Updated _Sidebar (markdown) 2017-02-17 14:28:59 -08:00
7990cd2c92 Updated _Sidebar (markdown) 2017-02-17 14:28:35 -08:00
bcc86a09d5 Updated _Sidebar (markdown) 2017-02-17 14:27:58 -08:00
7d29d5f091 Updated _Sidebar (markdown) 2017-02-17 14:27:34 -08:00
e546b7655c Updated Keymap (markdown) 2017-02-17 14:22:55 -08:00
5f9532ea66 Updated Keymap (markdown) 2017-02-17 14:20:25 -08:00
6868497557 Updated Keymap (markdown) 2017-02-17 14:14:10 -08:00
4c9dae0e3b Updated Keymap (markdown) 2017-02-17 14:11:32 -08:00
44cd6aa41a Updated Keymap (markdown) 2017-02-17 14:10:10 -08:00
0bffb86721 Updated Keymap (markdown) 2017-02-17 14:09:50 -08:00
36f8936b03 Created Keymap (markdown) 2017-02-17 14:09:35 -08:00
359245bcc6 Updated FAQ Keymap (markdown) 2017-02-17 13:18:04 -08:00
7da82a6833 Updated FAQ Keymap (markdown) 2017-02-17 13:17:23 -08:00
ab5d4ae803 fix 2017-02-18 02:19:56 +09:00
6d16d282bf remove reset key 2017-02-18 01:27:12 +09:00
e9b1958df2 Added JIS keymap symbols 2017-02-18 01:07:04 +09:00
62aacd06ed copied and Meta(ESC) 2017-02-18 00:40:15 +09:00
b51d9d5d3f Updated Home (markdown) 2017-02-16 17:15:38 -08:00
921884de5d Updated Home (markdown) 2017-02-16 17:14:16 -08:00
30bf618864 Updated Home (markdown) 2017-02-16 17:09:39 -08:00
d9527a2f74 Updated Keymap examples (markdown) 2017-02-16 17:09:12 -08:00
56e9a286b5 Updated QMK Overview (markdown) 2017-02-16 17:07:39 -08:00
cdef9bd02f Updated QMK Overview (markdown) 2017-02-16 17:06:00 -08:00
8d88997ffd Updated QMK Overview (markdown) 2017-02-16 17:05:21 -08:00
a3b575b740 Updated QMK Overview (markdown) 2017-02-16 17:04:10 -08:00
f9a7dd6cca Created Make Instructions (markdown) 2017-02-16 17:03:17 -08:00
35d9010c63 Updated QMK Overview (markdown) 2017-02-16 17:00:57 -08:00
42f167eb57 Created QMK Overview (markdown) 2017-02-16 17:00:19 -08:00
e86e6431fc Updated Home (markdown) 2017-02-16 16:39:43 -08:00
b5d35e43c7 Created Macros (markdown) 2017-02-16 16:37:25 -08:00
b5af4e6dda Updated Home (markdown) 2017-02-16 16:34:35 -08:00
c23a2fc928 Updated Home (markdown) 2017-02-16 16:31:17 -08:00
8bc52c0e86 Created Tap Dance (markdown) 2017-02-16 16:30:12 -08:00
ac3753937a Created Leader Key (markdown) 2017-02-16 16:24:28 -08:00
53fde9a1ff Updated Home (markdown) 2017-02-16 16:23:02 -08:00
5730599d18 Created Space Cadet Shift (markdown) 2017-02-16 16:22:17 -08:00
2cbd99b663 Updated _Sidebar (markdown) 2017-02-16 19:11:58 -05:00
b7501868a0 Updated Home (markdown) 2017-02-16 15:51:26 -08:00
d817d8743e Created Key Functions (markdown) 2017-02-16 15:51:14 -08:00
d791dd7c91 Updated Keycodes (markdown) 2017-02-16 15:42:13 -08:00
ce8d46d74f Updated Keycodes (markdown) 2017-02-16 15:40:49 -08:00
cad54d5313 Updated Keycodes (markdown) 2017-02-16 15:39:55 -08:00
3c766d29e2 Updated Keycodes (markdown) 2017-02-16 15:34:53 -08:00
7053347efd Updated Keycodes (markdown) 2017-02-16 15:01:36 -08:00
67c4186a9e Updated Keycodes (markdown) 2017-02-16 14:58:44 -08:00
a2a216d316 Updated Keycodes (markdown) 2017-02-16 14:50:55 -08:00
26fda6bfa3 Updated Keycodes (markdown) 2017-02-16 14:50:36 -08:00
18c09dd154 Updated Keycodes (markdown) 2017-02-16 14:48:49 -08:00
2793758db7 Updated Keycodes (markdown) 2017-02-16 14:48:27 -08:00
218bd63294 Updated Keycodes (markdown) 2017-02-16 14:47:56 -08:00
ede95297d3 Updated Keycodes (markdown) 2017-02-16 14:47:31 -08:00
b663cb63c0 Updated Keycodes (markdown) 2017-02-16 14:46:43 -08:00
0b809313d0 Updated Keycodes (markdown) 2017-02-16 14:45:49 -08:00
459f206ec7 Updated Keycodes (markdown) 2017-02-16 14:45:21 -08:00
e1dd99ea74 Updated Keycodes (markdown) 2017-02-16 14:44:32 -08:00
b0efdf8795 Updated Keycodes (markdown) 2017-02-16 14:44:23 -08:00
e6a45c5092 Updated Keycodes (markdown) 2017-02-16 14:44:12 -08:00
896a48bac0 Updated Keycodes (markdown) 2017-02-16 14:08:58 -08:00
e1dc3377a4 Updated Keycodes (markdown) 2017-02-16 14:08:45 -08:00
d2e7b8b469 Updated Keycodes (markdown) 2017-02-16 14:08:33 -08:00
fcbcff8020 Updated Keycodes (markdown) 2017-02-16 14:08:22 -08:00
615dc93fba Created Keycodes (markdown) 2017-02-16 14:07:56 -08:00
ca1ec7b121 Fixed the TODO list. 2017-02-16 13:48:54 -08:00
118287420f tiny spelling change "frimware" to "firmware" 2017-02-16 17:24:51 +01:00
6fa6e6c4c6 Fixed inaccuracies in keymap comments and the readme. 2017-02-15 23:01:27 -08:00
80d5649f25 More refinements to my Kinesis keymap. Added a readme.md file. 2017-02-15 22:54:52 -08:00
1dabceb197 minor adjustments. 2017-02-15 21:56:48 -08:00
ea20a064b9 Added my keymap to the Kinesis project. 2017-02-15 20:14:32 -08:00
2210a55e98 Adding Stephan Bosebeck's signoff 2017-02-15 08:31:30 -08:00
7741f2a498 Updated License Clarification (markdown) 2017-02-15 10:51:54 +11:00
c94efed1e6 Created _Sidebar (markdown) 2017-02-14 18:04:20 -05:00
eb5b52c6c6 change jackhumbert to qmk 2017-02-14 18:03:27 -05:00
5df4372c81 Updated Compatible Microcontrollers (markdown) 2017-02-14 18:01:20 -05:00
ba27a11288 Updated Home (markdown) 2017-02-14 17:57:16 -05:00
f43e6f224b Created Build Environment Setup (markdown) 2017-02-14 17:56:06 -05:00
6862ab1609 Updated Home (markdown) 2017-02-14 15:38:05 +01:00
64f9779fe5 Add TAPPING_FORCE_HOLD to regulate behaviour
See #889 for the detail.
2017-02-14 14:12:54 +09:00
cf97749fb7 Updated Home (markdown) 2017-02-14 02:57:15 +07:00
719f6f0293 Merge remote-tracking branch 'upstream/master' 2017-02-11 21:57:54 -08:00
4894150094 Changes to the keymap to accommodate the RGB Underglow lighting. 2017-02-11 21:54:58 -08:00
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
902d5077cd Merge remote-tracking branch 'upstream/master' 2017-02-10 23:34:27 -08:00
4d7105c2cf Added RGB Underglow to my Preonic 2017-02-10 23:30:08 -08:00
eddc161d5d Updated License Clarification (markdown) 2017-02-09 18:04:58 +01:00
4d905b17f4 Signing off for GPL licensing 2017-02-09 18:00:54 +01:00
060f075fd1 Added another handwired board, the Atreus50.
Added a layer for WOW to my Atreus62.
2017-02-07 22:14:56 -08:00
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
c3ebd9e61b Fix indent to show code formatting, <keymap_colemak.h> was missing 2017-02-05 16:08:31 -08:00
f936a3d5c2 stuff 2017-02-03 14:10:19 +01:00
cdece6811d Signing off for GPL licensing 2017-02-03 13:16:19 +01:00
453cd25ab8 Merge branch 'master' of https://github.com/Johannes-Larsson/qmk_firmware 2017-02-03 10:49:46 +01:00
8a7daf34a2 initial keymap 2017-02-03 10:47:37 +01:00
bd43954a70 Fix username typo 2017-02-02 21:23:53 -06:00
eadb1afbd0 fixes typo 2017-02-02 18:32:21 -05:00
4344273c95 Updated License Clarification (markdown) 2017-02-02 13:55:18 -08:00
7b798789f9 Updated Home (markdown) 2017-02-02 08:51:36 -05:00
5f79da2d5f Updated Home (markdown) 2017-01-31 20:19:05 -05:00
e97a2215c7 Updated License Clarification (markdown) 2017-01-30 20:23:22 +01:00
aa491523ab Signing off my contributions 2017-01-31 02:02:59 +07:00
24a61213aa Adding signify for @IBNobody 2017-01-30 10:57:07 -08:00
3a1e9890dc Adding signify for @lindhe 2017-01-30 10:45:19 -08:00
6cf5c7e7f4 Adding signify for @yangliu 2017-01-30 10:44:38 -08:00
50dd22d1bf Updated License Clarification (markdown) 2017-01-30 17:29:40 +01:00
Seb
cb5a8feeb2 Updated License Clarification (markdown) 2017-01-30 09:11:07 +01:00
4f163b006e First revision of the XK-66 keyboard. 2017-01-30 00:00:09 -08:00
dbeda99de1 Sign off on rgblight.c 2017-01-29 20:08:12 -06:00
89799309d7 Updated License Clarification (markdown) 2017-01-29 18:31:57 -05:00
761b4e04bf Added my sign off 2017-01-29 21:25:10 +01:00
29ea5f92ca Updated License Clarification (markdown) 2017-01-29 12:02:10 -08:00
07b0a4144e Updated License Clarification (markdown) 2017-01-29 10:54:37 -08:00
66ec000886 Updated License Clarification (markdown) 2017-01-29 10:19:15 -08:00
9413e3958a Updated License Clarification (markdown) 2017-01-29 11:38:43 +02:00
8b66d71521 Updated License Clarification (markdown) 2017-01-29 10:35:44 +01:00
01c7475d12 add my consent. 2017-01-29 09:29:44 +01:00
420074d37f Updated License Clarification (markdown) 2017-01-29 02:37:49 -05:00
db7de0d47c Updated License Clarification (markdown) 2017-01-28 22:12:54 -08:00
8cad52d8f3 Updated License Clarification (markdown) 2017-01-28 22:12:43 -08:00
b1a2c4cd59 Created License Clarification Details (markdown) 2017-01-28 22:08:51 -08:00
6b7e4a9bc9 Updated License Clarification (markdown) 2017-01-28 22:08:15 -08:00
8567544174 Updated License Clarification (markdown) 2017-01-28 22:07:07 -08:00
d5de7e20fd Updated License Clarification (markdown) 2017-01-28 22:04:05 -08:00
8347993d6b Updated License Clarification (markdown) 2017-01-28 22:02:36 -08:00
e364b2267a Updated License Clarification (markdown) 2017-01-27 18:35:59 -08:00
128640a7df Updated License Clarification (markdown) 2017-01-27 18:34:58 -08:00
646d1f83a5 Updated License Clarification (markdown) 2017-01-27 18:31:23 -08:00
143a4ff78f Updated License Clarification (markdown) 2017-01-27 18:19:12 -08:00
00010b47bc Updated License Clarification (markdown) 2017-01-27 17:54:48 -08:00
757a79636b Updated License Clarification (markdown) 2017-01-27 17:54:14 -08:00
35737ee07f Updated License Clarification (markdown) 2017-01-27 17:51:29 -08:00
d51ad5db0f Updated License Clarification (markdown) 2017-01-27 17:47:43 -08:00
223494e691 Updated License Clarification (markdown) 2017-01-27 17:44:58 -08:00
3df44ecfc8 Updated License Clarification (markdown) 2017-01-27 17:08:57 -08:00
858efff8e5 Updated License Clarification (markdown) 2017-01-27 16:27:36 -08:00
6a54982324 Updated License Clarification (markdown) 2017-01-27 16:21:25 -08:00
5942b0f103 Updated License Clarification (markdown) 2017-01-27 14:54:42 -08:00
0eebccb283 Updated License Clarification (markdown) 2017-01-27 14:51:58 -08:00
d524b3f5e5 Updated License Clarification (markdown) 2017-01-27 14:26:21 -08:00
c0a04929f2 Updated License Clarification (markdown) 2017-01-27 14:21:31 -08:00
9adb6f777b Updated License Clarification (markdown) 2017-01-27 14:14:19 -08:00
5c277651a3 Updated License Clarification (markdown) 2017-01-27 11:30:25 -08:00
69581f47d5 Updated License Clarification (markdown) 2017-01-27 10:39:31 -08:00
bc68d4ef2c Updated License Clarification (markdown) 2017-01-27 10:38:03 -08:00
4bba3be825 Updated License Clarification (markdown) 2017-01-27 10:35:54 -08:00
228e4add0b Created License Clarification (markdown) 2017-01-27 10:02:33 -08:00
b7b94bfb13 Merge pull request #17 from qmk/master
Merged from QMK project
2017-01-26 09:05:55 +01:00
18cc05e2f7 Added instructions for how to build and flash the firmware with teensy_cli. 2017-01-24 10:02:56 +01:00
b420185f5b Added KC_QUES, updated file path. 2017-01-19 20:38:13 -05:00
b8b2a55973 Merge remote-tracking branch 'upstream/master' 2017-01-19 06:54:18 -08:00
80bc598585 Added Let's Split 2017-01-19 06:51:24 -08:00
c8a0ab1867 Changes to Atreus62 keymap, adding Let's Split keymap. 2017-01-19 06:49:59 -08:00
f91f0a715d Merge pull request #16 from jackhumbert/master
Forked from jackhumbert/qmk_firmware
2017-01-15 11:07:54 -06:00
032712866f Link correctly to keycode.txt 2017-01-13 10:21:47 -05:00
1074642c36 initial commit of my Atreus62 keymap 2017-01-13 01:51:52 -08:00
942b78e8c2 Updated Home (markdown) 2017-01-11 18:36:44 -05:00
1cefc94082 Destroyed Build Options (org) 2017-01-11 18:36:08 -05:00
e7fb34a910 Updated Build Options (org) 2017-01-11 18:25:02 -05:00
67868d39f8 Created Build Options (org) 2017-01-11 18:21:41 -05:00
8d61e884f2 Fix dfu-programmer link 2017-01-10 14:58:56 -05:00
7a9a5d0e62 Add files via upload
tidying up the keymap
2017-01-09 19:08:46 -08:00
166f428a2b Updated Home (markdown) 2017-01-09 16:29:04 +01:00
99521a4482 Merge remote-tracking branch 'upstream/master' 2017-01-08 21:47:08 -08:00
79343f1c6c Usaility changes to keymap, tidying up a bit. 2017-01-08 21:44:31 -08:00
0fb82c15a5 Merge pull request #15 from jackhumbert/master
Merge from qmk
2017-01-07 08:45:19 -06:00
4587248cda add warning to install_dep 2016-12-30 11:09:58 -05:00
b0ade6dc98 Fix return value of hex_to_keycode() function in keymap “coderkun_neo2” 2016-12-28 20:08:45 +01:00
bdca5c22fe Language edits 2016-12-21 21:54:04 -05:00
7571474874 Updated Memory write error, use debug for more info (markdown) 2016-12-20 11:11:45 -05:00
dbf13e9c98 Created Memory write error, use debug for more info (markdown) 2016-12-20 09:51:13 -05:00
0523657923 Merge remote-tracking branch 'upstream/master' 2016-12-13 18:06:49 -08:00
592b90dd22 Changes 2016-12-13 18:05:45 -08:00
9216bc7377 Merge remote-tracking branch 'upstream/master' 2016-12-06 17:36:19 -08:00
b251f2582e Updated Home (markdown) 2016-12-06 09:48:37 -05:00
b22b1fd5fb copy over readme for final time 2016-12-06 09:44:22 -05:00
f9cf4f75ae Merge remote-tracking branch 'upstream/master' 2016-11-19 09:31:34 -08:00
b493f6a4ed Merge remote-tracking branch 'upstream/master' 2016-11-16 22:36:36 -08:00
80c5ada339 Missed removing a function 2016-11-10 13:47:07 -08:00
f388bb5bda Removed some common functions from my keymap 2016-11-10 13:39:46 -08:00
4c0aa02b2e Missed some stuff. Added a song (stole it from reddit). 2016-11-10 12:59:55 -08:00
c07ef5c6ab Adding my (zach) keymaps for planck and preonic 2016-11-10 12:26:56 -08:00
59bef40aab Keep unicode's input_mode through a power cycle 2016-11-10 12:14:54 -08:00
8dd422ffe1 Updates to keymap file. 2016-10-31 18:27:05 -07:00
063328344a Removed files that weren't supposed to be uploaded from gh60 keymap folder 2016-10-31 18:04:01 -07:00
61eb35191a Adding more keymaps. 2016-10-31 17:58:22 -07:00
91b1aa0994 Add files via upload
Minor layout changes
2016-10-18 16:34:42 -07:00
7920063035 Add files via upload
Minor layout changes.
2016-10-18 16:34:00 -07:00
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
b7533e0abf Documents TO. 2016-10-12 22:19:35 -04:00
e69e4c1ef2 Merge remote-tracking branch 'jackhumbert/master' 2016-09-30 23:16:50 -07:00
e3c3170610 More standardization between the three layouts
Swapped Number Row with Symbols between _L1 and _L2.
2016-09-30 23:10:34 -07:00
8cd3a84025 revisions to my keymap again. 2016-09-30 22:43:15 -07:00
a03d72f597 Updates to my Planck keymap - standardizing the bottom row. 2016-09-30 13:05:21 -07:00
c66b090d4c Copy the main readme.md here 2016-09-19 15:27:06 -04:00
d352a8bc29 Importing and building the project 2016-09-18 21:24:56 +02:00
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
22e234f9b5 Initial version 2016-09-18 13:27:27 +02:00
26d6b90dde Update readme.md 2016-09-17 14:43:25 -07:00
6fc5d446f5 Merge remote-tracking branch 'upstream/master' 2016-09-16 22:06:15 -07:00
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
cab29b61e4 Updated Home (markdown) 2016-07-03 21:34:20 -04:00
abfc9265c4 Updated Home (markdown) 2016-07-03 21:33:56 -04:00
6b67129c51 Destroyed Build Guide (markdown) 2016-07-03 21:33:40 -04:00
c6d0da9a37 Updated FAQ Build (markdown) 2016-06-04 16:13:04 -04:00
e04aff10fa Updated FAQ Build (markdown) 2016-06-04 16:12:41 -04:00
049e5916a4 Updated Home (markdown) 2016-03-28 02:22:04 -03:00
71614e5b98 Updated Home (markdown) 2016-03-28 02:20:27 -03:00
b803589e29 Build guide in the wiki section 2016-03-28 02:14:52 -03:00
2b0b5d804a Add Atreus 2016-02-08 18:23:15 +07:00
tmk
29664234e2 Updated TMK Based Projects (markdown) 2016-02-05 13:33:43 +09:00
tmk
e5e7dbebf6 Updated TMK Based Projects (markdown) 2016-02-05 09:22:16 +09:00
tmk
6778c175f5 Updated TMK Based Projects (markdown) 2016-02-05 09:22:01 +09:00
tmk
a38fc1beae Created Report Descriptor (markdown) 2016-02-02 14:41:14 +09:00
tmk
79f28ac3bd Created USB HID (markdown) 2016-01-29 01:11:35 +09:00
5a7d3dce95 Updated TMK Based Projects (markdown) 2016-01-27 14:30:52 +01:00
aee41b1293 Updated TMK Based Projects (markdown) 2016-01-27 13:45:50 +01:00
6b368a8edc Added link to embedding page 2016-01-27 13:44:43 +01:00
e13934c60a Updated Embedding (markdown) 2016-01-27 13:42:44 +01:00
611ca00918 Added a warning 2016-01-27 13:42:05 +01:00
5eef65f9b4 Created Embedding (markdown) 2016-01-27 13:40:02 +01:00
9b9a1a946e Typo 2016-01-27 12:58:13 +01:00
tmk
78783e23d8 Created Kiibohd (asciidoc) 2016-01-27 08:48:49 +09:00
943d1cc673 Updated TMK Based Projects (markdown) 2016-01-17 15:53:36 +01:00
f4b5b8486f Updated TMK Based Projects (markdown) 2016-01-16 17:18:58 +01:00
006a1f806a Added link to project 2016-01-16 16:53:55 +01:00
0e5b64f092 Rename title 2016-01-16 16:52:46 +01:00
c4f5db9351 Update links to documentation 2016-01-16 16:12:40 +01:00
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
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
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
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
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
767690aa59 Adding link to the Compatible Microcontrollers list. 2014-01-25 18:11:37 -08:00
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
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
612 changed files with 25972 additions and 4326 deletions

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

View File

@ -11,6 +11,8 @@ env:
- secure: vBTSL34BDPxDilKUuTXqU4CJ26Pv5hogD2nghatkxSQkI1/jbdnLj/DQdPUrMJFDIY6TK3AltsBx72MaMsLQ1JO/Ou24IeHINHXzUC1FlS9yQa48cpxnhX5kzXNyGs3oa0qaFbvnr7RgYRWtmD52n4bIZuSuW+xpBv05x2OCizdT2ZonH33nATaHGFasxROm4qYZ241VfzcUv766V6RVHgL4x9V08warugs+RENVkfzxxwhk3NmkrISabze0gSVJLHBPHxroZC6EUcf/ocobcuDrCwFqtEt90i7pNIAFUE7gZsN2uE75LmpzAWin21G7lLPcPL2k4FJVd8an1HiP2WmscJU6U89fOfMb2viObnKcCzebozBCmKGtHEuXZo9FcReOx49AnQSpmESJGs+q2dL/FApkTjQiyT4J6O5dJpoww0/r57Wx0cmmqjETKBb5rSgXM51Etk3wO09mvcPHsEwrT7qH8r9XWdyCDoEn7FCLX3/LYnf/D4SmZ633YPl5gv3v9XEwxR5+04akjgnvWDSNIaDbWBdxHNb7l4pMc+WR1bwCyMyA7KXj0RrftEGOrm9ZRLe6BkbT4cycA+j77nbPOMcyZChliV9pPQos+4TOJoTzcK2L8yWVoY409aDNVuAjdP6Yum0R2maBGl/etLmIMpJC35C5/lZ+dUNjJAM=
before_install:
- wget http://www.atmel.com/images/avr8-gnu-toolchain-3.5.4.1709-linux.any.x86_64.tar.gz
- openssl aes-256-cbc -K $encrypted_b0ee987fd0fc_key -iv $encrypted_b0ee987fd0fc_iv -in secrets.tar.enc -out secrets.tar -d
- tar xvf secrets.tar
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"

View File

@ -1,8 +1,7 @@
FROM debian:jessie
MAINTAINER Erik Dasque <erik@frenchguys.com>
RUN apt-get update
RUN apt-get install --no-install-recommends -y build-essential \
RUN apt-get update && apt-get install --no-install-recommends -y build-essential \
gcc \
unzip \
wget \
@ -15,10 +14,8 @@ 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 \
&& rm -rf /var/lib/apt/lists/*
ENV keyboard=ergodox
ENV subproject=ez

View File

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

23
book.json Normal file
View File

@ -0,0 +1,23 @@
{
"structure": {
"readme": "Home.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/"
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

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

@ -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

@ -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 file](https://github.com/qmk/qmk_firmware/blob/master/doc/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.

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

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
* 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);
}
}
```

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

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

151
docs/FAQ-Build.md Normal file
View File

@ -0,0 +1,151 @@
## READ FIRST
- https://github.com/jackhumbert/qmk_firmware/blob/master/doc/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
```

248
docs/FAQ-Keymap.md Normal file
View File

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

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

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

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)

183
docs/Home.md Normal file
View File

@ -0,0 +1,183 @@
# 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.
# Custom Quantum functions
All of these functions are available in the `*_kb()` or `*_user()` variety. `kb` ones should only be used in the `<keyboard>/<keyboard>.c` file, and `user` ones should only be used in the `keymap.c`. The keyboard ones call the user ones - it's necessary to keep these calls to allow the keymap functions to work correctly.
## `void matrix_init_*(void)`
This function gets called when the matrix is initiated, and can contain start-up code for your keyboard/keymap.
## `void matrix_scan_*(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.
## `bool process_record_*(uint16_t keycode, keyrecord_t *record)`
This function gets called on every keypress/release, and is where you can define custom functionality. 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.
## `void led_set_*(uint8_t usb_led)`
This gets called whenever there is a state change on your host LEDs \(eg caps lock, scroll lock, etc\). The LEDs are defined as:
```
#define USB_LED_NUM_LOCK 0
#define USB_LED_CAPS_LOCK 1
#define USB_LED_SCROLL_LOCK 2
#define USB_LED_COMPOSE 3
#define USB_LED_KANA 4
```
and can be tested against the `usb_led` with a conditional like `if (usb_led & (1<<USB_LED_CAPS_LOCK))` - if this is true, you can turn your LED on, otherwise turn it off.

94
docs/Key-Functions.md Normal file
View File

@ -0,0 +1,94 @@
# 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](https://github.com/qmk/qmk_firmware/blob/master/doc/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.
### 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.

228
docs/Keycodes.md Normal file
View File

@ -0,0 +1,228 @@
# Overview
When defining a [keymap](https://github.com/qmk/qmk_firmware/blob/master/doc/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 Lock12|
|KC_LOCKING_NUM||Locking Num Lock12|
|KC_LOCKING_SCROLL||Locking Scroll Lock12|
|KC_INT4|KC_HENK|JIS Henken|
|KC_INT5|KC_MHEN|JIS Muhenken|
## Commands
|Long Name|Short Name|Description|
|---------|----------|-----------|
|KC_PSCREEN|KC_PSCR|PrintScreen1|
|KC_SCKLOCK|KC_SLCK|Scroll Lock11|
|KC_PAUSE|KC_PAUS|Pause1|
|KC_INSERT|KC_INS|Insert1|
|KC_HOME||Home1|
|KC_PGUP||PageUp1|
|KC_DELETE|KC_DEL|Delete Forward|
|KC_END||End1|
|KC_PGDOWN|KC_PGDN|PageDown1|
|KC_RIGHT|KC_RGHT|RightArrow1|
|KC_LEFT||LeftArrow1|
|KC_DOWN||DownArrow1|
|KC_UP||UpArrow1|
|KC_APPLICATION|KC_APP|Application10|
|KC_POWER||Power9|
|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 Erase7|
|KC_SYSREQ||SysReq/Attention1|
|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 Clear11|
|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 ENTER5|
|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 Comma27|
|KC_KP_EQUAL_AS400||Keypad Equal Sign29|
## 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|

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.

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)!

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