Keyboard: Shuffle keyboards into thevankeyboards directory (#3895)

* move tv44 to thevankeyboards directory

* move bananasplit to thevankeyboards

* move roadkit to thevankeyboards directory

* add a basic readme

* update readmes to correct the make instructions and add more help text

* rename tv44 to minivan as per Jack's suggestions

* update readme

* rename tv44 to minivan

* update tv44 to minivan

* change includes for tv44 to minivan

* remove extra includes
This commit is contained in:
MechMerlin
2018-09-13 09:40:43 -07:00
committed by Drashna Jaelre
parent cd3518b802
commit ce122c4981
106 changed files with 58 additions and 75 deletions

View File

@@ -0,0 +1,14 @@
# BananaSplit60
A 60% PCB featuring a split spacebar.
Keyboard Maintainer: QMK Community
Hardware Supported: BananaSplit60 PCB
Hardware Availability: https://thevankeyboards.com/products/gb-bananasplit-60-keyboard-kit?variant=42149104910
Make example for this keyboard (after setting up your build environment):
make thevankeyboards/bananasplit:default
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).

View File

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

View File

@@ -0,0 +1,142 @@
/*
Copyright 2012,2013 Jun Wako <wakojun@gmail.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef 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 LAYOUT_base( \
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 LAYOUT_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 LAYOUT_60_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 LAYOUT_60_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 LAYOUT_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 LAYOUT_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

View File

@@ -0,0 +1,84 @@
/*
Copyright 2012 Jun Wako <wakojun@gmail.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef CONFIG_H
#define CONFIG_H
#include "config_common.h"
/* USB Device descriptor parameter */
#define VENDOR_ID 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 3
/* mapping backlight LEDs to correct Pin */
#define BACKLIGHT_PIN B7
/* 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

View File

@@ -0,0 +1,32 @@
{
"keyboard_name": "bananasplit",
"url": "",
"maintainer": "qmk",
"width": 15,
"height": 5,
"layouts": {
"LAYOUT_base": {
"layout": [{"label":"~", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":2.75}, {"x":6.5, "y":4, "w":1.25}, {"x":7.75, "y":4, "w":2.25}, {"label":"Alt", "x":10, "y":4}, {"x":11, "y":4}, {"label":"Win", "x":12, "y":4}, {"label":"Menu", "x":13, "y":4}, {"label":"Ctrl", "x":14, "y":4}]
},
"LAYOUT_hhkbanana": {
"layout": [{"label":"~", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":2.75}, {"x":6.5, "y":4, "w":1.25}, {"x":7.75, "y":4, "w":2.25}, {"x":10, "y":4}, {"x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4}]
},
"LAYOUT_60_ansi": {
"layout": [{"label":"~", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.25}, {"label":"Win", "x":11.25, "y":4, "w":1.25}, {"label":"Menu", "x":12.5, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":4, "w":1.25}]
},
"LAYOUT_60_iso": {
"layout": [{"label":"\u00ac", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"\"", "x":2, "y":0}, {"label":"\u00a3", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"@", "x":11.75, "y":2}, {"label":"~", "x":12.75, "y":2}, {"label":"Shift", "x":0, "y":3, "w":1.25}, {"label":"|", "x":1.25, "y":3}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"AltGr", "x":10, "y":4, "w":1.25}, {"label":"Win", "x":11.25, "y":4, "w":1.25}, {"label":"Menu", "x":12.5, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":4, "w":1.25}]
},
"LAYOUT_all": {
"layout": [{"label":"~", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":2.75}, {"x":6.5, "y":4, "w":1.25}, {"x":7.75, "y":4, "w":2.25}, {"label":"Alt", "x":10, "y":4}, {"x":11, "y":4}, {"label":"Win", "x":12, "y":4}, {"label":"Menu", "x":13, "y":4}, {"label":"Ctrl", "x":14, "y":4}]
},
"LAYOUT_hhkb_arrow": {
"layout": [{"label":"~", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":2.75}, {"x":6.5, "y":4, "w":1.25}, {"x":7.75, "y":4, "w":2.25}, {"label":"Alt", "x":10, "y":4}, {"x":11, "y":4}, {"label":"Win", "x":12, "y":4}, {"label":"Menu", "x":13, "y":4}, {"label":"Ctrl", "x":14, "y":4}]
}
}
}

View File

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

View File

@@ -0,0 +1,73 @@
/* 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 QMK_KEYBOARD_H
#define ______ KC_TRNS
/*
This switch layout is ANSI with the following modifications:
Split right shift
225 125 275 spacebar
Bottom right singles
*/
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
-------------------------------------------------------------------------------------------
|Esc| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | Backspace |
-------------------------------------------------------------------------------------------
| Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ |
-------------------------------------------------------------------------------------------
| Cpslock | A | S | D | F | G | H | J | K | L | ; | ' | Enter |
-------------------------------------------------------------------------------------------
| Shift | Z | X | C | V | B | N | M | , | . | / | Shift | Up |
-------------------------------------------------------------------------------------------
| Ctrl | GUI | Alt | L1(Space) | LED | Space | Home | End | Left |Rght |Down |
-------------------------------------------------------------------------------------------
*/
[0] = LAYOUT_base( \
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, KC_SLSH, KC_RSFT, KC_UP,\
KC_LCTL, KC_LGUI, KC_LALT, LT(1,KC_SPACE), BL_TOGG, KC_SPC, KC_HOME, KC_END, KC_LEFT, KC_RGHT, KC_DOWN \
),
/*
-------------------------------------------------------------------------------------------
| ~ | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | DEL |
-------------------------------------------------------------------------------------------
| | | UP | | | | | | | | | | | PrtSc |
-------------------------------------------------------------------------------------------
| |Left | Down |Right | | | | | | | | | | SLEEP |
-------------------------------------------------------------------------------------------
| | | | | | | | | | | | | | |
-------------------------------------------------------------------------------------------
| | | | | Reset | | | | | |
-------------------------------------------------------------------------------------------
*/
[1] = LAYOUT_base( \
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, \
______, ______, KC_UP, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, KC_PSCR, \
______, KC_LEFT, KC_DOWN, KC_RGHT, ______, ______, ______, ______, ______, ______, ______, ______, KC_SLEP, \
______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, KC_PGUP, \
______, ______, ______, ______, RESET, ______, ______, ______, ______, ______, KC_PGDN \
),
};
const uint16_t PROGMEM fn_actions[] = {
};

View File

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

View File

@@ -0,0 +1,27 @@
/* 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_common.h"
// place overrides here
#define GRAVE_ESC_CTRL_OVERRIDE
#define BACKLIGHT_BREATHING
#define BREATHING_PERIOD 8
#endif

View File

@@ -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 QMK_KEYBOARD_H
enum custom_keycodes {
WIN_SWITCH_LAYOUT = SAFE_RANGE,
};
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] = LAYOUT_base( \
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, WIN_SWITCH_LAYOUT,\
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] = LAYOUT_base( \
_______, 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, _______, _______, _______, \
_______, BL_STEP, BL_BRTG, _______, _______,_______, LCTL(KC_BSPC), LCTL(KC_DEL), _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______,_______, _______, _______, _______, _______, RESET \
),
};
const uint16_t PROGMEM fn_actions[] = {
};
void matrix_init_user(void) {
}
void matrix_scan_user(void) {
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case WIN_SWITCH_LAYOUT: {
// Sends Alt+Shift on both key down and key up.
// Designed to switch between two keyboard layouts on Windows using a locking switch.
// Does nothing if right shift is pressed for easy resync.
if (!(get_mods() & MOD_BIT(KC_RSFT)))
SEND_STRING(SS_DOWN(X_LALT)SS_TAP(X_LSHIFT)SS_UP(X_LALT));
return false;
}
default:
return true;
}
}
void led_set_user(uint8_t usb_led) {
}

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,25 @@
#include QMK_KEYBOARD_H
#define DEFAULT_LAYER 0
#define LAYER_1 1
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[DEFAULT_LAYER] = LAYOUT_base(
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] = LAYOUT_base( \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
),
};
const uint16_t PROGMEM fn_actions[] = {
};

View File

@@ -0,0 +1 @@
# The default keymap for the Bananasplit

View File

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

View File

@@ -0,0 +1,25 @@
#include QMK_KEYBOARD_H
#define DEFAULT_LAYER 0
#define LAYER_1 1
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[DEFAULT_LAYER] = LAYOUT_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] = LAYOUT_hhkbanana( \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
),
};
const uint16_t PROGMEM fn_actions[] = {
};

View File

@@ -0,0 +1,92 @@
/*
Author: jockyxu1122
Hightlight: split backspace, split space, arrows on bottom right,
and backlighting support (capslock's backlighting cannot be controlled separately).
Note that "Previous track" and "next track" might only work with Windows.
*/
#include QMK_KEYBOARD_H
#define DEFAULT_LAYER 0
#define LAYER_1 1
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
-------------------------------------------------------------
|Esc| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | ` |Del|
-------------------------------------------------------------
| Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ |
-------------------------------------------------------------
| Caps | A | S | D | F | G | H | J | K | L | ; | ' | Enter |
-------------------------------------------------------------
| Shift | Z | X | C | V | B | N | M | , | . | / | Shift| Up|
-------------------------------------------------------------
|Ctrl| GUI| Alt| Space |MoL1| Backspc| Hm|End| <-|Dwn| ->|
-------------------------------------------------------------
Hm: Home
MoL1: Mo(L1)
*/
[DEFAULT_LAYER] = LAYOUT_hhkb_arrow(
// row 1
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_GRV, \
KC_DEL, \
// row 2
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, \
// row 3
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, \
// row 4
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \
// row 5
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(LAYER_1), KC_BSPC, KC_HOME, KC_END, KC_LEFT, KC_DOWN, \
KC_RIGHT
),
/*
-------------------------------------------------------------
|LED| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| |Ins|
-------------------------------------------------------------
| | | | @ | | | | | | | |BDn|BUp| |
-------------------------------------------------------------
| | | | | | | | | | | | | |
-------------------------------------------------------------
| | | |Cal| |www| |Mut| | | | |VUp|
-------------------------------------------------------------
| | | | Pause | | |PUp|PDn|PTk|VDn|NTk|
-------------------------------------------------------------
@: Email
BDn: LED brightness down
BUp: LED brightness up
Cal: Calculator
Ins: Insert
Mut: Mute
NTk: Next track
PDn: Page down
PTk: Previous track
PUp: Page up
VDn: Volume down
VUp: Volume up
www: Browser home page
*/
[LAYER_1] = LAYOUT_hhkb_arrow(
// row 1
BL_TOGG, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, \
KC_F12, KC_TRNS, KC_INS, \
// row 2
KC_TRNS, KC_TRNS, KC_TRNS, KC_MAIL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
KC_TRNS, BL_DEC, BL_INC, KC_TRNS, \
// row 3
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
KC_TRNS, KC_TRNS, KC_TRNS, \
// row 4
KC_TRNS, KC_TRNS, KC_TRNS, KC_CALC, KC_TRNS, KC_WHOM, KC_TRNS, KC_MUTE, KC_TRNS, KC_TRNS, \
KC_TRNS, KC_TRNS, KC_VOLU, \
// row 5
KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_TRNS, KC_TRNS, KC_PGUP, KC_PGDN, KC_MPRV, KC_VOLD, \
KC_MNXT
)
};
const uint16_t PROGMEM fn_actions[] = {
};

View File

@@ -0,0 +1,66 @@
Yida's keymap for BananaSplit
===
Hightlight: split backspace, split space, arrows on bottom right, and
backlighting support (capslock's backlighting cannot be controlled separately).
Note that "Previous track" and "next track" might only work with Windows.
Default layer:
```
-------------------------------------------------------------
|Esc| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | ` |Del|
-------------------------------------------------------------
| Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ |
-------------------------------------------------------------
| Caps | A | S | D | F | G | H | J | K | L | ; | ' | Enter |
-------------------------------------------------------------
| Shift | Z | X | C | V | B | N | M | , | . | / | Shift| Up|
-------------------------------------------------------------
|Ctrl| GUI| Alt| Space |MoL1| Backspc| Hm|End| <-|Dwn| ->|
-------------------------------------------------------------
Hm: Home
MoL1: Mo(L1)
```
Layer_1:
```
-------------------------------------------------------------
|LED| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| |Ins|
-------------------------------------------------------------
| | | | @ | | | | | | | |BDn|BUp| |
-------------------------------------------------------------
| | | | | | | | | | | | | |
-------------------------------------------------------------
| | | |Cal| |www| |Mut| | | | |VUp|
-------------------------------------------------------------
| | | | Pause | | |PUp|PDn|PTk|VDn|NTk|
-------------------------------------------------------------
@: Email
BDn: LED brightness down
BUp: LED brightness up
Cal: Calculator
Ins: Insert
Mut: Mute
NTk: Next track
PDn: Page down
PTk: Previous track
PUp: Page up
VDn: Volume down
VUp: Volume up
www: Browser home page
```
Compile and flash:
`cd` to `/qmk_firmware` folder, then
```
make bananasplit:jockyxu1122_ansi
```
A .hex file will be generated under `/qmk_firmware` folder.
To flash, use QMK Toolbox.

View File

@@ -0,0 +1,105 @@
/*
Author: jockyxu1122
Hightlight: split backspace, ISO Enter, split space, arrows on bottom right,
and toggable capslock backlight.
Note that "Previous track" and "next track" might only work with Windows.
*/
#include QMK_KEYBOARD_H
#define DEFAULT_LAYER 0
#define LAYER_1 1
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
-------------------------------------------------------------
|Esc| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | ` |Del|
-------------------------------------------------------------
| Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Ent |
-------------------------------------------------------- -
| Caps | A | S | D | F | G | H | J | K | L | ; | ' | \ | |
-------------------------------------------------------------
| Shift | Z | X | C | V | B | N | M | , | . | Shift| Up| / |
-------------------------------------------------------------
|Ctrl| GUI| Alt| Space |MoL1| Backspc| Hm|End| <-|Dwn| ->|
-------------------------------------------------------------
Hm: Home
MoL1: Mo(L1)
*/
[DEFAULT_LAYER] = LAYOUT_hhkb_arrow(
// row 1
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_GRV, \
KC_DEL, \
// row 2
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_ENT, \
// row 3
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_BSLS, \
// row 4
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_SLSH, \
// row 5
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(LAYER_1), KC_BSPC, KC_HOME, KC_END, KC_LEFT, KC_DOWN, \
KC_RIGHT
),
/*
-------------------------------------------------------------
| | F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| |Ins|
-------------------------------------------------------------
| | | | @ | | | | | | | | | | |
-------------------------------------------------------- -
| | | | | | | | | | | | | | |
-------------------------------------------------------------
| | | |Cal| |www| |Mut| | | |VUp| |
-------------------------------------------------------------
| | | | Pause | | |PUp|PDn|PTk|VDn|NTk|
-------------------------------------------------------------
@: Email
Cal: Calculator
Ins: Insert
Mut: Mute
NTk: Next track
PDn: Page down
PTk: Previous track
PUp: Page up
VDn: Volume down
VUp: Volume up
www: Browser home page
*/
[LAYER_1] = LAYOUT_hhkb_arrow(
// row 1
KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, \
KC_F12, KC_TRNS, KC_INS, \
// row 2
KC_TRNS, KC_TRNS, KC_TRNS, KC_MAIL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
// row 3
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
KC_TRNS, KC_TRNS, KC_TRNS, \
// row 4
KC_TRNS, KC_TRNS, KC_TRNS, KC_CALC, KC_TRNS, KC_WHOM, KC_TRNS, KC_MUTE, KC_TRNS, KC_TRNS, \
KC_TRNS, KC_VOLU, KC_TRNS, \
// row 5
KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_TRNS, KC_TRNS, KC_PGUP, KC_PGDN, KC_MPRV, KC_VOLD, \
KC_MNXT
)
};
const uint16_t PROGMEM fn_actions[] = {
};
/*
Capslock's led cannot be controlled separately on bananasplit and you can only turn on/off all
leds at once. If you only install led for capslock, it will look like capslock has toggable
backlight.
*/
void led_set_user(uint8_t usb_led) {
if (usb_led && (1 << USB_LED_CAPS_LOCK)) {
DDRB |= (1 << 7);
PORTB |= (1 << 7);
} else {
DDRB &= ~(1 << 7);
PORTB &= ~(1 << 7);
}
}

View File

@@ -0,0 +1,61 @@
Yida's keymap for BananaSplit
===
Hightlight: split backspace, ISO Enter, split space, arrows on bottom right, and toggable capslock backlight.
Note that "Previous track" and "next track" might only work with Windows.
Default layer:
```
-------------------------------------------------------------
|Esc| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | ` |Del|
-------------------------------------------------------------
| Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Ent |
-------------------------------------------------------- -
| Caps | A | S | D | F | G | H | J | K | L | ; | ' | \ | |
-------------------------------------------------------------
| Shift | Z | X | C | V | B | N | M | , | . | Shift| Up| / |
-------------------------------------------------------------
|Ctrl| GUI| Alt| Space |MoL1| Backspc| Hm|End| <-|Dwn| ->|
-------------------------------------------------------------
Hm: Home
MoL1: Mo(L1)
```
Layer_1:
```
-------------------------------------------------------------
| | F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| |Ins|
-------------------------------------------------------------
| | | | @ | | | | | | | | | | |
-------------------------------------------------------- -
| | | | | | | | | | | | | | |
-------------------------------------------------------------
| | | |Cal| |www| |Mut| | | |VUp| |
-------------------------------------------------------------
| | | | Pause | | |PUp|PDn|PTk|VDn|NTk|
-------------------------------------------------------------
@: Email
Cal: Calculator
Ins: Insert
Mut: Mute
NTk: Next track
PDn: Page down
PTk: Previous track
PUp: Page up
VDn: Volume down
VUp: Volume up
www: Browser home page
```
Compile and flash:
`cd` to `/qmk_firmware` folder, then
```
make bananasplit:jockyxu1122_iso
```
A .hex file will be generated under `/qmk_firmware` folder.
To flash, use QMK Toolbox.

View File

@@ -0,0 +1,25 @@
/* 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
#define GRAVE_ESC_CTRL_OVERRIDE
#endif

View File

@@ -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 QMK_KEYBOARD_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 | [ | ] | \ |
-------------------------------------------------------------------------------------------
| Ctrl | A | S | D | F | G | H | J | K | L | ; | ' | Enter |
-------------------------------------------------------------------------------------------
| Shift | Z | X | C | V | B | N | M | , | . | / | Shift | |
-------------------------------------------------------------------------------------------
| Fn1 | GUI | Alt | Space | Space | Space | Alt | Fn1 | Fn1 | Ctrl |
-------------------------------------------------------------------------------------------
*/
[0] = LAYOUT_base( \
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, \
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, M(0),\
MO(1), KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_NO, MO(1), KC_RCTL \
),
/*
-------------------------------------------------------------------------------------------
| ` | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Delete |
-------------------------------------------------------------------------------------------
| TAB |Home | Up | End |PgUp | | | | | | | | | PrtSc |
-------------------------------------------------------------------------------------------
| Ctrl |Left |Down |Right |PgDn | | | | | | | | Enter |
-------------------------------------------------------------------------------------------
| Shift | | | | | | | | | | | Shift | |
-------------------------------------------------------------------------------------------
| Fn1 | GUI | Alt | Space | Space | Space | Alt | | | Ctrl |
-------------------------------------------------------------------------------------------
*/
[1] = LAYOUT_base( \
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, \
KC_TAB, KC_HOME, KC_UP, KC_END, KC_PGUP, ______, ______, ______, ______, ______, ______, ______, ______, KC_PSCR, \
KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, ______, ______, ______, ______, ______, ______, ______, ______, \
KC_LSFT, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, KC_RSFT, ______, \
______, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, ______, ______, ______, KC_RCTL \
),
};
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) {
}

View File

@@ -0,0 +1,34 @@
# Kamon's keymap for the Bananasplit
A simple layout to get you started with the BananaSplit60.
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 | [ | ] | \ |
-------------------------------------------------------------------------------------------
| Ctrl | A | S | D | F | G | H | J | K | L | ; | ' | Enter |
-------------------------------------------------------------------------------------------
| Shift | Z | X | C | V | B | N | M | , | . | / | Shift | |
-------------------------------------------------------------------------------------------
| Fn1 | GUI | Alt | Space | Space | Space | Alt | Fn1 | Fn1 | Ctrl |
-------------------------------------------------------------------------------------------
```
Fn1 layer:
```
-------------------------------------------------------------------------------------------
| ` | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Delete |
-------------------------------------------------------------------------------------------
| TAB |Home | Up | End |PgUp | | | | | | | | | PrtSc |
-------------------------------------------------------------------------------------------
| Ctrl |Left |Down |Right |PgDn | | | | | | | | Enter |
-------------------------------------------------------------------------------------------
| Shift | | | | | | | | | | | Shift | |
-------------------------------------------------------------------------------------------
| Fn1 | GUI | Alt | Space | Space | Space | Alt | | | Ctrl |
-------------------------------------------------------------------------------------------
```

View File

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

View File

@@ -0,0 +1,45 @@
#include QMK_KEYBOARD_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] = LAYOUT_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] = LAYOUT_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] = LAYOUT_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] = LAYOUT_hhkb_arrow( \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
),
};
const uint16_t PROGMEM fn_actions[] = {
};

View File

