Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adds optional hebrew layout (Unicode) #14156

Merged
merged 27 commits into from
Sep 16, 2021
Merged
Show file tree
Hide file tree
Changes from 24 commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
0ae22a0
Adding hebrew
josjoha Jul 29, 2021
54972ad
Hebrew layout option.
josjoha Jul 29, 2021
20f7199
Adding some hebrew symbols. Changed DRA evisceration
josjoha Aug 1, 2021
7e3ed73
Text documentation for Hebrew.
josjoha Aug 1, 2021
53ceaae
See previous: forgotten “git add .”.
josjoha Aug 1, 2021
069e0eb
Formatting issues hebrew direction in readme.md
josjoha Aug 1, 2021
05fc94b
Format hebrew issues in readme.md.
josjoha Aug 1, 2021
8bb96ea
Display hebrew problem in readme.md on github.
josjoha Aug 1, 2021
7aa7c96
Display direction problems Hebrew in readme.md in github.
josjoha Aug 1, 2021
de5880f
Display issues hebrew in readme.md on github.
josjoha Aug 1, 2021
1898f4a
Fix: dispay issues hebrew in readme.md on github.
josjoha Aug 1, 2021
b688c6d
Display issues hebrew on github HTML preview
josjoha Aug 1, 2021
b5b5f52
Added ':' to Hebrew layout
josjoha Aug 4, 2021
969086d
A Hebrew layout harmonizing with Qwerty
josjoha Aug 5, 2021
a5d7779
Added to hebrew readme about language setting
josjoha Aug 5, 2021
dcf6b5c
Implemented standard hebrew layout
josjoha Aug 6, 2021
f06812f
Hebrew-Israeli: '" changed to excl. ׳ ״.
josjoha Aug 15, 2021
0cb9d83
Leds on/off now reacts immediately
josjoha Aug 17, 2021
269b623
Graphics files for Base layer (letters) hebrew
josjoha Aug 19, 2021
19eb679
NSY layer graphics hebrew manual
josjoha Aug 22, 2021
31fc6c2
Some hebrew manual fixing/improving
josjoha Aug 24, 2021
725679c
graphics fix
josjoha Aug 24, 2021
63e08cc
Added 'Israel' to by-key graphic heading
josjoha Aug 25, 2021
dc44fc5
Added “hebrew” to first readme graphic
josjoha Aug 27, 2021
3fe9fd0
Changed default configuration
josjoha Sep 12, 2021
7c8fbf3
© 《author》 statement comment was wrong year
josjoha Sep 15, 2021
f95f2c1
Adding “#pragma once” to all header.h files
josjoha Sep 15, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
291 changes: 291 additions & 0 deletions keyboards/thevankeyboards/minivan/keymaps/josjoha/base_hebrew.c

Large diffs are not rendered by default.

50 changes: 50 additions & 0 deletions keyboards/thevankeyboards/minivan/keymaps/josjoha/base_hebrew.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
/*
* 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 <http://www.gnu.org/licenses/>.

* Author: © 2020 by Jos Boersema
*
*/
josjoha marked this conversation as resolved.
Show resolved Hide resolved

// --------------------------------------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
198 changes: 198 additions & 0 deletions keyboards/thevankeyboards/minivan/keymaps/josjoha/base_hebrew.md
Original file line number Diff line number Diff line change
@@ -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
<pink2 <pinky<ring <middl<index<indx2| indx2>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ץ>xxxx.?xxxxRSht+_FUN //<>os side flip?
+_MOV⁵ | +_RAR⁶
---------------------------------------------------------------------------------------

HEBREW_QWERTY
| Right hand
<pink2 <pinky<ring <middl<index<indx2| indx2>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.>xxxx/?xxxxRSht+_FUN
+_MOV⁵ | +_RAR⁶
---------------------------------------------------------------------------------------
(…)

HEBREW_DVORAK
Layer _..._BASE (LeTteRs, standard Hebrew)
| Right hand
<pink2 <pinky<ring <middl<index<indx2| indx2>index>middl>ring> pinky>pinky2> // Keys by finger
-o- <|> ... //-o- BASE access
Escxxxxxxxx'"xxxx,<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)
<pink2 <pinky<ring <middl<index<indx2| indx2>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)
<pink2 <pinky<ring <middl<index<indx2| indx2>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
---------------------------------------------------------------------------
(…)
- - -
13 changes: 9 additions & 4 deletions keyboards/thevankeyboards/minivan/keymaps/josjoha/keymap.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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;
Expand All @@ -305,8 +305,8 @@ void isolate_rgblight_set () {
setrgb(led2r, led2g, led2b, (LED_TYPE *)&led[2]); // Led 2
}
rgblight_set ();

# endif

}


Expand Down Expand Up @@ -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

Expand Down Expand Up @@ -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:


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ 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 <http://www.gnu.org/licenses/>.

* © 2020,2021 by Jos Boersema
* © 2020,2021 by Jos Boersema
*/
josjoha marked this conversation as resolved.
Show resolved Hide resolved

/*
Expand All @@ -23,16 +23,18 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.

//#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

Expand Down Expand Up @@ -100,5 +102,5 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
21 changes: 18 additions & 3 deletions keyboards/thevankeyboards/minivan/keymaps/josjoha/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
=================
Expand All @@ -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
Expand Down Expand Up @@ -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
================
Expand Down Expand Up @@ -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
===================

Expand Down Expand Up @@ -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
===================
Expand Down
Loading