diff options
Diffstat (limited to 'keyboards/rama/m6_a/keymaps/krusli')
-rw-r--r-- | keyboards/rama/m6_a/keymaps/krusli/README.md | 26 | ||||
-rw-r--r-- | keyboards/rama/m6_a/keymaps/krusli/keymap.c | 72 |
2 files changed, 98 insertions, 0 deletions
diff --git a/keyboards/rama/m6_a/keymaps/krusli/README.md b/keyboards/rama/m6_a/keymaps/krusli/README.md new file mode 100644 index 000000000..771b47a47 --- /dev/null +++ b/keyboards/rama/m6_a/keymaps/krusli/README.md @@ -0,0 +1,26 @@ +# 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 +KEYMAP( + KC_ESC, KC_UP, TO(_LAYER0), + KC_LEFT, KC_DOWN, KC_RIGHT +) +``` diff --git a/keyboards/rama/m6_a/keymaps/krusli/keymap.c b/keyboards/rama/m6_a/keymaps/krusli/keymap.c new file mode 100644 index 000000000..679d0bc43 --- /dev/null +++ b/keyboards/rama/m6_a/keymaps/krusli/keymap.c @@ -0,0 +1,72 @@ +#include "../../m6_a.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; +}; + +#define _______ KC_TRNS +#define XXXXXXX KC_NO + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_LAYER0] = KEYMAP( + MUTE, DEAFEN, TO(_LAYER1), + GIT_ADD, GIT_COMMIT, GIT_PUSH + ), + [_LAYER1] = KEYMAP( + KC_VOLD, KC_VOLU, TO(_LAYER2), + KC_MRWD, KC_MPLY, KC_MNXT + ), + [_LAYER2] = KEYMAP( + KC_ESC, KC_UP, TO(_LAYER0), + KC_Z, KC_X, KC_SPACE + ) +}; + +void matrix_init_user(void) { + #ifdef BACKLIGHT_ENABLE + backlight_level(0); + #endif +} |