@@ -0,0 +1,53 @@
# rask's BananaSplit60
![BS60 layout](http://i.imgur.com/Q7so1py.png)
## Notes
### Layers
Base layer is a regular HHKBish ANSI layer. Toggling the
alternate base layer (Fn3) makes it simpler to play games with
the left space being set to be an actual Space.
Layer 1 (Fn1) contains usual 60% functionalities such as the
F-row, while Layer 2 (Fn2) contains media controls.
The final layer (Fn4) is a special layer that acts as a lock
layer, meaning the keyboard is locked while the layer
is active. This firmware assumes a lock switch (read below).
### Lock switches
1.25u between the split space halves and the 1u key right
left of LeftArrow are to be operated with a lock switch.
If you don't have lock switches you should swap the `MO()`
calls with `TG()` calls to make the layer toggles work
with regular non/locking switches.
## How to make and flash
(These instructions are for Linux-based operating systems
with `dfu-programmer` available.)
`cd` into the `bananasplit` keyboard's directory and run
make rask
which should result in a file called `bananasplit_rask.hex` appearing
in your QMK root directory.
Now plug in your BananaSplit60 keyboard via USB. Verify
with `lsusb` that it appears. At least my PCB did not have
anything preflashed so you should see `atmega32u4` or similar
in the `lsusb` output.
Now you can flash the firmware by
$ sudo dfu-programmer atmega32u4 erase
$ cd /qmk_firmware/root/directory
$ sudo dfu-programmer atmega32u4 flash bananasplit_rask.hex
_If_ you happen to have some other `atmega32u4` based device
I suggest you plug it out before flashing your BS60 just to
prevent accidentally flashing your old device.

View File

@@ -0,0 +1,72 @@
#include QMK_KEYBOARD_H
// rask's BananaSplit60 layout
#define L_BASE 0
#define L_BASE_ALT 1
#define L_ONE 2
#define L_TWO 3
#define L_LOCK 4
#define ______ KC_TRNS
#define XXXXXX KC_NO
// L_BASE
// Initial layer with default keymap
//
// L_BASE_ALT
// Layer with some standardisation e.g. make
// space key "full" to make gaming less of a
// chore
//
// L_ONE
// General things like F-row and navigation
//
// L_TWO
// Media controls and more exotic keybinds
//
// L_LOCK
// Lock the keyboard, release to unlock
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[L_BASE] = LAYOUT_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, \
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, \
MO(L_ONE), 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, MT(MOD_RSFT, KC_SLSH), KC_UP, MO(L_TWO), \
KC_LCTRL, KC_LGUI, KC_LALT, KC_BSPC, MO(L_BASE_ALT), KC_SPACE, KC_RALT, MO(L_LOCK), KC_LEFT, KC_DOWN, KC_RIGHT \
),
[L_BASE_ALT] = LAYOUT_hhkb_arrow( \
______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, \
______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, \
______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, \
______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, \
______, ______, ______, KC_SPACE, ______, ______, ______, ______, ______, ______, ______ \
),
[L_ONE] = LAYOUT_hhkb_arrow( \
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_INS, \
______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, \
______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, \
______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, KC_PGUP, ______, \
______, ______, ______, ______, ______, ______, ______, ______, KC_HOME, KC_PGDN, KC_END \
),
[L_TWO] = LAYOUT_hhkb_arrow( \
______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, \
______, ______, ______, ______, ______, ______, ______, ______, ______, KC_MPRV, KC_MPLY, KC_MNXT, ______, ______, \
KC_CAPS, ______, ______, ______, ______, ______, ______, ______, ______, KC_VOLD, KC_VOLU, KC_MUTE, ______, \
______, ______, ______, ______, ______, ______, ______, ______, KC_MSTP, ______, ______, ______, ______, \
______, KC_APP, ______, ______, ______, ______, ______, ______, ______, ______, ______ \
),
[L_LOCK] = LAYOUT_hhkb_arrow( \
XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, \
XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, \
XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, \
XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, \
XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, ______, XXXXXX, XXXXXX, XXXXXX \
),
};

View File

@@ -0,0 +1,23 @@
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
#include QMK_KEYBOARD_CONFIG_H
#define PREVENT_STUCK_MODIFIERS
#define SPACE_COUNT 3
#define TEMPLATE( \
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, 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, KC_NO, K4B, K4C, KC_NO }\
}
#endif

View File

@@ -0,0 +1 @@
// This space intentionally left blank

View File

@@ -0,0 +1,66 @@
# MCU name
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
LAYOUTS = 60_ansi 60_iso

View File

@@ -0,0 +1,162 @@
/*
Copyright 2012 Jun Wako <wakojun@gmail.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef CONFIG_H
#define CONFIG_H
#include "config_common.h"
/* USB Device descriptor parameter */
#define VENDOR_ID 0xFEAE
#define PRODUCT_ID 0x8844
#define DEVICE_VER 0x0002
#define MANUFACTURER Evan Sailer
#define PRODUCT Minivan
#define DESCRIPTION keyboard firmware for Minivan
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
/*
* Keyboard Matrix Assignments
*
* Change this to how you wired your keyboard
* COLS: AVR pins used for columns, left to right
* ROWS: AVR pins used for rows, top to bottom
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
*
*/
#define MATRIX_ROW_PINS { D7, B5, F7, D4 }
#define MATRIX_COL_PINS { D2, D3, D5, D6, B4, B6, F6, F5, F4, F1, F0, B3 }
#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
// #define BACKLIGHT_PIN B7
// #define BACKLIGHT_BREATHING
// #define BACKLIGHT_LEVELS 3
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCING_DELAY 5
/* define if matrix has ghost (lacks anti-ghosting diodes) */
//#define MATRIX_HAS_GHOST
/* number of backlight levels */
/* 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
/*
* Force NKRO
*
* Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
* state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
* makefile for this to work.)
*
* If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
* until the next keyboard reset.
*
* NKRO may prevent your keystrokes from being detected in the BIOS, but it is
* fully operational during normal computer usage.
*
* For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
* or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
* bootmagic, NKRO mode will always be enabled until it is toggled again during a
* power-up.
*
*/
//#define FORCE_NKRO
/*
* Magic Key Options
*
* Magic keys are hotkey commands that allow control over firmware functions of
* the keyboard. They are best used in combination with the HID Listen program,
* found here: https://www.pjrc.com/teensy/hid_listen.html
*
* The options below allow the magic key functionality to be changed. This is
* useful if your keyboard/keypad is missing keys and you want magic key support.
*
*/
/* key combination for magic key command */
#define IS_COMMAND() ( \
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
/* control how magic key switches layers */
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
/* override magic key keymap */
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
//#define MAGIC_KEY_HELP1 H
//#define MAGIC_KEY_HELP2 SLASH
//#define MAGIC_KEY_DEBUG D
//#define MAGIC_KEY_DEBUG_MATRIX X
//#define MAGIC_KEY_DEBUG_KBD K
//#define MAGIC_KEY_DEBUG_MOUSE M
//#define MAGIC_KEY_VERSION V
//#define MAGIC_KEY_STATUS S
//#define MAGIC_KEY_CONSOLE C
//#define MAGIC_KEY_LAYER0_ALT1 ESC
//#define MAGIC_KEY_LAYER0_ALT2 GRAVE
//#define MAGIC_KEY_LAYER0 0
//#define MAGIC_KEY_LAYER1 1
//#define MAGIC_KEY_LAYER2 2
//#define MAGIC_KEY_LAYER3 3
//#define MAGIC_KEY_LAYER4 4
//#define MAGIC_KEY_LAYER5 5
//#define MAGIC_KEY_LAYER6 6
//#define MAGIC_KEY_LAYER7 7
//#define MAGIC_KEY_LAYER8 8
//#define MAGIC_KEY_LAYER9 9
//#define MAGIC_KEY_BOOTLOADER PAUSE
//#define MAGIC_KEY_LOCK CAPS
//#define MAGIC_KEY_EEPROM E
//#define MAGIC_KEY_NKRO N
//#define MAGIC_KEY_SLEEP_LED Z
/*
* Feature disable options
* These options are also useful to firmware size reduction.
*/
/* disable debug print */
//#define NO_DEBUG
/* disable print */
//#define NO_PRINT
/* disable action features */
//#define NO_ACTION_LAYER
//#define NO_ACTION_TAPPING
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
#endif

View File

@@ -0,0 +1,24 @@
{
"keyboard_name": "tv44",
"url": "",
"maintainer": "qmk",
"width": 12.75,
"height": 4,
"layouts": {
"LAYOUT": {
"layout": [{"label":"Tab", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"|", "x":11, "y":0, "w":1.75}, {"label":"Caps Lock", "x":0, "y":1, "w":1.25}, {"label":"A", "x":1.25, "y":1}, {"label":"S", "x":2.25, "y":1}, {"label":"D", "x":3.25, "y":1}, {"label":"F", "x":4.25, "y":1}, {"label":"G", "x":5.25, "y":1}, {"label":"H", "x":6.25, "y":1}, {"label":"J", "x":7.25, "y":1}, {"label":"K", "x":8.25, "y":1}, {"label":"L", "x":9.25, "y":1}, {"label":":", "x":10.25, "y":1}, {"label":"\"", "x":11.25, "y":1, "w":1.5}, {"label":"Shift", "x":0, "y":2, "w":1.75}, {"label":"Z", "x":1.75, "y":2}, {"label":"X", "x":2.75, "y":2}, {"label":"C", "x":3.75, "y":2}, {"label":"V", "x":4.75, "y":2}, {"label":"B", "x":5.75, "y":2}, {"label":"N", "x":6.75, "y":2}, {"label":"M", "x":7.75, "y":2}, {"label":"<", "x":8.75, "y":2}, {"label":">", "x":9.75, "y":2}, {"label":"?", "x":10.75, "y":2}, {"x":11.75, "y":2}, {"label":"Ctrl", "x":0, "y":3, "w":1.25}, {"label":"Win", "x":1.25, "y":3, "w":1.5}, {"label":"Alt", "x":2.75, "y":3, "w":1.25}, {"x":4, "y":3, "w":2.25}, {"x":6.25, "y":3, "w":2}, {"label":"Alt", "x":8.25, "y":3, "w":1.25}, {"label":"Win", "x":9.5, "y":3, "w":1.5}, {"label":"Menu", "x":11, "y":3, "w":1.75}]
},
"LAYOUT_arrow": {
"layout": [{"label":"Tab", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"|", "x":11, "y":0, "w":1.75}, {"label":"Caps Lock", "x":0, "y":1, "w":1.25}, {"label":"A", "x":1.25, "y":1}, {"label":"S", "x":2.25, "y":1}, {"label":"D", "x":3.25, "y":1}, {"label":"F", "x":4.25, "y":1}, {"label":"G", "x":5.25, "y":1}, {"label":"H", "x":6.25, "y":1}, {"label":"J", "x":7.25, "y":1}, {"label":"K", "x":8.25, "y":1}, {"label":"L", "x":9.25, "y":1}, {"label":":", "x":10.25, "y":1}, {"label":"\"", "x":11.25, "y":1, "w":1.5}, {"label":"Shift", "x":0, "y":2, "w":1.75}, {"label":"Z", "x":1.75, "y":2}, {"label":"X", "x":2.75, "y":2}, {"label":"C", "x":3.75, "y":2}, {"label":"V", "x":4.75, "y":2}, {"label":"B", "x":5.75, "y":2}, {"label":"N", "x":6.75, "y":2}, {"label":"M", "x":7.75, "y":2}, {"label":"<", "x":8.75, "y":2}, {"label":">", "x":9.75, "y":2}, {"label":"?", "x":10.75, "y":2}, {"x":11.75, "y":2}, {"label":"Ctrl", "x":0, "y":3, "w":1.25}, {"label":"Win", "x":1.25, "y":3, "w":1.5}, {"label":"Alt", "x":2.75, "y":3, "w":1.25}, {"x":4, "y":3, "w":2.25}, {"x":6.25, "y":3, "w":2}, {"x":8.25, "y":3, "w":1.5}, {"label":"Alt", "x":9.75, "y":3}, {"label":"Win", "x":10.75, "y":3}, {"label":"Menu", "x":11.75, "y":3}]
},
"LAYOUT_command": {
"layout": [{"label":"Tab", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"|", "x":11, "y":0, "w":1.75}, {"label":"Caps Lock", "x":0, "y":1, "w":1.25}, {"label":"A", "x":1.25, "y":1}, {"label":"S", "x":2.25, "y":1}, {"label":"D", "x":3.25, "y":1}, {"label":"F", "x":4.25, "y":1}, {"label":"G", "x":5.25, "y":1}, {"label":"H", "x":6.25, "y":1}, {"label":"J", "x":7.25, "y":1}, {"label":"K", "x":8.25, "y":1}, {"label":"L", "x":9.25, "y":1}, {"label":":", "x":10.25, "y":1}, {"label":"\"", "x":11.25, "y":1, "w":1.5}, {"label":"Shift", "x":0, "y":2, "w":1.75}, {"label":"Z", "x":1.75, "y":2}, {"label":"X", "x":2.75, "y":2}, {"label":"C", "x":3.75, "y":2}, {"label":"V", "x":4.75, "y":2}, {"label":"B", "x":5.75, "y":2}, {"label":"N", "x":6.75, "y":2}, {"label":"M", "x":7.75, "y":2}, {"label":"<", "x":8.75, "y":2}, {"label":">", "x":9.75, "y":2}, {"label":"?", "x":10.75, "y":2}, {"x":11.75, "y":2}, {"label":"Ctrl", "x":0, "y":3}, {"label":"Win", "x":1, "y":3}, {"label":"Alt", "x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3, "w":2.25}, {"x":6.25, "y":3, "w":2}, {"x":8.25, "y":3, "w":1.5}, {"label":"Alt", "x":9.75, "y":3, "w":1.5}, {"label":"Win", "x":11.25, "y":3, "w":1.5}]
},
"LAYOUT_arrow_command": {
"layout": [{"label":"Tab", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"|", "x":11, "y":0, "w":1.75}, {"label":"Caps Lock", "x":0, "y":1, "w":1.25}, {"label":"A", "x":1.25, "y":1}, {"label":"S", "x":2.25, "y":1}, {"label":"D", "x":3.25, "y":1}, {"label":"F", "x":4.25, "y":1}, {"label":"G", "x":5.25, "y":1}, {"label":"H", "x":6.25, "y":1}, {"label":"J", "x":7.25, "y":1}, {"label":"K", "x":8.25, "y":1}, {"label":"L", "x":9.25, "y":1}, {"label":":", "x":10.25, "y":1}, {"label":"\"", "x":11.25, "y":1, "w":1.5}, {"label":"Shift", "x":0, "y":2, "w":1.75}, {"label":"Z", "x":1.75, "y":2}, {"label":"X", "x":2.75, "y":2}, {"label":"C", "x":3.75, "y":2}, {"label":"V", "x":4.75, "y":2}, {"label":"B", "x":5.75, "y":2}, {"label":"N", "x":6.75, "y":2}, {"label":"M", "x":7.75, "y":2}, {"label":"<", "x":8.75, "y":2}, {"label":">", "x":9.75, "y":2}, {"label":"?", "x":10.75, "y":2}, {"x":11.75, "y":2}, {"label":"Ctrl", "x":0, "y":3}, {"label":"Win", "x":1, "y":3}, {"label":"Alt", "x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3, "w":2.25}, {"x":6.25, "y":3, "w":2}, {"x":8.25, "y":3, "w":1.5}, {"label":"Alt", "x":9.75, "y":3}, {"label":"Win", "x":10.75, "y":3}, {"label":"Menu", "x":11.75, "y":3}]
}
}
}

View File

@@ -0,0 +1,8 @@
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
#include "../../config.h"
#define TAPPING_TERM 500
#endif

View File

@@ -0,0 +1,102 @@
#include QMK_KEYBOARD_H
// Layer names. We stick to 3 letters if possible so MO(NAME) fits in 7
// characters and doesn't mess with the grid.
#define _QW 0
#define _L1 1
#define _L2 2
#define _L3 3
// Curly braces have their own keys. These are defined so they don't mess up the
// grid in layer 2.
#define L_CURBR LSFT(KC_LBRC)
#define R_CURBR LSFT(KC_RBRC)
#define L1_TAB LT(_L1, KC_TAB)
#define L2_ESC LT(_L2, KC_ESC)
#define L2_SLSH LT(_L2, KC_SLSH)
#define L3_QUOT LT(_L3, KC_QUOT)
// Tap dance magic
#define TD_LGUI TD(BE_TD_GUI)
#define TD_LCTL TD(BE_TD_CTL)
#define TD_LALT TD(BE_TD_ALT)
enum belak_td {
BE_TD_GUI = 0,
BE_TD_CTL,
BE_TD_ALT,
};
void mod_tap_fn(qk_tap_dance_state_t *state, void *user_data);
void mod_reset_fn(qk_tap_dance_state_t *state, void *user_data);
qk_tap_dance_action_t tap_dance_actions[] = {
[BE_TD_GUI] = ACTION_TAP_DANCE_FN_ADVANCED(mod_tap_fn, NULL, mod_reset_fn),
[BE_TD_CTL] = ACTION_TAP_DANCE_FN_ADVANCED(mod_tap_fn, NULL, mod_reset_fn),
[BE_TD_ALT] = ACTION_TAP_DANCE_FN_ADVANCED(mod_tap_fn, NULL, mod_reset_fn),
};
uint16_t tap_dance_keys[] = {
[BE_TD_GUI] = KC_LGUI,
[BE_TD_CTL] = KC_LCTL,
[BE_TD_ALT] = KC_LALT,
};
// Fillers to make layering more clear
#define _______ KC_TRNS
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QW] = LAYOUT_arrow_command( /* Qwerty */
L2_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
L1_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, L2_SLSH,
TD_LCTL, MO(_L3), TD_LALT, TD_LGUI, KC_SPC, KC_SPC, MO(_L1), KC_LEFT, KC_DOWN, KC_RGHT
),
[_L1] = LAYOUT_arrow_command( /* LAYER 1 */
KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
_______, KC_BSLS, KC_QUOT, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_DOWN, KC_UP, KC_LEFT, KC_RGHT, KC_QUOT,
_______, KC_ESC, _______, KC_PSCR, _______, _______, _______, KC_MSTP, KC_MPLY, KC_MPRV, KC_MNXT, KC_RSFT,
_______, KC_LGUI, _______, _______, _______, _______, _______, _______, _______, _______
),
[_L2] = LAYOUT_arrow_command( /* LAYER 2 */
_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
KC_ESC, KC_PIPE, KC_DQUO, KC_UNDS, KC_PLUS, L_CURBR, R_CURBR, KC_4, KC_5, KC_6, KC_VOLU, _______,
_______, _______, _______, _______, _______, _______, KC_0, KC_1, KC_2, KC_3, KC_VOLD, _______,
_______, _______, _______, _______, _______, _______, KC_RALT, _______, _______, _______
),
[_L3] = LAYOUT_arrow_command( /* LAYER 3 */
_______, _______, _______, _______, _______, _______, _______, KC_F1, KC_F2, KC_F3, KC_F4, _______,
KC_ESC, _______, _______, _______, _______, _______, _______, KC_F5, KC_F6, KC_F7, KC_F8, _______,
_______, _______, _______, _______, _______, _______, _______, KC_F9, KC_F10, KC_F11, KC_F12, KC_RSFT,
_______, _______, _______, _______, _______, _______, KC_RALT, _______, _______, _______
)
};
const uint16_t PROGMEM fn_actions[] = {};
// Tap dance functions
void mod_tap_fn(qk_tap_dance_state_t *state, void *user_data) {
switch (state->count) {
case 1:
register_mods(MOD_BIT(tap_dance_keys[state->keycode - QK_TAP_DANCE]));
send_keyboard_report();
break;
case 2:
layer_on(_L2);
break;
case 3:
layer_off(_L2);
layer_on(_L1);
break;
default:
reset_tap_dance(state);
}
}
void mod_reset_fn(qk_tap_dance_state_t *state, void *user_data) {
layer_off(_L1);
layer_off(_L2);
unregister_mods(MOD_BIT(tap_dance_keys[state->keycode - QK_TAP_DANCE]));
send_keyboard_report();
}

View File

@@ -0,0 +1,14 @@
# Belak's TV44 (TV46?) layout
This layout is roughly based on the low-rider arrow-southpaw layout from [the
configurator](http://minivan.config.thevankeyboards.com) with a number of
changes to make it easier to use and add in missing keys (like adding / and '
to the main layer)
## Rev1
* Moved enter to a more standard location to have a full spacebar
* Quote is now on L1
* Small tweaks to make modifiers work a little more consistently
* Greatly increase the tapping term to make the tap-dance mods easier to use

View File

@@ -0,0 +1,12 @@
#BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
#EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
#CONSOLE_ENABLE = yes # Console for debug(+400)
#DEBUG_ENABLE = yes
#COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
TAP_DANCE_ENABLE = yes
ifndef QUANTUM_DIR
include ../../../../Makefile
endif

View File

@@ -0,0 +1,22 @@
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
#include "../../config.h"
// place overrides here
#ifdef DEBOUNCING_DELAY
#undef DEBOUNCING_DELAY
#endif
#define DEBOUNCING_DELAY 2
#define MOUSEKEY_INTERVAL 10
#define MOUSEKEY_DELAY 0
#define MOUSEKEY_TIME_TO_MAX 120
#define MOUSEKEY_MAX_SPEED 9
#define MOUSEKEY_WHEEL_DELAY 0
#define MOUSEKEY_WHEEL_MAX_SPEED 2
#define MOUSEKEY_WHEEL_TIME_TO_MAX 120
#define TAPPING_TOGGLE 1
#define TAPPING_TERM 200
#define IGNORE_MOD_TAP_INTERRUPT
#define FORCE_NKRO
#endif

View File

@@ -0,0 +1,229 @@
#include QMK_KEYBOARD_H
extern keymap_config_t keymap_config;
// Each layer gets a name for readability, which is then used in the keymap matrix below.
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
// Layer names don't all need to be of the same length, obviously, and you can also skip them
// entirely and just use numbers.
#define _DV 0
#define _NM 1
#define _NV 2
#define _MN 3
#define _FN 4
// Requires KC_TRNS/_______ for the trigger key in the destination layer
#define NM_SP LT(_NM, KC_SPC)
#define NV_SP LT(_NV, KC_SPC)
#define MN_EN LT(_MN, KC_ENT)
#define FN_EX LT(_FN, KC_ESC)
// Curly braces have their own keys. These are defined to make them not mess up
// the grid in layer 2.
#define L_CURB LSFT(KC_LBRC)
#define R_CURB LSFT(KC_RBRC)
// Hypers
#define HYP0 HYPR(KC_0)
#define HYP1 HYPR(KC_1)
#define HYP2 HYPR(KC_2)
#define HYP3 HYPR(KC_3)
#define HYP4 HYPR(KC_4)
#define HYP5 HYPR(KC_5)
#define HYP6 HYPR(KC_6)
#define HYP7 HYPR(KC_7)
#define HYP8 HYPR(KC_8)
#define HYP9 HYPR(KC_9)
// MEH
#define MEH0 MEH(KC_0)
#define MEH1 MEH(KC_1)
#define MEH2 MEH(KC_2)
#define MEH3 MEH(KC_3)
#define MEH4 MEH(KC_4)
#define MEH5 MEH(KC_5)
#define MEH6 MEH(KC_6)
#define MEH7 MEH(KC_7)
#define MEH8 MEH(KC_8)
#define MEH9 MEH(KC_9)
// CAG
#define CAG0 LCAG(KC_0)
#define CAG1 LCAG(KC_1)
#define CAG2 LCAG(KC_2)
#define CAG3 LCAG(KC_3)
#define CAG4 LCAG(KC_4)
#define CAG5 LCAG(KC_5)
#define CAG6 LCAG(KC_6)
#define CAG7 LCAG(KC_7)
#define CAG8 LCAG(KC_8)
#define CAG9 LCAG(KC_9)
// ALTS
#define ALT0 LALT(KC_0)
#define ALT1 LALT(KC_1)
#define ALT2 LALT(KC_2)
#define ALT3 LALT(KC_3)
#define ALT4 LALT(KC_4)
#define ALT5 LALT(KC_5)
#define ALT6 LALT(KC_6)
#define ALT7 LALT(KC_7)
#define ALT8 LALT(KC_8)
#define ALT9 LALT(KC_9)
#define ALTX LALT(KC_GRV)
#define ALTL LALT(KC_LEFT)
#define ALTR LALT(KC_RIGHT)
#define ALTESC LALT(KC_ESC)
#define ALTEQL LALT(KC_EQL)
#define ALTMIN LALT(KC_MINS)
// BACK AND FORWARD
#define XBACK LGUI(LALT(KC_LEFT))
#define XFFWD LGUI(LALT(KC_RIGHT))
// Fillers to make layering more clear
#define _______ KC_TRNS
#define xxxxxxx KC_NO
enum custom_keycodes {
PLACEHOLDER = SAFE_RANGE, // can always be here
SWTCH
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* DVORAK
* ,---------+------+------+------+------+------+------+------+------+------+------+------------.
* | TAB | ' | , | . | P | Y | F | G | C | R | L | BACKSPACE |
* |---------`------`------`------`------`------`------`------`------`------`------`------------|
* | LCTL | A | O | E | U | I | D | H | T | N | S | MN/ENTER |
* |----------`------`------`------`------`------`------`------`------`------`------`-----------|
* | LSHFT | ; | Q | J | K | X | B | M | W | V | Z | RSHFT |
* |-----------`------`------`------`------`------`-------`------`------`------`------`---------|
* | FN EX | GUI | ALT | NM / SPACE | NV / SPACE | RALT | - | = | ESC |
* `---------+----------+----------+-----^^^------+----^^^-----+-------+-------+-------+-------'
*/
[_DV] = LAYOUT_arrow(
KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC,
KC_LCTL, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, MN_EN,
KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT,
FN_EX, KC_LGUI, KC_LALT, NM_SP, NV_SP, KC_RALT, KC_MINS, KC_EQL, KC_ESC
),
/* NUMBERS
* ,---------+------+------+------+------+------+------+------+------+------+------+------------.
* | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | DELETE |
* |---------`------`------`------`------`------`------`------`------`------`------`------------|
* | LCTL | ! | @ | [ | { | ( | ) | } | ] | | | ? | ENTER |
* |----------`------`------`------`------`------`------`------`------`------`------`-----------|
* | LSFT | ` | ~ | # | $ | % | ^ | & | * | _ | + | = |
* | LSFT | ` | ~ | # | $ | % | ^ | & | * | _ | + | / |
* |-----------`------`------`------`------`------`-------`------`------`------`------`---------|
* | | GUI | LALT |-----TRNS-----| SPACE | RALT | - | = | \ |
* |-----------`------`------`------`------`------`-------`------`------`------`------`---------|
*/
[_NM] = LAYOUT_arrow(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
_______, KC_EXLM, KC_AT, KC_LBRC, L_CURB, KC_LPRN, KC_RPRN, R_CURB, KC_RBRC, KC_PIPE, KC_QUES, _______,
_______, KC_GRV, KC_TILD, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_UNDS, KC_PLUS, KC_SLSH,
_______, _______, _______, _______, KC_SPC, _______, KC_MINS, KC_EQL, KC_BSLS
),
/* NAVIGATION
* ,---------+------+------+------+------+------+------+------+------+------+------+------------.
* | ESC | MWU | MWL | MU | MWR | MPRV | MNXT | HOME | UP | END | PGUP | DELETE |
* |---------`------`------`------`------`------`------`------`------`------`------`------------|
* | LCTL | MWD | ML | MD | MR | MRWD | MFFD | LEFT | DOWN | RIGHT| PGDN | MB2 |
* |----------`------`------`------`------`------`------`------`------`------`------`-----------|
* | LSFT | HYP1 | HYP2 | HYP3 | HYP4 | HYP5 | HYP6 | HYP7 | HYP8 | HYP9 | HYP0 | VOLUP |
* |-----------`------`------`------`------`------`-------`------`------`------`------`---------|
* | | GUI | LALT | MB1 |----TRNS----| MUTE | PLAY | STOP | VOLDN |
* `---------+----------+----------+-----^^^------+----^^^-----+-------+-------+-------+-------'
*/
[_NV] = LAYOUT_arrow(
KC_ESC, KC_WH_U, KC_WH_L, KC_MS_U, KC_WH_R, KC_MPRV, KC_MNXT, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_DEL,
_______, KC_WH_D, KC_MS_L, KC_MS_D, KC_MS_R, KC_MRWD, KC_MFFD, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_BTN2,
_______, HYP1, HYP2, HYP3, HYP4, HYP5, HYP6, HYP7, HYP8, HYP9, HYP0, KC_VOLU,
_______, _______, _______, KC_BTN1, _______, KC_MUTE, KC_MPLY, KC_MSTP, KC_VOLD
),
/* MODIFIED NUMBERS
* ,---------+------+------+------+------+------+------+------+------+------+------+------------.
* | ALTESC | CAG1 | CAG2 | CAG3 | CAG4 | CAG5 | CAG6 | CAG7 | CAG8 | CAG9 | CAG0 | SWTCH |
* |---------`------`------`------`------`------`------`------`------`------`------`------------|
* | ALT ` | ALT1 | ALT2 | ALT3 | ALT4 | ALT5 | ALT6 | ALT7 | ALT8 | ALT9 | ALT0 |----TRNS---|
* |----------`------`------`------`------`------`------`------`------`------`------`-----------|
* | ALT = | MEH1 | MEH2 | MEH3 | MEH4 | MEH5 | MEH6 | MEH7 | MEH8 | MEH9 | MEH0 | |
* |-----------`------`------`------`------`------`-------`------`------`------`------`---------|
* | ALT - | | XBACK | ALT LEFT | ALT RIGHT | XFFWD | | | |
* `---------+----------+----------+-----^^^------+----^^^-----+-------+-------+-------+-------'
*/
[_MN] = LAYOUT_arrow(
ALTESC, CAG1, CAG2, CAG3, CAG4, CAG5, CAG6, CAG7, CAG8, CAG9, CAG0, SWTCH,
ALTX, ALT1, ALT2, ALT3, ALT4, ALT5, ALT6, ALT7, ALT8, ALT9, ALT0, _______,
ALTEQL, MEH1, MEH2, MEH3, MEH4, MEH5, MEH6, MEH7, MEH8, MEH9, MEH0, xxxxxxx,
ALTMIN, xxxxxxx, XBACK, ALTL, ALTR, XFFWD, xxxxxxx, xxxxxxx, xxxxxxx
),
/* FUNCTIONS
* ,---------+------+------+------+------+------+------+------+------+------+------+------------.
* | ESC | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | DELETE |
* |---------`------`------`------`------`------`------`------`------`------`------`------------|
* | LCTL | F11 | F12 | F13 | F14 | F15 | F16 | F17 | F18 | F19 | F20 | |
* |----------`------`------`------`------`------`------`------`------`------`------`-----------|
* | LSFT | | | | | | | | | | | |
* |-----------`------`------`------`------`------`-------`------`------`------`------`---------|
* |---TRNS---| CAPS | LALT | | SWTCH | RALT | | RESET |--TRNS-|
* `---------+----------+----------+-----^^^------+----^^^-----+-------+-------+-------+-------'
*/
[_FN] = LAYOUT_arrow(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL,
_______, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, xxxxxxx,
_______, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, KC_PWR, KC_SLEP, KC_WAKE, xxxxxxx, xxxxxxx, xxxxxxx,
_______, KC_CAPS, _______, xxxxxxx, SWTCH, KC_RALT, xxxxxxx, RESET, _______
)
/* Transparent placeholder for more layers
* ,---------+------+------+------+------+------+------+------+------+------+------+------------.
* | | | | | | | | | | | | |
* |---------`------`------`------`------`------`------`------`------`------`------`------------|
* | | | | | | | | | | | | |
* |----------`------`------`------`------`------`------`------`------`------`------`-----------|
* | | | | | | | | | | | | |
* |-----------`------`------`------`------`------`-------`------`------`------`------`---------|
* | | | | | | | | | |
* `---------+----------+----------+-----^^^------+----^^^-----+-------+-------+-------+-------'
*/
// [_TR] = LAYOUT_arrow(
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
// _______, _______, _______, _______, _______, _______, _______, _______, _______
// )
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (record->event.pressed) {
switch (keycode) {
case SWTCH:
SEND_STRING(SS_DOWN(X_LGUI));
SEND_STRING(SS_DOWN(X_LSHIFT));
SEND_STRING(SS_TAP(X_ENTER));
SEND_STRING(SS_UP(X_LSHIFT));
SEND_STRING(SS_UP(X_LGUI));
return false;
}
}
return true;
}

View File

@@ -0,0 +1,17 @@
# Budi's TV44 Arrow layout
- Dvorak main layer
- Somewhat easy bracket access for easy devs, happy :)
- Dedicated gaming layers cuz u don't wanna mess with apm
- Mainly for windows, but with translated alt/cmd on os, it's good to go
ASCII graphics shamelessly stolen from tong92's layout :)
Updates August 2018:
- Escape both ways
- Only include QMK_KEYBOARD_H
Updates July 2018:
- I guess I don't play games that much anymore
- SUGDW modifiers
- Somehow LALT(LSFT(KC_RET)) does not register correctly on my mac

View File

@@ -0,0 +1,32 @@
#include QMK_KEYBOARD_H
#define _QW 0
#define _L1 1
#define _L2 2
// Fillers to make layering more clear
#define _______ KC_TRNS
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QW] = LAYOUT( /* Qwerty */
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, 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_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, MO(_L2),
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, MO(_L1), KC_RALT, KC_RCTL
),
[_L1] = LAYOUT( /* LAYER 1 */
KC_GRV, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, KC_CALC, KC_PGUP, KC_UP, KC_PGDN, KC_PSCR, KC_PAUS,
KC_TAB, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_INS, _______,
_______, _______, _______, _______, _______, _______, KC_END, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______
),
[_L2] = LAYOUT( /* LAYER 2 */
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_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_UNDS, KC_PLUS,
_______, _______, _______, _______, _______, KC_COMM, KC_SLSH, KC_RBRC, KC_LBRC, KC_BSLS, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______
),
};
const uint16_t PROGMEM fn_actions[] = {
};

View File

@@ -0,0 +1,18 @@
# A minivan keymap based off the Vertex Core
## Main differences
* There are only 3 keys on the bottom right, so menu was dropped
* There are only 3 keys on the bottom left, so Pn was dropped because there is
no programmable layer.
* There are only 12 keys in the first row, so the delete key (along with scroll
lock) has been dropped.
* The F1-F12 keys have been shifted by 1 so they all fit in the first row of
layer 2.
* Moved the grave/tilde to layer 1 (because in layer 2 it's now taken up by F1).
* Keys relating to speed have been removed
* The `L_Win + L_Alt + R_spacebar = R_Shift, R_Alt, Menu and R_Ctrl as arrow
keys` as mentioned in the manual does not work.
* The layer 2 plus shift should have support for symbols in the first row (where
the F1-F12 keys are) but this has not been implemented, so you need to use the
second row (where the numbers are).

View File

@@ -0,0 +1,3 @@
ifndef QUANTUM_DIR
include ../../../../Makefile
endif

View File

@@ -0,0 +1,8 @@
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
#include "../../config.h"
// place overrides here
#endif

View File

@@ -0,0 +1,99 @@
#include QMK_KEYBOARD_H
extern keymap_config_t keymap_config;
// Each layer gets a name for readability, which is then used in the keymap matrix below.
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
// Layer names don't all need to be of the same length, obviously, and you can also skip them
// entirely and just use numbers.
#define _QW 0
#define _DV 1
#define _CM 2
#define _L1 3
#define _L2 4
#define _L3 5
// Macro name shortcuts
#define QWERTY M(_QW)
#define DVORAK M(_DV)
#define COLEMAK M(_CM)
// Curly braces have their own keys. These are defined to make them not mess up
// the grid in layer 2.
#define L_CURBR LSFT(KC_LBRC)
#define R_CURBR LSFT(KC_RBRC)
// Fillers to make layering more clear
#define _______ KC_TRNS
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QW] = LAYOUT( /* Qwerty */
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
MO(_L1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, MO(_L1),
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MO(_L2),
KC_LCTL, MO(_L2), KC_LGUI, KC_ENT, KC_SPC, KC_RALT, KC_ESC, TG(_L3)
),
[_DV] = LAYOUT( /* Dvorak */
KC_TAB, KC_SLSH, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC,
MO(_L1), KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, MO(_L1),
KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, MO(_L2),
KC_LCTL, MO(_L2), KC_LGUI, KC_ENT, KC_SPC, KC_RALT, KC_ESC, TG(_L3)
),
[_CM] = LAYOUT( /* Colemak */
KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
MO(_L1), KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, MO(_L1),
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, MO(_L2),
KC_LCTL, MO(_L2), KC_LGUI, KC_ENT, KC_SPC, KC_RALT, KC_ESC, TG(_L3)
),
[_L1] = LAYOUT( /* LAYER 1 */
KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
_______, KC_BSLS, KC_QUOT, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_DOWN, KC_UP, KC_LEFT, KC_RGHT, _______,
_______, KC_ESC, _______, KC_PSCR, _______, _______, _______, KC_MSTP, KC_MPLY, KC_MPRV, KC_MNXT, KC_RSFT,
_______, KC_LGUI, _______, _______, _______, _______, _______, _______
),
[_L2] = LAYOUT( /* LAYER 2 */
_______, QWERTY, DVORAK, COLEMAK, _______, _______, _______, KC_7, KC_8, KC_9, KC_0, _______,
KC_ESC, KC_PIPE, KC_DQUO, KC_UNDS, KC_PLUS, L_CURBR, R_CURBR, KC_4, KC_5, KC_6, KC_VOLU, KC_ENT,
_______, _______, _______, _______, _______, _______, KC_0, KC_1, KC_2, KC_3, KC_VOLD, _______,
_______, _______, _______, _______, _______, _______, _______, _______
),
[_L3] = LAYOUT( /* LAYER 3 */
_______, _______, _______, _______, _______, _______, _______, KC_F1, KC_F2, KC_F3, KC_F4, _______,
KC_ESC, _______, _______, _______, _______, _______, _______, KC_F5, KC_F6, KC_F7, KC_F8, _______,
KC_LSFT, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_F9, KC_F10, KC_F11, KC_F12, _______,
_______, KC_LSFT, KC_B, KC_SPC, KC_C, _______, _______, _______
)
};
const uint16_t PROGMEM fn_actions[] = {
};
void persistent_default_layer_set(uint16_t default_layer) {
eeconfig_update_default_layer(default_layer);
default_layer_set(default_layer);
}
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{
switch(id) {
case _DV:
if (record->event.pressed) {
persistent_default_layer_set(1UL<<_DV);
}
break;
case _QW:
if (record->event.pressed) {
persistent_default_layer_set(1UL<<_QW);
}
break;
case _CM:
if (record->event.pressed) {
persistent_default_layer_set(1UL<<_CM);
}
break;
}
return MACRO_NONE;
};

View File

@@ -0,0 +1 @@
# The default keymap for tv44

View File

@@ -0,0 +1,21 @@
# 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 controls
AUDIO_ENABLE = no # Audio output on port C6
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
ifndef QUANTUM_DIR
include ../../../../Makefile
endif

View File

