diff --git a/quantum/keymap_extras/keymap_norwegian.h b/quantum/keymap_extras/keymap_norwegian.h index eb3b0b040..6eab4163b 100644 --- a/quantum/keymap_extras/keymap_norwegian.h +++ b/quantum/keymap_extras/keymap_norwegian.h @@ -13,44 +13,163 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -#ifndef KEYMAP_NORWEGIAN_H -#define KEYMAP_NORWEGIAN_H -#include "keymap_nordic.h" +#pragma once -// There are slight differrences in the keyboards in the nordic contries +#include "keymap.h" -// Norwegian redifinitions from the nordic keyset -#undef NO_ACUT -#define NO_ACUT ALGR(NO_BSLS) // ´ -#undef NO_AE -#define NO_AE KC_QUOT // æ -#undef NO_BSLS -#define NO_BSLS KC_EQL // '\' -#undef NO_CIRC -#define NO_CIRC LSFT(KC_RBRC) // ^ -#undef NO_GRV -#define NO_GRV LSFT(NO_BSLS) // -#undef NO_OSLH -#define NO_OSLH KC_SCLN // ø -#undef NO_PIPE +// clang-format off + +/* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ + * │ | │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ + │ \ │       │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ + * │     │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ Å │ ¨ │     │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ + * │      │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Ø │ Æ │ ' │    │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ + * │    │ < │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ - │          │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ + * │    │    │    │                        │    │    │    │    │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ + */ +// Row 1 #define NO_PIPE KC_GRV // | +#define NO_1 KC_1 // 1 +#define NO_2 KC_2 // 2 +#define NO_3 KC_3 // 3 +#define NO_4 KC_4 // 4 +#define NO_5 KC_5 // 5 +#define NO_6 KC_6 // 6 +#define NO_7 KC_7 // 7 +#define NO_8 KC_8 // 8 +#define NO_9 KC_9 // 9 +#define NO_0 KC_0 // 0 +#define NO_PLUS KC_MINS // + +#define NO_BSLS KC_EQL // (backslash) +// Row 2 +#define NO_Q KC_Q // Q +#define NO_W KC_W // W +#define NO_E KC_E // E +#define NO_R KC_R // R +#define NO_T KC_T // T +#define NO_Y KC_Y // Y +#define NO_U KC_U // U +#define NO_I KC_I // I +#define NO_O KC_O // O +#define NO_P KC_P // P +#define NO_ARNG KC_LBRC // Å +#define NO_DIAE KC_RBRC // ¨ (dead) +// Row 3 +#define NO_A KC_A // A +#define NO_S KC_S // S +#define NO_D KC_D // D +#define NO_F KC_F // F +#define NO_G KC_G // G +#define NO_H KC_H // H +#define NO_J KC_J // J +#define NO_K KC_K // K +#define NO_L KC_L // L +#define NO_OSTR KC_SCLN // Ø +#define NO_AE KC_QUOT // Æ +#define NO_QUOT KC_NUHS // ' +// Row 4 +#define NO_LABK KC_NUBS // < +#define NO_Z KC_Z // Z +#define NO_X KC_X // X +#define NO_C KC_C // C +#define NO_V KC_V // V +#define NO_B KC_B // B +#define NO_N KC_N // N +#define NO_M KC_M // M +#define NO_COMM KC_COMM // , +#define NO_DOT KC_DOT // . +#define NO_MINS KC_SLSH // - -// Additional norwegian keys not defined in the nordic keyset -#define NO_AA KC_LBRC // å -#define NO_ASTR LSFT(KC_BSLS) // * +/* Shifted symbols + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ + * │ § │ ! │ " │ # │ ¤ │ % │ & │ / │ ( │ ) │ = │ ? │ ` │       │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ + * │     │   │   │   │   │   │   │   │   │   │   │   │ ^ │     │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ + * │      │   │   │   │   │   │   │   │   │   │   │   │ * │    │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ + * │    │ > │   │   │   │   │   │   │   │ ; │ : │ _ │          │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ + * │    │    │    │                        │    │    │    │    │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ + */ +// Row 1 +#define NO_SECT S(NO_PIPE) // § +#define NO_EXLM S(NO_1) // ! +#define NO_DQUO S(NO_2) // " +#define NO_HASH S(NO_3) // # +#define NO_CURR S(NO_4) // ¤ +#define NO_PERC S(NO_5) // % +#define NO_AMPR S(NO_6) // & +#define NO_SLSH S(NO_7) // / +#define NO_LPRN S(NO_8) // ( +#define NO_RPRN S(NO_9) // ) +#define NO_EQL S(NO_0) // = +#define NO_QUES S(NO_PLUS) // ? +#define NO_GRV S(NO_BSLS) // ` (dead) +// Row 2 +#define NO_CIRC S(NO_DIAE) // ^ (dead) +// Row 3 +#define NO_ASTR S(NO_QUOT) // * +// Row 4 +#define NO_RABK S(NO_LABK) // > +#define NO_SCLN S(NO_COMM) // ; +#define NO_COLN S(NO_DOT) // : +#define NO_UNDS S(NO_MINS) // _ -// Norwegian unique MAC characters -#define NO_ACUT_MAC KC_EQL // = -#define NO_APOS_MAC KC_NUBS // ' -#define NO_AT_MAC KC_BSLS // @ -#define NO_BSLS_MAC ALGR(LSFT(KC_7)) // '\' -#define NO_DLR_MAC LSFT(KC_4) // $ -#define NO_GRV_MAC ALGR(NO_BSLS) // ` -#define NO_GRTR_MAC LSFT(KC_GRV) // > -#define NO_LCBR_MAC ALGR(LSFT(KC_8)) // } -#define NO_LESS_MAC KC_GRV // > -#define NO_PIPE_MAC ALGR(KC_7) // | -#define NO_RCBR_MAC ALGR(LSFT(KC_9)) // } +/* AltGr symbols + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ + * │   │   │ @ │ £ │ $ │ € │   │ { │ [ │ ] │ } │   │ ´ │       │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ + * │     │   │   │   │   │   │   │   │   │   │   │   │ ~ │     │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ + * │      │   │   │   │   │   │   │   │   │   │   │   │   │    │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ + * │    │   │   │   │   │   │   │   │ µ │   │   │   │          │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ + * │    │    │    │                        │    │    │    │    │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ + */ +// Row 1 +#define NO_AT ALGR(NO_2) // @ +#define NO_PND ALGR(NO_3) // £ +#define NO_DLR ALGR(NO_4) // $ +#define NO_EURO ALGR(NO_5) // € +#define NO_LCBR ALGR(NO_7) // { +#define NO_LBRC ALGR(NO_8) // [ +#define NO_RBRC ALGR(NO_9) // ] +#define NO_RCBR ALGR(NO_0) // } +#define NO_ACUT ALGR(NO_BSLS) // ´ (dead) +// Row 2 +#define NO_TILD ALGR(NO_DIAE) // ~ (dead) +// Row 4 +#define NO_MICR ALGR(NO_M) // µ -#endif +// DEPRECATED +#define NO_AM NO_ARNG +#define NO_AA NO_ARNG +#define NO_OSLH NO_OSTR +#define NO_APOS NO_QUOT +#define NO_LESS NO_LABK +#define NO_QUO2 NO_DQUO +#define NO_BULT NO_CURR +#define NO_GRTR NO_RABK +#define NO_MU NO_MICR +// Norwegian macOS symbols +#define NO_ACUT_MAC NO_BSLS // ´ +#define NO_APOS_MAC NO_LABK // ' +#define NO_AT_MAC NO_QUOT // @ +#define NO_BSLS_MAC S(ALGR(NO_7)) // (backslash) +#define NO_DLR_MAC S(NO_4) // $ +#define NO_GRV_MAC ALGR(NO_BSLS) // ` +#define NO_GRTR_MAC S(NO_PIPE) // > +#define NO_LCBR_MAC S(ALGR(NO_8)) // { +#define NO_LESS_MAC NO_PIPE // < +#define NO_PIPE_MAC ALGR(NO_7) // | +#define NO_RCBR_MAC S(ALGR(NO_9)) // } diff --git a/quantum/keymap_extras/sendstring_norwegian.h b/quantum/keymap_extras/sendstring_norwegian.h new file mode 100644 index 000000000..d3478f830 --- /dev/null +++ b/quantum/keymap_extras/sendstring_norwegian.h @@ -0,0 +1,100 @@ +/* Copyright 2019 + * + * 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 . + */ + +// Sendstring lookup tables for Norwegian layouts + +#pragma once + +#include "keymap_norwegian.h" +#include "quantum.h" + +// clang-format off + +const uint8_t ascii_to_shift_lut[16] PROGMEM = { + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + + KCLUT_ENTRY(0, 1, 1, 1, 0, 1, 1, 0), + KCLUT_ENTRY(1, 1, 1, 0, 0, 0, 0, 1), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 1, 1, 0, 1, 1, 1), + KCLUT_ENTRY(0, 1, 1, 1, 1, 1, 1, 1), + KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1), + KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1), + KCLUT_ENTRY(1, 1, 1, 0, 0, 0, 1, 1), + KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0) +}; + +const uint8_t ascii_to_altgr_lut[16] PROGMEM = { + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + + KCLUT_ENTRY(0, 0, 0, 0, 1, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 1, 0, 1, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 1, 0, 1, 1, 0) +}; + +const uint8_t ascii_to_keycode_lut[128] PROGMEM = { + // NUL SOH STX ETX EOT ENQ ACK BEL + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + // BS TAB LF VT FF CR SO SI + KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + // DLE DC1 DC2 DC3 DC4 NAK SYN ETB + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + // CAN EM SUB ESC FS GS RS US + XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + + // ! " # $ % & ' + KC_SPC, NO_1, NO_2, NO_3, NO_4, NO_5, NO_6, NO_QUOT, + // ( ) * + , - . / + NO_8, NO_9, NO_QUOT, NO_PLUS, NO_COMM, NO_MINS, NO_DOT, NO_7, + // 0 1 2 3 4 5 6 7 + NO_0, NO_1, NO_2, NO_3, NO_4, NO_5, NO_6, NO_7, + // 8 9 : ; < = > ? + NO_8, NO_9, NO_DOT, NO_COMM, NO_LABK, NO_0, NO_LABK, NO_PLUS, + // @ A B C D E F G + NO_2, NO_A, NO_B, NO_C, NO_D, NO_E, NO_F, NO_G, + // H I J K L M N O + NO_H, NO_I, NO_J, NO_K, NO_L, NO_M, NO_N, NO_O, + // P Q R S T U V W + NO_P, NO_Q, NO_R, NO_S, NO_T, NO_U, NO_V, NO_W, + // X Y Z [ \ ] ^ _ + NO_X, NO_Y, NO_Z, NO_8, NO_BSLS, NO_9, NO_DIAE, NO_MINS, + // ` a b c d e f g + NO_BSLS, NO_A, NO_B, NO_C, NO_D, NO_E, NO_F, NO_G, + // h i j k l m n o + NO_H, NO_I, NO_J, NO_K, NO_L, NO_M, NO_N, NO_O, + // p q r s t u v w + NO_P, NO_Q, NO_R, NO_S, NO_T, NO_U, NO_V, NO_W, + // x y z { | } ~ DEL + NO_X, NO_Y, NO_Z, NO_7, NO_PIPE, NO_0, NO_DIAE, KC_DEL +};