Compare commits

...
88 Commits
Author SHA1 Message Date
Jack Humbert 5682254f71 Merge pull request #1408 from fredizzimo/fix_build_improve_travis
Fix the two failing keymaps and improve the travis build script
2017-06-18 12:13:56 -04:00
Fred Sundvik 45d437ca04 Make only modified keymaps 2017-06-18 18:30:59 +03:00
Jack Humbert 51a86b85f3 Merge pull request #1361 from fredizzimo/ergodox_infinity_backlight
Add Ergodox Infinity backlight support
2017-06-18 10:15:02 -04:00
Fred Sundvik 2fd670bec0 Add missing include to Ergodox Belak keymap 2017-06-18 17:07:20 +03:00
Fred Sundvik 6ba22b5f5e Don't define RGBLED_NUM in let-split khord keymap
It's already defined correctly by the parent keyboard project, and was
causing problems for rev1, where the pin is different.
2017-06-18 17:03:07 +03:00
Fred Sundvik a15510b57b Always build everything on master 2017-06-18 17:03:05 +03:00
Fred Sundvik 5acc0e54aa Make all subprojects when a keymap is modified 2017-06-18 16:44:51 +03:00
Jack Humbert 7feadbd66d Merge pull request #1401 from geofflane/s65_x_fixes3
S65-X Fixes Part 3
2017-06-17 20:14:49 -04:00
Jack Humbert 206233d98c Merge pull request #1402 from belak/tv44-belak-tap-magic
tv44: Rearrange belak keymap and add some tap dance magic
2017-06-17 20:14:23 -04:00
Jack Humbert 82372d36af Merge pull request #1403 from Wraul/kmac-fixes
KMAC fixes
2017-06-17 20:14:05 -04:00
Mathias Andersson df26ede131 Unify KMAC code indentation
It's a little unclear what the style guidelines are for the QMK project.
But I figured that I should at least keep the indentation consistent
within the KMAC part.
2017-06-17 20:06:28 +02:00
Mathias Andersson 67e150a08a Enable backlight support by default for KMAC 2017-06-17 20:06:28 +02:00
Mathias Andersson ba945c5e77 Correct layer switching in KMAC keymap readmes 2017-06-17 20:06:28 +02:00
Mathias Andersson be002137f9 Fix some KMAC code formating 2017-06-17 20:06:28 +02:00
Mathias Andersson a621c7f88b Don't include the console by default on the KMAC 2017-06-17 20:06:28 +02:00
Kaleb Elwert 722adce095 tv44: Rearrange belak keymap and add some tap dance magic 2017-06-16 17:08:00 -07:00
jamesofarrell 98316ef017 Added Grave Escape (#1391)
* added QK_GRAVE_ESC and KC_GESC

* fixed name

* Fixed keycode emnu

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

Additionally keymaps for all other known layouts have been added:

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

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

* Update uGFX to 2.7

* Use ugfx with custom fixes

* Fix the ChibiOs submodule commit hash

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

* Respect brightness level on layer signalling

* Add hotkey in control layer for signalling state

* Update layout.png

* Remove image and replace it with imgur link
2017-06-12 08:48:01 -07:00
Ante Laurijssen 54d48140cd -MIDI Chords now using process_record_user instead of F(n) keys
-Morse Code shift keys implemented
2017-06-11 16:00:40 -04:00
Ante Laurijssen 7146dfea6e Created special shift keys for Morse layer that change variable value, enabling to send “shifted” special morse code characters. 2017-06-07 23:57:14 -04:00
Ante Laurijssen 8f80f35186 Working on Morse Code Macros 2017-06-07 22:01:28 -04:00
Ante Laurijssen 1b8ed53f21 Added a couple of custom keys and updated layer image 2017-06-05 22:17:35 -04:00
Fred Sundvik b51a0db6ed Add backlight support to the default Ergodox Infinity animations 2017-06-03 22:04:10 +03:00
Fred Sundvik 2a7f9a7e46 Add backlight control to the IS31FL3731 driver 2017-06-03 21:30:52 +03:00
Fred Sundvik effffa33a5 Backlight level handling for the visualizer 2017-06-03 21:14:26 +03:00
Fred Sundvik 0f9bfafb9e Turn off LED matrix by default 2017-06-03 15:31:02 +03:00
Fred Sundvik a916f4e8b8 Let BACKLIGHT_ENABLE control the Infinity LEDs 2017-06-03 14:34:50 +03:00
Ante Laurijssen 9cfa37bb3d Improvements and corrections to morse code macros layer 2017-06-02 22:57:57 -04:00
Ante Laurijssen fbaf964a85 Improvements to Midi and keymap 2017-05-30 21:27:00 -04:00
Ante Laurijssen 06684555d2 Another typo... 2017-05-29 22:16:17 -04:00
Ante Laurijssen cd4ccee703 Corrected typo in readme.md 2017-05-29 22:13:52 -04:00
Ante Laurijssen 1ef911d150 Added a few images 2017-05-29 22:11:48 -04:00
Ante Laurijssen 4c48c29c0e Added MIDI_CHORD layer and other little fixes.
Updated readme.md
2017-05-29 22:09:06 -04:00
Ante Laurijssen a584675735 Midi Chord Function is now working! But some chords lag... 2017-05-28 08:14:17 -04:00
Ante Laurijssen 6b1f707ce9 Still working on these MIDI CHORDS! 2017-05-26 09:54:40 -04:00
Ante Laurijssen b4b06f81b5 More changes to keymap.c to try and get midi chords to work 2017-05-25 23:03:33 -04:00
Ante Laurijssen 1a0dfbbc96 More updates to keymap.c - still errors with midi when trying to compile 2017-05-24 21:15:41 -04:00
Ante Laurijssen 4d783d0e69 More work on my keymap.c and added .png images of my different layers. 2017-05-22 23:30:25 -04:00
Ante Laurijssen 06433eb1a0 More work on keymap.c and config.h 2017-05-21 22:37:20 -04:00
Ante Laurijssen 34a1bf9e20 Merge https://github.com/qmk/qmk_firmware
Update my qmk_firmware fork
2017-05-21 08:44:52 -04:00
Ante Laurijssen b766407cbe Continuing work on keymap.c 2017-05-21 08:40:42 -04:00
Ante Laurijssen c686793b59 Merge https://github.com/qmk/qmk_firmware
Update from QMK main
2017-05-17 23:06:57 -04:00
Ante Laurijssen 26c6f6a85c Added Space Cadet Rollover Disable to config.h 2017-05-16 22:08:45 -04:00
Ante Laurijssen 814b570ba1 Working on keymap.c file... 2017-05-15 22:56:33 -04:00
Ante Laurijssen ee0b34feaf Started working on custom midi chord function 2017-05-14 20:07:35 -04:00
Ante Laurijssen f006ebebbd Initial push of my keymap 2017-05-14 16:07:44 -04:00
67 changed files with 2795 additions and 535 deletions

No files matched your search

+3 -3
View File
@@ -1,12 +1,12 @@
[submodule "lib/chibios"] [submodule "lib/chibios"]
path = lib/chibios path = lib/chibios
url = https://github.com/ChibiOS/ChibiOS.git url = https://github.com/qmk/ChibiOS
[submodule "lib/chibios-contrib"] [submodule "lib/chibios-contrib"]
path = lib/chibios-contrib path = lib/chibios-contrib
url = https://github.com/ChibiOS/ChibiOS-Contrib.git url = https://github.com/qmk/ChibiOS-Contrib
[submodule "lib/ugfx"] [submodule "lib/ugfx"]
path = lib/ugfx path = lib/ugfx
url = https://bitbucket.org/Tectu/ugfx url = https://github.com/qmk/uGFX
[submodule "lib/googletest"] [submodule "lib/googletest"]
path = lib/googletest path = lib/googletest
url = https://github.com/google/googletest url = https://github.com/google/googletest
+4 -2
View File
@@ -233,8 +233,10 @@ ifeq ($(strip $(LCD_ENABLE)), yes)
CIE1931_CURVE = yes CIE1931_CURVE = yes
endif endif
ifeq ($(strip $(LED_ENABLE)), yes) ifeq ($(strip $(BACKLIGHT_ENABLE)), yes)
CIE1931_CURVE = yes ifeq ($(strip $(VISUALIZER_ENABLE)), yes)
CIE1931_CURVE = yes
endif
endif endif
ifeq ($(strip $(CIE1931_CURVE)), yes) ifeq ($(strip $(CIE1931_CURVE)), yes)
@@ -1,2 +1,9 @@
MOUSEKEY_ENABLE = yes MOUSEKEY_ENABLE = yes
EXTRAKEY_ENABLE = yes EXTRAKEY_ENABLE = yes
MIDI_ENABLE = yes
# if MIDI_ENABLE is set to yes, then CONSOLE_ENABLE has to be disabled, because of the firmware size
CONSOLE_ENABLE = false
COMMAND_ENABLE = no
@@ -0,0 +1,44 @@
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
#include "../../config.h"
/*
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
#define MIDI_BASIC
*/
/* enable advanced MIDI features:
- MIDI notes can be added to the keymap
- Octave shift and transpose
- Virtual sustain, portamento, and modulation wheel
- etc.
*/
#define MIDI_ADVANCED
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
#define MIDI_TONE_KEYCODE_OCTAVES 2
/* Disabling rollover allows you to use the opposite shift key to cancel the space cadet state in the event
of an erroneous press instead of emitting a pair of parentheses when the keys are released.
*/
#define DISABLE_SPACE_CADET_ROLLOVER
/*
Setting the Space Cadet Parens for German layout
Default is
#define LSPO_KEY KC_9
#define RSPC_KEY KC_0
*/
#define LSPO_KEY KC_8
#define RSPC_KEY KC_9
#endif
+103 -52
View File
@@ -3,62 +3,94 @@
// Helpful defines // 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 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 #define _______ KC_TRNS
#define xxxxxxx KC_NO
#define HPR_TAB ALL_T(KC_TAB)
#define CTL_ESC CTL_T(KC_ESC)
// Each layer gets a name for readability, which is then used in the keymap matrix below. // Each layer gets a name for readability, which is then used in the keymap matrix below.
// The underscores don't mean anything - you can have a layer called STUFF or any other name. // The underscores don't mean anything - you can have a layer called STUFF or any other name.
// Layer names don't all need to be of the same length, obviously, and you can also skip them // Layer names don't all need to be of the same length, obviously, and you can also skip them
// entirely and just use numbers. // entirely and just use numbers.
#define _BL 0 #define _BL 0 // BASE Layer
#define _FL 1 #define _FL 1 // Function Layer
#define _ME 2 #define _ME 2 // Media Layer
#define _CL 3 #define _CL 3 // Control Layer
#define _ML 4 #define _ML 4 // Mouse Layer
#if defined(MIDI_ENABLE)
#define _MI 5 // MIDI Layer
#define TO_MIDI TO(_MI)
#else
#define TO_MIDI _______
#endif
#define TO_BASE TO(_BL)
#define MO_FUNC MO(_FL)
#define MEDIA MO(_ME)
#define MO_CTL MO(_CL)
#define L_MOUSE LT(_ML, KC_SPC)
#define ESC_FUN LT(_FL, KC_ESC)
#define ESC_GRV F(0)
#define RGB_RST F(1)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap _BL: Base Layer (Default Layer) /* Keymap _BL: Base Layer (Default Layer) */
*/
[_BL] = KEYMAP( [_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_BSPC, KC_INS, \ ESC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, _______, KC_BSPC, KC_INS, \
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, \ HPR_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, \
MO(_FL), 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, \ ESC_FUN, 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_RSFT, KC_UP, \ KC_LSPO, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, _______, KC_RSPC, KC_UP, \
KC_LCTL, KC_LGUI, KC_LALT, _______, LT(_ML, KC_SPC),LT(_ML, KC_SPC), _______, KC_RALT, MO(_ME), MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT), KC_LCTL, KC_LGUI, KC_LALT,_______, L_MOUSE, L_MOUSE, _______, KC_RALT, KC_RCTL, MO_FUNC, KC_LEFT, KC_DOWN, KC_RGHT),
/* Keymap _FL: Function Layer /* Keymap _FL: Function Layer */
*/
[_FL] = KEYMAP( [_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, _______, _______, BL_STEP, \ 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, _______, _______, BL_STEP, \
_______, _______, _______,_______,_______,_______,_______,_______,KC_PSCR,_______, KC_PAUS, _______, _______, _______, _______, \ _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, _______, KC_PAUS, _______, _______, _______, _______, \
MO(_FL), _______, MO(_CL),_______,_______,_______,KC_LEFT,KC_DOWN, KC_UP,KC_RGHT, _______, _______, _______, _______, \ _______, _______, MO_CTL, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, _______, \
_______, _______, _______,_______,_______,_______,_______,_______,MO(_ME),_______, _______, _______, _______, _______, KC_PGUP, \ _______, _______, _______, _______, _______, _______, _______, _______, MEDIA, _______, _______, TO_MIDI, _______, _______, KC_PGUP, \
_______, _______, _______,_______, _______,_______, _______, _______, _______, MO(_FL), KC_HOME, KC_PGDN, KC_END), _______, _______, _______, _______, _______, _______, _______, _______, _______, MO_FUNC, KC_HOME, KC_PGDN, KC_END),
/* Keymap _ME: Media layer /* Keymap _ME: Media layer */
*/
[_ME] = KEYMAP( [_ME] = KEYMAP(
_______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, KC_MUTE, KC_VOLU, \ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLU, \
_______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, KC_VOLD, \ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, \
_______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, \ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
MO(_FL), _______, _______,_______,_______,_______,_______,_______,MO(_ME),_______, _______, _______, _______, MO(_FL), _______, \ _______, _______, _______, _______, _______, _______, _______, _______, MEDIA, _______, _______, _______, _______, _______, _______, \
_______, _______, _______,_______, _______,_______, _______, _______, _______, _______, KC_MPRV, KC_MPLY,KC_MNXT), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT),
/* Keymap _CL: Control layer /* Keymap _CL: Control layer */
*/
[_CL] = KEYMAP( [_CL] = KEYMAP(
_______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_TOG, RGB_VAI, \ _______, RGB_RST, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_VAI, \
_______, _______, _______,_______,RESET, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD, \ _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAD, \
_______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, \ _______, _______, MO_CTL, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
MO(_FL), _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, MO(_FL), RGB_SAI, \ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAI, \
_______, _______, _______,_______, RGB_MOD,RGB_MOD, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_HUI), _______, _______, _______, _______, RGB_MOD, RGB_MOD, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_HUI),
/* Keymap _ML: Mouse layer /* Keymap _ML: Mouse layer */
*/
[_ML] = KEYMAP( [_ML] = KEYMAP(
_______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______, _______, \ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______, \ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, KC_BTN3,KC_BTN2,KC_BTN1,_______,KC_MS_L,KC_MS_D,KC_MS_U,KC_MS_R, _______, _______, _______, _______, \ _______, _______, KC_BTN3, KC_BTN2, KC_BTN1, _______, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, _______, _______, _______, _______, \
_______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, KC_MS_U, \ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_U, \
_______, _______, _______,_______, LT(_ML, KC_SPC),LT(_ML, KC_SPC), _______, KC_BTN1, KC_BTN2, KC_BTN3, KC_MS_L, KC_MS_D,KC_MS_R), _______, _______, _______, _______, L_MOUSE, L_MOUSE, _______, KC_BTN1, KC_BTN2, KC_BTN3, KC_MS_L, KC_MS_D, KC_MS_R),
#if defined(MIDI_ENABLE) && defined(MIDI_ADVANCED)
/* Keymap _MI: MIDI layer (Advanced)*/
[_MI] = KEYMAP(
TO_BASE,MI_VEL_1,MI_VEL_2,MI_VEL_3,MI_VEL_4,MI_VEL_5,MI_VEL_6,MI_VEL_7,MI_VEL_8,MI_VEL_9,MI_VEL_10, MI_CHD, MI_CHU, xxxxxxx, xxxxxxx, xxxxxxx, \
xxxxxxx, xxxxxxx, MI_Cs, MI_Ds, xxxxxxx, MI_Fs, MI_Gs, MI_As, xxxxxxx, MI_Cs_1, MI_Ds_1, xxxxxxx, MI_Fs_1, xxxxxxx, xxxxxxx, \
MI_MOD, MI_C, MI_D, MI_E, MI_F, MI_G, MI_A, MI_B, MI_C_1, MI_D_1, MI_E_1, MI_F_1, MI_G_1, xxxxxxx, \
MI_SUS, xxxxxxx, MI_OCTD, MI_OCTU,MI_MODSD,MI_MODSU, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, MI_TRNSD,MI_TRNSU,MI_TRNS_0, MI_SUS, xxxxxxx, \
xxxxxxx, xxxxxxx, xxxxxxx,xxxxxxx, MI_ALLOFF, MI_ALLOFF, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx),
#elif defined(MIDI_ENABLE) && defined(MIDI_BASIC)
/* Keymap _MI: MIDI layer (Basic)*/
[_MI] = KEYMAP(
TO_BASE, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, \
xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, \
xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, \
xxxxxxx, xxxxxxx, MI_ON, MI_OFF, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, \
xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx),
#endif
}; };
/* This is a list of user defined functions. F(N) corresponds to item N /* This is a list of user defined functions. F(N) corresponds to item N
@@ -66,6 +98,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/ */
const uint16_t PROGMEM fn_actions[] = { const uint16_t PROGMEM fn_actions[] = {
[0] = ACTION_FUNCTION(0), // Calls action_function() [0] = ACTION_FUNCTION(0), // Calls action_function()
[1] = ACTION_FUNCTION(1), // Calls action_function()
}; };
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
@@ -102,6 +135,11 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
} }
} }
break; break;
case 1:
if (record->event.pressed) {
rgblight_mode(1);
rgblight_sethsv(206, 255, 255);
}
} }
} }
@@ -110,26 +148,34 @@ enum layer_id {
LAYER_FUNCTION, LAYER_FUNCTION,
LAYER_MEDIA, LAYER_MEDIA,
LAYER_CONTROL, LAYER_CONTROL,
LAYER_MOUSE LAYER_MOUSE,
#if defined(MIDI_ENABLE)
LAYER_MIDI
#endif
}; };
void clueboard_set_led(uint8_t id) { void clueboard_set_led(uint8_t id, uint8_t val) {
switch (id) { switch (id) {
case LAYER_BASE: case LAYER_BASE:
rgblight_sethsv_noeeprom(346, 0, 255); rgblight_sethsv_noeeprom(0, 0, val);
break; break;
case LAYER_FUNCTION: case LAYER_FUNCTION:
rgblight_sethsv_noeeprom(46, 255, 255); rgblight_sethsv_noeeprom(46, 255, val);
break; break;
case LAYER_MEDIA: case LAYER_MEDIA:
rgblight_sethsv_noeeprom(86, 255, 255); rgblight_sethsv_noeeprom(86, 255, val);
break; break;
case LAYER_CONTROL: case LAYER_CONTROL:
rgblight_sethsv_noeeprom(346, 255, 255); rgblight_sethsv_noeeprom(346, 255, val);
break; break;
case LAYER_MOUSE: case LAYER_MOUSE:
rgblight_sethsv_noeeprom(206, 255, 255); rgblight_sethsv_noeeprom(206, 255, val);
break; break;
#if defined(MIDI_ENABLE)
case LAYER_MIDI:
rgblight_sethsv_noeeprom(316, 255, val);
break;
#endif
} }
}; };
@@ -140,18 +186,23 @@ void matrix_scan_user(void) {
if (!rgblight_config.enable || rgblight_config.mode != 1) { return; } if (!rgblight_config.enable || rgblight_config.mode != 1) { return; }
uint32_t layer = layer_state; uint32_t layer = layer_state;
uint8_t val = rgblight_config.val;
if (layer & (1<<_FL)) { if (layer & (1<<_FL)) {
if (layer & (1<<_ME)) { if (layer & (1<<_ME)) {
clueboard_set_led(LAYER_MEDIA); clueboard_set_led(LAYER_MEDIA, val);
} else if (layer & (1<<_CL)) { } else if (layer & (1<<_CL)) {
clueboard_set_led(LAYER_CONTROL); clueboard_set_led(LAYER_CONTROL, val);
} else { } else {
clueboard_set_led(LAYER_FUNCTION); clueboard_set_led(LAYER_FUNCTION, val);
} }
} else if (layer & (1<<_ML)) { } else if (layer & (1<<_ML)) {
clueboard_set_led(LAYER_MOUSE); clueboard_set_led(LAYER_MOUSE, val);
#if defined(MIDI_ENABLE)
} else if (layer & (1<<_MI)) {
clueboard_set_led(LAYER_MIDI, val);
#endif
} else { } else {
clueboard_set_led(LAYER_BASE); clueboard_set_led(LAYER_BASE, val);
} }
}; };
@@ -1,6 +1,8 @@
![Clueboard Layout Image](http://i.imgur.com/ngg4EAY.png) # Layout of @magicmonty
# MouseKeys Layout [Keyboard Layout Editor File]
![Clueboard Layout Image](http://i.imgur.com/WFfJ15k.png)
This layout is a combination of the `mouse_keys` and the `win_optimized` layouts. This layout is a combination of the `mouse_keys` and the `win_optimized` layouts.
This layout is optimized for an ISO layout. This layout is optimized for an ISO layout.
@@ -10,7 +12,11 @@ will move your mouse cursor. You can click using the 3 mods to the left of the
arrow keys, or the 3 keys under your primary fingers on the home row. arrow keys, or the 3 keys under your primary fingers on the home row.
The Left, Down, Up and Right for the mouse movement are also VIM-Like on the HJKL keys The Left, Down, Up and Right for the mouse movement are also VIM-Like on the HJKL keys
The CapsLock is disabled and works as Function key. There is also a MIDI layer included.
The CapsLock is disabled and works as Escape when tapped and Fn when Hold.
The Tab key works as Tab when tapped, and [Hyper] (Ctrl + Alt + Shift + Cmd) when hold
The Shift-Keys are configured as [Space Cadet Shift Parentheses]
There is also a separate media layer with Volume/Play controls There is also a separate media layer with Volume/Play controls
@@ -21,3 +27,8 @@ The different layers are signalled throug setting of the underlight:
- Media layer: Green - Media layer: Green
- Mouse layer: Blue - Mouse layer: Blue
- Control layer: Red - Control layer: Red
- Midi layer: Purple
[Hyper]: http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/
[Space Cadet Shift Parentheses]: http://stevelosh.com/blog/2012/10/a-modern-space-cadet/#shift-parentheses
[Keyboard Layout Editor File]: http://www.keyboard-layout-editor.com/#/gists/f869b8789242a712e0f46eabbd550056
+60 -13
View File
@@ -25,43 +25,90 @@
#include "lcd_backlight_keyframes.h" #include "lcd_backlight_keyframes.h"
#endif #endif
#ifdef LED_ENABLE #ifdef BACKLIGHT_ENABLE
#include "led_keyframes.h" #include "led_keyframes.h"
#endif #endif
#include "visualizer_keyframes.h" #include "visualizer_keyframes.h"
#if defined(LCD_ENABLE) && defined(LCD_BACKLIGHT_ENABLE) #if defined(LCD_ENABLE) || defined(LCD_BACKLIGHT_ENABLE) || defined(BACKLIGHT_ENABLE)
static bool keyframe_enable(keyframe_animation_t* animation, visualizer_state_t* state) {
#ifdef LCD_ENABLE
lcd_keyframe_enable(animation, state);
#endif
#ifdef LCD_BACKLIGHT_ENABLE
backlight_keyframe_enable(animation, state);
#endif
#ifdef BACKLIGHT_ENABLE
led_keyframe_enable(animation, state);
#endif
return false;
}
static bool keyframe_disable(keyframe_animation_t* animation, visualizer_state_t* state) {
#ifdef LCD_ENABLE
lcd_keyframe_disable(animation, state);
#endif
#ifdef LCD_BACKLIGHT_ENABLE
backlight_keyframe_disable(animation, state);
#endif
#ifdef BACKLIGHT_ENABLE
led_keyframe_disable(animation, state);
#endif
return false;
}
static bool keyframe_fade_in(keyframe_animation_t* animation, visualizer_state_t* state) {
bool ret = false;
#ifdef LCD_BACKLIGHT_ENABLE
ret |= backlight_keyframe_animate_color(animation, state);
#endif
#ifdef BACKLIGHT_ENABLE
ret |= led_keyframe_fade_in_all(animation, state);
#endif
return ret;
}
static bool keyframe_fade_out(keyframe_animation_t* animation, visualizer_state_t* state) {
bool ret = false;
#ifdef LCD_BACKLIGHT_ENABLE
ret |= backlight_keyframe_animate_color(animation, state);
#endif
#ifdef BACKLIGHT_ENABLE
ret |= led_keyframe_fade_out_all(animation, state);
#endif
return ret;
}
// Don't worry, if the startup animation is long, you can use the keyboard like normal // Don't worry, if the startup animation is long, you can use the keyboard like normal
// during that time // during that time
keyframe_animation_t default_startup_animation = { keyframe_animation_t default_startup_animation = {
.num_frames = 4, .num_frames = 3,
.loop = false, .loop = false,
.frame_lengths = {0, 0, 0, gfxMillisecondsToTicks(5000), 0}, .frame_lengths = {0, 0, gfxMillisecondsToTicks(5000)},
.frame_functions = { .frame_functions = {
lcd_keyframe_enable, keyframe_enable,
backlight_keyframe_enable,
lcd_keyframe_draw_logo, lcd_keyframe_draw_logo,
backlight_keyframe_animate_color, keyframe_fade_in,
}, },
}; };
keyframe_animation_t default_suspend_animation = { keyframe_animation_t default_suspend_animation = {
.num_frames = 4, .num_frames = 3,
.loop = false, .loop = false,
.frame_lengths = {0, gfxMillisecondsToTicks(1000), 0, 0}, .frame_lengths = {0, gfxMillisecondsToTicks(1000), 0},
.frame_functions = { .frame_functions = {
lcd_keyframe_display_layer_text, lcd_keyframe_display_layer_text,
backlight_keyframe_animate_color, keyframe_fade_out,
lcd_keyframe_disable, keyframe_disable,
backlight_keyframe_disable,
}, },
}; };
#endif #endif
#if defined(LED_ENABLE) #if defined(BACKLIGHT_ENABLE)
#define CROSSFADE_TIME 1000 #define CROSSFADE_TIME 1000
#define GRADIENT_TIME 3000 #define GRADIENT_TIME 3000
@@ -43,7 +43,7 @@ extern const uint8_t CIE1931_CURVE[];
#define GDISP_INITIAL_CONTRAST 0 #define GDISP_INITIAL_CONTRAST 0
#endif #endif
#ifndef GDISP_INITIAL_BACKLIGHT #ifndef GDISP_INITIAL_BACKLIGHT
#define GDISP_INITIAL_BACKLIGHT 100 #define GDISP_INITIAL_BACKLIGHT 0
#endif #endif
#define GDISP_FLG_NEEDFLUSH (GDISP_FLG_DRIVER<<0) #define GDISP_FLG_NEEDFLUSH (GDISP_FLG_DRIVER<<0)
@@ -173,7 +173,7 @@ LLDSPEC bool_t gdisp_lld_init(GDisplay *g) {
} }
// software shutdown disable (i.e. turn stuff on) // software shutdown disable (i.e. turn stuff on)
write_register(g, IS31_FUNCTIONREG, IS31_REG_SHUTDOWN, IS31_REG_SHUTDOWN_ON); write_register(g, IS31_FUNCTIONREG, IS31_REG_SHUTDOWN, IS31_REG_SHUTDOWN_OFF);
gfxSleepMilliseconds(10); gfxSleepMilliseconds(10);
// Finish Init // Finish Init
@@ -183,7 +183,7 @@ LLDSPEC bool_t gdisp_lld_init(GDisplay *g) {
g->g.Width = GDISP_SCREEN_WIDTH; g->g.Width = GDISP_SCREEN_WIDTH;
g->g.Height = GDISP_SCREEN_HEIGHT; g->g.Height = GDISP_SCREEN_HEIGHT;
g->g.Orientation = GDISP_ROTATE_0; g->g.Orientation = GDISP_ROTATE_0;
g->g.Powermode = powerOn; g->g.Powermode = powerOff;
g->g.Backlight = GDISP_INITIAL_BACKLIGHT; g->g.Backlight = GDISP_INITIAL_BACKLIGHT;
g->g.Contrast = GDISP_INITIAL_CONTRAST; g->g.Contrast = GDISP_INITIAL_CONTRAST;
return TRUE; return TRUE;
@@ -204,7 +204,8 @@ LLDSPEC bool_t gdisp_lld_init(GDisplay *g) {
uint8_t* src = PRIV(g)->frame_buffer; uint8_t* src = PRIV(g)->frame_buffer;
for (int y=0;y<GDISP_SCREEN_HEIGHT;y++) { for (int y=0;y<GDISP_SCREEN_HEIGHT;y++) {
for (int x=0;x<GDISP_SCREEN_WIDTH;x++) { for (int x=0;x<GDISP_SCREEN_WIDTH;x++) {
PRIV(g)->write_buffer[get_led_address(g, x, y)]=CIE1931_CURVE[*src]; uint8_t val = (uint16_t)*src * g->g.Backlight / 100;
PRIV(g)->write_buffer[get_led_address(g, x, y)]=CIE1931_CURVE[val];
++src; ++src;
} }
} }
@@ -297,8 +298,13 @@ LLDSPEC bool_t gdisp_lld_init(GDisplay *g) {
g->g.Orientation = (orientation_t)g->p.ptr; g->g.Orientation = (orientation_t)g->p.ptr;
return; return;
case GDISP_CONTROL_CONTRAST: case GDISP_CONTROL_BACKLIGHT:
return; if (g->g.Backlight == (unsigned)g->p.ptr)
return;
unsigned val = (unsigned)g->p.ptr;
g->g.Backlight = val > 100 ? 100 : val;
g->flags |= GDISP_FLG_NEEDFLUSH;
return;
} }
} }
#endif // GDISP_NEED_CONTROL #endif // GDISP_NEED_CONTROL
+1 -6
View File
@@ -62,15 +62,10 @@ CUSTOM_MATRIX ?= yes # Custom matrix file
SERIAL_LINK_ENABLE = yes SERIAL_LINK_ENABLE = yes
VISUALIZER_ENABLE ?= yes VISUALIZER_ENABLE ?= yes
LCD_ENABLE ?= yes LCD_ENABLE ?= yes
LED_ENABLE ?= no BACKLIGHT_ENABLE ?= yes
LCD_BACKLIGHT_ENABLE ?= yes LCD_BACKLIGHT_ENABLE ?= yes
MIDI_ENABLE = no MIDI_ENABLE = no
RGBLIGHT_ENABLE = no RGBLIGHT_ENABLE = no
ifdef LCD_ENABLE
include $(SUBPROJECT_PATH)/drivers/gdisp/st7565ergodox/driver.mk include $(SUBPROJECT_PATH)/drivers/gdisp/st7565ergodox/driver.mk
endif
ifdef LED_ENABLE
include $(SUBPROJECT_PATH)/drivers/gdisp/IS31FL3731C/driver.mk include $(SUBPROJECT_PATH)/drivers/gdisp/IS31FL3731C/driver.mk
endif
+1 -1
View File
@@ -1,7 +1,7 @@
SUBPROJECT_DEFAULT = infinity SUBPROJECT_DEFAULT = infinity
LCD_BACKLIGHT_ENABLE = yes LCD_BACKLIGHT_ENABLE = yes
LCD_ENABLE = yes LCD_ENABLE = yes
LED_ENABLE = yes BACKLIGHT_ENABLE = yes
BACKLIGHT_ENABLE = yes BACKLIGHT_ENABLE = yes
NKRO_ENABLE = yes NKRO_ENABLE = yes
TAP_DANCE_ENABLE = yes TAP_DANCE_ENABLE = yes
+21
View File
@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2016 Kaleb Elwert
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+6
View File
@@ -0,0 +1,6 @@
TAP_DANCE_ENABLE=yes
UNICODE_ENABLE=yes
ifndef QUANTUM_DIR
include ../../../../Makefile
endif
+79
View File
@@ -0,0 +1,79 @@
# Belak's Ergodox Layout
This has been based off of [emacs\_osx\_dk](https://github.com/jackhumbert/qmk_firmware/tree/master/keyboards/ergodox/keymaps/emacs_osx_dk)
from the main qmk repo. However, I've taken some of the ideas for the thumbs
from [dvorak\_emacs](https://github.com/jackhumbert/qmk_firmware/tree/master/keyboards/ergodox/keymaps/dvorak_emacs)
and tweaked it a bit based on the keycaps I have.
This keyboard is intended for use in emacs (one of the main reasons for easy
access to modifiers) but it could be useful in other instances as well.
The main repo is used as a testbed, so sometimes the layout may be in a strange
state. The qmk version should be relatively stable.
## Instructions
This is currently being used on a regular ergodox, but it should work fine on
the infinity as well. Though, you may have to modify the commands to build and
flash the firmware to match the separate halves as defined in the infinity
documentation.
If you are using this keymap in the qmk repo, you should be able to just run
`make ergodox-belak-teensy`. If you're using this externally (I sometimes make
changes before syncing them to qmk), use the following instructions:
1. Clone the main qmk repo
2. Clone this to `$QMK/keyboards/ergodox/keymaps/belak-external`
3. Run `make ergodox-belak-external-teensy` from the root of the qmk repo.
## Changelog
Fifth Revision
* Change layer keys to tap-dance keys which cycle through additional layers
* Add a few emoji keys (in preparation for an emoji layer)
Fourth Revision
* Remove media layer
* Add a layer which swaps control and gui on the thumb keys.
* Add some basic code to save settings to the eeprom
* Save the state of the keys swapped in the thumb in the eeprom
Third Revision
* Add numpad layer and remove numpad from symbols layer
* Disable media layer
* Add arrow keys on ijkl to the symbols layer
* Replace ALT on held enter and held delete with GUI (for better OSX
compatibility, as there's already an ALT key relatively close)
* Replace keys above enter and delete with temporary layer switch buttons not
matching the other layer switch for that hand.
* Reindent and space out most of the layer definitions
Second Revision
* Clean up definitions to make differences between layers easier to see
* Remove old LCD code
* Add new LCD code based on fredizzimo's branch
First Revision
* Reverse grave and escape
Initial Version
* Copy from emacs\_osx\_dk
* "Fix" right alt
* Change thumb keys to match default layout (backspace, delete, enter, space)
* Add modifiers to thumb keys (ctrl to backspace and space, alt to delete and
enter)
* Replace the RAlt below the brackets with LGui and RGui
* Remove LCtrl and RCtrl from the keys above shift
* Add browser forward, and move browser back
* "Fix" the order of volume keys
## Repository
The original code for this is kept at https://github.com/belak/ergodox-layout and
is synced to qmk every few main revisions.
+368
View File
@@ -0,0 +1,368 @@
#include "ergodox.h"
#include "debug.h"
#include "action_layer.h"
#include "eeconfig.h"
#include "eeprom.h"
#define LAYER_ON(pos) ((layer_state) & (1<<(pos)))
#define _______ KC_TRNS
#define EECONFIG_BELAK_MAGIC (uint16_t)0xBE42
// NOTE: This is just a number that's a bit beyond the end of what's already
// defined. As there is no other define we can base this on, it may need to be
// changed in the future. The initial value here is used as a placeholder with a
// magic word, similar to the normal eeconfig. Note that all the storage being
// used needs to fit inside the 32 bytes of the Ergodox Infinity.
#define EECONFIG_BELAK (uint16_t *)16
// The correct way to do this would be how the normal eeconfig handles it and
// use a bitfield. However, the eeprom has a ton of space which isn't being
// used so I don't really care and have a separate byte for every setting.
#define EECONFIG_BELAK_SWAP_GUI_CTRL (uint8_t *)18
static uint8_t swap_gui_ctrl = 0;
static uint8_t td_led_override = 0;
enum belak_keycodes {
// Function codes
BEL_F0 = SAFE_RANGE,
BEL_F1,
E_SHRUG,
E_TFLIP,
E_TSET,
};
inline void tap(uint16_t keycode) {
register_code(keycode);
unregister_code(keycode);
};
// TODO: Add LED support to the tap dance by using the advanced macro
#define LTOGGLE TD(TD_LAYER_TOGGLE)
#define BASE 0 // default layer
#define SYMB 1 // symbols
#define NUMP 2 // numpad
#define SWPH 3 // swap gui/ctrl on the hands
enum belak_td {
TD_LAYER_TOGGLE = 0,
};
void belak_td_each(qk_tap_dance_state_t *state, void *user_data);
void belak_td_finished(qk_tap_dance_state_t *state, void *user_data);
void belak_td_reset(qk_tap_dance_state_t *state, void *user_data);
qk_tap_dance_action_t tap_dance_actions[] = {
[TD_LAYER_TOGGLE] = ACTION_TAP_DANCE_FN_ADVANCED(belak_td_each, belak_td_finished, belak_td_reset),
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap 0: Basic layer
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | Esc | 1 | 2 | 3 | 4 | 5 | L1 | | L2 | 6 | 7 | 8 | 9 | 0 | = |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | Tab | Q | W | E | R | T | [ | | ] | Y | U | I | O | P | - |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | \ | A | S | D | F | G |------| |------| H | J | K | L | ; | ' |
* |--------+------+------+------+------+------| LGui | | RGui |------+------+------+------+------+--------|
* | LShift | Z | X | C | V | B | | | | N | M | , | . | / | RShift |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* |Layers| LCtrl| Left | Right| LAlt | | RAlt | Up | Down | RCtrl|Layers|
* `----------------------------------' `----------------------------------'
* ,-------------. ,--------------.
* | ~L2 | Ins | | Grv | ~L1 |
* ,-------|------|------| |------+-------+-------.
* | Back | | Home | | PgUp | | |
* | Space | Del |------| |------| Enter | Space |
* | | | End | | PgDn | | |
* `---------------------' `----------------------'
*/
[BASE] = KEYMAP( // layer 0 : default
// left hand
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, TG(SYMB),
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC,
CTL_T(KC_BSLS), KC_A, KC_S, KC_D, KC_F, KC_G,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LGUI,
LTOGGLE, KC_LCTRL, KC_LEFT,KC_RGHT,KC_LALT,
MO(NUMP),KC_INS,
KC_HOME,
CTL_T(KC_BSPC),GUI_T(KC_DEL),KC_END,
// right hand
TG(NUMP), KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL,
KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS,
KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
KC_RGUI, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT,
KC_RALT,KC_UP, KC_DOWN,KC_RCTRL, LTOGGLE,
KC_GRV, MO(SYMB),
KC_PGUP,
KC_PGDN, GUI_T(KC_ENT), CTL_T(KC_SPC)
),
/* Keymap 1: Symbol Layer
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | | ! | @ | { | } | | | | | | Up | | Up | | | F12 |
* |--------+------+------+------+------+------| TFLIP| | TSET |------+------+------+------+------+--------|
* | | # | $ | ( | ) | ` |------| |------| Down | Left | Down | Rght | | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | % | ^ | [ | ] | ~ | SHRUG| | | & | | | | | |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* |LClear| | | | | | | | | |LClear|
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | TOGL | | | | TOGL |
* ,------|------|------| |------+------+------.
* | | | | | | | |
* | | |------| |------| | |
* | | | | | | | |
* `--------------------' `--------------------'
*/
[SYMB] = KEYMAP(
// left hand
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, E_TFLIP,
_______, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, E_TSET,
_______, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRV,
_______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, E_SHRUG,
BEL_F1, _______, _______, _______, _______,
BEL_F0, _______,
_______,
_______, _______, _______,
// right hand
_______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
_______, KC_UP, _______, KC_UP, _______, _______, KC_F12,
KC_DOWN, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______,
_______, KC_AMPR, _______, _______, _______, _______, _______,
_______, _______, _______, _______, BEL_F1,
_______, BEL_F0,
_______,
_______, _______, _______
),
/* Keymap 2: Numpad Layer
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | | | | | | | | | | | | | | | |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | | | | | | | | | | | 7 | 8 | 9 | * | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | | | | | |------| |------| | 4 | 5 | 6 | + | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | | | | | | | | | | 1 | 2 | 3 | \ | |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* |LClear| | | | | | 0 | 0 | . | = |LClear|
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | TOGL | | | | TOGL |
* ,------|------|------| |------+------+------.
* | | | | | | | |
* | | |------| |------| | |
* | | | | | | | |
* `--------------------' `--------------------'
*/
[NUMP] = KEYMAP(
// left hand
_______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______,
BEL_F1, _______, _______, _______, _______,
BEL_F0, _______,
_______,
_______, _______, _______,
// right hand
_______, _______, _______, _______, _______, _______, _______,
_______, _______, KC_7, KC_8, KC_9, KC_ASTR, _______,
_______, KC_4, KC_5, KC_6, KC_PLUS, _______,
_______, _______, KC_1, KC_2, KC_3, KC_BSLS, _______,
KC_0, KC_0, KC_DOT, KC_EQL, BEL_F1,
_______, BEL_F0,
_______,
_______, _______, _______
),
/* Keymap 3: Swap control and gui on the thumb */
[SWPH] = KEYMAP(
// left hand
_______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______,
_______, _______,
_______,
GUI_T(KC_BSPC), CTL_T(KC_DEL), _______,
// right hand
_______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______,
_______, _______,
_______,
_______, CTL_T(KC_ENT), GUI_T(KC_SPC)
),
};
// Runs just one time when the keyboard initializes.
void matrix_init_user(void) {
// If our magic word wasn't set properly, we need to zero out the settings.
if (eeprom_read_word(EECONFIG_BELAK) != EECONFIG_BELAK_MAGIC) {
eeprom_update_word(EECONFIG_BELAK, EECONFIG_BELAK_MAGIC);
eeprom_update_byte(EECONFIG_BELAK_SWAP_GUI_CTRL, 0);
}
if (eeprom_read_byte(EECONFIG_BELAK_SWAP_GUI_CTRL)) {
layer_on(SWPH);
swap_gui_ctrl = 1;
}
};
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
ergodox_board_led_off();
ergodox_right_led_1_off();
ergodox_right_led_2_off();
ergodox_right_led_3_off();
switch (td_led_override) {
case 1:
ergodox_right_led_1_on();
break;
case 2:
ergodox_right_led_2_on();
break;
default:
// Layer 1 and 2 are both overlay layers, so they could both be on. This
// means we can't use the lazy check of checking for the first significant
// bit.
if (LAYER_ON(SYMB)) {
ergodox_right_led_1_on();
}
if (LAYER_ON(NUMP)) {
ergodox_right_led_2_on();
}
}
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case BEL_F0:
if(record->event.pressed){
swap_gui_ctrl = !swap_gui_ctrl;
eeprom_update_byte(EECONFIG_BELAK_SWAP_GUI_CTRL, swap_gui_ctrl);
if (swap_gui_ctrl) {
layer_on(SWPH);
} else {
layer_off(SWPH);
}
return false;
}
break;
case BEL_F1:
if(record->event.pressed){
layer_off(SYMB);
layer_off(NUMP);
return false;
}
break;
case E_SHRUG: // ¯\_(ツ)_/¯
if (record->event.pressed) {
process_unicode((0x00AF|QK_UNICODE), record); // Hand
tap(KC_BSLS); // Arm
register_code(KC_RSFT);
tap(KC_UNDS); // Arm
tap(KC_LPRN); // Head
unregister_code(KC_RSFT);
process_unicode((0x30C4|QK_UNICODE), record); // Face
register_code(KC_RSFT);
tap(KC_RPRN); // Head
tap(KC_UNDS); // Arm
unregister_code(KC_RSFT);
tap(KC_SLSH); // Arm
process_unicode((0x00AF|QK_UNICODE), record); // Hand
}
return false;
break;
case E_TFLIP: // (╯°□°)╯ ︵ ┻━┻
if (record->event.pressed) {
register_code(KC_RSFT);
tap(KC_9);
unregister_code(KC_RSFT);
process_unicode((0x256F|QK_UNICODE), record); // Arm
process_unicode((0x00B0|QK_UNICODE), record); // Eye
process_unicode((0x25A1|QK_UNICODE), record); // Mouth
process_unicode((0x00B0|QK_UNICODE), record); // Eye
register_code(KC_RSFT);
tap(KC_0);
unregister_code(KC_RSFT);
process_unicode((0x256F|QK_UNICODE), record); // Arm
tap(KC_SPC);
process_unicode((0x0361|QK_UNICODE), record); // Flippy
tap(KC_SPC);
process_unicode((0x253B|QK_UNICODE), record); // Table
process_unicode((0x2501|QK_UNICODE), record); // Table
process_unicode((0x253B|QK_UNICODE), record); // Table
}
return false;
break;
case E_TSET: // ┬──┬ ノ( ゜-゜ノ)
if (record->event.pressed) {
process_unicode((0x252C|QK_UNICODE), record); // Table
process_unicode((0x2500|QK_UNICODE), record); // Table
process_unicode((0x2500|QK_UNICODE), record); // Table
process_unicode((0x252C|QK_UNICODE), record); // Table
tap(KC_SPC);
process_unicode((0x30CE|QK_UNICODE), record); // Arm
register_code(KC_RSFT);
tap(KC_9);
unregister_code(KC_RSFT);
tap(KC_SPC);
process_unicode((0x309C|QK_UNICODE), record); // Eye
tap(KC_MINS);
process_unicode((0x309C|QK_UNICODE), record); // Eye
process_unicode((0x30CE|QK_UNICODE), record); // Arm
register_code(KC_RSFT);
tap(KC_0);
unregister_code(KC_RSFT);
}
return false;
break;
}
return true;
}
void belak_td_each(qk_tap_dance_state_t *state, void *user_data) {
switch (state->count) {
case 1:
td_led_override = 1;
break;
case 2:
td_led_override = 2;
break;
default:
reset_tap_dance(state);
}
}
void belak_td_finished(qk_tap_dance_state_t *state, void *user_data) {
switch (state->count) {
case 1:
layer_on(SYMB);
break;
case 2:
layer_on(NUMP);
break;
}
td_led_override = 0;
}
void belak_td_reset(qk_tap_dance_state_t *state, void *user_data) {
td_led_override = 0;
}
@@ -0,0 +1,49 @@
/*
Copyright 2017 Fred Sundvik
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
// Currently we are assuming that both the backlight and LCD are enabled
// But it's entirely possible to write a custom visualizer that use only
// one of them
#ifndef LCD_BACKLIGHT_ENABLE
#error This visualizer needs that LCD backlight is enabled
#endif
#ifndef LCD_ENABLE
#error This visualizer needs that LCD is enabled
#endif
#include "simple_visualizer.h"
static void get_visualizer_layer_and_color(visualizer_state_t* state) {
uint8_t saturation = 60;
if (state->status.leds & (1u << USB_LED_CAPS_LOCK)) {
saturation = 255;
}
if (state->status.layer & 0x4) {
state->target_lcd_color = LCD_COLOR(0, saturation, 0xFF);
state->layer_text = "Media";
}
else if (state->status.layer & 0x2) {
state->target_lcd_color = LCD_COLOR(168, saturation, 0xFF);
state->layer_text = "Symbols";
}
else {
state->target_lcd_color = LCD_COLOR(84, saturation, 0xFF);
state->layer_text = "Base";
}
}
+3 -3
View File
@@ -21,7 +21,7 @@
BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE = yes # Mouse keys(+4700) MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450) EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = yes # Console for debug(+400) CONSOLE_ENABLE = no # Console for debug(+400)
COMMAND_ENABLE = yes # Commands for debug and configuration COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
@@ -29,9 +29,9 @@ MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
AUDIO_ENABLE = no # Audio output on port C6 AUDIO_ENABLE = no # Audio output on port C6
UNICODE_ENABLE = no # Unicode UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
ifndef QUANTUM_DIR ifndef QUANTUM_DIR
include ../../../../Makefile include ../../../../Makefile
endif endif
+39 -39
View File
@@ -26,22 +26,22 @@
#define _FL 1 #define _FL 1
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BL] = KEYMAP( [_BL] = KEYMAP(
KC_ESC, 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_PSCR, KC_SLCK, KC_BRK, \ KC_ESC, 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_PSCR, KC_SLCK, KC_BRK, \
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, \ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, 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_DEL, KC_END, KC_PGDN, \ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, 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_ENT, \ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(_FL), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(_FL), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
), ),
[_FL] = KEYMAP( [_FL] = KEYMAP(
BL_STEP, M(0), M(1), M(2), M(3), M(4), M(5), M(6), M(7), M(8), M(9), M(10), M(11), _______, _______, _______, \ BL_STEP, M(0), M(1), M(2), M(3), M(4), M(5), M(6), M(7), M(8), M(9), M(10), M(11), _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
), ),
}; };
const uint16_t PROGMEM fn_actions[] = { const uint16_t PROGMEM fn_actions[] = {
@@ -50,32 +50,32 @@ const uint16_t PROGMEM fn_actions[] = {
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{ {
// MACRODOWN only works in this function // MACRODOWN only works in this function
switch(id) { switch(id) {
case 0: case 0:
if (record->event.pressed) { if (record->event.pressed) {
SEND_STRING("The"); SEND_STRING("The");
return false; return false;
} }
break; break;
case 1: case 1:
if (record->event.pressed) { if (record->event.pressed) {
SEND_STRING("Custom"); SEND_STRING("Custom");
return false; return false;
} }
break; break;
case 2: case 2:
if (record->event.pressed) { if (record->event.pressed) {
SEND_STRING("Keyboard"); SEND_STRING("Keyboard");
return false; return false;
} }
break; break;
case 3: case 3:
if (record->event.pressed) { if (record->event.pressed) {
return MACRO( D(LCTL), T(C), U(LCTL), T(RGHT), D(LCTL), T(V), U(LCTL), END ); return MACRO( D(LCTL), T(C), U(LCTL), T(RGHT), D(LCTL), T(V), U(LCTL), END );
} }
break; break;
} }
return MACRO_NONE; return MACRO_NONE;
}; };
@@ -89,7 +89,7 @@ void matrix_scan_user(void) {
} }
bool process_record_user(uint16_t keycode, keyrecord_t *record) { bool process_record_user(uint16_t keycode, keyrecord_t *record) {
return true; return true;
} }
void led_set_user(uint8_t usb_led) { void led_set_user(uint8_t usb_led) {
+1 -1
View File
@@ -6,7 +6,7 @@ See [keymap.c](keymap.c) for details.
## Layers ## Layers
The keymap have two layers. To access the functions on the second layer, hold down caps lock and press the corresponding key. The keymap have two layers. To access the functions on the second layer, hold down `Fn` and press the corresponding key.
### Layer 1: Default Layer ### Layer 1: Default Layer
,---. ,---------------. ,---------------. ,---------------. ,-----------. ,---. ,---------------. ,---------------. ,---------------. ,-----------.
+3 -3
View File
@@ -21,7 +21,7 @@
BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE = yes # Mouse keys(+4700) MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450) EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = yes # Console for debug(+400) CONSOLE_ENABLE = no # Console for debug(+400)
COMMAND_ENABLE = yes # Commands for debug and configuration COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
@@ -29,9 +29,9 @@ MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
AUDIO_ENABLE = no # Audio output on port C6 AUDIO_ENABLE = no # Audio output on port C6
UNICODE_ENABLE = no # Unicode UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
ifndef QUANTUM_DIR ifndef QUANTUM_DIR
include ../../../../Makefile include ../../../../Makefile
endif endif
+39 -39
View File
@@ -26,22 +26,22 @@
#define _FL 1 #define _FL 1
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BL] = KEYMAP_WINKEYLESS( [_BL] = KEYMAP_WINKEYLESS(
KC_ESC, 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_PSCR, KC_SLCK, KC_BRK, \ KC_ESC, 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_PSCR, KC_SLCK, KC_BRK, \
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, \ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, 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_DEL, KC_END, KC_PGDN, \ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, 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_ENT, \ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FL), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FL), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
), ),
[_FL] = KEYMAP_WINKEYLESS( [_FL] = KEYMAP_WINKEYLESS(
BL_STEP, M(0), M(1), M(2), M(3), M(4), M(5), M(6), M(7), M(8), M(9), M(10), M(11), _______, _______, _______, \ BL_STEP, M(0), M(1), M(2), M(3), M(4), M(5), M(6), M(7), M(8), M(9), M(10), M(11), _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
), ),
}; };
const uint16_t PROGMEM fn_actions[] = { const uint16_t PROGMEM fn_actions[] = {
@@ -50,32 +50,32 @@ const uint16_t PROGMEM fn_actions[] = {
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{ {
// MACRODOWN only works in this function // MACRODOWN only works in this function
switch(id) { switch(id) {
case 0: case 0:
if (record->event.pressed) { if (record->event.pressed) {
SEND_STRING("The"); SEND_STRING("The");
return false; return false;
} }
break; break;
case 1: case 1:
if (record->event.pressed) { if (record->event.pressed) {
SEND_STRING("Custom"); SEND_STRING("Custom");
return false; return false;
} }
break; break;
case 2: case 2:
if (record->event.pressed) { if (record->event.pressed) {
SEND_STRING("Keyboard"); SEND_STRING("Keyboard");
return false; return false;
} }
break; break;
case 3: case 3:
if (record->event.pressed) { if (record->event.pressed) {
return MACRO( D(LCTL), T(C), U(LCTL), T(RGHT), D(LCTL), T(V), U(LCTL), END ); return MACRO( D(LCTL), T(C), U(LCTL), T(RGHT), D(LCTL), T(V), U(LCTL), END );
} }
break; break;
} }
return MACRO_NONE; return MACRO_NONE;
}; };
@@ -89,7 +89,7 @@ void matrix_scan_user(void) {
} }
bool process_record_user(uint16_t keycode, keyrecord_t *record) { bool process_record_user(uint16_t keycode, keyrecord_t *record) {
return true; return true;
} }
void led_set_user(uint8_t usb_led) { void led_set_user(uint8_t usb_led) {
+1 -1
View File
@@ -7,7 +7,7 @@ See [keymap.c](keymap.c) for details.
## Layers ## Layers
The keymap have two layers. To access the functions on the second layer, hold down caps lock and press the corresponding key. The keymap have two layers. To access the functions on the second layer, hold down `Fn` and press the corresponding key.
### Layer 1: Default Layer ### Layer 1: Default Layer
,---. ,---------------. ,---------------. ,---------------. ,-----------. ,---. ,---------------. ,---------------. ,---------------. ,-----------.
+13 -13
View File
@@ -16,24 +16,24 @@
#include "kmac.h" #include "kmac.h"
void matrix_init_kb(void) { void matrix_init_kb(void) {
// put your keyboard start-up code here // put your keyboard start-up code here
// runs once when the firmware starts up // runs once when the firmware starts up
led_init_ports(); led_init_ports();
matrix_init_user(); matrix_init_user();
} }
void matrix_scan_kb(void) { void matrix_scan_kb(void) {
// put your looping keyboard code here // put your looping keyboard code here
// runs every cycle (a lot) // runs every cycle (a lot)
matrix_scan_user(); matrix_scan_user();
} }
bool process_record_kb(uint16_t keycode, keyrecord_t *record) { bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
// put your per-action keyboard code here // put your per-action keyboard code here
// runs for every action, just before processing by the firmware // runs for every action, just before processing by the firmware
return process_record_user(keycode, record); return process_record_user(keycode, record);
} }
void led_init_ports(void) { void led_init_ports(void) {
@@ -64,12 +64,12 @@ void led_set_kb(uint8_t usb_led) {
PORTE |= (1<<6); // HI PORTE |= (1<<6); // HI
} }
led_set_user(usb_led); led_set_user(usb_led);
} }
void backlight_init_ports(void) { void backlight_init_ports(void) {
DDRB |= (1<<1) | (1<<2) | (1<<3) | (1<<4); // OUT DDRB |= (1<<1) | (1<<2) | (1<<3) | (1<<4); // OUT
DDRD |= (1<<7); // OUT DDRD |= (1<<7); // OUT
} }
/* Backlight pin configuration /* Backlight pin configuration
+1 -1
View File
@@ -103,7 +103,7 @@ bool matrix_is_on(uint8_t row, uint8_t col)
inline inline
matrix_row_t matrix_get_row(uint8_t row) matrix_row_t matrix_get_row(uint8_t row)
{ {
return matrix[row]; return matrix[row];
} }
void matrix_print(void) void matrix_print(void)
+2 -2
View File
@@ -57,14 +57,14 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096
BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000) BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700) MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700)
EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
CONSOLE_ENABLE ?= yes # Console for debug(+400) CONSOLE_ENABLE ?= no # Console for debug(+400)
COMMAND_ENABLE ?= yes # Commands for debug and configuration COMMAND_ENABLE ?= yes # Commands for debug and configuration
CUSTOM_MATRIX ?= yes # Custom matrix file CUSTOM_MATRIX ?= yes # Custom matrix file
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE ?= yes # USB Nkey Rollover NKRO_ENABLE ?= yes # USB Nkey Rollover
BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality
MIDI_ENABLE ?= no # MIDI support (+2400 to 4200, depending on config) MIDI_ENABLE ?= no # MIDI support (+2400 to 4200, depending on config)
UNICODE_ENABLE ?= no # Unicode UNICODE_ENABLE ?= no # Unicode
BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID
@@ -0,0 +1,7 @@
TAP_DANCE_ENABLE = yes
RGBLIGHT_ENABLE = yes
USE_I2C = no
ifndef QUANTUM_DIR
include ../../../../Makefile
endif
@@ -0,0 +1,33 @@
/*
Copyright 2012 Jun Wako <[email protected]>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define TAPPING_TERM 150
#define USE_SERIAL
#define EE_HANDS
#define RGBLIGHT_ANIMATIONS
#ifdef SUBPROJECT_rev1
#include "../../rev1/config.h"
#endif
#ifdef SUBPROJECT_rev2
#include "../../rev2/config.h"
#endif
#ifdef SUBPROJECT_rev2fliphalf
#include "../../rev2fliphalf/config.h"
#endif
+235
View File
@@ -0,0 +1,235 @@
#include "lets_split.h"
#include "action_layer.h"
#include "eeconfig.h"
extern keymap_config_t keymap_config;
// Each layer gets a name for readability, which is then used in the keymap matrix below.
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
// Layer names don't all need to be of the same length, obviously, and you can also skip them
// entirely and just use numbers.
#define _QWERTY 0
#define _COLEMAK 1
#define _DVORAK 2
#define _LOWER 3
#define _RAISE 4
#define _ADJUST 16
enum custom_keycodes {
QWERTY = SAFE_RANGE,
COLEMAK,
DVORAK,
LOWER,
RAISE,
ADJUST,
};
// Fillers to make layering more clear
#define _______ KC_TRNS
#define XXXXXXX KC_NO
// Tap Dance Declarations
enum {
SFT_CAP = 0,
LFT_HOM,
DWN_PDN,
UPP_PUP,
RGT_END
};
// Dylan's additions
#define C_A_DEL LALT(LCTL(KC_DEL))
#define C_A_INS LALT(LCTL(KC_INS))
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Qwerty
* ,-----------------------------------------------------------------------------------.
* | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | Esc | A | S | D | F | G | H | J | K | L | ; | " |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
[_QWERTY] = KEYMAP( \
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \
CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
TD(SFT_CAP), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_T(KC_ENT), \
ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
),
/* Colemak
* ,-----------------------------------------------------------------------------------.
* | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | Esc | A | R | S | T | D | H | N | E | I | O | " |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | Shift| Z | X | C | V | B | K | M | , | . | / |Enter |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
[_COLEMAK] = KEYMAP( \
KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, \
KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \
ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
),
/* Dvorak
* ,-----------------------------------------------------------------------------------.
* | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | Esc | A | O | E | U | I | D | H | T | N | S | / |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
[_DVORAK] = KEYMAP( \
KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, \
KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \
KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT , \
ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
),
/* Lower
* ,-----------------------------------------------------------------------------------.
* | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | END | HOME |Enter |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
[_LOWER] = KEYMAP( \
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),KC_END, KC_HOME, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
),
/* Raise
* ,-----------------------------------------------------------------------------------.
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / |PG DN |PG UP |Enter |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
[_RAISE] = KEYMAP( \
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGDN, KC_PGUP, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
),
/* Adjust (Lower + Raise)
* ,-----------------------------------------------------------------------------------.
* | | Reset| | | | | | | | | | Del |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | | | | | | | | | | | | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | | | | |
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = KEYMAP( \
_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \
_______, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, _______, _______, C_A_INS, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, C_A_DEL \
)
};
qk_tap_dance_action_t tap_dance_actions[] = {
[SFT_CAP] = ACTION_TAP_DANCE_DOUBLE(KC_LSFT, KC_CAPS),
[LFT_HOM] = ACTION_TAP_DANCE_DOUBLE(KC_LEFT, KC_HOME),
[DWN_PDN] = ACTION_TAP_DANCE_DOUBLE(KC_DOWN, KC_PGDN),
[UPP_PUP] = ACTION_TAP_DANCE_DOUBLE(KC_UP, KC_PGUP),
[RGT_END] = ACTION_TAP_DANCE_DOUBLE(KC_RGHT, KC_END)
};
#ifdef AUDIO_ENABLE
float tone_qwerty[][2] = SONG(QWERTY_SOUND);
float tone_dvorak[][2] = SONG(DVORAK_SOUND);
float tone_colemak[][2] = SONG(COLEMAK_SOUND);
#endif
void persistent_default_layer_set(uint16_t default_layer) {
eeconfig_update_default_layer(default_layer);
default_layer_set(default_layer);
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case QWERTY:
if (record->event.pressed) {
#ifdef AUDIO_ENABLE
PLAY_NOTE_ARRAY(tone_qwerty, false, 0);
#endif
persistent_default_layer_set(1UL<<_QWERTY);
}
return false;
break;
case COLEMAK:
if (record->event.pressed) {
#ifdef AUDIO_ENABLE
PLAY_NOTE_ARRAY(tone_colemak, false, 0);
#endif
persistent_default_layer_set(1UL<<_COLEMAK);
}
return false;
break;
case DVORAK:
if (record->event.pressed) {
#ifdef AUDIO_ENABLE
PLAY_NOTE_ARRAY(tone_dvorak, false, 0);
#endif
persistent_default_layer_set(1UL<<_DVORAK);
}
return false;
break;
case LOWER:
if (record->event.pressed) {
layer_on(_LOWER);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
} else {
layer_off(_LOWER);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
}
return false;
break;
case RAISE:
if (record->event.pressed) {
layer_on(_RAISE);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
} else {
layer_off(_RAISE);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
}
return false;
break;
case ADJUST:
if (record->event.pressed) {
layer_on(_ADJUST);
} else {
layer_off(_ADJUST);
}
return false;
break;
}
return true;
}
@@ -37,6 +37,7 @@
#define TD_DOT TD(TDK_DOT) #define TD_DOT TD(TDK_DOT)
#define TD_SLSH TD(TDK_SLSH) #define TD_SLSH TD(TDK_SLSH)
// macros
#define ACTION_TAP_DANCE_FN_KEYCODE(user_fn, kc) { \ #define ACTION_TAP_DANCE_FN_KEYCODE(user_fn, kc) { \
.fn = { NULL, user_fn, NULL }, \ .fn = { NULL, user_fn, NULL }, \
.user_data = (void *)&((qk_tap_dance_pair_t) { kc, 0 }) \ .user_data = (void *)&((qk_tap_dance_pair_t) { kc, 0 }) \
@@ -47,6 +48,7 @@
.user_data = (void *)&((qk_tap_dance_pair_t) { kc1, kc2 }) \ .user_data = (void *)&((qk_tap_dance_pair_t) { kc1, kc2 }) \
} }
#define TAP(keycode) register_code16(keycode); unregister_code16(keycode)
#endif #endif
+13 -25
View File
@@ -25,10 +25,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------' * `-----------------------------------------------------------------------------------'
*/ */
[DEF] = { [DEF] = {
{KC_Q, KC_W, KC_E, KC_R, KC_T, KC_ESC, KC_BSPC, KC_Y, KC_U, KC_I, KC_O, KC_P}, {KC_Q, KC_W, KC_E, KC_R, KC_T, KC_ESC, KC_BSPC, KC_Y, KC_U, KC_I, KC_O, KC_P },
{KC_A, KC_S, KC_D, KC_F, KC_G, KC_TAB, KC_ENT, KC_H, KC_J, KC_K, KC_L, TD_SCLN}, {KC_A, KC_S, KC_D, KC_F, KC_G, KC_TAB, KC_ENT, KC_H, KC_J, KC_K, KC_L, TD_SCLN},
{KC_Z, KC_X, KC_C, KC_V, KC_B, OSM_SFT, DM_PLAY, KC_N, KC_M, TD_COMM, TD_DOT, TD_SLSH}, {KC_Z, KC_X, KC_C, KC_V, KC_B, OSM_SFT, DM_PLAY, KC_N, KC_M, TD_COMM, TD_DOT, TD_SLSH},
{OSM_CTL, KC_LGUI, OSM_ALT, OSL_FUN, OSL_LWR, KC_SPC, KC_SPC, OSL_RSE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} {OSM_CTL, KC_LGUI, OSM_ALT, OSL_FUN, OSL_LWR, KC_SPC, KC_SPC, OSL_RSE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
}, },
/* Lower /* Lower
* ,-----------------------------------------------------------------------------------. * ,-----------------------------------------------------------------------------------.
@@ -45,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
{KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN}, {KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN},
{KC_TILD, _______, _______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, _______, KC_LCBR, KC_RCBR}, {KC_TILD, _______, _______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, _______, KC_LCBR, KC_RCBR},
{_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DQUO, KC_PIPE}, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DQUO, KC_PIPE},
{_______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END} {_______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END }
}, },
/* Raise /* Raise
* ,-----------------------------------------------------------------------------------. * ,-----------------------------------------------------------------------------------.
@@ -59,10 +59,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------' * `-----------------------------------------------------------------------------------'
*/ */
[RSE] = { [RSE] = {
{KC_1, KC_2, KC_3, KC_4, KC_5, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0}, {KC_1, KC_2, KC_3, KC_4, KC_5, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0 },
{KC_GRV, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, _______, KC_LBRC, KC_RBRC}, {KC_GRV, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, _______, KC_LBRC, KC_RBRC},
{_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_QUOT, KC_BSLS}, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_QUOT, KC_BSLS},
{_______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END} {_______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END }
}, },
/* Function /* Function
* ,-----------------------------------------------------------------------------------. * ,-----------------------------------------------------------------------------------.
@@ -76,17 +76,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------' * `-----------------------------------------------------------------------------------'
*/ */
[FUN] = { [FUN] = {
{KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, RESET, KC_DEL, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10}, {KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, RESET, KC_DEL, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10 },
{KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, _______, _______, _______, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R}, {KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, _______, _______, _______, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R},
{BL_TOGG, BL_STEP, _______, _______, _______, DM_STRT, DM_STOP, _______, _______, KC_BTN1, KC_BTN2, KC_BTN3}, {BL_TOGG, BL_STEP, _______, _______, _______, DM_STRT, DM_STOP, _______, _______, KC_BTN1, KC_BTN2, KC_BTN3},
{_______, _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R} {_______, _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R}
}, },
};
void tap(uint16_t keycode) {
register_code16(keycode);
unregister_code16(keycode);
}; };
void tap_dance_triple(qk_tap_dance_state_t *state, void *user_data) { void tap_dance_triple(qk_tap_dance_state_t *state, void *user_data) {
@@ -96,25 +90,22 @@ void tap_dance_triple(qk_tap_dance_state_t *state, void *user_data) {
switch(state->count) { switch(state->count) {
case 2: case 2:
register_code(KC_LSFT); register_code(KC_LSFT);
tap(keycode); TAP(keycode);
unregister_code(KC_LSFT); unregister_code(KC_LSFT);
break; break;
case 3: case 3: // fall through
if (pair->kc2) { if (pair->kc2) {
keycode = pair->kc2; keycode = pair->kc2;
} }
tap(keycode); TAP(keycode);
tap(keycode);
break;
default: default:
tap(keycode); TAP(keycode);
break;
} }
} }
qk_tap_dance_action_t tap_dance_actions[] = { qk_tap_dance_action_t tap_dance_actions[] = {
[TDK_SCLN] = ACTION_TAP_DANCE_FN_KEYCODE2(tap_dance_triple, KC_SCLN, KC_COLN), [TDK_SCLN] = ACTION_TAP_DANCE_FN_KEYCODE2(tap_dance_triple, KC_SCLN, KC_COLN),
[TDK_COMM] = ACTION_TAP_DANCE_FN_KEYCODE (tap_dance_triple, KC_COMM), [TDK_COMM] = ACTION_TAP_DANCE_FN_KEYCODE2(tap_dance_triple, KC_COMM, KC_LABK),
[TDK_DOT] = ACTION_TAP_DANCE_FN_KEYCODE (tap_dance_triple, KC_DOT), [TDK_DOT] = ACTION_TAP_DANCE_FN_KEYCODE (tap_dance_triple, KC_DOT),
[TDK_SLSH] = ACTION_TAP_DANCE_FN_KEYCODE (tap_dance_triple, KC_SLSH) [TDK_SLSH] = ACTION_TAP_DANCE_FN_KEYCODE (tap_dance_triple, KC_SLSH)
}; };
@@ -126,6 +117,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
return true; return true;
} }
void matrix_init_user(void) {
}
+6 -6
View File
@@ -47,7 +47,7 @@ enum planck_keycodes {
#define M_BRDFT M(MACRO_BREATH_DEFAULT) #define M_BRDFT M(MACRO_BREATH_DEFAULT)
// Tap Dance Declarations // Tap Dance Declarations
enum { enum {
ESC_CAP = 0, SFT_CAP = 0,
LFT_HOM, LFT_HOM,
DWN_PDN, DWN_PDN,
UPP_PUP, UPP_PUP,
@@ -72,10 +72,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------' * `-----------------------------------------------------------------------------------'
*/ */
[_QWERTY] = { [_QWERTY] = {
{KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC }, {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC },
{TD(ESC_CAP), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT }, {CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT },
{KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_T(KC_ENT)}, {TD(SFT_CAP), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_T(KC_ENT)},
{BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT } {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT }
}, },
/* Colemak /* Colemak
@@ -192,7 +192,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
qk_tap_dance_action_t tap_dance_actions[] = { qk_tap_dance_action_t tap_dance_actions[] = {
[ESC_CAP] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CAPS), [SFT_CAP] = ACTION_TAP_DANCE_DOUBLE(KC_LSFT, KC_CAPS),
[LFT_HOM] = ACTION_TAP_DANCE_DOUBLE(KC_LEFT, KC_HOME), [LFT_HOM] = ACTION_TAP_DANCE_DOUBLE(KC_LEFT, KC_HOME),
[DWN_PDN] = ACTION_TAP_DANCE_DOUBLE(KC_DOWN, KC_PGDN), [DWN_PDN] = ACTION_TAP_DANCE_DOUBLE(KC_DOWN, KC_PGDN),
[UPP_PUP] = ACTION_TAP_DANCE_DOUBLE(KC_UP, KC_PGUP), [UPP_PUP] = ACTION_TAP_DANCE_DOUBLE(KC_UP, KC_PGUP),
+18
View File
@@ -0,0 +1,18 @@
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
EXTRAKEY_ENABLE = no # Audio control and System control(+450)
CONSOLE_ENABLE = no # Console for debug(+400)
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
MIDI_ENABLE = yes # MIDI controls
AUDIO_ENABLE = no # Audio output on port C6
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
TAP_DANCE_ENABLE = no # Enable tap dancing keys
ifndef QUANTUM_DIR
include ../../../../Makefile
endif
+128
View File
@@ -0,0 +1,128 @@
/*
Copyright 2012 Jun Wako <[email protected]>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef CONFIG_H
#define CONFIG_H
#include "config_common.h"
/* USB Device descriptor parameter */
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x6060
#define DEVICE_VER 0x0003
#define MANUFACTURER Sentraq
#define PRODUCT S60-RGB
#define DESCRIPTION QMK keyboard firmware for Sentraq S60-RGB
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
// ROWS: Top to bottom, COLS: Left to right
#define MATRIX_ROW_PINS { B5, B4, D7, D6, D4 }
#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, B6, C6, C7, F1, F0, E6, B3, B2, B1, B0 }
#define UNUSED_PINS
#define BACKLIGHT_PIN B7
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
/* define if matrix has ghost */
//#define MATRIX_HAS_GHOST
/* Set 0 if debouncing isn't needed */
#define DEBOUNCING_DELAY 5
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
/* key combination for command */
#define IS_COMMAND() ( \
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
/* Backlight configuration
*/
#define BACKLIGHT_LEVELS 3
/* Underlight configuration
*/
#define RGB_DI_PIN F6
#define RGBLIGHT_TIMER
#define RGBLED_NUM 10 // Number of LEDs
#define RGBLIGHT_HUE_STEP 10
#define RGBLIGHT_SAT_STEP 17
#define RGBLIGHT_VAL_STEP 17
/*
* Feature disable options
* These options are also useful to firmware size reduction.
*/
/* disable debug print */
//#define NO_DEBUG
/* disable print */
//#define NO_PRINT
/* disable action features */
//#define NO_ACTION_LAYER
//#define NO_ACTION_TAPPING
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
// For Tap Dancing
#define TAPPING_TOGGLE 1
#define TAPPING_TERM 300
/*
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/
#define MIDI_BASIC
/* enable advanced MIDI features:
- MIDI notes can be added to the keymap
- Octave shift and transpose
- Virtual sustain, portamento, and modulation wheel
- etc.
*/
#define MIDI_ADVANCED
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
#define MIDI_TONE_KEYCODE_OCTAVES 2
// Space Cadet Rollover - if set, allows to tap opposite shift key to cancel erroneous press
#define DISABLE_SPACE_CADET_ROLLOVER
// Prevent stuck modifiers
#define PREVENT_STUCK_MODIFIERS
#endif
+695
View File
@@ -0,0 +1,695 @@
#include "s60_x.h"
// Keyboard Layers
enum keyboard_layers {
BASE, //Base Layer
ARROWFN, //Arrow/FN Layer
MOUSE, //Mouse Layer
MIDI_BASE, //Midi Layer
MIDI_CHORDS, //Midi Chord Layer
MORSE, //Morse Code Layer
};
// Morse Code Macro Keys
enum morse_macros {
MC_0 = M(0),
MC_1 = M(1),
MC_2 = M(2),
MC_3 = M(3),
MC_4 = M(4),
MC_5 = M(5),
MC_6 = M(6),
MC_7 = M(7),
MC_8 = M(8),
MC_9 = M(9),
MC_A = M(10),
MC_B = M(11),
MC_C = M(12),
MC_D = M(13),
MC_E = M(14),
MC_F = M(15),
MC_G = M(16),
MC_H = M(17),
MC_I = M(18),
MC_J = M(19),
MC_K = M(20),
MC_L = M(21),
MC_M = M(22),
MC_N = M(23),
MC_O = M(24),
MC_P = M(25),
MC_Q = M(26),
MC_R = M(27),
MC_S = M(28),
MC_T = M(29),
MC_U = M(30),
MC_V = M(31),
MC_W = M(32),
MC_X = M(33),
MC_Y = M(34),
MC_Z = M(35),
MC_DOT = M(36),
MC_COMM = M(37),
MC_APOS = M(38),
MC_SLSH = M(39),
MC_SCLN = M(40),
MC_EQL = M(41),
MC_MINS = M(42),
MC_SPACE = M(43),
};
// Custom Keys
enum custom_keys {
// Miscellaneous Keycodes
TFS = LCTL(LALT(KC_DEL)), // Three Finger Salute - Sends Ctl-Alt-Del
MAGSYS = SAFE_RANGE, // Magic SysRq key - Sends Alt-PSCR
MC_LSFT, // Morse Code Left Shift
MC_RSFT, // Morse Code Right Shift
// MIDI Chord Keycodes - Major
MI_CH_C,
MI_CH_Cs,
MI_CH_Db = MI_CH_Cs,
MI_CH_D,
MI_CH_Ds,
MI_CH_Eb = MI_CH_Ds,
MI_CH_E,
MI_CH_F,
MI_CH_Fs,
MI_CH_Gb = MI_CH_Fs,
MI_CH_G ,
MI_CH_Gs,
MI_CH_Ab = MI_CH_Gs,
MI_CH_A,
MI_CH_As,
MI_CH_Bb = MI_CH_As,
MI_CH_B,
// MIDI Chord Keycodes Minor
MI_CH_Cm,
MI_CH_Csm,
MI_CH_Dbm = MI_CH_Csm,
MI_CH_Dm,
MI_CH_Dsm,
MI_CH_Ebm = MI_CH_Dsm,
MI_CH_Em,
MI_CH_Fm,
MI_CH_Fsm,
MI_CH_Gbm = MI_CH_Fsm,
MI_CH_Gm,
MI_CH_Gsm,
MI_CH_Abm = MI_CH_Gsm,
MI_CH_Am,
MI_CH_Asm,
MI_CH_Bbm = MI_CH_Asm,
MI_CH_Bm,
//MIDI Chord Keycodes Dominant Seventh
MI_CH_CDom7,
MI_CH_CsDom7,
MI_CH_DbDom7 = MI_CH_CsDom7,
MI_CH_DDom7,
MI_CH_DsDom7,
MI_CH_EbDom7 = MI_CH_DsDom7,
MI_CH_EDom7,
MI_CH_FDom7,
MI_CH_FsDom7,
MI_CH_GbDom7 = MI_CH_FsDom7,
MI_CH_GDom7,
MI_CH_GsDom7,
MI_CH_AbDom7 = MI_CH_GsDom7,
MI_CH_ADom7,
MI_CH_AsDom7,
MI_CH_BbDom7 = MI_CH_AsDom7,
MI_CH_BDom7,
// MIDI Chord Keycodes Diminished Seventh
MI_CH_CDim7,
MI_CH_CsDim7,
MI_CH_DbDim7 = MI_CH_CsDim7,
MI_CH_DDim7,
MI_CH_DsDim7,
MI_CH_EbDim7 = MI_CH_DsDim7,
MI_CH_EDim7,
MI_CH_FDim7,
MI_CH_FsDim7,
MI_CH_GbDim7 = MI_CH_FsDim7,
MI_CH_GDim7,
MI_CH_GsDim7,
MI_CH_AbDim7 = MI_CH_GsDim7,
MI_CH_ADim7,
MI_CH_AsDim7,
MI_CH_BbDim7 = MI_CH_AsDim7,
MI_CH_BDim7,
};
//Keymaps
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* 0: Custom Dvorak/HHKBish Base Layer
┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
│ ESC │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ [ │ ] │ \ │ ` │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ TAB │ ' │ , │ . │ P │ Y │ F │ G │ C │ R │ L │ / │ = │BSPC │█████│
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│CT/ES│ A │ O │ E │ U │ I │ D │ H │ T │ N │ S │ - │▒▒▒▒▒│CT/EN│█████│
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│LSPO │▒▒▒▒▒│ ; │ Q │ J │ K │ X │ B │ M │ W │ V │ Z │▒▒▒▒▒│RSPC │▒▒▒▒▒│
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│MO(2)│L_GUI│L_ALT│█████│█████│█████│SPFN1│█████│█████│█████│AG/AP│R_GUI│CT|S │CT|AL│█████│
└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
*/
[BASE] = KEYMAP(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC, KC_BSLS, KC_GRV, \
KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_EQL, KC_BSPC, \
CTL_T(KC_ESC), KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, KC_NO, MT(MOD_RCTL, KC_ENT), \
KC_LSPO, KC_NO, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_NO, KC_RSPC, KC_NO, \
MO(2), KC_LGUI, KC_LALT, LT(1, KC_SPACE), ALGR_T(KC_APP), KC_RGUI, OSM(MOD_LCTL | MOD_LSFT), OSM(MOD_LCTL | MOD_LALT)
),
/* 1: Arrow/FN Layer
┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
│ │ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │TO(3)│TO(5)│
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ │ │ │ │ │ │ │PGUP │ UP │ │ │ │ INS │ DEL │█████│
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│CAPS │HOME │ │ END │ │ │ │LEFT │DOWN │RIGHT│ │ │▒▒▒▒▒│ │█████│
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ │▒▒▒▒▒│ │ │ │ │ │SPACE│PGDN │PSCR │SLCK │PAUSE│▒▒▒▒▒│ │▒▒▒▒▒│
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ │ │ │█████│█████│█████│ │█████│█████│█████│ │ │ │ │█████│
└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
*/
[ARROWFN] = KEYMAP(
KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, TO(3), TO(5), \
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PGUP, KC_UP, KC_NO, KC_NO, KC_NO, KC_INS, KC_DEL, \
KC_CAPS, KC_HOME, KC_NO, KC_END, KC_NO, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RIGHT, KC_NO, KC_NO, KC_NO, KC_TRNS, \
KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_SPACE, KC_PGDN, KC_PSCR, KC_SLCK, KC_PAUS, KC_NO, KC_TRNS, KC_NO, \
KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
/* 2: Mouse Keys Layer
┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
│RESET│ F13 │ F14 │ F15 │ F16 │ F17 │ F18 │ F19 │ F20 │ F21 │ F22 │ F23 │ F24 │ │ │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│DEBUG│ │ │ │ │ │ │BTN1 │MS_UP│BTN2 │WH_UP│ │ │ │█████│
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│TFS │ │ │ │ │ │ │MS_LT│MS_DN│MS_RT│WH_DN│BTN3 │▒▒▒▒▒│ │█████│
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│MAGSYS▒▒▒▒▒│ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │▒▒▒▒▒│
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ │ │ │█████│█████│█████│ PWR │█████│█████│█████│ │ │ │ │█████│
└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
*/
[MOUSE] = KEYMAP(
RESET, 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_NO, KC_NO, \
DEBUG, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_BTN1, KC_MS_UP, KC_BTN2, KC_WH_U, KC_NO, KC_NO, KC_NO, \
TFS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_WH_D, KC_BTN3, KC_NO, KC_TRNS, \
MAGSYS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_NO, \
KC_TRNS, KC_TRNS, KC_TRNS, KC_POWER, KC_TRNS, KC_TRNS, KC_NO, KC_NO
),
/* 3: Midi Base Layer
┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
│TO(0)│ Cmaj│ Gmaj│ Dmaj│ Amaj│ Emaj│ Bmaj│Gbmaj│Dbmaj│Abmaj│Ebmaj│Bbmaj│ Fmaj│ │TO(4)│
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│OCT+ │ │ C# │ D# │ │ F# │ G# │ A# │ │ C# │ D# │ │ │ │█████│
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│OCT- │ C │ D │ E │ F │ G │ A │ B │ C │ D │ E │ F │▒▒▒▒▒│ │█████│
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ Cm │▒▒▒▒▒│ Gm │ Dm │ Am │ Em │ Bm │ Gbm │ Dbm │ Abm │ Ebm │ Bbm │▒▒▒▒▒│ Fm │▒▒▒▒▒│
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ │ │ │█████│█████│█████│A-OFF│█████│█████│█████│ │ │ │ │█████│
└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
*/
[MIDI_BASE] = KEYMAP(
TO(0), MI_CH_C, MI_CH_G, MI_CH_D, MI_CH_A, MI_CH_E, MI_CH_B, MI_CH_Gb, MI_CH_Db, MI_CH_Ab, MI_CH_Eb, MI_CH_Bb, MI_CH_F, KC_NO, TO(4), \
MI_OCTU, KC_NO, MI_Cs, MI_Ds, KC_NO, MI_Fs, MI_Gs, MI_As, KC_NO, MI_Cs_1, MI_Ds_1, KC_NO, KC_NO, KC_NO, \
MI_OCTD, MI_C, MI_D, MI_E, MI_F, MI_G, MI_A, MI_B, MI_C_1, MI_D_1, MI_E_1, MI_F_1, KC_NO, KC_NO, \
MI_CH_Cm, KC_NO, MI_CH_Gm, MI_CH_Dm, MI_CH_Am, MI_CH_Em, MI_CH_Bm, MI_CH_Gbm, MI_CH_Dbm, MI_CH_Abm, MI_CH_Ebm, MI_CH_Bbm, KC_NO, MI_CH_Fm, KC_NO, \
KC_NO, KC_NO, KC_NO, MI_ALLOFF, KC_NO, KC_NO, KC_NO, KC_NO
),
/* 4: Midi Chord Layer
┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
│TO(0)│ Cmaj│ Gmaj│ Dmaj│ Amaj│ Emaj│ Bmaj│Gbmaj│Dbmaj│Abmaj│Ebmaj│Bbmaj│ Fmaj│TO(3)│ │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│OCT+ │ Cm │ Gm │ Dm │ Am │ Em │ Bbm │ Gbm │ Dbm │ Abm │ Ebm │ Bbm │ Fm │ │█████│
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│OCT- │Cdom7│Gdom7│Ddom7│Adom7│Edom7│Bdom7│Gbdo7│Dbdo7│Abdo7│Ebdo7│Bbdo7│▒▒▒▒▒│Fdom7│█████│
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│Cdim7│▒▒▒▒▒│Gdim7│Ddim7│Adim7│Edim7│Bdim7│Gbdi7│Dbdi7│Abdi7│Ebdi7│Bbdi7│▒▒▒▒▒│Fdim7│▒▒▒▒▒│
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ │ │ │█████│█████│█████│A-OFF│█████│█████│█████│ │ │ │ │█████│
└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
*/
[MIDI_CHORDS] = KEYMAP(
TO(0), MI_CH_C, MI_CH_G, MI_CH_D, MI_CH_A, MI_CH_E, MI_CH_B, MI_CH_Gb, MI_CH_Db, MI_CH_Ab, MI_CH_Eb, MI_CH_Bb, MI_CH_F, TO(3), KC_NO, \
MI_OCTU, MI_CH_Cm, MI_CH_Gm, MI_CH_Dm, MI_CH_Am, MI_CH_Em, MI_CH_Bm, MI_CH_Gbm, MI_CH_Dbm, MI_CH_Abm, MI_CH_Ebm, MI_CH_Bbm, MI_CH_Fm, KC_NO, \
MI_OCTD, MI_CH_CDom7, MI_CH_GDom7, MI_CH_DDom7, MI_CH_ADom7, MI_CH_EDom7, MI_CH_BDom7, MI_CH_GbDom7, MI_CH_DbDom7, MI_CH_AbDom7, MI_CH_EbDom7, MI_CH_BbDom7, KC_NO, MI_CH_FDom7, \
MI_CH_CDim7, KC_NO, MI_CH_GDim7, MI_CH_DDim7, MI_CH_ADim7, MI_CH_EDim7, MI_CH_BDim7, MI_CH_GbDim7, MI_CH_DbDim7, MI_CH_AbDim7, MI_CH_EbDim7, MI_CH_BbDim7, KC_NO, MI_CH_FDim7, KC_NO, \
KC_NO, KC_NO, KC_NO, MI_ALLOFF, KC_NO, KC_NO, KC_NO, KC_NO
),
/* 5: Morse Code Layer
┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
│TO(0)│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ │ │ │ │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ │ ' │ , │ . │ P │ Y │ F │ G │ C │ R │ L │ / │ = │BSPC │█████│
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ │ A │ O │ E │ U │ I │ D │ H │ T │ N │ S │ - │▒▒▒▒▒│ENTER│█████│
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│SHIFT│▒▒▒▒▒│ ; │ Q │ J │ K │ X │ B │ M │ W │ V │ Z │▒▒▒▒▒│SHIFT│▒▒▒▒▒│
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ │ │ │█████│█████│█████│SPACE│█████│█████│█████│ │ │ │ │█████│
└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
*/
[MORSE] = KEYMAP(
TO(0), MC_1, MC_2, MC_3, MC_4, MC_5, MC_6, MC_7, MC_8, MC_9, MC_0, KC_NO, KC_NO, KC_NO, KC_NO, \
KC_TAB, MC_APOS, MC_COMM, MC_DOT, MC_P, MC_Y, MC_F, MC_G, MC_C, MC_R, MC_L, MC_SLSH, MC_EQL, KC_BSPC, \
KC_NO, MC_A, MC_O, MC_E, MC_U, MC_I, MC_D, MC_H, MC_T, MC_N, MC_S, MC_MINS, KC_NO, KC_ENT, \
MC_LSFT, KC_NO, MC_SCLN, MC_Q, MC_J, MC_K, MC_X, MC_B, MC_M, MC_W, MC_V, MC_Z, KC_NO, MC_RSFT, KC_NO, \
KC_NO, KC_NO, KC_NO, MC_SPACE, KC_NO, KC_NO, KC_NO, KC_NO
),
};
// Morse Code Macros
int mc_shift_on = false; // Variable that defines whether MC_LSFT or MC_RSFT are pressed
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
switch(id) {
case 0: //Number 0-)
if (record->event.pressed) {
if (mc_shift_on == true) {
return MACRO(T(MINS), T(DOT), T(MINS), T(MINS), T(DOT), T(MINS), T(SPACE), END); //-.--.-
}
else {
return MACRO(T(MINS), T(MINS), T(MINS), T(MINS), T(MINS), T(SPACE), END); //-----
}
}
break;
case 1: //Number 1-!
if (record->event.pressed) {
if (mc_shift_on == true) {
return MACRO(T(MINS), T(DOT), T(MINS), T(DOT), T(MINS), T(MINS), T(SPACE), END); //-.-.--
}
else {
return MACRO(T(DOT), T(MINS), T(MINS), T(MINS), T(MINS), T(SPACE), END); //.----
}
}
break;
case 2: //Number 2-@
if (record->event.pressed) {
if (mc_shift_on == true) {
return MACRO(T(DOT), T(MINS), T(MINS), T(DOT), T(MINS), T(DOT), T(SPACE), END); //.--.-.
}
else {
return MACRO(T(DOT), T(DOT), T(MINS), T(MINS), T(MINS), T(SPACE), END); //..---
}
}
break;
case 3: // Number 3
if (record->event.pressed) {
return MACRO(T(DOT), T(DOT), T(DOT), T(MINS), T(MINS), T(SPACE), END); //...--
}
break;
case 4: //Number 4-$
if (record->event.pressed) {
if (mc_shift_on == true) {
return MACRO(T(DOT), T(DOT), T(DOT), T(MINS), T(DOT), T(DOT), T(MINS), T(SPACE), END); //...-..-
}
else {
return MACRO(T(DOT), T(DOT), T(DOT), T(DOT), T(MINS), T(SPACE), END); //....-
}
}
break;
case 5: //Number 5
if (record->event.pressed) {
return MACRO(T(DOT), T(DOT), T(DOT), T(DOT), T(DOT), T(SPACE), END); //.....
}
break;
case 6: //Number 6
if (record->event.pressed) {
return MACRO(T(MINS), T(DOT), T(DOT), T(DOT), T(DOT), T(SPACE), END); //-....
}
break;
case 7: //Number 7-&
if (record->event.pressed) {
if (mc_shift_on == true) {
return MACRO(T(DOT), T(MINS), T(DOT), T(DOT), T(DOT), T(SPACE), END); //.-...
}
else {
return MACRO(T(MINS), T(MINS), T(DOT), T(DOT), T(DOT), T(SPACE), END); //--...
}
}
break;
case 8: //Number 8
if (record->event.pressed) {
return MACRO(T(MINS), T(MINS), T(MINS), T(DOT), T(DOT), T(SPACE), END); //---..
}
break;
case 9: //Number 9-(
if (record->event.pressed) {
if (mc_shift_on == true) {
return MACRO(T(MINS), T(DOT), T(MINS), T(MINS), T(DOT), T(SPACE), END); //-.--.
}
else {
return MACRO(T(MINS), T(MINS), T(MINS), T(MINS), T(DOT), T(SPACE), END); //----.
}
}
break;
case 10: //Letter A
if (record->event.pressed) {
return MACRO(T(DOT), T(MINS), T(SPACE), END); //.-
}
break;
case 11: //Letter B
if (record->event.pressed) {
return MACRO(T(MINS), T(DOT), T(DOT), T(DOT), T(SPACE), END); //-...
}
break;
case 12: //Letter C
if (record->event.pressed) {
return MACRO(T(MINS), T(DOT), T(MINS), T(DOT), T(SPACE), END); //-.-.
}
break;
case 13: //Letter D
if (record->event.pressed) {
return MACRO(T(MINS), T(DOT), T(DOT), T(SPACE), END); //-..
}
break;
case 14: //Letter E
if (record->event.pressed) {
return MACRO(T(DOT), T(SPACE), END); //.
}
break;
case 15: //Letter F
if (record->event.pressed) {
return MACRO(T(DOT), T(DOT), T(MINS), T(DOT), T(SPACE), END); //..-.
}
break;
case 16: //Letter G
if (record->event.pressed) {
return MACRO(T(MINS), T(MINS), T(DOT), T(SPACE), END); //--.
}
break;
case 17: //Letter H
if (record->event.pressed) {
return MACRO(T(DOT), T(DOT), T(DOT), T(DOT), T(SPACE), END); //....
}
break;
case 18: //Letter I
if (record->event.pressed) {
return MACRO(T(DOT), T(DOT), T(SPACE), END); //..
}
break;
case 19: //Letter J
if (record->event.pressed) {
return MACRO(T(DOT), T(MINS), T(MINS), T(MINS), T(SPACE), END); //.---
}
break;
case 20: //Letter K
if (record->event.pressed) {
return MACRO(T(MINS), T(DOT), T(MINS), T(SPACE), END); //-.-
}
break;
case 21: //Letter L
if (record->event.pressed) {
return MACRO(T(DOT), T(MINS), T(DOT), T(DOT), T(SPACE), END); //.-..
}
break;
case 22: //Letter M
if (record->event.pressed) {
return MACRO(T(MINS), T(MINS), T(SPACE), END); //--
}
break;
case 23: //Letter N
if (record->event.pressed) {
return MACRO(T(MINS), T(DOT), T(SPACE), END); //-.
}
break;
case 24: //Letter O
if (record->event.pressed) {
return MACRO(T(MINS), T(MINS), T(MINS), T(SPACE), END); //---
}
break;
case 25: //Letter P
if (record->event.pressed) {
return MACRO(T(DOT), T(MINS), T(MINS), T(DOT), T(SPACE), END); //.--.
}
break;
case 26: //Letter Q
if (record->event.pressed) {
return MACRO(T(MINS), T(MINS), T(DOT), T(MINS), T(SPACE), END); //--.-
}
break;
case 27: //Letter R
if (record->event.pressed) {
return MACRO(T(DOT), T(MINS), T(DOT), T(SPACE), END); //.-.
}
break;
case 28: //Letter S
if (record->event.pressed) {
return MACRO(T(DOT), T(DOT), T(DOT), T(SPACE), END); //...
}
break;
case 29: //Letter T
if (record->event.pressed) {
return MACRO(T(MINS), T(SPACE), END); //-
}
break;
case 30: //Letter U
if (record->event.pressed) {
return MACRO(T(DOT), T(DOT), T(MINS), T(SPACE), END); //..-
}
break;
case 31: //Letter V
if (record->event.pressed) {
return MACRO(T(DOT), T(DOT), T(DOT), T(MINS), T(SPACE), END); //...-
}
break;
case 32: //Letter W
if (record->event.pressed) {
return MACRO(T(DOT), T(MINS), T(MINS), T(SPACE), END); //.--
}
break;
case 33: //Letter X
if (record->event.pressed) {
return MACRO(T(MINS), T(DOT), T(DOT), T(MINS), T(SPACE), END); //-..-
}
break;
case 34: //Letter Y
if (record->event.pressed) {
if (mc_shift_on == true) {
}
return MACRO(T(MINS), T(DOT), T(MINS), T(MINS), T(SPACE), END); //-.--
}
break;
case 35: //Letter Z
if (record->event.pressed) {
return MACRO(T(MINS), T(MINS), T(DOT), T(DOT), T(SPACE), END); //--..
}
break;
case 36: //Punctuation .
if (record->event.pressed) {
return MACRO(T(DOT), T(MINS), T(DOT), T(MINS), T(DOT), T(MINS), T(SPACE), END); //.-.-.-
}
break;
case 37: //Punctuation ,
if (record->event.pressed) {
return MACRO(T(MINS), T(MINS), T(DOT), T(DOT), T(MINS), T(MINS), T(SPACE), END); //--..--
}
break;
case 38: //Punctuation '-"
if (record->event.pressed) {
if (mc_shift_on == true) {
return MACRO(T(DOT), T(MINS), T(DOT), T(DOT), T(MINS), T(DOT), T(SPACE), END); //.-..-.
}
else {
return MACRO(T(DOT), T(MINS), T(MINS), T(MINS), T(MINS), T(DOT), T(SPACE), END); //-....-
}
}
break;
case 39: //Punctuation /-?
if (record->event.pressed) {
if (mc_shift_on == true) {
return MACRO(T(DOT), T(DOT), T(MINS), T(MINS), T(DOT), T(DOT), T(SPACE), END); //..--..
}
else {
return MACRO(T(MINS), T(DOT), T(DOT), T(MINS), T(DOT), T(SPACE), END); //-..-.
}
}
break;
case 40: //Punctuation ;-:
if (record->event.pressed) {
if (mc_shift_on == true) {
return MACRO(T(MINS), T(MINS), T(MINS), T(DOT), T(DOT), T(DOT), T(SPACE), END); //---...
}
else {
return MACRO(T(MINS), T(DOT), T(MINS), T(DOT), T(MINS), T(DOT), T(SPACE), END); //-.-.-.
}
}
break;
case 41: //Punctuation =-+
if (record->event.pressed) {
if (mc_shift_on == true) {
return MACRO(T(DOT), T(MINS), T(DOT), T(MINS), T(DOT), T(SPACE), END); //.-.-.
}
else {
return MACRO(T(MINS), T(DOT), T(DOT), T(DOT), T(MINS), T(SPACE), END); //-...-
}
}
break;
case 42: //Punctuation --_
if (record->event.pressed) {
if (mc_shift_on == true) {
return MACRO(T(DOT), T(DOT), T(MINS), T(MINS), T(DOT), T(MINS), T(SPACE), END); //..--.-
}
else {
return MACRO(T(MINS), T(DOT), T(DOT), T(DOT), T(DOT), T(MINS), T(SPACE), END); //-....-
}
}
break;
case 43: //Morse Space
if (record->event.pressed) {
return MACRO(T(BSLS), T(SPACE), END); //When pressed, this sends a slash followed by a space, making it easier to distinguish words in Morse
}
break;
}
return MACRO_NONE;
}
// Custom Keys
bool process_record_user (uint16_t keycode, keyrecord_t *record) {
uint16_t root_note = MIDI_INVALID_NOTE; // Starting value for the root note of each chord
switch(keycode) {
// Miscellaneous Keycodes
case MAGSYS: //Magic SysRq function - Toggles key on and off depending on state of LALT key
if (record->event.pressed) {
if (keyboard_report->mods & (MOD_BIT(KC_LALT))) {
unregister_code(KC_PSCR);
unregister_code(KC_LALT);
} else {
register_code(KC_LALT);
register_code(KC_PSCR);
}
}
break;
case MC_LSFT ... MC_RSFT:
if (record->event.pressed) {
mc_shift_on = true;
}
else {
mc_shift_on = false;
}
break;
// MIDI Chord Keycodes
case MI_CH_C ... MI_CH_B: // Major Chords
root_note = keycode - MI_CH_C + MI_C;
process_midi(root_note, record);
process_midi(root_note + 4, record); // Major Third Note
process_midi(root_note + 7, record); // Fifth Note
break;
case MI_CH_Cm ... MI_CH_Bm: // Minor Chord
root_note = keycode - MI_CH_Cm + MI_C;
process_midi(root_note, record);
process_midi(root_note + 3, record); // Minor Third Note
process_midi(root_note + 7, record); // Fifth Note
break;
case MI_CH_CDom7 ... MI_CH_BDom7: // Dominant 7th Chord
root_note = keycode - MI_CH_CDom7 + MI_C;
process_midi(root_note, record);
process_midi(root_note + 4, record); // Major Third Note
process_midi(root_note + 10, record); // Minor Seventh Note
break;
case MI_CH_CDim7 ... MI_CH_BDim7: // Diminished 7th Chord
root_note = keycode - MI_CH_CDim7 + MI_C;
process_midi(root_note, record);
process_midi(root_note + 3, record); // Minor Third Note
process_midi(root_note - 3, record); // Diminished 7th Note
break;
}
return true;
}
@@ -0,0 +1,67 @@
# Bluebear’s custom S60X layout
Custom keyboard layout for my S60X, my first ever custom mechanical keyboard kit.
This layout was inspired in part by the HHKB line of keyboards and a quest to find the perfect ergonomic, logical layout for what I do. If you like this layout, please feel free to use it, modify it and share it.
## [BASE Layer](http://www.keyboard-layout-editor.com/##@_name=S60X%20-%20Bluebear%20-%20BASE%20layer&author=Ante%20Laurijssen&switchMount=cherry&switchBrand=outemu&switchType=PG150Q01-1&plate:true;&@_c=#ff7a00&fa@:0&:0&:0&:0&:0&:0&:0&:0&:0&:0&:9;;&=Esc%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%3Ci%20class/=%27kb%20kb-logo-commodore%27%3E%3C//i%3E&_c=#cccccc;&=!%0A1&=/@%0A2&=#%0A3&=$%0A4&=%25%0A5&=%5E%0A6&=/&%0A7&=*%0A8&=(%0A9&=)%0A0&=%7B%0A%5B&=%7D%0A%5D&=%7C%0A%5C&=~%0A%60;&@_w:1.5;&=Tab&=%22%0A%27&=%3C%0A,&=%3E%0A.&=P&=Y&=F&=G&=C&=R&=L&=?%0A//&=+%0A/=&_w:1.5;&=Backspace;&@_w:1.75;&=Ctrl%20(hold)%0AEsc%20%20(tap)&=A&=O&=E&=U&=I&=D&=H&=T&=N&=S&=/_%0A-&_w:2.25;&=Enter%20(tap)%0ACtrl%20(hold);&@_w:2.25;&=Shift%20(hold)%0A(%20(tap)&=/:%0A/;&=Q&=J&=K&=X&=B&=M&=W&=V&=Z&_w:2.75;&=Shift%20(hold)%0A)%20(tap);&@_w:1.25;&=Mouse%20Layer%20(hold)&_w:1.25;&=Win&_w:1.25;&=Alt&_a:5&w:6.25;&=Space%20(tap)%0AArrowFN%20Layer%20(hold)&_a:4&w:1.25;&=AltGr(h)%0AComp%20(t)&_w:1.25;&=Win&_w:1.25;&=Ctrl%20+%20Shift%20(oneshot)&_w:1.25;&=Ctrl%20+%20Alt%20(oneshot))
- Dvorak keyboard layout
- Hold left control key for LCTL, and tap it for ESC
- Hold enter key for RCTL and tap for ENT
- Hold the space key to momentarily switch to ARROWFN layer
- Left bottom key acts as momentary switch to the MOUSE layer
- Hold right alt key for AltGr and tap for APP(which I have mapped to Compose in OS)
- Hold left shift key for LSFT and tap for ( (Space Cadet style)
- Hold right shift key for RSFT and tap for ) (Space Cadet style)
- Tap key on bottom row, second from the right (where APP usually is) to get CTL-Shift (one shot modifier - next key pressed will be modified by ctl-shift)
- Tap key on bottom right to get CTL-Alt (one shot modifier - next key pressed will be modified by ctl-alt)
## [ARROWFN Layer](http://www.keyboard-layout-editor.com/##@_name=S60X%20-%20Bluebear%20-%20ARROWFN%20Layer&author=Ante%20Laurijssen&switchMount=cherry&switchBrand=outemu&switchType=PG150Q01-1&plate:true%3B&@_c=%23ff6b00&fa@:0&:0&:0&:0&:0&:0&:0&:0&:0&:0&:9%3B%3B&=Esc%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%3Ci%20class%2F=%27kb%20kb-logo-commodore%27%3E%3C%2F%2Fi%3E&_c=%23cccccc%3B&=F1&=F2&=F3&=F4&=F5&=F6&=F7&=F8&=F9&=F0&=F11&=F12&=To%20MIDI%20Layer&=To%20MORSE%20Layer%3B&@_a:7&w:1.5%3B&=&=&=&=&=&=&=&_a:4%3B&=PgUp&=%3Ci%20class%2F=%27kb%20kb-Arrows-Up%27%3E%3C%2F%2Fi%3E&_a:7%3B&=&=&=&_a:4%3B&=Ins&_w:1.5%3B&=Delete%3B&@_w:1.75%3B&=Caps%20Lock&=Home&_a:7%3B&=&_a:4%3B&=End&_a:7%3B&=&=&=&_a:4%3B&=%3Ci%20class%2F=%27kb%20kb-Arrows-Left%27%3E%3C%2F%2Fi%3E&=%3Ci%20class%2F=%27kb%20kb-Arrows-Down%27%3E%3C%2F%2Fi%3E&=%3Ci%20class%2F=%27kb%20kb-Arrows-Right%27%3E%3C%2F%2Fi%3E&_a:7%3B&=&=&_a:4&w:2.25%3B&=Enter%3B&@_a:7&w:2.25%3B&=&=&=&=&=&=&_a:4%3B&=Space&=PgDn&=Print%20Screen&=Scroll%20Lock&=Pause&_a:7&w:2.75%3B&=%3B&@_w:1.25%3B&=&_w:1.25%3B&=&_w:1.25%3B&=&_w:6.25%3B&=&_w:1.25%3B&=&_w:1.25%3B&=&_w:1.25%3B&=&_w:1.25%3B&=)
- Number row becomes F1 to F12
- C, T, H, N keys become Up, Down, Left, Right (equivalent to IJKL on QWERTY keyboard)
- Access to various other keys normally found on a full sized keyboard (INS, DEL, PSCR, SLCK, PAUSE, PGUP, PGDN, HOME, END)
- Top right button toggles MORSE layer
- Second from right, top row, toggles MIDI_BASE layer
- Holding Space-B lets you send Space repeatedly
- Hitting the LCTL button in this layer toggles caps lock
## [MOUSE Layer](http://www.keyboard-layout-editor.com/##@_name=S60X%20-%20Bluebear%20-%20MOUSE%20Layer&author=Ante%20Laurijssen&switchMount=cherry&switchBrand=outemu&switchType=PG150Q01-1&plate:true;&@_c=#ff7f08&fa@:0&:0&:0&:0&:0&:0&:0&:0&:0&:0&:9;;&=Reset%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%3Ci%20class/=%27kb%20kb-logo-commodore%27%3E%3C//i%3E&_c=#cccccc;&=F13&=F14&=F15&=F16&=F17&=F18&=F19&=F20&=F21&=F22&=F23&=F24&_a:7;&=&=;&@_a:4&w:1.5;&=Debug&_a:7;&=&=&=&=&=&=&_a:4;&=Mouse%20Button%201&_f:3;&=Mouse%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%3Ci%20class/=%27kb%20kb-Arrows-Up%27%3E%3C//i%3E&=Mouse%20Button%202&_f:3;&=Mouse%20Wheel%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%3Ci%20class/=%27kb%20kb-Arrows-Up%27%3E%3C//i%3E&_a:7;&=&=&_w:1.5;&=;&@_a:4&w:1.75;&=Ctl+%0ADel%0A%0A%0A%0A%0AAlt+&_a:7;&=&=&=&=&=&=&_a:4&f:3;&=Mouse%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%3Ci%20class/=%27kb%20kb-Arrows-Left%27%3E%3C//i%3E&_f:3;&=Mouse%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%3Ci%20class/=%27kb%20kb-Arrows-Down%27%3E%3C//i%3E&_f:3;&=Mouse%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%3Ci%20class/=%27kb%20kb-Arrows-Right%27%3E%3C//i%3E&_f:3;&=Mouse%20Wheel%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%3Ci%20class/=%27kb%20kb-Arrows-Down%27%3E%3C//i%3E&=Mouse%20Button%203&_a:7&w:2.25;&=;&@_a:4&w:2.25;&=Magic%0AToggle%0A%0A%0A%0A%0ASysRq&_a:7;&=&=&=&=&=&=&=&=&=&=&_w:2.75;&=;&@_w:1.25;&=&_w:1.25;&=&_w:1.25;&=&_a:5&w:6.25;&=Power&_a:7&w:1.25;&=&_w:1.25;&=&_w:1.25;&=&_w:1.25;&=)
- Move the mouse with mouse keys
- Hitting the escape key in this layer will give RESET, which puts the controller into dfu mode for flashing firmware onto it
- If Debug is enabled, hitting the TAB key in this layer activates debugging to the console when listening with hid-listen
- TFS button (Three Finger Salute) sends Ctl-Alt-Del
- MAGSYS toggles the Magic SysRq key (works only in Linux)
- Hitting the space key in this layer is like hitting power button on computer
- Number row becomes F13 to F24
## [MIDI_BASE Layer](http://www.keyboard-layout-editor.com/##@_name=S60X%20-%20Bluebear%20-%20MIDI%20BASE%20Layer&author=Ante%20Laurijssen&switchMount=cherry&switchBrand=outemu&switchType=PG150Q01-1&plate:true;&@_c=#ff8300&a:5&fa@:9;;&=%3Ci%20class/=%27kb%20kb-logo-commodore%27%3E%3C//i%3E%0ABASE%0A%0A%0ALayer&_c=#cccccc&a:4&f:3;&=%F0%9F%8E%B6%0ACmaj&_f:3;&=%F0%9F%8E%B6%0AGmaj&_f:3;&=%F0%9F%8E%B6%0ADmaj&_f:3;&=%F0%9F%8E%B6%0AAmaj&_f:3;&=%F0%9F%8E%B6%0AEmaj&_f:3;&=%F0%9F%8E%B6%0ABmaj&_f:3;&=%F0%9F%8E%B6%0AF#maj%0A%0A%0A%0A%0AGbmaj//&_f:3;&=%F0%9F%8E%B6%0AC#maj%0A%0A%0A%0A%0ADbmaj//&_f:3;&=%F0%9F%8E%B6%0AG#maj%0A%0A%0A%0A%0AAbmaj&_f:3;&=%F0%9F%8E%B6%0AD#maj%0A%0A%0A%0A%0AEbmaj//&_f:3;&=%F0%9F%8E%B6%0AA#maj%0A%0A%0A%0A%0ABbmaj//&_f:3;&=%F0%9F%8E%B6%0AFmaj&_a:7;&=&_a:4&f:3;&=To%0AChord%0A%0A%0A%0A%0AMidi;&@_f:3&w:1.5;&=Octave%20Up&_a:7;&=&_a:4&f:3;&=%E2%99%A9%0AC#//Db&_f:3;&=%E2%99%A9%0AD#//Eb&_a:7;&=&_a:4&f:3;&=%E2%99%A9%0AF#//Gb&_f:3;&=%E2%99%A9%0AG#//Ab&_f:3;&=%E2%99%A9%0AA#//Bb&_a:7;&=&_a:4&f:3;&=%E2%99%A9%0AD1b%0A%0A%0A%0A%0AC1#//&_f:3;&=%E2%99%A9%0AE1b%0A%0A%0A%0A%0AD1#//&_a:7;&=&=&_w:1.5;&=;&@_a:4&f:3&w:1.75;&=Octave%20Down&_f:3;&=%E2%99%A9%0AC&_f:3;&=%E2%99%A9%0AD&_f:3;&=%E2%99%A9%0AE&_f:3;&=%E2%99%A9%0AF&_f:3;&=%E2%99%A9%0AG&_f:3;&=%E2%99%A9%0AA&_f:3;&=%E2%99%A9%0AB&_f:3;&=%E2%99%A9%0AC1&_f:3;&=%E2%99%A9%0AD1&_f:3;&=%E2%99%A9%0AE1&_f:3;&=%E2%99%A9%0AF1&_a:7&w:2.25;&=;&@_a:4&f:3&w:2.25;&=%F0%9F%8E%B6%0ACm&_f:3;&=%F0%9F%8E%B6%0AGm&_f:3;&=%F0%9F%8E%B6%0ADm&_f:3;&=%F0%9F%8E%B6%0AAm&_f:3;&=%F0%9F%8E%B6%0AEm&_f:3;&=%F0%9F%8E%B6%0ABm&_f:3;&=%F0%9F%8E%B6%0AF#m%0A%0A%0A%0A%0AGbm//&_f:3;&=%F0%9F%8E%B6%0AC#m%0A%0A%0A%0A%0ADbm//&_f:3;&=%F0%9F%8E%B6%0AG#m%0A%0A%0A%0A%0AAbm//&_f:3;&=%F0%9F%8E%B6%0AD#m%0A%0A%0A%0A%0AEbm&_f:3;&=%F0%9F%8E%B6%0AA#m%0A%0A%0A%0A%0ABbm//&_f:3&w:2.75;&=%F0%9F%8E%B6%0AFm;&@_a:7&w:1.25;&=&_w:1.25;&=&_w:1.25;&=&_a:5&f:3&w:6.25;&=All%20notes%20off&_a:7&w:1.25;&=&_w:1.25;&=&_w:1.25;&=&_w:1.25;&=)
This layer was inspired by the [Satan Midi layout](https://github.com/qmk/qmk_firmware/tree/master/keyboards/satan/keymaps/midi) and gives access to basic MIDI notes. What I added were two layers of MIDI chords (major and minor triads) arranged in a circle of fifths pattern. Thanks to @fredizzimo for helping me with the code for these.
- Top right button toggles MORSE_CHORDS layer
- Escape brings you back to the BASE layer
## [MIDI_CHORD Layer](http://www.keyboard-layout-editor.com/##@_name=S60X%20-%20Bluebear%20-%20MIDI%20CHORD%20Layer&switchMount=cherry&switchBrand=outemu&switchType=PG150Q01-1&plate:true&pcb:false;&@_c=#ff8300&a:5&fa@:9;;&=%3Ci%20class/=%27kb%20kb-logo-commodore%27%3E%3C//i%3E%0ABASE%0A%0A%0ALayer&_c=#cccccc&a:4&f:3;&=%F0%9F%8E%B6%0ACmaj&_f:3;&=%F0%9F%8E%B6%0AGmaj&_f:3;&=%F0%9F%8E%B6%0ADmaj&_f:3;&=%F0%9F%8E%B6%0AAmaj&_f:3;&=%F0%9F%8E%B6%0AEmaj&_f:3;&=%F0%9F%8E%B6%0ABmaj&_f:3;&=%F0%9F%8E%B6%0AF#maj%0A%0A%0A%0A%0AGbmaj//&_f:3;&=%F0%9F%8E%B6%0AC#maj%0A%0A%0A%0A%0ADbmaj//&_f:3;&=%F0%9F%8E%B6%0AG#maj%0A%0A%0A%0A%0AAbmaj&_f:3;&=%F0%9F%8E%B6%0AD#maj%0A%0A%0A%0A%0AEbmaj//&_f:3;&=%F0%9F%8E%B6%0AA#maj%0A%0A%0A%0A%0ABbmaj//&_f:3;&=%F0%9F%8E%B6%0AFmaj&_f:3;&=To%20Midi%20Base&_a:7;&=;&@_a:4&f:3&w:1.5;&=Octave%20Up&_f:3;&=%F0%9F%8E%B6%0ACm&_f:3;&=%F0%9F%8E%B6%0AGm&_f:3;&=%F0%9F%8E%B6%0ADm&_f:3;&=%F0%9F%8E%B6%0AAm&_f:3;&=%F0%9F%8E%B6%0AEm&_f:3;&=%F0%9F%8E%B6%0ABm&_f:3;&=%F0%9F%8E%B6%0AF#m%0A%0A%0A%0A%0AGbm//&_f:3;&=%F0%9F%8E%B6%0AC#m%0A%0A%0A%0A%0ADbm//&_f:3;&=%F0%9F%8E%B6%0AG#m%0A%0A%0A%0A%0AAbm//&_f:3;&=%F0%9F%8E%B6%0AD#m%0A%0A%0A%0A%0AEbm//&_f:3;&=%F0%9F%8E%B6%0AA#m%0A%0A%0A%0A%0ABbm//&_f:3;&=%F0%9F%8E%B6%0AFm&_a:7&w:1.5;&=;&@_a:4&f:3&w:1.75;&=Octave%20Down&_f:3;&=%F0%9F%8E%B6%0AC7&_f:3;&=%F0%9F%8E%B6%0AG7&_f:3;&=%F0%9F%8E%B6%0AD7&_f:3;&=%F0%9F%8E%B6%0AA7&_f:3;&=%F0%9F%8E%B6%0AE7&_f:3;&=%F0%9F%8E%B6%0AB7&_f:3;&=%F0%9F%8E%B6%0AF#7%0A%0A%0A%0A%0AGb7//&_f:3;&=%F0%9F%8E%B6%0AC#7%0A%0A%0A%0A%0ADb7//&_f:3;&=%F0%9F%8E%B6%0AG#7%0A%0A%0A%0A%0AAb7//&_f:3;&=%F0%9F%8E%B6%0AD#7%0A%0A%0A%0A%0AEb7//&_f:3;&=%F0%9F%8E%B6%0AA#7%0A%0A%0A%0A%0ABb7//&_f:3&w:2.25;&=%F0%9F%8E%B6%0AF7;&@_f:3&w:2.25;&=%F0%9F%8E%B6%0ACdim7&_f:3;&=%F0%9F%8E%B6%0AGdim7&_f:3;&=%F0%9F%8E%B6%0ADdim7&_f:3;&=%F0%9F%8E%B6%0AAdim7&_f:3;&=%F0%9F%8E%B6%0AEdim7&_f:3;&=%F0%9F%8E%B6%0ABdim7&_f:3;&=%F0%9F%8E%B6%0Adim7%0A%0A%0A%0A%0AGb&_f:3;&=%F0%9F%8E%B6%0Adim7%0A%0A%0A%0A%0ADb&_f:3;&=%F0%9F%8E%B6%0Adim7%0A%0A%0A%0A%0AAb&_f:3;&=%F0%9F%8E%B6%0Adim7%0A%0A%0A%0A%0AEb&_f:3;&=%F0%9F%8E%B6%0Adim7%0A%0A%0A%0A%0ABb&_f:3&w:2.75;&=%F0%9F%8E%B6%0AFdim7;&@_a:7&w:1.25;&=&_w:1.25;&=&_w:1.25;&=&_a:5&f:3&w:6.25;&=All%20notes%20off&_a:7&w:1.25;&=&_w:1.25;&=&_w:1.25;&=&_w:1.25;&=)
After figuring out how to code my MIDI chord function, I decided to dedicate a full layer to these chords. This chord layout was inspired by the [Stradella Base system](https://en.wikipedia.org/wiki/Stradella_bass_system) found on accordions. This layer is a tool for musical composition and songwriting. Originally, I had written the chord functions using the F(n) functions, but finally ended up using process_record_user and custom keycodes. I think this was a more efficient and elegant way of coding these.
- Second from right, top row, toggles MIDI_BASE layer
- Escape brings you back to the BASE layer
## [MORSE LAYER](http://www.keyboard-layout-editor.com/##@_name=S60X%20-%20Bluebear%20-%20MORSE%20Layer&author=Ante%20Laurijssen&switchMount=cherry&switchBrand=outemu&switchType=PG150Q01-1&plate:true;&@_c=#ff8a00&a:5&fa@:9;;&=%3Ci%20class/=%27kb%20kb-logo-commodore%27%3E%3C//i%3E%0ABASE%0A%0A%0ALayer&_c=#cccccc&a:4&fa@:5&:5;;&=-.-.--%0A.----&=.--.-.%0A..---&=%0A...--&=...-..-%0A....-&=%0A.....&=%0A-....&=.-...%0A--...&=%0A---..&=-.--.%0A----.&=-.--.-%0A-----&_a:7;&=&=&=&=;&@_w:1.5;&=&_a:4;&=.-..-.%0A.----.&=%0A--..--&=%0A.-.-.-&=.--.&=-.--&=..-.&=--.&=-.-.&=.-.&=.-..&=..--..%0A-..-.&=.-.-.%0A-...-&_f:3&w:1.5;&=Backspace;&@_a:7&w:1.75;&=&_a:4&f:3;&=.-&_f:3;&=---&_f:3;&=.&_f:3&n:true;&=..-&_f:3;&=..&_f:3;&=-..&_f:3&n:true;&=....&_f:3;&=-&_f:3;&=-.&_f:3;&=...&_f:3;&=..--.-%0A-....-&_f:3&w:2.25;&=Enter;&@_f:3&w:2.25;&=Shift&_f:3;&=---...%0A-.-.-.&_f:3;&=--.-&_f:3;&=.---&_f:3;&=-.-&_f:3;&=-..-&_f:3;&=-...&_f:3;&=--&_f:3;&=.--&_f:3;&=...-&_f:3;&=--..&_f:3&w:2.75;&=Shift;&@_a:7&w:1.25;&=&_w:1.25;&=&_w:1.25;&=&_a:5&f:3&w:6.25;&=Space%20(%5C%20)&_a:7&w:1.25;&=&_w:1.25;&=&_w:1.25;&=&_w:1.25;&=)
This layer is really just for fun, and because I am a ham radio operator and morse code enthusiast. Hitting the alphanumerical keys in this layer will send a series of dits (.) and dahs (-) representing that character in morse code. This is all done through M(n). There are also a couple of characters that are sent through a shifted key on a regular layout, like @ or !. The same applies on this layer. And because I type using the Dvorak layout, this layer is also arranged in this manner.
- Escape brings you back to the BASE layer
### THIS IS STILL A WORK IN PROGRESS
This keyboard layout is still a work in progress and there are a couple of kinks left to iron out. But it is still very usable and the midi and morse code layers are lots of fun to use. Please feel free to use, share and improve all, or part of this layout.
+41 -96
View File
@@ -23,7 +23,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* 0: ANSI qwerty */ /* 0: ANSI qwerty */
[_BL] = ANSI_KEYMAP( [_BL] = ANSI_KEYMAP(
F(3), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, \ F(4), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, \
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_END, \ 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_END, \
F(2), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, \ F(2), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, \
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, \ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, \
@@ -34,11 +34,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ * ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
* │ │ │ │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│▒▒▒▒▒│ │ * │ │ │ │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│▒▒▒▒▒│ │
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
* │ │ │ Up │ │ │ │ │ │ │ │ │ │ │ │█████│ │ * │ │ │ Up │ │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
* │ │Left │Down │Right│ │ │ │ │ │ │ │ │▒▒▒▒▒│ │█████│ │ * │ │Left │Down │Right│ │ │ │ │ │ │ │ │▒▒▒▒▒│ │▒▒▒▒▒│ │
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
* │ │▒▒▒▒▒│ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │█████│ │ * │ │▒▒▒▒▒│ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │ │ │
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
* │ │ │ │█████│█████│█████│ │█████│█████│█████│ │ │ │ │ │ │ * │ │ │ │█████│█████│█████│ │█████│█████│█████│ │ │ │ │ │ │
* └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ * └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
@@ -52,78 +52,64 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
/* 2: Fn layer /* 2: Fn layer
* ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ * ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
* │GRAVE│ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │▒▒▒▒▒│▒▒▒▒▒│ │ * │GRAVE│ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │▒▒▒▒▒│▒▒▒▒▒│ │
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
* │ │ _AL │ Up │ │ │ │ │ │PGUP │PGDWN│PRTSC│SCLCK│PAUSE│ │█████│ │ * │ │ _AL │ Up │ │ │ │ │ │PGUP │PGDWN│PRTSC│SCLCK│PAUSE│ │▒▒▒▒▒│ │
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
* │ │Left │Down │Right│ │ │Left │Down │ Up │Right│ │ │▒▒▒▒▒│ │█████│ │ * │ │Left │Down │Right│ │ │Left │Down │ Up │Right│ │ │▒▒▒▒▒│ │▒▒▒▒▒│ │
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
* │ │▒▒▒▒▒│_UL │ │ │ │ │ │ │Home │ End │ │▒▒▒▒▒│Vol+ │█████│ │ * │ │▒▒▒▒▒│_UL │ │ │ │ │ │ │ │Home │End │▒▒▒▒▒│ │Vol+ │ │
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
* │ │ │ │█████│█████│█████│ │█████│█████│█████│ │ │Mute │Vol- │Play │ │ * │ │ │ │█████│█████│█████│ │█████│█████│█████│ │ │ │Mute │Vol- │Play │
* └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ * └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
*/ */
[_FL] = ANSI_KEYMAP( [_FL] = ANSI_KEYMAP(
KC_GRAVE, 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_TRNS, KC_TRNS, \ KC_GRAVE, 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_TRNS, KC_TRNS, \
KC_TRNS, F(1), KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_PGDN, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, \ KC_TRNS, F(1), KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_PGDN, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, \
KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, \ KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
KC_TRNS, KC_TRNS, F(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_END, KC_TRNS, KC_TRNS, KC_VOLU, KC_TRNS, KC_TRNS, \ KC_TRNS, F(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_END, KC_TRNS, KC_TRNS, KC_VOLU, KC_TRNS, \
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_MPLY, KC_TRNS), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_MPLY),
/* 3: Locking layer for controlling the underglow /* 3: Locking layer for controlling the underglow
* ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ * ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
* │ │ │ │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│▒▒▒▒▒│ │ * │ │ │ │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│▒▒▒▒▒│ │
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │█████│ │ * │ │BL On│BL St│ │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
* │ │ On │Mode │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │█████│ │ * │ │ On │Mode │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │▒▒▒▒▒│ │
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
* │ │▒▒▒▒▒│ │Hue+ │Hue- │Sat+ │Sat- │Val+ │Val- │ │ │ │▒▒▒▒▒│ │█████│ │ * │ │▒▒▒▒▒│ │Hue+ │Hue- │Sat+ │Sat- │Val+ │Val- │ │ │ │▒▒▒▒▒│ │▒▒▒▒▒│ │
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
* │ │ │ │█████│█████│█████│ │█████│█████│█████│ │ │ │ │ │ │ * │ │ │ │█████│█████│█████│ │█████│█████│█████│ │ │ │ │ │ │
* └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ * └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
*/ */
[_UL] = ANSI_KEYMAP( [_UL] = ANSI_KEYMAP(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ KC_TRNS, BL_TOGG, BL_STEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
KC_TRNS, F(4), F(5), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ KC_TRNS, RGB_TOG, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
KC_TRNS, KC_TRNS, F(6), F(7), F(8), F(9), F(10), F(11), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ KC_TRNS, KC_TRNS, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
}; };
enum function_id { enum function_id {
RGBLED_TOGGLE,
RGBLED_STEP_MODE,
RGBLED_INCREASE_HUE,
RGBLED_DECREASE_HUE,
RGBLED_INCREASE_SAT,
RGBLED_DECREASE_SAT,
RGBLED_INCREASE_VAL,
RGBLED_DECREASE_VAL,
SHIFT_ESC, SHIFT_ESC,
}; };
const uint16_t PROGMEM fn_actions[] = { const uint16_t PROGMEM fn_actions[] = {
[0] = ACTION_LAYER_MOMENTARY(_FL), // Momentary Fn overlay [0] = ACTION_LAYER_MOMENTARY(_FL), // Momentary Fn overlay
[1] = ACTION_LAYER_TOGGLE(_AL), // Toggle Arrow Layer overlay [1] = ACTION_LAYER_TOGGLE(_AL), // Toggle Arrow Layer overlay
[2] = ACTION_LAYER_TAP_KEY(_FL, KC_CAPS),// Tap to toggle caps lock and hold to activate function layer [2] = ACTION_LAYER_TAP_KEY(_FL, KC_CAPS),// Tap to toggle caps lock and hold to activate function layer
[3] = ACTION_LAYER_TOGGLE(_UL), // Toggle Underglow Layer overlay [3] = ACTION_LAYER_TOGGLE(_UL), // Toggle Underglow Layer overlay
[4] = ACTION_FUNCTION(RGBLED_TOGGLE), // Turn on/off underglow [4] = ACTION_FUNCTION(SHIFT_ESC),
[5] = ACTION_FUNCTION(RGBLED_STEP_MODE), // Change underglow mode
[6] = ACTION_FUNCTION(RGBLED_INCREASE_HUE),
[7] = ACTION_FUNCTION(RGBLED_DECREASE_HUE),
[8] = ACTION_FUNCTION(RGBLED_INCREASE_SAT),
[9] = ACTION_FUNCTION(RGBLED_DECREASE_SAT),
[10] = ACTION_FUNCTION(RGBLED_INCREASE_VAL),
[11] = ACTION_FUNCTION(RGBLED_DECREASE_VAL),
[12] = ACTION_FUNCTION(SHIFT_ESC),
}; };
void matrix_scan_user(void) { void matrix_scan_user(void) {
// Would like to do something like this, that would be cool
// Turn off all the LEDs on except for the ones mapped on the UL layer, for example
/* uint32_t layer = layer_state; */ /* uint32_t layer = layer_state; */
/* if (layer & (1<<1)) { */ /* if (layer & (1<<1)) { */
/* gh60_wasd_leds_on(); */ /* gh60_wasd_leds_on(); */
@@ -155,49 +141,8 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)) #define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
switch (id) { switch (id) {
case RGBLED_TOGGLE: static uint8_t shift_esc_shift_mask;
//led operations // Shift + ESC = ~
if (record->event.pressed) {
rgblight_toggle();
}
break;
case RGBLED_INCREASE_HUE:
if (record->event.pressed) {
rgblight_increase_hue();
}
break;
case RGBLED_DECREASE_HUE:
if (record->event.pressed) {
rgblight_decrease_hue();
}
break;
case RGBLED_INCREASE_SAT:
if (record->event.pressed) {
rgblight_increase_sat();
}
break;
case RGBLED_DECREASE_SAT:
if (record->event.pressed) {
rgblight_decrease_sat();
}
break;
case RGBLED_INCREASE_VAL:
if (record->event.pressed) {
rgblight_increase_val();
}
break;
case RGBLED_DECREASE_VAL:
if (record->event.pressed) {
rgblight_decrease_val();
}
break;
case RGBLED_STEP_MODE:
if (record->event.pressed) {
rgblight_step();
}
break;
static uint8_t shift_esc_shift_mask;
// Shift + ESC = ~
case SHIFT_ESC: case SHIFT_ESC:
shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK; shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK;
if (record->event.pressed) { if (record->event.pressed) {
+6 -6
View File
@@ -5,9 +5,9 @@ A Mac ANSI layout that assumes standard sized shifts, enter, and backspace keys.
┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
│ ESC │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │▒▒▒▒▒│BKSPC│DEL │ │ ESC │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │▒▒▒▒▒│BKSPC│DEL │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ TAB │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │█████│END │ │ TAB │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │▒▒▒▒▒│END │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│CAPSL│ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │▒▒▒▒▒│ENTER│█████│PG_UP│ │CAPSL│ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │▒▒▒▒▒│ENTER│▒▒▒▒▒│PG_UP│
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│LSHFT│▒▒▒▒▒│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │▒▒▒▒▒│RSHFT│ UP │PG_DN│ │LSHFT│▒▒▒▒▒│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │▒▒▒▒▒│RSHFT│ UP │PG_DN│
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
@@ -17,11 +17,11 @@ A Mac ANSI layout that assumes standard sized shifts, enter, and backspace keys.
┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
│GRAVE│ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │▒▒▒▒▒│▒▒▒▒▒│ │ │GRAVE│ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │▒▒▒▒▒│▒▒▒▒▒│ │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ │ _AL │ Up │ │ │ │ │ │PGUP │PGDWN│PRTSC│SCLCK│PAUSE│ │█████│ │ │ │ _AL │ Up │ │ │ │ │ │PGUP │PGDWN│PRTSC│SCLCK│PAUSE│ │▒▒▒▒▒│ │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ │Left │Down │Right│ │ │Left │Down │ Up │Right│ │ │▒▒▒▒▒│ │█████│ │ │ │Left │Down │Right│ │ │Left │Down │ Up │Right│ │ │▒▒▒▒▒│ │▒▒▒▒▒│ │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ │▒▒▒▒▒│_UL │ │ │ │ │ │ │Home │ End │ │▒▒▒▒▒│Vol+ │█████│ │ │ │▒▒▒▒▒│_UL │ │ │ │ │ │ │Home │ End │ │▒▒▒▒▒│▒▒▒▒▒│Vol+ │ │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ │ │ │█████│█████│█████│ │█████│█████│█████│ │ │Mute │Vol- │Play │ │ │ │ │ │█████│█████│█████│ │█████│█████│█████│ │ │ │Mute │Vol- │Play │
└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
+168
View File
@@ -0,0 +1,168 @@
#include "s65_x.h"
#include "action_layer.h"
#define _BL 0
#define _AL 1
#define _FL 2
#define _UL 3
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* 0: Main layer, swapped alt and GUI for Mac
* ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
* │ ESC │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │▒▒▒▒▒│BKSPC│DEL │
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
* │ TAB │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │▒▒▒▒▒│▒▒▒▒▒│END │
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
* │CAPSL│ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ ~ │▒▒▒▒▒│ENTER│PG_UP│
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
* │LSHFT│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │▒▒▒▒▒│RSHFT│ UP │PG_DN│
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
* │LCTRL│L_GUI│L_ALT│█████│█████│█████│ SPC │█████│█████│█████│R_ALT│ FN0 │ APP │LEFT │DOWN │RIGHT│
* └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
*/
/* 0: ISO qwerty */
[_BL] = ISO_KEYMAP(
F(4), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, \
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_END, \
F(2), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_GRAVE, KC_ENT, KC_PGUP, \
KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, \
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FL), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT),
/* 1: Locking arrow keys to WASD for when you need dedicated arrow keys
* ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
* │ │ │ │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│▒▒▒▒▒│ │
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
* │ │ │ Up │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│▒▒▒▒▒│ │
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
* │ │Left │Down │Right│ │ │ │ │ │ │ │ │ │▒▒▒▒▒│▒▒▒▒▒│ │
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
* │ │ │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │ │ │
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
* │ │ │ │█████│█████│█████│ │█████│█████│█████│ │ │ │ │ │ │
* └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
*/
[_AL] = ISO_KEYMAP(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
/* 2: Fn layer
* ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
* │GRAVE│ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │▒▒▒▒▒│▒▒▒▒▒│ │
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
* │ │ _AL │ Up │ │ │ │ │ │PGUP │PGDWN│PRTSC│SCLCK│PAUSE│▒▒▒▒▒│▒▒▒▒▒│ │
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
* │ │Left │Down │Right│ │ │Left │Down │ Up │Right│ │ │ │▒▒▒▒▒│▒▒▒▒▒│ │
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
* │ │ │_UL │ │ │ │ │ │ │ │ Home│ End │▒▒▒▒▒│ │Vol+ │ │
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
* │ │ │ │█████│█████│█████│ │█████│█████│█████│ │ │ │Mute │Vol- │Play │
* └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
*/
[_FL] = ISO_KEYMAP(
KC_GRAVE, 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_TRNS, KC_TRNS, \
KC_TRNS, F(1), KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_PGDN, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, \
KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
KC_TRNS, KC_TRNS, F(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_END, KC_TRNS, KC_TRNS, KC_VOLU, KC_TRNS, \
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_MPLY),
/* 3: Locking layer for controlling the underglow
* ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
* │ │ │ │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│▒▒▒▒▒│ │
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
* │ │BL On│BL St│ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│▒▒▒▒▒│ │
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
* │ │ On │Mode │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│▒▒▒▒▒│ │
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
* │ │ │ │Hue+ │Hue- │Sat+ │Sat- │Val+ │Val- │ │ │ │▒▒▒▒▒│ │ │ │
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
* │ │ │ │█████│█████│█████│ │█████│█████│█████│ │ │ │ │ │ │
* └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
*/
[_UL] = ISO_KEYMAP(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
KC_TRNS, BL_TOGG, BL_STEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
KC_TRNS, RGB_TOG, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
};
enum function_id {
SHIFT_ESC,
};
const uint16_t PROGMEM fn_actions[] = {
[0] = ACTION_LAYER_MOMENTARY(_FL), // Momentary Fn overlay
[1] = ACTION_LAYER_TOGGLE(_AL), // Toggle Arrow Layer overlay
[2] = ACTION_LAYER_TAP_KEY(_FL, KC_CAPS),// Tap to toggle caps lock and hold to activate function layer
[3] = ACTION_LAYER_TOGGLE(_UL), // Toggle Underglow Layer overlay
[12] = ACTION_FUNCTION(SHIFT_ESC),
};
void matrix_scan_user(void) {
// Would like to do something like this, that would be cool
// Turn off all the LEDs on except for the ones mapped on the UL layer, for example
/* uint32_t layer = layer_state; */
/* if (layer & (1<<1)) { */
/* gh60_wasd_leds_on(); */
/* } else { */
/* gh60_wasd_leds_off(); */
/* } */
/* */
/* if (layer & (1<<2)) { */
/* gh60_esc_led_on(); */
/* } else { */
/* gh60_esc_led_off(); */
/* } */
};
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
// MACRODOWN only works in this function
switch(id) {
case 0:
if (record->event.pressed) {
register_code(KC_RSFT);
} else {
unregister_code(KC_RSFT);
}
break;
}
return MACRO_NONE;
};
#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
switch (id) {
static uint8_t shift_esc_shift_mask;
// Shift + ESC = ~
case SHIFT_ESC:
shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK;
if (record->event.pressed) {
if (shift_esc_shift_mask) {
add_key(KC_GRV);
send_keyboard_report();
} else {
add_key(KC_ESC);
send_keyboard_report();
}
} else {
if (shift_esc_shift_mask) {
del_key(KC_GRV);
send_keyboard_report();
} else {
del_key(KC_ESC);
send_keyboard_report();
}
}
break;
}
};
+28
View File
@@ -0,0 +1,28 @@
### 1 ISO
An ISO layout that assumes standard sized shifts, enter, and backspace keys.
#### 1.0 Default layer
┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
│ ESC │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │▒▒▒▒▒│BKSPC│DEL │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ TAB │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │▒▒▒▒▒│▒▒▒▒▒│END │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│CAPSL│ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ ~ │▒▒▒▒▒│ENTER│PG_UP│
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│LSHFT│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │▒▒▒▒▒│RSHFT│ UP │PG_DN│
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│LCTRL│L_GUI│L_ALT│█████│█████│█████│ SPC │█████│█████│█████│R_ALT│ FN0 │ APP │LEFT │DOWN │RIGHT│
└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
#### 1.1 Fn layer
┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
│GRAVE│ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │▒▒▒▒▒│▒▒▒▒▒│ │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ │ _AL │ Up │ │ │ │ │ │PGUP │PGDWN│PRTSC│SCLCK│PAUSE│▒▒▒▒▒│▒▒▒▒▒│ │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ │Left │Down │Right│ │ │Left │Down │ Up │Right│ │ │ │▒▒▒▒▒│▒▒▒▒▒│ │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ │ │_UL │ │ │ │ │ │ │Home │ End │ │▒▒▒▒▒│▒▒▒▒▒│Vol+ │ │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ │ │ │█████│█████│█████│ │█████│█████│█████│ │ │ │Mute │Vol- │Play │
└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
+5 -7
View File
@@ -50,8 +50,6 @@ The █████ blocks on the layouts hides the switch positions that do not
The ▒▒▒▒▒ blocks hides switch positions not used on this particular layout, but they do exist on the PCB. The ▒▒▒▒▒ blocks hides switch positions not used on this particular layout, but they do exist on the PCB.
There is no LED support on the PCB at the moment, but I'll let the code for that untouched.
### 1 [Standard - ANSI (default layout)](keymaps/default/keymap.c) ### 1 [Standard - ANSI (default layout)](keymaps/default/keymap.c)
@@ -59,9 +57,9 @@ There is no LED support on the PCB at the moment, but I'll let the code for that
┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
│ ESC │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │▒▒▒▒▒│BKSPC│DEL │ │ ESC │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │▒▒▒▒▒│BKSPC│DEL │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ TAB │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │█████│END │ │ TAB │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │▒▒▒▒▒│END │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│CAPSL│ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │▒▒▒▒▒│ENTER│█████│PG_UP│ │CAPSL│ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │▒▒▒▒▒│ENTER│▒▒▒▒▒│PG_UP│
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│LSHFT│▒▒▒▒▒│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │▒▒▒▒▒│RSHFT│ UP │PG_DN│ │LSHFT│▒▒▒▒▒│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │▒▒▒▒▒│RSHFT│ UP │PG_DN│
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
@@ -71,11 +69,11 @@ There is no LED support on the PCB at the moment, but I'll let the code for that
┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
│GRAVE│ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │▒▒▒▒▒│▒▒▒▒▒│ │ │GRAVE│ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │▒▒▒▒▒│▒▒▒▒▒│ │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ │ _AL │ Up │ │ │ │ │ │PGUP │PGDWN│PRTSC│SCLCK│PAUSE│ │█████│ │ │ │ _AL │ Up │ │ │ │ │ │PGUP │PGDWN│PRTSC│SCLCK│PAUSE│ │▒▒▒▒▒│ │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ │Left │Down │Right│ │ │Left │Down │ Up │Right│ │ │▒▒▒▒▒│ │█████│ │ │ │Left │Down │Right│ │ │Left │Down │ Up │Right│ │ │▒▒▒▒▒│ │▒▒▒▒▒│ │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ │▒▒▒▒▒│_UL │ │ │ │ │ │ │Home │ End │ │▒▒▒▒▒│Vol+ │█████│ │ │ │▒▒▒▒▒│_UL │ │ │ │ │ │ │Home │ End │ │▒▒▒▒▒│Vol+ │▒▒▒▒▒│ │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ │ │ │█████│█████│█████│ │█████│█████│█████│ │ │Mute │Vol- │Play │ │ │ │ │ │█████│█████│█████│ │█████│█████│█████│ │ │Mute │Vol- │Play │ │
└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
-6
View File
@@ -5,7 +5,6 @@ void matrix_init_kb(void) {
// put your keyboard start-up code here // put your keyboard start-up code here
// runs once when the firmware starts up // runs once when the firmware starts up
matrix_init_user(); matrix_init_user();
led_init_ports();
}; };
void matrix_scan_kb(void) { void matrix_scan_kb(void) {
@@ -14,11 +13,6 @@ void matrix_scan_kb(void) {
matrix_scan_user(); matrix_scan_user();
}; };
void led_init_ports(void) {
// * Set our LED pins as output
DDRB |= (1<<7);
}
void led_set_kb(uint8_t usb_led) { void led_set_kb(uint8_t usb_led) {
if (usb_led & (1<<USB_LED_CAPS_LOCK)) { if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
// Turn capslock on // Turn capslock on
+20 -6
View File
@@ -9,16 +9,30 @@
K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K015, \ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K015, \
K100, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, \ K100, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, \
K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, K215, \ K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, K215, \
K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K314, K315, \ K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, K315, \
K400, K401, K402, K408, K410, K411, K412, K413, K414, K415 \ K400, K401, K402, K408, K410, K411, K412, K413, K414, K415 \
) { \ ) { \
{ KC_NO, KC_NO, K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, KC_NO, K014, K015 }, \ { KC_NO, KC_NO, K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, KC_NO, K014, K015 }, \
{ KC_NO, KC_NO, K100, KC_NO, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, KC_NO, K115 }, \ { KC_NO, KC_NO, K100, KC_NO, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115 }, \
{ KC_NO, KC_NO, K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, KC_NO, K214, K215 }, \ { KC_NO, KC_NO, K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, KC_NO, K214, K215 }, \
{ KC_NO, KC_NO, KC_NO, K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, KC_NO, K314, K315 }, \ { KC_NO, KC_NO, KC_NO, K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO, K313, K314, K315 }, \
{ KC_NO, KC_NO, K400, K401, K402, KC_NO, KC_NO, KC_NO, K408, KC_NO, KC_NO, KC_NO, K410, K411, K412, K413, K414, K415 } \ { KC_NO, KC_NO, K400, K401, K402, KC_NO, KC_NO, KC_NO, K408, KC_NO, KC_NO, KC_NO, K410, K411, K412, K413, K414, K415 } \
} }
#define ISO_KEYMAP( \
K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K015, \
K100, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K115, \
K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, \
K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, K315, \
K400, K401, K402, K408, K410, K411, K412, K413, K414, K415 \
) { \
{ KC_NO, KC_NO, K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, KC_NO, K014, K015 }, \
{ KC_NO, KC_NO, K100, KC_NO, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K214, K115 }, \
{ KC_NO, KC_NO, K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, KC_NO, K215 }, \
{ KC_NO, KC_NO, K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO, K313, K314, K315 }, \
{ KC_NO, KC_NO, K400, K401, K402, KC_NO, KC_NO, KC_NO, K408, KC_NO, KC_NO, KC_NO, K410, K411, K412, K413, K414, K415 } \
}
void matrix_init_user(void); void matrix_init_user(void);
void matrix_scan_user(void); void matrix_scan_user(void);
+12
View File
@@ -0,0 +1,12 @@
#BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
#EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
#CONSOLE_ENABLE = yes # Console for debug(+400)
#DEBUG_ENABLE = yes
#COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
TAP_DANCE_ENABLE = yes
ifndef QUANTUM_DIR
include ../../../../Makefile
endif
+105
View File
@@ -0,0 +1,105 @@
#include "tv44.h"
#include "action_layer.h"
#include "debug.h"
#include "eeconfig.h"
// Layer names. We stick to 3 letters if possible so MO(NAME) fits in 7
// characters and doesn't mess with the grid.
#define _QW 0
#define _L1 1
#define _L2 2
#define _L3 3
// Curly braces have their own keys. These are defined so they don't mess up the
// grid in layer 2.
#define L_CURBR LSFT(KC_LBRC)
#define R_CURBR LSFT(KC_RBRC)
#define L1_TAB LT(_L1, KC_TAB)
#define L2_ESC LT(_L2, KC_ESC)
#define L2_SLSH LT(_L2, KC_SLSH)
#define L3_QUOT LT(_L3, KC_QUOT)
// Tap dance magic
#define TD_LGUI TD(BE_TD_GUI)
#define TD_LCTL TD(BE_TD_CTL)
#define TD_LALT TD(BE_TD_ALT)
enum belak_td {
BE_TD_GUI = 0,
BE_TD_CTL,
BE_TD_ALT,
};
void mod_tap_fn(qk_tap_dance_state_t *state, void *user_data);
void mod_reset_fn(qk_tap_dance_state_t *state, void *user_data);
qk_tap_dance_action_t tap_dance_actions[] = {
[BE_TD_GUI] = ACTION_TAP_DANCE_FN_ADVANCED(mod_tap_fn, NULL, mod_reset_fn),
[BE_TD_CTL] = ACTION_TAP_DANCE_FN_ADVANCED(mod_tap_fn, NULL, mod_reset_fn),
[BE_TD_ALT] = ACTION_TAP_DANCE_FN_ADVANCED(mod_tap_fn, NULL, mod_reset_fn),
};
uint16_t tap_dance_keys[] = {
[BE_TD_GUI] = KC_LGUI,
[BE_TD_CTL] = KC_LCTL,
[BE_TD_ALT] = KC_LALT,
};
// Fillers to make layering more clear
#define _______ KC_TRNS
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QW] = KEYMAP_ARROW_COMMAND( /* Qwerty */
L2_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
L1_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, L3_QUOT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, L2_SLSH,
TD_LCTL, MO(_L3), TD_LALT, TD_LGUI, KC_ENT, KC_SPC, MO(_L1), KC_LEFT, KC_DOWN, KC_RGHT
),
[_L1] = KEYMAP_ARROW_COMMAND( /* LAYER 1 */
KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
_______, KC_BSLS, KC_QUOT, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_DOWN, KC_UP, KC_LEFT, KC_RGHT, _______,
_______, KC_ESC, _______, KC_PSCR, _______, _______, _______, KC_MSTP, KC_MPLY, KC_MPRV, KC_MNXT, KC_RSFT,
_______, KC_LGUI, _______, _______, _______, _______, _______, _______, _______, _______
),
[_L2] = KEYMAP_ARROW_COMMAND( /* LAYER 2 */
_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
KC_ESC, KC_PIPE, KC_DQUO, KC_UNDS, KC_PLUS, L_CURBR, R_CURBR, KC_4, KC_5, KC_6, KC_VOLU, KC_ENT,
_______, _______, _______, _______, _______, _______, KC_0, KC_1, KC_2, KC_3, KC_VOLD, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
[_L3] = KEYMAP_ARROW_COMMAND( /* LAYER 3 */
_______, _______, _______, _______, _______, _______, _______, KC_F1, KC_F2, KC_F3, KC_F4, _______,
KC_ESC, _______, _______, _______, _______, _______, _______, KC_F5, KC_F6, KC_F7, KC_F8, _______,
_______, _______, _______, _______, _______, _______, _______, KC_F9, KC_F10, KC_F11, KC_F12, _______,
_______, KC_LGUI, _______, _______, _______, _______, _______, _______, _______, _______
)
};
const uint16_t PROGMEM fn_actions[] = {};
// Tap dance functions
void mod_tap_fn(qk_tap_dance_state_t *state, void *user_data) {
switch (state->count) {
case 1:
register_mods(MOD_BIT(tap_dance_keys[state->keycode - QK_TAP_DANCE]));
send_keyboard_report();
break;
case 2:
layer_on(_L2);
break;
case 3:
layer_off(_L2);
layer_on(_L1);
break;
default:
reset_tap_dance(state);
}
}
void mod_reset_fn(qk_tap_dance_state_t *state, void *user_data) {
layer_off(_L1);
layer_off(_L2);
unregister_mods(MOD_BIT(tap_dance_keys[state->keycode - QK_TAP_DANCE]));
send_keyboard_report();
}
+6
View File
@@ -0,0 +1,6 @@
# Belak's TV44 (TV46?) layout
This layout is roughly based on the low-rider arrow-southpaw layout from [the
configurator](http://minivan.config.thevankeyboards.com) with a number of
changes to make it easier to use and add in missing keys (like adding / and '
to the main layer)
+41 -37
View File
@@ -21,48 +21,52 @@ extern keymap_config_t keymap_config;
#define DVORAK M(_DV) #define DVORAK M(_DV)
#define COLEMAK M(_CM) #define COLEMAK M(_CM)
// Curly braces have their own keys. These are defined to make them not mess up
// the grid in layer 2.
#define L_CURBR LSFT(KC_LBRC)
#define R_CURBR LSFT(KC_RBRC)
// Fillers to make layering more clear // Fillers to make layering more clear
#define _______ KC_TRNS #define _______ KC_TRNS
#define XXXXXXX KC_NO
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QW] = { /* Qwerty */ [_QW] = KEYMAP( /* Qwerty */
{KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC }, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
{MO(_L1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, MO(_L1) }, MO(_L1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, MO(_L1),
{KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MO(_L2) }, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MO(_L2),
{KC_LCTL, MO(_L2), KC_LGUI, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, KC_RALT, KC_ESC, XXXXXXX, TG(_L3) } KC_LCTL, MO(_L2), KC_LGUI, KC_ENT, KC_SPC, KC_RALT, KC_ESC, TG(_L3)
}, ),
[_DV] = { /* Dvorak */ [_DV] = KEYMAP( /* Dvorak */
{KC_TAB, KC_SLSH, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC }, KC_TAB, KC_SLSH, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC,
{MO(_L1), KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, MO(_L1) }, MO(_L1), KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, MO(_L1),
{KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, MO(_L2) }, KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, MO(_L2),
{KC_LCTL, MO(_L2), KC_LGUI, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, KC_RALT, KC_ESC, XXXXXXX, TG(_L3) } KC_LCTL, MO(_L2), KC_LGUI, KC_ENT, KC_SPC, KC_RALT, KC_ESC, TG(_L3)
}, ),
[_CM] = { /* Colemak */ [_CM] = KEYMAP( /* Colemak */
{KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC }, KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
{MO(_L1), KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, MO(_L1) }, MO(_L1), KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, MO(_L1),
{KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, MO(_L2) }, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, MO(_L2),
{KC_LCTL, MO(_L2), KC_LGUI, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, KC_RALT, KC_ESC, XXXXXXX, TG(_L3) } KC_LCTL, MO(_L2), KC_LGUI, KC_ENT, KC_SPC, KC_RALT, KC_ESC, TG(_L3)
}, ),
[_L1] = { /* LAYER 1 */ [_L1] = KEYMAP( /* LAYER 1 */
{KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL }, KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
{_______, KC_BSLS, KC_QUOT, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_DOWN, KC_UP, KC_LEFT, KC_RGHT, _______ }, _______, KC_BSLS, KC_QUOT, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_DOWN, KC_UP, KC_LEFT, KC_RGHT, _______,
{_______, KC_ESC, _______, KC_PSCR, _______, _______, _______, KC_MSTP, KC_MPLY, KC_MPRV, KC_MNXT, KC_RSFT }, _______, KC_ESC, _______, KC_PSCR, _______, _______, _______, KC_MSTP, KC_MPLY, KC_MPRV, KC_MNXT, KC_RSFT,
{_______, KC_LGUI, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, XXXXXXX, _______ } _______, KC_LGUI, _______, _______, _______, _______, _______, _______
}, ),
[_L2] = { /* LAYER 2 */ [_L2] = KEYMAP( /* LAYER 2 */
{_______, QWERTY, DVORAK, COLEMAK, _______, _______, _______, KC_7, KC_8, KC_9, KC_0, _______ }, _______, QWERTY, DVORAK, COLEMAK, _______, _______, _______, KC_7, KC_8, KC_9, KC_0, _______,
{KC_ESC, KC_PIPE, KC_DQUO, KC_UNDS, KC_PLUS, LSFT(KC_LBRC), LSFT(KC_RBRC), KC_4, KC_5, KC_6, KC_VOLU, KC_ENT }, KC_ESC, KC_PIPE, KC_DQUO, KC_UNDS, KC_PLUS, L_CURBR, R_CURBR, KC_4, KC_5, KC_6, KC_VOLU, KC_ENT,
{_______, _______, _______, _______, _______, _______, KC_0, KC_1, KC_2, KC_3, KC_VOLD, _______ }, _______, _______, _______, _______, _______, _______, KC_0, KC_1, KC_2, KC_3, KC_VOLD, _______,
{_______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, XXXXXXX, _______ } _______, _______, _______, _______, _______, _______, _______, _______
}, ),
[_L3] = { /* LAYER 3 */ [_L3] = KEYMAP( /* LAYER 3 */
{_______, _______, _______, _______, _______, _______, _______, KC_F1, KC_F2, KC_F3, KC_F4, _______ }, _______, _______, _______, _______, _______, _______, _______, KC_F1, KC_F2, KC_F3, KC_F4, _______,
{KC_ESC, _______, _______, _______, _______, _______, _______, KC_F5, KC_F6, KC_F7, KC_F8, _______ }, KC_ESC, _______, _______, _______, _______, _______, _______, KC_F5, KC_F6, KC_F7, KC_F8, _______,
{KC_LSFT, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_F9, KC_F10, KC_F11, KC_F12, _______ }, KC_LSFT, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_F9, KC_F10, KC_F11, KC_F12, _______,
{_______, KC_LSFT, KC_B, KC_SPC, XXXXXXX, XXXXXXX, XXXXXXX, KC_C, _______, _______, XXXXXXX, _______ } _______, KC_LSFT, KC_B, KC_SPC, KC_C, _______, _______, _______
} )
}; };
const uint16_t PROGMEM fn_actions[] = { const uint16_t PROGMEM fn_actions[] = {
-21
View File
@@ -1,21 +0,0 @@
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
#include "../../config.h"
/**
*TV44 keymap definition macro
*/
#define KEYMAP_TV44( \
K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, K12, \
K13, K14, K15, K16, K17, K18, K19, K20, K21, K22, K23, K24, \
K25, K26, K27, K28, K29, K30, K31, K32, K33, K34, K35, K36, \
K37, K38, K39, K40, K41, K42, K43, K44 \
) { \
{ K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, K12, }, \
{ K13, K14, K15, K16, K17, K18, K19, K20, K21, K22, K23, K24, }, \
{ K25, K26, K27, K28, K29, K30, K31, K32, K33, K34, K35, K36, }, \
{ K37, K38, K39, K40, KC_NO, KC_NO, KC_NO, K41, K42, K43, KC_NO, K44 } \
}
#endif
+9 -9
View File
@@ -91,7 +91,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | Alt | GUI | Lower | TC/Space | TC/Space | Raise | Vol+ | Play | * | Alt | GUI | Lower | TC/Space | TC/Space | Raise | Vol+ | Play |
* `--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------' * `--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------'
*/ */
[_QWERTY] = KEYMAP_TV44( [_QWERTY] = KEYMAP(
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/ /*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
HPR_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC , HPR_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC ,
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/ /*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
@@ -113,7 +113,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | Alt | GUI | Lower | TC/Space | TC/Space | Raise | Vol+ | Play | * | Alt | GUI | Lower | TC/Space | TC/Space | Raise | Vol+ | Play |
* `--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------' * `--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------'
*/ */
[_COLEMAK] = KEYMAP_TV44( [_COLEMAK] = KEYMAP(
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/ /*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
HPR_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC , HPR_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC ,
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/ /*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
@@ -135,7 +135,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | Alt | GUI | Lower | TC/Space | TC/Space | Raise | Vol+ | Play | * | Alt | GUI | Lower | TC/Space | TC/Space | Raise | Vol+ | Play |
* `--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------' * `--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------'
*/ */
[_DVORAK] = KEYMAP_TV44( [_DVORAK] = KEYMAP(
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/ /*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
HPR_TAB,KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC , HPR_TAB,KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC ,
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/ /*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
@@ -157,7 +157,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | Brite | | | | | | Vol- | Mute | * | Brite | | | | | | Vol- | Mute |
* `--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------' * `--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------'
*/ */
[_LOWER] = KEYMAP_TV44( [_LOWER] = KEYMAP(
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/ /*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
KC_TILD,KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC , KC_TILD,KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC ,
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/ /*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
@@ -179,7 +179,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | Brite | | | | | | Vol- | Mute | * | Brite | | | | | | Vol- | Mute |
* `--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------' * `--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------'
*/ */
[_RAISE] = KEYMAP_TV44( [_RAISE] = KEYMAP(
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/ /*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
KC_0 , KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC , KC_0 , KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC ,
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/ /*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
@@ -205,7 +205,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* seem to work on Mac. Presumably they'll work under Windows. * seem to work on Mac. Presumably they'll work under Windows.
*/ */
[_TOUCHCURSOR] = KEYMAP_TV44( [_TOUCHCURSOR] = KEYMAP(
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/ /*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
ALT_TAB,CMD_TAB, CTL_TAB, KC_LGUI, KC_LSFT, KC_TILD, KC_INS, KC_HOME, KC_UP, KC_END, KC_BSPC, _______ , ALT_TAB,CMD_TAB, CTL_TAB, KC_LGUI, KC_LSFT, KC_TILD, KC_INS, KC_HOME, KC_UP, KC_END, KC_BSPC, _______ ,
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/ /*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
@@ -228,7 +228,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------' * `--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------'
*/ */
[_MOUSECURSOR] = KEYMAP_TV44( [_MOUSECURSOR] = KEYMAP(
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/ /*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
_______,_______, KC_ACL0, _______, _______, _______, _______, KC_WH_L, KC_MS_U, KC_WH_R, KC_BTN2, _______ , _______,_______, KC_ACL0, _______, _______, _______, _______, KC_WH_L, KC_MS_U, KC_WH_R, KC_BTN2, _______ ,
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/ /*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
@@ -251,7 +251,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------' * `--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------'
*/ */
[_PLOVER] = KEYMAP_TV44( [_PLOVER] = KEYMAP(
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/ /*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
KC_1 , KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 , KC_1 , KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 ,
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/ /*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
@@ -273,7 +273,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | Reset | * | | | | | | | | Reset |
* `--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------' * `--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------'
*/ */
[_ADJUST] = KEYMAP_TV44( [_ADJUST] = KEYMAP(
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/ /*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
_______,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL , _______,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL ,
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/ /*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
-36
View File
@@ -1,36 +0,0 @@
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
#include "../../config.h"
/**
*TV44 keymap definition macro
*/
#define KEYMAP_TV44( \
K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, K12, \
K13, K14, K15, K16, K17, K18, K19, K20, K21, K22, K23, K24, \
K25, K26, K27, K28, K29, K30, K31, K32, K33, K34, K35, K36, \
K37, K38, K39, K40, K41, K42, K43, K44 \
) { \
{ K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, K12, }, \
{ K13, K14, K15, K16, K17, K18, K19, K20, K21, K22, K23, K24, }, \
{ K25, K26, K27, K28, K29, K30, K31, K32, K33, K34, K35, K36, }, \
{ K37, K38, K39, K40, KC_NO, KC_NO, KC_NO, K41, K42, K43, KC_NO, K44 } \
}
/**
*TV45 keymap definition macro (arrows layout)
*/
#define KEYMAP_TV45( \
K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, K12, \
K13, K14, K15, K16, K17, K18, K19, K20, K21, K22, K23, K24, \
K25, K26, K27, K28, K29, K30, K31, K32, K33, K34, K35, K36, \
K37, K38, K39, K40, K41, K42, K43, K44, K45 \
) { \
{ K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, K12, }, \
{ K13, K14, K15, K16, K17, K18, K19, K20, K21, K22, K23, K24, }, \
{ K25, K26, K27, K28, K29, K30, K31, K32, K33, K34, K35, K36, }, \
{ K37, K38, K39, K40, KC_NO, KC_NO, KC_NO, K41, K42, K43, K44, K45 } \
}
#endif
+6 -6
View File
@@ -49,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | Alt/` | GUI | Lower | Space | Space | Raise | GUI | Alt | Ctrl | * | Alt/` | GUI | Lower | Space | Space | Raise | GUI | Alt | Ctrl |
* `-------+---------+--------+-----^^^------+-----^^^------+---------+------+------+-------' * `-------+---------+--------+-----^^^------+-----^^^------+---------+------+------+-------'
*/ */
[_QWERTY] = KEYMAP_TV45( [_QWERTY] = KEYMAP_ARROW(
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/ /*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
HPR_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC , HPR_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC ,
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/ /*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
@@ -71,7 +71,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | Alt/` | GUI | Lower | Space | Space | Raise | GUI | Alt | Ctrl | * | Alt/` | GUI | Lower | Space | Space | Raise | GUI | Alt | Ctrl |
* `-------+---------+--------+-----^^^------+-----^^^------+---------+------+------+-------' * `-------+---------+--------+-----^^^------+-----^^^------+---------+------+------+-------'
*/ */
[_COLEMAK] = KEYMAP_TV45( [_COLEMAK] = KEYMAP_ARROW(
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/ /*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
HPR_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC , HPR_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC ,
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/ /*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
@@ -93,7 +93,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | Alt/` | GUI | Lower | Space | Space | Raise | GUI | Alt | Ctrl | * | Alt/` | GUI | Lower | Space | Space | Raise | GUI | Alt | Ctrl |
* `-------+---------+--------+-----^^^------+-----^^^------+---------+------+------+-------' * `-------+---------+--------+-----^^^------+-----^^^------+---------+------+------+-------'
*/ */
[_DVORAK] = KEYMAP_TV45( [_DVORAK] = KEYMAP_ARROW(
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/ /*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
HPR_TAB,KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC , HPR_TAB,KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC ,
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/ /*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
@@ -115,7 +115,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | Brite | | | Home | End | | Left | Down | Right | * | Brite | | | Home | End | | Left | Down | Right |
* `-------+---------+--------+-----^^^------+-----^^^------+---------+------+------+-------' * `-------+---------+--------+-----^^^------+-----^^^------+---------+------+------+-------'
*/ */
[_LOWER] = KEYMAP_TV45( [_LOWER] = KEYMAP_ARROW(
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/ /*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
ALL_T(KC_0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL , ALL_T(KC_0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL ,
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/ /*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
@@ -137,7 +137,7 @@ ALT_T(BACKLIT), _______ , _______ , KC_HOME , KC_END , _____
* | Brite | | | Play | Next | | Mute | Vol- | Vol+ | * | Brite | | | Play | Next | | Mute | Vol- | Vol+ |
* `-------+---------+--------+-----^^^------+-----^^^------+---------+------+------+-------' * `-------+---------+--------+-----^^^------+-----^^^------+---------+------+------+-------'
*/ */
[_RAISE] = KEYMAP_TV45( [_RAISE] = KEYMAP_ARROW(
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/ /*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
ALL_T(KC_TILD),KC_EXLM,KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL , ALL_T(KC_TILD),KC_EXLM,KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL ,
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/ /*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
@@ -159,7 +159,7 @@ ALT_T(BACKLIT), _______ , _______ , KC_MPLY , KC_MNXT , _____
* | | | | | | | | | | * | | | | | | | | | |
* `-------+---------+--------+-----^^^------+-----^^^------+---------+------+------+-------' * `-------+---------+--------+-----^^^------+-----^^^------+---------+------+------+-------'
*/ */
[_ADJUST] = KEYMAP_TV45( [_ADJUST] = KEYMAP_ARROW(
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/ /*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
_______, RESET , _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET , _______, RESET , _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET ,
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/ /*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
+1 -1
View File
@@ -4,7 +4,7 @@ This keymap is based on a combination of my Planck keymap and [jeebak's TV44 lay
I had been using something close to the default Minivan layout, but after spending a bit of time with the Planck and Preonic, I decided it would be better for me to try to standardize to some degree, where possible. I had been using something close to the default Minivan layout, but after spending a bit of time with the Planck and Preonic, I decided it would be better for me to try to standardize to some degree, where possible.
Also, it's worth noting that my Minivan is one with the "arrows" layout, which has a 45th key, so I had to define a new KEYMAP_TV45 macro in config.h. In spite of this, the 45-key Minivan is still technically considered a "TV44" as far as I know. Also, it's worth noting that my Minivan is one with the "arrows" layout, which has a 45th key. In spite of this, the 45-key Minivan is still technically considered a "TV44" as far as I know.
![smt's TV44 keymap](https://i.imgur.com/Y4n6eHj.png) ![smt's TV44 keymap](https://i.imgur.com/Y4n6eHj.png)
+30 -30
View File
@@ -31,12 +31,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | Ftn1 | GUI | Alt | Space/LOWER | Space/RAISE | ' | [ | ] | Alt | * | Ftn1 | GUI | Alt | Space/LOWER | Space/RAISE | ' | [ | ] | Alt |
* `--------------------------------------------------------------------------' * `--------------------------------------------------------------------------'
*/ */
[0] = { [0] = KEYMAP_ARROW(
{KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
{KC_LCTL,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_ENT}, KC_LCTL,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_ENT,
{KC_LSFT,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT,KC_SLSH,KC_RSFT }, KC_LSFT,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH,KC_RSFT,
{FTN ,KC_LGUI,KC_LALT,LOWER,XXXXXXX,XXXXXXX,XXXXXXX,RAISE,KC_QUOT,KC_LBRC,KC_RBRC,KC_RALT} FTN, KC_LGUI,KC_LALT, LOWER, RAISE, KC_QUOT,KC_LBRC,KC_RBRC,KC_RALT
}, ),
/* LOWER /* LOWER
* ,--------------------------------------------------------------------------. * ,--------------------------------------------------------------------------.
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | | * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | |
@@ -48,12 +48,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | END | LEFT| Down|RIGHT| * | | | | | | END | LEFT| Down|RIGHT|
* `--------------------------------------------------------------------------' * `--------------------------------------------------------------------------'
*/ */
[1] = { [1] = KEYMAP_ARROW(
{KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______}, KC_GRV, 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_MINS,KC_PLUS,KC_LBRC,KC_RBRC,KC_BSLS }, _______,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS,KC_PLUS,KC_LBRC,KC_RBRC,KC_BSLS,
{_______,KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX,KC_HOME,KC_PGUP,KC_UP ,KC_PGDN }, _______,KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX,KC_HOME,KC_PGUP,KC_UP ,KC_PGDN,
{XXXXXXX,_______,_______,_______,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,KC_END, KC_LEFT,KC_DOWN,KC_RIGHT} XXXXXXX,_______,_______, _______,XXXXXXX, KC_END, KC_LEFT,KC_DOWN,KC_RIGHT
}, ),
/* RAISE /* RAISE
* ,--------------------------------------------------------------------------. * ,--------------------------------------------------------------------------.
* | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | | * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | |
@@ -65,12 +65,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | END | LEFT| Down|RIGHT| * | | | | | | END | LEFT| Down|RIGHT|
* `--------------------------------------------------------------------------' * `--------------------------------------------------------------------------'
*/ */
[2] ={ [2] = KEYMAP_ARROW(
{KC_TILD,KC_EXLM,KC_AT, KC_HASH,KC_DLR, KC_PERC,KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,_______ }, KC_TILD,KC_EXLM,KC_AT, KC_HASH,KC_DLR, KC_PERC,KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,_______,
{_______,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS,KC_EQL, KC_LCBR,KC_RCBR,KC_PIPE }, _______,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS,KC_EQL, KC_LCBR,KC_RCBR,KC_PIPE,
{_______,KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,KC_HOME,KC_PGUP,KC_UP ,KC_PGDN }, _______,KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,KC_HOME,KC_PGUP,KC_UP ,KC_PGDN,
{XXXXXXX,_______,_______,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,_______,KC_END, KC_LEFT,KC_DOWN,KC_RIGHT} XXXXXXX,_______,_______, _______,_______, KC_END, KC_LEFT,KC_DOWN,KC_RIGHT
}, ),
/* FTN /* FTN
* ,--------------------------------------------------------------------------. * ,--------------------------------------------------------------------------.
* | ESC |WinOf|WinUp| | |Sh+Ca| | PgUp| UP | PgDo|PrtSc| DELET | * | ESC |WinOf|WinUp| | |Sh+Ca| | PgUp| UP | PgDo|PrtSc| DELET |
@@ -82,12 +82,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | DeskL | DeskR| Task Manager| DeskX | MOUSE| | | LED | * | | DeskL | DeskR| Task Manager| DeskX | MOUSE| | | LED |
* `--------------------------------------------------------------------------' * `--------------------------------------------------------------------------'
*/ */
[4] = { [4] = KEYMAP_ARROW(
{KC_ESC ,LALT(KC_F4) ,LGUI(KC_UP) ,XXXXXXX ,XXXXXXX ,S(KC_CAPS) ,XXXXXXX,KC_PGUP,KC_UP,KC_PGDN,KC_PSCR,KC_DELT}, KC_ESC ,LALT(KC_F4) ,LGUI(KC_UP) ,XXXXXXX ,XXXXXXX,S(KC_CAPS) ,XXXXXXX ,KC_PGUP,KC_UP ,KC_PGDN ,KC_PSCR,KC_DELT,
{_______,LGUI(KC_LEFT) ,LGUI(KC_DOWN) ,LGUI(KC_RIGHT) ,XXXXXXX ,LALT(KC_CAPS),KC_CAPS,KC_LEFT,KC_DOWN,KC_RIGHT,XXXXXXX,XXXXXXX}, _______,LGUI(KC_LEFT) ,LGUI(KC_DOWN) ,LGUI(KC_RIGHT),XXXXXXX,LALT(KC_CAPS) ,KC_CAPS ,KC_LEFT,KC_DOWN,KC_RIGHT,XXXXXXX,XXXXXXX,
{_______,LGUI(LSFT(KC_LEFT)),LGUI(LSFT(KC_RIGHT)),XXXXXXX ,XXXXXXX ,LCTL(KC_CAPS),KC_SLCK,KC_HOME,XXXXXXX,KC_END,XXXXXXX,KC_RCTL}, _______,LGUI(LSFT(KC_LEFT)),LGUI(LSFT(KC_RIGHT)),XXXXXXX ,XXXXXXX,LCTL(KC_CAPS) ,KC_SLCK ,KC_HOME,XXXXXXX,KC_END ,XXXXXXX,KC_RCTL,
{_______,LGUI(LCTL(KC_LEFT)),LGUI(LCTL(KC_RIGHT)),LCTL(LALT(KC_DELT)),XXXXXXX,XXXXXXX,XXXXXXX,LGUI(LCTL(KC_F4)),MOUSE,XXXXXXX,XXXXXXX,M(0)} _______,LGUI(LCTL(KC_LEFT)),LGUI(LCTL(KC_RIGHT)), LCTL(LALT(KC_DELT)),LGUI(LCTL(KC_F4)), MOUSE ,XXXXXXX ,XXXXXXX,M(0)
}, ),
/* MOUSE /* MOUSE
* ,--------------------------------------------------------------------------. * ,--------------------------------------------------------------------------.
* | | | |Mo_Up| | | |M_WhL|M_WhU|M_WhR| | RESET | * | | | |Mo_Up| | | |M_WhL|M_WhU|M_WhR| | RESET |
@@ -99,12 +99,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | GO_DEFAULT | GO_DEFAULT | | | | | * | | | | GO_DEFAULT | GO_DEFAULT | | | | |
* `--------------------------------------------------------------------------' * `--------------------------------------------------------------------------'
*/ */
[10] ={ [10] = KEYMAP_ARROW(
{XXXXXXX,XXXXXXX,XXXXXXX,KC_MS_U,XXXXXXX,XXXXXXX,XXXXXXX,KC_WH_L,KC_WH_U,KC_WH_R,XXXXXXX,RESET}, XXXXXXX,XXXXXXX,XXXXXXX,KC_MS_U,XXXXXXX,XXXXXXX,XXXXXXX,KC_WH_L,KC_WH_U,KC_WH_R,XXXXXXX,RESET,
{XXXXXXX,XXXXXXX,KC_MS_L,KC_MS_D,KC_MS_R,XXXXXXX,XXXXXXX,KC_BTN1,KC_WH_D,KC_BTN2,XXXXXXX,XXXXXXX}, XXXXXXX,XXXXXXX,KC_MS_L,KC_MS_D,KC_MS_R,XXXXXXX,XXXXXXX,KC_BTN1,KC_WH_D,KC_BTN2,XXXXXXX,XXXXXXX,
{XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,KC_ACL0,KC_ACL1,KC_ACL2,XXXXXXX,XXXXXXX}, XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,KC_ACL0,KC_ACL1,KC_ACL2,XXXXXXX,XXXXXXX,
{XXXXXXX,XXXXXXX,XXXXXXX,GO_DEFT,XXXXXXX,XXXXXXX,XXXXXXX,GO_DEFT,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX} XXXXXXX,XXXXXXX,XXXXXXX, GO_DEFT,GO_DEFT, XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX
} )
}; };
const uint16_t PROGMEM fn_actions[] = { const uint16_t PROGMEM fn_actions[] = {
+36 -36
View File
@@ -28,47 +28,47 @@ enum planck_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_DVORAK] = { /* 0: Dvorak */ [_DVORAK] = KEYMAP( /* 0: Dvorak */
{KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH}, KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH,
{KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS}, KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS,
{KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT}, KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT,
{KC_LCTL, KC_LALT, LOWER, KC_BSPC, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, RAISE, KC_LGUI, XXXXXXX, KC_ENT } KC_LCTL, KC_LALT, LOWER, KC_BSPC, KC_SPC, RAISE, KC_LGUI, KC_ENT
}, ),
[_QWERTY] = { /* 1: Qwerty */ [_QWERTY] = KEYMAP( /* 1: Qwerty */
{KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
{KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
{KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT}, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
{KC_LCTL, KC_LALT, LOWER, KC_BSPC, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, RAISE, KC_LGUI, XXXXXXX, KC_ENT } KC_LCTL, KC_LALT, LOWER, KC_BSPC, KC_SPC, RAISE, KC_LGUI, KC_ENT
}, ),
[_COLEMAK] = { /* 2: Colemak */ [_COLEMAK] = KEYMAP( /* 2: Colemak */
{KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
{KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
{KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT}, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
{KC_LCTL, KC_LALT, LOWER, KC_BSPC, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, RAISE, KC_LGUI, XXXXXXX, KC_ENT } KC_LCTL, KC_LALT, LOWER, KC_BSPC, KC_SPC, RAISE, KC_LGUI, KC_ENT
}, ),
[_LOWER] = {/* 1: FN 1 */ [_LOWER] = KEYMAP( /* 1: FN 1 */
{KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PIPE}, KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PIPE,
{_______, _______, _______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, _______, _______, _______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
{KC_CAPS, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______}, KC_CAPS, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
{KC_LEFT, KC_RGHT, _______, KC_DEL, XXXXXXX, XXXXXXX, XXXXXXX, KC_INS, _______, KC_UP, XXXXXXX, KC_DOWN} KC_LEFT, KC_RGHT, _______, KC_DEL, KC_INS, _______, KC_UP, KC_DOWN
}, ),
[_RAISE] = { /* 2: FN 2 */ [_RAISE] = KEYMAP( /* 2: FN 2 */
{KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS}, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS,
{_______, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, _______, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
{KC_CAPS, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______}, KC_CAPS, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______,
{KC_LEFT, KC_RGHT, _______, KC_DEL, XXXXXXX, XXXXXXX, XXXXXXX, KC_INS, _______, KC_UP, XXXXXXX, KC_DOWN} KC_LEFT, KC_RGHT, _______, KC_DEL, KC_INS, _______, KC_UP, KC_DOWN
}, ),
[_ADJUST] = { [_ADJUST] = KEYMAP(
{KC_F11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F12 }, KC_F11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F12,
{_______, RESET, _______, _______, _______, _______, _______, QWERTY, COLEMAK, DVORAK, _______, _______}, _______, RESET, _______, _______, _______, _______, _______, QWERTY, COLEMAK, DVORAK, _______, _______,
{_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
{KC_HOME, KC_END, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, KC_PGUP, XXXXXXX, KC_PGDN} KC_HOME, KC_END, _______, _______, _______, _______, KC_PGUP, KC_PGDN
} )
}; };
void persistent_default_layer_set(uint16_t default_layer) { void persistent_default_layer_set(uint16_t default_layer) {
+49 -4
View File
@@ -4,19 +4,64 @@
#include "quantum.h" #include "quantum.h"
// This a shortcut to help you visually see your layout. // This a shortcut to help you visually see your layout.
// The following is an example using the Planck MIT layout // There are a number of variations depending on the layout of your bottom row.
// The first section contains all of the arguements // The arrow variant adds an additional key on the bottom-right, while the
// The second converts the arguments into a two-dimensional array // command variant adds an additional key on the bottom-left. arrow-command is a
// combination of both of those, having an additional key on both sides.
//
// Please note that the numbering of the macro arguments are based on the
// numbers of the keys on the PCB.
#define KEYMAP( \ #define KEYMAP( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, \ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, \ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, \
K30, K31, K32, K33, K37, K38, K39, K3A, K3B \ K30, K31, K32, K33, K37, K38, K39, K3B \
) \
{ \
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B }, \
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B }, \
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B }, \
{ K30, K31, K32, K33, KC_NO, KC_NO, KC_NO, K37, K38, K39, KC_NO, K3B } \
}
#define KEYMAP_ARROW( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, \
K30, K31, K32, K33, K37, K38, K39, K3A, K3B \
) \ ) \
{ \ { \
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B }, \ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B }, \
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B }, \ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B }, \
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B }, \ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B }, \
{ K30, K31, K32, K33, KC_NO, KC_NO, KC_NO, K37, K38, K39, K3A, K3B } \ { K30, K31, K32, K33, KC_NO, KC_NO, KC_NO, K37, K38, K39, K3A, K3B } \
}
#define KEYMAP_COMMAND( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, \
K30, K31, K34, K32, K33, K37, K38, K39, K3B \
) \
{ \
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B }, \
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B }, \
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B }, \
{ K30, K31, K32, K33, K34, KC_NO, KC_NO, K37, K38, K39, KC_NO, K3B } \
}
#define KEYMAP_ARROW_COMMAND( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, \
K30, K31, K34, K32, K33, K37, K38, K39, K3A, K3B \
) \
{ \
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B }, \
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B }, \
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B }, \
{ K30, K31, K32, K33, K34, KC_NO, KC_NO, K37, K38, K39, K3A, K3B } \
}
#endif #endif
@@ -0,0 +1,60 @@
/*
Copyright 2015 Jun Wako <wakojun@gmail.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "whitefox.h"
const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Layer 0: Default Layer
* ,---------------------------------------------------------------.
* |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| Backsp|Ins|
* |---------------------------------------------------------------|
* | Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ |Del|
* |---------------------------------------------------------------|
* | FN | A| S| D| F| G| H| J| K| L| ;| '| Enter |PgU|
* |---------------------------------------------------------------|
* | Shift | Z| X| C| V| B| N| M| ,| .| /| Shift |Up |PgD|
* |---------------------------------------------------------------|
* |Ctrl|Gui |Alt | Space |Alt |Ctrl| |Lef|Dow|Rig|
* `---------------------------------------------------------------'
*/
[0] = KEYMAP( \
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL,KC_NO,KC_BSPC,KC_INS, \
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC, KC_BSLS, KC_DEL, \
MO(1), 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_PGUP,\
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_RSFT, KC_UP, KC_PGDN,\
KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RCTL,KC_NO, KC_LEFT,KC_DOWN,KC_RGHT \
),
/* Layer 1: FN Layer
* ,---------------------------------------------------------------.
* | ` | F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| | |
* |---------------------------------------------------------------|
* | | | | | | | | | | | | | | | |
* |---------------------------------------------------------------|
* | | | | | | | | | | | | | | |
* |---------------------------------------------------------------|
* | | | | | | | | | | | | |pup| |
* |---------------------------------------------------------------|
* | | | | | | | |hom|pdn|end|
* `---------------------------------------------------------------'
*/
[1] = 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_TRNS,KC_TRNS,KC_MUTE,\
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_PSCR,KC_SLCK,KC_PAUS,KC_TRNS, KC_TRNS,\
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_VOLU,\
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_PGUP,KC_VOLD,\
KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_HOME,KC_PGDN,KC_END \
),
};
@@ -0,0 +1,3 @@
#Jetpacktuxedo's keymap for whitefox aria
This is designed for the aria layout so you may have some keys that don't line up properly, namely around the split backspace area and the right hand bottom row mods. Additionally I use capslock as fn.
Submodule lib/ugfx updated: 13e084ae62...3e97b74e03.
+3 -3
View File
@@ -55,8 +55,8 @@
#define ES_UMLT LSFT(ES_GRV) #define ES_UMLT LSFT(ES_GRV)
#define ES_GRTR LSFT(ES_LESS) #define ES_GRTR LSFT(ES_LESS)
#define ES_SCLN LSFT(ES_COMM) #define ES_SCLN LSFT(KC_COMM)
#define ES_COLN LSFT(ES_DOT) #define ES_COLN LSFT(KC_DOT)
#define ES_UNDS LSFT(ES_MINS) #define ES_UNDS LSFT(ES_MINS)
// Alt Gr-ed characters // Alt Gr-ed characters
@@ -72,6 +72,6 @@
#define ES_RBRC ALGR(ES_PLUS) #define ES_RBRC ALGR(ES_PLUS)
#define ES_LCBR ALGR(ES_ACUT) #define ES_LCBR ALGR(ES_ACUT)
#define ES_RCRB ALGR(ES_CCED) #define ES_RCBR ALGR(ES_CCED)
#endif #endif
+8
View File
@@ -437,6 +437,14 @@ bool process_record_quantum(keyrecord_t *record) {
return false; return false;
// break; // break;
} }
case GRAVE_ESC: {
void (*method)(uint8_t) = (record->event.pressed) ? &add_key : &del_key;
uint8_t shifted = get_mods() & ((MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)
|MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI)));
method(shifted ? KC_GRAVE : KC_ESCAPE);
send_keyboard_report();
}
default: { default: {
shift_interrupted[0] = true; shift_interrupted[0] = true;
shift_interrupted[1] = true; shift_interrupted[1] = true;
+3
View File
@@ -104,6 +104,7 @@ enum quantum_keycodes {
MAGIC_UNHOST_NKRO, MAGIC_UNHOST_NKRO,
MAGIC_UNSWAP_ALT_GUI, MAGIC_UNSWAP_ALT_GUI,
MAGIC_TOGGLE_NKRO, MAGIC_TOGGLE_NKRO,
GRAVE_ESC,
// Leader key // Leader key
#ifndef DISABLE_LEADER #ifndef DISABLE_LEADER
@@ -514,6 +515,8 @@ enum quantum_keycodes {
#define MACROTAP(kc) (kc | QK_MACRO | FUNC_TAP<<8) #define MACROTAP(kc) (kc | QK_MACRO | FUNC_TAP<<8)
#define MACRODOWN(...) (record->event.pressed ? MACRO(__VA_ARGS__) : MACRO_NONE) #define MACRODOWN(...) (record->event.pressed ? MACRO(__VA_ARGS__) : MACRO_NONE)
#define KC_GESC GRAVE_ESC
// L-ayer, T-ap - 256 keycode max, 16 layer max // L-ayer, T-ap - 256 keycode max, 16 layer max
#define LT(layer, kc) (kc | QK_LAYER_TAP | ((layer & 0xF) << 8)) #define LT(layer, kc) (kc | QK_LAYER_TAP | ((layer & 0xF) << 8))
+14
View File
@@ -127,3 +127,17 @@ bool led_keyframe_normal_orientation(keyframe_animation_t* animation, visualizer
gdispGSetOrientation(LED_DISPLAY, GDISP_ROTATE_0); gdispGSetOrientation(LED_DISPLAY, GDISP_ROTATE_0);
return false; return false;
} }
bool led_keyframe_disable(keyframe_animation_t* animation, visualizer_state_t* state) {
(void)state;
(void)animation;
gdispGSetPowerMode(LED_DISPLAY, powerOff);
return false;
}
bool led_keyframe_enable(keyframe_animation_t* animation, visualizer_state_t* state) {
(void)state;
(void)animation;
gdispGSetPowerMode(LED_DISPLAY, powerOn);
return false;
}
+3
View File
@@ -35,6 +35,9 @@ bool led_keyframe_crossfade(keyframe_animation_t* animation, visualizer_state_t*
bool led_keyframe_mirror_orientation(keyframe_animation_t* animation, visualizer_state_t* state); bool led_keyframe_mirror_orientation(keyframe_animation_t* animation, visualizer_state_t* state);
bool led_keyframe_normal_orientation(keyframe_animation_t* animation, visualizer_state_t* state); bool led_keyframe_normal_orientation(keyframe_animation_t* animation, visualizer_state_t* state);
bool led_keyframe_disable(keyframe_animation_t* animation, visualizer_state_t* state);
bool led_keyframe_enable(keyframe_animation_t* animation, visualizer_state_t* state);
extern keyframe_animation_t led_test_animation; extern keyframe_animation_t led_test_animation;
+31 -3
View File
@@ -58,8 +58,11 @@ SOFTWARE.
static visualizer_keyboard_status_t current_status = { static visualizer_keyboard_status_t current_status = {
.layer = 0xFFFFFFFF, .layer = 0xFFFFFFFF,
.default_layer = 0xFFFFFFFF, .default_layer = 0xFFFFFFFF,
.mods = 0xFF,
.leds = 0xFFFFFFFF, .leds = 0xFFFFFFFF,
#ifdef BACKLIGHT_ENABLE
.backlight_level = 0,
#endif
.mods = 0xFF,
.suspended = false, .suspended = false,
#ifdef VISUALIZER_USER_DATA_SIZE #ifdef VISUALIZER_USER_DATA_SIZE
.user_data = {0} .user_data = {0}
@@ -72,6 +75,9 @@ static bool same_status(visualizer_keyboard_status_t* status1, visualizer_keyboa
status1->mods == status2->mods && status1->mods == status2->mods &&
status1->leds == status2->leds && status1->leds == status2->leds &&
status1->suspended == status2->suspended status1->suspended == status2->suspended
#ifdef BACKLIGHT_ENABLE
&& status1->backlight_level == status2->backlight_level
#endif
#ifdef VISUALIZER_USER_DATA_SIZE #ifdef VISUALIZER_USER_DATA_SIZE
&& memcmp(status1->user_data, status2->user_data, VISUALIZER_USER_DATA_SIZE) == 0 && memcmp(status1->user_data, status2->user_data, VISUALIZER_USER_DATA_SIZE) == 0
#endif #endif
@@ -279,6 +285,18 @@ static DECLARE_THREAD_FUNCTION(visualizerThread, arg) {
bool enabled = visualizer_enabled; bool enabled = visualizer_enabled;
if (force_update || !same_status(&state.status, &current_status)) { if (force_update || !same_status(&state.status, &current_status)) {
force_update = false; force_update = false;
#if BACKLIGHT_ENABLE
if(current_status.backlight_level != state.status.backlight_level) {
if (current_status.backlight_level != 0) {
gdispGSetPowerMode(LED_DISPLAY, powerOn);
uint16_t percent = (uint16_t)current_status.backlight_level * 100 / BACKLIGHT_LEVELS;
gdispGSetBacklight(LED_DISPLAY, percent);
}
else {
gdispGSetPowerMode(LED_DISPLAY, powerOff);
}
}
#endif
if (visualizer_enabled) { if (visualizer_enabled) {
if (current_status.suspended) { if (current_status.suspended) {
stop_all_keyframe_animations(); stop_all_keyframe_animations();
@@ -309,7 +327,7 @@ static DECLARE_THREAD_FUNCTION(visualizerThread, arg) {
update_keyframe_animation(animations[i], &state, delta, &sleep_time); update_keyframe_animation(animations[i], &state, delta, &sleep_time);
} }
} }
#ifdef LED_ENABLE #ifdef BACKLIGHT_ENABLE
gdispGFlush(LED_DISPLAY); gdispGFlush(LED_DISPLAY);
#endif #endif
@@ -372,7 +390,7 @@ void visualizer_init(void) {
#ifdef LCD_ENABLE #ifdef LCD_ENABLE
LCD_DISPLAY = get_lcd_display(); LCD_DISPLAY = get_lcd_display();
#endif #endif
#ifdef LED_ENABLE #ifdef BACKLIGHT_ENABLE
LED_DISPLAY = get_led_display(); LED_DISPLAY = get_led_display();
#endif #endif
@@ -445,6 +463,9 @@ void visualizer_update(uint32_t default_state, uint32_t state, uint8_t mods, uin
.default_layer = default_state, .default_layer = default_state,
.mods = mods, .mods = mods,
.leds = leds, .leds = leds,
#ifdef BACKLIGHT_ENABLE
.backlight_level = current_status.backlight_level,
#endif
.suspended = current_status.suspended, .suspended = current_status.suspended,
}; };
#ifdef VISUALIZER_USER_DATA_SIZE #ifdef VISUALIZER_USER_DATA_SIZE
@@ -467,3 +488,10 @@ void visualizer_resume(void) {
current_status.suspended = false; current_status.suspended = false;
update_status(true); update_status(true);
} }
#ifdef BACKLIGHT_ENABLE
void backlight_set(uint8_t level) {
current_status.backlight_level = level;
update_status(true);
}
#endif
+8 -1
View File
@@ -34,6 +34,10 @@ SOFTWARE.
#include "lcd_backlight.h" #include "lcd_backlight.h"
#endif #endif
#ifdef BACKLIGHT_ENABLE
#include "backlight.h"
#endif
// use this function to merge both real_mods and oneshot_mods in a uint16_t // use this function to merge both real_mods and oneshot_mods in a uint16_t
uint8_t visualizer_get_mods(void); uint8_t visualizer_get_mods(void);
@@ -65,9 +69,12 @@ struct keyframe_animation_t;
typedef struct { typedef struct {
uint32_t layer; uint32_t layer;
uint32_t default_layer; uint32_t default_layer;
uint8_t mods;
uint32_t leds; // See led.h for available statuses uint32_t leds; // See led.h for available statuses
uint8_t mods;
bool suspended; bool suspended;
#ifdef BACKLIGHT_ENABLE
uint8_t backlight_level;
#endif
#ifdef VISUALIZER_USER_DATA_SIZE #ifdef VISUALIZER_USER_DATA_SIZE
uint8_t user_data[VISUALIZER_USER_DATA_SIZE]; uint8_t user_data[VISUALIZER_USER_DATA_SIZE];
#endif #endif
+1 -2
View File
@@ -42,9 +42,8 @@ SRC += $(VISUALIZER_DIR)/resources/lcd_logo.c
OPT_DEFS += -DLCD_BACKLIGHT_ENABLE OPT_DEFS += -DLCD_BACKLIGHT_ENABLE
endif endif
ifeq ($(strip $(LED_ENABLE)), yes) ifeq ($(strip $(BACKLIGHT_ENABLE)), yes)
SRC += $(VISUALIZER_DIR)/led_keyframes.c SRC += $(VISUALIZER_DIR)/led_keyframes.c
OPT_DEFS += -DLED_ENABLE
endif endif
include $(GFXLIB)/gfx.mk include $(GFXLIB)/gfx.mk
+3
View File
@@ -28,6 +28,9 @@ void backlight_init(void)
eeconfig_init(); eeconfig_init();
} }
backlight_config.raw = eeconfig_read_backlight(); backlight_config.raw = eeconfig_read_backlight();
if (backlight_config.level > BACKLIGHT_LEVELS) {
backlight_config.level = BACKLIGHT_LEVELS;
}
backlight_set(backlight_config.enable ? backlight_config.level : 0); backlight_set(backlight_config.enable ? backlight_config.level : 0);
} }
+15 -4
View File
@@ -6,16 +6,27 @@ TRAVIS_COMMIT_RANGE="${TRAVIS_COMMIT_RANGE:-HEAD~1..HEAD}"
if [[ "$TRAVIS_COMMIT_MESSAGE" != *"[skip build]"* ]] ; then if [[ "$TRAVIS_COMMIT_MESSAGE" != *"[skip build]"* ]] ; then
exit_code=0 exit_code=0
NEFM=$(git diff --name-only -n 1 ${TRAVIS_COMMIT_RANGE} | grep -Ev '^(keyboards/)' | grep -Ev '^(docs/)' | wc -l) NEFM=$(git diff --name-only -n 1 ${TRAVIS_COMMIT_RANGE} | grep -Ev '^(keyboards/)' | grep -Ev '^(docs/)' | wc -l)
if [[ $NEFM -gt 0 ]] ; then BRANCH=$(git rev-parse --abbrev-ref HEAD)
if [ $NEFM -gt 0 -o "$BRANCH" = "master" ]; then
echo "Making all keymaps for all keyboards" echo "Making all keymaps for all keyboards"
make all-keyboards AUTOGEN="true" make all-keyboards AUTOGEN="true"
: $((exit_code = $exit_code + $?)) : $((exit_code = $exit_code + $?))
else else
MKB=$(git diff --name-only -n 1 ${TRAVIS_COMMIT_RANGE} | grep -oP '(?<=keyboards\/)([a-zA-Z0-9_]+)(?=\/)' | sort -u) MKB=$(git diff --name-only -n 1 ${TRAVIS_COMMIT_RANGE} | grep -oP '(?<=keyboards\/)([a-zA-Z0-9_]+)(?=\/)' | sort -u)
for KB in $MKB ; do for KB in $MKB ; do
echo "Making all keymaps for $KB" KEYMAP_ONLY=$(git diff --name-only -n 1 ${TRAVIS_COMMIT_RANGE} | grep -Ev '^(keyboards/'${KB}'/keymaps/)' | wc -l)
make "$KB" AUTOGEN=true if [[ $KEYMAP_ONLY -gt 0 ]]; then
: $((exit_code = $exit_code + $?)) echo "Making all keymaps for $KB"
make ${KB}-allsp-allkm AUTOGEN=true
: $((exit_code = $exit_code + $?))
else
MKM=$(git diff --name-only -n 1 ${TRAVIS_COMMIT_RANGE} | grep -oP '(?<=keyboards/'${KB}'/keymaps/)([a-zA-Z0-9_]+)(?=\/)' | sort -u)
for KM in $MKM ; do
echo "Making $KM for $KB"
make ${KB}-allsp-${KM} AUTOGEN=true
: $((exit_code = $exit_code + $?))
done
fi
done done
fi fi
exit $exit_code exit $exit_code