@@ -0,0 +1,423 @@
#include QMK_KEYBOARD_H
extern keymap_config_t keymap_config;
// Each layer gets a name for readability, which is then used in the keymap matrix below.
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
// Layer names don't all need to be of the same length, obviously, and you can also skip them
// entirely and just use numbers.
#define _QWERTY 0
#define _COLEMAK 1
#define _DVORAK 2
#define _LOWER 3
#define _RAISE 4
#define _PLOVER 5
#define _TOUCHCURSOR 6
#define _MOUSECURSOR 7
#define _ADJUST 16
// Keycodes
enum planck_keycodes {
QWERTY = SAFE_RANGE,
COLEMAK,
DVORAK,
PLOVER,
LOWER,
RAISE,
BACKLIT,
EXT_PLV
};
enum macro_keycodes {
KC_ALT_TAB,
KC_CMD_TAB,
KC_CTL_TAB,
KC_CMD_SLSH,
KC_AG_FIND,
KC_AG_AGAIN,
KC_AG_UNDO,
KC_AG_CUT,
KC_AG_COPY,
KC_AG_PASTE,
KC_AG_DESK_L,
KC_AG_DESK_R,
KC_AG_TAB_C,
KC_AG_TAB_N,
KC_AG_TAB_R,
};
// Fillers to make layering more clear
#define _______ KC_TRNS
#define XXXXXXX KC_NO
// Custom macros
#define CTL_ESC CTL_T(KC_ESC) // Tap for Esc, hold for Ctrl
#define SFT_ENT SFT_T(KC_ENT) // Tap for Enter, hold for Shift
#define HPR_TAB ALL_T(KC_TAB) // Tap for Tab, hold for Hyper
#define GUI_SEM GUI_T(KC_SCLN) // Tap for Semicolon, hold for GUI
#define ALT_QUO ALT_T(KC_QUOT) // Tap for Quote, hold for Alt
// Requires KC_TRNS/_______ for the trigger key in the destination layer
#define LT_TC LT(_TOUCHCURSOR, KC_SPC) // L-ayer T-ap T-ouch C-ursor
#define LT_MC(kc) LT(_MOUSECURSOR, kc) // L-ayer T-ap M-ouse C-ursor
#define ALT_TAB M(KC_ALT_TAB) // Macro for Alt-Tab
#define CMD_TAB M(KC_CMD_TAB) // Macro for Cmd-Tab
#define CTL_TAB M(KC_CTL_TAB) // Macro for Ctl-Tab
#define CMD_SLSH M(KC_CMD_SLSH) // Macro for Cmd-Slash (personal shortcut to toggle iTerm2 visibility)
#define AG_FIND M(KC_AG_FIND) // Macros for Cmd-[x] vs Ctrl-[x] based on current AG_NORM or AG_SWAP settings
#define AG_AGAIN M(KC_AG_AGAIN)
#define AG_UNDO M(KC_AG_UNDO)
#define AG_CUT M(KC_AG_CUT)
#define AG_COPY M(KC_AG_COPY)
#define AG_PASTE M(KC_AG_PASTE)
#define AG_D_L M(KC_AG_DESK_L) // For Virtual Desktop Switching: Left, and
#define AG_D_R M(KC_AG_DESK_R) // Right
#define AG_T_C M(KC_AG_TAB_C) // For Chrome, etc. Tab Close,
#define AG_T_N M(KC_AG_TAB_N) // Tab New, and
#define AG_T_R M(KC_AG_TAB_R) // Tab Reopen Closed
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Qwerty
*
* ,---------+------+------+------+------+------+------+------+------+------+------+-------------.
* |Hyper/Tab| Q | W | E | R | T | Y | U | I | O | P | Bksp |
* |---------`------`------`------`------`------`------`------`------`------`------`-------------|
* | Ctrl/Esc | A | S | MC/D | F | G | H | J | K | L |GUI/; | Alt/" |
* |----------`------`------`------`------`------`------`------`------`------`------`------------|
* | Shift | Z | X | C | V | B | N | M | , | . | / | Sft/Ent |
* |-----------`------`------`------`------`-----'-------`------`------`------`------`-----------|
* | Alt | GUI | Lower | TC/Space | TC/Space | Raise | Vol+ | Play |
* `--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------'
*/
[_QWERTY] = LAYOUT(
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
HPR_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC ,
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
CTL_ESC , KC_A, KC_S,LT_MC(KC_D), KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, GUI_SEM, ALT_QUO ,
/*|---------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`----------------|*/
KC_LSFT , KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_ENT ,
/*|----------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`---------------|*/
KC_LALT , KC_LGUI , LOWER , LT_TC , LT_TC , RAISE , KC_VOLU , KC_MPLY ),
/*`-----------+---------------+---------+-------^^^------+-------^^^-------+---------+-----------------+--------------'*/
/* Colemak
* ,---------+------+------+------+------+------+------+------+------+------+------+-------------.
* |Hyper/Tab| Q | W | F | P | G | J | L | U | Y | ; | Bksp |
* |---------`------`------`------`------`------`------`------`------`------`------`-------------|
* | Ctrl/Esc | A | R | MC/S | T | D | H | N | E | I | O | " |
* |----------`------`------`------`------`------`------`------`------`------`------`------------|
* | Shift | Z | X | C | V | B | K | M | , | . | / | Sft/Ent |
* |-----------`------`------`------`------`-----'-------`------`------`------`------`-----------|
* | Alt | GUI | Lower | TC/Space | TC/Space | Raise | Vol+ | Play |
* `--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------'
*/
[_COLEMAK] = LAYOUT(
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
HPR_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC ,
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
CTL_ESC , KC_A, KC_R,LT_MC(KC_S), KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT ,
/*|---------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`----------------|*/
KC_LSFT , KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_ENT ,
/*|----------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`---------------|*/
KC_LALT , KC_LGUI , LOWER , LT_TC , LT_TC , RAISE , KC_VOLU , KC_MPLY ),
/*`-----------+---------------+---------+-------^^^------+-------^^^-------+---------+-----------------+--------------'*/
/* Dvorak
* ,---------+------+------+------+------+------+------+------+------+------+------+-------------.
* |Hyper/Tab| " | , | . | P | Y | F | G | C | R | L | Bksp |
* |---------`------`------`------`------`------`------`------`------`------`------`-------------|
* | Ctrl/Esc | A | O | MC/E | U | I | D | H | T | N | S | / |
* |----------`------`------`------`------`------`------`------`------`------`------`------------|
* | Shift | ; | Q | J | K | X | B | M | W | V | Z | Sft/Ent |
* |-----------`------`------`------`------`-----'-------`------`------`------`------`-----------|
* | Alt | GUI | Lower | TC/Space | TC/Space | Raise | Vol+ | Play |
* `--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------'
*/
[_DVORAK] = LAYOUT(
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
HPR_TAB,KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC ,
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
CTL_ESC , KC_A, KC_O,LT_MC(KC_E), KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH ,
/*|---------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`----------------|*/
KC_LSFT , KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, SFT_ENT ,
/*|----------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`---------------|*/
KC_LALT , KC_LGUI , LOWER , LT_TC , LT_TC , RAISE , KC_VOLU , KC_MPLY ),
/*`-----------+---------------+---------+-------^^^------+-------^^^-------+---------+-----------------+--------------'*/
/* Lower
* ,---------+------+------+------+------+------+------+------+------+------+------+-------------.
* | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
* |---------`------`------`------`------`------`------`------`------`------`------`-------------|
* | [ | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | "|" |
* |----------`------`------`------`------`------`------`------`------`------`------`------------|
* | ] | F7 | F8 | F9 | F10 | F11 | F12 | - | = | [ | ] | \ |
* |-----------`------`------`------`------`-----'-------`------`------`------`------`-----------|
* | Brite | | | | | | Vol- | Mute |
* `--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------'
*/
[_LOWER] = LAYOUT(
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
KC_TILD,KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC ,
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
KC_LBRC , KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE ,
/*|---------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`----------------|*/
KC_RBRC , KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS ,
/*|----------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`---------------|*/
BACKLIT , _______ , _______ , _______ , _______ , _______ , KC_VOLD , KC_MUTE ),
/*`-----------+---------------+---------+-------^^^------+-------^^^-------+---------+-----------------+--------------'*/
/* Raise
* ,---------+------+------+------+------+------+------+------+------+------+------+-------------.
* | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
* |---------`------`------`------`------`------`------`------`------`------`------`-------------|
* | $ | 4 | 5 | 6 | . | + | . | 4 | 5 | 6 | * | "|" |
* |----------`------`------`------`------`------`------`------`------`------`------`------------|
* | = | 7 | 8 | 9 | 0 | - | . | 1 | 2 | 3 | / | \ |
* |-----------`------`------`------`------`-----'-------`------`------`------`------`-----------|
* | Brite | | | | | | Vol- | Mute |
* `--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------'
*/
[_RAISE] = LAYOUT(
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
KC_0 , KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC ,
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
KC_DLR , KC_4, KC_5, KC_6, KC_DOT, KC_PLUS, KC_DOT, KC_4, KC_5, KC_6, KC_ASTR, KC_PIPE ,
/*|---------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`----------------|*/
KC_EQL , KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_DOT, KC_1, KC_2, KC_3, KC_SLSH, KC_BSLS ,
/*|----------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`---------------|*/
BACKLIT , _______ , _______ , _______ , _______ , _______ , KC_VOLD , KC_MUTE ),
/*`-----------+---------------+---------+-------^^^------+-------^^^-------+---------+-----------------+--------------'*/
/* TouchCursor layer (http://martin-stone.github.io/touchcursor/) plus personal customizations
* ,---------+------+------+------+------+------+------+------+------+------+------+-------------.
* | AltTab |CmdTab|CtlTab| GUI |Shift | ~ |Insert| Home | Up | End | Bksp | |
* |---------`------`------`------`------`------`------`------`------`------`------`-------------|
* | | Alt |Space |Tab_C | Find |Again | PgUp | Left | Down |Right |Desk_L| Desk_R |
* |----------`------`------`------`------`------`------`------`------`------`------`------------|
* | | Undo | Cut | Copy |Paste | ` | PgDn | Del |Tab_N |Tab_R |iTerm2| |
* |-----------`------`------`------`------`-----'-------`------`------`------`------`-----------|
* | | | | | | | | |
* `--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------'
*
* The KC_UNDO, KC_CUT, KC_COPY, KC_PASTE, KC_FIND, and KC_AGAIN keycodes don't
* seem to work on Mac. Presumably they'll work under Windows.
*/
[_TOUCHCURSOR] = LAYOUT(
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
ALT_TAB,CMD_TAB, CTL_TAB, KC_LGUI, KC_LSFT, KC_TILD, KC_INS, KC_HOME, KC_UP, KC_END, KC_BSPC, _______ ,
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
_______ ,KC_LALT, KC_SPC, AG_T_C, AG_FIND,AG_AGAIN, KC_PGUP, KC_LEFT, KC_DOWN, KC_RGHT, AG_D_L, AG_D_R ,
/*|---------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`----------------|*/
_______ ,AG_UNDO, AG_CUT, AG_COPY,AG_PASTE, KC_GRV, KC_PGDN, KC_DEL, AG_T_N, AG_T_R,CMD_SLSH, _______ ,
/*|----------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`---------------|*/
_______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ ),
/*`-----------+---------------+---------+-------^^^------+-------^^^-------+---------+-----------------+--------------'*/
/* Mouse Layer
* ,---------+------+------+------+------+------+------+------+------+------+------+-------------.
* | | |ACCL0 | | | | |WHL_L | Up |WHL_R | BTN2 | |
* |---------`------`------`------`------`------`------`------`------`------`------`-------------|
* | |ACCL2 | BTN2 | | BTN1 |ACCL1 |WHL_Up| Left | Down |Right | BTN4 | BTN5 |
* |----------`------`------`------`------`------`------`------`------`------`------`------------|
* | | | | | BTN3 | |WHL_Dn| BTN1 | | | BTN3 | |
* |-----------`------`------`------`------`-----'-------`------`------`------`------`-----------|
* | | | | | | | | |
* `--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------'
*/
[_MOUSECURSOR] = LAYOUT(
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
_______,_______, KC_ACL0, _______, _______, _______, _______, KC_WH_L, KC_MS_U, KC_WH_R, KC_BTN2, _______ ,
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
_______ ,KC_ACL2, KC_BTN2, _______, KC_BTN1, KC_ACL1, KC_WH_U, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN4, KC_BTN5 ,
/*|---------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`----------------|*/
_______ ,_______, _______, _______, KC_BTN3, _______, KC_WH_D, KC_BTN1, _______, _______, KC_BTN3, _______ ,
/*|----------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`---------------|*/
_______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ ),
/*`-----------+---------------+---------+-------^^^------+-------^^^-------+---------+-----------------+--------------'*/
/* Plover layer (http://opensteno.org)
* ,---------+------+------+------+------+------+------+------+------+------+------+-------------.
* | # | # | # | # | # | # | # | # | # | # | # | # |
* |---------`------`------`------`------`------`------`------`------`------`------`-------------|
* | | S | T | P | H | * | * | F | P | L | T | D |
* |----------`------`------`------`------`------`------`------`------`------`------`------------|
* | TogOut | S | K | W | R | * | * | R | B | G | S | Z |
* |-----------`------`------`------`------`-----'-------`------`------`------`------`-----------|
* | Exit | A | O | | | E | U | |
* `--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------'
*/
[_PLOVER] = LAYOUT(
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
KC_1 , KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 ,
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
XXXXXXX , KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC ,
/*|---------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`----------------|*/
XXXXXXX , KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT ,
/*|----------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`---------------|*/
EXT_PLV , KC_C , KC_V , XXXXXXX , XXXXXXX , KC_N , KC_M , XXXXXXX ),
/*`-----------+---------------+---------+-------^^^------+-------^^^-------+---------+-----------------+--------------'*/
/* Adjust (Lower + Raise)
* ,---------+------+------+------+------+------+------+------+------+------+------+-------------.
* | | | | | | | | | | | | Del |
* |---------`------`------`------`------`------`------`------`------`------`------`-------------|
* | | | | | |AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover| |
* |----------`------`------`------`------`------`------`------`------`------`------`------------|
* | | | | | | | | | | | | |
* |-----------`------`------`------`------`-----'-------`------`------`------`------`-----------|
* | | | | | | | | Reset |
* `--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------'
*/
[_ADJUST] = LAYOUT(
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
_______,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL ,
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
_______ ,_______, _______, _______, _______, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, PLOVER, _______ ,
/*|---------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`----------------|*/
_______ ,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ,
/*|----------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`---------------|*/
_______ , _______ , _______ , _______ , _______ , _______ , _______ , RESET )
/*`-----------+---------------+---------+-------^^^------+-------^^^-------+---------+-----------------+--------------'*/
};
void persistent_default_layer_set(uint16_t default_layer) {
eeconfig_update_default_layer(default_layer);
default_layer_set(default_layer);
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case QWERTY:
if (record->event.pressed) {
default_layer_set(1UL<<_QWERTY);
}
return false;
break;
case COLEMAK:
if (record->event.pressed) {
default_layer_set(1UL<<_COLEMAK);
}
return false;
break;
case DVORAK:
if (record->event.pressed) {
default_layer_set(1UL<<_DVORAK);
}
return false;
break;
case LOWER:
if (record->event.pressed) {
layer_on(_LOWER);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
} else {
layer_off(_LOWER);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
}
return false;
break;
case RAISE:
if (record->event.pressed) {
layer_on(_RAISE);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
} else {
layer_off(_RAISE);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
}
return false;
break;
case BACKLIT:
if (record->event.pressed) {
register_code(KC_RSFT);
#ifdef BACKLIGHT_ENABLE
backlight_step();
#endif
} else {
unregister_code(KC_RSFT);
}
return false;
break;
case PLOVER:
if (record->event.pressed) {
layer_off(_RAISE);
layer_off(_LOWER);
layer_off(_ADJUST);
layer_on(_PLOVER);
if (!eeconfig_is_enabled()) {
eeconfig_init();
}
keymap_config.raw = eeconfig_read_keymap();
keymap_config.nkro = 1;
eeconfig_update_keymap(keymap_config.raw);
}
return false;
break;
case EXT_PLV:
if (record->event.pressed) {
layer_off(_PLOVER);
}
return false;
break;
}
return true;
}
/*
* Macro definition
*/
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{
if (!eeconfig_is_enabled()) {
eeconfig_init();
}
bool use_cmd = true; // Use, for example, Cmd-Tab, Cmd-C, Cmd-V, etc.
// Compare to MAGIC_SWAP_ALT_GUI and MAGIC_UNSWAP_ALT_GUI configs, set in:
// quantum/quantum.c
if(keymap_config.swap_lalt_lgui == 1 && keymap_config.swap_ralt_rgui == 1) {
use_cmd = false; // ... or, Alt-Tab, Ctrl-C, Ctrl-V, etc.
}
switch (id) {
case KC_ALT_TAB:
if(use_cmd) { return (record->event.pressed ? MACRO( D(LALT), D(TAB), END ) : MACRO( U(TAB), END )); }
else { return (record->event.pressed ? MACRO( D(LGUI), D(TAB), END ) : MACRO( U(TAB), END )); }
case KC_CMD_TAB:
if(use_cmd) { return (record->event.pressed ? MACRO( D(LGUI), D(TAB), END ) : MACRO( U(TAB), END )); }
else { return (record->event.pressed ? MACRO( D(LALT), D(TAB), END ) : MACRO( U(TAB), END )); }
case KC_CTL_TAB:
return (record->event.pressed ? MACRO( D(LCTRL), D(TAB), END ) : MACRO( U(TAB), END ));
case KC_CMD_SLSH:
return (record->event.pressed ? MACRO( D(LGUI), D(SLSH),END ) : MACRO( U(SLSH),END ));
case KC_AG_FIND:
return use_cmd ? MACRODOWN( D(LGUI), T(F), END ) : MACRODOWN( D(LCTRL), T(F), END );
case KC_AG_AGAIN:
return use_cmd ? MACRODOWN( D(LGUI), T(G), END ) : MACRODOWN( D(LCTRL), T(G), END );
case KC_AG_UNDO:
return use_cmd ? MACRODOWN( D(LGUI), T(Z), END ) : MACRODOWN( D(LCTRL), T(Z), END );
case KC_AG_CUT:
return use_cmd ? MACRODOWN( D(LGUI), T(X), END ) : MACRODOWN( D(LCTRL), T(X), END );
case KC_AG_COPY:
return use_cmd ? MACRODOWN( D(LGUI), T(C), END ) : MACRODOWN( D(LCTRL), T(C), END );
case KC_AG_PASTE:
return use_cmd ? MACRODOWN( D(LGUI), T(V), END ) : MACRODOWN( D(LCTRL), T(V), END );
case KC_AG_DESK_L:
return use_cmd ? MACRODOWN( D(LGUI), D(LCTRL), T(SCLN), END ) : MACRODOWN( D(LALT), D(LCTRL), T(SCLN), END );
case KC_AG_DESK_R:
return use_cmd ? MACRODOWN( D(LGUI), D(LCTRL), T(QUOT), END ) : MACRODOWN( D(LALT), D(LCTRL), T(QUOT), END );
case KC_AG_TAB_C:
return use_cmd ? MACRODOWN( D(LGUI), T(W), END ) : MACRODOWN( D(LCTRL), T(W), END );
case KC_AG_TAB_N:
return use_cmd ? MACRODOWN( D(LGUI), T(T), END ) : MACRODOWN( D(LCTRL), T(T), END );
case KC_AG_TAB_R:
return use_cmd ? MACRODOWN( D(LGUI), D(LSHIFT), T(T), END ) : MACRODOWN( D(LCTRL), D(LSHIFT), T(T), END );
}
return MACRO_NONE;
}

View File

