From e85a6c7df0522b414eb090316551ecef5df8288c Mon Sep 17 00:00:00 2001 From: "Chow Castro, Marcos" Date: Mon, 19 Sep 2022 15:28:09 +0200 Subject: [PATCH] test de #include "keymap_german_mac_iso.h" defini una nueva libreria de teclas estilo qmk para el teclado aleman --- config/combos.dtsi | 65 +++++++++ config/corne.keymap | 43 +----- config/keymap_german_mac_iso.h | 258 +++++++++++++++++++++++++++++++++ config/macros.dtsi | 20 +++ 4 files changed, 345 insertions(+), 41 deletions(-) create mode 100644 config/combos.dtsi create mode 100644 config/keymap_german_mac_iso.h create mode 100644 config/macros.dtsi diff --git a/config/combos.dtsi b/config/combos.dtsi new file mode 100644 index 0000000..23cbca3 --- /dev/null +++ b/config/combos.dtsi @@ -0,0 +1,65 @@ +/* KEY POSITIONS + + ╭────────────────────╮ ╭────────────────────╮ + │ 0 1 2 3 4 │ │ 5 6 7 8 9 │ + │ 10 11 12 13 14 │ │ 15 16 17 18 19 │ + │ 20 21 22 23 24 ╰───╮ ╭───╯ 25 26 27 28 29 │ + ╰───────────╮ 30 31 32 │ │ 33 34 35 ╭───────────╯ + ╰────────────╯ ╰────────────╯ */ + +// TODO: en adaptacion +compatible = "zmk,combos"; + +#define COMBO(NAME, BINDINGS, KEYPOS, LAYERS) \ + combo_##NAME { \ + bindings = ; \ + key-positions = ; \ + layers = ; \ + }; + +/* Brackets */ +COMBO(left_parenthesis, &kp LEFT_PARENTHESIS, 1 2, NUM) +COMBO(right_parenthesis, &kp RIGHT_PARENTHESIS, 2 3, NUM) +COMBO(parentheses, ¯o_parentheses, 1 2 3, NUM) +COMBO(left_bracket, &kp LEFT_BRACKET, 11 12, NUM) +COMBO(right_bracket, &kp RIGHT_BRACKET, 12 13, NUM) +COMBO(brackets, ¯o_brackets, 11 12 13, NUM) +COMBO(less_than, &kp LESS_THAN, 21 22, NUM) +COMBO(greater_than, &kp GREATER_THAN, 22 23, NUM) +COMBO(ltgt, ¯o_ltgt, 21 22 23, NUM) + +/* Text processing */ +COMBO(undo, &kp LG(Z), 20 21, BASE) +COMBO(cut, &kp LG(X), 21 23, BASE) +COMBO(copy, &kp LG(C), 21 22, BASE) +COMBO(paste, &kp LG(V), 21 22 23, BASE) +COMBO(select_all, &kp LG(A), 20 23, BASE) +COMBO(caps_word, &caps_word, 31 32, BASE) + +/* System */ +COMBO(power, ¯o_power, 4 5, BASE) +COMBO(menu_search, &kp LG(LS(SLASH)), 16 17 18, BASE) +COMBO(spotlight, &kp LG(SPACE), 11 12 13, BASE) +COMBO(mic_mute_left, &kp LG(BACKSLASH), 13 23, BASE) +COMBO(mic_mute_right, &kp LG(BACKSLASH), 16 26, BASE) + +/* Window management */ +COMBO(tile_left, &kp LG(LC(LA(LEFT))), 26 27, BASE) +COMBO(tile_right, &kp LG(LC(LA(RIGHT))), 27 28, BASE) +COMBO(maximize, &kp LG(LC(LA(UP))), 26 27 28, BASE) +COMBO(center, &kp LG(LC(LA(DOWN))), 26 28, BASE) + +/* Media */ +COMBO(volup, &kp C_VOL_UP, 7 17, NAV) +COMBO(voldown, &kp C_VOL_DN, 17 27, NAV) +COMBO(playpause, &kp C_PLAY_PAUSE, 26 28, NAV) +COMBO(prev, &kp C_PREV, 26 27, NAV) +COMBO(next, &kp C_NEXT, 27 28, NAV) + +/* Keyboard */ +COMBO(reset, &reset, 11 12 13 17, BASE) +COMBO(bootloader, &bootloader, 14 15 24 25, BASE) +COMBO(bt0, &bt BT_SEL 0, 1 2, BASE) +COMBO(bt1, &bt BT_SEL 1, 2 3, BASE) +COMBO(bttog, &out OUT_TOG, 11 12 13, NAV) +COMBO(btclear, &bt BT_CLR, 4 24, BASE) diff --git a/config/corne.keymap b/config/corne.keymap index aed40ee..da428c3 100644 --- a/config/corne.keymap +++ b/config/corne.keymap @@ -11,6 +11,8 @@ #include #include // }}} +// nvim ~/qmk_firmware/quantum/keymap_extras/keymap_german_mac_iso.h +#include "keymap_german_mac_iso.h" #ifdef CONFIG_ZMK_DISPLAY # include "oled.dtsi" #endif // CONFIG_ZMK_DISPLAY @@ -56,47 +58,6 @@ }; //}}} #endif // CONFIG_ZMK_RGB_UNDERGLOW -// ### definiendo capas {{{ -#define DEFAULT 0 -#define NUMBER 1 -#define SYMBOL 2 -#define FUNCTION 3 -#define MEDIA 4 -#define MOUSE 5 -//}}} -// ### definicion de teclado ALEMAN STANDARD {{{ -#define DE_Y &kp Z // Y -#define DE_Z &kp Y // Z -#define DE_SS &kp MINUS // ß -#define DE_UDIA &kp LBKT // Ü -#define DE_ODIA &kp SEMICOLON // Ö -#define DE_ADIA &kp APOS // Ä -#define DE_MINS &kp SLASH // - -#define DE_FSLH &kp AMPS // "/" -#define DE_STAR &kp RBRC // "*" -#define DE_EQUAL &kp RPAR // = -#define DE_PLUS &kp RBKT // + -#define DE_GRAVE &kp PLUS // ` -#define DE_HASH &kp BSLH // # -#define DE_TILDE &kp LA(RBKT) // ~ -#define DE_PIPE &kp RA(GRAVE) // "|" -#define DE_AMPS &kp CARET // "&" -#define DE_BSLH &kp RA(MINUS) // "\" -#define DE_QUESTION &kp LS(MINUS) // ? -#define DE_AT &kp RA(Q) // "@" -#define DE_LPAR &kp LS(N8) // ( -#define DE_RPAR &kp LS(N9) // ) -#define DE_LBKT &kp RA(N8) // [ -#define DE_RBKT &kp RA(N9) // ] -#define DE_LBRC &kp RA(N7) // { -#define DE_RBRC &kp RA(N0) // } -#define DE_LABK &kp GRAVE // < -#define DE_RABK &kp LS(GRAVE) // > -#define DE_APOS &kp PIPE // ' -#define DE_ACUT &kp EQUAL // ´ hasta aqui funciona - -#define DE_CARET &kp HASH // ^ TODO: -//}}} / { keymap { compatible = "zmk,keymap"; diff --git a/config/keymap_german_mac_iso.h b/config/keymap_german_mac_iso.h new file mode 100644 index 0000000..2725be4 --- /dev/null +++ b/config/keymap_german_mac_iso.h @@ -0,0 +1,258 @@ +/* Copyright 2022 Marcos Ivan Chow Castro + * Inspired by Stephen Bösebeck + * + * 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 . + */ + +#pragma once + +#include + +#define XXX &none +#define ___ &trans + +#define DEFAULT 0 +#define NUMBER 1 +#define SYMBOL 2 +#define FUNCTION 3 +#define MEDIA 4 +#define MOUSE 5 + +// Apple "Globe" key +// https://github.com/zmkfirmware/zmk/issues/947 +// #define GLOBE CAPSLOCK + +// clang-format off + +/* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐ + * │ ^ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ß │ ´ │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤ + * │ │ Q │ W │ E │ R │ T │ Z │ U │ I │ O │ P │ Ü │ + │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Ö │ Ä │ # │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤ + * │ │ < │ Y │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │ + * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤ + * │ │ │ │ │ │ │ │ + * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘ + */ +// Row 1 +#define DE_CIRC &kp GRAVE // ^ (dead) +#define DE_1 &kp N1 // 1 +#define DE_2 &kp N2 // 2 +#define DE_3 &kp N3 // 3 +#define DE_4 &kp N4 // 4 +#define DE_5 &kp N5 // 5 +#define DE_6 &kp N6 // 6 +#define DE_7 &kp N7 // 7 +#define DE_8 &kp N8 // 8 +#define DE_9 &kp N9 // 9 +#define DE_0 &kp N0 // 0 +#define DE_SS &kp MINUS // ß +#define DE_ACUT &kp EQUAL // ´ (dead) +// Row 2 +#define DE_Q &kp Q // Q +#define DE_W &kp W // W +#define DE_E &kp E // E +#define DE_R &kp R // R +#define DE_T &kp T // T +#define DE_Z &kp Y // Z +#define DE_U &kp U // U +#define DE_I &kp I // I +#define DE_O &kp O // O +#define DE_P &kp P // P +#define DE_UDIA &kp LBKT // Ü +#define DE_PLUS &kp RPAR // + +// Row 3 +#define DE_A &kp A // A +#define DE_S &kp S // S +#define DE_D &kp D // D +#define DE_F &kp F // F +#define DE_G &kp G // G +#define DE_H &kp H // H +#define DE_J &kp J // J +#define DE_K &kp K // K +#define DE_L &kp L // L +#define DE_ODIA &kp SEMI // Ö +#define DE_ADIA &kp APOS // Ä +#define DE_HASH &kp BSLH // # +// Row 4 +#define DE_LABK &kp GRAVE // < +#define DE_Y &kp Z // Y +#define DE_X &kp X // X +#define DE_C &kp C // C +#define DE_V &kp V // V +#define DE_B &kp B // B +#define DE_N &kp N // N +#define DE_M &kp M // M +#define DE_COMM &kp COMMA // , +#define DE_DOT &kp DOT // . +#define DE_MINS &kp SLASH // - + +/* Shifted symbols + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐ + * │ ° │ ! │ " │ § │ $ │ % │ & │ / │ ( │ ) │ = │ ? │ ` │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ * │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ ' │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤ + * │ │ > │ │ │ │ │ │ │ │ ; │ : │ _ │ │ + * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤ + * │ │ │ │ │ │ │ │ + * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘ + */ +// Row 1 +#define DE_DEG &kp LS(GRAVE) // ° +#define DE_EXLM &kp LS(N1) // ! +#define DE_DQUO &kp LS(N2) // " +#define DE_SECT &kp LS(N3) // § +#define DE_DLR &kp LS(N4) // $ +#define DE_PERC &kp LS(N5) // % +#define DE_AMPR &kp LS(N6) // & +#define DE_SLSH &kp LS(N7) // / +#define DE_LPRN &kp LS(N8) // ( +#define DE_RPRN &kp LS(N9) // ) +#define DE_EQL &kp LS(N0) // = +#define DE_QUES &kp LS(MINUS) // ? +#define DE_GRV &kp LS(EQUAL) // ` (dead) +// Row 2 +#define DE_ASTR &kp LS(RPAR) // * +// Row 3 +#define DE_QUOT &kp LS(BSLH) // ' +// Row 4 +#define DE_RABK &kp LS(GRAVE) // > +#define DE_SCLN &kp LS(COMMA) // ; +#define DE_COLN &kp LS(DOT) // : +#define DE_UNDS &kp LS(SLASH) // _ + +/* Alted symbols + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐ + * │ „ │ ¡ │ “ │ ¶ │ ¢ │ [ │ ] │ | │ { │ } │ ≠ │ ¿ │ │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤ + * │ │ « │ ∑ │ € │ ® │ † │ Ω │ ¨ │ ⁄ │ Ø │ π │ • │ ± │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ Å │ ‚ │ ∂ │ ƒ │ © │ ª │ º │ ∆ │ @ │ Œ │ Æ │ ‘ │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤ + * │ │ ≤ │ ¥ │ ≈ │ Ç │ √ │ ∫ │ ~ │ µ │ ∞ │ … │ – │ │ + * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤ + * │ │ │ │ │ │ │ │ + * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘ + */ +// Row 1 +#define DE_DLQU LA(GRAVE) // „ +#define DE_IEXL LA(N1) // ¡ +#define DE_LDQU LA(N2) // “ +#define DE_PILC LA(N3) // ¶ +#define DE_CENT LA(N4) // ¢ +#define DE_LBRC LA(N5) // [ +#define DE_RBRC LA(N6) // ] +#define DE_PIPE LA(N7) // | +#define DE_LCBR LA(N8) // { +#define DE_RCBR LA(N9) // } +#define DE_NEQL LA(N0) // ≠ +#define DE_IQUE LA(MINUS) // ¿ +// Row 2 +#define DE_LDAQ LA(Q) // « +#define DE_NARS LA(W) // ∑ +#define DE_EURO LA(E) // € +#define DE_REGD LA(R) // ® +#define DE_DAGG LA(T) // † +#define DE_OMEG LA(Z) // Ω +#define DE_DIAE LA(U) // ¨ (dead) +#define DE_FRSL LA(I) // ⁄ +#define DE_OSTR LA(O) // Ø +#define DE_PI LA(P) // π +#define DE_BULT LA(LBKT) // • +#define DE_PLMN LA(RBKT) // ± +// Row 3 +#define DE_ARNG LA(A) // Å +#define DE_SLQU LA(S) // ‚ +#define DE_PDIF LA(D) // ∂ +#define DE_FHK LA(F) // ƒ +#define DE_COPY LA(G) // © +#define DE_FORD LA(H) // ª +#define DE_MORD LA(J) // º +#define DE_INCR LA(K) // ∆ +#define DE_AT LA(L) // @ +#define DE_OE LA(SEMICOLON) // Œ +#define DE_AE LA(APOS) // Æ +#define DE_LSQU LA(BSLH) // ‘ +// Row 4 +#define DE_LTEQ LA(GRAVE) // ≤ +#define DE_YEN LA(Y) // ¥ +#define DE_AEQL LA(X) // ≈ +#define DE_CCCE LA(C) // Ç +#define DE_SQRT LA(V) // √ +#define DE_INTG LA(B) // ∫ +#define DE_TILD LA(N) // ~ (dead) +#define DE_MICR LA(M) // µ +#define DE_INFN LA(COMMA) // ∞ +#define DE_ELLP LA(DOT) // … +#define DE_NDSH LA(MINS) // – + +/* Shift+Alted symbols + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐ + * │ │ ¬ │ ” │ │ £ │ fi │ │ \ │ ˜ │ · │ ¯ │ ˙ │ ˚ │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤ + * │ │ » │ │ ‰ │ ¸ │ ˝ │ ˇ │ Á │ Û │ │ ∏ │ │  │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ Í │ ™ │ Ï │ Ì │ Ó │ ı │ │ fl │ │ │ │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤ + * │ │ ≥ │ ‡ │ Ù │ │ ◊ │ ‹ │ › │ ˘ │ ˛ │ ÷ │ — │ │ + * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤ + * │ │ │ │ │ │ │ │ + * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘ + */ +// Row 1 +#define DE_NOT &kp LS(LA(N1)) // ¬ +#define DE_RDQU &kp LS(LA(N2)) // ” +#define DE_PND &kp LS(LA(N4)) // £ +#define DE_FI &kp LS(LA(N5)) // fi +#define DE_BSLS &kp LS(LA(N7)) // (backslash) +#define DE_STIL &kp LS(LA(N8)) // ˜ +#define DE_MDDT &kp LS(LA(N9)) // · +#define DE_MACR &kp LS(LA(N0)) // ¯ +#define DE_DOTA &kp LS(LA(MINUS)) // ˙ +#define DE_RNGA &kp LS(LA(EQUAL)) // ˚ +// Row 2 +#define DE_RDAQ &kp LS(LA(Q)) // » +#define DE_PERM &kp LS(LA(E)) // ‰ +#define DE_CEDL &kp LS(LA(R)) // ¸ +#define DE_DACU &kp LS(LA(T)) // ˝ +#define DE_CARN &kp LS(LA(Z)) // ˇ +#define DE_AACU &kp LS(LA(U)) // Á +#define DE_UCIR &kp LS(LA(I)) // Û +#define DE_NARP &kp LS(LA(P)) // ∏ +#define DE_APPL &kp LS(LA(RPAR)) //  (Apple logo) +// Row 3 +#define DE_IACU &kp LS(LA(S)) // Í +#define DE_TM &kp LS(LA(D)) // ™ +#define DE_IDIA &kp LS(LA(F)) // Ï +#define DE_IGRV &kp LS(LA(G)) // Ì +#define DE_OACU &kp LS(LA(H)) // Ó +#define DE_DLSI &kp LS(LA(J)) // ı +#define DE_FL &kp LS(LA(L)) // fl +// Row 4 +#define DE_GTEQ &kp LS(LA(GRAVE)) // ≥ +#define DE_DDAG &kp LS(LA(Y)) // ‡ +#define DE_UGRV &kp LS(LA(X)) // Ù +#define DE_LOZN &kp LS(LA(V)) // ◊ +#define DE_LSAQ &kp LS(LA(B)) // ‹ +#define DE_RSAQ &kp LS(LA(N)) // › +#define DE_BREV &kp LS(LA(M)) // ˘ +#define DE_OGON &kp LS(LA(COMMA)) // ˛ +#define DE_DIV &kp LS(LA(DOT)) // ÷ +#define DE_MDSH &kp LS(LA(MINS)) // — diff --git a/config/macros.dtsi b/config/macros.dtsi new file mode 100644 index 0000000..c40bf4c --- /dev/null +++ b/config/macros.dtsi @@ -0,0 +1,20 @@ +/* TODO: en adptacion */ +/* Macro macro: */ +#define str(s) #s +#define MACRO(NAME, BINDINGS) \ + macro_##NAME: macro_##NAME { \ + compatible = "zmk,behavior-macro"; \ + label = str(macro_##NAME); \ + #binding-cells = <0>; \ + wait-ms = <30>; \ + tap-ms = <40>; \ + bindings = ; \ + }; + +/* Brackets */ +MACRO(parentheses, &kp LEFT_PARENTHESIS &kp RIGHT_PARENTHESIS &kp LEFT) +MACRO(brackets, &kp LEFT_BRACKET &kp RIGHT_BRACKET &kp LEFT) +MACRO(ltgt, &kp LESS_THAN &kp GREATER_THAN &kp LEFT) + +/* Suspend macOS by holding power key for 1 second */ +MACRO(power, ¯o_tap_time 1000 &kp C_POWER)