Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added german_gaming keymap for hidtech/bastyl #11446

Merged
merged 3 commits into from
Feb 10, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
90 changes: 90 additions & 0 deletions keyboards/hidtech/bastyl/keymaps/german_gaming/keymap.c
Original file line number Diff line number Diff line change
@@ -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 <http://www.gnu.org/licenses/>.
*/


#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(
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(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
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(
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(
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(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, 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);
}
24 changes: 24 additions & 0 deletions keyboards/hidtech/bastyl/keymaps/german_gaming/readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
![German Gaming Layout Image](https://i.imgur.com/0y938rG.png)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
![German Gaming Layout Image](https://i.imgur.com/0y938rG.png)
![German Gaming Layout Image](https://i.imgur.com/0y938rGh.png)

Copy link
Author

@CreamyCookie CreamyCookie Jan 30, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All the other changes make sense to me, but this seems unnecessary and counterproductive.

The file size is only 283 KiB and screen resolutions are constantly increasing. Halving the size makes this image and the text fuzzy and harder to read.

Am I missing something, and if not, is this change necessary?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@fauxpark Thanks again for the review! 👍

Is this a blocking change request?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The file size is only 283 KiB and screen resolutions are constantly increasing. Halving the size makes this image and the text fuzzy and harder to read.

Am I missing something, and if not, is this change necessary?

I don't know if fauxpark considers this a blocking issue, but GitHub's not going to display this image at anything larger than about 1,000 pixels wide anywhere that a user would see it, no matter how large the source image is.

Copy link
Author

@CreamyCookie CreamyCookie Feb 8, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@noroadsleft That does not seem to be true. Check out the way it is rendered here on a HiDPI screen:

https://github.com/qmk/qmk_firmware/blob/ecbef0f66440674cca7dac8ed6e3e940be12b6bb/keyboards/hidtech/bastyl/keymaps/german_gaming/readme.md

or

https://github.com/CreamyCookie/qmk_firmware/blob/german_gaming_keymap_for_bastyl/keyboards/hidtech/bastyl/keymaps/german_gaming/readme.md

Screenshot created using Firefox's screenshot tool (on a 1440p screen):

hidpi

Now here's the fuzzy half-size image again ( https://i.imgur.com/0y938rGh.png ):

0y938rGh

Codec: Also important to note is that the half-size image is not just a half-size PNG, it's actually a lossy JPEG, which is the reason for the washed out look.

Even if it was true that GitHub currently downsized all images or limited the size via the layout, there's no reason to believe that this will still be the case in a couple years, especially when screen resolutions like 4K are getting really common. But, of course, 2339 x 1654 is not even that large.

I want to be clear. It's not a big issue. I'm happy for this to be merged either way, but I also believe that the change is actually counter productive for any potential user and thus also for the QMK community. (Of course, nobody might ever use the keymap, but who knows.)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hm, I guess this is hardware dependent; I wasn't aware GitHub did anything differently with page layout/rendering in that regard.

I personally don't find the smaller image to be so much more fuzzy as to be unreadable, but I'm undoubtedly not the best person to ask as I have 20/20 vision.

Also good point about the fact that GitHub may change this rendering in future as higher-resolution display become more common (I'm on a 24" 1080p screen).


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 <kbd>WASD</kbd> is on the <kbd>ESDF</kbd> keys. The reason this layer was added is that using <kbd>WASD</kbd> is less comfortable with a contoured Dactyl-style keyboard, where each column is adjusted for the respective fingers. <kbd>ESDF</kbd> also has the upside of allowing one to stay in the home row. Note that the rightmost column of the default layer, so <kbd>TGB</kbd>, 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 <kbd>IJKL</kbd>.


## 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 <kbd>Home</kbd>, <kbd>End</kbd>, <kbd>Page Down</kbd> and <kbd>Page Up</kbd> 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 <kbd>**LOWER**</kbd> + <kbd>Super</kbd> (also known as Windows key), or by pressing <kbd>**LOWER**</kbd> + <kbd>**RAISE**</kbd> + <kbd>R</kbd>.

`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.
1 change: 1 addition & 0 deletions keyboards/hidtech/bastyl/keymaps/german_gaming/rules.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
MOUSEKEY_ENABLE = no