@@ -0,0 +1,129 @@
jeebak's TV44 layout
=======================
NOTE: This is a port of jeebak's planck layout, for tv44.
This WIP keymap attempts to minimize fingers straying away from the home row.
To aid in this endeavor, when additional modifyer keys to switch layers are
needed, they will be mapped to home row keys. The `keymap.c` file will contain
the exact changes. The diagrams in this README shows the highlights of the
changes from the default mappings.
I also decided to change all calls to `persistent_default_layer_set()` to
`default_layer_set()` since this is my personal perference.
## Macros
```
#define ALT_TAB M(KC_ALT_TAB)
```
## Base Layers (Qwerty/Colemak/Dvorak)
These base layers are mostly the same as the default mappings. The interesting
changes are shown below.
- The `Ctrl/Esc`, will emit an `Escape` when tapped, and act as a `Control` key when held,
- `GUI/;` as `;` and `GUI`,
- `Alt/"` as `"` and `Alt`,
- `Sft/Ent` as `Enter` and `Shift`, and
- `Hyper/Tab` as `Tab` and `Hyper`
A `TODO` item is to see if it can also act as a `CapsLock` when double-tapped.
The arrow keys, which have been moved to the
[TouchCursor](http://martin-stone.github.io/touchcursor/) layer, have been
replaced with the Media keys as shown. The `MC/kc` key activates the
`MouseCursor` layer when held, and emits the corresponding `kc` for its layer,
when tapped.
```
,---------+------+------+------+------+------+------+------+------+------+------+-------------.
|Hyper/Tab| Q | W | E | R | T | Y | U | I | O | P | Bksp |
|---------`------`------`------`------`------`------`------`------`------`------`-------------|
| Ctrl/Esc | A | S | MC/D | F | G | H | J | K | L |GUI/; | Alt/" |
|----------`------`------`------`------`------`------`------`------`------`------`------------|
| Shift | Z | X | C | V | B | N | M | , | . | / | Sft/Ent |
|-----------`------`------`------`------`-----'-------`------`------`------`------`-----------|
| Alt | GUI | Lower | TC/Space | TC/Space | Raise | Vol+ | Play |
`--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------'
```
## Lower Layer (Symbols and Function Keys)
The symbols and functions keys are essentially the same as the default mapping.
The most notable changes are that the symbol keys from the `RAISE` layer have
been moved here. The remaining Media keys replace those that are now on the
base layers. The `BACKLIT` key has also been moved here.
```
,---------+------+------+------+------+------+------+------+------+------+------+-------------.
| ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
|---------`------`------`------`------`------`------`------`------`------`------`-------------|
| [ | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | "|" |
|----------`------`------`------`------`------`------`------`------`------`------`------------|
| ] | F7 | F8 | F9 | F10 | F11 | F12 | - | = | [ | ] | \ |
|-----------`------`------`------`------`-----'-------`------`------`------`------`-----------|
| Brite | | | | | | Vol- | Mute |
`--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------'
```
## Raise Layer (Numbers and Arithmetic Operators)
All of the numbers and arithmetic operators are available on this layer. Some
keys are duplicated for the convenience of their positions. The `0` and `$`
keys at the far left are for quick access to beginning and end of line in vim.
```
,---------+------+------+------+------+------+------+------+------+------+------+-------------.
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
|---------`------`------`------`------`------`------`------`------`------`------`-------------|
| $ | 4 | 5 | 6 | . | + | . | 4 | 5 | 6 | * | "|" |
|----------`------`------`------`------`------`------`------`------`------`------`------------|
| = | 7 | 8 | 9 | 0 | - | . | 1 | 2 | 3 | / | \ |
|-----------`------`------`------`------`-----'-------`------`------`------`------`-----------|
| Brite | | | | | | Vol- | Mute |
`--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------'
```
## TouchCursor layer plus personal customizations
[TouchCursor](http://martin-stone.github.io/touchcursor/) uses the `Space` key
as the modifier, with the `IJKL` home row keys representing the inverted-T of
the arrow keys. All of the default TouchCursor keymappings for the right hand
are represented below. My personalizations include all of the keys shown for
the left hand. Having the `Alt` and `Shift` keys (as well as the `Control` key
from the base layers) readily accessible from the home row allows quick word
jumps and highlighting when used in conjunction with the arrow keys. The
`Alt-Tab` macro is not only useful under Windows, but also under Mac when used
with alternative switchers like [HyperSwitch](https://bahoom.com/hyperswitch).
The `Cmd-Tab` and `Ctrl-Tab` sequences are duplicated for easy access while in
this layer. The `KC_UNDO, KC_CUT, KC_COPY, KC_PASTE, KC_FIND,` and `KC_AGAIN`
keycodes do not seem to work. There are macros in place that'll "automatically"
choose the correct version (`Cmd-Tab` vs. `Alt-Tab`, `Cmd-C` vs. `Ctrl-C`,
etc.) depending on which layout you've currently selected (`AG_NORM` or
`AG_SWAP`) in the `_ADJUST` layer. The `Desk_L` and `Desk_R` macros are what I
use to switch between Virtual Desktops Left/Right. The `Tab_C`, `Tab_N` and
`Tab_R` are for "Close Tab," "New Tab" and "Reopen Closed Tab" for apps such as
Google Chrome.
```
,---------+------+------+------+------+------+------+------+------+------+------+-------------.
| AltTab |CmdTab|CtlTab| GUI |Shift | ~ |Insert| Home | Up | End | Bksp | |
|---------`------`------`------`------`------`------`------`------`------`------`-------------|
| | Alt |Space |Tab_C | Find |Again | PgUp | Left | Down |Right |Desk_L| Desk_R |
|----------`------`------`------`------`------`------`------`------`------`------`------------|
| | Undo | Cut | Copy |Paste | ` | PgDn | Del |Tab_N |Tab_R |iTerm2| |
|-----------`------`------`------`------`-----'-------`------`------`------`------`-----------|
| | | | | | | | |
`--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------'
```
## Mouse Layer
The Mouse layer, closely mimics the layout/behaviour of the TouchCursor layer.
The `D` key (on QWERTY) is used to activate this layer. All 16 keycodes for the
mouse from the `doc/keycode.txt` file are represented, and logically located,
IMHO. The left and right click buttons are duplicated; on the right hand side,
for a quick click here and there, and again on the left hand side for when the
buttons need to be held for dragging things or highlighting text, thus allowing
the right hand to be free to use the up/down/left/right actions.
```
,---------+------+------+------+------+------+------+------+------+------+------+-------------.
| | |ACCL0 | | | | |WHL_L | Up |WHL_R | BTN2 | |
|---------`------`------`------`------`------`------`------`------`------`------`-------------|
| |ACCL2 | BTN2 | | BTN1 |ACCL1 |WHL_Up| Left | Down |Right | BTN4 | BTN5 |
|----------`------`------`------`------`------`------`------`------`------`------`------------|
| | | | | BTN3 | |WHL_Dn| BTN1 | | | BTN3 | |
|-----------`------`------`------`------`-----'-------`------`------`------`------`-----------|
| | | | | | | | |
`--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------'
```

View File

@@ -0,0 +1,21 @@
# 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 controls
AUDIO_ENABLE = no # Audio output on port C6
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
ifndef QUANTUM_DIR
include ../../../../Makefile
endif

View File

@@ -0,0 +1,7 @@
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
#include "../../config.h"
#define PERMISSIVE_HOLD
#endif

View File

@@ -0,0 +1,39 @@
#include QMK_KEYBOARD_H
extern keymap_config_t keymap_config;
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_arrow_command( /* Qwerty */
KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
LT(2, KC_TAB), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, LT(2, KC_ENT),
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, MT(MOD_RSFT, KC_SLSH),
KC_LCTL, KC_LGUI, KC_LALT, MO(3), LT(1, KC_SPC), LT(1, KC_SPC), MO(4), KC_LEFT, KC_DOWN, KC_RIGHT
),
[1] = LAYOUT_arrow_command( /* LAYER 2 */
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
KC_TRNS, KC_MINS, KC_EQL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_QUOT, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_PGUP, KC_BSLS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END
),
[2] = LAYOUT_arrow_command( /* LAYER 1 */
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
KC_TRNS, KC_UNDS, KC_PLUS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UNDS, KC_PLUS, KC_DQUO, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LCBR, KC_RCBR, KC_PGUP, KC_PIPE,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END
),
[3] = LAYOUT_arrow_command( /* LAYER 3 */
KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F11, KC_F12, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[4] = LAYOUT_arrow_command( /* Gaming Layer*/
KC_ESC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_WH_U, KC_BTN1, KC_MS_U, KC_BTN2, KC_TRNS, KC_TRNS,
KC_TAB, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_WH_D, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SPACE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
};
const uint16_t PROGMEM fn_actions[] = {
};

View File

@@ -0,0 +1,49 @@
# Jetpacktuxedo's minivan layout
This differs quite a bit from the stock layout but leaves keys in a more familiar position in my opinion. It is designed to use the arrow+command layout, but I used a fairly similar layout for the normal arrow layout. Additionally, I use an mx lock switch on the key between the right space key and the arrow cluster. If you don't want to use a lock switch you should change MO(4) on the base layer to use TG(4) instead for a similar effect.
## Base Layer (0)
The base layer is pretty simple, straight qwerty layout where available. Of note: /? is to the right of the arrow keys. Yes this is kinda weird sometimes, but you get used to it. Tab is tab when pressed and fn2 when held, Enter is the same. GESC is esc when used alone, but ~ when shifted. Tapping FN 1 is space
```
|GESC| Q | W | E | R | T | Y | U | I | O | P | BSPC |
| TAB | A | S | D | F | G | H | J | K | L | ; |ENTER|
|SHIFT | Z | X | C | V | B | N | M | , | . | UP | / |
|CTRL|WIN |ALT |FN 3| FN 1 | SPACE | FN 4 |LEFT|DOWN|RIGH|
```
## Numeric Layer (1)
This layer has the numrow as well as swapping the arrow keys for a nav cluster, and swapping ;: for '" and /? for \|. With that almost all of the missing keys are accounted for.
```
| ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | DEL |
| | | | | | | | | - | = | ' | |
| | | | | | | | | [ | ] |PGUP| \ |
| | | | | | | |HOME|PGDN|END |
```
## Symbolic Layer (2)
I don't want to be using two key combos constantly, so I also added this symbol layer that is basically shift+numeric layer
```
| ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | DEL |
| | | | | | | | | _ | + | " | |
| | | | | | | | | { | } |PGUP| | |
| | | | | | | |HOME|PGDN|END |
```
## Fkeys (3)
I very rarely use Fkeys, but figured I'd throw them on anyway just in case. The setup basically mimics the way Fkeys are usually done on a 60%, with F11 and F12 still on - and =, even though the location of those keys has moved.
```
| | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 |F10 | |
| | | | | | | | |F11 |F12 | | |
| | | | | | | | | | | | |
| | | | | | | | | | |
```
## Gaming Layer (4)
Originally this was just going to be a gaming layer (make esc just esc, make tab just tab, move space to the left side), but I ended up in a hotel without a usb mouse, so I added mousekeys to it as well.
```
|ESC | | | | | |MWUP|MRCK|M_UP|MLCK| | |
| TAB | | | | | |MWDN|M_LF|M_DN|M_RG| | |
| | | | | | | | | | | | |
| | | | | SPACE | | | | | |
```

View File

@@ -0,0 +1,17 @@
# 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 = no # 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 controls
AUDIO_ENABLE = no # Audio output on port C6
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend

View File

@@ -0,0 +1,14 @@
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
#include "../../config.h"
// place overrides here
#ifdef BACKLIGHT_ENABLE
#define BACKLIGHT_PIN B2
#define BACKLIGHT_LEVELS 7
#endif
#define USB_MAX_POWER_CONSUMPTION 50
#endif

View File

@@ -0,0 +1,197 @@
//Author: mike terhar
#include QMK_KEYBOARD_H
#ifdef BACKLIGHT_ENABLE
#include "backlight.h"
#endif
enum minivan_layers {
_QWERTY,
_NUMSYM,
_FKEYS,
_FKEYGRV,
_PLOVER,
_ADJUST
};
enum planck_keycodes {
QWERTY = SAFE_RANGE,
DYNKEY,
DYNAMIC_MACRO_RANGE,
};
// Fillers to make layering more clear
#define _______ KC_TRNS
#define FKEYS F(_FKEYS)
#define NUMSYM F(_NUMSYM)
#define FKEYGRV F(_FKEYGRV)
#define MACSLEEP M(5)
#define PLOVER M(6)
#define LAYERRESET M(7)
#define BACKLIT M(8)
#define ADJUST M(9)
#define XXXXXXX KC_NO
#include "dynamic_macro.h"
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QWERTY] = {
{FKEYS, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC},
{KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT},
{KC_LSFT,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT,KC_SLSH,SFT_T(KC_ENT) },
{KC_LCTL,KC_LALT,KC_LGUI, KC_SPC,XXXXXXX,XXXXXXX,XXXXXXX,NUMSYM,KC_LEFT,KC_DOWN,KC_UP ,KC_RIGHT}
},
[_NUMSYM] = {
{FKEYGRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______},
{KC_DEL,KC_EXLM, KC_AT, KC_HASH,KC_DLR, KC_PERC,KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN, ADJUST },
{ _______, KC_UNDS,KC_PLUS, KC_LCBR,KC_RCBR,KC_PIPE , KC_MINS,KC_EQL,KC_LBRC, KC_RBRC, KC_BSLS, _______},
{_______,_______,_______,_______,XXXXXXX,XXXXXXX,XXXXXXX,_______, KC_HOME, KC_PGDN, KC_PGUP, KC_END}
},
[_FKEYS] ={
{_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______},
{KC_DEL, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, _______, _______, _______, MACSLEEP, DYN_REC_START1, DYN_REC_START2 },
{KC_CAPS, _______, _______, _______, _______, _______, _______, _______, DYN_MACRO_PLAY1, DYN_MACRO_PLAY2,_______,DYN_REC_STOP},
{_______,_______,_______,LAYERRESET,XXXXXXX,XXXXXXX,XXXXXXX,LAYERRESET, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
},
[_PLOVER] = {
{KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 },
{XXXXXXX, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC},
{XXXXXXX, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT},
{LAYERRESET, XXXXXXX, KC_C, KC_V, XXXXXXX , XXXXXXX, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX}
},
[_ADJUST] = {
{_______ , RESET, _______, _______, _______, _______, _______, _______, KC_SLCK, KC_PAUS, KC_PSCR, KC_DEL },
{_______ , _______, _______, _______, _______, AG_NORM, AG_SWAP, QWERTY, _______, MACSLEEP, PLOVER, _______},
{_______ , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______},
{BACKLIT, _______, _______, LAYERRESET, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, _______, _______}
}
};
#ifdef AUDIO_ENABLE
float tone_startup[][2] = SONG(STARTUP_SOUND);
float tone_qwerty[][2] = SONG(QWERTY_SOUND);
float tone_dyn_macro_rec[][2] = SONG(DVORAK_SOUND);
float tone_dyn_macro_play[][2] = SONG(COLEMAK_SOUND);
float tone_plover[][2] = SONG(PLOVER_SOUND);
float tone_adjust[][2] = SONG(PLOVER_GOODBYE_SOUND);
float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
#endif
void persistant_default_layer_set(uint16_t default_layer) {
eeconfig_update_default_layer(default_layer);
default_layer_set(default_layer);
}
const uint16_t PROGMEM fn_actions[] = {
[_FKEYS] = ACTION_LAYER_TAP_KEY(_FKEYS, KC_TAB),
[_FKEYGRV] = ACTION_LAYER_TAP_KEY(_FKEYS, KC_GRV),
[_NUMSYM] = ACTION_LAYER_TAP_TOGGLE(_NUMSYM),
};
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{
switch(id) {
case 5: // MACSLEEP
if (record->event.pressed) {
register_code(KC_RSFT);
register_code(KC_RCTL);
register_code(KC_POWER);
unregister_code(KC_POWER);
unregister_code(KC_RCTL);
unregister_code(KC_RSFT);
}
break;
case 6: // PLOVER
if (record->event.pressed) {
#ifdef AUDIO_ENABLE
stop_all_notes();
PLAY_NOTE_ARRAY(tone_plover, false, 0);
#endif
layer_off(_NUMSYM);
layer_off(_FKEYS);
layer_off(_ADJUST);
layer_on(_PLOVER);
}
break;
case 7: // LAYERRESET
if (record->event.pressed) {
#ifdef AUDIO_ENABLE
PLAY_NOTE_ARRAY(tone_qwerty, false, 0);
#endif
layer_off(_NUMSYM);
layer_off(_FKEYS);
layer_off(_PLOVER);
layer_off(_ADJUST);
}
break;
case 8: // BACKLIT
if (record->event.pressed) {
register_code(KC_RSFT);
#ifdef BACKLIGHT_ENABLE
backlight_step();
#endif
} else {
unregister_code(KC_RSFT);
}
break;
case 9: // ADJUST
if(record->event.pressed) {
#ifdef AUDIO_ENABLE
stop_all_notes();
PLAY_NOTE_ARRAY(tone_adjust, false, 0);
#endif
layer_off(_NUMSYM);
layer_off(_FKEYS);
layer_off(_PLOVER);
layer_on(_ADJUST);
}
}
return MACRO_NONE;
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
uint16_t macro_kc = keycode;
if (keycode == FKEYS || keycode == ADJUST || keycode == FKEYGRV ){
macro_kc = DYN_REC_STOP;
}
if (!process_record_dynamic_macro(macro_kc, record)) {
return false;
}
return true;
}
void matrix_init_user(void) {
#ifdef AUDIO_ENABLE
startup_user();
#endif
}
#ifdef AUDIO_ENABLE
void startup_user()
{
_delay_ms(20); // gets rid of tick
PLAY_NOTE_ARRAY(tone_startup, false, 0);
}
void shutdown_user()
{
PLAY_NOTE_ARRAY(tone_goodbye, false, 0);
_delay_ms(150);
stop_all_notes();
}
void music_on_user(void)
{
music_scale_user();
}
void music_scale_user(void)
{
PLAY_NOTE_ARRAY(music_scale, false, 0);
}
#endif

View File

@@ -0,0 +1,26 @@
# Mike's Minivan
- Arrow Layout (45key)
- Dynamic Macros
- Media Keys
- Works with iPhone Camera Adapter
## Layers
Qwerty for letters and mods.
Numsym for all numbers and symbols used in typing. Follows a similar approach to
planck but puts both on the same layer eschewing the F-keys.
Fkeys layer is for the seldom used stuff like F-keys and some additional features
such as dynamic macros, media keys, and a sleep shortcut for OS X.
Adjust layer is tough to get to so it is only for keyboard configuration stuff.
## Dynamic Macros
Hold TAB key, then press ";" to record macro 1 and "'" to record macro 2.
When you are done recording, press TAB again.
For playback of macros, TAB+"," plays macro 1 and TAB+","plays macro 2.

View File

@@ -0,0 +1,21 @@
# 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 = yes # Console for debug(+400)
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = no # Audio output on port C6
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
ifndef QUANTUM_DIR
include ../../../../Makefile
endif

View File

@@ -0,0 +1,230 @@
#include QMK_KEYBOARD_H
extern keymap_config_t keymap_config;
// Each layer gets a name for readability, which is then used in the keymap matrix below.
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
// Layer names don't all need to be of the same length, obviously, and you can also skip them
// entirely and just use numbers.
#define _QWERTY 0
#define _COLEMAK 1
#define _DVORAK 2
#define _LOWER 3
#define _RAISE 4
#define _ADJUST 16
// Keycodes
enum planck_keycodes {
QWERTY = SAFE_RANGE,
COLEMAK,
DVORAK,
LOWER,
RAISE,
BACKLIT
};
// Fillers to make layering more clear
#define _______ KC_TRNS
#define XXXXXXX KC_NO
// Custom macros
#define CTL_ESC CTL_T(KC_ESC) // Tap for Esc, hold for Ctrl
#define SFT_ENT SFT_T(KC_ENT) // Tap for Enter, hold for Shift
#define HPR_TAB ALL_T(KC_TAB) // Tap for Tab, hold for Hyper (Super+Ctrl+Alt+Shift)
#define ALT_GRV ALT_T(KC_GRV) // Tap for Backtick, hold for Alt (Ctrl+Alt+Shift)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Qwerty
*
* ,---------+------+------+------+------+------+------+------+------+------+------+---------.
* |Hyper/Tab| Q | W | E | R | T | Y | U | I | O | P | Bksp |
* |---------`------`------`------`------`------`------`------`------`------`------`---------|
* | Ctrl/Esc | A | S | D | F | G | H | J | K | L | ; | ' |
* |----------`------`------`------`------`------`------`------`------`------`------`--------|
* | Shift | Z | X | C | V | B | N | M | , | . | / |Sft/Ent|
* |-----------`------`------`------`------`-----'-------`------`------`------`------`-------|
* | Alt/` | GUI | Lower | Space | Space | Raise | GUI | Alt | Ctrl |
* `-------+---------+--------+-----^^^------+-----^^^------+---------+------+------+-------'
*/
[_QWERTY] = LAYOUT_arrow(
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
HPR_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC ,
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
CTL_ESC , KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT ,
/*|---------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`----------------|*/
KC_LSFT , KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_ENT ,
/*|----------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`---------------|*/
ALT_GRV , KC_LGUI , LOWER , KC_SPC , KC_SPC , RAISE , KC_RGUI, KC_RALT, KC_RCTL ),
/*`---------+---------------+---------+-------^^^------+-------^^^-------+----------+--------+--------+--------------'*/
/* Colemak
* ,---------+------+------+------+------+------+------+------+------+------+------+---------.
* |Hyper/Tab| Q | W | F | P | G | J | L | U | Y | ; | Bksp |
* |---------`------`------`------`------`------`------`------`------`------`------`---------|
* | Ctrl/Esc | A | R | S | T | D | H | N | E | I | O | ' |
* |----------`------`------`------`------`------`------`------`------`------`------`--------|
* | Shift | Z | X | C | V | B | K | M | , | . | / |Sft/Ent|
* |-----------`------`------`------`------`-----'-------`------`------`------`------`-------|
* | Alt/` | GUI | Lower | Space | Space | Raise | GUI | Alt | Ctrl |
* `-------+---------+--------+-----^^^------+-----^^^------+---------+------+------+-------'
*/
[_COLEMAK] = LAYOUT_arrow(
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
HPR_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC ,
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
CTL_ESC , KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT ,
/*|---------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`----------------|*/
KC_LSFT , KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_ENT ,
/*|----------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`---------------|*/
ALT_GRV , KC_LGUI , LOWER , KC_SPC , KC_SPC , RAISE , KC_RGUI, KC_RALT, KC_RCTL ),
/*`---------+---------------+---------+-------^^^------+-------^^^-------+----------+--------+--------+--------------'*/
/* Dvorak
* ,---------+------+------+------+------+------+------+------+------+------+------+---------.
* |Hyper/Tab| ' | , | . | P | Y | F | G | C | R | L | Bksp |
* |---------`------`------`------`------`------`------`------`------`------`------`---------|
* | Ctrl/Esc | A | O | E | U | I | D | H | T | N | S | - |
* |----------`------`------`------`------`------`------`------`------`------`------`--------|
* | Shift | ; | Q | J | K | X | B | M | W | V | Z |Sft/Ent|
* |-----------`------`------`------`------`-----'-------`------`------`------`------`-------|
* | Alt/` | GUI | Lower | Space | Space | Raise | GUI | Alt | Ctrl |
* `-------+---------+--------+-----^^^------+-----^^^------+---------+------+------+-------'
*/
[_DVORAK] = LAYOUT_arrow(
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
HPR_TAB,KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC ,
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
CTL_ESC , KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS ,
/*|---------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`----------------|*/
KC_LSFT , KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, SFT_ENT ,
/*|----------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`---------------|*/
ALT_GRV , KC_LGUI , LOWER , KC_SPC , KC_SPC , RAISE , KC_RGUI, KC_RALT, KC_RCTL ),
/*`---------+---------------+---------+-------^^^------+-------^^^-------+----------+--------+--------+--------------'*/
/* Lower
* ,---------+------+------+------+------+------+------+------+------+------+------+---------.
* | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del |
* |---------`------`------`------`------`------`------`------`------`------`------`---------|
* | $ | 4 | 5 | 6 | . | + | * | 4 | 5 | 6 | . | PageUp |
* |----------`------`------`------`------`------`------`------`------`------`------`--------|
* | = | 7 | 8 | 9 | 0 | - | / | 1 | 2 | 3 | Up |PageDn |
* |-----------`------`------`------`------`-----'-------`------`------`------`------`-------|
* | Brite | | | Home | End | | Left | Down | Right |
* `-------+---------+--------+-----^^^------+-----^^^------+---------+------+------+-------'
*/
[_LOWER] = LAYOUT_arrow(
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
ALL_T(KC_0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL ,
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
CTL_T(KC_DLR), KC_4, KC_5, KC_6, KC_DOT, KC_PLUS, KC_ASTR, KC_4, KC_5, KC_6, KC_DOT, KC_PGUP ,
/*|---------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`----------------|*/
SFT_T(KC_EQL), KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_SLSH, KC_1, KC_2, KC_3, KC_UP, SFT_T(KC_PGDN),
/*|----------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`---------------|*/
ALT_T(BACKLIT), _______ , _______ , KC_HOME , KC_END , _______ , KC_LEFT, KC_DOWN, KC_RGHT ),
/*`---------+---------------+---------+-------^^^------+-------^^^-------+----------+--------+--------+--------------'*/
/* Raise
* ,---------+------+------+------+------+------+------+------+------+------+------+---------.
* | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del |
* |---------`------`------`------`------`------`------`------`------`------`------`---------|
* | F1 | F2 | F3 | F4 | F5 | F6 | _ | ? | + | { | } | |
* |----------`------`------`------`------`------`------`------`------`------`------`--------|
* | F7 | F8 | F9 | F10 | F11 | F12 | - | / | = | [ | ] | |
* |-----------`------`------`------`------`-----'-------`------`------`------`------`-------|
* | Brite | | | Play | Next | | Mute | Vol- | Vol+ |
* `-------+---------+--------+-----^^^------+-----^^^------+---------+------+------+-------'
*/
[_RAISE] = LAYOUT_arrow(
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
ALL_T(KC_TILD),KC_EXLM,KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL ,
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
CTL_T(KC_F1), KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_QUES, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE ,
/*|---------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`----------------|*/
SFT_T(KC_F7), KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_MINS, KC_SLSH, KC_EQL, KC_LBRC, KC_RBRC, SFT_T(KC_BSLS),
/*|----------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`---------------|*/
ALT_T(BACKLIT), _______ , _______ , KC_MPLY , KC_MNXT , _______ , KC_MUTE, KC_VOLD, KC_VOLU ),
/*`---------+---------------+---------+-------^^^------+-------^^^-------+----------+--------+--------+--------------'*/
/* Adjust (Lower + Raise)
* ,---------+------+------+------+------+------+------+------+------+------+------+---------.
* | | Reset| | | | | | | | | | Reset |
* |---------`------`------`------`------`------`------`------`------`------`------`---------|
* | | | | | |AGnorm|AGswap|Qwerty|Colemk|Dvorak| | |
* |----------`------`------`------`------`------`------`------`------`------`------`--------|
* | | | | | | | | | | | | |
* |-----------`------`------`------`------`-----'-------`------`------`------`------`-------|
* | | | | | | | | | |
* `-------+---------+--------+-----^^^------+-----^^^------+---------+------+------+-------'
*/
[_ADJUST] = LAYOUT_arrow(
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
_______, RESET , _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET ,
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
_______ ,_______, _______, _______, _______, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______ ,
/*|---------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`----------------|*/
_______ ,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ,
/*|----------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`---------------|*/
_______ , _______ , _______ , _______ , _______ , _______ , _______, _______, _______ ),
/*`---------+---------------+---------+-------^^^------+-------^^^-------+----------+--------+--------+--------------'*/
};
void persistent_default_layer_set(uint16_t default_layer) {
eeconfig_update_default_layer(default_layer);
default_layer_set(default_layer);
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case QWERTY:
if (record->event.pressed) {
persistent_default_layer_set(1UL<<_QWERTY);
}
return false;
break;
case COLEMAK:
if (record->event.pressed) {
persistent_default_layer_set(1UL<<_COLEMAK);
}
return false;
break;
case DVORAK:
if (record->event.pressed) {
persistent_default_layer_set(1UL<<_DVORAK);
}
return false;
break;
case LOWER:
if (record->event.pressed) {
layer_on(_LOWER);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
} else {
layer_off(_LOWER);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
}
return false;
break;
case RAISE:
if (record->event.pressed) {
layer_on(_RAISE);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
} else {
layer_off(_RAISE);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
}
return false;
break;
case BACKLIT:
if (record->event.pressed) {
register_code(KC_RSFT);
#ifdef BACKLIGHT_ENABLE
backlight_step();
#endif
} else {
unregister_code(KC_RSFT);
}
return false;
break;
}
return true;
}

View File

@@ -0,0 +1,126 @@
# smt's TV44 keymap
This keymap is based on a combination of my Planck keymap and [jeebak's TV44 layout](https://github.com/qmk/qmk_firmware/tree/master/keyboards/tv44/keymaps/jeebak). I removed the macros and TouchCursor/MouseCursor layers, because I'm just not ready for that level of mind-mapping.
I had been using something close to the default Minivan layout, but after spending a bit of time with the Planck and Preonic, I decided it would be better for me to try to standardize to some degree, where possible.
Also, it's worth noting that my Minivan is one with the "arrows" layout, which has a 45th key. In spite of this, the 45-key Minivan is still technically considered a "TV44" as far as I know.
![smt's TV44 keymap](https://i.imgur.com/Y4n6eHj.png)
## Notable features (most of which can be found in my or jeebak's respective keymap file):
1. **Shift/Enter**
I use both the left and right shift keys when I type. When I want to modify a key with shift, I hold shift with the hand opposite the one typing the key. In the default keymap, Enter is where shift would be on a standard keyboard layout. Oh, muscle memory.
Thankfully, QMK supports [mod-tap](https://github.com/jackhumbert/qmk_firmware/wiki#fun-with-modifier-keys) keys, and this allows me to set the Enter key to send a modifier (MOD_LSFT) when held, and KC_ENT when tapped. Awesome!
2. **Hyper/Tab**
This key modifies with "Hyper" (see [Brett Terpstra's post](http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/) on this) when held, and outputs the code for Tab when tapped. On the Mac, I use KeyboardMaestro to remap my hyper-keys to do a lot of crazy things.
3. **Ctrl/Escape**
I set up another mod-tap, this time for the Escape key that would act as a Control modifier when held.
4. **Alt/Backtick**
I don't currently have LEDs on most of my keyboards, and I certainly don't want LED controls on the base layer of a 40%.
So, why use backtick in the lower left corner? I use it as my tmux prefix key, so I need to type it more frequently than most people. Putting it on the base layer works well for my use case, and it's consistent with where I place it in my Planck and Preonic keymaps.
I also like Alt in that position, so it works well as yet another mod-tap key.
## Layers
### Qwerty
```
,---------+------+------+------+------+------+------+------+------+------+------+---------.
|Hyper/Tab| Q | W | E | R | T | Y | U | I | O | P | Bksp |
|---------`------`------`------`------`------`------`------`------`------`------`---------|
| Ctrl/Esc | A | S | D | F | G | H | J | K | L | ; | ' |
|----------`------`------`------`------`------`------`------`------`------`------`--------|
| Shift | Z | X | C | V | B | N | M | , | . | / |Sft/Ent|
|-----------`------`------`------`------`-----'-------`------`------`------`------`-------|
| Alt/` | GUI | Lower | Space | Space | Raise | GUI | Alt | Ctrl |
`-------+---------+--------+-----^^^------+-----^^^------+---------+------+------+-------'
```
### Colemak
```
,---------+------+------+------+------+------+------+------+------+------+------+---------.
|Hyper/Tab| Q | W | F | P | G | J | L | U | Y | ; | Bksp |
|---------`------`------`------`------`------`------`------`------`------`------`---------|
| Ctrl/Esc | A | R | S | T | D | H | N | E | I | O | ' |
|----------`------`------`------`------`------`------`------`------`------`------`--------|
| Shift | Z | X | C | V | B | K | M | , | . | / |Sft/Ent|
|-----------`------`------`------`------`-----'-------`------`------`------`------`-------|
| Alt/` | GUI | Lower | Space | Space | Raise | GUI | Alt | Ctrl |
`-------+---------+--------+-----^^^------+-----^^^------+---------+------+------+-------'
```
### Dvorak
```
,---------+------+------+------+------+------+------+------+------+------+------+---------.
|Hyper/Tab| ' | , | . | P | Y | F | G | C | R | L | Bksp |
|---------`------`------`------`------`------`------`------`------`------`------`---------|
| Ctrl/Esc | A | O | E | U | I | D | H | T | N | S | - |
|----------`------`------`------`------`------`------`------`------`------`------`--------|
| Shift | ; | Q | J | K | X | B | M | W | V | Z |Sft/Ent|
|-----------`------`------`------`------`-----'-------`------`------`------`------`-------|
| Alt/` | GUI | Lower | Space | Space | Raise | GUI | Alt | Ctrl |
`-------+---------+--------+-----^^^------+-----^^^------+---------+------+------+-------'
```
### Lower
This is where I put the number row, two numpad clusters, common arithmetic operators, and cursorkeys: Arrow cluster, Home/End, Page Up/Page Down. `0` and `$` are also placed on the left side for convenient access to beginning-of-line and end-of-line Vim commands. BRITE has been moved here from the base layer.
```
,---------+------+------+------+------+------+------+------+------+------+------+---------.
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del |
|---------`------`------`------`------`------`------`------`------`------`------`---------|
| $ | 4 | 5 | 6 | . | + | * | 4 | 5 | 6 | . | PageUp |
|----------`------`------`------`------`------`------`------`------`------`------`--------|
| = | 7 | 8 | 9 | 0 | - | / | 1 | 2 | 3 | Up |PageDn |
|-----------`------`------`------`------`-----'-------`------`------`------`------`-------|
| Brite | | | Home | End | | Left | Down | Right |
`-------+---------+--------+-----^^^------+-----^^^------+---------+------+------+-------'
```
### Raise
As a developer, it makes the most sense for me to group all the commonly-used symbols that don't fit on the main layer. In particular, having the dual-column of parens-braces-brackets helps me keep them straight. I've dropped basic media controls onto this layer as well.
```
,---------+------+------+------+------+------+------+------+------+------+------+---------.
| ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del |
|---------`------`------`------`------`------`------`------`------`------`------`---------|
| F1 | F2 | F3 | F4 | F5 | F6 | _ | ? | + | { | } | | |
|----------`------`------`------`------`------`------`------`------`------`------`--------|
| F7 | F8 | F9 | F10 | F11 | F12 | - | / | = | [ | ] | \ |
|-----------`------`------`------`------`-----'-------`------`------`------`------`-------|
| Brite | | | Play | Next | | Mute | Vol- | Vol+ |
`-------+---------+--------+-----^^^------+-----^^^------+---------+------+------+-------'
```
### Adjust (Lower + Raise)
Utility layer. There isn't much here; it's mainly for swapping the default keymap between Qwerty and Dvorak, or putting the keyboard into flash mode via the Reset key.
```
,---------+------+------+------+------+------+------+------+------+------+------+---------.
| | Reset| | | | | | | | | | Del |
|---------`------`------`------`------`------`------`------`------`------`------`---------|
| | | | | |AGnorm|AGswap|Qwerty|Colemk|Dvorak| | |
|----------`------`------`------`------`------`------`------`------`------`------`--------|
| | | | | | | | | | | | |
|-----------`------`------`------`------`-----'-------`------`------`------`------`-------|
| | | | | | | | | |
`-------+---------+--------+-----^^^------+-----^^^------+---------+------+------+-------'
```

View File

@@ -0,0 +1,21 @@
# 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 controls
AUDIO_ENABLE = no # Audio output on port C6
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
ifndef QUANTUM_DIR
include ../../../../Makefile
endif

View File

@@ -0,0 +1,12 @@
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
#include "../../config.h"
// place overrides here
#ifdef BACKLIGHT_ENABLE
#define BACKLIGHT_PIN B2
#define BACKLIGHT_LEVELS 7
#endif
#endif

View File

@@ -0,0 +1,203 @@
//Author: tong92 <tong92power@gmail.com>
#include QMK_KEYBOARD_H
#ifdef BACKLIGHT_ENABLE
#include "backlight.h"
#endif
extern keymap_config_t keymap_config;
enum tv44_layers {
_WINDOW,
_MAC,
_LOWER,
_RAISE,
_WINDOW_SHORTCUT,
_MAC_SHORTCUT,
_MOUSE
};
enum tv44_keycodes {
WINDOW = SAFE_RANGE,
MAC,
MOUSE,
BACKLIT,
EXT_MOUSE
};
// Fillers to make layering more clear
#define _______ KC_TRNS
#define LOWER F(_LOWER)
#define RAISE F(_RAISE)
#define XXXXXXX KC_NO
#define WINDOW_SHORTCUT MO(_WINDOW_SHORTCUT)
#define MAC_SHORTCUT MO(_MAC_SHORTCUT)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Window - Qwerty
* ,--------------------------------------------------------------------------.
* | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
* |------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-------|
* | Ctrl | A | S | D | F | G | H | J | K | L | ; | Enter|
* |-------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`------|
* | Shift | Z | X | C | V | B | N | M | , | . | / |Shift|
* |--------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----|
* | Ft | GUI | Alt | Space/LOWER | Space/RAISE | ' | [ | ] | Alt |
* `--------------------------------------------------------------------------'
*/
[_WINDOW] = LAYOUT_arrow(
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
KC_LCTL,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_ENT,
KC_LSFT,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH,KC_RSFT,
WINDOW_SHORTCUT, KC_LGUI,KC_LALT, LOWER, RAISE, KC_QUOT,KC_LBRC,KC_RBRC,KC_RALT
),
/* Mac - Qwerty
* ,--------------------------------------------------------------------------.
* | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
* |------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-------|
* | Cmd | A | S | D | F | G | H | J | K | L | ; | Enter|
* |-------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`------|
* | Shift | Z | X | C | V | B | N | M | , | . | / |Shift|
* |--------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----|
* | Ft | Alt | Ctrl | Space/LOWER | Space/RAISE | ' | [ | ] | Alt |
* `--------------------------------------------------------------------------'
*/
[_MAC] = LAYOUT_arrow(
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
KC_LGUI,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_ENT,
KC_LSFT,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH,KC_RSFT,
MAC_SHORTCUT, KC_LALT, KC_LCTRL, LOWER, RAISE, KC_QUOT,KC_LBRC,KC_RBRC,KC_RALT
),
/* LOWER
* ,--------------------------------------------------------------------------.
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | |
* |------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-------|
* | | F1 | F2 | F3 | F4 | F5 | F6 | - | + | [ | ] | \ |
* |-------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`------|
* | | F7 | F8 | F9 | F10 | F11 | F12 | | HOME| PgUp| UP | PgDo|
* |--------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----|
* | | | | | | END | LEFT| Down|RIGHT|
* `--------------------------------------------------------------------------'
*/
[_LOWER] = LAYOUT_arrow(
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
_______,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS,KC_PLUS,KC_LBRC,KC_RBRC,KC_BSLS,
_______,KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX,KC_HOME,KC_PGUP,KC_UP ,KC_PGDN,
XXXXXXX,_______,_______, _______,XXXXXXX, KC_END, KC_LEFT,KC_DOWN,KC_RIGHT
),
/* RAISE
* ,--------------------------------------------------------------------------.
* | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | |
* |------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-------|
* | | F1 | F2 | F3 | F4 | F5 | F6 | _ | = | { | } | | |
* |-------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`------|
* | | F7 | F8 | F9 | F10 | F11 | F12 | | HOME| PgUp| UP | PgDo|
* |--------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----|
* | | | | | | END | LEFT| Down|RIGHT|
* `--------------------------------------------------------------------------'
*/
[_RAISE] = LAYOUT_arrow(
KC_TILD,KC_EXLM,KC_AT, KC_HASH,KC_DLR, KC_PERC,KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,_______,
_______,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS,KC_EQL, KC_LCBR,KC_RCBR,KC_PIPE,
_______,KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,KC_HOME,KC_PGUP,KC_UP ,KC_PGDN,
XXXXXXX,_______,_______, _______,_______, KC_END, KC_LEFT,KC_DOWN,KC_RIGHT
),
/* Window Shortcut
* ,--------------------------------------------------------------------------.
* | ESC |WinOf|WinUp| | |Sh+Ca| | PgUp| UP | PgDo|PrtSc| DELET |
* |------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-------|
* | |WinLe|WinDo|WinRi| |Al+Ca|CapsL| LEFT| DOWN|RIGHT| | |
* |-------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`------|
* | |WinLW|WinRW| | |Ct+Ca|ScroL| HOME| | END | | Ctrl|
* |--------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----|
* | | DeskL | DeskR| Task Manager| DeskX | MOUSE| | | LED |
* `--------------------------------------------------------------------------'
*/
[_WINDOW_SHORTCUT] = LAYOUT_arrow(
KC_ESC ,LALT(KC_F4) ,LGUI(KC_UP) ,XXXXXXX ,XXXXXXX,S(KC_CAPS) ,XXXXXXX ,KC_PGUP,KC_UP ,KC_PGDN ,KC_PSCR,KC_DELT,
_______,LGUI(KC_LEFT) ,LGUI(KC_DOWN) ,LGUI(KC_RIGHT),XXXXXXX,LALT(KC_CAPS) ,KC_CAPS ,KC_LEFT,KC_DOWN,KC_RIGHT,XXXXXXX,XXXXXXX,
_______,LGUI(LSFT(KC_LEFT)),LGUI(LSFT(KC_RIGHT)),XXXXXXX ,XXXXXXX,LCTL(KC_CAPS) ,KC_SLCK ,KC_HOME,XXXXXXX,KC_END ,XXXXXXX,KC_RCTL,
_______,LGUI(LCTL(KC_LEFT)),LGUI(LCTL(KC_RIGHT)), LCTL(LALT(KC_DELT)),LGUI(LCTL(KC_F4)), MOUSE ,XXXXXXX ,XXXXXXX,BACKLIT
),
/* Mac Shortcut
* ,--------------------------------------------------------------------------.
* | ESC |CmdUp|CmdDo| | | | | PgUp| UP | PgDo|PrtSc| DELET |
* |------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-------|
* | |WBlkL|WBlkR| |ScrFu| |CapsL| LEFT| DOWN|RIGHT| | |
* |-------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`------|
* | |BlckL|BlckR| | | | | HOME| | END | | Ctrl|
* |--------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----|
* | | | | | | MOUSE| | | LED |
* `--------------------------------------------------------------------------'
*/
[_MAC_SHORTCUT] = LAYOUT_arrow(
KC_ESC ,LGUI(KC_UP) ,LGUI(KC_DOWN) ,XXXXXXX ,XXXXXXX,XXXXXXX ,XXXXXXX ,KC_PGUP,KC_UP ,KC_PGDN ,KC_PSCR,KC_DELT,
_______,LALT(LSFT(KC_LEFT)) ,LALT(LSFT(KC_RIGHT)) ,XXXXXXX,LGUI(LCTL(KC_F)),XXXXXXX ,KC_CAPS ,KC_LEFT,KC_DOWN,KC_RIGHT,XXXXXXX,XXXXXXX,
_______,LGUI(LSFT(KC_LEFT)),LGUI(LSFT(KC_RIGHT)),XXXXXXX ,XXXXXXX,XXXXXXX ,XXXXXXX ,KC_HOME,XXXXXXX,KC_END ,XXXXXXX,KC_RCTL,
_______,_______,_______, _______,_______, MOUSE ,XXXXXXX ,XXXXXXX,BACKLIT
),
/* MOUSE
* ,--------------------------------------------------------------------------.
* | | | |Mo_Up| | | |M_WhL|M_WhU|M_WhR| | RESET |
* |------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-------|
* | | |Mo_Le|Mo_Do|Mo_Ri| | |M_Bt1|M_WhD|M_Bt2| | |
* |-------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`------|
* | | | | | | | |M_AC0|M_AC1|M_AC2| |WINDO|
* |--------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----|
* | | | | GO_DEFAULT | GO_DEFAULT | | | | MAC |
* `--------------------------------------------------------------------------'
*/
[_MOUSE] = LAYOUT_arrow(
XXXXXXX,XXXXXXX,XXXXXXX,KC_MS_U,XXXXXXX,XXXXXXX,XXXXXXX,KC_WH_L,KC_WH_U,KC_WH_R,XXXXXXX,RESET,
XXXXXXX,XXXXXXX,KC_MS_L,KC_MS_D,KC_MS_R,XXXXXXX,XXXXXXX,KC_BTN1,KC_WH_D,KC_BTN2,XXXXXXX,XXXXXXX,
XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,KC_ACL0,KC_ACL1,KC_ACL2,XXXXXXX,WINDOW,
XXXXXXX,XXXXXXX,XXXXXXX, EXT_MOUSE,EXT_MOUSE, XXXXXXX,XXXXXXX,XXXXXXX,MAC
)
};
const uint16_t PROGMEM fn_actions[] = {
[_LOWER] = ACTION_LAYER_TAP_KEY(_LOWER, KC_SPC),
[_RAISE] = ACTION_LAYER_TAP_KEY(_RAISE, KC_SPC)
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch(keycode) {
case WINDOW:
if (record->event.pressed) {
set_single_persistent_default_layer(_WINDOW);
}
return false;
break;
case MAC:
if (record->event.pressed) {
set_single_persistent_default_layer(_MAC);
}
return false;
break;
case BACKLIT:
if (record->event.pressed) {
#ifdef BACKLIGHT_ENABLE
backlight_step();
#endif
}
return false;
break;
case MOUSE:
if (record->event.pressed) {
layer_on(_MOUSE);
}
return false;
break;
case EXT_MOUSE:
if (record->event.pressed) {
layer_off(_MOUSE);
layer_off(_WINDOW_SHORTCUT);
layer_off(_MAC_SHORTCUT);
}
return false;
break;
}
return true;
};

View File

@@ -0,0 +1,52 @@
# The tong92's keymap for tv44
- Arrow Layout (45key)
- my keymap for Window User
- Mouse Layer : space -> Default Layer
## Qwerty
,--------------------------------------------------------------------------.
| Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
|------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-------|
| Ctrl | A | S | D | F | G | H | J | K | L | ; | Enter|
|-------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`------|
| Shift | Z | X | C | V | B | N | M | , | . | / |Shift|
|--------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----|
| Ftn1 | GUI | Alt | Space/LOWER | Space/RAISE | ' | [ | ] | Alt |
`--------------------------------------------------------------------------'
## RAISE
,--------------------------------------------------------------------------.
| ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | |
|------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-------|
| | F1 | F2 | F3 | F4 | F5 | F6 | _ | = | { | } | | |
|-------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`------|
| | F7 | F8 | F9 | F10 | F11 | F12 | | HOME| PgUp| UP | PgDo|
|--------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----|
| | | | | | END | LEFT| Down|RIGHT|
`--------------------------------------------------------------------------'
## FTN
,--------------------------------------------------------------------------.
| ESC |WinOf|WinUp| | |Sh+Ca| | PgUp| UP | PgDo|PrtSc| DELET |
|------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-------|
| |WinLe|WinDo|WinRi| |Al+Ca|CapsL| LEFT| DOWN|RIGHT| | |
|-------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`------|
| |WinLW|WinRW| | |Ct+Ca|ScroL| HOME| | END | | Ctrl|
|--------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----|
| | DeskL | DeskR| Task Manager| DeskX | MOUSE| | | LED |
`--------------------------------------------------------------------------'
## MOUSE
,--------------------------------------------------------------------------.
| | | |Mo_Up| | | |M_WhL|M_WhU|M_WhR| | RESET |
|------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-------|
| | |Mo_Le|Mo_Do|Mo_Ri| | |M_Bt1|M_WhD|M_Bt2| | |
|-------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`------|
| | | | | | | |M_AC0|M_AC1|M_AC2| | |
|--------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----|
| | | | GO_DEFAULT | GO_DEFAULT | | | | |
`--------------------------------------------------------------------------'

View File

@@ -0,0 +1,21 @@
# 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 = no # Audio control and System control(+450)
CONSOLE_ENABLE = no # Console for debug(+400)
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = no # Audio output on port C6
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
ifndef QUANTUM_DIR
include ../../../../Makefile
endif

View File

@@ -0,0 +1,8 @@
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
#include "../../config.h"
// place overrides here
#endif

View File

@@ -0,0 +1,124 @@
#include QMK_KEYBOARD_H
extern keymap_config_t keymap_config;
enum planck_layers {
_QWERTY,
_COLEMAK,
_DVORAK,
_LOWER,
_RAISE,
_ADJUST
};
enum planck_keycodes {
DVORAK = SAFE_RANGE,
QWERTY,
COLEMAK,
LOWER,
RAISE,
ADJUST
};
// Fillers to make layering more clear
#define _______ KC_TRNS
#define XXXXXXX KC_NO
// Aliases for some other things I want to try out
#define RAI_ESC LT(_RAISE, KC_ESC)
#define LOW_QUQ LT(_LOWER, KC_QUOT)
#define LOW_MIN LT(_LOWER, KC_MINS) // Same as above, but for Dvorak layer
#define GUIBSPC GUI_T(KC_BSPC)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_DVORAK] = LAYOUT( /* 0: Dvorak */
KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH,
RAI_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, LOW_MIN,
KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT,
KC_LCTL, KC_LALT, LOWER, GUIBSPC, KC_SPC, RAISE, KC_LGUI, KC_ENT
),
[_QWERTY] = LAYOUT( /* 1: Qwerty */
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
RAI_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, LOW_QUQ,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
KC_LCTL, KC_LALT, LOWER, KC_BSPC, KC_SPC, RAISE, KC_LGUI, KC_ENT
),
[_COLEMAK] = LAYOUT( /* 2: Colemak */
KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
RAI_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, LOW_QUQ,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
KC_LCTL, KC_LALT, LOWER, KC_BSPC, KC_SPC, RAISE, KC_LGUI, KC_ENT
),
[_LOWER] = LAYOUT( /* 1: FN 1 */
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PIPE,
_______, _______, _______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
KC_CAPS, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
KC_LEFT, KC_RGHT, _______, KC_DEL, KC_INS, _______, KC_UP, KC_DOWN
),
[_RAISE] = LAYOUT( /* 2: FN 2 */
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS,
_______, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
KC_CAPS, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______,
KC_LEFT, KC_RGHT, _______, KC_DEL, KC_INS, _______, KC_UP, KC_DOWN
),
[_ADJUST] = LAYOUT(
KC_F11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F12,
_______, RESET, _______, _______, _______, _______, _______, QWERTY, COLEMAK, DVORAK, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
KC_HOME, KC_END, _______, _______, _______, _______, KC_PGUP, KC_PGDN
)
};
void persistent_default_layer_set(uint16_t default_layer) {
eeconfig_update_default_layer(default_layer);
default_layer_set(default_layer);
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case QWERTY:
if (record->event.pressed) {
persistent_default_layer_set(1UL<<_QWERTY);
}
return false;
break;
case COLEMAK:
if (record->event.pressed) {
persistent_default_layer_set(1UL<<_COLEMAK);
}
return false;
break;
case DVORAK:
if (record->event.pressed) {
persistent_default_layer_set(1UL<<_DVORAK);
}
return false;
break;
case LOWER:
if (record->event.pressed) {
layer_on(_LOWER);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
} else {
layer_off(_LOWER);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
}
return false;
break;
case RAISE:
if (record->event.pressed) {
layer_on(_RAISE);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
} else {
layer_off(_RAISE);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
}
return false;
break;
}
return true;
}

View File

@@ -0,0 +1 @@
# The default keymap for tv44

View File

@@ -0,0 +1,21 @@
# 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 controls
AUDIO_ENABLE = no # Audio output on port C6
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
ifndef QUANTUM_DIR
include ../../../../Makefile
endif

View File

@@ -0,0 +1,28 @@
#include "minivan.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);
}

View File

@@ -0,0 +1,67 @@
#ifndef MINIVAN_H
#define MINIVAN_H
#include "quantum.h"
// This a shortcut to help you visually see your layout.
// There are a number of variations depending on the layout of your bottom row.
// The arrow variant adds an additional key on the bottom-right, while the
// command variant adds an additional key on the bottom-left. arrow-command is a
// combination of both of those, having an additional key on both sides.
//
// Please note that the numbering of the macro arguments are based on the
// numbers of the keys on the PCB.
#define LAYOUT( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, \
K30, K31, K32, K33, K37, K38, K39, K3B \
) \
{ \
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B }, \
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B }, \
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B }, \
{ K30, K31, K32, K33, KC_NO, KC_NO, KC_NO, K37, K38, K39, KC_NO, K3B } \
}
#define LAYOUT_arrow( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, \
K30, K31, K32, K33, K37, K38, K39, K3A, K3B \
) \
{ \
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B }, \
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B }, \
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B }, \
{ K30, K31, K32, K33, KC_NO, KC_NO, KC_NO, K37, K38, K39, K3A, K3B } \
}
#define LAYOUT_command( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, \
K30, K31, K34, K32, K33, K37, K38, K39, K3B \
) \
{ \
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B }, \
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B }, \
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B }, \
{ K30, K31, K32, K33, K34, KC_NO, KC_NO, K37, K38, K39, KC_NO, K3B } \
}
#define LAYOUT_arrow_command( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, \
K30, K31, K34, K32, K33, K37, K38, K39, K3A, K3B \
) \
{ \
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B }, \
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B }, \
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B }, \
{ K30, K31, K32, K33, K34, KC_NO, KC_NO, K37, K38, K39, K3A, K3B } \
}
#endif

