Sunday, July 16, 2006

A Biblical Hebrew Keyboard for the X Window System

UPDATE: A Biblical Hebrew keyboard, based on the commonly used Tiro keyboard is now available as a variant of the Israeli Hebrew keyboard in the standard X11 distribution.

On the standard Israeli Hebrew keyboard (SI-1452), the Hebrew alphabet and nikud are both accessible. But, the trope and some lesser-used punctuation are not. This "Biblical Hebrew" keyboard attempts to solve that problem.

Download here: il_biblical

To install:
Download the file.

If you have XFree86, replace $XKBDIR with /usr/share/X11/xkb. If you have 7, replace it with /etc/X11/xkb.

Copy or link the file into the $XKBDIR/symbols ( 7) or $XKBDIR/symbols (XFree86) directory.

Add the following line to $XKBDIR/rules/xfree86.lst (XFree86) or $XKBDIR/rules/xorg.lst (, on its own line, following the line that begins il:

il_biblical Biblical Hebrew

The keyboard layout is now usable. To test whether the system sees the layout, type at the prompt:
$ xkbcomp il_biblical

It should return no errors.

To use:
For the Hebrew alphabet, nikud, and some obscure characters, this keyboard layout implements the SI-1452 standard. I don't know of any standard keyboard layout for trope, so, I made one up.

The Hebrew keyboard defines the unshifted keys as the Hebrew letters. If you want to be able to type in English on the same layout, you have to load two keyboard layouts and use a "group shift" to switch between them (or, you can simply switch keyboard layouts on the fly).

The shifted keyboard is defined by SI-1452 to contain the capital English letters (don't ask why) and the nikud.

The third-level keyboard is defined by the standard to contain some obscure characters like the micron sign, currency symbol, euro sign, and others.

My keyboard defines a fourth level (shifted third level) for the trope.

In order to access the third and fourth levels, you have to define a key as a "third level modifier" — effectively, a second shift key.

The partial implementation of SI-1452 that comes with X is a two-level layout that requires a "group shift" if you want to be able to use English and Hebrew simultaneously. This layout is a "four level" layout. It requires a "group shift" if you want to be able to type English and Hebrew simultaneously and it requires a "third level chooser" to access the more obscure keys in SI-1452 (third level) and the trope (fourth level).

In KDE 3.5 (and some earlier versions, and probably later ones too), these settings can be set graphically:
Go to the KDE Control Center from the K-menu.

Under Regional And Accessibility, go to Keyboard Layout.

Find the Biblical Hebrew layout in the list of Available layouts. Select it and press Add.

In the Layouts tab, select the Biblical Hebrew layout from the Active Layouts. Under Label, enter ilb (or any other three letter identifier you'd like to use). If you want to use English simultaneously, check the Include latin layout box.

Select the XKB Options tab.

Check the Enable xkb options box.

If you're using English and Hebrew simultaneously, select a key switch to switch between groups from the group of options labeled Group Shift/Lock Behavior. An example is Alt+Shift changes groups. Also, you can set a keyboard LED to show you whether the keyboard will type in English or Hebrew under the set of options labeled Use keyboard LED to show alternative group. I use the scroll lock LED (whose only other function appears to be turning on and off when the scroll lock button is pressed).

In order to access the trope, you must have a Third level chooser key selected. Thankfully, the 104 key keyboards include two otherwise useless keys — the Win key and the Menu key. Pressing the third level chooser+shift allows you access the trope.

There's also a way to do it in GNOME, but, I'm not sure what it is.

If all else fails, this command should allow you to use the full functionality of the keyboard layout:

setxkbmap -model pc104 -layout us,il_biblical -option grp_led:scroll,grp:alt_shift_toggle,lv3:menu_switch

In this case, the menu key is the third level chooser, the scroll lock LED shows whether it is typing in Hebrew (on) or English (off) and alt+shift switches between Hebrew and English.

The keyboard layout:
All keys defined by the SI-1452 standard, and the following fourth level (shift+third level chooser+key = result):

key - result
1 - zero width joiner
2 - zero width non-joiner
6 - upper dot
7 - lower dot
8 - qamats qatan (Unicode 4.1 only)
9 - nun hafukh
0 - masora circle
- - maqaf
\ - paseq

Q - shalshelet
W - qarney para
E - telisha qetana
R - telisha gedola
T - gershayim (trope)
Y - pazer
U - ole
I - iluy
O - dehi
P - zinor
[ - etnah hafukh
] - yerach ben yomo

A - zarqa
S - segol
D - qadma
F - azla (geresh)
G - revia
H - zaqef gadol
J - zaqef qatan
K - pashta
; - geresh (punctuation)
' - gershayim (punctuation)

Z - mercha
X - tipcha
C - munach
V - etnachtah
B - darga
N - tevir
M - yetiv
< - mahpach
. - sof pasuq
/ - mercha kefula

space - nonbreaking space

For Hebrew fonts that support trope, try Ezra SIL or Cardo (rather old, but still works).

Technorati tags: , , ,

Labels: , , , ,

Can you submit patches to the xorg project (and perhaps KDE) to make this easier in the future?
Thanks for the comment.

It would be for's distribution, since it's actually a modification of xkb's supporting data, not KDE. It's the first keyboard layout I've designed, and I'm interested to know if it's even a reasonable layout for actual use (other than my own casual use).
Just what I have been seeking for a while!

I notice that you have no key for the methegh or the tzinnĂ´rith, though.
The meteg is the standard SI-1452 layout (shift+]), so, I didn't have to add it in. It probably should be somewhere in level 4 for completeness (as the badly named period-like sof pasuq symbol is)

The naming convention I followed on "zarqa" (thirdlevel+shift+A) and "zinor" (thirdlevel+shift+P) is in accordance with the rather quirky Unicode 4.1 standard. The "zarqa" is defined as placed above the letter, the "zinor" is defined as placed above-left. Is there another variant I'm missing? If so, I don't think there exists a Unicode 4.1 character to represent it.
Post a Comment

<< Home

Links to this post:

Create a Link