diff options
| -rw-r--r-- | keyboards/satan/keymaps/admiralStrokers/Makefile | 26 | ||||
| -rw-r--r-- | keyboards/satan/keymaps/admiralStrokers/config.h | 96 | ||||
| -rw-r--r-- | keyboards/satan/keymaps/admiralStrokers/keymap.c | 189 | ||||
| -rw-r--r-- | keyboards/satan/keymaps/admiralStrokers/readme.md | 13 | 
4 files changed, 324 insertions, 0 deletions
| diff --git a/keyboards/satan/keymaps/admiralStrokers/Makefile b/keyboards/satan/keymaps/admiralStrokers/Makefile new file mode 100644 index 0000000000..18d2280d69 --- /dev/null +++ b/keyboards/satan/keymaps/admiralStrokers/Makefile @@ -0,0 +1,26 @@ +# 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 	= 	no  # 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 +SLEEP_LED_ENABLE	=		no   # Enables your LED to breathe while your computer is sleeping. +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 +UNICODEMAP_ENABLE	=		no	 # This allows sending unicode symbols using X(<unicode>) in your keymap. +UNICODE_ENABLE 		=		no   # Unicode +UCIS_ENABLE 			=		no	 # Keep in mind that not all will work (See WinCompose for details on Windows). +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 + +VARIABLE_TRACE		=		no	 # Use this to debug changes to variable values +API_SYSEX_ENABLE	=		no	 # This enables using the Quantum SYSEX API to send strings +ifndef QUANTUM_DIR +	include ../../../../Makefile +endif diff --git a/keyboards/satan/keymaps/admiralStrokers/config.h b/keyboards/satan/keymaps/admiralStrokers/config.h new file mode 100644 index 0000000000..d0338fb7e9 --- /dev/null +++ b/keyboards/satan/keymaps/admiralStrokers/config.h @@ -0,0 +1,96 @@ +/* +Copyright 2012 Jun Wako <wakojun@gmail.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program.  If not, see <http://www.gnu.org/licenses/>. +*/ + +#ifndef CONFIG_H_ADMSTROK +#define CONFIG_H_ADMSTROK + +#include "config_common.h" +#include "../../config.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID       0xFEED +#define PRODUCT_ID      0x6060 +#define DEVICE_VER      0x0003 +#define MANUFACTURER    SATAN +#define PRODUCT         GH60 +#define DESCRIPTION     QMK keyboard firmware for Satan GH60 with WS2812 support + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +// ROWS: Top to bottom, COLS: Left to right + +#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 } +#define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B7, D4, B1, B0, B5, B4, D7, D6, B3 } +#define UNUSED_PINS + +#define BACKLIGHT_PIN B6 + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCING_DELAY 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* key combination for command */ +#define IS_COMMAND() ( \ +    keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +/* Backlight configuration */ +#define BACKLIGHT_LEVELS 4 + +/* Underlight configuration */ +#define RGB_DI_PIN E2 +#define RGBLIGHT_ANIMATIONS +#define RGBLED_NUM 8     // Number of LEDs +#define RGBLIGHT_HUE_STEP 10 +#define RGBLIGHT_SAT_STEP 17 +#define RGBLIGHT_VAL_STEP 17 + +#define DISABLE_SPACE_CADET_ROLLOVER + + + +/* + * 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 diff --git a/keyboards/satan/keymaps/admiralStrokers/keymap.c b/keyboards/satan/keymaps/admiralStrokers/keymap.c new file mode 100644 index 0000000000..487deb0862 --- /dev/null +++ b/keyboards/satan/keymaps/admiralStrokers/keymap.c @@ -0,0 +1,189 @@ +#include "satan.h" +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +// general keydefs +		#define norm 0		// Default layer +		#define elev 1		// Layer directional keys +		#define supr 2		// F-keys and mediakeys +		#define spac 3 +		#define FNO1 4		// +		#define FNO2 5		// +		#define FNO3 6		// +		#define MAC0 M(0)	// +		#define MAC1 M(1)	// +		#define MAC2 M(2)	// +		#define MAC3 M(3)	// +		#define MAC4 M(4)	// +		#define MAC5 M(5)	// +		#define MAC6 M(6)	// +		#define MAC7 M(7)	// +		#define MAC8 M(8)	// +		#define MAC9 M(9)	// +		#define GRAV KC_GRV // +		#define MEDI F(FNO1)// + +// General shortenings +		#define ESCA KC_ESC +		#define MINS KC_MINS +		#define EQUL KC_EQL +		#define BSPC KC_BSPC +		#define DELE KC_DEL +		#define LBRC KC_LBRC +		#define RBRC KC_RBRC +		#define ALTR KC_RALT +		#define SCLN KC_SCLN +		#define QUOT KC_QUOT +		#define NUHS KC_NUHS +		#define ENTE KC_ENT +		#define NUBS KC_NUBS	// Less/ greater sign +		#define COMM KC_COMM	// Comma +		#define FSTO KC_DOT		// Full stop +		#define SLSH KC_SLSH +		#define ALTL KC_LALT +		#define GUIL KC_LGUI +		#define GUIR KC_RGUI +		#define MENO KC_MENU +// The F-row/layer: +		#define FK01 KC_F1 +		#define FK02 KC_F2 +		#define FK03 KC_F3 +		#define FK04 KC_F4 +		#define FK05 KC_F5 +		#define FK06 KC_F6 +		#define FK07 KC_F7 +		#define FK08 KC_F8 +		#define FK09 KC_F9 +		#define FK10 KC_F10 +		#define FK11 KC_F11 +		#define FK12 KC_F12 +		#define FK13 KC_F13 +		#define FK14 KC_F14 +// Special Actions and Media Keys +		#define INSE KC_INS  	// Insert here +		#define HOME KC_HOME 	// Go to beginning of line +		#define ENDI  KC_END 	// go to end of line +		#define PSCR  KC_PSCR 	// Print Screen +		#define SLCK  KC_SLCK 	// go to end of line +		#define PGDN  KC_PGDN 	// go to end of line +		#define PGUP  KC_PGUP 	// go to end of line +		#define PLPS KC_MPLY 	// Play/Pause +		#define PAUS KC_PAUS 	// Pause button +		#define MUTE KC_MUTE 	// Mute sound +		#define VOLU KC_VOLU 	// Volume increase +		#define VOLD KC_VOLD 	// Volume decrease +		#define MNXT KC_MNXT 	// next track +		#define MPRV KC_MPRV 	// prev track +		#define MSTP KC_MSTP 	// stop playing +		#define MSEL KC_MSEL 	// Select media (Start playing it) +		#define MAIL KC_MAIL 	// Open default mail app +		#define CALC KC_CALC 	// Open default calculator app +		#define MYCM KC_MYCM 	// Open default file manager +		//#define LILO KC_XXXXXX	// Reserved for later +		//#define LIHI KC_XXXXXX	// Reserved for later + + +// dual-role shortcuts +		#define DUTB LT(elev, KC_TAB) 	// `tabs` layer on hold and tab on tap +		#define DUSP LT(spac, KC_SPACE)	// `spce` layer on hold and space on tap +		#define LOCK LGUI(KC_L)			// lock computer (win) + +// Space Admiral Strokers +		#define SADL MAC0 				// Hold for lshift and { on tap +		#define SADR MAC1				// Hold for rshift and } on tap +		#define CADL MAC2				// Hold for lctrl and [ on tap +		#define CADR MAC3				// Hold for rctrl and ] on tap + +// arrow cluster duality bottom right corner +		#define ARLF ALT_T(KC_LEFT) // Left arrow +		#define ARRT CTL_T(KC_RIGHT)// Right arrow +		#define ARUP SFT_T(KC_UP)	// Up arrow +		#define ARDN GUI_T(KC_DOWN) // Down arrow + +// brackets +		#define NOCL RALT(KC_7)    // [ +		#define NOCR RALT(KC_0)    // ] +		#define NOPL LSFT(KC_8)    // ( +		#define NOPR LSFT(KC_9)    // ) +		#define NOAL KC_NUBS       // < +		#define NOAR LSFT(KC_NUBS) // > +		#define NOBL RALT(KC_8)    // [ +		#define NOBR RALT(KC_9)    // ] + +// increase readability +		#define XXXX	KC_TRNS +		#define DEAD 	KC_NO +		#define SCAN	KC_TRNS // Scandinavian keys, the Row 5 key 5 is actually Row 1 key 15 on the PCB + +[ norm ] = KEYMAP( // Normal scandinavian mapping (danish has QUOT and SCLN wapped) +        GRAV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, MINS, EQUL, BSPC, DELE,\ +        DUTB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, LBRC, RBRC, DEAD,\ +        ALTR, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, SCLN, QUOT, NUHS, ENTE,\ +				SADL, NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, COMM, FSTO, SLSH, SADR, DEAD,\ +				CADL, ALTL, GUIL,           		DUSP,             	    GUIR, MEDI, MENO, CADR), + +[ elev ] = KEYMAP( // The f-Row (with f13-14), Special keys and media keys +				LOCK, FK01, FK02, FK03, FK04, FK05, FK06, FK07, FK08, FK09, FK10, FK11, FK12, FK13, FK14,\ +				XXXX, XXXX, XXXX, XXXX, MAIL, XXXX, XXXX, HOME, INSE, PSCR, SLCK, PAUS, PGUP, XXXX,\ +			    XXXX, XXXX, XXXX, XXXX, MYCM, XXXX, XXXX, MPRV, PAUS, MNXT, XXXX, XXXX, PGDN, ENDI,\ +				XXXX, XXXX, XXXX, XXXX, CALC, XXXX, XXXX, XXXX, MUTE, VOLD, VOLU, XXXX, ARUP, DEAD,\ +				XXXX, XXXX, XXXX, 					PLPS,			  		XXXX, ARLF, ARDN, ARRT), + +[ spac ] = KEYMAP( // The space controls (by pressing space) +				XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX,\ +				XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX,\ +			    XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX,\ +				XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, DEAD,\ +				XXXX, XXXX, XXXX, 					XXXX,			        XXXX, XXXX, XXXX, XXXX), + +[ supr ] = KEYMAP( // Additional layer for later use. +				XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX,\ +				XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX,\ +			    XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX,\ +				XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, DEAD,\ +				XXXX, XXXX, XXXX, 					XXXX,			  		XXXX, XXXX, XXXX, XXXX), +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { // MACRODOWN only works in this function +		static uint16_t key_timer; +    switch(id) { +        case 0: //MAC0 - Hold for lshift and { on tap +					if (record->event.pressed) { +						key_timer = timer_read(); +						return MACRO(D(LSFT), END ); +					} else { +						return (timer_elapsed(key_timer) < 150) ? MACRO(U(LSFT),D(RALT),T(7),U(RALT),END): MACRO(U(LSFT),END); +					}; break; +			  case 1:	//MAC1 - Hold for rshift and } on tap +					if (record->event.pressed) { +						key_timer = timer_read(); +						return MACRO(D(RSFT), END ); +					} else { +						return (timer_elapsed(key_timer) < 150) ? MACRO(U(RSFT),D(RALT),T(0),U(RALT),END): MACRO(U(RSFT),END); +					}; break; +        case 2: //MAC2 - Hold for lctrl and [ on tap +						if (record->event.pressed) { +							key_timer = timer_read(); +							return MACRO(D(LCTL), END ); +						} else {return (timer_elapsed(key_timer) < 150) ? MACRO(U(LCTL),D(RALT),T(8),U(RALT),END):MACRO(U(LCTL),END); +						}; break; +       	case 3: //MAC3 - Hold for rctrl and ] on tap +						if (record->event.pressed) { +							key_timer = timer_read(); +							return MACRO(D(RCTL), END ); +						} else { +							return (timer_elapsed(key_timer) < 150) ? MACRO(U(RCTL),D(RALT),T(9),U(RALT),END):MACRO(U(RCTL),END); +						}; break; +      	case 4: //MAC4 +						if (record->event.pressed) { } else { }; break; +       	case 5: //MAC5 +						if (record->event.pressed) { } else { }; break; +       	case 6: //MAC6 +						if (record->event.pressed) { } else { }; break; +    } return MACRO_NONE; +}; +/* +		Later use: +		void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { } +		enum function_id { }; +		const uint16_t PROGMEM fn_actions[] = { }; + +*/ diff --git a/keyboards/satan/keymaps/admiralStrokers/readme.md b/keyboards/satan/keymaps/admiralStrokers/readme.md new file mode 100644 index 0000000000..9b30caf349 --- /dev/null +++ b/keyboards/satan/keymaps/admiralStrokers/readme.md @@ -0,0 +1,13 @@ +# Admiral Strokers keymap +## For the  Satan GH60 PCB +The Admiral STN60 is a layout for users of the satan GH60, optimized with some nice	features such as mod tap for brackets (Similar to Space Cadett), space mod for F-row/  layer with easy to access media and control keys. The layout below is just as an example and is ISO based, ANSI and JIS layouts will be included later. + +`````` +[ _tmp ] = KEYMAP(	// Copy this to get started. SCAN is scandinavian layout specific. +XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX,\ +XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, DEAD,\ +XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, SCAN, XXXX,\ +XXXX, SCAN, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, DEAD,\ +XXXX, XXXX, XXXX, 					XXXX,		   SCAN, XXXX, XXXX, XXXX, XXXX),\ + +``` | 