View File

@@ -0,0 +1,13 @@
# Minivan (tv44)
A compact 44% keyboard.
Keyboard Maintainer: QMK Community
Hardware Supported: Minivan PCB
Hardware Availability: https://thevankeyboards.com/collections/catalog/products/minivan-diy?variant=609138376718
Make example for this keyboard (after setting up your build environment):
make thevankeyboards/minivan:default
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).

View File

@@ -0,0 +1,69 @@
# 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
# change yes to no to disable
#
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
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
MIDI_ENABLE = no # MIDI controls
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6

View File

@@ -0,0 +1,3 @@
# TheVan Keyboards
[TheVan Keyboards](https://thevankeyboards.com/) is based in the United States and is responsible for boards such as the minivan.

View File

@@ -0,0 +1,162 @@
/*
Copyright 2012 Jun Wako <wakojun@gmail.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef CONFIG_H
#define CONFIG_H
#include "config_common.h"
/* USB Device descriptor parameter */
#define VENDOR_ID 0xFEAE
#define PRODUCT_ID 0x8846
#define DEVICE_VER 0x0001
#define MANUFACTURER TheVan Keyboards
#define PRODUCT Roadkit Micro
#define DESCRIPTION keyboard firmware for Roadkit Micro
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 4
/*
* Keyboard Matrix Assignments
*
* Change this to how you wired your keyboard
* COLS: AVR pins used for columns, left to right
* ROWS: AVR pins used for rows, top to bottom
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
*
*/
#define MATRIX_ROW_PINS { F0, F5, D7, B4 }
#define MATRIX_COL_PINS { F1, F4, D6, D4 }
#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
// #define BACKLIGHT_PIN B7
// #define BACKLIGHT_BREATHING
// #define BACKLIGHT_LEVELS 3
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCING_DELAY 5
/* define if matrix has ghost (lacks anti-ghosting diodes) */
//#define MATRIX_HAS_GHOST
/* number of backlight levels */
/* 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
/*
* Force NKRO
*
* Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
* state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
* makefile for this to work.)
*
* If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
* until the next keyboard reset.
*
* NKRO may prevent your keystrokes from being detected in the BIOS, but it is
* fully operational during normal computer usage.
*
* For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
* or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
* bootmagic, NKRO mode will always be enabled until it is toggled again during a
* power-up.
*
*/
//#define FORCE_NKRO
/*
* Magic Key Options
*
* Magic keys are hotkey commands that allow control over firmware functions of
* the keyboard. They are best used in combination with the HID Listen program,
* found here: https://www.pjrc.com/teensy/hid_listen.html
*
* The options below allow the magic key functionality to be changed. This is
* useful if your keyboard/keypad is missing keys and you want magic key support.
*
*/
/* key combination for magic key command */
#define IS_COMMAND() ( \
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
/* control how magic key switches layers */
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
/* override magic key keymap */
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
//#define MAGIC_KEY_HELP1 H
//#define MAGIC_KEY_HELP2 SLASH
//#define MAGIC_KEY_DEBUG D
//#define MAGIC_KEY_DEBUG_MATRIX X
//#define MAGIC_KEY_DEBUG_KBD K
//#define MAGIC_KEY_DEBUG_MOUSE M
//#define MAGIC_KEY_VERSION V
//#define MAGIC_KEY_STATUS S
//#define MAGIC_KEY_CONSOLE C
//#define MAGIC_KEY_LAYER0_ALT1 ESC
//#define MAGIC_KEY_LAYER0_ALT2 GRAVE
//#define MAGIC_KEY_LAYER0 0
//#define MAGIC_KEY_LAYER1 1
//#define MAGIC_KEY_LAYER2 2
//#define MAGIC_KEY_LAYER3 3
//#define MAGIC_KEY_LAYER4 4
//#define MAGIC_KEY_LAYER5 5
//#define MAGIC_KEY_LAYER6 6
//#define MAGIC_KEY_LAYER7 7
//#define MAGIC_KEY_LAYER8 8
//#define MAGIC_KEY_LAYER9 9
//#define MAGIC_KEY_BOOTLOADER PAUSE
//#define MAGIC_KEY_LOCK CAPS
//#define MAGIC_KEY_EEPROM E
//#define MAGIC_KEY_NKRO N
//#define MAGIC_KEY_SLEEP_LED Z
/*
* Feature disable options
* These options are also useful to firmware size reduction.
*/
/* disable debug print */
//#define NO_DEBUG
/* disable print */
//#define NO_PRINT
/* disable action features */
//#define NO_ACTION_LAYER
//#define NO_ACTION_TAPPING
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
#endif

View File

@@ -0,0 +1,15 @@
{
"keyboard_name": "Roadkit",
"url": "",
"maintainer": "qmk",
"width": 4,
"height": 4,
"layouts": {
"LAYOUT_numpad_4x4": {
"layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0, "h":2}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2, "h":2}, {"x":0, "y":3, "w":2}, {"x":2, "y":3}]
},
"LAYOUT_ortho_4x4": {
"layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}]
}
}
}

View File

@@ -0,0 +1,8 @@
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
#include "../../config.h"
// place overrides here
#endif

View File

@@ -0,0 +1,48 @@
#include QMK_KEYBOARD_H
extern keymap_config_t keymap_config;
// Each layer gets a name for readability, which is then used in the keymap matrix below.
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
// Layer names don't all need to be of the same length, obviously, and you can also skip them
// entirely and just use numbers.
#define _NP 0
// Macro name shortcuts
#define NUMPAD M(_NP)
// Fillers to make layering more clear
#define _______ KC_TRNS
#define XXXXXXX KC_NO
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_NP] = LAYOUT_numpad_4x4( /* Numpad */
KC_P7, KC_P8, KC_P9, KC_PPLS, \
KC_P4, KC_P5, KC_P6, \
KC_P1, KC_P2, KC_P3, KC_PENT, \
KC_P0, KC_PDOT \
),
};
const uint16_t PROGMEM fn_actions[] = {
};
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 _NP:
if (record->event.pressed) {
persistent_default_layer_set(1UL<<_NP);
}
break;
}
return MACRO_NONE;
};

