~ruther/qmk_firmware

503335be258b3b05a3188f73ab7ee72a34485078 — Christian Hartlage 7 years ago 0912c42
Added GH60 Satan ISO layout with split right shift and split backspace (#2773)

* added an iso layout that supports split backspace and split rshift

* added a keymap which uses the iso layout with split backspace and split rshift

* added a #define LAYOUT_ for the KEYMAP_

* fixed missing newline
A keyboards/satan/keymaps/dende_iso/keymap.c => keyboards/satan/keymaps/dende_iso/keymap.c +80 -0
@@ 0,0 1,80 @@
#include "satan.h"
#include "keymap_extras/keymap_german.h"

// 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 _DEF 0
#define _FNK 1
#define _MEDIA 2

// dual-role shortcuts
#define FN_CAPS   LT(_MEDIA, KC_CAPSLOCK)

// increase readability
#define _______ KC_TRNS

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  /* Keymap _DEF: Default Layer
  * ,------------------------------------------------------------.
  * |Esc|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  ß| ´|bcksp|fn1|
  * |------------------------------------------------------------|
  * |Tab  |  Q|  W|  E|  R|  T|  Z|  U|  I|  O|  P|  Ü|  +|      |
  * |----------------------------------------------------- Return|
  * |fn2   | A|  S|  D|  F|  G|  H|  J|  K|  L|  Ö|  Ä|  # |     |
  * |------------------------------------------------------------|
  * |Sft | < |  Y|  X|  C|  V|  B|  N|  M|  ,|  .|  -| RSft| del |
  * |------------------------------------------------------------|
  * |Ctrl|Win |Alt |         Space          |RAlt |Win |App|RCtrl|
  * `------------------------------------------------------------'
  */
[_DEF] = LAYOUT_60_iso_split_bs_rshift(
  KC_ESC,       KC_1,    KC_2,    KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9,    KC_0,    DE_SS,   DE_ACUT, KC_BSPC, MO(_FNK), \
  KC_TAB,       KC_Q,    KC_W,    KC_E, KC_R, KC_T, DE_Z, KC_U, KC_I, KC_O,    KC_P,    DE_UE,   DE_PLUS, \
  FN_CAPS,      KC_A,    KC_S,    KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,    DE_OE,   DE_AE,   DE_HASH, KC_ENT, \
  KC_LSFT,      DE_LESS, DE_Y,    KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT,  DE_MINS, KC_RSFT, KC_DELETE,  \
  KC_LCTL,      KC_LGUI, KC_LALT,              KC_SPACE,                       DE_ALGR, KC_RGUI, KC_APP,  KC_RCTL),


  /* Keymap _FNK: Function Keys
  * ,------------------------------------------------------------.
  * | ^ | F1| F2| F3| F4| F5| F6| F7| F8| F9| F0|F11|F12| Ins |  |
  * |------------------------------------------------------------|
  * |     |PGU| Up|PGD|   |   |   |Ins|Hom|PDU|   |   |   |      |
  * |-----------------------------------------------------       |
  * |     |Lft|Dwn|Rgt|   |   |   |Del|End|PGD|   |   |    |     |
  * |------------------------------------------------------------|
  * |    |   |   |   |   |   |   |   |   |   |   |   |     |     |
  * |------------------------------------------------------------|
  * |    |    |    |                        |     |    |   |     |
  * `------------------------------------------------------------'
  */
[_FNK] = LAYOUT_60_iso_split_bs_rshift(
  DE_CIRC,   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_INS, _______, \
  _______, KC_PGUP, KC_UP,  KC_PGDOWN, _______, _______, _______, _______,  KC_INS, KC_HOME, KC_PGUP, _______, _______, \
  _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______, _______, KC_DEL, KC_END, KC_PGDOWN, _______, _______, _______, \
  _______, _______, _______, _______,  _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
  _______, _______, _______,                             _______,                             _______, _______, _______, _______),

  /* Keymap _MEDIA: Media and Mouse Layer
  * ,------------------------------------------------------------.
  * |   |   |   |   |   |   |   |   |   |   |   |   |   |     |  |
  * |------------------------------------------------------------|
  * |     |   |   |   |   |   |   |MLC| MU|MRC|   |   |   |      |
  * |-----------------------------------------------------       |
  * |     |PRV|VLD|VLU|NXT|   |   | ML| MD| MR|   |   |    |     |
  * |------------------------------------------------------------|
  * |    |   |   |   |   |   |   |   |   |   |   |   | UP  |     |
  * |------------------------------------------------------------|
  * |    |    |    |        PLAY            |     |LEFT|DWN|RIGHT|
  * `------------------------------------------------------------'
  */

[_MEDIA] = LAYOUT_60_iso_split_bs_rshift(
  _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
  _______, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_MS_U, KC_BTN2, _______, _______, _______, \
  _______, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, _______, _______,  \
  _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP  , _______, \
  _______, _______, _______,                            KC_MPLY,                            _______, KC_LEFT, KC_DOWN, KC_RIGHT),
  };

