From 526fbf0faf5530fa0b62173273e7974dda4e6e79 Mon Sep 17 00:00:00 2001 From: Quentin Date: Mon, 17 May 2021 00:20:26 +0200 Subject: [Keyboard] Add scylla keyboard (#12720) Co-authored-by: Drashna Jaelre Co-authored-by: Ryan Co-authored-by: bstiq --- .../bastardkb/scylla/keymaps/default/keymap.c | 60 +++++++++++++ .../scylla/keymaps/german_gaming/keymap.c | 90 +++++++++++++++++++ .../scylla/keymaps/german_gaming/readme.md | 24 +++++ .../scylla/keymaps/german_gaming/rules.mk | 1 + keyboards/bastardkb/scylla/keymaps/xyverz/config.h | 33 +++++++ keyboards/bastardkb/scylla/keymaps/xyverz/keymap.c | 100 +++++++++++++++++++++ 6 files changed, 308 insertions(+) create mode 100644 keyboards/bastardkb/scylla/keymaps/default/keymap.c create mode 100644 keyboards/bastardkb/scylla/keymaps/german_gaming/keymap.c create mode 100644 keyboards/bastardkb/scylla/keymaps/german_gaming/readme.md create mode 100644 keyboards/bastardkb/scylla/keymaps/german_gaming/rules.mk create mode 100644 keyboards/bastardkb/scylla/keymaps/xyverz/config.h create mode 100644 keyboards/bastardkb/scylla/keymaps/xyverz/keymap.c (limited to 'keyboards/bastardkb/scylla/keymaps') diff --git a/keyboards/bastardkb/scylla/keymaps/default/keymap.c b/keyboards/bastardkb/scylla/keymaps/default/keymap.c new file mode 100644 index 0000000000..49be09b689 --- /dev/null +++ b/keyboards/bastardkb/scylla/keymaps/default/keymap.c @@ -0,0 +1,60 @@ +/* + * Copyright 2021 Quentin LEBASTARD + * + * 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 . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_split_4x6_5( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, 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_MINS, +//-------------------------------------------------//-----------------------------------------------------------// + KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, +//-------------------------------------------------//-----------------------------------------------------------// + KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_BSLS, +//-------------------------------------------------//-----------------------------------------------------------// + KC_LCTL, KC_SPC, MO(1), MO(2), KC_ENT, KC_RGUI, + KC_HOME, KC_BSPC, KC_DEL, KC_RALT + ), + + [1] = LAYOUT_split_4x6_5( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, +//---------------------------------------------------------//-----------------------------------------------------------// + RESET, _______, _______, _______, _______, KC_LBRC, KC_RBRC, KC_P7, KC_P8, KC_P9, _______, KC_PLUS, +//---------------------------------------------------------//-----------------------------------------------------------// + _______, KC_HOME, KC_PGUP, KC_PGDN, KC_END, KC_LPRN, KC_RPRN, KC_P4, KC_P5, KC_P6, KC_MINS, KC_PIPE, +//---------------------------------------------------------//-----------------------------------------------------------// + _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, KC_EQL, KC_UNDS, +//---------------------------------------------------------//-----------------------------------------------------------// + KC_LCTL, KC_HOME, KC_TRNS, KC_TRNS, KC_RALT, KC_RGUI, + KC_SPC, KC_BSPC, KC_RCTL, KC_ENT + ), + + [2] = LAYOUT_split_4x6_5( + KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, +//---------------------------------------------------------//--------------------------------------------------------------// + _______, _______, RGB_RMOD, RGB_TOG, RGB_MOD, KC_LBRC, KC_RBRC, _______, KC_NLCK, KC_INS, KC_SLCK, KC_MUTE, +//---------------------------------------------------------//--------------------------------------------------------------// + _______, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, KC_LPRN, KC_RPRN, KC_MPRV, KC_MPLY, KC_MNXT, _______, KC_VOLU, +//---------------------------------------------------------//--------------------------------------------------------------// + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, +//---------------------------------------------------------//--------------------------------------------------------------// + KC_LCTL, KC_HOME, KC_TRNS, KC_TRNS, KC_RALT, RESET, + KC_SPC, KC_BSPC, KC_RCTL, KC_ENT + ), +}; diff --git a/keyboards/bastardkb/scylla/keymaps/german_gaming/keymap.c b/keyboards/bastardkb/scylla/keymaps/german_gaming/keymap.c new file mode 100644 index 0000000000..94dd182c69 --- /dev/null +++ b/keyboards/bastardkb/scylla/keymaps/german_gaming/keymap.c @@ -0,0 +1,90 @@ +/* + * Copyright 2021 Joschua Gandert + * + * 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 . + */ + + +#include QMK_KEYBOARD_H +#include "keymap_german.h" + + +enum layer_names { + _BASE, + _GAME, /* WASD shifted right once */ + _LOWER, + _RAISE, + _ADJUST /* when both LOWER and RAISE pressed */ +}; + +#define RAISE MO(_RAISE) +#define LOWER MO(_LOWER) + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_split_4x6_5( + KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , DE_SS , + KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , DE_Z , KC_U , KC_I , KC_O , KC_P , DE_UDIA, + KC_LSFT, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , DE_ODIA, DE_ADIA, + KC_LCTL, DE_Y , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT, DE_MINS, DE_PLUS, + + RAISE, KC_SPC, KC_LCTL, KC_RALT, KC_BSPC, LOWER, + KC_ENT, KC_LALT, KC_LGUI, KC_RSFT + ), + + [_GAME] = LAYOUT_split_4x6_5( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + KC_T , KC_TAB , KC_Q , KC_W , KC_E , KC_R , _______, _______, KC_UP, _______, _______, _______, + KC_G , KC_LSFT, KC_A , KC_S , KC_D , KC_F , _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, + KC_B , KC_LCTL, DE_Y , KC_X , KC_C , KC_V , _______, _______, _______, _______, _______, _______, + + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______ + ), + + [_LOWER] = LAYOUT_split_4x6_5( + KC_TILD, KC_EXLM, KC_AT , KC_HASH, KC_DLR , KC_PERC, KC_CIRC, KC_AMPR, KC_PSLS, KC_PAST, KC_PMNS, KC_DEL , + _______, DE_HASH, DE_CIRC, KC_PGUP, DE_LABK, _______, _______, KC_P7 , KC_P8 , KC_P9 , KC_PPLS, KC_BSPC , + _______, DE_ACUT, KC_HOME, KC_PGDN, KC_END , KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 , KC_PDOT, _______ , + _______, KC_PLUS, KC_PIPE, KC_UNDS, _______, _______, KC_P0 , KC_P1 , KC_P2 , KC_P3 , KC_PENT, KC_KP_EQUAL, + + _______, KC_RGHT, _______, _______, _______, _______, + KC_LEFT, _______, RESET , _______ + ), + + [_RAISE] = LAYOUT_split_4x6_5( + KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , + _______, _______, _______, KC_UP , _______, _______, KC_LALT, KC_INS , KC_NLCK , KC_CALC, KC_PSCREEN, KC_MUTE, + _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_ENT , KC_MSEL, KC_MPRV , KC_MPLY , KC_MNXT, _______ , KC_VOLU, + _______, _______, _______, _______, _______, _______, DE_HASH, KC_MYCM , _______ , _______, KC_SLCK , KC_VOLD, + + _______, _______, _______, _______, KC_UP , _______, + _______, _______, _______, KC_DOWN + ), + + [_ADJUST] = LAYOUT_split_4x6_5( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, RESET , _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, DF(_GAME), _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, DF(_BASE), _______, _______, _______, _______, _______, _______, + + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______ + ), +}; + + +layer_state_t layer_state_set_user(layer_state_t state) { + return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); +} diff --git a/keyboards/bastardkb/scylla/keymaps/german_gaming/readme.md b/keyboards/bastardkb/scylla/keymaps/german_gaming/readme.md new file mode 100644 index 0000000000..14de01ac41 --- /dev/null +++ b/keyboards/bastardkb/scylla/keymaps/german_gaming/readme.md @@ -0,0 +1,24 @@ +![German Gaming Layout Image](https://i.imgur.com/0y938rGh.png) + +Despite being less accurate, the columns in the image are shifted up and down to avoid the [Hermann grid illusion](https://en.wikipedia.org/wiki/Grid_illusion). +​ + +# German Gaming Layout +​ +This layout was build with gaming in mind for a german user. As a result I added a "game" layer that shifts the keys of the left side (below the number row) one to the right, so that WASD is on the ESDF keys. The reason this layer was added is that using WASD is less comfortable with a contoured Dactyl-style keyboard, where each column is adjusted for the respective fingers. ESDF also has the upside of allowing one to stay in the home row. Note that the rightmost column of the default layer, so TGB, ends up in the leftmost position. + +Of course, one could just be forced to reconfigure every game, but that wouldn't be very user-friendly and likely reduce satisfaction with the layout. When in game mode, the right side of keys also features arrow keys on IJKL. + + +## Raise and Lower layer + +Additionally, via the RAISE layer, it's always possible to access the arrow keys, which are often used in game menues. On the exact same position one can access Home, End, Page Down and Page Up via the LOWER layer. The left side of the LOWER layer also contains the few characters that would usually have their own key in a traditional german keyboard. + +The right side features various media keys in the RAISE layer, and a numpad in the LOWER layer. + + +## Firmware + +The keyboard can be put into Reset mode (for flashing a keymap) by pressing **LOWER** + Super (also known as Windows key), or by pressing **LOWER** + **RAISE** + R. + +`MOUSEKEY_ENABLE` was set to `no` for this keymap, since it wasn't used and the size of the firmware ended up being too large. diff --git a/keyboards/bastardkb/scylla/keymaps/german_gaming/rules.mk b/keyboards/bastardkb/scylla/keymaps/german_gaming/rules.mk new file mode 100644 index 0000000000..0a5b666e85 --- /dev/null +++ b/keyboards/bastardkb/scylla/keymaps/german_gaming/rules.mk @@ -0,0 +1 @@ +MOUSEKEY_ENABLE = no diff --git a/keyboards/bastardkb/scylla/keymaps/xyverz/config.h b/keyboards/bastardkb/scylla/keymaps/xyverz/config.h new file mode 100644 index 0000000000..d7baf99376 --- /dev/null +++ b/keyboards/bastardkb/scylla/keymaps/xyverz/config.h @@ -0,0 +1,33 @@ +/* +This is the c configuration file for the keymap + +Copyright 2012 Jun Wako +Copyright 2015 Jack Humbert + +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 . +*/ + +#pragma once + +/* Select hand configuration */ +// #define MASTER_LEFT +// #define MASTER_RIGHT +#define EE_HANDS + +#define TAPPING_FORCE_HOLD +#define TAPPING_TERM 300 +#define PERMISSIVE_HOLD +#define IGNORE_MOD_TAP_INTERRUPT +#define LEADER_PER_KEY_TIMING +#define LEADER_TIMEOUT 300 \ No newline at end of file diff --git a/keyboards/bastardkb/scylla/keymaps/xyverz/keymap.c b/keyboards/bastardkb/scylla/keymaps/xyverz/keymap.c new file mode 100644 index 0000000000..b8f70bdc9b --- /dev/null +++ b/keyboards/bastardkb/scylla/keymaps/xyverz/keymap.c @@ -0,0 +1,100 @@ +/* + * Copyright 2021 Ian Sterling + * + * 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 . + */ + +#include QMK_KEYBOARD_H + +enum layer_names { _WINDOWS, _MAC, _LOWER, _RAISE, _ADJUST }; + +enum custom_keycodes { WINDOWS = SAFE_RANGE, MAC, ADJUST }; + +// Aliases to keep the keymap tidy +#define GUIBSPC GUI_T(KC_BSPC) // GUI when held, BSPC when tapped. +#define RGB_SWR RGB_M_SW // Swirl Animation alias +#define RGB_SNK RGB_M_SN // Snake Animation alias +#define MACLOCK LGUI(LCTL(KC_Q)) // Lock my MacBook! +#define WINLOCK LGUI(KC_L) // Lock my PC! +#define DELGUI GUI_T(KC_DEL) +#define RAISE MO(_RAISE) +#define LOWER MO(_LOWER) + + +#define MACLOCK LGUI(LCTL(KC_Q)) // Lock my MacBook! + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[_WINDOWS] = LAYOUT_split_4x6_5( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, + KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, + KC_GRV, 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, KC_RSFT, + LOWER, KC_BSPC, KC_DEL, KC_ENT, KC_SPC, RAISE, + KC_LCTL, KC_LALT, KC_RGUI, KC_RCTL + ), + +[_MAC] = LAYOUT_split_4x6_5( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, + KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, + KC_GRV, 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, KC_RSFT, + LOWER, KC_BSPC, DELGUI, KC_ENT, KC_SPC, RAISE, + KC_LCTL, KC_LALT, KC_RGUI, KC_RCTL + ), + +[_LOWER] = LAYOUT_split_4x6_5( + 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, _______, _______, KC_UP, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______, + KC_CAPS, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_HOME, KC_PGUP, _______, KC_PLUS, KC_LCBR, KC_RCBR, _______, + _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_END, KC_PGDN, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, + _______, KC_DEL, _______, _______, _______, _______, + MACLOCK, _______, _______, WINLOCK + ), + +[_RAISE] = LAYOUT_split_4x6_5( + KC_F11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F12, + _______, _______, _______, KC_UP, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, RESET, + KC_CAPS, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_HOME, KC_PGUP, _______, KC_EQL, KC_LBRC, KC_RBRC, _______, + _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_END, KC_PGDN, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, + _______, KC_DEL, _______, _______, _______, _______, + MACLOCK, _______, _______, WINLOCK + ), + +[_ADJUST] = LAYOUT_split_4x6_5( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, WINDOWS, MAC, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______ + ), + +}; + +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); }; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + if (record->event.pressed) { + switch (keycode) { + case WINDOWS: + set_single_persistent_default_layer(_WINDOWS); + return false; + case MAC: + set_single_persistent_default_layer(_MAC); + return false; + } + } + return true; +} -- cgit v1.2.3