View File

@@ -0,0 +1 @@
# The default keymap for roadkit

View File

@@ -0,0 +1,21 @@
# 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 controls
AUDIO_ENABLE = no # Audio output on port C6
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
ifndef QUANTUM_DIR
include ../../../../Makefile
endif

View File

@@ -0,0 +1,8 @@
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
#include "../../config.h"
// place overrides here
#endif

View File

@@ -0,0 +1,219 @@
#include QMK_KEYBOARD_H
extern keymap_config_t keymap_config;
#ifdef BACKLIGHT_ENABLE
#include "backlight.h"
#endif
#ifdef AUDIO_ENABLE
#include "audio.h"
#endif
void backlight_toggle(void){
};
enum roadkit_layers {
_NUMPAD,
_FPH,
_FPHNOISY,
_ADJUST,
_DYN
};
enum roadkit_keycodes {
NUMPAD = SAFE_RANGE,
FPH_1,
FPH_2,
FPH_3,
FPH_4,
FPH_5,
FPH_6,
FPH_7,
FPH_8,
FPH_9,
FN_0,
BACKLIT,
MACSLEEP,
DYNAMIC_MACRO_RANGE,
};
#include "dynamic_macro.h"
// Fillers to make keymaps cleaner looking
#define _______ KC_TRNS
#define XXXXXXX KC_NO
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_NUMPAD] = LAYOUT_numpad_4x4( /* Numpad */
KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_PLUS, \
KC_KP_4, KC_KP_5, KC_KP_6, \
KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_ENTER, \
LT(_ADJUST, KC_KP_0), KC_KP_DOT \
),
[_FPH] = LAYOUT_numpad_4x4( /* Quiet T9 */
FPH_7, FPH_8, FPH_9, KC_KP_PLUS, \
FPH_4, FPH_5, FPH_6, \
FPH_1, FPH_2, FPH_3, SFT_T(KC_KP_ENTER), \
LT(_ADJUST, KC_SPACE), KC_KP_DOT \
),
[_FPHNOISY] = LAYOUT_numpad_4x4( /* Noisy T9 */
FPH_7, FPH_8, FPH_9, KC_KP_PLUS, \
FPH_4, FPH_5, FPH_6, \
FPH_1, FPH_2, FPH_3, SFT_T(KC_KP_ENTER), \
LT(_ADJUST, KC_SPACE), KC_KP_DOT \
),
[_ADJUST] = LAYOUT_numpad_4x4( /* Adjustments */
KC_NUMLOCK, TG(_FPHNOISY), TG(_FPH), TG(_NUMPAD), \
KC_BSPC, BACKLIT, KC_DEL, \
MACSLEEP, _______, _______, _______, \
_______, MO(_DYN) \
),
[_DYN] = LAYOUT_numpad_4x4( /* DYNAMIC MACRO */
DYN_REC_START1, DYN_REC_START2, _______, DYN_REC_STOP, \
_______, _______, _______, \
DYN_MACRO_PLAY1, DYN_MACRO_PLAY2, _______, _______, \
_______, _______ \
),
};
const uint16_t PROGMEM fn_actions[] = {
};
void persistant_default_layer_set(uint16_t default_layer) {
eeconfig_update_default_layer(default_layer);
default_layer_set(default_layer);
}
uint16_t fph_tap_qty = false;
uint16_t fph_keycode = 0; // stores which spacebar was used, either raise or lower...
uint16_t get_render_keycode(uint16_t keycode, uint16_t tap_qty){ // maybe replace shift with "mods"
tap_qty--; // reduce by one to match array indexes.
switch(keycode){
case FPH_2:
{uint16_t kc[] = {KC_A, KC_B, KC_C};
if(tap_qty % 6 > 2)
return LSFT(kc[tap_qty % 3]);
return kc[tap_qty % 3];}
break;
case FPH_3:
{uint16_t kc[] = {KC_D, KC_E, KC_F};
if(tap_qty % 6 > 2)
return LSFT(kc[tap_qty % 3]);
return kc[tap_qty % 3];}
break;
case FPH_4:
{uint16_t kc[] = {KC_G, KC_H, KC_I};
if(tap_qty % 6 > 2)
return LSFT(kc[tap_qty % 3]);
return kc[tap_qty % 3];}
break;
case FPH_5:
{uint16_t kc[] = {KC_J, KC_K, KC_L};
if(tap_qty % 6 > 2)
return LSFT(kc[tap_qty % 3]);
return kc[tap_qty % 3];}
break;
case FPH_6:
{uint16_t kc[] = {KC_M, KC_N, KC_O};
if(tap_qty % 6 > 2)
return LSFT(kc[tap_qty % 3]);
return kc[tap_qty % 3];}
break;
case FPH_7:
{uint16_t kc[] = {KC_P, KC_Q, KC_R, KC_S};
if(tap_qty % 8 > 2)
return LSFT(kc[tap_qty % 4]);
return kc[tap_qty % 4];}
break;
case FPH_8:
{uint16_t kc[] = {KC_T, KC_U, KC_V};
if(tap_qty % 8 > 2)
return LSFT(kc[tap_qty % 4]);
return kc[tap_qty % 4];}
break;
case FPH_9:
{uint16_t kc[] = {KC_W, KC_X, KC_Y, KC_Z};
if(tap_qty % 8 > 2)
return LSFT(kc[tap_qty % 4]);
return kc[tap_qty % 4];}
break;
case FPH_1:
{uint16_t kc[] = {KC_COMM, LSFT(KC_SLSH), KC_EXLM, KC_AT, KC_MINS, KC_UNDS, KC_PLUS, \
KC_SCLN, LSFT(KC_SCLN), KC_QUOT, LSFT(KC_QUOT), KC_TILD, \
KC_PIPE, KC_BSLS, KC_HASH, LSFT(KC_4), KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, \
KC_LBRC, KC_RBRC, KC_LCBR, KC_RCBR, LSFT(KC_COMM), LSFT(KC_DOT)};
return kc[tap_qty % 26];}
}
return KC_NO;
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_dynamic_macro(keycode, record)) {
return false;
}
uint8_t layer;
layer = biton32(layer_state);
switch (keycode) {
case FPH_1 ... FPH_9:
if(layer == _FPHNOISY){
if (record->event.pressed) {
if(fph_keycode != keycode) { // key change
fph_tap_qty = 0;
fph_keycode = keycode;
} else { // same key tapped again so erase and increment.
register_code(KC_BSPC);
unregister_code(KC_BSPC);
fph_tap_qty++;
}
uint16_t render_keycode = get_render_keycode(keycode, fph_tap_qty);
// find mods? Apply mods..
register_code(render_keycode);
unregister_code(render_keycode);
} else {
// do we need to do anything on key-release?
}
} else { // not noisy, be demure .
if (record->event.pressed) {
if(fph_keycode != keycode) { // key change, kill everything.
uint16_t render_keycode = get_render_keycode(fph_keycode, fph_tap_qty);
// find mods? Apply mods..
register_code(render_keycode);
unregister_code(render_keycode);
fph_keycode = keycode;
fph_tap_qty = 0;
} else { // same key tapped again so increment counter silently
fph_tap_qty++;
}
} else {
// do we need to do anything on key-release?
// maybe start a timer on this one?
}
}
return false;
break;
case BACKLIT:
if (record->event.pressed) {
#ifdef BACKLIGHT_ENABLE
backlight_step();
#endif
}
return false;
break;
case MACSLEEP:
if (record->event.pressed) {
register_code(KC_RSFT);
register_code(KC_RCTL);
register_code(KC_POWER);
unregister_code(KC_POWER);
unregister_code(KC_RCTL);
unregister_code(KC_RSFT);
}
return false;
break;
}
return true;
}

View File

@@ -0,0 +1,26 @@
# Flip Phone layout for Roadkit
BEWARE, THIS DOES NOT WORK YET.
Uses the numpad with classic cellular phone style letters assigned to the numbers.
# LAYERS
* Numpad - The layer that matches the caps mostly
* FPH - Base layer for text
* FPHNOISY - Text layer that outputs every character and then backspaces as they're replaced
* DYN - dynamic macro layer for recording and playing macros
## FPH
Poke the "2" key twice and it makes "B".
## FPHNOISY
Poke the "2" key twice and it makes "A"+backspace+"B" so you can see it cycle through.
## MACROS
May be able to record macros with the T9 layer because the "KC_*"s are only sent
at the end. Trying to do a macro with T9NOISY would probably fill up the buffer
in just a few characters.

View File

@@ -0,0 +1,21 @@
# 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 controls
AUDIO_ENABLE = no # Audio output on port C6
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
ifndef QUANTUM_DIR
include ../../../../Makefile
endif

View File

@@ -0,0 +1,15 @@
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
#include "../../config.h"
// place overrides here
#define TAPPING_TERM 175
#ifdef BACKLIGHT_ENABLE
#define BACKLIGHT_PIN B5
#define BACKLIGHT_LEVELS 3
#define BACKLIGHT_ON_STATE 0
#endif
#endif

View File

