Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3815067377 | ||
|
|
114565fe81 | ||
|
|
e9d755b6f4 | ||
|
|
a3e1d9a8cc | ||
|
|
02f405708b | ||
|
|
916c4d799d | ||
|
|
bc59e093ec | ||
|
|
7935f563e9 | ||
|
|
5fc4a664dc | ||
|
|
8e1be7c792 | ||
|
|
7a9fb7c96b | ||
|
|
8cb413b6b7 | ||
|
|
b66a9af352 | ||
|
|
fb91d9008b | ||
|
|
1219da753b | ||
|
|
107d8031e5 | ||
|
|
1a070d6f6f | ||
|
|
e966854a65 | ||
|
|
3961e14209 | ||
|
|
d18df8ef7a | ||
|
|
933701c212 | ||
|
|
5f58a8f842 | ||
|
|
4fd5ee410c | ||
|
|
93b850048a | ||
|
|
7f3921bcb3 | ||
|
|
b529d5923f | ||
|
|
fb0d4e96e8 | ||
|
|
c93975ac94 | ||
|
|
ba59b2d97e | ||
|
|
4a5c948561 | ||
|
|
087fbe0628 | ||
|
|
308bec28bb | ||
|
|
d8c503f3ac | ||
|
|
15fbe6e233 |
No files matched your search
+4
-1
@@ -41,4 +41,7 @@ util/Win_Check_Output.txt
|
|||||||
# ignore image files
|
# ignore image files
|
||||||
*.png
|
*.png
|
||||||
*.jpg
|
*.jpg
|
||||||
*.gif
|
*.gif
|
||||||
|
|
||||||
|
# Do not ignore MiniDox left/right hand eeprom files
|
||||||
|
!keyboards/minidox/*.eep
|
||||||
+6
-1
@@ -104,6 +104,11 @@ ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
|
|||||||
SRC += $(QUANTUM_DIR)/process_keycode/process_tap_dance.c
|
SRC += $(QUANTUM_DIR)/process_keycode/process_tap_dance.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(strip $(KEY_LOCK_ENABLE)), yes)
|
||||||
|
OPT_DEFS += -DKEY_LOCK_ENABLE
|
||||||
|
SRC += $(QUANTUM_DIR)/process_keycode/process_key_lock.c
|
||||||
|
endif
|
||||||
|
|
||||||
ifeq ($(strip $(PRINTING_ENABLE)), yes)
|
ifeq ($(strip $(PRINTING_ENABLE)), yes)
|
||||||
OPT_DEFS += -DPRINTING_ENABLE
|
OPT_DEFS += -DPRINTING_ENABLE
|
||||||
SRC += $(QUANTUM_DIR)/process_keycode/process_printer.c
|
SRC += $(QUANTUM_DIR)/process_keycode/process_printer.c
|
||||||
@@ -156,4 +161,4 @@ QUANTUM_SRC:= \
|
|||||||
|
|
||||||
ifndef CUSTOM_MATRIX
|
ifndef CUSTOM_MATRIX
|
||||||
QUANTUM_SRC += $(QUANTUM_DIR)/matrix.c
|
QUANTUM_SRC += $(QUANTUM_DIR)/matrix.c
|
||||||
endif
|
endif
|
||||||
@@ -17,6 +17,7 @@
|
|||||||
* [Mouse keys](mouse_keys.md)
|
* [Mouse keys](mouse_keys.md)
|
||||||
* [Unicode](unicode.md)
|
* [Unicode](unicode.md)
|
||||||
* [Stenography](stenography.md)
|
* [Stenography](stenography.md)
|
||||||
|
* [Key Lock](key_lock.md)
|
||||||
|
|
||||||
* Reference
|
* Reference
|
||||||
* [Glossary](glossary.md)
|
* [Glossary](glossary.md)
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
## Key Lock: Holding down keys for you
|
||||||
|
|
||||||
|
Sometimes, you need to hold down a specific key for a long period of time. Whether this is while typing in ALL CAPS, or playing a video game that hasn't implemented auto-run, Key Lock is here to help. Key Lock adds a new keycode, `KC_LOCK`, that will hold down the next key you hit for you. The key is released when you hit it again. Here's an example: let's say you need to type in all caps for a few sentences. You hit KC_LOCK, and then shift. Now, shift will be considered held until you hit it again. You can think of key lock as caps lock, but supercharged.
|
||||||
|
|
||||||
|
Here's how to use it:
|
||||||
|
|
||||||
|
1. Pick a key on your keyboard. This will be the key lock key. Assign it the keycode `KC_LOCK`. This will be a single-action key: you won't be able to use it for anything else.
|
||||||
|
2. Enable key lock by including `KEY_LOCK_ENABLE = yes` in your Makefile.
|
||||||
|
3. That's it!
|
||||||
|
|
||||||
|
Important: switching layers does not cancel the key lock. Additionally, key lock is only able to hold standard action keys and One Shot modifier keys (for example, if you have your shift defined as `OSM(KC_LSFT)`; see [One Shot Keys](quantum_keycodes.md#one-shot-keys)). This does not include any of the QMK special functions (except One Shot modifiers), or shifted versions of keys such as KC_LPRN. If it's in the [basic_keycodes](basic_keycodes.md) list, it can be held. If it's not, then it can't be.
|
||||||
@@ -158,6 +158,10 @@ This enables using the Quantum SYSEX API to send strings (somewhere?)
|
|||||||
|
|
||||||
This consumes about 5390 bytes.
|
This consumes about 5390 bytes.
|
||||||
|
|
||||||
|
`KEY_LOCK_ENABLE`
|
||||||
|
|
||||||
|
This enables [key lock](key_lock.md). This consumes an additional 260 bytes.
|
||||||
|
|
||||||
## Customizing Makefile options on a per-keymap basis
|
## Customizing Makefile options on a per-keymap basis
|
||||||
|
|
||||||
If your keymap directory has a file called `Makefile` (note the filename), any Makefile options you set in that file will take precedence over other Makefile options for your particular keyboard.
|
If your keymap directory has a file called `Makefile` (note the filename), any Makefile options you set in that file will take precedence over other Makefile options for your particular keyboard.
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ On this page we have documented keycodes between `0x00FF` and `0xFFFF` which are
|
|||||||
|`FUNC(n)`/`F(n)`|Call `fn_action(n)`|
|
|`FUNC(n)`/`F(n)`|Call `fn_action(n)`|
|
||||||
|`M(n)`|to call macro n|
|
|`M(n)`|to call macro n|
|
||||||
|`MACROTAP(n)`|to macro-tap n idk FIXME|
|
|`MACROTAP(n)`|to macro-tap n idk FIXME|
|
||||||
|
|`KC_LOCK`|The [lock key](key_lock.md)|
|
||||||
|
|
||||||
## Bootmagic Keycodes
|
## Bootmagic Keycodes
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,3 @@
|
|||||||
|
ifndef MAKEFILE_INCLUDED
|
||||||
|
include ../../Makefile
|
||||||
|
endif
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
# BananaSplit60 keyboard firmware
|
||||||
|
|
||||||
|
Ported from evangs/tmk_keyboard
|
||||||
|
|
||||||
|
## Quantum MK Firmware
|
||||||
|
|
||||||
|
For the full Quantum feature list, see [the parent readme](/).
|
||||||
|
|
||||||
|
## Building
|
||||||
|
|
||||||
|
Download or clone the whole firmware and navigate to the keyboards/bananasplit folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Teensy Loader to program your .hex file.
|
||||||
|
|
||||||
|
Depending on which keymap you would like to use, you will have to compile slightly differently.
|
||||||
|
|
||||||
|
### Default
|
||||||
|
|
||||||
|
To build with the default keymap, simply run `make default`.
|
||||||
|
|
||||||
|
### Other Keymaps
|
||||||
|
|
||||||
|
Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create a folder with the name of your keymap in the keymaps folder, and see keymap documentation (you can find in top readme.md) and existant keymap files.
|
||||||
|
|
||||||
|
To build the firmware binary hex file with a keymap just do `make` with a keymap like this:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ make [default|jack|<name>]
|
||||||
|
```
|
||||||
|
|
||||||
|
Keymaps follow the format **__\<name\>.c__** and are stored in the `keymaps` folder.
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
#include "bananasplit.h"
|
||||||
|
|
||||||
|
void matrix_init_kb(void) {
|
||||||
|
// put your keyboard start-up code here
|
||||||
|
// runs once when the firmware starts up
|
||||||
|
|
||||||
|
matrix_init_user();
|
||||||
|
}
|
||||||
|
|
||||||
|
void matrix_scan_kb(void) {
|
||||||
|
// put your looping keyboard code here
|
||||||
|
// runs every cycle (a lot)
|
||||||
|
|
||||||
|
matrix_scan_user();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
// put your per-action keyboard code here
|
||||||
|
// runs for every action, just before processing by the firmware
|
||||||
|
|
||||||
|
return process_record_user(keycode, record);
|
||||||
|
}
|
||||||
|
|
||||||
|
void led_set_kb(uint8_t usb_led) {
|
||||||
|
// put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
|
||||||
|
|
||||||
|
led_set_user(usb_led);
|
||||||
|
}
|
||||||
@@ -0,0 +1,142 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2012,2013 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 BANANASPLIT_H
|
||||||
|
#define BANANASPLIT_H
|
||||||
|
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
-------------------------------------------------------------------------------------------
|
||||||
|
| K00 | K01 | K02 | K03 | K04 | K05 | K06 | K07 | K08 | K09 | K0A | K0B | K0C | K0D |
|
||||||
|
-------------------------------------------------------------------------------------------
|
||||||
|
| K10 | K11 | K12 | K13 | K14 | K15 | K16 | K17 | K18 | K19 | K1A | K1B | K1C | K1D |
|
||||||
|
-------------------------------------------------------------------------------------------
|
||||||
|
| K20 | K21 | K22 | K23 | K24 | K25 | K26 | K27 | K28 | K29 | K2A | K2B | K2C |
|
||||||
|
-------------------------------------------------------------------------------------------
|
||||||
|
| K30 | K32 | K33 | K34 | K35 | K36 | K37 | K38 | K39 | K3A | K3B | K3C | K3D |
|
||||||
|
-------------------------------------------------------------------------------------------
|
||||||
|
| K40 | K41 | K42 | K44 | K45 | K46 | K48 | K49 | K4A | K4B | K4C |
|
||||||
|
-------------------------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
#define KEYMAP( \
|
||||||
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
|
||||||
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
|
||||||
|
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
|
||||||
|
K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
|
||||||
|
K40, K41, K42, K44, K45, K46, K48, K49, K4A, K4B, K4C \
|
||||||
|
) { \
|
||||||
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
|
||||||
|
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
|
||||||
|
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KC_NO }, \
|
||||||
|
{ K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
|
||||||
|
{ K40, K41, K42, KC_NO, K44, K45, K46, KC_NO, K48, K49, K4A, K4B, K4C, KC_NO } \
|
||||||
|
}
|
||||||
|
/* Here is the above keymap filled with KC_TRNS. It's a useful starting point when defining layers.
|
||||||
|
KEYMAP( \
|
||||||
|
______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, \
|
||||||
|
______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, \
|
||||||
|
______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, \
|
||||||
|
______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______,\
|
||||||
|
______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______ \
|
||||||
|
)
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define KEYMAP_HHKBANANA( \
|
||||||
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, \
|
||||||
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
|
||||||
|
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
|
||||||
|
K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \
|
||||||
|
K40, K41, K42, K44, K45, K46, K48, K49, K4A, K4B, K4C \
|
||||||
|
) { \
|
||||||
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
|
||||||
|
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
|
||||||
|
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \
|
||||||
|
{ K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KC_NO }, \
|
||||||
|
{ K40, K41, K42, KC_NO, K44, K45, K46, KC_NO, K48, K49, K4A, K4B, K4C, KC_NO } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define KEYMAP_ANSI( \
|
||||||
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
|
||||||
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
|
||||||
|
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
|
||||||
|
K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \
|
||||||
|
K40, K41, K42, K45, K48, K49, K4B, K4C \
|
||||||
|
) { \
|
||||||
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
|
||||||
|
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
|
||||||
|
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KC_NO }, \
|
||||||
|
{ K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KC_NO }, \
|
||||||
|
{ K40, K41, K42, KC_NO, KC_NO, K45, KC_NO, KC_NO, K48, K49, KC_NO, K4B, K4C, KC_NO } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define KEYMAP_ISO( \
|
||||||
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
|
||||||
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
|
||||||
|
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
|
||||||
|
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \
|
||||||
|
K40, K41, K42, K45, K48, K49, K4B, K4C \
|
||||||
|
) { \
|
||||||
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
|
||||||
|
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
|
||||||
|
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KC_NO }, \
|
||||||
|
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KC_NO }, \
|
||||||
|
{ K40, K41, K42, KC_NO, KC_NO, K45, KC_NO, KC_NO, K48, K49, KC_NO, K4B, K4C, KC_NO } \
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
-------------------------------------------------------------------------------------------
|
||||||
|
| K00 | K01 | K02 | K03 | K04 | K05 | K06 | K07 | K08 | K09 | K0A | K0B | K0C | K0D | K2D |
|
||||||
|
-------------------------------------------------------------------------------------------
|
||||||
|
| K10 | K11 | K12 | K13 | K14 | K15 | K16 | K17 | K18 | K19 | K1A | K1B | K1C | K1D |
|
||||||
|
-------------------------------------------------------------------------------------------
|
||||||
|
| K20 | K21 | K22 | K23 | K24 | K25 | K26 | K27 | K28 | K29 | K2A | K2B | K2C |
|
||||||
|
-------------------------------------------------------------------------------------------
|
||||||
|
| K30 | K31 | K32 | K33 | K34 | K35 | K36 | K37 | K38 | K39 | K3A | K3B | K3C | K3D |
|
||||||
|
-------------------------------------------------------------------------------------------
|
||||||
|
| K40 | K41 | K42 | K44 | K45 | K46 | K48 | K49 | K4A | K4B | K4C |
|
||||||
|
-------------------------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
#define KEYMAP_ALL( \
|
||||||
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, \
|
||||||
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
|
||||||
|
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
|
||||||
|
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
|
||||||
|
K40, K41, K42, K44, K45, K46, K48, K49, K4A, K4B, K4C \
|
||||||
|
) { \
|
||||||
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
|
||||||
|
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
|
||||||
|
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \
|
||||||
|
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
|
||||||
|
{ K40, K41, K42, KC_NO, K44, K45, K46, KC_NO, K48, K49, K4A, K4B, K4C, KC_NO } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define KEYMAP_HHKB_ARROW( \
|
||||||
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, \
|
||||||
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
|
||||||
|
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
|
||||||
|
K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D,\
|
||||||
|
K40, K41, K42, K44, K45, K46, K48, K49, K4A, K4B, K4C \
|
||||||
|
) { \
|
||||||
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
|
||||||
|
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
|
||||||
|
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \
|
||||||
|
{ K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
|
||||||
|
{ K40, K41, K42, KC_NO, K44, K45, K46, KC_NO, K48, K49, K4A, K4B, K4C, KC_NO } \
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,81 @@
|
|||||||
|
/*
|
||||||
|
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 0xFEAE
|
||||||
|
#define PRODUCT_ID 0x8870
|
||||||
|
#define DEVICE_VER 0x0001
|
||||||
|
#define MANUFACTURER TheVan Keyboards
|
||||||
|
#define PRODUCT BananaSplit 60
|
||||||
|
#define DESCRIPTION keyboard firmware for BananaSplit 60
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
#define MATRIX_ROWS 5
|
||||||
|
#define MATRIX_COLS 14
|
||||||
|
|
||||||
|
#define MATRIX_ROW_PINS { B0, B2, B4, B5, B6 }
|
||||||
|
#define MATRIX_COL_PINS { F5, B1, F0, F1, F4, B3, D7, D6, D4, D5, D3, D2, D1, D0 }
|
||||||
|
#define UNUSED_PINS
|
||||||
|
|
||||||
|
#define DIODE_DIRECTION ROW2COL
|
||||||
|
|
||||||
|
/* define if matrix has ghost */
|
||||||
|
//#define MATRIX_HAS_GHOST
|
||||||
|
|
||||||
|
/* number of backlight levels */
|
||||||
|
#define BACKLIGHT_LEVELS 1
|
||||||
|
|
||||||
|
/* Set 0 if debouncing isn't needed */
|
||||||
|
#define DEBOUNCING_DELAY 5
|
||||||
|
#define TAPPING_TERM 175
|
||||||
|
|
||||||
|
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
||||||
|
#define LOCKING_SUPPORT_ENABLE
|
||||||
|
/* Locking resynchronize hack */
|
||||||
|
#define LOCKING_RESYNC_ENABLE
|
||||||
|
|
||||||
|
/* key combination for command */
|
||||||
|
#define IS_COMMAND() ( \
|
||||||
|
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Feature disable options
|
||||||
|
* These options are also useful to firmware size reduction.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* disable debug print */
|
||||||
|
//#define NO_DEBUG
|
||||||
|
|
||||||
|
/* disable print */
|
||||||
|
//#define NO_PRINT
|
||||||
|
|
||||||
|
/* disable action features */
|
||||||
|
//#define NO_ACTION_LAYER
|
||||||
|
//#define NO_ACTION_TAPPING
|
||||||
|
//#define NO_ACTION_ONESHOT
|
||||||
|
//#define NO_ACTION_MACRO
|
||||||
|
//#define NO_ACTION_FUNCTION
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
# Copyright 2017 Balz Guenat
|
||||||
|
#
|
||||||
|
# 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/>.
|
||||||
|
|
||||||
|
|
||||||
|
# QMK Build Options
|
||||||
|
# change to "no" to disable the options, or define them in the Makefile in
|
||||||
|
# the appropriate keymap folder that will get included automatically
|
||||||
|
#
|
||||||
|
# BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
||||||
|
# MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
|
||||||
|
# EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
||||||
|
# CONSOLE_ENABLE = no # Console for debug(+400)
|
||||||
|
# COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
|
# NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
|
# BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||||
|
# MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
|
||||||
|
# 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
|
||||||
|
|
||||||
|
ifndef QUANTUM_DIR
|
||||||
|
include ../../../../Makefile
|
||||||
|
endif
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
/* Copyright 2017 Balz Guenat
|
||||||
|
*
|
||||||
|
* 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_USER_H
|
||||||
|
#define CONFIG_USER_H
|
||||||
|
|
||||||
|
#include "../../config.h"
|
||||||
|
|
||||||
|
// place overrides here
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,96 @@
|
|||||||
|
/* Copyright 2017 Balz Guenat
|
||||||
|
*
|
||||||
|
* 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 "bananasplit.h"
|
||||||
|
|
||||||
|
#define ______ KC_TRNS
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
/*
|
||||||
|
-------------------------------------------------------------------------------------------
|
||||||
|
|GvEsc| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | Backspace |
|
||||||
|
-------------------------------------------------------------------------------------------
|
||||||
|
| Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ |
|
||||||
|
-------------------------------------------------------------------------------------------
|
||||||
|
| Fn1 | A | S | D | F | G | H | J | K | L | ; | ' | Enter |
|
||||||
|
-------------------------------------------------------------------------------------------
|
||||||
|
| Shift | Z | X | C | V | B | N | M | , | . | / | Shift |M(0) |
|
||||||
|
-------------------------------------------------------------------------------------------
|
||||||
|
| Ctrl | GUI | Alt | Space | Fn1 | Space | Alt | GUI | App | Ctrl |
|
||||||
|
-------------------------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
[0] = KEYMAP( \
|
||||||
|
KC_GESC, 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_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, \
|
||||||
|
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_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, M(0),\
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_RGUI, KC_NO, KC_APP, KC_RCTL \
|
||||||
|
),
|
||||||
|
/*
|
||||||
|
-------------------------------------------------------------------------------------------
|
||||||
|
| | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | |
|
||||||
|
-------------------------------------------------------------------------------------------
|
||||||
|
| CpsLck |Prev |Vol+ |Next |PgUp | Ins |Home |WrdL |WrdR | End | | | | PrtSc |
|
||||||
|
-------------------------------------------------------------------------------------------
|
||||||
|
| TRNS |Mute |Vol- |Play |PgDn | Del |Left |Down | Up |Right| | | |
|
||||||
|
-------------------------------------------------------------------------------------------
|
||||||
|
| | | | | | |DelWL|DelWR| | | | | |
|
||||||
|
-------------------------------------------------------------------------------------------
|
||||||
|
| | | | | TRNS | | | | | Reset |
|
||||||
|
-------------------------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
[1] = KEYMAP( \
|
||||||
|
______, 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_CAPS, KC_MPRV, KC_VOLU, KC_MNXT, KC_PGUP, KC_INS, KC_HOME, LCTL(KC_LEFT), LCTL(KC_RGHT), KC_END, ______, ______, ______, KC_PSCR, \
|
||||||
|
______, KC_MUTE, KC_VOLD, KC_MPLY, KC_PGDN, KC_DEL, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, ______, ______, ______, \
|
||||||
|
______, ______, ______, ______, ______, ______, LCTL(KC_BSPC), LCTL(KC_DEL), ______, ______, ______, ______, ______, \
|
||||||
|
______, ______, ______, ______, ______, ______, ______, ______, ______, ______, RESET \
|
||||||
|
),
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM fn_actions[] = {
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
|
||||||
|
switch(id) {
|
||||||
|
case 0:
|
||||||
|
// Sends Alt+Shift on both key down and key up.
|
||||||
|
// Fesigned to switch between two keyboard layouts on Windows using a locking switch.
|
||||||
|
// Does nothing if right shift is pressed for easier resync.
|
||||||
|
if (!(get_mods() & MOD_BIT(KC_RSFT)))
|
||||||
|
return MACRO(D(LALT), T(LSFT), U(LALT), END);
|
||||||
|
else
|
||||||
|
return MACRO_NONE;
|
||||||
|
}
|
||||||
|
return MACRO_NONE;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
void matrix_init_user(void) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void matrix_scan_user(void) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void led_set_user(uint8_t usb_led) {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
# /u/Coloneljesus's keymap for the Bananasplit
|
||||||
|
|
||||||
|
Default layer:
|
||||||
|
|
||||||
|
```
|
||||||
|
-------------------------------------------------------------------------------------------
|
||||||
|
|GvEsc| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | Backspace |
|
||||||
|
-------------------------------------------------------------------------------------------
|
||||||
|
| Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ |
|
||||||
|
-------------------------------------------------------------------------------------------
|
||||||
|
| Fn1 | A | S | D | F | G | H | J | K | L | ; | ' | Enter |
|
||||||
|
-------------------------------------------------------------------------------------------
|
||||||
|
| Shift | Z | X | C | V | B | N | M | , | . | / | Shift |
|
||||||
|
-------------------------------------------------------------------------------------------
|
||||||
|
| Ctrl | GUI | Alt | Space | Fn1 | Space | Alt | GUI | App | Ctrl |
|
||||||
|
-------------------------------------------------------------------------------------------
|
||||||
|
```
|
||||||
|
|
||||||
|
Fn1 layer:
|
||||||
|
|
||||||
|
```
|
||||||
|
-------------------------------------------------------------------------------------------
|
||||||
|
| | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | |
|
||||||
|
-------------------------------------------------------------------------------------------
|
||||||
|
| CpsLck |Prev |Vol+ |Next |PgUp | Ins |Home |WrdL |WrdR | End | | | | PrtSc |
|
||||||
|
-------------------------------------------------------------------------------------------
|
||||||
|
| TRNS |Mute |Vol- |Play |PgDn | Del |Left |Down | Up |Right| | | |
|
||||||
|
-------------------------------------------------------------------------------------------
|
||||||
|
| | | | | | |DelWL|DelWR| | | | |
|
||||||
|
-------------------------------------------------------------------------------------------
|
||||||
|
| | | | | TRNS | | | | | Reset |
|
||||||
|
-------------------------------------------------------------------------------------------
|
||||||
|
```
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
# Copyright 2017 Balz Guenat
|
||||||
|
#
|
||||||
|
# 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/>.
|
||||||
|
|
||||||
|
|
||||||
|
# QMK Build Options
|
||||||
|
# change to "no" to disable the options, or define them in the Makefile in
|
||||||
|
# the appropriate keymap folder that will get included automatically
|
||||||
|
#
|
||||||
|
# BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
||||||
|
# MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
|
||||||
|
# EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
||||||
|
# CONSOLE_ENABLE = no # Console for debug(+400)
|
||||||
|
# COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
|
# NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
|
# BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||||
|
# MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
|
||||||
|
# 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
|
||||||
|
|
||||||
|
ifndef QUANTUM_DIR
|
||||||
|
include ../../../../Makefile
|
||||||
|
endif
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
/* Copyright 2017 Balz Guenat
|
||||||
|
*
|
||||||
|
* 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_USER_H
|
||||||
|
#define CONFIG_USER_H
|
||||||
|
|
||||||
|
#include "../../config.h"
|
||||||
|
|
||||||
|
// place overrides here
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
#include "bananasplit.h"
|
||||||
|
|
||||||
|
#define DEFAULT_LAYER 0
|
||||||
|
#define LAYER_1 1
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[DEFAULT_LAYER] = 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_BSPC, \
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
|
||||||
|
KC_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, RSFT_T(KC_SLSH), KC_UP, _______, \
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_ENT, MO(LAYER_1), KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
|
||||||
|
),
|
||||||
|
|
||||||
|
[LAYER_1] = KEYMAP( \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
||||||
|
),
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM fn_actions[] = {
|
||||||
|
};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
# The default keymap for the Bananasplit
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
#include "bananasplit.h"
|
||||||
|
|
||||||
|
#define DEFAULT_LAYER 0
|
||||||
|
#define LAYER_1 1
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[DEFAULT_LAYER] = KEYMAP_HHKBANANA( \
|
||||||
|
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_PSCR, \
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, \
|
||||||
|
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
|
||||||
|
KC_LSFT, 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_LGUI, KC_LALT, KC_ENT, MO(LAYER_1), KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT \
|
||||||
|
),
|
||||||
|
|
||||||
|
[LAYER_1] = KEYMAP_HHKBANANA( \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
||||||
|
),
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM fn_actions[] = {
|
||||||
|
};
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
#include "bananasplit.h"
|
||||||
|
|
||||||
|
#define DEFAULT_LAYER 0
|
||||||
|
#define THUMB_LAYER 1
|
||||||
|
#define NORMAN_LAYER 2
|
||||||
|
#define MOD_LAYER 3
|
||||||
|
|
||||||
|
#define HYPER_TAB ALL_T(KC_TAB)
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[DEFAULT_LAYER] = KEYMAP_HHKB_ARROW( \
|
||||||
|
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_BSLS, KC_DEL, \
|
||||||
|
HYPER_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, \
|
||||||
|
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_ENT, \
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), KC_UP, TG(NORMAN_LAYER), \
|
||||||
|
KC_CAPS, KC_LALT, KC_LGUI, KC_SPC, MO(THUMB_LAYER), KC_SPC, KC_LGUI, KC_LALT, KC_LEFT, KC_DOWN, KC_RIGHT \
|
||||||
|
),
|
||||||
|
|
||||||
|
[THUMB_LAYER] = KEYMAP_HHKB_ARROW( \
|
||||||
|
MO(MOD_LAYER), 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_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
||||||
|
),
|
||||||
|
|
||||||
|
[NORMAN_LAYER] = KEYMAP_HHKB_ARROW( \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, KC_D, KC_F, KC_K, KC_J, KC_U, KC_R, KC_L, KC_SCLN, _______, _______, _______, \
|
||||||
|
_______, _______, _______, KC_E, KC_T, _______, KC_Y, KC_N, KC_I, KC_O, KC_H, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, KC_P, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
||||||
|
),
|
||||||
|
|
||||||
|
[MOD_LAYER] = KEYMAP_HHKB_ARROW( \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
||||||
|
),
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM fn_actions[] = {
|
||||||
|
};
|
||||||
@@ -0,0 +1,65 @@
|
|||||||
|
# MCU name
|
||||||
|
#MCU = at90usb1287
|
||||||
|
MCU = atmega32u4
|
||||||
|
|
||||||
|
# Processor frequency.
|
||||||
|
# This will define a symbol, F_CPU, in all source code files equal to the
|
||||||
|
# processor frequency in Hz. You can then use this symbol in your source code to
|
||||||
|
# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
|
||||||
|
# automatically to create a 32-bit value in your source code.
|
||||||
|
#
|
||||||
|
# This will be an integer division of F_USB below, as it is sourced by
|
||||||
|
# F_USB after it has run through any CPU prescalers. Note that this value
|
||||||
|
# does not *change* the processor frequency - it should merely be updated to
|
||||||
|
# reflect the processor speed set externally so that the code can use accurate
|
||||||
|
# software delays.
|
||||||
|
F_CPU = 16000000
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# LUFA specific
|
||||||
|
#
|
||||||
|
# Target architecture (see library "Board Types" documentation).
|
||||||
|
ARCH = AVR8
|
||||||
|
|
||||||
|
# Input clock frequency.
|
||||||
|
# This will define a symbol, F_USB, in all source code files equal to the
|
||||||
|
# input clock frequency (before any prescaling is performed) in Hz. This value may
|
||||||
|
# differ from F_CPU if prescaling is used on the latter, and is required as the
|
||||||
|
# raw input clock is fed directly to the PLL sections of the AVR for high speed
|
||||||
|
# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
|
||||||
|
# at the end, this will be done automatically to create a 32-bit value in your
|
||||||
|
# source code.
|
||||||
|
#
|
||||||
|
# If no clock division is performed on the input clock inside the AVR (via the
|
||||||
|
# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
|
||||||
|
F_USB = $(F_CPU)
|
||||||
|
|
||||||
|
# Interrupt driven control endpoint task(+60)
|
||||||
|
OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
|
||||||
|
|
||||||
|
|
||||||
|
# Boot Section Size in *bytes*
|
||||||
|
# Teensy halfKay 512
|
||||||
|
# Teensy++ halfKay 1024
|
||||||
|
# Atmel DFU loader 4096
|
||||||
|
# LUFA bootloader 4096
|
||||||
|
# USBaspLoader 2048
|
||||||
|
OPT_DEFS += -DBOOTLOADER_SIZE=4096
|
||||||
|
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# comment out to disable the options.
|
||||||
|
#
|
||||||
|
BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
|
||||||
|
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
|
||||||
|
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
||||||
|
CONSOLE_ENABLE = yes # Console for debug(+400)
|
||||||
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
|
#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
|
||||||
|
NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
|
||||||
|
BACKLIGHT_ENABLE = yes
|
||||||
|
|
||||||
|
|
||||||
|
# Optimize size but this may cause error "relocation truncated to fit"
|
||||||
|
#EXTRALDFLAGS = -Wl,--relax
|
||||||
@@ -3,7 +3,7 @@ LCD_BACKLIGHT_ENABLE = yes
|
|||||||
LCD_ENABLE = yes
|
LCD_ENABLE = yes
|
||||||
BACKLIGHT_ENABLE = yes
|
BACKLIGHT_ENABLE = yes
|
||||||
NKRO_ENABLE = yes
|
NKRO_ENABLE = yes
|
||||||
TAP_DANCE_ENABLE = yes
|
KEY_LOCK_ENABLE = yes
|
||||||
|
|
||||||
ifndef QUANTUM_DIR
|
ifndef QUANTUM_DIR
|
||||||
include ../../../../Makefile
|
include ../../../../Makefile
|
||||||
|
|||||||
@@ -40,15 +40,6 @@ enum custom_macros {
|
|||||||
KEEPASS_TYPE,
|
KEEPASS_TYPE,
|
||||||
};
|
};
|
||||||
|
|
||||||
// Tap Dance Definitions
|
|
||||||
enum tap_dance_custom_keys {
|
|
||||||
TD_SEMICOLON_COLON = 0
|
|
||||||
};
|
|
||||||
|
|
||||||
qk_tap_dance_action_t tap_dance_actions[] = {
|
|
||||||
[TD_SEMICOLON_COLON] = ACTION_TAP_DANCE_DOUBLE(KC_SCLN, KC_COLON)
|
|
||||||
};
|
|
||||||
|
|
||||||
// NOTE: Cells marked with ACCESS must remain transparent, they're the keys that actually get to that layer
|
// NOTE: Cells marked with ACCESS must remain transparent, they're the keys that actually get to that layer
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
@@ -59,14 +50,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||||
* | TAB | Q | W | E | R | T | L2 | | L2 | Y | U | I | O | P | \ |
|
* | TAB | Q | W | E | R | T | L2 | | L2 | Y | U | I | O | P | \ |
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
* | Esc | A | S | D |LT 3,F| G |------| |------| H | J | K | L |; / : | ' |
|
* | Esc | A | S | D |LT 3,F| G |------| |------| H | J | K | L | ; | ' |
|
||||||
* |--------+------+------+------+------+------| L1 | |MO(3) |------+------+------+------+------+--------|
|
* |--------+------+------+------+------+------| L1 | |MO(3) |------+------+------+------+------+--------|
|
||||||
* | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift |
|
* | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift |
|
||||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||||
* |LCTRL | F4 | F5 | LGUI | LALT | | Left | Down | Up | Right| RGUI |
|
* |LCTRL | F4 | F5 | LGUI | LALT | | Left | Down | Up | Right| RGUI |
|
||||||
* `----------------------------------' `----------------------------------'
|
* `----------------------------------' `----------------------------------'
|
||||||
* ,-------------. ,-------------.
|
* ,-------------. ,-------------.
|
||||||
* | Copy | Paste| | Alt |Ctrl/Esc|
|
* | Copy | Paste| | Alt | Lock |
|
||||||
* ,------|------|------| |------+--------+------.
|
* ,------|------|------| |------+--------+------.
|
||||||
* | | | PgUp | | PgDn | | |
|
* | | | PgUp | | PgDn | | |
|
||||||
* | Bcksp|OSL(2)|------| |------| Ent |Space |
|
* | Bcksp|OSL(2)|------| |------| Ent |Space |
|
||||||
@@ -86,12 +77,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
KC_PGUP,
|
KC_PGUP,
|
||||||
KC_BSPC,OSL(SYMB), KC_DEL,
|
KC_BSPC,OSL(SYMB), KC_DEL,
|
||||||
// right hand
|
// right hand
|
||||||
TG(CODE), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
|
TG(CODE), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
|
||||||
TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
|
TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
|
||||||
KC_H, KC_J, KC_K, KC_L, TD(TD_SEMICOLON_COLON),KC_QUOT,
|
KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||||
MO(MDIA), KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), OSM(MOD_RSFT),
|
MO(MDIA), KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), OSM(MOD_RSFT),
|
||||||
KC_LEFT,KC_DOWN,KC_UP, KC_RIGHT, KC_RGUI,
|
KC_LEFT,KC_DOWN,KC_UP, KC_RIGHT, KC_RGUI,
|
||||||
KC_RALT, CTL_T(KC_ESC),
|
KC_RALT, KC_LOCK,
|
||||||
KC_PGDN,
|
KC_PGDN,
|
||||||
KC_RCTL, KC_ENT, KC_SPC
|
KC_RCTL, KC_ENT, KC_SPC
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -161,7 +161,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
|
|
||||||
#define ___ KC_NO
|
#define ___ KC_NO
|
||||||
|
|
||||||
#define KEYMAP( \
|
#define KEYMAP_CUSTOM( \
|
||||||
k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
|
k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
|
||||||
k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, \
|
k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, \
|
||||||
k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \
|
k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \
|
||||||
|
|||||||
@@ -686,7 +686,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* | Ctrl | Alt | GUI | Punc | Num | Space | Fun |Greek | GUI |AltGr | Ctrl |
|
* | Ctrl | Alt | GUI | Punc | Num | Space | Fun |Greek | GUI |AltGr | Ctrl |
|
||||||
* `-----------------------------------------------------------------------------------'
|
* `-----------------------------------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
[_QWERTY] = KEYMAP(
|
[_QWERTY] = KEYMAP_CUSTOM(
|
||||||
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_QUOT, KC_ENT ,
|
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, 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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
|
||||||
@@ -706,7 +706,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* `-----------------------------------------------------------------------------------'
|
* `-----------------------------------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
#ifdef LAYOUT_DVORAK
|
#ifdef LAYOUT_DVORAK
|
||||||
[_DVORAK] = KEYMAP(
|
[_DVORAK] = KEYMAP_CUSTOM(
|
||||||
_______, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, _______,
|
_______, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, _______,
|
||||||
_______, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, _______,
|
_______, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, _______,
|
||||||
_______, KC_SLSH, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, _______,
|
_______, KC_SLSH, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, _______,
|
||||||
@@ -728,7 +728,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef LAYOUT_COLEMAK
|
#ifdef LAYOUT_COLEMAK
|
||||||
[_COLEMAK] = KEYMAP(
|
[_COLEMAK] = KEYMAP_CUSTOM(
|
||||||
_______, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_QUOT, _______,
|
_______, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_QUOT, _______,
|
||||||
_______, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, _______,
|
_______, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, _______,
|
||||||
_______, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, _______,
|
_______, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, _______,
|
||||||
@@ -750,7 +750,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef LAYOUT_NORMAN
|
#ifdef LAYOUT_NORMAN
|
||||||
[_NORMAN] = KEYMAP(
|
[_NORMAN] = KEYMAP_CUSTOM(
|
||||||
_______, KC_Q, KC_W, KC_D, KC_F, KC_K, KC_J, KC_U, KC_R, KC_L, KC_QUOT, _______,
|
_______, KC_Q, KC_W, KC_D, KC_F, KC_K, KC_J, KC_U, KC_R, KC_L, KC_QUOT, _______,
|
||||||
_______, KC_A, KC_S, KC_E, KC_T, KC_G, KC_Y, KC_N, KC_I, KC_O, KC_H, _______,
|
_______, KC_A, KC_S, KC_E, KC_T, KC_G, KC_Y, KC_N, KC_I, KC_O, KC_H, _______,
|
||||||
_______, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_P, KC_M, KC_COMM, KC_DOT, KC_SLSH, _______,
|
_______, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_P, KC_M, KC_COMM, KC_DOT, KC_SLSH, _______,
|
||||||
@@ -772,7 +772,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef LAYOUT_WORKMAN
|
#ifdef LAYOUT_WORKMAN
|
||||||
[_WORKMAN] = KEYMAP(
|
[_WORKMAN] = KEYMAP_CUSTOM(
|
||||||
_______, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_QUOT, _______,
|
_______, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_QUOT, _______,
|
||||||
_______, KC_A, KC_S, KC_H, KC_T, KC_G, KC_Y, KC_N, KC_E, KC_O, KC_I, _______,
|
_______, KC_A, KC_S, KC_H, KC_T, KC_G, KC_Y, KC_N, KC_E, KC_O, KC_I, _______,
|
||||||
_______, KC_Z, KC_X, KC_M, KC_C, KC_V, KC_K, KC_L, KC_COMM, KC_DOT, KC_SLSH, _______,
|
_______, KC_Z, KC_X, KC_M, KC_C, KC_V, KC_K, KC_L, KC_COMM, KC_DOT, KC_SLSH, _______,
|
||||||
@@ -792,7 +792,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* | | | | | | | | | | : | |
|
* | | | | | | | | | | : | |
|
||||||
* `-----------------------------------------------------------------------------------'
|
* `-----------------------------------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
[_PUNC] = KEYMAP(
|
[_PUNC] = KEYMAP_CUSTOM(
|
||||||
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, X(LTEQ), X(GTEQ), _______,
|
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, X(LTEQ), X(GTEQ), _______,
|
||||||
KC_GRV, KC_ASTR, KC_BSLS, KC_MINS, KC_EQL, KC_SLSH, X(NOTEQ),KC_LPRN, KC_RPRN, KC_LABK, KC_RABK, _______,
|
KC_GRV, KC_ASTR, KC_BSLS, KC_MINS, KC_EQL, KC_SLSH, X(NOTEQ),KC_LPRN, KC_RPRN, KC_LABK, KC_RABK, _______,
|
||||||
KC_AMPR, KC_CIRC, KC_PIPE, KC_UNDS, KC_PLUS, KC_QUES, X(PLMIN),KC_LBRC, KC_RBRC, KC_LCBR, KC_RCBR, _______,
|
KC_AMPR, KC_CIRC, KC_PIPE, KC_UNDS, KC_PLUS, KC_QUES, X(PLMIN),KC_LBRC, KC_RBRC, KC_LCBR, KC_RCBR, _______,
|
||||||
@@ -811,7 +811,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* | | | x | | | | | 0 | , | . | : | |
|
* | | | x | | | | | 0 | , | . | : | |
|
||||||
* `-----------------------------------------------------------------------------------'
|
* `-----------------------------------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
[_NUM] = KEYMAP(
|
[_NUM] = KEYMAP_CUSTOM(
|
||||||
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, S(KC_A), KC_1, KC_2, KC_3, S(KC_D), _______,
|
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, S(KC_A), KC_1, KC_2, KC_3, S(KC_D), _______,
|
||||||
KC_GRV, KC_ASTR, KC_BSLS, KC_MINS, KC_EQL, KC_SLSH, S(KC_B), KC_4, KC_5, KC_6, S(KC_E), _______,
|
KC_GRV, KC_ASTR, KC_BSLS, KC_MINS, KC_EQL, KC_SLSH, S(KC_B), KC_4, KC_5, KC_6, S(KC_E), _______,
|
||||||
KC_AMPR, KC_CIRC, KC_PIPE, KC_UNDS, KC_PLUS, KC_QUES, S(KC_C), KC_7, KC_8, KC_9, S(KC_F), _______,
|
KC_AMPR, KC_CIRC, KC_PIPE, KC_UNDS, KC_PLUS, KC_QUES, S(KC_C), KC_7, KC_8, KC_9, S(KC_F), _______,
|
||||||
@@ -830,7 +830,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* | | | | | | | | | | | |
|
* | | | | | | | | | | | |
|
||||||
* `-----------------------------------------------------------------------------------'
|
* `-----------------------------------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
[_FUN] = KEYMAP(
|
[_FUN] = KEYMAP_CUSTOM(
|
||||||
XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, KC_INS, XXXXXXX, KC_PGUP, KC_UP, KC_PGDN, KC_PGUP, KC_DEL,
|
XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, KC_INS, XXXXXXX, KC_PGUP, KC_UP, KC_PGDN, KC_PGUP, KC_DEL,
|
||||||
KC_CAPS, KC_F5, KC_F6, KC_F7, KC_F8, KC_PSCR, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______,
|
KC_CAPS, KC_F5, KC_F6, KC_F7, KC_F8, KC_PSCR, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______,
|
||||||
_______, KC_F9, KC_F10, KC_F11, KC_F12, KC_PAUS, XXXXXXX, XXXXXXX, KC_HOME, KC_END, XXXXXXX, _______,
|
_______, KC_F9, KC_F10, KC_F11, KC_F12, KC_PAUS, XXXXXXX, XXXXXXX, KC_HOME, KC_END, XXXXXXX, _______,
|
||||||
@@ -849,7 +849,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* | | | | | | | | | | | | |
|
* | | | | | | | | | | | | |
|
||||||
* `-----------------------------------------------------------------------------------'
|
* `-----------------------------------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
[_GREEKU] = KEYMAP(
|
[_GREEKU] = KEYMAP_CUSTOM(
|
||||||
_______, XXXXXXX, XXXXXXX,X(UEPSI), X(URHO), X(UTAU),X(UUPSI),X(UTHET),X(UIOTA),X(UOMIC), X(UPI), _______,
|
_______, XXXXXXX, XXXXXXX,X(UEPSI), X(URHO), X(UTAU),X(UUPSI),X(UTHET),X(UIOTA),X(UOMIC), X(UPI), _______,
|
||||||
_______,X(UALPH),X(USIGM),X(UDELT), X(UPHI),X(UGAMM), X(UETA), X(UXI),X(UKAPP),X(ULAMB), KC_QUOT, _______,
|
_______,X(UALPH),X(USIGM),X(UDELT), X(UPHI),X(UGAMM), X(UETA), X(UXI),X(UKAPP),X(ULAMB), KC_QUOT, _______,
|
||||||
_______,X(UZETA), X(UCHI), X(UPSI),X(UOMEG),X(UBETA), X(UNU), X(UMU), KC_COMM, KC_DOT, KC_SLSH, _______,
|
_______,X(UZETA), X(UCHI), X(UPSI),X(UOMEG),X(UBETA), X(UNU), X(UMU), KC_COMM, KC_DOT, KC_SLSH, _______,
|
||||||
@@ -868,7 +868,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* | | | | | | | | | | | | |
|
* | | | | | | | | | | | | |
|
||||||
* `-----------------------------------------------------------------------------------'
|
* `-----------------------------------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
[_GREEKL] = KEYMAP(
|
[_GREEKL] = KEYMAP_CUSTOM(
|
||||||
_______, XXXXXXX,X(FSIGM),X(LEPSI), X(LRHO), X(LTAU),X(LUPSI),X(LTHET),X(LIOTA),X(LOMIC), X(LPI), _______,
|
_______, XXXXXXX,X(FSIGM),X(LEPSI), X(LRHO), X(LTAU),X(LUPSI),X(LTHET),X(LIOTA),X(LOMIC), X(LPI), _______,
|
||||||
_______,X(LALPH),X(LSIGM),X(LDELT), X(LPHI),X(LGAMM), X(LETA), X(LXI),X(LKAPP),X(LLAMB), KC_QUOT, _______,
|
_______,X(LALPH),X(LSIGM),X(LDELT), X(LPHI),X(LGAMM), X(LETA), X(LXI),X(LKAPP),X(LLAMB), KC_QUOT, _______,
|
||||||
_______,X(LZETA), X(LCHI), X(LPSI),X(LOMEG),X(LBETA), X(LNU), X(LMU), KC_COMM, KC_DOT, KC_SLSH, _______,
|
_______,X(LZETA), X(LCHI), X(LPSI),X(LOMEG),X(LBETA), X(LNU), X(LMU), KC_COMM, KC_DOT, KC_SLSH, _______,
|
||||||
@@ -887,7 +887,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* | | | | | | | | | | | | |
|
* | | | | | | | | | | | | |
|
||||||
* `-----------------------------------------------------------------------------------'
|
* `-----------------------------------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
[_EMPTY] = KEYMAP(
|
[_EMPTY] = KEYMAP_CUSTOM(
|
||||||
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, 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,
|
||||||
@@ -906,7 +906,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* | | | | | | | | | | | | |
|
* | | | | | | | | | | | | |
|
||||||
* `-----------------------------------------------------------------------------------'
|
* `-----------------------------------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
[_EMOJI] = KEYMAP(
|
[_EMOJI] = KEYMAP_CUSTOM(
|
||||||
X(HART2), X(CRY2),X(WEARY),X(EYERT),X(SMIRK), X(TJOY),X(RECYC),X(UNAMU),X(MUSIC),X(OKHND),X(PENSV), X(PHEW),
|
X(HART2), X(CRY2),X(WEARY),X(EYERT),X(SMIRK), X(TJOY),X(RECYC),X(UNAMU),X(MUSIC),X(OKHND),X(PENSV), X(PHEW),
|
||||||
X(THMUP), X(PRAY),X(SMILE),X(SMIL2),X(FLUSH), X(GRIN),X(HEART), X(BYE), X(KISS),X(CELEB), X(COOL),X(NOEVS),
|
X(THMUP), X(PRAY),X(SMILE),X(SMIL2),X(FLUSH), X(GRIN),X(HEART), X(BYE), X(KISS),X(CELEB), X(COOL),X(NOEVS),
|
||||||
X(THMDN),X(SLEEP), X(CLAP), X(CRY), X(VIC),X(BHART), X(SUN),X(SMEYE), X(WINK), X(MOON),X(CONFU),X(NOEVH),
|
X(THMDN),X(SLEEP), X(CLAP), X(CRY), X(VIC),X(BHART), X(SUN),X(SMEYE), X(WINK), X(MOON),X(CONFU),X(NOEVH),
|
||||||
@@ -925,7 +925,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* | | | | | | | | | | | | |
|
* | | | | | | | | | | | | |
|
||||||
* `-----------------------------------------------------------------------------------'
|
* `-----------------------------------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
[_GUI] = KEYMAP(
|
[_GUI] = KEYMAP_CUSTOM(
|
||||||
XXXXXXX, G(KC_1), G(KC_2), G(KC_3), G(KC_4), G(KC_5), G(KC_6), G(KC_7), G(KC_8), G(KC_9), G(KC_0), XXXXXXX,
|
XXXXXXX, G(KC_1), G(KC_2), G(KC_3), G(KC_4), G(KC_5), G(KC_6), G(KC_7), G(KC_8), G(KC_9), G(KC_0), XXXXXXX,
|
||||||
KC_ESC, XXXXXXX, S(KC_TAB),KC_ESC, KC_TAB, XXXXXXX, XXXXXXX, KC_WWWB, XXXXXXX, KC_WWWF, XXXXXXX, XXXXXXX,
|
KC_ESC, XXXXXXX, S(KC_TAB),KC_ESC, KC_TAB, XXXXXXX, XXXXXXX, KC_WWWB, XXXXXXX, KC_WWWF, XXXXXXX, XXXXXXX,
|
||||||
XXXXXXX, XXXXXXX, KC_VOLD, KC_MUTE, KC_VOLU, KC_SPC, KC_SPC, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX,
|
XXXXXXX, XXXXXXX, KC_VOLD, KC_MUTE, KC_VOLU, KC_SPC, KC_SPC, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX,
|
||||||
@@ -944,7 +944,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* | | | | | | | | | | | | |
|
* | | | | | | | | | | | | |
|
||||||
* `-----------------------------------------------------------------------------------'
|
* `-----------------------------------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
[_SYS] = KEYMAP(
|
[_SYS] = KEYMAP_CUSTOM(
|
||||||
DEBUG, QWERTY, WIN, XXXXXXX, RESET, XXXXXXX, XXXXXXX, OUT_USB, XXXXXXX, XXXXXXX, XXXXXXX, RGBDEMO,
|
DEBUG, QWERTY, WIN, XXXXXXX, RESET, XXXXXXX, XXXXXXX, OUT_USB, XXXXXXX, XXXXXXX, XXXXXXX, RGBDEMO,
|
||||||
XXXXXXX, FC_TOG, XXXXXXX, DVORAK, XXXXXXX, GLOW, XXXXXXX, XXXXXXX, WORKMAN, LINUX, XXXXXXX, XXXXXXX,
|
XXXXXXX, FC_TOG, XXXXXXX, DVORAK, XXXXXXX, GLOW, XXXXXXX, XXXXXXX, WORKMAN, LINUX, XXXXXXX, XXXXXXX,
|
||||||
XXXXXXX, XXXXXXX, XXXXXXX, COLEMAK, XXXXXXX, OUT_BT, NORMAN, OSX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
XXXXXXX, XXXXXXX, XXXXXXX, COLEMAK, XXXXXXX, OUT_BT, NORMAN, OSX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
|||||||
@@ -0,0 +1,2 @@
|
|||||||
|
:0B0000000000000000000000000001F4
|
||||||
|
:00000001FF
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
:0B0000000000000000000000000000F5
|
||||||
|
:00000001FF
|
||||||
@@ -30,7 +30,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
/* ws2812 RGB LED */
|
/* ws2812 RGB LED */
|
||||||
#define RGB_DI_PIN D7
|
#define RGB_DI_PIN D7
|
||||||
#define RGBLIGHT_TIMER
|
#define RGBLIGHT_TIMER
|
||||||
#define RGBLED_NUM 4 // Number of LEDs
|
#define RGBLED_NUM 8 // Number of LEDs
|
||||||
#define RGBLIGHT_ANIMATIONS
|
#define RGBLIGHT_ANIMATIONS
|
||||||
#define RGBLIGHT_HUE_STEP 10
|
#define RGBLIGHT_HUE_STEP 10
|
||||||
#define RGBLIGHT_SAT_STEP 17
|
#define RGBLIGHT_SAT_STEP 17
|
||||||
|
|||||||
@@ -40,11 +40,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* | Z | X | C | V | B | | N | M | , | . | / |
|
* | Z | X | C | V | B | | N | M | , | . | / |
|
||||||
* `----------------------------------' `----------------------------------'
|
* `----------------------------------' `----------------------------------'
|
||||||
* ,--------------------. ,------,-------------.
|
* ,--------------------. ,------,-------------.
|
||||||
<<<<<<< HEAD
|
|
||||||
* | Shift| LOWER| | | | RAISE| Ctrl |
|
* | Shift| LOWER| | | | RAISE| Ctrl |
|
||||||
=======
|
|
||||||
* | Ctrl | LOWER| | | | RAISE| Shift|
|
|
||||||
>>>>>>> a4958a532da154b9dd6f6144836a73f9de641f74
|
|
||||||
* `-------------| Space| |BckSpc|------+------.
|
* `-------------| Space| |BckSpc|------+------.
|
||||||
* | | | |
|
* | | | |
|
||||||
* `------' `------'
|
* `------' `------'
|
||||||
@@ -105,9 +101,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* ,----------------------------------. ,----------------------------------.
|
* ,----------------------------------. ,----------------------------------.
|
||||||
* | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | Up | F9 | F10 |
|
* | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | Up | F9 | F10 |
|
||||||
* |------+------+------+------+------| |------+------+------+------+------|
|
* |------+------+------+------+------| |------+------+------+------+------|
|
||||||
* | F11 | F12 | | | | | | Left | Down |Right |caltde|
|
* | F11 | F12 | |RGBSAI|RGBSAD| | | Left | Down |Right |caltde|
|
||||||
* |------+------+------+------+------| |------+------+------+------+------|
|
* |------+------+------+------+------| |------+------+------+------+------|
|
||||||
* | Reset| | | | | | | | F8 |Taskmg| |
|
* | Reset|RGBTOG|RGBMOD|RGBHUI|RGBHUD| |RGBVAI|RGBVAD| F8 |Taskmg| |
|
||||||
* `----------------------------------' `----------------------------------'
|
* `----------------------------------' `----------------------------------'
|
||||||
* ,--------------------. ,------,-------------.
|
* ,--------------------. ,------,-------------.
|
||||||
* | | LOWER| | | | RAISE| |
|
* | | LOWER| | | | RAISE| |
|
||||||
@@ -123,10 +119,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
)
|
)
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef AUDIO_ENABLE
|
|
||||||
float tone_qwerty[][2] = SONG(QWERTY_SOUND);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void persistant_default_layer_set(uint16_t default_layer) {
|
void persistant_default_layer_set(uint16_t default_layer) {
|
||||||
eeconfig_update_default_layer(default_layer);
|
eeconfig_update_default_layer(default_layer);
|
||||||
default_layer_set(default_layer);
|
default_layer_set(default_layer);
|
||||||
@@ -136,9 +128,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|||||||
switch (keycode) {
|
switch (keycode) {
|
||||||
case QWERTY:
|
case QWERTY:
|
||||||
if (record->event.pressed) {
|
if (record->event.pressed) {
|
||||||
#ifdef AUDIO_ENABLE
|
|
||||||
PLAY_NOTE_ARRAY(tone_qwerty, false, 0);
|
|
||||||
#endif
|
|
||||||
persistant_default_layer_set(1UL<<_QWERTY);
|
persistant_default_layer_set(1UL<<_QWERTY);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
KEY_LOCK_ENABLE = yes
|
||||||
|
NKRO_ENABLE = yes
|
||||||
|
CONSOLE_ENABLE = yes
|
||||||
|
|
||||||
|
ifndef QUANTUM_DIR
|
||||||
|
include ../../../../Makefile
|
||||||
|
endif
|
||||||
@@ -0,0 +1,75 @@
|
|||||||
|
# 333fred's Nyquist Layout
|
||||||
|
|
||||||
|
This nyquist layout is based on my Ergodox Infinity Layout, which is [here](../../../ergodox/keymaps/333fred/README.md). It doesn't have all of my VS extensions, as I have my nyquist at home, not at work.
|
||||||
|
|
||||||
|
## Layers
|
||||||
|
|
||||||
|
### QWERTY
|
||||||
|
The shift modifiers on this layer all use OSM to allow for quick single capitalization. Press and hold F to go to the VIM movement layer. Layer is also a one-shot layer toggle, and can be held down to type multiple characters on the Lower layer. Game is a regular toggle layer.
|
||||||
|
|
||||||
|
```
|
||||||
|
Qwerty
|
||||||
|
,-----------------------------------------------------------------------------------.
|
||||||
|
| ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - |
|
||||||
|
|------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
| Tab | Q | W | E | R | T | Y | U | I | O | P | \ |
|
||||||
|
|------+------+------+------+------+-------------+------+------+------+------+------|
|
||||||
|
| Esc | A | S | D |LTVIMF| G | H | J | K | L | ; | " |
|
||||||
|
|------+------+------+------+------+------|------+------+------+------+------+------|
|
||||||
|
| Shift| Z | X | C | V | B | N | M | , | . |/ Ctrl| Shift|
|
||||||
|
|------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
| Ctrl | Alt | F4 | GUI |Lower | Bksp | Spc | Ent | Lock | = | Game | Del |
|
||||||
|
`-----------------------------------------------------------------------------------'
|
||||||
|
```
|
||||||
|
|
||||||
|
### Lower
|
||||||
|
My symbol and numpad layer. APscr is a macro that sends ALT+PRSC, to take a screenshot of the current application.
|
||||||
|
|
||||||
|
```
|
||||||
|
Lower
|
||||||
|
,-----------------------------------------------------------------------------------.
|
||||||
|
| Caps | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 |
|
||||||
|
|------+------+------+------+------+-------------+------+------+------+------+------|
|
||||||
|
| | ! | @ | ( | ) | | | 7 | 8 | 9 | * | ) | F12 |
|
||||||
|
|------+------+------+------+------+-------------+------+------+------+------+------|
|
||||||
|
| | # | $ | { | } | ` | 4 | 5 | 6 | + | } | | |
|
||||||
|
|------+------+------+------+------+------|------+------+------+------+------+------|
|
||||||
|
| APscr| % | ^ | [ | ] | ~ | 1 | 2 | 3 | \ | Vol- | Vol+ |
|
||||||
|
|------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
| Pscr | | | | | | 0 | . | = | Prev | Next | Play |
|
||||||
|
`-----------------------------------------------------------------------------------'
|
||||||
|
```
|
||||||
|
|
||||||
|
### VIM Movement
|
||||||
|
Pressing and holding F moves to this layer, which turns hjkl into vim movement keys. a and d are macros which send WIN+Left and WIN+Right, respectively. Shift and CTRL have been remapped for ease of selecting text.
|
||||||
|
```
|
||||||
|
Vim Movement (Hold down F)
|
||||||
|
,-----------------------------------------------------------------------------------.
|
||||||
|
| | | | | | | | | | | | |
|
||||||
|
|------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
| | | | | | | | | | | | |
|
||||||
|
|------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
| | DLeft|DRight| LCTRL| | | Left | Down | Up | Right| | |
|
||||||
|
|------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
| | | | | | | | | | | | |
|
||||||
|
|------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
| | | | | LShft| | | | | | | |
|
||||||
|
`-----------------------------------------------------------------------------------'
|
||||||
|
```
|
||||||
|
|
||||||
|
### Gaming
|
||||||
|
This layer is designed for playing games. All one-shot modification has been turned off, and the common game controls keys have been moved around for easier access.
|
||||||
|
```
|
||||||
|
Gaming mode (Raise)
|
||||||
|
,-----------------------------------------------------------------------------------.
|
||||||
|
| ESC | | | | | | | | | | | |
|
||||||
|
|------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
| | | | | | | | | | | | |
|
||||||
|
|------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
| CTRL | | | | F | | | | | | | |
|
||||||
|
|------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
| Shift| Z | | | | | | | | | | |
|
||||||
|
|------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
| Enter| | Lock | | Alt | Spc | Lower| Left | Up | Down | Right|QWERTY|
|
||||||
|
`-----------------------------------------------------------------------------------'
|
||||||
|
```
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
#ifndef CONFIG_USER_H
|
||||||
|
#define CONFIG_USER_H
|
||||||
|
|
||||||
|
#include "../../config.h"
|
||||||
|
|
||||||
|
#define USE_SERIAL
|
||||||
|
#define MASTER_LEFT
|
||||||
|
|
||||||
|
#undef TAPPING_TERM
|
||||||
|
#define TAPPING_TERM 150
|
||||||
|
|
||||||
|
#define PERMISSIVE_HOLD
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,135 @@
|
|||||||
|
#include "nyquist.h"
|
||||||
|
#include "action_layer.h"
|
||||||
|
#include "eeconfig.h"
|
||||||
|
|
||||||
|
extern keymap_config_t keymap_config;
|
||||||
|
|
||||||
|
#define _QWERTY 0
|
||||||
|
#define _LOWER 1
|
||||||
|
#define _VIM 2
|
||||||
|
#define _GAME 3
|
||||||
|
|
||||||
|
enum custom_macros {
|
||||||
|
DLEFT,
|
||||||
|
DRIGHT,
|
||||||
|
PSCREEN_APP
|
||||||
|
};
|
||||||
|
|
||||||
|
// Fillers to make layering more clear
|
||||||
|
#define _______ KC_TRNS
|
||||||
|
#define XXXXXXX KC_NO
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
|
/* Qwerty
|
||||||
|
* ,-----------------------------------------------------------------------------------.
|
||||||
|
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | Tab | Q | W | E | R | T | Y | U | I | O | P | \ |
|
||||||
|
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||||
|
* | Esc | A | S | D |LTVIMF| G | H | J | K | L | ; | " |
|
||||||
|
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||||
|
* | Shift| Z | X | C | V | B | N | M | , | . |/ Ctrl| Shift|
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | Ctrl | Alt | F4 | GUI |Lower | Bksp | Spc | Ent | Alt | + | Game | Del |
|
||||||
|
* `-----------------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
[_QWERTY] = KEYMAP( \
|
||||||
|
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, \
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLASH, \
|
||||||
|
KC_ESC, KC_A, KC_S, KC_D, LT(_VIM, KC_F), KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
|
||||||
|
OSM(MOD_LSFT), LCTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RCTL_T(KC_SLSH), OSM(MOD_RSFT), \
|
||||||
|
KC_LCTL, KC_LALT, KC_F4, KC_LGUI, OSL(_LOWER), KC_BSPC, KC_SPC, KC_ENT, KC_LOCK, KC_EQL, TG(_GAME), KC_DEL \
|
||||||
|
),
|
||||||
|
|
||||||
|
/* Lower
|
||||||
|
* ,-----------------------------------------------------------------------------------.
|
||||||
|
* | Caps | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 |
|
||||||
|
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||||
|
* | | ! | @ | ( | ) | | | 7 | 8 | 9 | * | ) | F12 |
|
||||||
|
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||||
|
* | | # | $ | { | } | ` | 4 | 5 | 6 | + | } | | |
|
||||||
|
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||||
|
* | APscr| % | ^ | [ | ] | ~ | 1 | 2 | 3 | \ | Vol- | Vol+ |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | Pscr | | | | | | 0 | . | = | Prev | Next | Play |
|
||||||
|
* `-----------------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
[_LOWER] = KEYMAP( \
|
||||||
|
KC_CAPS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, \
|
||||||
|
_______, KC_EXLM, KC_AT, KC_LPRN, KC_RPRN, KC_PIPE, KC_7, KC_8, KC_9, KC_ASTR, KC_RPRN, KC_F12, \
|
||||||
|
_______, KC_HASH, KC_DLR, KC_LCBR, KC_RCBR, KC_GRV, KC_4, KC_5, KC_6, KC_PLUS, KC_RCBR, KC_PIPE, \
|
||||||
|
M(PSCREEN_APP), KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, KC_1, KC_2, KC_3, KC_BSLS, KC_VOLD, KC_VOLU, \
|
||||||
|
KC_PSCR, _______, _______, _______, _______, _______, KC_0, KC_DOT, KC_EQL, KC_MPRV, KC_MNXT, KC_MPLY \
|
||||||
|
),
|
||||||
|
|
||||||
|
/* Vim Movement (Hold down F)
|
||||||
|
* ,-----------------------------------------------------------------------------------.
|
||||||
|
* | | | | | | | | | | | | |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | | | | | | | | | | | | |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | | DLeft|DRight| LCTRL| | | Left | Down | Up | Right| | |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | | | | | | | | | | | | |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | | | | | LShft| | | | | | | |
|
||||||
|
* `-----------------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
[_VIM] = KEYMAP( \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, M(DLEFT), M(DRIGHT), KC_LCTL, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, KC_LSFT, _______, _______, _______, _______, _______, _______, _______ \
|
||||||
|
),
|
||||||
|
|
||||||
|
/* Gaming mode (Raise)
|
||||||
|
* All one-shot mods are disabled on this layer
|
||||||
|
* ,-----------------------------------------------------------------------------------.
|
||||||
|
* | ESC | | | | | | | | | | | |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | | | | | | | | | | | | |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | CTRL | | | | F | | | | | | | |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | Shift| Z | | | | | | | | | | |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | Enter| | Lock | | Alt | Spc | Lower| Left | Up | Down | Right|QWERTY|
|
||||||
|
* `-----------------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
[_GAME] = KEYMAP( \
|
||||||
|
KC_ESC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
KC_LCTL, _______, _______, _______, KC_F, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
KC_LSFT, KC_Z, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
KC_ENT, _______, KC_LOCK, _______, KC_LALT, KC_SPC, OSL(_LOWER), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, TO(_QWERTY) \
|
||||||
|
)
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
void persistent_default_layer_set(uint16_t default_layer) {
|
||||||
|
eeconfig_update_default_layer(default_layer);
|
||||||
|
default_layer_set(default_layer);
|
||||||
|
}
|
||||||
|
|
||||||
|
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
|
||||||
|
switch(id) {
|
||||||
|
case DLEFT:
|
||||||
|
if (record->event.pressed) { // Windows move desktop left
|
||||||
|
return MACRO(D(LCTL), D(LGUI), T(LEFT), U(LGUI), U(LCTL), END);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case DRIGHT:
|
||||||
|
if (record->event.pressed) { // Windows move desktop right
|
||||||
|
return MACRO(D(LCTL), D(LGUI), T(RIGHT), U(LGUI), U(LCTL), END);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case PSCREEN_APP:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
return MACRO(D(LALT), T(PSCR), U(LALT), END);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return MACRO_NONE;
|
||||||
|
}
|
||||||
@@ -23,7 +23,7 @@
|
|||||||
#define DOUBLESPACE_LAYER_ENABLE
|
#define DOUBLESPACE_LAYER_ENABLE
|
||||||
// #define TOLELOT_ENABLE
|
// #define TOLELOT_ENABLE
|
||||||
|
|
||||||
#define KEYMAP( \
|
#define KEYMAP_CUSTOM( \
|
||||||
k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
|
k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
|
||||||
k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, \
|
k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, \
|
||||||
k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \
|
k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \
|
||||||
|
|||||||
@@ -36,4 +36,6 @@
|
|||||||
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b } \
|
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b } \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define KEYMAP PLANCK_GRID
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
+15
-15
@@ -1,18 +1,18 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2012 Jun Wako <[email protected]>
|
Copyright 2012 Jun Wako <[email protected]>
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
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
|
it under the terms of the GNU General Public License as published by
|
||||||
the Free Software Foundation, either version 2 of the License, or
|
the Free Software Foundation, either version 2 of the License, or
|
||||||
(at your option) any later version.
|
(at your option) any later version.
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
This program is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
GNU General Public License for more details.
|
GNU General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef CONFIG_H
|
#ifndef CONFIG_H
|
||||||
|
|||||||
@@ -1,119 +1,119 @@
|
|||||||
#include "uk78.h"
|
#include "uk78.h"
|
||||||
|
|
||||||
// Helpful defines
|
// Helpful defines
|
||||||
#define _______ KC_TRNS
|
#define _______ KC_TRNS
|
||||||
|
|
||||||
// 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
|
||||||
#define _FL1 1
|
#define _FL1 1
|
||||||
#define _FL2 2
|
#define _FL2 2
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
/* _BL: Base Layer(Default) - For ISO enter use ANSI \
|
/* _BL: Base Layer(Default) - For ISO enter use ANSI \
|
||||||
* ,-------------------------------------------------------------------------------.
|
* ,-------------------------------------------------------------------------------.
|
||||||
* |Esc | 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| /|BSpc| Del| P/| P*| P-|
|
* |Esc | 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| /|BSpc| Del| P/| P*| P-|
|
||||||
* |-------------------------------------------------------------------------------|
|
* |-------------------------------------------------------------------------------|
|
||||||
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ | P7| P8| P9| P=|
|
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ | P7| P8| P9| P=|
|
||||||
* |-------------------------------------------------------------------------------|
|
* |-------------------------------------------------------------------------------|
|
||||||
* |CAPS | A| S| D| F| G| H| J| K| L| ;| '| #| Ent| P4| P5| P6| P+|
|
* |CAPS | A| S| D| F| G| H| J| K| L| ;| '| #| Ent| P4| P5| P6| P+|
|
||||||
* |-------------------------------------------------------------------------------|
|
* |-------------------------------------------------------------------------------|
|
||||||
* |Shift| \| Z| X| C| V| B| N| M| ,| .| /|Shift | Up| P1| P2| P3|SLck|
|
* |Shift| \| Z| X| C| V| B| N| M| ,| .| /|Shift | Up| P1| P2| P3|SLck|
|
||||||
* |-------------------------------------------------------------------------------|
|
* |-------------------------------------------------------------------------------|
|
||||||
* |Ctrl|Win |Alt | Space |Alt|Mo(1)|Ctrl|Lef|Dow| Rig| P0| P.|PEnt|
|
* |Ctrl|Win |Alt | Space |Alt|Mo(1)|Ctrl|Lef|Dow| Rig| P0| P.|PEnt|
|
||||||
* `-------------------------------------------------------------------------------'
|
* `-------------------------------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
[_BL] = KEYMAP(
|
[_BL] = KEYMAP(
|
||||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC, KC_DEL, KC_PSLS, KC_PAST, KC_PMNS,
|
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC, KC_DEL, KC_PSLS, KC_PAST, KC_PMNS,
|
||||||
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_P7, KC_P8, KC_P9, KC_PEQL,
|
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_P7, KC_P8, KC_P9, KC_PEQL,
|
||||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
|
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
|
||||||
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_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_SLCK,
|
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_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_SLCK,
|
||||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FL1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FL1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
|
||||||
/* _FL1: Function Layer 1 - For ISO enter use ANSI \
|
/* _FL1: Function Layer 1 - For ISO enter use ANSI \
|
||||||
* ,-------------------------------------------------------------------------------.
|
* ,-------------------------------------------------------------------------------.
|
||||||
* | `|F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|PScr|Ins|NLck| | | |
|
* | `|F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|PScr|Ins|NLck| | | |
|
||||||
* |-------------------------------------------------------------------------------|
|
* |-------------------------------------------------------------------------------|
|
||||||
* | | | | |RST| | | | | | | | | | | | | |
|
* | | | | |RST| | | | | | | | | | | | | |
|
||||||
* |-------------------------------------------------------------------------------|
|
* |-------------------------------------------------------------------------------|
|
||||||
* | | | | | | |Hu+|Va+|Sa+| | | | | | | | | |
|
* | | | | | | |Hu+|Va+|Sa+| | | | | | | | | |
|
||||||
* |-------------------------------------------------------------------------------|
|
* |-------------------------------------------------------------------------------|
|
||||||
* | | | | | |RGB|Hu-|Va-|Sa-|Bl-|Bl+| |Mute|Vol+| | | | |
|
* | | | | | |RGB|Hu-|Va-|Sa-|Bl-|Bl+| |Mute|Vol+| | | | |
|
||||||
* |-------------------------------------------------------------------------------|
|
* |-------------------------------------------------------------------------------|
|
||||||
* | | | | BL_Toggle | | | | |Vol-| | | | |
|
* | | | | BL_Toggle | | | | |Vol-| | | | |
|
||||||
* `-------------------------------------------------------------------------------'
|
* `-------------------------------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
[_FL1] = KEYMAP(
|
[_FL1] = 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_PSCR, KC_INS, KC_NLCK, KC_TRNS, KC_TRNS, KC_TRNS,
|
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_PSCR, KC_INS, KC_NLCK, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, 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, RESET, 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, RGB_HUI, RGB_SAI, RGB_VAI, 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, RGB_HUI, RGB_SAI, RGB_VAI, 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_TOG, RGB_HUD, RGB_SAD, RGB_VAD, BL_DEC, BL_INC, KC_TRNS, KC_MUTE, KC_MUTE, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_HUD, RGB_SAD, RGB_VAD, BL_DEC, BL_INC, KC_TRNS, KC_MUTE, KC_MUTE, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, BL_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
|
KC_TRNS, KC_TRNS, KC_TRNS, BL_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
|
||||||
/* _FL2: Function Layer 2 - For ISO enter use ANSI \
|
/* _FL2: Function Layer 2 - For ISO enter use ANSI \
|
||||||
* ,-------------------------------------------------------------------------------.
|
* ,-------------------------------------------------------------------------------.
|
||||||
* | | | | | | | | | | | | | | | | | | | |
|
* | | | | | | | | | | | | | | | | | | | |
|
||||||
* |-------------------------------------------------------------------------------|
|
* |-------------------------------------------------------------------------------|
|
||||||
* | | | | | | | | | | | | | | | | | | |
|
* | | | | | | | | | | | | | | | | | | |
|
||||||
* |-------------------------------------------------------------------------------|
|
* |-------------------------------------------------------------------------------|
|
||||||
* | | | | | | | | | | | | | | | | | | |
|
* | | | | | | | | | | | | | | | | | | |
|
||||||
* |-------------------------------------------------------------------------------|
|
* |-------------------------------------------------------------------------------|
|
||||||
* | | | | | | | | | | | | | | | | | | |
|
* | | | | | | | | | | | | | | | | | | |
|
||||||
* |-------------------------------------------------------------------------------|
|
* |-------------------------------------------------------------------------------|
|
||||||
* | | | | | | | | | | | | | |
|
* | | | | | | | | | | | | | |
|
||||||
* `-------------------------------------------------------------------------------'
|
* `-------------------------------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
[_FL2] = KEYMAP(
|
[_FL2] = 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, 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,
|
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, 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),
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
void matrix_init_user(void) {
|
void matrix_init_user(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void matrix_scan_user(void) {
|
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) {
|
||||||
|
|
||||||
if (usb_led & (1 << USB_LED_NUM_LOCK)) {
|
if (usb_led & (1 << USB_LED_NUM_LOCK)) {
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
|
if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
|
||||||
DDRA |= (1 << 3); PORTA |= (1 << 3);
|
DDRA |= (1 << 3); PORTA |= (1 << 3);
|
||||||
} else {
|
} else {
|
||||||
DDRA &= ~(1 << 3); PORTA &= ~(1 << 3);
|
DDRA &= ~(1 << 3); PORTA &= ~(1 << 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (usb_led & (1 << USB_LED_SCROLL_LOCK)) {
|
if (usb_led & (1 << USB_LED_SCROLL_LOCK)) {
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (usb_led & (1 << USB_LED_COMPOSE)) {
|
if (usb_led & (1 << USB_LED_COMPOSE)) {
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (usb_led & (1 << USB_LED_KANA)) {
|
if (usb_led & (1 << USB_LED_KANA)) {
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
+16
-16
@@ -1,16 +1,16 @@
|
|||||||
# UK78
|
# UK78
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
A fully customizable 60%+numpad keyboard.
|
A fully customizable 60%+numpad keyboard.
|
||||||
|
|
||||||
* Keyboard Maintainer: [Rozakiin](https://github.com/rozakiin)
|
* Keyboard Maintainer: [Rozakiin](https://github.com/rozakiin)
|
||||||
* Hardware Supported: UK78 PCB
|
* Hardware Supported: UK78 PCB
|
||||||
* rev2
|
* rev2
|
||||||
* Hardware Availability: [ukkeyboards.](http://ukkeyboards.bigcartel.com/)
|
* Hardware Availability: [ukkeyboards.](http://ukkeyboards.bigcartel.com/)
|
||||||
|
|
||||||
Make example for this keyboard (after setting up your build environment):
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
make uk78-default
|
make uk78-default
|
||||||
|
|
||||||
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
|
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
|
||||||
@@ -0,0 +1,138 @@
|
|||||||
|
/* Copyright 2017 Fredric Silberberg
|
||||||
|
*
|
||||||
|
* 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 "inttypes.h"
|
||||||
|
#include "stdint.h"
|
||||||
|
#include "process_key_lock.h"
|
||||||
|
|
||||||
|
#define BV_64(shift) (((uint64_t)1) << (shift))
|
||||||
|
#define GET_KEY_ARRAY(code) (((code) < 0x40) ? key_state[0] : \
|
||||||
|
((code) < 0x80) ? key_state[1] : \
|
||||||
|
((code) < 0xC0) ? key_state[2] : key_state[3])
|
||||||
|
#define GET_CODE_INDEX(code) (((code) < 0x40) ? (code) : \
|
||||||
|
((code) < 0x80) ? (code) - 0x40 : \
|
||||||
|
((code) < 0xC0) ? (code) - 0x80 : (code) - 0xC0)
|
||||||
|
#define KEY_STATE(code) (GET_KEY_ARRAY(code) & BV_64(GET_CODE_INDEX(code))) == BV_64(GET_CODE_INDEX(code))
|
||||||
|
#define SET_KEY_ARRAY_STATE(code, val) do { \
|
||||||
|
switch (code) { \
|
||||||
|
case 0x00 ... 0x3F: \
|
||||||
|
key_state[0] = (val); \
|
||||||
|
break; \
|
||||||
|
case 0x40 ... 0x7F: \
|
||||||
|
key_state[1] = (val); \
|
||||||
|
break; \
|
||||||
|
case 0x80 ... 0xBF: \
|
||||||
|
key_state[2] = (val); \
|
||||||
|
break; \
|
||||||
|
case 0xC0 ... 0xFF: \
|
||||||
|
key_state[3] = (val); \
|
||||||
|
break; \
|
||||||
|
} \
|
||||||
|
} while(0)
|
||||||
|
#define SET_KEY_STATE(code) SET_KEY_ARRAY_STATE(code, (GET_KEY_ARRAY(code) | BV_64(GET_CODE_INDEX(code))))
|
||||||
|
#define UNSET_KEY_STATE(code) SET_KEY_ARRAY_STATE(code, (GET_KEY_ARRAY(code)) & ~(BV_64(GET_CODE_INDEX(code))))
|
||||||
|
#define IS_STANDARD_KEYCODE(code) ((code) <= 0xFF)
|
||||||
|
|
||||||
|
// Locked key state. This is an array of 256 bits, one for each of the standard keys supported qmk.
|
||||||
|
uint64_t key_state[4] = { 0x0, 0x0, 0x0, 0x0 };
|
||||||
|
bool watching = false;
|
||||||
|
|
||||||
|
// Translate any OSM keycodes back to their unmasked versions.
|
||||||
|
uint16_t inline translate_keycode(uint16_t keycode) {
|
||||||
|
if (keycode > QK_ONE_SHOT_MOD && keycode <= QK_ONE_SHOT_MOD_MAX) {
|
||||||
|
return keycode ^ QK_ONE_SHOT_MOD;
|
||||||
|
} else {
|
||||||
|
return keycode;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool process_key_lock(uint16_t *keycode, keyrecord_t *record) {
|
||||||
|
// We start by categorizing the keypress event. In the event of a down
|
||||||
|
// event, there are several possibilities:
|
||||||
|
// 1. The key is not being locked, and we are not watching for new keys.
|
||||||
|
// In this case, we bail immediately. This is the common case for down events.
|
||||||
|
// 2. The key was locked, and we need to unlock it. In this case, we will
|
||||||
|
// reset the state in our map and return false. When the user releases the
|
||||||
|
// key, the up event will no longer be masked and the OS will observe the
|
||||||
|
// released key.
|
||||||
|
// 3. KC_LOCK was just pressed. In this case, we set up the state machine
|
||||||
|
// to watch for the next key down event, and finish processing
|
||||||
|
// 4. The keycode is below 0xFF, and we are watching for new keys. In this case,
|
||||||
|
// we will send the key down event to the os, and set the key_state for that
|
||||||
|
// key to mask the up event.
|
||||||
|
// 5. The keycode is above 0xFF, and we're wathing for new keys. In this case,
|
||||||
|
// the user pressed a key that we cannot "lock", as it's a series of keys,
|
||||||
|
// or a macro invocation, or a layer transition, or a custom-defined key, or
|
||||||
|
// or some other arbitrary code. In this case, we bail immediately, reset
|
||||||
|
// our watch state, and return true.
|
||||||
|
//
|
||||||
|
// In the event of an up event, there are these possibilities:
|
||||||
|
// 1. The key is not being locked. In this case, we return true and bail
|
||||||
|
// immediately. This is the common case.
|
||||||
|
// 2. The key is being locked. In this case, we will mask the up event
|
||||||
|
// by returning false, so the OS never sees that the key was released
|
||||||
|
// until the user pressed the key again.
|
||||||
|
|
||||||
|
// We translate any OSM keycodes back to their original keycodes, so that if the key being
|
||||||
|
// one-shot modded is a standard keycode, we can handle it. This is the only set of special
|
||||||
|
// keys that we handle
|
||||||
|
uint16_t translated_keycode = translate_keycode(*keycode);
|
||||||
|
|
||||||
|
if (record->event.pressed) {
|
||||||
|
// Non-standard keycode, reset and return
|
||||||
|
if (!(IS_STANDARD_KEYCODE(translated_keycode) || translated_keycode == KC_LOCK)) {
|
||||||
|
watching = false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If we're already watching, turn off the watch.
|
||||||
|
if (translated_keycode == KC_LOCK) {
|
||||||
|
watching = !watching;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IS_STANDARD_KEYCODE(translated_keycode)) {
|
||||||
|
// We check watching first. This is so that in the following scenario, we continue to
|
||||||
|
// hold the key: KC_LOCK, KC_F, KC_LOCK, KC_F
|
||||||
|
// If we checked in reverse order, we'd end up holding the key pressed after the second
|
||||||
|
// KC_F press is registered, when the user likely meant to hold F
|
||||||
|
if (watching) {
|
||||||
|
watching = false;
|
||||||
|
SET_KEY_STATE(translated_keycode);
|
||||||
|
// We need to set the keycode passed in to be the translated keycode, in case we
|
||||||
|
// translated a OSM back to the original keycode.
|
||||||
|
*keycode = translated_keycode;
|
||||||
|
// Let the standard keymap send the keycode down event. The up event will be masked.
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (KEY_STATE(translated_keycode)) {
|
||||||
|
UNSET_KEY_STATE(translated_keycode);
|
||||||
|
// The key is already held, stop this process. The up event will be sent when the user
|
||||||
|
// releases the key.
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Either the key isn't a standard key, or we need to send the down event. Continue standard
|
||||||
|
// processing
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
// Stop processing if it's a standard key and we're masking up.
|
||||||
|
return !(IS_STANDARD_KEYCODE(translated_keycode) && KEY_STATE(translated_keycode));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
/* Copyright 2017 Fredric Silberberg
|
||||||
|
*
|
||||||
|
* 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 PROCESS_KEY_LOCK_H
|
||||||
|
#define PROCESS_KEY_LOCK_H
|
||||||
|
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
bool process_key_lock(uint16_t *keycode, keyrecord_t *record);
|
||||||
|
|
||||||
|
#endif // PROCESS_KEY_LOCK_H
|
||||||
@@ -193,6 +193,10 @@ bool process_record_quantum(keyrecord_t *record) {
|
|||||||
// }
|
// }
|
||||||
|
|
||||||
if (!(
|
if (!(
|
||||||
|
#if defined(KEY_LOCK_ENABLE)
|
||||||
|
// Must run first to be able to mask key_up events.
|
||||||
|
process_key_lock(&keycode, record) &&
|
||||||
|
#endif
|
||||||
process_record_kb(keycode, record) &&
|
process_record_kb(keycode, record) &&
|
||||||
#if defined(MIDI_ENABLE) && defined(MIDI_ADVANCED)
|
#if defined(MIDI_ENABLE) && defined(MIDI_ADVANCED)
|
||||||
process_midi(keycode, record) &&
|
process_midi(keycode, record) &&
|
||||||
|
|||||||
@@ -99,6 +99,10 @@ extern uint32_t default_layer_state;
|
|||||||
#include "process_combo.h"
|
#include "process_combo.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef KEY_LOCK_ENABLE
|
||||||
|
#include "process_key_lock.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#define SEND_STRING(str) send_string(PSTR(str))
|
#define SEND_STRING(str) send_string(PSTR(str))
|
||||||
extern const bool ascii_to_shift_lut[0x80];
|
extern const bool ascii_to_shift_lut[0x80];
|
||||||
extern const uint8_t ascii_to_keycode_lut[0x80];
|
extern const uint8_t ascii_to_keycode_lut[0x80];
|
||||||
|
|||||||
@@ -419,6 +419,10 @@ enum quantum_keycodes {
|
|||||||
OUT_BT,
|
OUT_BT,
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef KEY_LOCK_ENABLE
|
||||||
|
KC_LOCK,
|
||||||
|
#endif
|
||||||
|
|
||||||
// always leave at the end
|
// always leave at the end
|
||||||
SAFE_RANGE
|
SAFE_RANGE
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in new issue
Block a user