Custom keyboard map

Lately I have taken to studying ancient languages, such as Paleo Hebrew, Proto Canaanite, LinearB and LinearA. For now, I want to create a keyboard map for Proto Canaanite. I figure I can start with Hebrew. Use Hebrew as the skeleton and just change the fonts. Let me show you why. This chart should help.

The “Early” is the Proto Canaanite. The “Middle” is Paleo Hebrew, and “Late” is like modern Hebrew.

Looks nice. I assume all those characters can be found in Unicode.
But I failed to identify your question.

It depends. I know I can get them here; Unicode Hebrew Fonts So, That would be a yes.

I had no doubt about Hebrew being defined in Unicode (see and

But I can not find immediatly the ancient ones. Allthough Phoenician (at comes very near your “Middle” column.

Nice and interesting subject!

But again, what is your question in this Help forum?

My question, what I need help with is creating a keyboard map. I want to type in Middle and Early. I can’t seem to be able to create a Hebrew keyboard layout, let alone replace the Hebrew fonts with Early and Middle.

I have no idea what you already have read, found, tried or done. There are of course Hewbrew keyboards on the market. And Mapping on Latin ones. I found e.g. this which looks to me as a good starting point.

And then of course when you replace the glyphs of your Hewbrew fonts with the wanted ones, it will show/print them instead of Hebrew. But I have no idea if somebody did alread create those glyphs.

Google, google, google?

Aren’t there any “pressure groups” that want these alphabets incorporated in Unicode? That would at least give them a proper place and I have no doubt glyphs would be created (either free or not).

No. No. Not hardware, my friend. A keyboard “layout” a keyboard “map”. I posted about it on Facebook for my Windows friends. I have read an Arch howto, although I don’t quite get it. The glyphs are already done. It’s actually called pictographic.

I hope I haven’t scared everyone off. At this point, I can’t even seem to make a regular Hebrew keyboard map. Something is missing here.

I was not realy talking hardware I assume.A keyboard gives only keyboard codes when a key (combination) is hit. The keyboard mapping translates that into the character values defined in the mapping. The only hardware comes into play IMHO is when you start putting stickers with the characters to the keys.

BTW in KDE when you go to System Settings > Hardware > Input Devices > Keyboard and then the tab Mappings (or similar, I have a Dutch translation here), I am able to add Mappings. And when I restrict the language to Hebrew, there are still 5 possibilities.

OK cool. I was going via YaST. I’ll try KDE System Settings.

OK, so I checked them out. That will at least give me the skeleton or framework to work with, now just gotta get it to type the nice characters above. :wink: Which is why I started this thread in the first place. In other distros I can get this far, but I am stumped at this point.

I assume you forgot that Unix/Linux is a multi-user system. Thus many users can be loged in at the same time or at different times. You can not centraly (system/YaST) decide what keyboard they have or what mapping they want to use at any moment. At the most you can provide a default and a set of easy to switch to ones. But the individual user decides here. Thus KDE (or any other user interface) is the place.

Umm, no. I didn’t forget. It’s just I am the only user. There is just me. Since the other distros didn’t have YaST I figured that this could be done in YaST. I was wrong. So how do I get it to type the characters that I want?

It does not matter that you think you are the only user on the system. The system does not “know” that you think so. It still is a multu-user system with all the pros and cons of it.

The fact that people think there is bit one user, lets them often forget they have a multi-user system.

And in the end you haven’t a single user system. In my system:

henk@boven:~> wc -l /etc/passwd
35 /etc/passwd

there are 35 users configured (and only three or four were added by me). And even if one never looks there, most people know that there is at least one other user: root.

The above may be a bit too pedantic, but I often see people here looking for configuration possibilities/file in completely the wrong place because they never spent any thoughts about the consequences of having a multi-user system.

Let us leave this hobbyhorse of mine and go back to your Hebrew and forerunners.

I still need to know how to type with those characters that I showed in my initial post. I haven’t really forgotten that Linux is a multiuser system, my friend, my I am readjusting to is the openSUSE way. In either case it can be done from KDE system settings. So now that that horse is beaten to death, how can I type in Paleo Hebrew or Proto-Canaanite? I only need someone to help me for one of them. From there I’ll be able to add the other myself and even go on to LinearB and LinearA (LinearB and LinearA are the precursors to Greek with LinearA being the older of the two). I appreciate the reminder of the multi user system. It’s a nice rabbit trail to go down. It just doesn’t help me in this issue.

BTW, my system has 45 users. :stuck_out_tongue:

I am not sure that I can follow you.

Are you now able to type Hebrew? That means (if I am correct) that when you type (e.g. when editing a file) the key that is mapped to a Hewbrew Aleph, you then get the UTF-8 encoding of U+05D0 in that file.
(And that, will show as a א when a fitting font is available).

But when you want to enter an Early Semitic “Horse head”, you need a keyboard mapping between a key (maybe the same you used for א ) and an Unicode point that does not exist at the time. In other words, there is until now no binary representation of that character defined. Thus how can you create a table where only the firsts column (the keyboard codes) are known, but the second column (the characters they must be translated into) is unknown?

Typing in Hebrew has never been the issue. The issue is typing in Proto Canaanite or Paleo Hebrew. The Ox head means the same thing as א UTF-8 encoding of U+05D0 which is the modern aleph.

From poking around in YaST /etc/sysconfig Editor I stumbled upon KEYTABLE, which lead me to here; /usr/share/kbd/keymaps/ This is quite probably what I’m after. But I still don’t know what to do. I’ll keep poking around. If anyone has an idea, please let me know.

This is from the

# From Oded S. Resnik
charset "iso-8859-8"
keymaps 0-6,8,12
include "linux-with-alt-and-altgr"
strings as usual

keycode   1 = Escape           Escape           Escape          Escape
    alt     keycode   1 = Meta_Escape
keycode   2 = one              exclam           one    exclam 
    alt     keycode   2 = Meta_one
keycode   3 = two              at               two    at                             nul              nul
    alt     keycode   3 = Meta_two
keycode   4 = three            numbersign       three   numbersign
    control keycode   4 = Escape
    alt     keycode   4 = Meta_three
keycode   5 = four             dollar           four    dollar
    control keycode   5 = Control_backslash
    alt     keycode   5 = Meta_four
keycode   6 = five             percent          five    percent
    control keycode   6 = Control_bracketright
    alt     keycode   6 = Meta_five
keycode   7 = six              asciicircum      six     asciicircum
    control keycode   7 = Control_asciicircum
    alt     keycode   7 = Meta_six
keycode   8 = seven            ampersand        seven    ampersand
    control keycode   8 = Control_underscore
    alt     keycode   8 = Meta_seven
keycode   9 = eight            asterisk         eight     asterisk                      Delete
    alt     keycode   9 = Meta_eight
keycode  10 = nine             parenleft        nine   parenright
    alt     keycode  10 = Meta_nine
keycode  11 = zero             parenright       zero   parenleft
    alt     keycode  11 = Meta_zero
keycode  12 = minus            underscore       minus  underscore                       Control_underscore Control_underscore
    alt     keycode  12 = Meta_minus
keycode  13 = equal            plus             equal   plus
    alt     keycode  13 = Meta_equal
keycode  14 = Delete           Delete   Delete   Delete
    alt     keycode  14 = Meta_Delete
keycode  15 = Tab              Meta_Tab      Tab  Tab
    alt     keycode  15 = Meta_Tab
keycode  16 = +q                +Q                slash         slash              Control_q Control_q  Control_q Control_q
keycode  17 = +w                +W                apostrophe  apostrophe             Control_w Control_w  Control_w Control_w
keycode  18 = +e                +E                qof             qof             Control_e Control_e Control_e Control_e
keycode  19 = +r                +R                resh            resh             Control_r Control_r Control_r Control_r
keycode  20 = +t                +T                alef            alef              Control_t Control_t Control_t Control_t
keycode  21 = +y                +Y                tet             tet             Control_y Control_y Control_y Control_y
keycode  22 = +u                +U                vav             vav              Control_u Control_u Control_u Control_u
keycode  23 = +i                +I                finalnun        finalnun              Tab Tab Tab Tab
keycode  24 = +o                +O                finalmem        finalmem           Control_o Control_o Control_o Control_o
keycode  25 = +p                +P                pe              pe                 Control_p Control_p Control_p Control_p
keycode  26 = bracketleft      braceleft     bracketright     braceright
    control keycode  26 = Escape
    alt     keycode  26 = Meta_bracketleft
keycode  27 = bracketright     braceright    bracketleft      braceleft 
    control keycode  27 = Control_bracketright
    alt     keycode  27 = Meta_bracketright
keycode  28 = Return
    alt     keycode  28 = Meta_Control_m
keycode  29 = Control
keycode  30 = +a                +A                shin             shin             Control_a Control_a Control_a Control_a
keycode  31 = +s                +S                dalet            dalet             Control_s Control_s Control_s Control_s
keycode  32 = +d                +D                gimel            gimel            Control_d Control_d Control_d Control_d
keycode  33 = +f                +F                kaf               kaf          Control_f Control_f Control_f Control_f
keycode  34 = +g                +G                ayin              ayin         Control_g Control_g Control_g Control_g
keycode  35 = +h                +H                yod               yod          BackSpace BackSpace BackSpace BackSpace
keycode  36 = +j                +J                het              yod              Linefeed Linefeed Linefeed Linefeed
keycode  37 = +k                +K                lamed              finalkaf         Control_k Control_k Control_k Control_k
keycode  38 = +l                +L                finalkaf          finalkaf            Control_l Control_l Control_l Control_l
keycode  39 = semicolon        colon              finalpe    colon 
    alt     keycode  39 = Meta_semicolon
keycode  40 = apostrophe       quotedbl           comma      quotedbl
    control keycode  40 = Control_g
    alt     keycode  40 = Meta_apostrophe
keycode  41 = grave            asciitilde       semicolon        semicolon       nul
    alt     keycode  41 = Meta_grave
keycode  42 = Shift
keycode  43 = backslash        bar  backslash 
    control keycode  43 = Control_backslash
    alt     keycode  43 = Meta_backslash
keycode  44 = +z                +Z                zayin            zayin            Control_z Control_z Control_z Control_z
keycode  45 = +x                +X                samekh           samekh              Control_x Control_x Control_x Control_x
keycode  46 = +c                +C                bet              bet                 Control_c Control_c Control_c Control_c
keycode  47 = +v                +V                he               he             Control_v Control_v Control_v Control_v
keycode  48 = +b                +B                nun              nun              Control_b Control_b Control_b Control_b
keycode  49 = +n                +N                mem              mem              Control_n Control_n Control_n Control_n
keycode  50 = +m                +M                tsadi            tsadi            Control_m Control_m Control_m Control_m
keycode  51 = comma            less               tav             greater 
    alt     keycode  51 = Meta_comma
keycode  52 = period           greater          finaltsadi       less            Compose
    alt     keycode  52 = Meta_period
keycode  53 = slash            question         period         question                 Delete 
    alt     keycode  53 = Meta_slash
keycode  54 = Shift
keycode  56 = Alt
keycode  57 = space            space            space            space            nul
    alt     keycode  57 = Meta_space
keycode  58 = Caps_Lock
keycode  86 = less             greater          bar
    alt     keycode  86 = Meta_less
keycode  97 = AltGr_Lock