Adds optional hebrew layout (Unicode) (#14156)

This commit is contained in:
Jos Boersema 2021-09-16 07:27:44 +02:00 committed by GitHub
parent b5cc2bdc34
commit d140e41c93
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 1157 additions and 132 deletions

View File

@ -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 <http://www.gnu.org/licenses/>.
* 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
<pink2 <pinky<ring <middl<index<indx2| indx2>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
<pink2 <pinky<ring <middl<index<indx2| indx2>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
<pink2 <pinky<ring <middl<index<indx2| indx2>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.
*/
//
// <pink2 , <pinky , <ring , <middl , <indx , <ind|, indx> , 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
<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
^ // 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)
<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
---------------------------------------------------------------------------
Left+LAlt ___ ___ Ent | . ___ LGUI Right+RAlt
-*- <|> -*- //(hold) Access on _..._BASE
<1 ± <2 <3 <4 | 4> 3> 2> ± 1>
*/
//
//
// <pink2 , <pinky , <ring , <middl , <index , <indx2 |, indx2> , 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>
),
/* ⬆⬇ */

View File

@ -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 <http://www.gnu.org/licenses/>.
* 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

View File

@ -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
---------------------------------------------------------------------------
(…)
- - -

View File

@ -18,6 +18,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#pragma once
// --------------------------------------v---------------------------------------
// Configuration:
// --------------------------------------v---------------------------------------

View File

@ -18,6 +18,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#pragma once
// --------------------------------------v---------------------------------------
// Configuration:
// --------------------------------------v---------------------------------------

View File

@ -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:

View File

@ -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 <http://www.gnu.org/licenses/>.
* © 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 <http://www.gnu.org/licenses/>.
#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 <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

View File

@ -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
===================

View File

@ -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 <http://www.gnu.org/licenses/>.
* 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: <non-printing>
#define HB_LRM 0x200E // " , "LRM" for Left-Right-Mark: <non-printing>
// 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 :

View File

@ -24,6 +24,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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 <esc> 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;

View File

@ -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);

View File

@ -18,6 +18,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#pragma once
/* An amount of Unicode #defines
* - western european accented characters
* - various punctuation symbols, different number formats, math symbols, other symbols.

View File

@ -18,6 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#pragma once
// ------------------------------------- ⬇ --------------------------------------
// Configuration:
@ -47,6 +48,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
Colemak
Workman
Numpad
Hebrew
-2- Eviscerations ( / )
Single layout
@ -146,6 +148,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// _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 <http://www.gnu.org/licenses/>.
// (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 <http://www.gnu.org/licenses/>.
// 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 <http://www.gnu.org/licenses/>.
# 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: