From 7f5656996ca2f5a62a148ef9165d0681ba806f07 Mon Sep 17 00:00:00 2001 From: William Lindvall Date: Mon, 15 Jun 2020 03:26:58 -0700 Subject: [PATCH] [Keymap] Add "shwilliam" Preonic keymap (#9409) Co-authored-by: Ryan --- keyboards/preonic/keymaps/shwilliam/config.h | 19 ++ keyboards/preonic/keymaps/shwilliam/keymap.c | 299 ++++++++++++++++++ keyboards/preonic/keymaps/shwilliam/readme.md | 40 +++ keyboards/preonic/keymaps/shwilliam/rules.mk | 1 + 4 files changed, 359 insertions(+) create mode 100644 keyboards/preonic/keymaps/shwilliam/config.h create mode 100644 keyboards/preonic/keymaps/shwilliam/keymap.c create mode 100644 keyboards/preonic/keymaps/shwilliam/readme.md create mode 100644 keyboards/preonic/keymaps/shwilliam/rules.mk diff --git a/keyboards/preonic/keymaps/shwilliam/config.h b/keyboards/preonic/keymaps/shwilliam/config.h new file mode 100644 index 0000000000..959f94fe2b --- /dev/null +++ b/keyboards/preonic/keymaps/shwilliam/config.h @@ -0,0 +1,19 @@ +#pragma once + +#ifdef AUDIO_ENABLE + #define STARTUP_SONG SONG(PREONIC_SOUND) + // #define STARTUP_SONG SONG(NO_SOUND) +#endif + +#define MUSIC_MASK (keycode != KC_NO) + +/* prevent use of disabled MIDI features in the keymap */ +//#define MIDI_ENABLE_STRICT 1 + +#define MIDI_BASIC + +/* enable advanced MIDI features */ +//#define MIDI_ADVANCED + +/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ +//#define MIDI_TONE_KEYCODE_OCTAVES 2 diff --git a/keyboards/preonic/keymaps/shwilliam/keymap.c b/keyboards/preonic/keymaps/shwilliam/keymap.c new file mode 100644 index 0000000000..c9d6cbab42 --- /dev/null +++ b/keyboards/preonic/keymaps/shwilliam/keymap.c @@ -0,0 +1,299 @@ +/* Copyright 2020 William Lindvall + * + * 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 custom_keycodes { + LIQUOT = SAFE_RANGE, + RIQUOT, + LQUOT, + RQUOT, + LTITLE, + RTITLE, + TBULLET, + FBULLET, + FN_ARROW, + MAIL, + GITHUB, + HEART, + E_LCRY, + E_FLOWER, + E_SHEART, + E_KISS, + E_PHEART, + E_NOGOOD, + E_PARTY, + E_ROCKET, + E_SHRUG, + E_WIZARD, + E_OKBUST, + E_OKHAND, + E_SLEEP, + E_HUNNED, + E_2HEART +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case LIQUOT: + if (record->event.pressed) { + SEND_STRING(SS_LALT("300a")); + } + return false; + case RIQUOT: + if (record->event.pressed) { + SEND_STRING(SS_LALT("300b")); + } + return false; + case LQUOT: + if (record->event.pressed) { + SEND_STRING(SS_LALT("300c")); + } + return false; + case RQUOT: + if (record->event.pressed) { + SEND_STRING(SS_LALT("300d")); + } + return false; + case LTITLE: + if (record->event.pressed) { + SEND_STRING(SS_LALT("3010")); + } + return false; + case RTITLE: + if (record->event.pressed) { + SEND_STRING(SS_LALT("3011")); + } + return false; + case TBULLET: + if (record->event.pressed) { + SEND_STRING(SS_LALT("2023")); + } + return false; + case FBULLET: + if (record->event.pressed) { + SEND_STRING(SS_LALT("2055")); + } + return false; + case MAIL: + if (record->event.pressed) { + SEND_STRING("w-lindvall@outlook.com"); + } + return false; + case GITHUB: + if (record->event.pressed) { + SEND_STRING("https://github.com/shwilliam"); + } + return false; + case FN_ARROW: + if (record->event.pressed) { + SEND_STRING("=>"); + } + return false; + case HEART: + if (record->event.pressed) { + SEND_STRING(SS_LALT("2661")); + } + return false; + case E_LCRY: + if (record->event.pressed) { + SEND_STRING(SS_LALT("D83D+DE02")); + } + return false; + case E_FLOWER: + if (record->event.pressed) { + SEND_STRING(SS_LALT("D83C+DF38")); + } + return false; + case E_SHEART: + if (record->event.pressed) { + SEND_STRING(SS_LALT("D83D+DC96")); + } + return false; + case E_KISS: + if (record->event.pressed) { + SEND_STRING(SS_LALT("D83D+DE18")); + } + return false; + case E_PHEART: + if (record->event.pressed) { + SEND_STRING(SS_LALT("D83D+DC9C")); + } + return false; + case E_NOGOOD: + if (record->event.pressed) { + SEND_STRING(SS_LALT("D83D+DE45")); + } + return false; + case E_PARTY: + if (record->event.pressed) { + SEND_STRING(SS_LALT("D83C+DF8A")); + } + return false; + case E_ROCKET: + if (record->event.pressed) { + SEND_STRING(SS_LALT("D83D+DE80")); + } + return false; + case E_SHRUG: + if (record->event.pressed) { + SEND_STRING(SS_LALT("D83E+DD37")); + } + return false; + case E_WIZARD: + if (record->event.pressed) { + SEND_STRING(SS_LALT("D83E+DDD9")); + } + return false; + case E_OKBUST: + if (record->event.pressed) { + SEND_STRING(SS_LALT("D83D+DE46")); + } + return false; + case E_OKHAND: + if (record->event.pressed) { + SEND_STRING(SS_LALT("D83D+DC4C")); + } + return false; + case E_SLEEP: + if (record->event.pressed) { + SEND_STRING(SS_LALT("D83D+DE34")); + } + return false; + case E_HUNNED: + if (record->event.pressed) { + SEND_STRING(SS_LALT("D83D+DCAF")); + } + return false; + case E_2HEART: + if (record->event.pressed) { + SEND_STRING(SS_LALT("D83D+DC95")); + } + return false; + } + return true; +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* qwerty + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | q | w | e | r | t | y | u | i | o | p | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | H/Esc| a | s | d | f | g | h | j | k | l | ' | Enter| + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| z | x | c | v | b | n | m | , | . | / | ; | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | PDown| PUp | Alt | OS | Opt | Raise| Space| Lower| Left | Down | Up | Right| + * `-----------------------------------------------------------------------------------' + */ + + [0] = LAYOUT_preonic_grid( + KC_GRV ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_DEL, + KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_BSPC, + C_S_T(KC_ESC),KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,KC_H ,KC_J ,KC_K ,KC_L ,KC_QUOT ,KC_ENT, + KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_SLSH ,KC_SCLN, + KC_PGDN ,KC_PGUP ,KC_LALT ,KC_LGUI ,KC_LCTL ,MO(1) ,KC_SPC ,MO(2) ,KC_LEFT ,KC_DOWN ,KC_UP ,KC_RGHT + ), + + /* raise + * ,-----------------------------------------------------------------------------------. + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) |SRight| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | Q | W | E | R | T | Y | U | I | O | P | SLeft| + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | A | S | D | F | G | H | J | K | L | " | \ | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Emoji| Z | X | C | V | B | N | M | < | > | ? | : | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | End | Home | ShAlt| ShOS | ShOpt|~~~~~~| Space| | | BDown| BUp | | + * `-----------------------------------------------------------------------------------' + */ + + [1] = LAYOUT_preonic_grid( + KC_TILD ,KC_EXLM ,KC_AT ,KC_HASH ,KC_DLR ,KC_PERC ,KC_CIRC ,KC_AMPR ,KC_ASTR ,KC_LPRN ,KC_RPRN ,SGUI(KC_RGHT), + KC_NO ,LSFT(KC_Q),LSFT(KC_W) ,LSFT(KC_E) ,LSFT(KC_R) ,LSFT(KC_T),LSFT(KC_Y),LSFT(KC_U),LSFT(KC_I),LSFT(KC_O),LSFT(KC_P),SGUI(KC_LEFT), + KC_NO ,LSFT(KC_A),LSFT(KC_S) ,LSFT(KC_D) ,LSFT(KC_F) ,LSFT(KC_G),LSFT(KC_H),LSFT(KC_J),LSFT(KC_K),LSFT(KC_L),KC_DQUO ,KC_BSLS, + OSL(3) ,LSFT(KC_Z),LSFT(KC_X) ,LSFT(KC_C) ,LSFT(KC_V) ,LSFT(KC_B),LSFT(KC_N),LSFT(KC_M),KC_LT ,KC_GT ,KC_QUES ,KC_COLN, + KC_END ,KC_HOME ,LSFT(KC_LALT),LSFT(KC_LGUI),LSFT(KC_LCTL),KC_TRNS ,KC_SPC ,KC_TRNS ,KC_NO ,KC_BRID ,KC_BRIU ,KC_NO + ), + + /* lower + * ,-----------------------------------------------------------------------------------. + * | ♡ | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ‣ | CLeft| MUp |CRight|MWDown| 【 | - | _ | | | = | + | DLeft| + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | MLeft| MDown|MRight| MWUp | 】 | Left | Down | Up | Right| ( | ) | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | 《 | 》 | 「 | 」 | ⁕ | | { | } | [ | ] | => | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Mail |GitHub| | | | | Space|~~~~~~| VMute| VDown| VUp | | + * `-----------------------------------------------------------------------------------' + */ + + [2] = LAYOUT_preonic_grid( + HEART ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_NO, + TBULLET ,KC_BTN1 ,KC_MS_U ,KC_BTN2 ,KC_WH_D ,LTITLE ,KC_MINS ,KC_UNDS ,KC_PIPE ,KC_EQL ,KC_PLUS ,LGUI(KC_BSPC), + KC_NO ,KC_MS_L ,KC_MS_D ,KC_MS_R ,KC_WH_U ,RTITLE ,KC_LEFT ,KC_DOWN ,KC_UP ,KC_RGHT ,KC_LPRN ,KC_RPRN, + KC_NO ,LIQUOT ,RIQUOT ,LQUOT ,RQUOT ,FBULLET ,KC_NO ,KC_LCBR ,KC_RCBR ,KC_LBRC ,KC_RBRC ,FN_ARROW, + MAIL ,GITHUB ,KC_NO ,KC_NO ,KC_NO ,KC_TRNS ,KC_BSPC ,KC_TRNS ,KC_MUTE ,KC_VOLD ,KC_VOLU ,KC_NO + ), + + /* emoji + * ,-----------------------------------------------------------------------------------. + * | | 1 | 2 | | | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | w | | r | | y | | | o | p | | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | s | | f | | h | | k | l | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | z | | c | | | n | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + * + * mnemonics: + * + * 100 - 💯 + * 2 hearts - 💕 + * cry - 😂 + * flower - 🌸 + * heart - 💖 + * kiss - 😘 + * love - 💜 + * no - 🙅 + * ok - 🙆 + * party - 🎊 + * rocket - 🚀 + * shrug - 🤷 + * wizard - 🧙 + * yes - 👌 + * zzz - 😴 + * + */ + + [3] = LAYOUT_preonic_grid( + KC_NO ,E_HUNNED,E_2HEART,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO, + KC_NO ,KC_NO ,E_WIZARD,KC_NO ,E_ROCKET,KC_NO ,E_OKHAND,KC_NO ,KC_NO ,E_OKBUST,E_PARTY ,KC_NO, + KC_NO ,KC_NO ,E_SHRUG ,KC_NO ,E_FLOWER,KC_NO ,E_SHEART,KC_NO ,E_KISS ,E_PHEART,KC_NO ,KC_NO, + KC_NO ,E_SLEEP ,KC_NO ,E_LCRY ,KC_NO ,KC_NO ,E_NOGOOD,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO, + KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO + ) + +}; diff --git a/keyboards/preonic/keymaps/shwilliam/readme.md b/keyboards/preonic/keymaps/shwilliam/readme.md new file mode 100644 index 0000000000..bb0f2e1797 --- /dev/null +++ b/keyboards/preonic/keymaps/shwilliam/readme.md @@ -0,0 +1,40 @@ +# [@shwilliam](https://github.com/shwilliam)'s Preonic Layout + +![shwilliam's preonic layout image](https://user-images.githubusercontent.com/38357771/84585088-dc536380-adc0-11ea-8378-6fb8ffbc6a8d.png) + +## Overview + +- Shift, backspace, raise and lower on thumbs +- Arrows on Vim keys +- Function arrow key (`=>`) +- Common parens one key from home-row +- Brightness/volume control +- Tap caps-lock for escape, hold for left control and left shift +- Alternative punctuation + - Corner brackets + - Double-angle brackets + - Lenticular brackets +- Select to left and right keys +- Emoji layer + +## Layers + +### QWERTY + +- Base layer; similar to default Preonic keymap + +### Raise + +- Mostly shifted QWERTY layer with alternative actions +- Brightness control + +### Lower + +- Common parentheses +- Arrows on Vim keys +- Mouse controls on WASD +- Volume control + +### Emoji + +- Emoji layout based on mnemonics diff --git a/keyboards/preonic/keymaps/shwilliam/rules.mk b/keyboards/preonic/keymaps/shwilliam/rules.mk new file mode 100644 index 0000000000..dcf16bef39 --- /dev/null +++ b/keyboards/preonic/keymaps/shwilliam/rules.mk @@ -0,0 +1 @@ +SRC += muse.c