%% This OTP/OCP translates the keys entered by a US keyboard
%% into consonants and vowels in the MAKOR2 encoding for use by
%% Omega.  Cantorial marks and other special purpose stuff is handled
%% by other OTPs.

%% In case there is markup that depends upon the original meaning of
%% keyed-in data, this material will be treated here as well.  One
%% good example is the commands for fine-tuning accents and trope.
%% The numerals in these coordinates need to be assigned accoridng to
%% the original key meanings.

%% At the `conclusion' of this OTP, the input has been converted from Ascii
%% input into a stream of Hebrew characters.

input: 
	1;
output: 
	1;

aliases:
	OKALPH	= (`b'|`c'|`d'|`i'|`m'|`n'|`p'|`s'|`t')
		; % only these needed to specify units (bp, cm, pt, etc)
	ARG	= (43|45|46|48-57|{OKALPH}
			) % digits, -, +, OK letters are valid
		;
	U	= 95 % underscore
		;
	C	= 94 % circumflex
		;
	COMMA	= 44
		;
	SEMI	= 59 % semicolon
		;
	ALPHA	= 65-90
		;
	alpha	= 97-122
		;
	CON	= ({ALPHA}|{alpha}|85|176-181|192-199)
		;
	DOT	= 46 % decimal point (period)
		;
	DIGIT	= 48-57
		;
	SGN	= (43|45) % plu/minus signs
		;
	ORD	= ({SGN}|{DIGIT}|{DOT}|{ALPHA}|{alpha})
		;
	ORDINATE	= {ORD}<1,9>
		;
expressions:
%% Trope...
	`['`e'`t'`n'`a'`h'`t'`a'`]'	=> 209
		;
	`['`s'`e'`g'`o'`l'`]'	=> 210
		;		
	`['`s'`h'`a'`l'`s'`h'`e'`l'`e'`t'`]'	=> 211
		;		
	`['`z'`a'`q'`e'`f'`q'`a'`t'`a'`n'`]'	=> 212
		;		
	`['`z'`a'`q'`e'`f'`g'`a'`d'`o'`l'`]'	=> 213
		;		
	`['`t'`i'`p'`e'`h'`a'`]'	=> 214
		;		
	`['`r'`e'`v'`i'`a'`]'	=> 215
		;		
	`['`z'`a'`r'`q'`a'`]'	=> 216
		;		
	`['`p'`a'`s'`h'`t'`a'`]'	=> 217
		;		
	`['`y'`e'`t'`i'`v'`]'	=> 218
		;		
	`['`t'`e'`v'`i'`r'`]'	=> 219
		;		
	`['`g'`e'`r'`e'`s'`h'`]'	=> 220
		;		
	`['`g'`e'`r'`e'`s'`h'`m'`u'`q'`d'`a'`m'`]'	=> 221
		;		
	`['`g'`e'`r'`s'`h'`a'`y'`i'`m'`]'	=> 222
		;		
	`['`q'`a'`r'`n'`e'`y'`p'`a'`r'`a'`]'	=> 223
		;		
	`['`t'`e'`l'`i'`s'`h'`a'`g'`e'`d'`o'`l'`a'`]'	=> 224
		;		
	`['`p'`a'`z'`e'`r'`]'	=> 225
		;		
	`['`m'`u'`n'`a'`h'`]'	=> 227
		;		
	`['`m'`a'`h'`a'`p'`a'`k'`h'`]'	=> 228
		;		
	`['`m'`e'`r'`k'`h'`a'`]'	=> 229
		;		
	`['`m'`e'`r'`h'`k'`h'`a'`k'`e'`f'`u'`l'`a'`]'	=> 230
		;		
	`['`d'`a'`r'`g'`a'`]'	=> 231
		;		
	`['`q'`a'`d'`m'`a'`]'	=> 232
		;		
	`['`t'`e'`l'`i'`s'`h'`a'`q'`e'`t'`a'`n'`a'`]'	=> 233
		;		
	`['`y'`e'`r'`a'`h'`b'`e'`n'`y'`o'`m'`o'`]'	=> 234
		;		
	`['`o'`l'`e'`]'	=> 235
		;		
	`['`i'`l'`u'`y'`]'	=> 236
		;		
	`['`d'`e'`h'`i'`]'	=> 237
		;		
	`['`z'`i'`n'`o'`r'`]'	=> 238
		;		
	`['`m'`a'`s'`o'`r'`a'`c'`i'`r'`c'`l'`e'`]'	=> 239
		;		
%% ODDMENTS, PUNCTUATION, etc.:
	`-'`-'`-'	=> 143 % em-dash
			;
	`-'`-'		=> 127 % en-dash
			;
	`|' `|'		=> 80 % long vertical bar
			;
%% CONSONANTS: 3+ char inputs...
	`s' `h' `^'	=> 176 % shin plus upperdot
			;
	`^' `s' `h'	=> 177 % upperdot plu sin
			;
%% CONSONANTS: 2 char inputs
	`c' `h'	=>	103 % chet
		;
	`s' `h'	=>	121 % shin
		;
	`t' `s'	=>	118 % tsadi
		;
	`k' `h'	=>	107 % chaf
		;
	`t' `h'	=>	122 % saf
		;
	`.' `t'	=>	104 % tet
		;
	`.' `s'	=>	113 % samekh
		;
%% VOWELS: 2 char inputs
	`a' `e'	=>	69 % tsere
		;
	`e' `i'	=>	69 % tsere
		;
	`a' `u'	=>	72 % qamats
		;
	`o' `o'	=>	149 % shuruk
		;
	`:' `a'	=> 	66 % hataf patah
		;
	`:' `e'	=> 	65
		;
	`:' `+'	=>	67
		;
	`|' 34	=> 	187 % meteg tsere
		;
	`|' `i'	=> 	182
		;
	`|' `a'	=>	184
		;
	`|' `e'	=>	185
		;
	`|' `+'	=>	186
		;
	`|' 39	=>	183 % meteg sheva
		;
	`|' `:'	=>	183 % meteg sheva
		;
	`?' `!'	=>	188 % interrobang
		;
	`!' `?'	=>	188 % interrobang; alt encoding
		;
	`*'`*'	=>	139 % new shekel symbol
		;
%% CONSONANTS: single-char inputs:
	%% (The case of alef is handles by m2aleph.otp!)
	%%
	`v'	=> 97 % vet
		;
	`b'	=> 145 % bet
		;
	`g'	=>98 % gimel
		;
	`d'	=> 99 % dalet
		;
	`h'	=> 100 % he
		;
	`w'	=> 101 % vav
		;
	`z'	=> 102 % zayin
		;
	`y'	=> 105 % yod
		;
	`k'	=> 155 % kaf
		;
	`l'	=> 108 % lamed
		;
	`m'	=> 110 % mem
		;
	`n'	=> 112 % nun
		;
	96	=> 114 % left single quote maps to ayin.
		;
	`f'	=> 116 % fe
		;
	`p'	=> 164 % pe
		;
	`q'	=> 119 % qof
		;
	`r'	=> 120 % resh
		;
	`s'	=> 122 % alternative coding for sav
		;
	`t'	=> 170 % tav
		;
%% VOWElS: single-char
	`|'	=> 77 % meteg
		;
	`a'	=> 71 % patah
		;
	`e'	=> 70
		;
	`i'	=> 68
		;
	`o'	=> 73
		;
	`O'	=> 85
		;
	`u'	=> 75
		;
	`-'	=> 78 % rafe
		;
	`='	=> 45 % hyphen
		;
	`+'	=> 72 % a single char alternative for qamats
		;
%%PUNCTUATION, SPECIAL SYMS, and other single-char inputs...
	32	=> 32 % space
		;
%% Some other Ascii chars map to themselves...
	33-59	=> \1
		;
	61	=> \1
		;
	63	=> \1
		;
	91-95	=> \1
		;
	254	=> \1
		;
%% Everything else is invalid...
	.	=> 208	% generic box is a sign of invalidity...
		;

