From 300cf977c93b9b37a57643ddbfa8d0bd13b29e18 Mon Sep 17 00:00:00 2001 From: Daniel Rose Date: Fri, 8 Jun 2018 22:06:14 +0200 Subject: [PATCH] citadel: new keymap for pegasushoof (#3146) [citadel] Markdown syntax: Added double spaces for line breaking [citadel] Added line breaks for keyboard layout, fixed headings. --- .../pegasushoof/keymaps/citadel/config.h | 14 ++ .../pegasushoof/keymaps/citadel/keymap.c | 128 ++++++++++++++++++ .../pegasushoof/keymaps/citadel/readme.md | 75 ++++++++++ .../pegasushoof/keymaps/citadel/rules.mk | 22 +++ 4 files changed, 239 insertions(+) create mode 100644 keyboards/pegasushoof/keymaps/citadel/config.h create mode 100644 keyboards/pegasushoof/keymaps/citadel/keymap.c create mode 100644 keyboards/pegasushoof/keymaps/citadel/readme.md create mode 100644 keyboards/pegasushoof/keymaps/citadel/rules.mk diff --git a/keyboards/pegasushoof/keymaps/citadel/config.h b/keyboards/pegasushoof/keymaps/citadel/config.h new file mode 100644 index 0000000000..e8eafe2e17 --- /dev/null +++ b/keyboards/pegasushoof/keymaps/citadel/config.h @@ -0,0 +1,14 @@ +#ifndef CONFIG_USER_H +#define CONFIG_USER_H + +#include "../../config.h" + +/* overridden settings: */ + +#undef PRODUCT +#define PRODUCT Pegasus Hoof Citadel + +/* necessary option for this keymap, because CAPS is redefined in Layer 0 */ +#define PREVENT_STUCK_MODIFIERS + +#endif diff --git a/keyboards/pegasushoof/keymaps/citadel/keymap.c b/keyboards/pegasushoof/keymaps/citadel/keymap.c new file mode 100644 index 0000000000..382854de9b --- /dev/null +++ b/keyboards/pegasushoof/keymaps/citadel/keymap.c @@ -0,0 +1,128 @@ +/* Copyright 2018 Daniel Rose + * + * 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 "pegasushoof.h" + +/* Allow shortcuts for combos like RALT(KC_RBRC) that don't take up more than 7 characters: */ +#define G(kc) RALT(KC_##kc) +#define A(kc) LALT(KC_##kc) +#define C(kc) LCTL(KC_##kc) +#undef S /* Original shortcut (quantum_keycodes.h) takes full-sized keycodes: too long! */ +#define S(kc) LSFT(KC_##kc) +#define CTALDEL LCTL(LALT(KC_DEL)) + +enum layers { + DEF, + FUN, + RES, +}; + +enum tap_dance { + AF4, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Layer 0: default layer (ISO-DE) + * .----. .-------------------. .-------------------. .-------------------. .--------------. + * |Esc | |F1 |F2 |F3 |F4 | |F5 |F6 |F7 |F8 | |F9 |F10 |F11 |F12 | |PrSc|SLck|2Tp:| + * | | | | | | | | | | | | | | | | | |SyRq| |A+F4| + * '----' '-------------------' '-------------------' '-------------------' '--------------' + * .------------------------------------------------------------------------. .--------------. + * |° |! |" |§ |$ |% |& |/ |( |) |= |? |` |Backspa| |Ins |Home|PgUp| + * |^ |1 |2 ²|3 ³|4 |5 |6 |7 {|8 [|9 ]|0 }|ß \|´ | | | | | | + * |------------------------------------------------------------------------| |--------------| + * |Tab |Q |W |E |R |T |Z |U |I |O |P |Ü |* | E | |Del |End |PgDn| + * | | | | €| | | | | | | | |+ ~| n | | | | | + * |------------------------------------------------------------------\ t | '--------------' + * |Fn: |A |S |D |F |G |H |J |K |L |Ö |Ä |' | e | + * |Layer 2| | | | | | | | | | | |# | r | + * |------------------------------------------------------------------------| .----. + * |Shift|> |Y |X |C |V |B |N |M |; |: |_ |Shift | |Up | + * | |< ¦| | | | | | | µ|, |. |- | | | | + * |------------------------------------------------------------------------| .--------------. + * |Ctrl |Super|Alt | |AltGr|Alt |Fn: |Ctrl | |Left|Down|Righ| + * | | | | | | |Lay 2| | | | | | + * '------------------------------------------------------------------------' '--------------' + * NUHS = true position of KC_NUHS + */ +[DEF] = KEYMAP( \ + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,KC_SLCK,TD(AF4), \ + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_BSPC, KC_INS, KC_HOME,KC_PGUP, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC,KC_NUHS, KC_DEL, KC_END, KC_PGDN, \ + MO(FUN),KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT,/*NUHS*/KC_ENT, \ + KC_LSFT,KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \ + KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_LALT,MO(FUN),KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT), + + /* Layer 1: function layer + * .----. .-------------------. .-------------------. .-------------------. .--------------. + * |Ctl+| |My |WWW:|Calc|Medi| |Mus:|Mus:|Mus:|Mus:| |Vol:|Vol:|Vol:|See:| | | |Paus| + * |A+De| |Comp|Home| |Play| |Prev|Next|Paus|Stop| |Mute|Down|Up |[3] | | | |Brea| + * '----' '-------------------' '-------------------' '-------------------' '--------------' + * .------------------------------------------------------------------------. .--------------. + * | | | | | | | | | | | | | | | | | |Mou:| + * | | | | | | | |{ |[ |] |} |\ | | | | | |WhUp| + * |------------------------------------------------------------------------| |--------------| + * | | | | | | | | | | | | |~ | | | | |Mou:| + * | | | | | | | | | | | | | | | | | |WhDn| + * |------------------------------------------------------------------\ | '--------------' + * |CapsLck|Mou:|Mou:| | | | | | | | | | | | + * | |Fast|Slow| | | | | | | | | | | | + * |------------------------------------------------------------------------| .----. + * | | | | | | | | |µ | | | | | |Mou:| + * | | | | | | | | | | | | | | |Up | + * |------------------------------------------------------------------------| .--------------. + * |Mous:|Mous:| | | |Super|App | | |Mou:|Mou:|Mou:| + * |Bttn2|Bttn1| | | | | | | |Left|Down|Righ| + * '------------------------------------------------------------------------' '--------------' + * + */ +[FUN] = KEYMAP( \ + CTALDEL, KC_MYCM,KC_WHOM,KC_CALC,KC_MSEL,KC_MPRV,KC_MNXT,KC_MPLY,KC_MSTP,KC_MUTE,KC_VOLD,KC_VOLU,MO(RES), _______,KC_SLCK,KC_PAUS, \ + _______,_______,_______,_______,_______,_______,_______,G(7), G(8), G(9), G(0), G(MINS),_______,_______, _______,_______,KC_WH_U, \ + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,G(RBRC),_______, _______,_______,KC_WH_D, \ + KC_CAPS,KC_ACL2,KC_ACL0,_______,_______,_______,_______,_______,_______,_______,_______,_______,/*NUHS*/_______, \ + _______,_______,_______,_______,_______,_______,_______,_______,G(M), _______,_______,_______, _______, KC_MS_U, \ + KC_BTN2,KC_BTN1,_______, _______, _______,KC_RGUI,KC_APP ,_______, KC_MS_L,KC_MS_D,KC_MS_R), + + +/* Layer 3: Reset layer (prevents accidental resets) */ +[RES] = KEYMAP( \ + _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,_______, \ + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,_______, \ + _______,_______,_______,_______,RESET, _______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,_______, \ + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,/*NUHS*/_______, \ + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, _______, \ + _______,_______,_______, _______, _______,_______,_______,_______, _______,_______,_______), +}; + +qk_tap_dance_action_t tap_dance_actions[] = { + /* Tap once: nothing. Tap twice: Alt+F4 */ + [AF4] = ACTION_TAP_DANCE_DOUBLE(XXXXXXX,A(F4)), +}; + +void led_set_user(uint8_t usb_led) { + if (usb_led & (1 << USB_LED_CAPS_LOCK)) { + ph_caps_led_on(); + } else { + ph_caps_led_off(); + } + + if (usb_led & (1 << USB_LED_SCROLL_LOCK)) { + ph_sclk_led_on(); + } else { + ph_sclk_led_off(); + } +} diff --git a/keyboards/pegasushoof/keymaps/citadel/readme.md b/keyboards/pegasushoof/keymaps/citadel/readme.md new file mode 100644 index 0000000000..3618bae861 --- /dev/null +++ b/keyboards/pegasushoof/keymaps/citadel/readme.md @@ -0,0 +1,75 @@ +# Citadel keymap for pegasushoof + +Designed for ISO-DE and similar ISO layouts. + +The central idea of this keymap is to avoid unergonomic key combos that force the user to either press +multiple keys with one hand or to use the left hand for right-sided keys. For instance, ISO-DE users +have to press `AltGr`+`7` to type _{_. The keymap allows ergonomic access to the right-sided keys of the +German AltGr-layer by turning `Caps Lock` into a hybrid Fn/AltGr-key. It can easily be adapted for other +ISO layouts. + +The _Function_ layer also offers mouse emulation and function/media keys in the F-Row. + +`Pause/Break` is used as a safe _close key_: A _single tap_ does nothing, a _double tap_ executes ALT+F4. + +Named after the homonymous space station from _Mass Effect_. Made by [Daniel Rose](https://github.com/droseger/). + +## [1] Layers + +### Layer 1 (Default) + .----. .-------------------. .-------------------. .-------------------. .--------------. + |Esc | |F1 |F2 |F3 |F4 | |F5 |F6 |F7 |F8 | |F9 |F10 |F11 |F12 | |PrSc|SLck|2Tp:| + | | | | | | | | | | | | | | | | | |SyRq| |A+F4| + '----' '-------------------' '-------------------' '-------------------' '--------------' + .------------------------------------------------------------------------. .--------------. + |° |! |" |§ |$ |% |& |/ |( |) |= |? |` |Backspa| |Ins |Home|PgUp| + |^ |1 |2 ²|3 ³|4 |5 |6 |7 {|8 [|9 ]|0 }|ß \|´ | | | | | | + |------------------------------------------------------------------------| |--------------| + |Tab |Q |W |E |R |T |Z |U |I |O |P |Ü |* | E | |Del |End |PgDn| + | | | | €| | | | | | | | |+ ~| n | | | | | + |------------------------------------------------------------------\ t | '--------------' + |Fn: |A |S |D |F |G |H |J |K |L |Ö |Ä |' | e | + |Layer 2| | | | | | | | | | | |# | r | + |------------------------------------------------------------------------| .----. + |Shift|> |Y |X |C |V |B |N |M |; |: |_ |Shift | |Up | + | |< ¦| | | | | | | µ|, |. |- | | | | + |------------------------------------------------------------------------| .--------------. + |Ctrl |Super|Alt | |AltGr|Alt |Fn: |Ctrl | |Left|Down|Righ| + | | | | | | |Lay 2| | | | | | + '------------------------------------------------------------------------' '--------------' + +### Layer 2 (Function) + .----. .-------------------. .-------------------. .-------------------. .--------------. + |Ctl+| |My |WWW:|Calc|Medi| |Mus:|Mus:|Mus:|Mus:| |Vol:|Vol:|Vol:|See:| | | |Paus| + |A+De| |Comp|Home| |Play| |Prev|Next|Paus|Stop| |Mute|Down|Up |[3] | | | |Brea| + '----' '-------------------' '-------------------' '-------------------' '--------------' + .------------------------------------------------------------------------. .--------------. + | | | | | | | | | | | | | | | | | |Mou:| + | | | | | | | |{ |[ |] |} |\ | | | | | |WhUp| + |------------------------------------------------------------------------| |--------------| + | | | | | | | | | | | | |~ | | | | |Mou:| + | | | | | | | | | | | | | | | | | |WhDn| + |------------------------------------------------------------------\ | '--------------' + |CapsLck|Mou:|Mou:| | | | | | | | | | | | + | |Fast|Slow| | | | | | | | | | | | + |------------------------------------------------------------------------| .----. + | | | | | | | | |µ | | | | | |Mou:| + | | | | | | | | | | | | | | |Up | + |------------------------------------------------------------------------| .--------------. + |Mous:|Mous:| | | |Super|App | | |Mou:|Mou:|Mou:| + |Bttn2|Bttn1| | | | | | | |Left|Down|Righ| + '------------------------------------------------------------------------' '--------------' + +Layer 3 exists solely to prevent users from accidentally activating boot mode: `R` is redefined +as `RESET` key [3]. + +## [2] How to build and install +1) Prerequisite: install the necessary [build tools](https://docs.qmk.fm/#/getting_started_build_tools) +such as [dfu-programmer](https://github.com/dfu-programmer/dfu-programmer). + - You might need to [add udev rules](https://docs.qmk.fm/#/faq_build?id=can39t-program-on-linux) under Linux. +2) To test if the keymap compiles, simply run `make pegasushoof:citadel` +3) Enter the `qmk_firmware` root directory and run `make pegasushoof:citadel:dfu` +4) Reset controller to _Boot mode_ by pressing the `RESET` key or by using a magnet. + +## [3] How to access Boot mode after install +Press `Fn+F12+R` diff --git a/keyboards/pegasushoof/keymaps/citadel/rules.mk b/keyboards/pegasushoof/keymaps/citadel/rules.mk new file mode 100644 index 0000000000..0dd8a79f4e --- /dev/null +++ b/keyboards/pegasushoof/keymaps/citadel/rules.mk @@ -0,0 +1,22 @@ +# Build Options +# change to "no" to disable the options +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = no # Console for debug(+400) +COMMAND_ENABLE = no # Commands for debug and configuration +CUSTOM_MATRIX = yes # Custom matrix file for the Pegasus Hoof due to the 2x74HC42 +NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +MIDI_ENABLE = no # MIDI controls +AUDIO_ENABLE = no # Audio output on port C6 +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. +TAP_DANCE_ENABLE = yes # see https://docs.qmk.fm/#/feature_tap_dance (+1000) + + +ifndef QUANTUM_DIR + include ../../../../Makefile +endif