Skip to content

Commit 724ec90

Browse files
josjoha0xcharly
authored andcommitted
Adds optional hebrew layout (Unicode) (qmk#14156)
1 parent c6c2a54 commit 724ec90

File tree

13 files changed

+1157
-132
lines changed

13 files changed

+1157
-132
lines changed

keyboards/thevankeyboards/minivan/keymaps/josjoha/base_hebrew.c

Lines changed: 291 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
/*
2+
* License (GPL):
3+
4+
This program is free software: you can redistribute it and/or modify
5+
it under the terms of the GNU General Public License as published by
6+
the Free Software Foundation, either version 2 of the License, or
7+
(at your option) any later version.
8+
9+
This program is distributed in the hope that it will be useful,
10+
but WITHOUT ANY WARRANTY; without even the implied warranty of
11+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12+
GNU General Public License for more details.
13+
14+
You should have received a copy of the GNU General Public License
15+
along with this program. If not, see <http://www.gnu.org/licenses/>.
16+
17+
* Author: © 2021 by Jos Boersema
18+
*
19+
*/
20+
21+
#pragma once
22+
23+
// --------------------------------------v---------------------------------------
24+
// Configuration:
25+
// --------------------------------------v---------------------------------------
26+
27+
/* Harmonize layout with a Latin layout
28+
*
29+
* See base_hebrew.md for design objectives.
30+
*/
31+
#define HEBREW_ISRAEL // Close to standard Israeli hebrew.
32+
//#define HEBREW_QWERTY // Harmonize punctuation symbols with Qwerty.
33+
//#define HEBREW_DVORAK // Harmonize punctuation symbols with Dvorak.
34+
35+
// --------------------------------------^---------------------------------------
36+
// Below here no more comfortable configuration options.....
37+
// --------------------------------------^---------------------------------------
38+
39+
/* Redefine a layer in this file
40+
*
41+
* _Activate_ one or more of the below BASESFILE_LAYER_..., to redefine the layer
42+
* in this file. The version in ./keymap.c will be ignored. Keep in mind to use
43+
* transparent keys (_______) for “hold” layer switch keys on the BASE map, for
44+
* your new layer.
45+
*/
46+
// #define BASESFILE_LAYER_ACC
47+
// #define BASESFILE_LAYER_DRA
48+
// #define BASESFILE_LAYER_BON
49+
// #define BASESFILE_LAYER_PAD
50+
// #define BASESFILE_LAYER_MOV
51+
// #define BASESFILE_LAYER_RAR
52+
// #define BASESFILE_LAYER_FUN
Lines changed: 198 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,198 @@
1+
# Minifan layout
2+
3+
Compiled for: Hebrew
4+
====================
5+
6+
This file details the compile version `#define BASE_HEBREW__DEF_BASE,
7+
BASE_HEBREW__ALT_BASE`. This is a basic Hebrew layout, without niqqud.
8+
9+
Only the most common symbols are implemented. Hebrew symbols are all
10+
done in Unicode.
11+
12+
See also ![./readme.md](./readme.md) chapter 7 _Language support_.
13+
14+
Parenthesis/braces/etc direction seems to be dealt with at the computer
15+
side, depending on the surrounding symbols. The keyboard is printing
16+
these symbols unchanged from what they are in standard Latin layouts,
17+
and are represented that way in the manual.
18+
19+
Options
20+
=======
21+
22+
You can compile the hebrew to be like a common Israeli layout, or to harmonize the
23+
punctuation symbols with either Dvorak or Qwerty. See the configuration file
24+
![./base_hebrew.h](./base_hebrew.h)
25+
26+
☞ Israeli Hebrew
27+
28+
As close to a simple standard hebrew layout as possible.
29+
A little larger memory cost than the other options. No `'"` ASCII quotes symbols,
30+
but proper ׳ and ״ (in Unicode).
31+
32+
☞ Qwerty with Hebrew
33+
34+
The letters ת, ץ get displaced from the standard hebrew layout.
35+
Numerical layer is the same as standard Qwerty, except the symbol
36+
`_` symbol becomes `־` (Maqaf). No `;` symbol.
37+
38+
☞ Qwerty derivatives with Hebrew
39+
40+
It is adviced to use Qwerty with Hebrew in this case, and adjust by hand
41+
coding if needed. “Workman” should harmonize the same as Qwerty.
42+
Colemak displaces the “;:” key relative to Qwerty, therefore you may
43+
like to change the “:” shifted symbol (by hand). The obscurity of this
44+
use case gets extreme, there will not be options for this.
45+
46+
☞ Dvorak with Hebrew
47+
48+
The letter ק gets displaced from the standard hebrew layout.
49+
Numerical layer is the same as standard Dvorak. No `;` symbol.
50+
51+
52+
Flash memory cost
53+
-----------------
54+
55+
This layout adds several dozen new Unicode symbols, which takes up a certain
56+
amount of additional space in keyboard memory. If you end up going over
57+
the limit, you may need to change your compilation software setup, and/or
58+
you can look into the “Eviscerations” chapters in ![./user_config.h](./user_config.h)
59+
60+
Hebrew keymaps
61+
--------------
62+
63+
──────────Hebrew Israel────────
64+
65+
![Minivan layout Image BASEdef-alt](http://socialism.nl/misc/minivan/minivan_base_layer_hebrew-israel_ve.jpg)
66+
Layer: `..._BASE`
67+
68+
![Minivan layout Image NSYdef-alt](http://socialism.nl/misc/minivan/minivan_nsy_layer_hebrew-israel_vd.jpg)
69+
Layer: `..._NSY`
70+
71+
──────────in common────────────
72+
73+
(…)
74+
75+
──────────Hebrew Qwerty────────
76+
77+
![Minivan layout Image BASEdef-alt](http://socialism.nl/misc/minivan/minivan_base_layer_hebrew-qwerty_ve.jpg)
78+
Layer: `..._BASE`
79+
80+
![Minivan layout Image NSYdef-alt](http://socialism.nl/misc/minivan/minivan_nsy_layer_hebrew-israel_vd.jpg)
81+
Layer: `..._NSY`
82+
83+
──────────in common────────────
84+
85+
(…)
86+
87+
──────────Hebrew Dvorak────────
88+
89+
![Minivan layout Image BASEdef-alt](http://socialism.nl/misc/minivan/minivan_base_layer_hebrew-dvorak_ve.jpg)
90+
Layer: `..._BASE`
91+
92+
![Minivan layout Image NSYdef-alt](http://socialism.nl/misc/minivan/minivan_nsy_layer_dvorak_vc.jpg)
93+
Layer: `..._NSY` (Same as Dvorak.)
94+
95+
──────────in common────────────
96+
97+
(…)
98+
99+
For more about the other layers, see ➡ ![readme.md](./readme.md)
100+
101+
![Minivan illustration Overview layers by key, Hebrew](http://socialism.nl/misc/minivan/minivan-all-layers-clear-visualization-by-key_hebrew_2000_vk.jpg)
102+
103+
Layers (text)
104+
=============
105+
106+
(The “x” padding was necessary to undo the direction of these characters being reversed.
107+
This layout might still not be represenetd correctly on your system. See the graphics instead.)
108+
109+
HEBREW_ISRAEL
110+
| Right hand
111+
<pink2 <pinky<ring <middl<index<indx2| indx2>index>middl>ring> pinky>pinky2> // Keys by finger
112+
-o- <|> ... //-o- BASE access
113+
Escxxxxxxxx/;xxxx׳xxxxxקxxxxxרxxxxxאxxxxx|xטxxxxxוxxxxxןxxxxxםxxxxxפxxxxxxxxxxBksp
114+
Tab+LCtlxxxשxxxxxדxxxxxג/RLMxכx₪xxxעxxxxx|xיxxxxxחxxxxxל/LRMxךxxxxxף:xxxxxxxxxxx,״ //Right-Left-Mark
115+
LSht+_PADxxזxxxxxסxxxxxבxxxxxהxxxxxנxxxxx|xמxxxxxצxxxxxת<xxxxץ>xxxx.?xxxxRSht+_FUN //<>os side flip?
116+
+_MOV⁵ | +_RAR⁶
117+
---------------------------------------------------------------------------------------
118+
119+
HEBREW_QWERTY
120+
| Right hand
121+
<pink2 <pinky<ring <middl<index<indx2| indx2>index>middl>ring> pinky>pinky2> // Keys by finger
122+
-o- <|> ... //-o- BASE access
123+
Escxxxxxxxxת•xxxxץ•xxxxקxxxxxרxxxxxאxxxxx|xטxxxxxוxxxxxןxxxxxםx׳xxxפx״xxxxxxxxBksp
124+
Tab+LCtlxxxשxxxxxדxxxxxג/RLMxכx₪xxxעxxxxx|xיxxxxxחxxxxxל/LRMxךxxxxxף:xxxxxxxxxxx'" //Right-Left-Mark
125+
LSht+_PADxxזxxxxxסxxxxxבxxxxxהxxxxxנxxxxx|xמxxxxxצxxxxx,<xxxx.>xxxx/?xxxxRSht+_FUN
126+
+_MOV⁵ | +_RAR⁶
127+
---------------------------------------------------------------------------------------
128+
(…)
129+
130+
HEBREW_DVORAK
131+
Layer _..._BASE (LeTteRs, standard Hebrew)
132+
| Right hand
133+
<pink2 <pinky<ring <middl<index<indx2| indx2>index>middl>ring> pinky>pinky2> // Keys by finger
134+
-o- <|> ... //-o- BASE access
135+
Escxxxxxxxx'"xxxx,<xxxx.>xxxxרxxxxxאxxxxx|xטxxxxxוxxxxxןxxxxxםx׳xxxפx״xxxxxxxxBksp
136+
Tab+LCtlxxxשxxxxxדxxxxxג/RLMxכx₪xxxעxxxxx|xיxxxxxחxxxxxל/LRMxךxxxxxףxxxxxxxxxxxxx־ //Right/Left-Mark
137+
LSht+_PADxxז:xxxxסxxxxxבxxxxxהxxxxxנxxxxx|xמxxxxxצxxxxxתxxxxxץxxxxxק•xxxxRSht+_FUN
138+
+_MOV⁵ | +_RAR⁶
139+
---------------------------------------------------------------------------------------
140+
Left+LAlt Del;_ACC _DEF_NSY(_DRA) Enter+_MOV| Space _DEF_NSY(_DRA) RGUI Right;_RAR
141+
hold hold₍₁,₂٭₎ hold | hold₍₁,₂٭₎ hold // switch type
142+
hold₍₂₎ ^-┃-----------------------+--------^ ┃ // ₁₎ both = _DRA
143+
┗━━━_BON━━━╋┅───────────┄┄┄«or»┄┄┄─+─────────┅┛ // ₂₎ both = _BON
144+
<1 ± <2 <3 <4 | 4> 3> 2> ± 1> // Keys by number
145+
^³ ^⁴ // Optional more keys
146+
(LGUI) (_MOV)
147+
148+
149+
₁) Dual hold for _DRA, single hold for _DEF_NSY. Marked by: ^--…--^
150+
₂) Hold key “<2” with either٭ key “<3” or “3>” for _BON, single hold “<2” for _ACC. Marked: ┗━━…━━┛
151+
₃) 'South paw' hardware configuration. Configurable, default shown.
152+
₄) 'Arrow' hardware configuration Configurable, default shown.
153+
₃ ₄) There are two more optional hardware keys, to make it easier to compile for
154+
a 12x12x12x11 or 12x12x12x12 layouts.
155+
₅) Left Shift when pressed with another key. Medium long: to toggle _PAD. Long: toggle _MOV.
156+
₆) Right shift when pressed with another key. medium long: to toggle _FUN. Long: toggle _RAR.
157+
⁷) Letters marked with • are displaced from standard hebrew layout.
158+
159+
Remarks: The left modifiers have a slight delay in combination with an outside pointer device (mouse, stylus).
160+
It seems this will be difficult to fix, because it is spread over two devices. To avoid the
161+
±0.2 second delay, activate a layer where the modifiers are direct (`_PAD`), using the layer toggle on left shift.
162+
163+
The two keys with ';' (Del;`_ACC`, Right;`_RAR`) do not auto-repeat on double tap, like QMK normal layer-tap keys.
164+
There is an uncluttered _Delete_ on `_PAD`, an uncluttered _Right_ arrow on the `_MOV` layer.
165+
166+
Holding both `_DEF_NSY` keys left and right of the "split space bar" (enter, space) results in layer `_DRA`.
167+
168+
Holding either one of the just above mentioned `_DEF_NSY` layer keys (<3 and 3>), with the `_ACC` layer key
169+
(on <2) results in layer `_BON`.
170+
171+
- - -
172+
173+
Layer _..._NSY (Numbers and SYmbols)
174+
175+
HEBREW_ISRAEL & HEBREW_QWERTY (_ becomes ־ Maqaf)
176+
<pink2 <pinky<ring <middl<index<indx2| indx2>index>middl>ring>pin>pink2>
177+
-*- <|> //(toggle) Access on _FUN
178+
BASExxxxx!xxxxx@xxxxx#xxxxx$xxxxx%xxxxx|x^xxxxx&xxxxx*xxxxx(xxxx)xxxxxxxDel
179+
Tab+LCtlx1!xxxx2@xxxx3#xxxx4$xxxx5%xxxx|x6^xxxx7&xxxx8*xxxx9(xxx0)xx`~+RCtl
180+
-+LShtxxx[{xxxx]}xxxx-_xxxx\|xxxx=+xxxx|x+xxxxx|xxxxx־xxxxx{xxxxx}xxx~+RSht
181+
^ // Only difference with Qwerty
182+
---------------------------------------------------------------------------
183+
Left+LAlt ___ ___ Ent | . ___ RGUI Right+RAlt
184+
-*- <|> -*- //(hold) Access on _DEF_BASE
185+
<1 ± <2 <3 <4 | 4> 3> 2> ± 1>
186+
^ ^
187+
(LGUI) (_MOV)
188+
189+
190+
HEBREW_DVORAK (Same as standard Dvorak)
191+
<pink2 <pinky<ring <middl<index<indx2| indx2>index>middl>ring>pin>pink2>
192+
-*- <|> //(toggle) Access on _FUN
193+
BASE ! @ # $ % | ^ & * ( ) Del
194+
Tab+LCtl 1! 2@ 3# 4$ 5% | 6^ 7& 8* 9( 0) `~+RCtl
195+
-+LSht [{ ]} /? \| =+ | + | ? { } ~+RSht
196+
---------------------------------------------------------------------------
197+
(…)
198+
- - -