A keyboards/satan/keymaps/dende_iso/readme.md => keyboards/satan/keymaps/dende_iso/readme.md +61 -0
@@ 0,0 1,61 @@
# Satan GH60 ISO-DE Layout with split backspace and right shift

![Layout Image](https://i.imgur.com/a7znS69.jpg)

## Default Layer
This ISO-DE based layout has a split backspace. the left part is the actual backspace and the right parts serves as a FN key.
The right shift is also split, with the right part serving as the del key.
```
/* Keymap _DEF: Default Layer
 * ,------------------------------------------------------------.
 * |Esc|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  ß| ´|bcksp|fn1|
 * |------------------------------------------------------------|
 * |Tab  |  Q|  W|  E|  R|  T|  Z|  U|  I|  O|  P|  Ü|  +|      |
 * |----------------------------------------------------- Return|
 * |fn2   | A|  S|  D|  F|  G|  H|  J|  K|  L|  Ö|  Ä|  # |     |
 * |------------------------------------------------------------|
 * |Sft | < |  Y|  X|  C|  V|  B|  N|  M|  ,|  .|  -| RSft| del |
 * |------------------------------------------------------------|
 * |Ctrl|Win |Alt |         Space          |RAlt |Win |App|RCtrl|
 * `------------------------------------------------------------'
 */
```


## FN Key Layer 
The Function keys can be accessed when holding fn1 (right part of backspace)

```
/* Keymap _FNK: Function Keys
 * ,------------------------------------------------------------.
 * | ^ | F1| F2| F3| F4| F5| F6| F7| F8| F9| F0|F11|F12| Ins |  |
 * |------------------------------------------------------------|
 * |     |PGU| Up|PGD|   |   |   |Ins|Hom|PDU|   |   |   |      |
 * |-----------------------------------------------------       |
 * |     |Lft|Dwn|Rgt|   |   |   |Del|End|PGD|   |   |    |     |
 * |------------------------------------------------------------|
 * |    |   |   |   |   |   |   |   |   |   |   |   |     |     |
 * |------------------------------------------------------------|
 * |    |    |    |                        |     |    |   |     |
 * `------------------------------------------------------------'
 */
```

## Media and Mouse Layer
The Media Keys and Mouse control can be accessed when holding capslock (fn2)

```
/* Keymap _MEDIA: Media and Mouse Layer
 * ,------------------------------------------------------------.
 * |   |   |   |   |   |   |   |   |   |   |   |   |   |     |  |
 * |------------------------------------------------------------|
 * |     |   |   |   |   |   |   |MLC| MU|MRC|   |   |   |      |
 * |-----------------------------------------------------       |
 * |     |PRV|VLD|VLU|NXT|   |   | ML| MD| MR|   |   |    |     |
 * |------------------------------------------------------------|
 * |    |   |   |   |   |   |   |   |   |   |   |   | UP  |     |
 * |------------------------------------------------------------|
 * |    |    |    |        PLAY            |     |LEFT|DWN|RIGHT|
 * `------------------------------------------------------------'
 */
```
\ No newline at end of file

A keyboards/satan/keymaps/dende_iso/rules.mk => keyboards/satan/keymaps/dende_iso/rules.mk +21 -0
@@ 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 = 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

M keyboards/satan/satan.h => keyboards/satan/satan.h +31 -0
@@ 138,11 138,42 @@
	{k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d}  \
}

/* ISO w/ split right shift key matrix layout
   * ,-----------------------------------------------------------.
   * | 00 |01| 02| 03| 04| 05| 06| 07| 08| 09| 0a| 0b| 0c| 0d|49 |
   * |-----------------------------------------------------------|
   * | 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 | 31| 32| 33| 34| 35| 36| 37| 38| 39| 3a| 3b|  3d  | 3c|
   * |-----------------------------------------------------------|
   * | 40 | 41 | 42 |        45             | 4a | 4b | 4c | 4d  |
   * `-----------------------------------------------------------'

   swap 3c and 3d. 3c is right of 3d in reality
 */
#define KEYMAP_ISO_SPLITRSHIFT_SPLITBACKSPACE( \
  k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k49,\
	k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
	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, k3d, k3c, \
	k40, k41, k42,           k45,                     k4a, k4b, k4c, k4d  \
) \
{ \
	{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}, \
	{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, XXX, XXX, k45, XXX, XXX, XXX, k49, k4a, k4b, k4c, k4d}  \
}

void matrix_init_user(void);
void matrix_scan_user(void);

#define LAYOUT_60_ansi KEYMAP_ANSI
#define LAYOUT_60_iso KEYMAP_ISO
#define LAYOUT_60_ansi_split_bs_rshift KEYMAP_HHKB
#define LAYOUT_60_iso_split_bs_rshift KEYMAP_ISO_SPLITRSHIFT_SPLITBACKSPACE

#endif