diff options
Diffstat (limited to 'keyboards/wilba_tech/rama_works_m6_a/keymaps/krusli')
-rw-r--r-- | keyboards/wilba_tech/rama_works_m6_a/keymaps/krusli/README.md | 28 | ||||
-rw-r--r-- | keyboards/wilba_tech/rama_works_m6_a/keymaps/krusli/keymap.c | 71 |
2 files changed, 99 insertions, 0 deletions
diff --git a/keyboards/wilba_tech/rama_works_m6_a/keymaps/krusli/README.md b/keyboards/wilba_tech/rama_works_m6_a/keymaps/krusli/README.md new file mode 100644 index 0000000000..7c1fa38fcb --- /dev/null +++ b/keyboards/wilba_tech/rama_works_m6_a/keymaps/krusli/README.md @@ -0,0 +1,28 @@ +# krusli's RAMA M6-A Layout + +Personal keymap for the RAMA M6-A. + +Keymap was from my own port for the M6-A before official support was added, thus the backlighting code is not ported yet from the official default keymap. + +Top-right button acts as a "toggle between layers" button. Layer 0 -> Layer 1 -> Layer 2 -> Layer 0 -> ... + +* Layer 0: Git and Discord shortcuts +* Layer 1: Media playback and volume controls +* Layer 2: Osu! gamepad layer + +## Helpful alternative keymaps (WIP) + +### Arrow cluster + +Use [karabiner-elements](https://github.com/tekezo/Karabiner-Elements) on macOS so that the state of the modifiers (shift, caps lock) are synchronised between keyboards (for shift + arrow key text selection, for example). It's also a handy tool for customising keyboard behaviour on a Mac. + +On Windows/Linux modifier state should be shared between all keyboards by default. + +Installation: install [homebrew](https://brew.sh) and run `brew install Caskroom/cask/karabiner-elements`. + +```C +LAYOUT( + KC_ESC, KC_UP, TO(_LAYER0), + KC_LEFT, KC_DOWN, KC_RIGHT +) +``` diff --git a/keyboards/wilba_tech/rama_works_m6_a/keymaps/krusli/keymap.c b/keyboards/wilba_tech/rama_works_m6_a/keymaps/krusli/keymap.c new file mode 100644 index 0000000000..410229ae47 --- /dev/null +++ b/keyboards/wilba_tech/rama_works_m6_a/keymaps/krusli/keymap.c @@ -0,0 +1,71 @@ +#include QMK_KEYBOARD_H +#include "action_layer.h" +#include "eeconfig.h" + +extern keymap_config_t keymap_config; + +// 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. + +enum layers +{ + _LAYER0, + _LAYER1, + _LAYER2 +}; + +enum custom_keycodes +{ + GIT_ADD = SAFE_RANGE, + GIT_COMMIT, + GIT_PUSH, + MUTE, + DEAFEN +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) +{ + if (record->event.pressed) + { + switch (keycode) + { + case GIT_ADD: + SEND_STRING("git add ." SS_TAP(X_ENTER)); + break; + case GIT_COMMIT: + SEND_STRING("git commit -m " SS_DOWN(X_LSHIFT) SS_TAP(X_QUOTE) SS_UP(X_LSHIFT)); + break; + case GIT_PUSH: + SEND_STRING("git push" SS_TAP(X_ENTER)); + break; + case MUTE: + SEND_STRING(SS_LGUI(SS_LSFT("M"))); + break; + case DEAFEN: + SEND_STRING(SS_LGUI(SS_LSFT("D"))); + break; + return false; + } + } + return true; +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_LAYER0] = LAYOUT( + MUTE, DEAFEN, TO(_LAYER1), + GIT_ADD, GIT_COMMIT, GIT_PUSH), + [_LAYER1] = LAYOUT( + KC_VOLD, KC_VOLU, TO(_LAYER2), + KC_MRWD, KC_MPLY, KC_MNXT), + [_LAYER2] = LAYOUT( + KC_ESC, KC_UP, TO(_LAYER0), + KC_Z, KC_X, KC_SPACE)}; + +void matrix_init_user(void) +{ +#ifdef BACKLIGHT_ENABLE + backlight_level(0); +#endif +} |