From d140e41c93dcf0a429392310858ac905447324ac Mon Sep 17 00:00:00 2001 From: Jos Boersema <56587694+josjoha@users.noreply.github.com> Date: Thu, 16 Sep 2021 07:27:44 +0200 Subject: [PATCH] Adds optional hebrew layout (Unicode) (#14156) --- .../minivan/keymaps/josjoha/base_hebrew.c | 291 ++++++++++ .../minivan/keymaps/josjoha/base_hebrew.h | 52 ++ .../minivan/keymaps/josjoha/base_hebrew.md | 198 +++++++ .../minivan/keymaps/josjoha/base_numpad.h | 2 + .../keymaps/josjoha/base_qwerty_basearrow.h | 2 + .../minivan/keymaps/josjoha/keymap.c | 13 +- .../keymaps/josjoha/minifan_config_compact.h | 20 +- .../minivan/keymaps/josjoha/readme.md | 21 +- .../minivan/keymaps/josjoha/unicode_hebrew.h | 116 ++++ .../minivan/keymaps/josjoha/unicode_macros.c | 546 ++++++++++++++---- .../minivan/keymaps/josjoha/unicode_macros.h | 2 + .../minivan/keymaps/josjoha/unicode_weurope.h | 2 + .../minivan/keymaps/josjoha/user_config.h | 24 +- 13 files changed, 1157 insertions(+), 132 deletions(-) create mode 100644 keyboards/thevankeyboards/minivan/keymaps/josjoha/base_hebrew.c create mode 100644 keyboards/thevankeyboards/minivan/keymaps/josjoha/base_hebrew.h create mode 100644 keyboards/thevankeyboards/minivan/keymaps/josjoha/base_hebrew.md create mode 100644 keyboards/thevankeyboards/minivan/keymaps/josjoha/unicode_hebrew.h diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_hebrew.c b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_hebrew.c new file mode 100644 index 0000000000..cac77aac60 --- /dev/null +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_hebrew.c @@ -0,0 +1,291 @@ +/* + * License (GPL): + +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 . + + * Author: © 2021 by Jos Boersema + * + */ + +// --------------------------------------v--------------------------------------- +// Configuration: +// --------------------------------------v--------------------------------------- + +// See the user configuration file: ./base_hebrew.h + +// --------------------------------------^--------------------------------------- +// Below here no more comfortable configuration options..... +// --------------------------------------^--------------------------------------- + + /* ⬇ */ + + /* Layer _..._BASE: default BASE layer (Hebrew) + * + * - Dual use keys create a delay in the key (tap/hold keys), therefore + * space is not dual use (most used key), neither is hyphen. + */ + +// Process user configuration wrt ‛Default’ or ‛Alternative’ spot for this layout. +# if defined(BASE_HEBREW__DEF_BASE) + [ _DEF_BASE ] = LAYOUT_redefined ( +# elif defined(BASE_HEBREW__ALT_BASE) + [ _ALT_BASE ] = LAYOUT_redefined ( +# endif + +/* + Layer _..._BASE (LeTteRs, standard Hebrew as in Israel) + ➡ This is a simple hebrew layout. Notice the letter ק is displaced from normal, + to retain compatibility with Dvorak-English for ,<.>. There are no niqqud + available, because it is far too many unique symbols in Unicode, and it is + rarely used. + + HEBREW_ISRAEL + | Right hand + index>middl>ring> pinky>pinky2> // Keys by finger + -o- <|> ... //-o- BASE access + Esc /; ׳ ק ר א | ט ו ן ם פ Bksp + Tab+LCtl ש ד ג/RLM כ₪ ע | י ח ל/LRM ך ף: ,״ //Right-Left-Mark + LSht+_PAD ז ס ב ה נ | מ צ ת< ץ> .? RSht+_FUN //<>os side flip? + +_MOV⁵ | +_RAR⁶ + --------------------------------------------------------------------------------------- + Left+LAlt Del;_ACC _..._NSY(_DRA) Enter+_MOV| Space _..._NSY(_DRA) LGUI Right;_RAR + hold hold₍₁,₂٭₎ hold | hold₍₁,₂٭₎ hold // switch type + hold₍₂₎ ^-┃-----------------------+--------^ ┃ // ₁₎ both = _DRA + ┗━━━_BON━━━╋┅───────────┄┄┄«or»┄┄┄─+─────────┅┛ // ₂₎ both = _BON + <1 ± <2 <3 <4 | 4> 3> 2> ± 1> // Keys by number + ^³ ^⁴ // Optional more keys + … … + + HEBREW_QWERTY + | Right hand + index>middl>ring> pinky>pinky2> // Keys by finger + -o- <|> ... //-o- BASE access + Esc ת• ץ• ק ר א | ט ו ן ם׳ פ״ Bksp + Tab+LCtl ש ד ג/RLM כ₪ ע | י ח ל/LRM ך ף: '" //Right-Left-Mark + LSht+_PAD ז ס ב ה נ | מ צ ,< .> /? RSht+_FUN + +_MOV⁵ | +_RAR⁶ + --------------------------------------------------------------------------------------- + Left+LAlt Del;_ACC _..._NSY(_DRA) Enter+_MOV| Space _..._NSY(_DRA) LGUI Right;_RAR + hold hold₍₁,₂٭₎ hold | hold₍₁,₂٭₎ hold // switch type + hold₍₂₎ ^-┃-----------------------+--------^ ┃ // ₁₎ both = _DRA + ┗━━━_BON━━━╋┅───────────┄┄┄«or»┄┄┄─+─────────┅┛ // ₂₎ both = _BON + <1 ± <2 <3 <4 | 4> 3> 2> ± 1> // Keys by number + ^³ ^⁴ // Optional more keys + … … + + HEBREW_DVORAK + | Right hand + index>middl>ring> pinky>pinky2> // Keys by finger + -o- <|> ... //-o- BASE access + Esc '" ,< .> ר א | ט ו ן ם׳ פ״ Bksp + Tab+LCtl ש ד ג/RLM כ₪ ע | י ח ל/LRM ך ף ־ //Right-Left-Mark + LSht+_PAD ז: ס ב ה נ | מ צ ת ץ ק• RSht+_FUN + +_MOV⁵ | +_RAR⁶ + --------------------------------------------------------------------------------------- + Left+LAlt Del;_ACC _..._NSY(_DRA) Enter+_MOV| Space _..._NSY(_DRA) LGUI Right;_RAR + hold hold₍₁,₂٭₎ hold | hold₍₁,₂٭₎ hold // switch type + hold₍₂₎ ^-┃-----------------------+--------^ ┃ // ₁₎ both = _DRA + ┗━━━_BON━━━╋┅───────────┄┄┄«or»┄┄┄─+─────────┅┛ // ₂₎ both = _BON + <1 ± <2 <3 <4 | 4> 3> 2> ± 1> // Keys by number + ^³ ^⁴ // Optional more keys + … … + + + ₁) Dual hold for _DRA, single hold for _..._NSY. Marked by: ^--…--^ + ₂) Hold key “<2” with either٭ key “<3” or “3>” for _BON, single hold “<2” for _ACC. Marked: ┗━━…━━┛ + ³) 'South paw' hardware configuration + ⁴) 'Arrow' hardware configuration + ³ ⁴) There are two more optional hardware keys, to make it easier to compile for + a 12x12x12x11 or 12x12x12x12 layouts. + ⁵) Left Shift when pressed with another key. Medium long: to toggle _PAD. Long: toggle _MOV. + ⁶) Right shift when pressed with another key. medium long: to toggle _FUN. Long: toggle _RAR. + ⁷) Letters marked with • are displaced from standard hebrew layout. +*/ +// +// , inde> , midd> , ring> , pink> , pink2> , +// -*!- , , , , , <|,> , , , , , , + KC_ESC + +# if defined(HEBREW_ISRAEL) + , XP_HEB_AA , XP_HEB_AB , XP_HEB_AC +# elif defined(HEBREW_QWERTY) + , XP_HEB_AA , XP_HEB_AB , XP_HEB_AC +# elif defined(HEBREW_DVORAK) + , KC_QUOT , KC_COMM , KC_DOT +# endif // HEBREW_DVORAK/QWERTY + , XP_HEB_AD , XP_HEB_AE , XP_HEB_AF , XP_HEB_AG , XP_HEB_AH , XP_HEB_AI , XP_HEB_AJ , KC_BSPC , + LCTL_T ( KC_TAB ) , XP_HEB_BA , XP_HEB_BB , XP_HEB_BC , XP_HEB_BD , XP_HEB_BE , XP_HEB_BF , XP_HEB_BG , XP_HEB_BH , XP_HEB_BI , XP_HEB_BJ +// ^^^^^^^^^ Different in Qwerty (done in macros) with ':' + +# if defined(HEBREW_ISRAEL) + , XP_HEB_BK , // ," +# elif defined(HEBREW_QWERTY) + , KC_QUOT , // '" +# elif defined(HEBREW_DVORAK) + , XP_HEB_MQF , // ־ +# endif // HEBREW_* + + CHOLTAP_LSHFT , XP_HEB_CA , XP_HEB_CB , XP_HEB_CC , XP_HEB_CD , XP_HEB_CE , XP_HEB_CF , XP_HEB_CG + +# if defined(HEBREW_ISRAEL) + , XP_HEB_CH , XP_HEB_CI , XP_HEB_CJ +# elif defined(HEBREW_QWERTY) + , KC_COMM , KC_DOT , KC_SLSH +# elif defined(HEBREW_DVORAK) + , XP_HEB_CH , XP_HEB_CI , XP_HEB_CJ +# endif // HEBREW_* + , CHOLTAP_RSHFT , +// ----------------------------------------------------------------------------------------------------------------- + LALT_T ( KC_LEFT ) + +# ifdef TRANSMINIVAN_LEFTSIDE + , MO ( _PAD ) +# endif + +# ifdef MORE_KEY__COMMAND + , MORE_key1_BASE +# endif + +# ifdef SWITCH_HOLD_ACC_NSY + , DUO_HOLD , CHOLTAP_ACCE +# else + , CHOLTAP_ACCE , DUO_HOLD +# endif + + , LEFTCENTER_THUMB + +# ifdef TRANSMINIVAN_MIDLEFT + , TRANS_MIDLEFT +# endif + + , RIGHTCENTER_THUMB , DUO_HOLD , KC__YGUI + +# ifdef TRANSMINIVAN_RIGHTSIDE + , MO ( _FUN ) +# endif + +# ifdef MORE_KEY__ARROW + , MORE_key2 +# endif + + , CHOLTAP_LAYR +// , , , <|,> , , , +// <1 ± ± , <2 , <3 , <4 |, 4> , 3> , 2> , ± ± 1> + + ), + + /* ⬆⬇ */ + + /* Layer _..._NSY: Numbers and symbols. + * Off hand Number input (-.Bksp ent (shft)tab). + */ + // KC_TILD does not work there, because of a limitation with shifted keys (nov 2019). + +// Process user configuration wrt ‛Default’ or ‛Alternative’ spot for this layout. +# if defined(BASE_HEBREW__DEF_BASE) + [ _DEF_NSY ] = LAYOUT_redefined ( +# elif defined(BASE_HEBREW__ALT_BASE) + [ _ALT_NSY ] = LAYOUT_redefined ( +# endif + +/* + Layer _..._NSY (Numbers and SYmbols) + ➡ The brace type symbols are *not* reversed as on standard hebrew boards (I find it confusing). + + HEBREW_ISRAEL & HEBREW_QWERTY + index>middl>ring>pin>pink2> + -*- <|> //(toggle) Access on _FUN + BASE ! @ # $ % | ^ & * ( ) Del + Tab+LCtl 1! 2@ 3# 4$ 5% | 6^ 7& 8* 9( 0) `~+RCtl + -+LSht [{ ]} -_ \| =+ | + | ־ { } ~+RSht + ^ // Only difference with Qwerty + --------------------------------------------------------------------------- + Left+LAlt ___ ___ Ent | . ___ LGUI Right+RAlt + -*- <|> -*- //(hold) Access on _..._BASE + <1 ± <2 <3 <4 | 4> 3> 2> ± 1> + … … + + HEBREW_DVORAK (Same as standard Dvorak) + index>middl>ring>pin>pink2> + -*- <|> //(toggle) Access on _FUN + BASE ! @ # $ % | ^ & * ( ) Del + Tab+LCtl 1! 2@ 3# 4$ 5% | 6^ 7& 8* 9( 0) `~+RCtl + -+LSht [{ ]} /? \| =+ | + | ? { } ~+RSht + --------------------------------------------------------------------------- + Left+LAlt ___ ___ Ent | . ___ LGUI Right+RAlt + -*- <|> -*- //(hold) Access on _..._BASE + <1 ± <2 <3 <4 | 4> 3> 2> ± 1> + … … +*/ +// +// +// , index> , middl> , ring> , pinky> , pink2> , +// , -*- , , , , <|,> , , , , , , + CTO_BASE , KC_EXLM , KC_AT , KC_HASH , KC_DLR , KC_PERC , KC_CIRC , KC_AMPR , KC_ASTR , KC_LPRN , KC_RPRN , KC_DEL , + LCTL_T ( KC_TAB ) , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , RCTL_T ( KC_GRV ) , + LSFT_DASH , KC_LBRC , KC_RBRC + +# if defined(HEBREW_ISRAEL) + , KC_MINUS // allows -_, with Maqaf on mirror place right +# elif defined(HEBREW_QWERTY) + , KC_MINUS // same as HEBREW_ISRAEL +# elif defined(HEBREW_DVORAK) + , KC_SLSH +# endif // HEBREW_* + + , KC_BSLS , KC_EQL , KC_PLUS , KC_PIPE + + +# if defined(HEBREW_ISRAEL) + , XP_HEB_MQF // '־' Maqaf +# elif defined(HEBREW_QWERTY) + , XP_HEB_MQF // +# elif defined(HEBREW_DVORAK) + , KC_QUES +# endif // HEBREW_* + , KC_LCBR , KC_RCBR , RSFT_TILDE , +// --------------------------------------------------------------------------------------------------------------------------------------------- + LALT_T ( KC_LEFT ) + +# ifdef TRANSMINIVAN_LEFTSIDE + , TRANS_LEFT +# endif + +# ifdef MORE_KEY__COMMAND + , MORE_key1 +# endif + + , _______ , _______ , KC_ENT + +# ifdef TRANSMINIVAN_MIDLEFT + , TRANS_MIDLEFT +# endif + , KC_DOT , DUO_HOLD , KC__YGUI + +# ifdef TRANSMINIVAN_RIGHTSIDE + , TRANS_RIGHT +# endif + +# ifdef MORE_KEY__ARROW + , MORE_key2 +# endif + + , RALT_T ( KC_RIGHT ) +// , , -*- , <|,> , -*- , , +// <1 ± ± , <2 , <3 , <4 |, 4> , 3> , 2> , ± ± 1> + + ), + + + /* ⬆⬇ */ diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_hebrew.h b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_hebrew.h new file mode 100644 index 0000000000..f5604b8f1e --- /dev/null +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_hebrew.h @@ -0,0 +1,52 @@ +/* + * License (GPL): + +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 . + + * Author: © 2021 by Jos Boersema + * + */ + +#pragma once + +// --------------------------------------v--------------------------------------- +// Configuration: +// --------------------------------------v--------------------------------------- + + /* Harmonize layout with a Latin layout + * + * See base_hebrew.md for design objectives. + */ + #define HEBREW_ISRAEL // Close to standard Israeli hebrew. +//#define HEBREW_QWERTY // Harmonize punctuation symbols with Qwerty. +//#define HEBREW_DVORAK // Harmonize punctuation symbols with Dvorak. + +// --------------------------------------^--------------------------------------- +// Below here no more comfortable configuration options..... +// --------------------------------------^--------------------------------------- + + /* Redefine a layer in this file + * + * _Activate_ one or more of the below BASESFILE_LAYER_..., to redefine the layer + * in this file. The version in ./keymap.c will be ignored. Keep in mind to use + * transparent keys (_______) for “hold” layer switch keys on the BASE map, for + * your new layer. + */ +// #define BASESFILE_LAYER_ACC +// #define BASESFILE_LAYER_DRA +// #define BASESFILE_LAYER_BON +// #define BASESFILE_LAYER_PAD +// #define BASESFILE_LAYER_MOV +// #define BASESFILE_LAYER_RAR +// #define BASESFILE_LAYER_FUN diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_hebrew.md b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_hebrew.md new file mode 100644 index 0000000000..0e7adc40c8 --- /dev/null +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_hebrew.md @@ -0,0 +1,198 @@ +# Minifan layout + +Compiled for: Hebrew +==================== + +This file details the compile version `#define BASE_HEBREW__DEF_BASE, +BASE_HEBREW__ALT_BASE`. This is a basic Hebrew layout, without niqqud. + +Only the most common symbols are implemented. Hebrew symbols are all +done in Unicode. + +See also ![./readme.md](./readme.md) chapter 7 _Language support_. + +Parenthesis/braces/etc direction seems to be dealt with at the computer +side, depending on the surrounding symbols. The keyboard is printing +these symbols unchanged from what they are in standard Latin layouts, +and are represented that way in the manual. + +Options +======= + +You can compile the hebrew to be like a common Israeli layout, or to harmonize the +punctuation symbols with either Dvorak or Qwerty. See the configuration file +![./base_hebrew.h](./base_hebrew.h) + +☞ Israeli Hebrew + +As close to a simple standard hebrew layout as possible. +A little larger memory cost than the other options. No `'"` ASCII quotes symbols, +but proper ׳ and ״ (in Unicode). + +☞ Qwerty with Hebrew + +The letters ת, ץ get displaced from the standard hebrew layout. +Numerical layer is the same as standard Qwerty, except the symbol +`_` symbol becomes `־` (Maqaf). No `;` symbol. + +☞ Qwerty derivatives with Hebrew + +It is adviced to use Qwerty with Hebrew in this case, and adjust by hand +coding if needed. “Workman” should harmonize the same as Qwerty. +Colemak displaces the “;:” key relative to Qwerty, therefore you may +like to change the “:” shifted symbol (by hand). The obscurity of this +use case gets extreme, there will not be options for this. + +☞ Dvorak with Hebrew + +The letter ק gets displaced from the standard hebrew layout. +Numerical layer is the same as standard Dvorak. No `;` symbol. + + +Flash memory cost +----------------- + +This layout adds several dozen new Unicode symbols, which takes up a certain +amount of additional space in keyboard memory. If you end up going over +the limit, you may need to change your compilation software setup, and/or +you can look into the “Eviscerations” chapters in ![./user_config.h](./user_config.h) + +Hebrew keymaps +-------------- + +──────────Hebrew Israel──────── + +![Minivan layout Image BASEdef-alt](http://socialism.nl/misc/minivan/minivan_base_layer_hebrew-israel_ve.jpg) +Layer: `..._BASE` + +![Minivan layout Image NSYdef-alt](http://socialism.nl/misc/minivan/minivan_nsy_layer_hebrew-israel_vd.jpg) +Layer: `..._NSY` + +──────────in common──────────── + +(…) + +──────────Hebrew Qwerty──────── + +![Minivan layout Image BASEdef-alt](http://socialism.nl/misc/minivan/minivan_base_layer_hebrew-qwerty_ve.jpg) +Layer: `..._BASE` + +![Minivan layout Image NSYdef-alt](http://socialism.nl/misc/minivan/minivan_nsy_layer_hebrew-israel_vd.jpg) +Layer: `..._NSY` + +──────────in common──────────── + +(…) + +──────────Hebrew Dvorak──────── + +![Minivan layout Image BASEdef-alt](http://socialism.nl/misc/minivan/minivan_base_layer_hebrew-dvorak_ve.jpg) +Layer: `..._BASE` + +![Minivan layout Image NSYdef-alt](http://socialism.nl/misc/minivan/minivan_nsy_layer_dvorak_vc.jpg) +Layer: `..._NSY` (Same as Dvorak.) + +──────────in common──────────── + +(…) + +For more about the other layers, see ➡ ![readme.md](./readme.md) ⬅ + +![Minivan illustration Overview layers by key, Hebrew](http://socialism.nl/misc/minivan/minivan-all-layers-clear-visualization-by-key_hebrew_2000_vk.jpg) + +Layers (text) +============= + +(The “x” padding was necessary to undo the direction of these characters being reversed. +This layout might still not be represenetd correctly on your system. See the graphics instead.) + + HEBREW_ISRAEL + | Right hand + index>middl>ring> pinky>pinky2> // Keys by finger + -o- <|> ... //-o- BASE access + Escxxxxxxxx/;xxxx׳xxxxxקxxxxxרxxxxxאxxxxx|xטxxxxxוxxxxxןxxxxxםxxxxxפxxxxxxxxxxBksp + Tab+LCtlxxxשxxxxxדxxxxxג/RLMxכx₪xxxעxxxxx|xיxxxxxחxxxxxל/LRMxךxxxxxף:xxxxxxxxxxx,״ //Right-Left-Mark + LSht+_PADxxזxxxxxסxxxxxבxxxxxהxxxxxנxxxxx|xמxxxxxצxxxxxתxxxx.?xxxxRSht+_FUN //<>os side flip? + +_MOV⁵ | +_RAR⁶ + --------------------------------------------------------------------------------------- + + HEBREW_QWERTY + | Right hand + index>middl>ring> pinky>pinky2> // Keys by finger + -o- <|> ... //-o- BASE access + Escxxxxxxxxת•xxxxץ•xxxxקxxxxxרxxxxxאxxxxx|xטxxxxxוxxxxxןxxxxxםx׳xxxפx״xxxxxxxxBksp + Tab+LCtlxxxשxxxxxדxxxxxג/RLMxכx₪xxxעxxxxx|xיxxxxxחxxxxxל/LRMxךxxxxxף:xxxxxxxxxxx'" //Right-Left-Mark + LSht+_PADxxזxxxxxסxxxxxבxxxxxהxxxxxנxxxxx|xמxxxxxצxxxxx,xxxx/?xxxxRSht+_FUN + +_MOV⁵ | +_RAR⁶ + --------------------------------------------------------------------------------------- + (…) + + HEBREW_DVORAK + Layer _..._BASE (LeTteRs, standard Hebrew) + | Right hand + index>middl>ring> pinky>pinky2> // Keys by finger + -o- <|> ... //-o- BASE access + Escxxxxxxxx'"xxxx,xxxxרxxxxxאxxxxx|xטxxxxxוxxxxxןxxxxxםx׳xxxפx״xxxxxxxxBksp + Tab+LCtlxxxשxxxxxדxxxxxג/RLMxכx₪xxxעxxxxx|xיxxxxxחxxxxxל/LRMxךxxxxxףxxxxxxxxxxxxx־ //Right/Left-Mark + LSht+_PADxxז:xxxxסxxxxxבxxxxxהxxxxxנxxxxx|xמxxxxxצxxxxxתxxxxxץxxxxxק•xxxxRSht+_FUN + +_MOV⁵ | +_RAR⁶ + --------------------------------------------------------------------------------------- + Left+LAlt Del;_ACC _DEF_NSY(_DRA) Enter+_MOV| Space _DEF_NSY(_DRA) RGUI Right;_RAR + hold hold₍₁,₂٭₎ hold | hold₍₁,₂٭₎ hold // switch type + hold₍₂₎ ^-┃-----------------------+--------^ ┃ // ₁₎ both = _DRA + ┗━━━_BON━━━╋┅───────────┄┄┄«or»┄┄┄─+─────────┅┛ // ₂₎ both = _BON + <1 ± <2 <3 <4 | 4> 3> 2> ± 1> // Keys by number + ^³ ^⁴ // Optional more keys + (LGUI) (_MOV) + + + ₁) Dual hold for _DRA, single hold for _DEF_NSY. Marked by: ^--…--^ + ₂) Hold key “<2” with either٭ key “<3” or “3>” for _BON, single hold “<2” for _ACC. Marked: ┗━━…━━┛ + ₃) 'South paw' hardware configuration. Configurable, default shown. + ₄) 'Arrow' hardware configuration Configurable, default shown. + ₃ ₄) There are two more optional hardware keys, to make it easier to compile for + a 12x12x12x11 or 12x12x12x12 layouts. + ₅) Left Shift when pressed with another key. Medium long: to toggle _PAD. Long: toggle _MOV. + ₆) Right shift when pressed with another key. medium long: to toggle _FUN. Long: toggle _RAR. + ⁷) Letters marked with • are displaced from standard hebrew layout. + +Remarks: The left modifiers have a slight delay in combination with an outside pointer device (mouse, stylus). +It seems this will be difficult to fix, because it is spread over two devices. To avoid the +±0.2 second delay, activate a layer where the modifiers are direct (`_PAD`), using the layer toggle on left shift. + +The two keys with ';' (Del;`_ACC`, Right;`_RAR`) do not auto-repeat on double tap, like QMK normal layer-tap keys. +There is an uncluttered _Delete_ on `_PAD`, an uncluttered _Right_ arrow on the `_MOV` layer. + +Holding both `_DEF_NSY` keys left and right of the "split space bar" (enter, space) results in layer `_DRA`. + +Holding either one of the just above mentioned `_DEF_NSY` layer keys (<3 and 3>), with the `_ACC` layer key +(on <2) results in layer `_BON`. + +- - - + + Layer _..._NSY (Numbers and SYmbols) + + HEBREW_ISRAEL & HEBREW_QWERTY (_ becomes ־ Maqaf) + index>middl>ring>pin>pink2> + -*- <|> //(toggle) Access on _FUN + BASExxxxx!xxxxx@xxxxx#xxxxx$xxxxx%xxxxx|x^xxxxx&xxxxx*xxxxx(xxxx)xxxxxxxDel + Tab+LCtlx1!xxxx2@xxxx3#xxxx4$xxxx5%xxxx|x6^xxxx7&xxxx8*xxxx9(xxx0)xx`~+RCtl + -+LShtxxx[{xxxx]}xxxx-_xxxx\|xxxx=+xxxx|x+xxxxx|xxxxx־xxxxx{xxxxx}xxx~+RSht + ^ // Only difference with Qwerty + --------------------------------------------------------------------------- + Left+LAlt ___ ___ Ent | . ___ RGUI Right+RAlt + -*- <|> -*- //(hold) Access on _DEF_BASE + <1 ± <2 <3 <4 | 4> 3> 2> ± 1> + ^ ^ + (LGUI) (_MOV) + + + HEBREW_DVORAK (Same as standard Dvorak) + index>middl>ring>pin>pink2> + -*- <|> //(toggle) Access on _FUN + BASE ! @ # $ % | ^ & * ( ) Del + Tab+LCtl 1! 2@ 3# 4$ 5% | 6^ 7& 8* 9( 0) `~+RCtl + -+LSht [{ ]} /? \| =+ | + | ? { } ~+RSht + --------------------------------------------------------------------------- + (…) +- - - diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_numpad.h b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_numpad.h index 86baf95a59..d4440721ff 100644 --- a/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_numpad.h +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_numpad.h @@ -18,6 +18,8 @@ along with this program. If not, see . * */ +#pragma once + // --------------------------------------v--------------------------------------- // Configuration: // --------------------------------------v--------------------------------------- diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_qwerty_basearrow.h b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_qwerty_basearrow.h index 74aa563b42..386a6e593a 100644 --- a/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_qwerty_basearrow.h +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_qwerty_basearrow.h @@ -18,6 +18,8 @@ along with this program. If not, see . * */ +#pragma once + // --------------------------------------v--------------------------------------- // Configuration: // --------------------------------------v--------------------------------------- diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/keymap.c b/keyboards/thevankeyboards/minivan/keymaps/josjoha/keymap.c index 09a9b7d93d..057561a473 100644 --- a/keyboards/thevankeyboards/minivan/keymaps/josjoha/keymap.c +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/keymap.c @@ -146,7 +146,7 @@ bool led_middle_on = TRUE; // Set to off later, if startup setting is off. bool isolate_trigger = FALSE; // detects if _FUN layer move was pressed, and no other key (no normal use of Shift). bool capslock; // keeps track of capslock state bool numlock; // keeps track of numlock state -layer_state_t state_recall; // We are calling the function set_led_colors_ from this file as well. +//layer_state_t state_recall; // We are calling the function set_led_colors_ from this file as well. // speed measuring bool speed_measure = SPEED_INIT_VALUE; // feature activated or not on startup uint32_t speed_counttime; // counts the time @@ -289,8 +289,8 @@ void speed_led (int speed) { // do this in one place to handle left/right leds being off here void isolate_rgblight_set () { -# ifdef RGBLIGHT_ENABLE +# ifdef RGBLIGHT_ENABLE if (!leds_on) { // left/right leds are off // overwrite previously colors uint8_t led0r = 0; uint8_t led0g = 0; uint8_t led0b = 0; @@ -305,8 +305,8 @@ void isolate_rgblight_set () { setrgb(led2r, led2g, led2b, (LED_TYPE *)&led[2]); // Led 2 } rgblight_set (); - # endif + } @@ -335,7 +335,7 @@ void indicate_fun_stay (void) { // _RAR layer leds -// It is a function because this is called when the Base layer OTHER_BASE key is pressed +// It is a function because this is also called when the Base layer OTHER_BASE key is pressed void indicate_base (void) { # ifdef RGBLIGHT_ENABLE @@ -614,6 +614,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { # include "./base_numpad.c" // Numbers pad # endif +// * Hebrew * +# if defined(BASE_HEBREW__DEF_BASE) || defined(BASE_HEBREW__ALT_BASE) +# include "./base_hebrew.c" // Hebrew +# endif + // // ⬇ insert your ./base_YOUR_KEYMAP.c #include here: diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/minifan_config_compact.h b/keyboards/thevankeyboards/minivan/keymaps/josjoha/minifan_config_compact.h index 89d426b140..932acf2a82 100644 --- a/keyboards/thevankeyboards/minivan/keymaps/josjoha/minifan_config_compact.h +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/minifan_config_compact.h @@ -14,25 +14,29 @@ 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 . - * © 2020,2021 by Jos Boersema +* © 2020,2021 by Jos Boersema */ +#pragma once + /* * If MINIFAN_CONFIG_COMPACT in ./user_config.h ⬇ */ //#define BASE_QWERTY__DEF_BASE //#define BASE_QWERTY__ALT_BASE -//#define BASE_QWERTY_BASEARROW__DEF_BASE -//#define BASE_QWERTY_BASEARROW__ALT_BASE +//#define BASE_QWERTY_BASEARROW__DEF_BASE // ➡ base_qwerty_basearrow.h +//#define BASE_QWERTY_BASEARROW__ALT_BASE // ➡ base_qwerty_basearrow.h #define BASE_DVORAK__DEF_BASE //#define BASE_DVORAK__ALT_BASE - #define BASE_DVORAK_DESCRAMBLE__ALT_BASE +//#define BASE_DVORAK_DESCRAMBLE__ALT_BASE //#define BASE_COLEMAK__DEF_BASE //#define BASE_COLEMAK__ALT_BASE //#define BASE_WORKMAN__DEF_BASE //#define BASE_WORKMAN__ALT_BASE -//#define BASE_NUMPAD__ALT_BASE +//#define BASE_NUMPAD__ALT_BASE // ➡ base_numpad.h +//#define BASE_HEBREW__DEF_BASE // ➡ base_hebrew.h + #define BASE_HEBREW__ALT_BASE // ➡ base_hebrew.h //#define MINIFAN_SINGLE_LAYOUT @@ -66,7 +70,7 @@ along with this program. If not, see . #define ARROWS_TRIANGLE //#define VI_SWITCHERYDOO -//#define NUMPAD_COMMON_SQUARE + #define NUMPAD_COMMON_SQUARE #define SPEED_COUNTDOWN 25 #define SPEED_HUE_STEP 8 @@ -100,5 +104,5 @@ along with this program. If not, see . #define FULL_DRA_4THROW #define FULL_BON_4THROW - #define LEDS_OFF_BASE_DEF - #define LEDS_OFF_BASE_ALT +//#define LEDS_OFF_BASE_DEF +//#define LEDS_OFF_BASE_ALT diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/readme.md b/keyboards/thevankeyboards/minivan/keymaps/josjoha/readme.md index 1d2ad90fea..a535a6f1f9 100644 --- a/keyboards/thevankeyboards/minivan/keymaps/josjoha/readme.md +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/readme.md @@ -3,7 +3,7 @@ A 40% keyboard made first by TheVan Keyboards _https://thevankeyboards.com_ now taken over by TKC _https://thekey.company_ -![Minivan layout all](http://socialism.nl/misc/minivan/minivan-all-layers-visualization_vc.jpg) +![Minivan layout all](http://socialism.nl/misc/minivan/minivan-all-layers-visualization_vd.jpg) Table of Contents ================= @@ -22,6 +22,8 @@ Table of Contents 3.1.6 Workman 3.2 Special layouts 3.2.1 Numbers pad + 3.3 Non-Latin languages + 3.3.1 Hebrew 4 The common system 4.1 Layer access 4.2 Layout in graphics @@ -108,7 +110,7 @@ the western European group of languages, native from the keyboard. This keymap might not function as expected if you want to use a different keyboard language setting in your operating system. -See also chapter 6 _Language support_. +See also chapter 7 _Language support_. 2 'make' example ================ @@ -195,6 +197,17 @@ with a normal layout on ‛Default’. How this works is explained below. For the readme about the Numpad version, see ➡ ![base_numpad.md](./base_numpad.md) ⬅ +3.3 Non-Latin languages +======================= + +3.3.1 Hebrew +------------ + +![Minivan layout impression](http://socialism.nl/misc/minivan/minivan_keycapview_hebrew_vc.jpg) + +For the readme about the Hebrew version, see ➡ ![base_hebrew.md](./base_hebrew.md) ⬅ + + 4 The common system =================== @@ -1053,7 +1066,9 @@ You can remove the layers `_ACC`, `_DRA` and/or `_BON` (see You can remove a set of symbols from one or more of Unicode layers, such as not having box drawing characters on `_BON`, or no sub-script -numbers on `_DRA`. +numbers on `_DRA` (see ![./user_config.h](./user_config.h) under +`Eviscerations ②/②` ) ⬅ + 12 Key associations =================== diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/unicode_hebrew.h b/keyboards/thevankeyboards/minivan/keymaps/josjoha/unicode_hebrew.h new file mode 100644 index 0000000000..881a80884b --- /dev/null +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/unicode_hebrew.h @@ -0,0 +1,116 @@ +/* + * License (GPL): + +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 . + + * Author: © 2021 by Jos Boersema + * + */ + +#pragma once + +/* An amount of Unicode #defines + * - hebrew + */ + + // +#define HB_ALEF 0x05D0 // 'HB' for 'Hebrew', "ALEF" for Alef : א +#define HB_BET 0x05D1 // " , "BET" for Bet : ב +#define HB_GIMEL 0x05D2 // " , "GIMEL" for Gimel : ג +#define HB_DALET 0x05D3 // " , "DALET" for Daled : ד +#define HB_HE 0x05D4 // " , "HE" for He : ה +#define HB_VAV 0x05D5 // " , "VAV" for Vav : ו +#define HB_ZAYIN 0x05D6 // " , "ZAYIN" for Zayin : ז +#define HB_GET 0x05D7 // " , "HET" for Het : ח +#define HB_TET 0x05D8 // " , "TET" for Tet : ט +#define HB_YOD 0x05D9 // " , "YOD" for Yod : י +#define HB_KAFS 0x05DA // " , "KAFS" for Kaf sofiet : ך +#define HB_KAF 0x05DB // " , "KAF" for Kaf : כ +#define HB_LAMED 0x05DC // " , "LAMED" for Lamed : ל +#define HB_MEMS 0x05DD // " , "MEMS" for Mem sofiet : ם +#define HB_MEM 0x05DE // " , "MEM" for Mem : מ +#define HB_NUNS 0x05DF // " , "NUNS" for Nun sofiet : ן +#define HB_NUN 0x05E0 // " , "NUN" for Nun : נ +#define HB_SAMEG 0x05E1 // " , "SAMEG" for Sameg : ס +#define HB_AYIN 0x05E2 // " , "AYIN" for Ayin : ע +#define HB_PES 0x05E3 // " , "PES" for Pe sofiet : ף +#define HB_PE 0x05E4 // " , "PE" for Pe : פ +#define HB_TSDIS 0x05E5 // " , "TSDIS" for Tsadi sofiet: ץ +#define HB_TSADI 0x05E6 // " , "TSADI" for Tsadi : צ +#define HB_QOF 0x05E7 // " , "QOF" for Qof : ק +#define HB_RESH 0x05E8 // " , "RESH" for Resh : ר +#define HB_SHIN 0x05E9 // " , "SHIN" for Shin : ש +#define HB_TAV 0x05EA // " , "TAV" for Tav : ת +#define HB_MAQAF 0x05be // " , "MAQAF" for Maqaf : ־ + +// Yiddish digraphs: +//#define HB_D_VAV 0x05F0 // " , "D_VAV" for double Van : װ +//#define HB_VAVYD 0x05F1 // " , "VAVYD" for Vav Yod : ױ +//#define HB_D_YOD 0x05F2 // " , "D_YOD" for double Yod : ײ + +// special +#define HB_RLM 0x200F // " , "RLM" for Right-Left-Mark: +#define HB_LRM 0x200E // " , "LRM" for Left-Right-Mark: + + +// The below are displacing symbols on other layers, some of which are quite obscure +// and end up being unused. They are compiled based on a #define. +// These where reported as symbols present on hebrew keyboards: +// U+05F3 : HEBREW PUNCTUATION GERESH +// U+20AC : EURO SIGN +// U+20AA : NEW SHEQEL SIGN {shekel} +// U+00B0 : DEGREE SIGN +// U+05AB : HEBREW ACCENT OLE +// U+05BD : HEBREW POINT METEG {siluq} +// U+00D7 : MULTIPLICATION SIGN {z notation Cartesian product} +// U+200E : LEFT-TO-RIGHT MARK [LRM] +// U+200F : RIGHT-TO-LEFT MARK [RLM] +// U+05BE : HEBREW PUNCTUATION MAQAF +// U+2013 : EN DASH +// U+05C2 : HEBREW POINT SIN DOT +// U+05C1 : HEBREW POINT SHIN DOT +// U+05B8 : HEBREW POINT QAMATS +// U+05F0 : HEBREW LIGATURE YIDDISH DOUBLE VAV {tsvey vovn} +// U+05B9 : HEBREW POINT HOLAM +// U+05B7 : HEBREW POINT PATAH +// U+05B2 : HEBREW POINT HATAF PATAH +// U+05F1 : HEBREW LIGATURE YIDDISH VAV YOD +// U+05F2 : HEBREW LIGATURE YIDDISH DOUBLE YOD {tsvey yudn} +// U+05B4 : HEBREW POINT HIRIQ +// U+201D : RIGHT DOUBLE QUOTATION MARK {double comma quotation mark} +// U+201E : DOUBLE LOW-9 QUOTATION MARK {low double comma quotation mark} +// U+05F4 : HEBREW PUNCTUATION GERSHAYIM +// U+05B6 : HEBREW POINT SEGOL +// U+05B1 : HEBREW POINT HATAF SEGOL +// U+05B5 : HEBREW POINT TSERE +// U+2019 : RIGHT SINGLE QUOTATION MARK {single comma quotation mark} +// U+201A : SINGLE LOW-9 QUOTATION MARK {low single comma quotation mark} +// U+00F7 : DIVISION SIGN {obelus} +// U+05BA : HEBREW POINT HOLAM HASER FOR VAV +// U+200D : ZERO WIDTH JOINER [ZWJ] +// U+201C : LEFT DOUBLE QUOTATION MARK {double turned comma quotation mark} +// U+201D : RIGHT DOUBLE QUOTATION MARK {double comma quotation mark} +// U+034F : COMBINING GRAPHEME JOINER [CGJ] +// U+05C6 : HEBREW PUNCTUATION NUN HAFUKHA +// U+200C : ZERO WIDTH NON-JOINER [ZWNJ] +// U+2018 : LEFT SINGLE QUOTATION MARK {single turned comma quotation mark} +// U+2019 : RIGHT SINGLE QUOTATION MARK {single comma quotation mark} +// Note: many modifiers probably only work with a hebrew language setting on the computer +// operating system. As Unicode, it would print a disconnected diacretical symbol. + +// Geresh +#define HB_GERSH 0x05F3 // " , "GERSH" for Geresh : +#define HB_GRSHM 0x05F4 // " , "GRSHM" for Gershayim : +// Currency +#define HB_SHEKL 0x20AA // " , "SHEKL" for shekel : diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/unicode_macros.c b/keyboards/thevankeyboards/minivan/keymaps/josjoha/unicode_macros.c index d711c86f9b..cfcf765a08 100644 --- a/keyboards/thevankeyboards/minivan/keymaps/josjoha/unicode_macros.c +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/unicode_macros.c @@ -24,6 +24,7 @@ along with this program. If not, see . #include "./unicode_macros.h" #include "./unicode_weurope.h" +#include "./unicode_hebrew.h" // Definition of ƒ (Dutch currency symbol). // Best changed in user_config.h, if you like a Euro symbol instead. @@ -174,109 +175,150 @@ enum custom_keycodes { // The _ACC layer, additional Unicode. # ifndef REMOVE_ACC // This cuts out the whole _ACC layer. - XP_ACC_AA , - XP_ACC_AB , - XP_ACC_AC , - XP_ACC_AD , - XP_ACC_AE , - XP_ACC_AF , - XP_ACC_AG , - XP_ACC_AH , - XP_ACC_AI , - XP_ACC_AJ , - XP_ACC_BA , - XP_ACC_BB , - XP_ACC_BC , - XP_ACC_BD , - XP_ACC_BE , - XP_ACC_BF , - XP_ACC_BG , - XP_ACC_BH , - XP_ACC_BI , - XP_ACC_BJ , - XP_ACC_BK , - XP_ACC_CA , - XP_ACC_CB , - XP_ACC_CC , - XP_ACC_CD , - XP_ACC_CE , - XP_ACC_CF , - XP_ACC_CG , - XP_ACC_CH , - XP_ACC_CI , - XP_ACC_CJ , + XP_ACC_AA, + XP_ACC_AB, + XP_ACC_AC, + XP_ACC_AD, + XP_ACC_AE, + XP_ACC_AF, + XP_ACC_AG, + XP_ACC_AH, + XP_ACC_AI, + XP_ACC_AJ, + XP_ACC_BA, + XP_ACC_BB, + XP_ACC_BC, + XP_ACC_BD, + XP_ACC_BE, + XP_ACC_BF, + XP_ACC_BG, + XP_ACC_BH, + XP_ACC_BI, + XP_ACC_BJ, + XP_ACC_BK, + XP_ACC_CA, + XP_ACC_CB, + XP_ACC_CC, + XP_ACC_CD, + XP_ACC_CE, + XP_ACC_CF, + XP_ACC_CG, + XP_ACC_CH, + XP_ACC_CI, + XP_ACC_CJ, # endif // REMOVE_ACC # ifndef REMOVE_DRA // This cuts out the whole _DRA layer // The _DRA layer, additional Unicode. - XP_DRA_AA , - XP_DRA_AB , - XP_DRA_AC , - XP_DRA_AD , - XP_DRA_AE , - XP_DRA_AF , - XP_DRA_AG , - XP_DRA_AH , - XP_DRA_AI , - XP_DRA_AJ , - XP_DRA_BA , - XP_DRA_BB , - XP_DRA_BC , - XP_DRA_BD , - XP_DRA_BE , - XP_DRA_BF , - XP_DRA_BG , - XP_DRA_BH , - XP_DRA_BI , - XP_DRA_BJ ,// XP_DRA_BK , // no 'BK' key definition on this layer - XP_DRA_CA , - XP_DRA_CB , - XP_DRA_CC , - XP_DRA_CD , - XP_DRA_CE , - XP_DRA_CF , + XP_DRA_AA, + XP_DRA_AB, + XP_DRA_AC, + XP_DRA_AD, + XP_DRA_AE, + XP_DRA_AF, + XP_DRA_AG, + XP_DRA_AH, + XP_DRA_AI, + XP_DRA_AJ, + XP_DRA_BA, + XP_DRA_BB, + XP_DRA_BC, + XP_DRA_BD, + XP_DRA_BE, + XP_DRA_BF, + XP_DRA_BG, + XP_DRA_BH, + XP_DRA_BI, + XP_DRA_BJ,// XP_DRA_BK , // no 'BK' key definition on this layer + XP_DRA_CA, + XP_DRA_CB, + XP_DRA_CC, + XP_DRA_CD, + XP_DRA_CE, + XP_DRA_CF, # endif // REMOVE_DRA - XP_DRA_CG , // Needed for ☑ on Unicode tester key in _RAR + XP_DRA_CG, // Needed for ☑ on Unicode tester key in _RAR # ifndef REMOVE_DRA // This cuts out the whole _DRA layer - XP_DRA_CH , - XP_DRA_CI , - XP_DRA_CJ , + XP_DRA_CH, + XP_DRA_CI, + XP_DRA_CJ, # endif // REMOVE_DRA // The _BON layer, additional Unicode. # ifndef REMOVE_BON // Removes this layer entirely, if set. - XP_BON_AA , - XP_BON_AB , - XP_BON_AC , - XP_BON_AD , - XP_BON_AE , - XP_BON_AF , - XP_BON_AG , - XP_BON_AH , - XP_BON_AI , - XP_BON_AJ , - XP_BON_BA , - XP_BON_BB , - XP_BON_BC , - XP_BON_BD , - XP_BON_BE , - XP_BON_BF , - XP_BON_BG , - XP_BON_BH , - XP_BON_BI , - XP_BON_BJ , - XP_BON_BK , - XP_BON_CA , - XP_BON_CB , - XP_BON_CC , - XP_BON_CD , - XP_BON_CE , - XP_BON_CF , - XP_BON_CG , - XP_BON_CH , - XP_BON_CI , - XP_BON_CJ , + XP_BON_AA, + XP_BON_AB, + XP_BON_AC, + XP_BON_AD, + XP_BON_AE, + XP_BON_AF, + XP_BON_AG, + XP_BON_AH, + XP_BON_AI, + XP_BON_AJ, + XP_BON_BA, + XP_BON_BB, + XP_BON_BC, + XP_BON_BD, + XP_BON_BE, + XP_BON_BF, + XP_BON_BG, + XP_BON_BH, + XP_BON_BI, + XP_BON_BJ, + XP_BON_BK, + XP_BON_CA, + XP_BON_CB, + XP_BON_CC, + XP_BON_CD, + XP_BON_CE, + XP_BON_CF, + XP_BON_CG, + XP_BON_CH, + XP_BON_CI, + XP_BON_CJ, # endif // REMOVE_BON + +// Hebrew +# if defined(BASE_HEBREW__DEF_BASE) || defined(BASE_HEBREW__ALT_BASE) + XP_HEB_AA, + XP_HEB_AB, + XP_HEB_AC, + XP_HEB_AD, + XP_HEB_AE, + XP_HEB_AF, + XP_HEB_AG, + XP_HEB_AH, + XP_HEB_AI, + XP_HEB_AJ, + XP_HEB_BA, + XP_HEB_BB, + XP_HEB_BC, + XP_HEB_BD, + XP_HEB_BE, + XP_HEB_BF, + XP_HEB_BG, + XP_HEB_BH, + XP_HEB_BI, + XP_HEB_BJ, +# if defined(HEBREW_ISRAEL) + XP_HEB_BK, // +# endif + XP_HEB_CA, + XP_HEB_CB, + XP_HEB_CC, + XP_HEB_CD, + XP_HEB_CE, + XP_HEB_CF, + XP_HEB_CG, +# if defined(HEBREW_ISRAEL) || defined(HEBREW_DVORAK) + XP_HEB_CH, + XP_HEB_CI, + XP_HEB_CJ, +# endif + XP_HEB_MQF, // ־ +# endif //BASE_HEBREW__* + }; // Pre-existing function, called for every key up and down. @@ -1244,12 +1286,17 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { case LEDS_ON: // Toggles left/right leds on or off if (record->event.pressed) { // key down + +# ifdef RGBLIGHT_ENABLE if (leds_on == FALSE) { leds_on = TRUE; }else{ leds_on = FALSE; } + set_led_colors_ (state_recall); // Update leds } +# endif + break; # ifdef LEDS_OFF_BASE_DEF // This messes with led effect on/off, so we need to track the state of this setting now. @@ -1652,11 +1699,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { case XP_DRA_AA: // because '", the opening „“ at the ‛open’ of the keyboard (left/up) if (record->event.pressed) { // key down -# ifdef FULL_DRA_4THROW unicode_hex2output (CS_DQUHR, CS_DQUL);// “ „ -# else - unicode_hex2output_single (CS_DQUHR);// “ -# endif } break; @@ -1664,11 +1707,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { case XP_DRA_AB: // because to the right of opening “, ≤ on < if (record->event.pressed) { // key down -# ifdef FULL_DRA_4THROW unicode_hex2output (CS_DQUH, CS_ELTHAN);// ” ≤ -# else - unicode_hex2output_single (CS_DQUH);// ” -# endif } break; @@ -1676,11 +1715,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { case XP_DRA_AC: // because this is where the £ is on an English keyboard, on 'any' money symbols ¤; ≥ on > if (record->event.pressed) { // key down -# ifdef FULL_DRA_4THROW unicode_hex2output (CS_POUND, CS_EGTHAN);// £ ≥ -# else - unicode_hex2output_single (CS_POUND);// £ -# endif } break; @@ -1690,6 +1725,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { # ifdef FULL_DRA_4THROW unicode_hex2output (CS_NONE, CS_CENT);// ∅ ¢ +# else + unicode_hex2output_single (CS_NONE);// ∅ ¢ # endif } @@ -1710,11 +1747,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { case XP_DRA_AF: // Because left of 🙂, on top of ★ if (record->event.pressed) { // key down -# ifdef FULL_DRA_4THROW unicode_hex2output (CS_FLEUR, CS_HEART);// ❦ ♥ -# else - unicode_hex2output_single (CS_HEART);// ♥ -# endif } break; @@ -1722,9 +1755,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { case XP_DRA_AG: // because 😊 ⍨ if (record->event.pressed) { // key down -# ifdef FULL_DRA_4THROW unicode_hex2output (CS_SMIL, CS_SAD_);// 🙂 🙁 -# endif } break; @@ -1732,9 +1763,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { case XP_DRA_AH: // because «no reason», next to 😊 (emoticons) if (record->event.pressed) { // key down -# ifdef FULL_DRA_4THROW unicode_hex2output (CS_THUP, CS_THDN);// 👍 👎 -# endif } break; @@ -2343,6 +2372,299 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { break; # endif // REMOVE_BON + +// Hebrew +# if defined(BASE_HEBREW__DEF_BASE) || defined(BASE_HEBREW__ALT_BASE) +// The layout follows a standard hebrew keyboard, with the exception +// of ק, which is displaced by “.>” copied from the Dvorak layout. + + // HEBREW_DVORAK + // These letters on the upper left follow Dvorak layout. + // The reason is space on the device: these are not macros. + // Also: typing compatibility between Dvorak and Hebrew + // for these similar/same symbols: ,<.>. Idealy these symbols + // should be the hebrew variation, if space allows it. + +# if defined(HEBREW_ISRAEL) + + case XP_HEB_AA: // + if (record->event.pressed) { // key down + // These shifts-up seem to work on GNU/Debian/Linux, otherwise it prints ':' + if (shift_ison) send_string ( SS_UP(X_RSFT) SS_UP(X_LSFT) ";" ); // moved here from on standard hebrew + else send_string ("/");// + } break; + + case XP_HEB_AB: // + if (record->event.pressed) { // key down + unicode_hex2output_single (HB_GERSH);// ׳ + } + break; + + case XP_HEB_AC: // + if (record->event.pressed) { // key down + unicode_hex2output_single (HB_QOF);// ק + } + break; + +# elif defined(HEBREW_QWERTY) + + case XP_HEB_AA: // + if (record->event.pressed) { // key down + unicode_hex2output_single (HB_TAV);// ת + } + break; + + case XP_HEB_AB: // + if (record->event.pressed) { // key down + unicode_hex2output_single (HB_TSDIS);// ץ + } + break; + + case XP_HEB_AC: // + if (record->event.pressed) { // key down + unicode_hex2output_single (HB_QOF);// ק + } + break; + +# endif // #HEBREW_* + + case XP_HEB_AD: // + if (record->event.pressed) { // key down + unicode_hex2output_single (HB_RESH);// ר + } + break; + + case XP_HEB_AE: // + if (record->event.pressed) { // key down + unicode_hex2output_single (HB_ALEF);// א + + } + break; + + case XP_HEB_AF: // + if (record->event.pressed) { // key down + unicode_hex2output_single (HB_TET);// ט + } + break; + + case XP_HEB_AG: // + if (record->event.pressed) { // key down + unicode_hex2output_single (HB_VAV);// ו + } + break; + + case XP_HEB_AH: // + if (record->event.pressed) { // key down + unicode_hex2output_single (HB_NUNS);// ן + } + break; + + case XP_HEB_AI: + if (record->event.pressed) { // key down + +# if defined(HEBREW_ISRAEL) + // The logic is that it mirrors '", “„, ”≤, ‛’ in Dvorak Base and other layers. + // Therefore the little and ring fingers are used. Mirroring ━─ and ┄┅ on DRA_ + // layer, the outside on the keyboard is “big/fat”, the inside is “small/thin”, + // like something protected in a shell. Hence: ……׳״ + unicode_hex2output_single (HB_MEMS);// ם // ׳ is located elsewhere +# elif defined(HEBREW_QWERTY) || defined(HEBREW_DVORAK) + unicode_hex2output (HB_MEMS, HB_GERSH);// ם׳ +# endif + + } + break; + + case XP_HEB_AJ: // + if (record->event.pressed) { // key down + +# if defined(HEBREW_ISRAEL) + unicode_hex2output_single (HB_PE);// פ // ״ is located elsewhere +# elif defined(HEBREW_QWERTY) || defined(HEBREW_DVORAK) + unicode_hex2output (HB_PE, HB_GRSHM);// פ״ +# endif + + } + break; + + // ------------------------- row 3 + case XP_HEB_BA: // + if (record->event.pressed) { // key down + unicode_hex2output_single (HB_SHIN);// ש + } + break; + + case XP_HEB_BB: // + if (record->event.pressed) { // key down + unicode_hex2output_single (HB_DALET);// ד + } + break; + + case XP_HEB_BC: //Right-left-mark to the first free strong homerow finger on the left (middle) + if (record->event.pressed) { // key down + unicode_hex2output (HB_GIMEL, HB_RLM);// ג {RLM} + } + break; + + case XP_HEB_BD: // The logic is that כ is the same key as 4 on another layer, which connects + // with $, and other currencies in the same region (ƒ£). + if (record->event.pressed) { // key down + unicode_hex2output (HB_KAF, HB_SHEKL);// כ₪ + } + break; + + case XP_HEB_BE: // + if (record->event.pressed) { // key down + unicode_hex2output_single (HB_AYIN);// ע + } + break; + + case XP_HEB_BF: // + if (record->event.pressed) { // key down + unicode_hex2output_single (HB_YOD);// י + } + break; + + case XP_HEB_BG: // + if (record->event.pressed) { // key down + unicode_hex2output_single (HB_GET);// ח + } + break; + + case XP_HEB_BH: // + if (record->event.pressed) { // key down + unicode_hex2output (HB_LAMED, HB_LRM);// ל {LRM} + } + break; + + case XP_HEB_BI: // + if (record->event.pressed) { // key down + unicode_hex2output_single (HB_KAFS);// ך + } + break; + + case XP_HEB_BJ: // + if (record->event.pressed) { // key down + +# if defined(HEBREW_ISRAEL) || defined(HEBREW_QWERTY) + if (shift_ison) send_string (":"); // : (the hebrew eqquivalent is apparently almost never used, and this saves space) + else unicode_hex2output_single (HB_PES);// ף +# elif defined(HEBREW_DVORAK) + unicode_hex2output_single (HB_PES);// ף +# endif + + } + break; + +# if defined(HEBREW_ISRAEL) + case XP_HEB_BK: // + if (record->event.pressed) { // key down + if (shift_ison) unicode_hex2output_single (HB_GRSHM);// ״ + else send_string (","); // comma + } + break; +# endif + + case XP_HEB_MQF: // ־ Maqaf + if (record->event.pressed) { // key down + unicode_hex2output_single (HB_MAQAF);// ־ + } + break; + + // ------------------------- row 2 + case XP_HEB_CA: // + if (record->event.pressed) { // key down +// Hebrew harmonization + ':' +# if defined(HEBREW_ISRAEL) || defined(HEBREW_QWERTY) + unicode_hex2output_single (HB_ZAYIN);// ז +# elif defined(HEBREW_DVORAK) + if (shift_ison) send_string (":"); // + else unicode_hex2output_single (HB_ZAYIN);// ז +# endif + } + break; + + case XP_HEB_CB: // + if (record->event.pressed) { // key down + unicode_hex2output_single (HB_SAMEG);// ס + } + break; + + case XP_HEB_CC: // + if (record->event.pressed) { // key down + unicode_hex2output_single (HB_BET);// ב + } + break; + + case XP_HEB_CD: // + if (record->event.pressed) { // key down + unicode_hex2output_single (HB_HE);// ה + } + break; + + case XP_HEB_CE: // + if (record->event.pressed) { // key down + unicode_hex2output_single (HB_NUN);// נ + } + break; + + case XP_HEB_CF: // + if (record->event.pressed) { // key down + unicode_hex2output_single (HB_MEM);// מ + } + break; + + case XP_HEB_CG: // + if (record->event.pressed) { // key down + unicode_hex2output_single (HB_TSADI);// צ + } + break; + +# if defined(HEBREW_ISRAEL) || defined(HEBREW_DVORAK) + case XP_HEB_CH: // + if (record->event.pressed) { // key down + +# if defined(HEBREW_ISRAEL) + if (shift_ison) send_string ("<"); // + else unicode_hex2output_single (HB_TAV);// ת +# else // HEBREW_DVORAK + unicode_hex2output_single (HB_TAV);// ת +# endif + + } + break; + + case XP_HEB_CI: // + if (record->event.pressed) { // key down + +# if defined(HEBREW_ISRAEL) + if (shift_ison) send_string (">"); // + else unicode_hex2output_single (HB_TSDIS);// ץ +# else // HEBREW_DVORAK + unicode_hex2output_single (HB_TSDIS);// ץ +# endif + + } + break; + + case XP_HEB_CJ: // anomaly + if (record->event.pressed) { // key down + +# if defined(HEBREW_ISRAEL) + if (shift_ison) send_string ("?"); // + else send_string ("."); // +# else // HEBREW_DVORAK + unicode_hex2output_single (HB_QOF);// ק +# endif + + } + break; +# endif // HEBREW_* + + // HB_D_VAV, + // HB_VAVYD, + // HB_D_YOD, +# endif // Hebrew Base layer } return true; diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/unicode_macros.h b/keyboards/thevankeyboards/minivan/keymaps/josjoha/unicode_macros.h index 5969525ca9..3543315911 100644 --- a/keyboards/thevankeyboards/minivan/keymaps/josjoha/unicode_macros.h +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/unicode_macros.h @@ -30,6 +30,7 @@ static uint16_t key_timer; // Used in _DDL to differentiate layer switching in h short duo_press_nsy_dra = 0; // This remembers how many of the duo-press keys are being pressed: _NSY / _DRA layers short duo_press_acc_bon = 0; // This remembers how many of the duo-press keys are being pressed: _ACC / _BON layers +layer_state_t state_recall; // Also used when leds on/off is pressed void deactivate_all_but (int layer); void activate_this_layer (int layer); @@ -40,5 +41,6 @@ void speed_led (int speed); void indicate_fun_stay (void); int write_number (long int input, short divide10); void isolate_rgblight_set (void); +void set_led_colors_ (layer_state_t state); diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/unicode_weurope.h b/keyboards/thevankeyboards/minivan/keymaps/josjoha/unicode_weurope.h index 56a50b80c5..f4a5bdab72 100644 --- a/keyboards/thevankeyboards/minivan/keymaps/josjoha/unicode_weurope.h +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/unicode_weurope.h @@ -18,6 +18,8 @@ along with this program. If not, see . * */ +#pragma once + /* An amount of Unicode #defines * - western european accented characters * - various punctuation symbols, different number formats, math symbols, other symbols. diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/user_config.h b/keyboards/thevankeyboards/minivan/keymaps/josjoha/user_config.h index 293fd15a06..6552c9a49f 100644 --- a/keyboards/thevankeyboards/minivan/keymaps/josjoha/user_config.h +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/user_config.h @@ -18,6 +18,7 @@ along with this program. If not, see . * */ +#pragma once // ------------------------------------- ⬇ -------------------------------------- // Configuration: @@ -47,6 +48,7 @@ along with this program. If not, see . • Colemak • Workman • Numpad + • Hebrew -2- ➡ Eviscerations ( ① / ② ) ⬅ • Single layout @@ -146,6 +148,7 @@ along with this program. If not, see . // _Activate_ one of these two, _remove_ the other. //#define BASE_QWERTY_BASEARROW__DEF_BASE // _Activate_ if you want Qwerty with Base arrows on the ‛Default’ spot //#define BASE_QWERTY_BASEARROW__ALT_BASE // _Activate_ if you want Qwerty with Base arrows on the ‛Alternate’ spot + // ➡ ➡ ➡ This Base layer has configuration options at the top of its file. See ./ base_qwerty_basearrow.h // // • Dvorak // (a regular Dvorak layout) @@ -174,7 +177,14 @@ along with this program. If not, see . // (a numerical keypad, one for left hand and one for right hand) // _Activate_ to get Numpad on Alternate. There is no option for Numpad on ‛Default’ base. #define BASE_NUMPAD__ALT_BASE // _Activate_ if you want Numpad on the ‛Alternate’ spot - // ➡ ➡ ➡ This Base layer has configuration options at the top of its file. See ./base_numpad.c + // ➡ ➡ ➡ This Base layer has configuration options at the top of its file. See ./base_numpad.h + // + // • Hebrew + // (a simple Hebrew layout) + // _Activate_ one of these two, _remove_ the other. +//#define BASE_HEBREW__DEF_BASE // _Activate_ if you want Hebrew on the ‛Default’ spot +//#define BASE_HEBREW__ALT_BASE // _Activate_ if you want Hebrew on the ‛Alternate’ spot + // ➡ ➡ ➡ This Base layer has configuration options at the top of its file. See ./base_hebrew.h // /* -2- ➡ Eviscerations ( ① / ② ) ⬅ */ @@ -517,12 +527,12 @@ along with this program. If not, see . // Thinned out 2nd row: LSht ━ ─ ° • … ☐ ☑ ☑ ¿¡ ┄ ┅ RSht // #define FULL_DRA_4THROW // _Activate_ to have symbols on all unshifted + shifted positions on _DRA, 4th row. - // Affected 4th row: „ ≤ ≥ ∅ ¢ ƒ ❦ 🙂 🙁 👍 👎 ⁽ ₍ ⁾ ₎ + // Affected 4th row: ¢ ƒ ⁽ ₍ ⁾ ₎ // Full 4th row: BASE “„ ”≤ £≥ ∅ ¢ ±ƒ ❦ ♥ 🙂🙁 👍👎 ⁽₍ ⁾₎ Bkspc - // Thinned out 4th row: BASE “ ” £ ± ♥ Bkspc + // Thinned out 4th row: BASE “„ ”≤ £≥ ∅ ± ❦ ♥ 🙂🙁 👍👎 Bkspc // #define FULL_BON_4THROW // _Activate_ to have symbols on all unshifted + shifted positions on _BON, 4th row. - // Affected 4th row: 🛠 ¤ ∑ ‱ ٭ 😊 ⍨ ⃰ ⁻ ⁺ 🄯 © + // Affected 4th row: 🛠 ¤ ∑ ‱ ٭ 😊 ⍨ ⃰ ⁻ ⁺ 🄯 © ⃰ √ ⁻⁺ // Full 4th row: BASE ‛🛠 ’⬆ ¤ 🄯 ∑ © ‰‱ ★٭ 😊⍨ × ⃰ √ ⁻⁺ Bkspc // Thinned out 4th row: BASE ‛ ’⬆ ‰ ★ × Bkspc // @@ -559,7 +569,11 @@ along with this program. If not, see . # endif // * Qwerty Base Arrow * # if defined(BASE_QWERTY_BASEARROW__DEF_BASE) || defined(BASE_QWERTY_BASEARROW__ALT_BASE) -# include "./base_qwerty_basearrow.h" // Your Keymap header/configuration file. +# include "./base_qwerty_basearrow.h" // qwerty base arrow, header +# endif +// * Hebrew * +# if defined(BASE_HEBREW__DEF_BASE) || defined(BASE_HEBREW__ALT_BASE) +# include "./base_hebrew.h" // Hebrew header # endif // // ⬇ insert your ./base_YOUR_KEYMAP.h #include here: