[Keymap] semi-ISO Spanish HHKB Keymap for Satan Keyboards (#2290)

* ISO HHKB first commit

* First version of my HHKB ISO Spanish Keymap

* Readme.md

* Added more media keys.
Caps Lock added on function layer.
Backlight toggle added on funtion layer.

* RGB support for WS2812B RGB led strip

* RGB and brightness control.
This commit is contained in:
Alex Vogel 2018-01-25 07:03:49 +01:00 committed by Jack Humbert
parent 35b44ac699
commit b9b67e9614
4 changed files with 207 additions and 0 deletions

View File

@ -0,0 +1,110 @@
#include "satan.h"
#include "stunny_iso_hhkb.h"
// Used for SHIFT_ESC
#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
// 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 _BL 0
#define _FL 1
#define KC_ENYE M(0)
#define KC_CEDL M(1)
#define _______ KC_TRNS
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap _BL: (Base Layer) Default Layer
* ,-----------------------------------------------------------.
* |Esc~| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp |
* |-----------------------------------------------------------|
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| Ret |
* |-----------------------------------------------------------|
* |Ctrl | A| S| D| F| G| H| J| K| L| Ñ| ;| ' |urn|
* |-----------------------------------------------------------|
* |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | Fn|
* |-----------------------------------------------------------|
* | |Alt|WinK | Space |WinK |Alt| |
* `-----------------------------------------------------------'
*
*/
[_BL] = KEYMAP_ISO_HHKB( \
F(0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \
KC_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_LCTRL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENYE,KC_SCLN,KC_QUOT,KC_ENT, \
OSM(MOD_LSFT),_______, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, OSM(MOD_RSFT), MO(_FL), \
_______, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI,_______, _______),
/* Keymap _FL: (Function Layer) Second Layer
* ,-----------------------------------------------------------.
* | |F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|PSR| RESET|
* |-----------------------------------------------------------|
* | | |VUP| | | | | | | | | | | |
* |-----------------------------------------------------------|
* |CapsLck|PRV|VDN|NXT| |RGB|FRW|BRT|VAI|VAD|INC|DEC| | |
* |-----------------------------------------------------------|
* | | | | Ç| |BTG| |MUT| | | | | |
* |-----------------------------------------------------------|
* | | | | PLY/PAU | | | |
* `-----------------------------------------------------------'
*/
[_FL] = KEYMAP_ISO_HHKB(\
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_PSCR, RESET, \
_______,_______,KC_VOLU,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______, _______, \
KC_CAPS,KC_MPRV,KC_VOLD,KC_MNXT,_______,_______,RGB_TOG,RGB_MOD,RGB_M_B,RGB_VAI,RGB_VAD,BL_INC, BL_DEC, _______, \
_______,_______,_______,_______,KC_CEDL,_______,BL_TOGG,_______,KC_MUTE,_______,_______,_______,_______, _______, \
_______,_______,_______, KC_MPLY, _______,_______,_______, _______)
};
enum function_id {
SHIFT_ESC,
};
const uint16_t PROGMEM fn_actions[] = {
[0] = ACTION_FUNCTION(SHIFT_ESC),
};
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
static uint8_t shift_esc_shift_mask;
switch (id) {
case SHIFT_ESC:
shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK;
if (record->event.pressed) {
if (shift_esc_shift_mask) {
add_key(KC_GRV);
send_keyboard_report();
} else {
add_key(KC_ESC);
send_keyboard_report();
}
} else {
if (shift_esc_shift_mask) {
del_key(KC_GRV);
send_keyboard_report();
} else {
del_key(KC_ESC);
send_keyboard_report();
}
}
break;
}
};
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
if (record->event.pressed) {
switch(id) {
case 0: // Ñ
return MACRO(D(LALT), T(KP_0), T(KP_2), T(KP_4), T(KP_1), U(LALT), END);
case 1: // Ç
return MACRO(D(LALT), T(KP_0), T(KP_2), T(KP_3), T(KP_1), U(LALT), END);
}
}
return MACRO_NONE;
};

View File

@ -0,0 +1,55 @@
# HKKB-ISO Satan Layout by Stunny
This layout combines the split Right Shift ISO layout with the popular HHKB layout. The Caps Lock key will be replaced in the default layout by the Control key, which is more convenient for some people.
This version is designed to have in its base layer letter 'Ñ' for Spanish writing. Also, 'ç' is included for those who have to write in French, Catalan or other languages that may need it.
This keymap also supports control for a WS2812B RGB led strip connected to pin E2 of the microcontroller. If you want more functionalities, pls check RGB documentation at [QMK Docs]( https://docs.qmk.fm/feature_rgblight.html#rgb-lighting). This also goes for backlighting functionalities. If you want more control, check [QMK Docs](https://docs.qmk.fm/feature_backlight.html#backlighting) on that.
Base Layer:
```
,-----------------------------------------------------------.
|Esc~| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp |
|-----------------------------------------------------------|
|Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| Ret |
|-----------------------------------------------------------|
|Ctrl | A| S| D| F| G| H| J| K| L| Ñ| ;| ' |urn|
|-----------------------------------------------------------|
|Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | Fn|
|-----------------------------------------------------------|
| |Alt|LGUI | Space |RGUI |Alt| |
`-----------------------------------------------------------'
```
Function Layer
```
,-----------------------------------------------------------.
| |F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|PSR| RESET|
|-----------------------------------------------------------|
| | |VUP| | | | | | | | | | | |
|-----------------------------------------------------------|
|CapsLck|PRV|VDN|NXT| |RGB|FRW|BRT|VAI|VAD|INC|DEC| | |
|-----------------------------------------------------------|
| | | | Ç| |BTG| |MUT| | | | | |
|-----------------------------------------------------------|
| | | | PLY/PAU | | | |
`-----------------------------------------------------------'
```
Where:
- `PRV` is `KC_MEDIA_PREV_TRACK`
- `NXT` is `KC_MEDIA_NEXT_TRACK`
- `VUP` is `KC_AUDIO_VOL_UP`
- `VDN` is `KC_AUDIO_VOL_DOWN`
- `MUT` is `KC_AUDIO_MUTE`
- `PLY/PAU` is `KC_MEDIA_PLAY_PAUSE`
- `BTG` is `BL_TOGG` (toggles key backlighting)
- `INC` increases backlighting brightness
- `DEC` decreases backlighting brightness
- `PSR` is `KC_PSCREEN`
- `RGB` is `RGB_TOG`
- `FRW` jumps to next RGB mode
- `BRT` activates RGB breathing mode directly
- `VAI` increases RGB brightness
- `VAD` decreases RGB brightness

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 = 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 = yes # 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,21 @@
#ifndef STUNNY_ISO_HHKB_H
#define STUNNY_ISO_HHKB_H
/* Satan ISO - HHKB matrix layout
* With 7u space bar, split right shift and 2u Backspace
* ,------------------------------------------------------------.
* | 00 |01| 02| 03| 04| 05| 06| 07| 08| 09| 0a| 0b| 0c| 0d |
* |------------------------------------------------------------|
* | 10 | 11| 12| 13| 14| 15| 16| 17| 18| 19| 1a| 1b| 1c| |
* |------------------------------------------------------------|
* | 20 | 21| 22| 23| 24| 25| 26| 27| 28| 29| 2a| 2b| 2c| 2d |
* |------------------------------------------------------------|
* | 30 | 32| 33| 34| 35| 36| 37| 38| 39| 3a| 3b| 3d | 3c |
* |------------------------------------------------------------|
* | | 41| 42 | 45 | 4a | 4b | | |
* `------------------------------------------------------------'
*/
#define KEYMAP_ISO_HHKB KEYMAP_ISO_SPLITRSHIFT
#endif