keyboards/thevankeyboards/minivan/keymaps/josjoha/base_numpad.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
1818
*
1919
*/
2020

21+
#pragma once
22+
2123
// --------------------------------------v---------------------------------------
2224
// Configuration:
2325
// --------------------------------------v---------------------------------------

keyboards/thevankeyboards/minivan/keymaps/josjoha/base_qwerty_basearrow.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
1818
*
1919
*/
2020

21+
#pragma once
22+
2123
// --------------------------------------v---------------------------------------
2224
// Configuration:
2325
// --------------------------------------v---------------------------------------

keyboards/thevankeyboards/minivan/keymaps/josjoha/keymap.c

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ bool led_middle_on = TRUE; // Set to off later, if startup setting is off.
146146
bool isolate_trigger = FALSE; // detects if _FUN layer move was pressed, and no other key (no normal use of Shift).
147147
bool capslock; // keeps track of capslock state
148148
bool numlock; // keeps track of numlock state
149-
layer_state_t state_recall; // We are calling the function set_led_colors_ from this file as well.
149+
//layer_state_t state_recall; // We are calling the function set_led_colors_ from this file as well.
150150
// speed measuring
151151
bool speed_measure = SPEED_INIT_VALUE; // feature activated or not on startup
152152
uint32_t speed_counttime; // counts the time
@@ -289,8 +289,8 @@ void speed_led (int speed) {
289289

290290
// do this in one place to handle left/right leds being off here
291291
void isolate_rgblight_set () {
292-
# ifdef RGBLIGHT_ENABLE
293292

293+
# ifdef RGBLIGHT_ENABLE
294294
if (!leds_on) { // left/right leds are off
295295
// overwrite previously colors
296296
uint8_t led0r = 0; uint8_t led0g = 0; uint8_t led0b = 0;
@@ -305,8 +305,8 @@ void isolate_rgblight_set () {
305305
setrgb(led2r, led2g, led2b, (LED_TYPE *)&led[2]); // Led 2
306306
}
307307
rgblight_set ();
308-
309308
# endif
309+
310310
}
311311

312312

@@ -335,7 +335,7 @@ void indicate_fun_stay (void) {
335335

336336

337337
// _RAR layer leds
338-
// It is a function because this is called when the Base layer OTHER_BASE key is pressed
338+
// It is a function because this is also called when the Base layer OTHER_BASE key is pressed
339339
void indicate_base (void) {
340340
# ifdef RGBLIGHT_ENABLE
341341

@@ -614,6 +614,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
614614
# include "./base_numpad.c" // Numbers pad
615615
# endif
616616

617+
// * Hebrew *
618+
# if defined(BASE_HEBREW__DEF_BASE) || defined(BASE_HEBREW__ALT_BASE)
619+
# include "./base_hebrew.c" // Hebrew
620+
# endif
621+
617622
// // ⬇ insert your ./base_YOUR_KEYMAP.c #include here:
618623

619624

keyboards/thevankeyboards/minivan/keymaps/josjoha/minifan_config_compact.h

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,25 +14,29 @@ GNU General Public License for more details.
1414
You should have received a copy of the GNU General Public License
1515
along with this program. If not, see <http://www.gnu.org/licenses/>.
1616
17-
* © 2020,2021 by Jos Boersema
17+
* © 2020,2021 by Jos Boersema
1818
*/
1919

20+
#pragma once
21+
2022
/*
2123
* If MINIFAN_CONFIG_COMPACT in ./user_config.h ⬇
2224
*/
2325

2426
//#define BASE_QWERTY__DEF_BASE
2527
//#define BASE_QWERTY__ALT_BASE
26-
//#define BASE_QWERTY_BASEARROW__DEF_BASE
27-
//#define BASE_QWERTY_BASEARROW__ALT_BASE
28+
//#define BASE_QWERTY_BASEARROW__DEF_BASE // ➡ base_qwerty_basearrow.h
29+
//#define BASE_QWERTY_BASEARROW__ALT_BASE // ➡ base_qwerty_basearrow.h
2830
#define BASE_DVORAK__DEF_BASE
2931
//#define BASE_DVORAK__ALT_BASE
30-
#define BASE_DVORAK_DESCRAMBLE__ALT_BASE
32+
//#define BASE_DVORAK_DESCRAMBLE__ALT_BASE
3133
//#define BASE_COLEMAK__DEF_BASE
3234
//#define BASE_COLEMAK__ALT_BASE
3335
//#define BASE_WORKMAN__DEF_BASE
3436
//#define BASE_WORKMAN__ALT_BASE
35-
//#define BASE_NUMPAD__ALT_BASE
37+
//#define BASE_NUMPAD__ALT_BASE // ➡ base_numpad.h
38+
//#define BASE_HEBREW__DEF_BASE // ➡ base_hebrew.h
39+
#define BASE_HEBREW__ALT_BASE // ➡ base_hebrew.h
3640

3741
//#define MINIFAN_SINGLE_LAYOUT
3842

@@ -66,7 +70,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
6670
#define ARROWS_TRIANGLE
6771
//#define VI_SWITCHERYDOO
6872

69-
//#define NUMPAD_COMMON_SQUARE
73+
#define NUMPAD_COMMON_SQUARE
7074

7175
#define SPEED_COUNTDOWN 25
7276
#define SPEED_HUE_STEP 8
@@ -100,5 +104,5 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
100104
#define FULL_DRA_4THROW
101105
#define FULL_BON_4THROW
102106

103-
#define LEDS_OFF_BASE_DEF
104-
#define LEDS_OFF_BASE_ALT
107+
//#define LEDS_OFF_BASE_DEF
108+
//#define LEDS_OFF_BASE_ALT

0 commit comments

Comments
 (0)