From b9b67e9614eed1634850a3a0b05711b90ee98fe1 Mon Sep 17 00:00:00 2001 From: Alex Vogel Date: Thu, 25 Jan 2018 07:03:49 +0100 Subject: [PATCH] [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. --- keyboards/satan/keymaps/isoHHKB/keymap.c | 110 ++++++++++++++++++ keyboards/satan/keymaps/isoHHKB/readme.md | 55 +++++++++ keyboards/satan/keymaps/isoHHKB/rules.mk | 21 ++++ .../satan/keymaps/isoHHKB/stunny_iso_hhkb.h | 21 ++++ 4 files changed, 207 insertions(+) create mode 100644 keyboards/satan/keymaps/isoHHKB/keymap.c create mode 100644 keyboards/satan/keymaps/isoHHKB/readme.md create mode 100644 keyboards/satan/keymaps/isoHHKB/rules.mk create mode 100644 keyboards/satan/keymaps/isoHHKB/stunny_iso_hhkb.h diff --git a/keyboards/satan/keymaps/isoHHKB/keymap.c b/keyboards/satan/keymaps/isoHHKB/keymap.c new file mode 100644 index 000000000..a14c5c39d --- /dev/null +++ b/keyboards/satan/keymaps/isoHHKB/keymap.c @@ -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; +}; diff --git a/keyboards/satan/keymaps/isoHHKB/readme.md b/keyboards/satan/keymaps/isoHHKB/readme.md new file mode 100644 index 000000000..60454efb6 --- /dev/null +++ b/keyboards/satan/keymaps/isoHHKB/readme.md @@ -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 diff --git a/keyboards/satan/keymaps/isoHHKB/rules.mk b/keyboards/satan/keymaps/isoHHKB/rules.mk new file mode 100644 index 000000000..026b33c7d --- /dev/null +++ b/keyboards/satan/keymaps/isoHHKB/rules.mk @@ -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 diff --git a/keyboards/satan/keymaps/isoHHKB/stunny_iso_hhkb.h b/keyboards/satan/keymaps/isoHHKB/stunny_iso_hhkb.h new file mode 100644 index 000000000..b5737f5af --- /dev/null +++ b/keyboards/satan/keymaps/isoHHKB/stunny_iso_hhkb.h @@ -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