| 7: LaTeX keymap (Richard Atterer)
| Note that many symbols are only allowed when in math mode.
| This keymap tries to produce better readable documents by not inserting

| e.g. "\bullet{}", but "\bullet " and checking if the next key pressed
| afterwards is Space, in which case the " " is replaced with "\ ".
| There is support for users of the german package.
|
| Press HOME to activate the extension keymap for the following keypress.
|
| Your Types file must initialise TeX_sp to 0 and TeX_de to 1 or 0, depending
| on whether you use the german package or not. For example:
|	LaTeX		&1ACA	TeX:SET (TeX_sp=0):SET (TeX_de=0)

| Remove space at line end
RETURN		&7001D	IF ((@#TeX_sp) AND (@CHAROFF -1=32)):DELETE "PREV":ENDIF:SET (TeX_sp=0):RETURN
| May have to insert \ before the space
Space		&70020  IF ((@#TeX_sp) AND (@CHAROFF -1=32)):DELETE "PREV":INSERT "\ ":ELSE:CHAR ' ':ENDIF:SET (TeX_sp=0)
| ': If pressed twice and using german, enter "' (i.e. press '' to get )
,		&70027	IF ((@#TeX_de) AND (@CHAROFF -1=39) AND (@CHAROFF -2<>34)):DELETE "PREV":INSERT """'":ELSE:CHAR '''':ENDIF
| Comma: If pressed twice and using german, enter "` (i.e. press ,, to get )
,		&7002C	IF ((@#TeX_de) AND (@CHAROFF -1=44)):DELETE "PREV":INSERT """`":ELSE:CHAR ',':ENDIF
| Replace three dots with \ldots
.		&7002E	IF ((@CHAROFF -1=46) AND (@CHAROFF -2=46)):DELETE "PREV":DELETE "PREV":INSERT"\ldots ":SET (TeX_sp=1):ELSE:CHAR '.':ENDIF
| cReturn inserts \\ before the RETURN
cReturn		&7013D	IF ((@#TeX_sp) AND (@CHAROFF -1=32)):DELETE "PREV":ENDIF:SET (TeX_sp=0):INSERT "\\":RETURN

HOME		&7001E	KEYMAP 8

		&70080	INSERT "\surd ":SET (TeX_sp=1)
		&70081	INSERT "\^{W}"
		&70082	INSERT "\^{w}"
		&70083	BEEP
		&70084	BEEP
		&70085	INSERT "\^{Y}"
		&70086	INSERT "\^{y}"
		&70087	BEEP
		&70088	INSERT "\Leftarrow ":SET (TeX_sp=1)
		&70089	INSERT "\Rightarrow ":SET (TeX_sp=1)
		&7008A	INSERT "\Downarrow ":SET (TeX_sp=1)
		&7008B	INSERT "\Uparrow ":SET (TeX_sp=1)
		&7008C	INSERT "\ldots ":SET (TeX_sp=1) (don't use '...')
		&7008D	INSERT "$^{\mathrm{TM}}$"
		&7008E	INSERT "\kern-.05em\raise.5ex\hbox{\the\scriptfont0 0}\kern-.15em/\kern-.15em\lower.25ex\hbox{\the\scriptfont0 00}"
		&7008F	INSERT "\bullet ":SET (TeX_sp=1)
			(in German ,this is correct, not this)
		&70090	IF (@#TeX_de):INSERT "\glq ":SET (TeX_sp=1):ELSE:CHAR '`':ENDIF
		&70091	IF (@#TeX_de):INSERT "\grq ":SET (TeX_sp=1):ELSE:CHAR 39:ENDIF
		&70092	INSERT "\flq ":SET (TeX_sp=1) (needs german)
		&70093	INSERT "\frq ":SET (TeX_sp=1) (needs german)
		&70094	INSERT "``"
		&70095	IF (@#TeX_de):INSERT """'":ELSE:INSERT "''":ENDIF
		&70096	IF (@#TeX_de):INSERT """`":ELSE:INSERT ",,":ENDIF
		&70097	INSERT "--"
		&70098	INSERT "---"
		&70099	INSERT "$-$" (minus acc. to ISO)
		&7009A	INSERT "\OE ":SET (TeX_sp=1)
		&7009B	INSERT "\oe ":SET (TeX_sp=1)
		&7009C	INSERT "\dag ":SET (TeX_sp=1) (\dagger in math)
		&7009D	INSERT "\ddag ":SET (TeX_sp=1) (\ddagger in math)
		&7009E	INSERT "fi"
		&7009F	INSERT "fl"
		&700A0	INSERT "~" (non-breaking space)
		&700A1	INSERT "!`"
		&700A2	INSERT "$\not\!\mathrm{c}$" (yuk!-)
		&700A3	INSERT "\pounds ":SET (TeX_sp=1)
		&700A4	BEEP
		&700A5	BEEP
		&700A6	BEEP
		&700A7	INSERT "\S ":SET (TeX_sp=1)
		&700A8	INSERT "\""{}":LEFT
		&700A9	INSERT "\copyright ":SET (TeX_sp=1)
		&700AA	INSERT "$^{\mathrm{\underline{a}}}$"
		&700AB	INSERT """<" (needs german package)
		&700AC	INSERT "\neg ":SET (TeX_sp=1)
			(non-breaking hyphen)
		&700AD	IF (@#TeX_de):INSERT """~":ELSE:CHAR '-':ENDIF
		&700AE	INSERT "\hspace{.5em}\makebox[0pt]{$\bigcirc$}\makebox[0pt]{\scriptsize R}\hspace{.5em}"
		&700AF	INSERT "\rule[1.5ex]{.5em}{.1ex}"
		&700B0	INSERT "$^{\circ}$"
		&700B1	INSERT "\pm ":SET (TeX_sp=1)
		&700B2	INSERT "$^{2}$"
		&700B3	INSERT "$^{3}$"
		&700B4	INSERT "\'{}":LEFT
		&700B5	INSERT "\mu ":SET (TeX_sp=1)
		&700B6	INSERT "\P ":SET (TeX_sp=1)
		&700B7	INSERT "\cdot ":SET (TeX_sp=1)
		&700B8	INSERT "\c{}":LEFT
		&700B9	INSERT "$^{1}$"
		&700BA	INSERT "$^{\mathrm{\underline{o}}}$"
		&700BB	INSERT """>" (needs german package)
		&700BC	INSERT "$^{1\!\!}/\!_{4}$"
		&700BD	INSERT "$^{1\!\!}/\!_{2}$"
		&700BE	INSERT "$^{3\!\!}/\!_{4}$"
		&700BF	INSERT "?`"
		&700C0	INSERT "\`{A}"
		&700C1	INSERT "\'{A}"
		&700C2	INSERT "\^{A}"
		&700C3	INSERT "\~{A}"
		&700C4	IF (@#TeX_de):INSERT """A":ELSE:INSERT "\""{A}":ENDIF
		&700C5	INSERT "\AA ":SET (TeX_sp=1)
		&700C6	INSERT "\AE ":SET (TeX_sp=1)
		&700C7	INSERT "\c{C}"
		&700C8	INSERT "\`{E}"
		&700C9	INSERT "\'{E}"
		&700CA	INSERT "\^{E}"
		&700CB	INSERT "\""{E}"
		&700CC	INSERT "\`{I}"
		&700CD	INSERT "\'{I}"
		&700CE	INSERT "\^{I}"
		&700CF	INSERT "\""{I}"
		&700D0	INSERT "\makebox[0pt][l]{\rule[.75ex]{.3em}{.1ex}}D"
		&700D1	INSERT "\~{N}"
		&700D2	INSERT "\`{O}"
		&700D3	INSERT "\'{O}"
		&700D4	INSERT "\^{O}"
		&700D5	INSERT "\~{O}"
		&700D6	IF (@#TeX_de):INSERT """O":ELSE:INSERT "\""{O}":ENDIF
		&700D7	INSERT "\times ":SET (TeX_sp=1)
		&700D8	INSERT "\O ":SET (TeX_sp=1)
		&700D9	INSERT "\`{U}"
		&700DA	INSERT "\'{U}"
		&700DB	INSERT "\^{U}"
		&700DC	IF (@#TeX_de):INSERT """U":ELSE:INSERT "\""{U}":ENDIF
		&700DD	INSERT "\'{Y}"
		&700DE	BEEP
		&700DF	IF (@#TeX_de):INSERT """s":ELSE:INSERT "\ss ":ENDIF
		&700E0	INSERT "\`{a}"
		&700E1	INSERT "\'{a}"
		&700E2	INSERT "\^{a}"
		&700E3	INSERT "\~{a}"
		&700E4	IF (@#TeX_de):INSERT """a":ELSE:INSERT "\""{a}":ENDIF
		&700E5	INSERT "\aa ":SET (TeX_sp=1)
		&700E6	INSERT "\ae ":SET (TeX_sp=1)
		&700E7	INSERT "\c{c}"
		&700E8	INSERT "\`{e}"
		&700E9	INSERT "\'{e}"
		&700EA	INSERT "\^{e}"
		&700EB	INSERT "\""{e}"
		&700EC	INSERT "\`{\i}"
		&700ED	INSERT "\'{\i}"
		&700EE	INSERT "\^{\i}"
		&700EF	INSERT "\""{\i}"
		&700F0	BEEP
		&700F1	INSERT "\~{n}"
		&700F2	INSERT "\`{o}"
		&700F3	INSERT "\'{o}"
		&700F4	INSERT "\^{o}"
		&700F5	INSERT "\~{o}"
		&700F6	IF (@#TeX_de):INSERT """o":ELSE:INSERT "\""{o}":ENDIF
		&700F7	INSERT "\div ":SET (TeX_sp=1)
		&700F8	INSERT "\o ":SET (TeX_sp=1)
		&700F9	INSERT "\`{u}"
		&700FA	INSERT "\'{u}"
		&700FB	INSERT "\^{u}"
		&700FC	IF (@#TeX_de):INSERT """u":ELSE:INSERT "\""{u}":ENDIF
		&700FD	INSERT "\'{y}"
		&700FE	BEEP
		&700FF	INSERT "\""{y}"

| 8: LaTeX keymap extensions
| Available after the HOME key has been pressed.
| Note: Many keypresses act differently if there is a selection, making it
|	the argument of the command they generate.

'		&80027	IF (@#TeX_de):INSERT "\grq ":SET (TeX_sp=1):ELSE:LATEX_QUOTE:ENDIF
(		&80028	INSERT "\(\)":LEFT:LEFT
,		&8002C	IF (@#TeX_de):INSERT "\glq ":SET (TeX_sp=1):ELSE:LATEX_QUOTE:ENDIF

| lowercase letters: similar to HTML keymap in some places
b		&80062	IF (@SELHERE):CUT:INSERT "\textbf{":PASTE:CHAR '}':ELSE:INSERT "\textbf{}":LEFT:ENDIF
c		&80063	IF (@SELHERE):CUT:INSERT "\textsc{":PASTE:CHAR '}':ELSE:INSERT "\textsc{}":LEFT:ENDIF
d		&80064	IF (@SELHERE):CUT:INSERT "\index{":PASTE:CHAR '}':ELSE:INSERT "\index{}":LEFT:ENDIF
e		&80065	IF (@SELHERE):CUT:INSERT "\emph{":PASTE:CHAR '}':ELSE:INSERT "\emph{}":LEFT:ENDIF
f		&80066	INSERT "%":RETURNNOINDENT:INSERT "\footnote{}":LEFT
i		&80069	INSERT "\item " (list item)
l		&8006C	IF (@SELHERE):CUT:INSERT "\label{":PASTE:CHAR '}':ELSE:INSERT "\label{}":LEFT:ENDIF
n		&8006E	INSERT "\\":RETURN
o		&8006F	LATEX_ENVIRONMENT "enumerate":INSERT "  " (ordered list)
p		&80070	IF (@SELHERE):CUT:INSERT "\pageref{":PASTE:CHAR '}':ELSE:INSERT "\pageref{}":LEFT:ENDIF
q		&80071	LATEX_ENVIRONMENT "quote"
r		&80072	IF (@SELHERE):CUT:INSERT "\ref{":PASTE:CHAR '}':ELSE:INSERT
 "\ref{}":LEFT:ENDIF
s		&80073	IF (@SELHERE):CUT:INSERT "\textsf{":PASTE:CHAR '}':ELSE:INSERT "\textsf{}":LEFT:ENDIF
t		&80074	IF (@SELHERE):CUT:INSERT "\texttt{":PASTE:CHAR '}':ELSE:INSERT "\texttt{}":LEFT:ENDIF
u		&80075	LATEX_ENVIRONMENT "itemize":INSERT "  " (unordered list)
v		&80076	LATEX_ENVIRONMENT "verbatim"
x		&80078	LATEX_ENVIRONMENT

| 1 to 5: section etc.
1		&80031	RETURNNOINDENT:INSERT "\section{}":RETURN:LEFT:LEFT
2		&80032	RETURNNOINDENT:INSERT "\subsection{}":RETURN:LEFT:LEFT
3		&80033	RETURNNOINDENT:INSERT "\subsubsection{}":RETURN:LEFT:LEFT
4		&80034	RETURNNOINDENT:INSERT "\paragraph{}":RETURN:LEFT:LEFT
5		&80035	RETURNNOINDENT:INSERT "\subparagraph{}":RETURN:LEFT:LEFT
| shift 1 to 2: forward to next (sub)section
| Attempts to support German layout keyboards too.
! (s1)		&80021	LATEX_NEXTSECTION
@ (s2)		&80040	LATEX_NEXTSUBSECTION
quote (ger-s2)	&80022	IF (@#TeX_de):LATEX_NEXTSUBSECTION:ELSE:LATEX_QUOTE
:ENDIF
| ctrl 1 to 2: back to previous (sub)section
c1		&80131	LATEX_PREVSECTION
c2		&80132	LATEX_PREVSUBSECTION

| uppercase A to Z: macros defined in the document
A		&80041	DROPMARK:SEARCHBACK "% key A: ":CLEARSEL:SELREGION:CRIGHT:ESCAPE:LASTMARK:COPYSEL:CLEARSEL:IF (@CHAROFF -1 = 32):SET (TeX_sp=1):ENDIF
B		&80042	DROPMARK:SEARCHBACK "% key B: ":CLEARSEL:SELREGION:CRIGHT:ESCAPE:LASTMARK:COPYSEL:CLEARSEL:IF (@CHAROFF -1 = 32):SET (TeX_sp=1):ENDIF
C		&80043	DROPMARK:SEARCHBACK "% key C: ":CLEARSEL:SELREGION:CRIGHT:ESCAPE:LASTMARK:COPYSEL:CLEARSEL:IF (@CHAROFF -1 = 32):SET (TeX_sp=1):ENDIF
D		&80044	DROPMARK:SEARCHBACK "% key D: ":CLEARSEL:SELREGION:CRIGHT:ESCAPE:LASTMARK:COPYSEL:CLEARSEL:IF (@CHAROFF -1 = 32):SET (TeX_sp=1):ENDIF
E		&80045	DROPMARK:SEARCHBACK "% key E: ":CLEARSEL:SELREGION:CRIGHT:ESCAPE:LASTMARK:COPYSEL:CLEARSEL:IF (@CHAROFF -1 = 32):SET (TeX_sp=1):ENDIF
F		&80046	DROPMARK:SEARCHBACK "% key F: ":CLEARSEL:SELREGION:CRIGHT:ESCAPE:LASTMARK:COPYSEL:CLEARSEL:IF (@CHAROFF -1 = 32):SET (TeX_sp=1):ENDIF
G		&80047	DROPMARK:SEARCHBACK "% key G: ":CLEARSEL:SELREGION:CRIGHT:ESCAPE:LASTMARK:COPYSEL:CLEARSEL:IF (@CHAROFF -1 = 32):SET (TeX_sp=1):ENDIF
H		&80048	DROPMARK:SEARCHBACK "% key H: ":CLEARSEL:SELREGION:CRIGHT:ESCAPE:LASTMARK:COPYSEL:CLEARSEL:IF (@CHAROFF -1 = 32):SET (TeX_sp=1):ENDIF
I		&80049	DROPMARK:SEARCHBACK "% key I: ":CLEARSEL:SELREGION:CRIGHT:ESCAPE:LASTMARK:COPYSEL:CLEARSEL:IF (@CHAROFF -1 = 32):SET (TeX_sp=1):ENDIF
J		&8004A	DROPMARK:SEARCHBACK "% key J: ":CLEARSEL:SELREGION:CRIGHT:ESCAPE:LASTMARK:COPYSEL:CLEARSEL:IF (@CHAROFF -1 = 32):SET (TeX_sp=1):ENDIF
K		&8004B	DROPMARK:SEARCHBACK "% key K: ":CLEARSEL:SELREGION:CRIGHT:ESCAPE:LASTMARK:COPYSEL:CLEARSEL:IF (@CHAROFF -1 = 32):SET (TeX_sp=1):ENDIF
L		&8004C	DROPMARK:SEARCHBACK "% key L: ":CLEARSEL:SELREGION:CRIGHT:ESCAPE:LASTMARK:COPYSEL:CLEARSEL:IF (@CHAROFF -1 = 32):SET (TeX_sp=1):ENDIF
M		&8004D	DROPMARK:SEARCHBACK "% key M: ":CLEARSEL:SELREGION:CRIGHT:ESCAPE:LASTMARK:COPYSEL:CLEARSEL:IF (@CHAROFF -1 = 32):SET (TeX_sp=1):ENDIF
N		&8004E	DROPMARK:SEARCHBACK "% key N: ":CLEARSEL:SELREGION:CRIGHT:ESCAPE:LASTMARK:COPYSEL:CLEARSEL:IF (@CHAROFF -1 = 32):SET (TeX_sp=1):ENDIF
O		&8004F	DROPMARK:SEARCHBACK "% key O: ":CLEARSEL:SELREGION:CRIGHT:ESCAPE:LASTMARK:COPYSEL:CLEARSEL:IF (@CHAROFF -1 = 32):SET (TeX_sp=1):ENDIF
P		&80050	DROPMARK:SEARCHBACK "% key P: ":CLEARSEL:SELREGION:CRIGHT:ESCAPE:LASTMARK:COPYSEL:CLEARSEL:IF (@CHAROFF -1 = 32):SET (TeX_sp=1):ENDIF
Q		&80051	DROPMARK:SEARCHBACK "% key Q: ":CLEARSEL:SELREGION:CRIGHT:ESCAPE:LASTMARK:COPYSEL:CLEARSEL:IF (@CHAROFF -1 = 32):SET (TeX_sp=1):ENDIF
R		&80052	DROPMARK:SEARCHBACK "% key R: ":CLEARSEL:SELREGION:CRIGHT:ESCAPE:LASTMARK:COPYSEL:CLEARSEL:IF (@CHAROFF -1 = 32):SET (TeX_sp=1):ENDIF
S		&80053	DROPMARK:SEARCHBACK "% key S: ":CLEARSEL:SELREGION:CRIGHT:ESCAPE:LASTMARK:COPYSEL:CLEARSEL:IF (@CHAROFF -1 = 32):SET (TeX_sp=1):ENDIF
T		&80054	DROPMARK:SEARCHBACK "% key T: ":CLEARSEL:SELREGION:CRIGHT:ESCAPE:LASTMARK:COPYSEL:CLEARSEL:IF (@CHAROFF -1 = 32):SET (TeX_sp=1):ENDIF
U		&80055	DROPMARK:SEARCHBACK "% key U: ":CLEARSEL:SELREGION:CRIGHT:ESCAPE:LASTMARK:COPYSEL:CLEARSEL:IF (@CHAROFF -1 = 32):SET (TeX_sp=1):ENDIF
V		&80056	DROPMARK:SEARCHBACK "% key V: ":CLEARSEL:SELREGION:CRIGHT:ESCAPE:LASTMARK:COPYSEL:CLEARSEL:IF (@CHAROFF -1 = 32):SET (TeX_sp=1):ENDIF
W		&80057	DROPMARK:SEARCHBACK "% key W: ":CLEARSEL:SELREGION:CRIGHT:ESCAPE:LASTMARK:COPYSEL:CLEARSEL:IF (@CHAROFF -1 = 32):SET (TeX_sp=1):ENDIF
X		&80058	DROPMARK:SEARCHBACK "% key X: ":CLEARSEL:SELREGION:CRIGHT:ESCAPE:LASTMARK:COPYSEL:CLEARSEL:IF (@CHAROFF -1 = 32):SET (TeX_sp=1):ENDIF
Y		&80059	DROPMARK:SEARCHBACK "% key Y: ":CLEARSEL:SELREGION:CRIGHT:ESCAPE:LASTMARK:COPYSEL:CLEARSEL:IF (@CHAROFF -1 = 32):SET (TeX_sp=1):ENDIF
Z		&8005A	DROPMARK:SEARCHBACK "% key Z: ":CLEARSEL:SELREGION:CRIGHT:ESCAPE:LASTMARK:COPYSEL:CLEARSEL:IF (@CHAROFF -1 = 32):SET (TeX_sp=1):ENDIF