@@ -0,0 +1,112 @@
#include QMK_KEYBOARD_H
extern keymap_config_t keymap_config;
#define _NP 0
#define _L1 1
#define _L2 2
// Fillers to make layering more clear
#define _______ KC_TRNS
#define XXXXXXX KC_NO
enum custom_keycodes {
NUMPAD = SAFE_RANGE,
ADMIN,
SMSPC1,
STR192,
STR255
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Numpad
* ,-----------------------.
* | 7 | 8 | 9 |Bksp |
* |-----`-----`-----`-----|
* | 4 | 5 | 6 | Tab |
* |-----`-----`-----`-----|
* | 1 | 2 | 3 |Enter|
* |-----`-----`-----`-----|
* | 0 |Space| . | / |
* `-----`-----`-----`-----'
* | L1 | L2 | | | Layer hold
*/
[_NP] = LAYOUT_ortho_4x4( /* Numpad */
KC_P7, KC_P8, KC_P9, KC_BSPC, \
KC_P4, KC_P5, KC_P6, KC_TAB, \
KC_P1, KC_P2, KC_P3, KC_PENT, \
LT(1, KC_P0), LT(2, KC_SPC), KC_PDOT, KC_PSLS
),
/* L1
* ,-----------------------.
* |Reset| | | Del |
* |-----`-----`-----`-----|
* | Left| Down| Up |Right|
* |-----`-----`-----`-----|
* | 192.| 255 | | |
* |-----`-----`-----`-----|
* |_____| LED | . | |
* `-----`-----`-----`-----'
*/
[_L1] = LAYOUT_ortho_4x4( /* LAYER 1 */
RESET, XXXXXXX, XXXXXXX, KC_DEL, \
KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, \
STR192, STR255, XXXXXXX, XXXXXXX, \
_______, BL_STEP, _______, XXXXXXX
),
/* L2
* ,-----------------------.
* | | | str | str |
* |-----`-----`-----`-----|
* | | | | |
* |-----`-----`-----`-----|
* | | | | |
* |-----`-----`-----`-----|
* | |_____| | |
* `-----`-----`-----`-----'
*/
[_L2] = LAYOUT_ortho_4x4( /* LAYER 2 */
XXXXXXX, XXXXXXX, ADMIN, SMSPC1, \
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
XXXXXXX, _______, XXXXXXX, XXXXXXX
)
};
void persistent_default_layer_set(uint16_t default_layer) {
eeconfig_update_default_layer(default_layer);
default_layer_set(default_layer);
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case ADMIN:
if (record->event.pressed) {
SEND_STRING("Administrator");
}
return false;
break;
case SMSPC1:
if (record->event.pressed) {
SEND_STRING("Simspace1!");
}
return false;
break;
case STR192:
if (record->event.pressed) {
SEND_STRING("192.168.");
}
return false;
break;
case STR255:
if (record->event.pressed) {
SEND_STRING("255");
}
return false;
break;
}
return true;
};

View File

@@ -0,0 +1,22 @@
# 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 = yes # Enable keyboard backlight functionality
MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = no # Audio output on port C6
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
TAP_DANCE_ENABLE = no # Enable Tap Dance functionality
ifndef QUANTUM_DIR
include ../../../../Makefile
endif

View File

@@ -0,0 +1,8 @@
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
#include "../../config.h"
// place overrides here
#endif

View File

@@ -0,0 +1,239 @@
#include QMK_KEYBOARD_H
extern keymap_config_t keymap_config;
#ifdef BACKLIGHT_ENABLE
#include "backlight.h"
#endif
#ifdef AUDIO_ENABLE
#include "audio.h"
#endif
void backlight_toggle(void){
};
enum roadkit_layers {
_NUMPAD,
_NAVIGATION,
_EXCEL,
_ADJUST,
_DYN
};
enum minivan_keycodes {
NUMPAD = SAFE_RANGE,
NAVIGATION,
EXCEL,
NUMPAD_LOCK,
NAVIGATION_LOCK,
EXCEL_LOCK,
PARENS,
BRACKETS,
BRACES,
BACKLIT,
MACSLEEP,
DYNAMIC_MACRO_RANGE,
};
#include "dynamic_macro.h"
// Fillers to make keymaps cleaner looking
#define _______ KC_TRNS
#define XXXXXXX KC_NO
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_NUMPAD] = LAYOUT_numpad_4x4( /* Numpad */
KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_PLUS, \
KC_KP_4, KC_KP_5, KC_KP_6, \
KC_KP_1, KC_KP_2, KC_KP_3, NAVIGATION, \
EXCEL, KC_KP_DOT
),
[_EXCEL] = LAYOUT_numpad_4x4( /* Excel related */
KC_KP_SLASH, KC_KP_ASTERISK, KC_MINS, KC_TAB, \
KC_QUOT, KC_KP_EQUAL, PARENS, \
KC_DQT, BRACKETS, BRACES, _______, \
_______, MO(_DYN)
),
[_NAVIGATION] = LAYOUT_numpad_4x4( /* Navigation */
KC_HOME, _______, KC_PGUP, KC_TAB, \
KC_END, KC_UP, KC_PGDN, \
KC_LEFT, KC_DOWN, KC_RIGHT, _______, \
_______, MO(_DYN)
),
[_ADJUST] = LAYOUT_numpad_4x4( /* Adjustments */
KC_NUMLOCK, MACSLEEP, BACKLIT, _______, \
KC_BSPC, _______, KC_DEL, \
EXCEL_LOCK, NUMPAD_LOCK, NAVIGATION_LOCK, _______, \
_______, _______
),
[_DYN] = LAYOUT_numpad_4x4( /* DYNAMIC MACRO */
DYN_REC_START1, DYN_REC_START2, _______, _______, \
_______, _______, _______, \
DYN_MACRO_PLAY1, DYN_MACRO_PLAY2, _______, _______, \
_______, _______
),
};
const uint16_t PROGMEM fn_actions[] = {
};
#ifdef AUDIO_ENABLE
float tone_startup[][2] = SONG(STARTUP_SOUND);
float tone_numpad[][2] = SONG(QWERTY_SOUND);
float tone_excel[][2] = SONG(DVORAK_SOUND);
float tone_navigation[][2] = SONG(COLEMAK_SOUND);
float tone_plover[][2] = SONG(PLOVER_SOUND);
float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND);
float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
#endif
void persistant_default_layer_set(uint16_t default_layer) {
eeconfig_update_default_layer(default_layer);
default_layer_set(default_layer);
}
bool fn_tap_used = false; // sets to false when space is pressed,
// sets to true when any other key is pressed,
//when space is lifted, if another key was prssed, don't send space.
uint16_t fn_keycode = 0; // stores which spacebar was used, either raise or lower...
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_dynamic_macro(keycode, record)) {
return false;
}
switch (keycode) {
case NAVIGATION: // This key is enter if tapped, navigation if held
if (record->event.pressed) {
fn_keycode = NAVIGATION; // these two lines figure out if the next action is
fn_tap_used = false;
layer_on(_NAVIGATION);
update_tri_layer(_EXCEL, _NAVIGATION, _ADJUST);
} else {
layer_off(_NAVIGATION);
update_tri_layer(_EXCEL, _NAVIGATION, _ADJUST);
if(!fn_tap_used && fn_keycode == NAVIGATION ){
register_code(KC_KP_ENTER);
unregister_code(KC_KP_ENTER);
fn_keycode = 0;
fn_tap_used = false;
}
}
return false;
break;
case EXCEL:
if (record->event.pressed) {
fn_keycode = EXCEL;
fn_tap_used = false;
layer_on(_EXCEL);
update_tri_layer(_EXCEL, _NAVIGATION, _ADJUST);
} else {
layer_off(_EXCEL);
update_tri_layer(_EXCEL, _NAVIGATION, _ADJUST);
if(!fn_tap_used && fn_keycode == EXCEL ){
register_code(KC_KP_0);
unregister_code(KC_KP_0);
fn_keycode = 0;
fn_tap_used = false;
}
}
return false;
break;
default:
fn_tap_used = true;
break; // don't return because this just handles the spacebars.
}
// this is the normal keycode processing switch from Planck default layout.
switch (keycode) {
case NUMPAD_LOCK:
if (record->event.pressed) {
#ifdef AUDIO_ENABLE
PLAY_NOTE_ARRAY(tone_numpad, false, 0);
#endif
persistant_default_layer_set(1UL<<_NUMPAD);
}
return false;
break;
case NAVIGATION_LOCK:
if (record->event.pressed) {
#ifdef AUDIO_ENABLE
PLAY_NOTE_ARRAY(tone_navigation, false, 0);
#endif
persistant_default_layer_set(1UL<<_NAVIGATION);
}
return false;
break;
case EXCEL_LOCK:
if (record->event.pressed) {
#ifdef AUDIO_ENABLE
PLAY_NOTE_ARRAY(tone_excel, false, 0);
#endif
persistant_default_layer_set(1UL<<_EXCEL);
}
return false;
break;
case PARENS:
if (record->event.pressed) {
register_code(KC_RSFT);
register_code(KC_9);
unregister_code(KC_9);
register_code(KC_0);
unregister_code(KC_0);
register_code(KC_RSFT);
register_code(KC_LEFT);
unregister_code(KC_LEFT);
}
return false;
break;
case BRACKETS:
if (record->event.pressed) {
register_code(KC_LBRC);
unregister_code(KC_LBRC);
register_code(KC_RBRC);
unregister_code(KC_RBRC);
register_code(KC_LEFT);
unregister_code(KC_LEFT);
}
return false;
break;
case BRACES:
if (record->event.pressed) {
register_code(KC_RSFT);
register_code(KC_LBRC);
unregister_code(KC_LBRC);
register_code(KC_RBRC);
unregister_code(KC_RBRC);
unregister_code(KC_RSFT);
register_code(KC_LEFT);
unregister_code(KC_LEFT);
}
return false;
break;
case BACKLIT:
if (record->event.pressed) {
#ifdef BACKLIGHT_ENABLE
backlight_step();
#endif
}
return false;
break;
case MACSLEEP:
if (record->event.pressed) {
register_code(KC_RSFT);
register_code(KC_RCTL);
register_code(KC_POWER);
unregister_code(KC_POWER);
unregister_code(KC_RCTL);
unregister_code(KC_RSFT);
}
return false;
break;
}
return true;
}

View File

@@ -0,0 +1,22 @@
# Mike's custom keymap for roadkit
Based on the 13 key layout.
## LAYERS
* Numpad - The layer that matches the caps
* Excel - / * - = and () [] {} macros
* Navigation - arrow keys and home/end
* ADJUST - just like planck adjust, lets you set default layer.
* DYN - dynamic macro layer for recording and playing macros
## MACROS
Sadly, the dynamic macros are probably going worthless because they keys that
they record have to be pressed on this keyboard. This keyboard doesn't have
most letters...
## LEADER KEYS
This board would probably be better with the user of leader keys instead of
complex layers with a raise/lower setup... Something to look into for later.

View File

@@ -0,0 +1,21 @@
# 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 controls
AUDIO_ENABLE = no # Audio output on port C6
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
ifndef QUANTUM_DIR
include ../../../../Makefile
endif

View File

@@ -0,0 +1,8 @@
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
#include "../../config.h"
// place overrides here
#endif

View File

@@ -0,0 +1,61 @@
#include QMK_KEYBOARD_H
extern keymap_config_t keymap_config;
// Each layer gets a name for readability, which is then used in the keymap matrix below.
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
// Layer names don't all need to be of the same length, obviously, and you can also skip them
// entirely and just use numbers.
#define _NP 0
#define _L1 1
// Macro name shortcuts
#define NUMPAD M(_NP)
#define LAYER1 M(_L1)
// Fillers to make layering more clear
#define _______ KC_TRNS
#define XXXXXXX KC_NO
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_NP] = LAYOUT_ortho_4x4( /* Numpad */
KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_PLUS, \
KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_MINUS, \
KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_ENTER, \
KC_KP_0, KC_KP_DOT, TG(_L1), KC_BSPC
),
[_L1] = LAYOUT_ortho_4x4( /* LAYER 1 */
KC_NUMLOCK, _______, _______, KC_VOLU, \
_______, KC_UP, _______, KC_VOLD, \
KC_LEFT, KC_DOWN, KC_RIGHT, _______, \
_______, _______, _______, _______
)
};
const uint16_t PROGMEM fn_actions[] = {
};
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 _L1:
if (record->event.pressed) {
persistent_default_layer_set(1UL<<_L1);
}
break;
case _NP:
if (record->event.pressed) {
persistent_default_layer_set(1UL<<_NP);
}
break;
}
return MACRO_NONE;
};

View File

@@ -0,0 +1,3 @@
# The singles keymap for roadkit
This keymap has a base layer with numpad functionality, and then a second layer with some additional keys. The user is encouraged to develop their own keymap using this as a starting point.

View File

@@ -0,0 +1,21 @@
# 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 controls
AUDIO_ENABLE = no # Audio output on port C6
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
ifndef QUANTUM_DIR
include ../../../../Makefile
endif

View File

@@ -0,0 +1,15 @@
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
#include "../../config.h"
// place overrides here
#define TAPPING_TERM 175
#ifdef BACKLIGHT_ENABLE
#define BACKLIGHT_PIN B5
#define BACKLIGHT_LEVELS 3
#define BACKLIGHT_ON_STATE 0
#endif
#endif

View File

@@ -0,0 +1,242 @@
#include QMK_KEYBOARD_H
extern keymap_config_t keymap_config;
// Each layer gets a name for readability, which is then used in the keymap matrix below.
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
// Layer names don't all need to be of the same length, obviously, and you can also skip them
// entirely and just use numbers.
#define _NP 0
#define _L1 1
#define _L2 2
#define _L3 3
// Macro name shortcuts
#define NUMPAD M(_NP)
#define LAYER1 M(_L1)
#define LAYER2 M(_L2)
#define LAYER3 M(_L3)
// Fillers to make layering more clear
#define _______ KC_TRNS
#define XXXXXXX KC_NO
void matrix_init_user(void) {
backlight_level(4);
}
//Tap Dance Declarations
enum {
TD_EQUAL_NP = 0,
TD_KP_PLUS_L1,
TD_DOT_L2,
TD_0_L3
};
//Tap Dance Definitions
//TD equal to turn on layer NP
void _td_equal_tg_finished (qk_tap_dance_state_t *state, void *user_data) {
if (state->count == 1) {
register_code(KC_EQUAL);
} else if (state->count == 2) {
backlight_set(3);
layer_on(_NP);
layer_off(_L1);
layer_off(_L2);
layer_off(_L3);
}
}
void _td_equal_tg_reset (qk_tap_dance_state_t *state, void *user_data) {
if (state->count == 1) {
unregister_code(KC_EQUAL);
}
}
//TD kp plus to toggle layer 1
void _td_kp_plus_tg_finished (qk_tap_dance_state_t *state, void *user_data) {
if (state->count == 1) {
register_code(KC_KP_PLUS);
} else if (state->count == 2) {
// layer_invert(_L1);
backlight_set(2);
layer_on(_L1);
layer_off(_L2);
layer_off(_L3);
}
}
void _td_kp_plus_tg_reset (qk_tap_dance_state_t *state, void *user_data) {
if (state->count == 1) {
unregister_code(KC_KP_PLUS);
}
}
//TD dot to toggle layer 2
void _td_dot_tg_finished (qk_tap_dance_state_t *state, void *user_data) {
if (state->count == 1) {
register_code(KC_DOT);
} else if (state->count == 2) {
backlight_set(1);
layer_on(_L2);
layer_off(_L1);
layer_off(_L3);
}
}
void _td_dot_tg_reset (qk_tap_dance_state_t *state, void *user_data) {
if (state->count == 1) {
unregister_code(KC_DOT);
}
}
//TD 0 to toggle layer 3
void _td_0_tg_finished (qk_tap_dance_state_t *state, void *user_data) {
if (state->count == 1) {
register_code(KC_0);
} else if (state->count == 2) {
backlight_set(0);
layer_on(_L3);
layer_off(_L1);
layer_off(_L2);
}
}
void _td_0_tg_reset (qk_tap_dance_state_t *state, void *user_data) {
if (state->count == 1) {
unregister_code(KC_0);
}
}
//TD Actions
qk_tap_dance_action_t tap_dance_actions[] = {
[TD_EQUAL_NP] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, _td_equal_tg_finished, _td_equal_tg_reset),
[TD_KP_PLUS_L1] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, _td_kp_plus_tg_finished, _td_kp_plus_tg_reset),
[TD_DOT_L2] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, _td_dot_tg_finished, _td_dot_tg_reset),
[TD_0_L3] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, _td_0_tg_finished, _td_0_tg_reset)
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Numberpad
* ,-----------------------.
* | 7 | 8 | 9 | / |
* |-----`-----`-----`-----|
* | 4 | 5 | 6 | * |
* |-----`-----`-----`-----|
* | 1 | 2 | 3 | - |
* |-----`-----`-----`-----|
* | 0 | . | + | = |
* `-----`-----`-----`-----'
* Tapdances:
* | L3 | L2 | L1 | NP |
* `-----`-----`-----`-----'
*/
[_NP] = LAYOUT_ortho_4x4( /* Numpad */
KC_7, KC_8, KC_9, KC_SLASH, \
KC_4, KC_5, KC_6, KC_KP_ASTERISK, \
KC_1, KC_2, KC_3, KC_MINUS, \
TD(TD_0_L3), TD(TD_DOT_L2), TD(TD_KP_PLUS_L1), TD(TD_EQUAL_NP)
),
/* L1
* ,-----------------------.
* | Esc |Bksp |Home |PgUp |
* |-----`-----`-----`-----|
* | Tab | Up | End |PgDn |
* |-----`-----`-----`-----|
* |Left |Down |Right|Enter|
* |-----`-----`-----`-----|
* | 0 | . | + | = |
* `-----`-----`-----`-----'
*/
[_L1] = LAYOUT_ortho_4x4( /* LAYER 1 */
KC_ESCAPE, KC_BSPACE, KC_HOME, KC_PGUP, \
KC_TAB, KC_UP, KC_END, KC_PGDOWN, \
KC_LEFT, KC_DOWN, KC_RIGHT, KC_KP_ENTER, \
_______, _______, _______, _______
),
/* L2
* ,-----------------------.
* |Sleep|LClik|RClik|VolUp|
* |-----`-----`-----`-----|
* |AltF4| F11 |WinTb|VolDn|
* |-----`-----`-----`-----|
* |PrvTk|Play |NxtTk|Mute |
* |-----`-----`-----`-----|
* | 0 | . | + | = |
* `-----`-----`-----`-----'
*/
[_L2] = LAYOUT_ortho_4x4( /* LAYER 2 */
KC_SYSTEM_SLEEP, KC_MS_BTN1, KC_MS_BTN2, KC_AUDIO_VOL_UP, \
LALT(KC_F4), KC_F11, LGUI(KC_TAB), KC_AUDIO_VOL_DOWN, \
KC_MEDIA_PREV_TRACK, KC_MEDIA_PLAY_PAUSE, KC_MEDIA_NEXT_TRACK, KC_AUDIO_MUTE, \
_______, _______, _______, _______
),
/* L3 needs cut, copy, paste, undo, again (redo), find, calc, www back, www forward, F5
* ,-----------------------.
* |WBack|WHome|WFor | F5 |
* |-----`-----`-----`-----|
* |Calc |Undo |Redo |WSrch|
* |-----`-----`-----`-----|
* | Cut |Copy |Paste|Find |
* |-----`-----`-----`-----|
* | 0 | . | + | = |
* `-----`-----`-----`-----'
*/
[_L3] = LAYOUT_ortho_4x4( /* LAYER 3 */
KC_SYSTEM_SLEEP, KC_MS_BTN1, KC_MS_BTN2, KC_AUDIO_VOL_UP, \
LALT(KC_F4), KC_F11, LGUI(KC_TAB), KC_AUDIO_VOL_DOWN, \
KC_MEDIA_PREV_TRACK, KC_MEDIA_PLAY_PAUSE, KC_MEDIA_NEXT_TRACK, KC_AUDIO_MUTE, \
_______, _______, _______, _______
),
};
const uint16_t PROGMEM fn_actions[] = {
};
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 _L3:
if (record->event.pressed) {
persistent_default_layer_set(1UL<<_L3);
}
break;
case _L2:
if (record->event.pressed) {
persistent_default_layer_set(1UL<<_L2);
}
break;
case _L1:
if (record->event.pressed) {
persistent_default_layer_set(1UL<<_L1);
}
break;
case _NP:
if (record->event.pressed) {
persistent_default_layer_set(1UL<<_NP);
}
break;
}
return MACRO_NONE;
};

View File

@@ -0,0 +1,3 @@
# The singles keymap for roadkit
This keymap has a base layer with numpad functionality, and then a second layer with some additional keys. The user is encouraged to develop their own keymap using this as a starting point.

View File

@@ -0,0 +1,22 @@
# 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 = yes # Enable keyboard backlight functionality
MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = no # Audio output on port C6
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
TAP_DANCE_ENABLE = yes # Enable Tap Dance functionality
ifndef QUANTUM_DIR
include ../../../../Makefile
endif

View File

@@ -0,0 +1,13 @@
# Roadkit
A programmable macro pad.
Keyboard Maintainer: QMK Community
Hardware Supported: Roadkit PCB
Hardware Availability: https://thevankeyboards.com/collections/catalog/products/road-kit-diy?variant=603645345806
Make example for this keyboard (after setting up your build environment):
make thevankeyboards/roadkit:default
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).

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