diff options
Diffstat (limited to 'Master/texmf-dist/doc/latex/einfuehrung2/KEYTABLE.PAS')
-rw-r--r-- | Master/texmf-dist/doc/latex/einfuehrung2/KEYTABLE.PAS | 270 |
1 files changed, 0 insertions, 270 deletions
diff --git a/Master/texmf-dist/doc/latex/einfuehrung2/KEYTABLE.PAS b/Master/texmf-dist/doc/latex/einfuehrung2/KEYTABLE.PAS deleted file mode 100644 index 97fb30b80e4..00000000000 --- a/Master/texmf-dist/doc/latex/einfuehrung2/KEYTABLE.PAS +++ /dev/null @@ -1,270 +0,0 @@ -unit KeyTable; - -{$I-,V-,X+} -interface - -uses Dos, Drivers, Views, Editors; - -const - N = 33; - evInvalidKey = 1024; { entspricht /$2^{10}$/ } - edNoKeyTab = 11; - kbBlank = $3920; - - function ReadKeyTable: boolean; - function EditKeyTable: boolean; - procedure ShowKeyTable; - procedure GetComm (var Pos: Word; var E: TEvent); - - implementation - - var T: array [0..199] of record - k1,k2,cm: word - end; - top: integer; - ShiftState: byte absolute $40:$17; - - const Commands: array [0..N-1] of - record - s: string [12]; - v: word - end= - ((S:'Cut'; v:Cmcut), - (s:'Copy'; v:cmcopy), - (s:'Paste'; v:cmPaste), - (s:'Undo'; v:cmUndo), - (s:'Clear'; v:cmClear), - (s:'Save'; v:cmSave), - (s:'SaveAs'; v:cmSaveAs), - (s:'Find'; v:cmFind), - (s:'Replace'; v:cmReplace), - (s:'SearchAgain'; v:cmSearchAgain), - (s:'CharLeft'; v:cmCharLeft), - (s:'CharRight'; v:cmCharRight), - (s:'WordLeft'; v:cmWordLeft), - (s:'WordRight'; v:cmWordRight), - (s:'LineStart'; V:cmLineStart), - (s:'LineEnd'; v:cmLineEnd), - (s:'LineUp'; v:cmLineup), - (s:'LineDown'; v:cmLineDown), - (s:'PageUp'; v:cmPageUp), - (s:'PageDown'; V:cmPageDown), - (s:'TextStart'; v:cmTextStart), - (s:'TextEnd'; v:cmTextEnd), - (s:'NewLine'; v:cmNewLine), - (s:'BackSpace'; v:cmBackSpace), - (s:'DelChar'; V:cmDelChar), - (s:'DelWord'; v:cmDelWord), - (s:'DelStart'; v:cmDelStart), - (s:'DelEnd'; v:cmDelEnd), - (s:'DelLine'; V:cmDelLine), - (s:'InsMode'; v:cmInsMode), - (s:'StartSelect'; v:cmStartSelect), - (s:'HideSelect'; v:cmHideSelect), - (s:'IndentMode'; v:CmIndentMode)); - KVal: array [$47..$53] of word= (1,2,3,4,5,0,6,7,8,9,10,11,12); - KName: array [0..13] of String[6]= - ('???','Home','UP','Pgup','Minus', - 'Left','Right','Plus','End', - 'Down','Pgdn','Ins','Del', - 'PrtSrc'); - MName: array [0..3] of String [5]= ('','Shift','Ctrl','Alt'); - SName: array [$72..$77] of word= (13,5,6,8,10,1); - - type Str2=String[2]; - - function Num(b: byte): Str2; - begin - if b=0 then Num:='10' - else Num:=Chr(b+$30); - end; - - function Conv(key: word): String; - var cc: char; - scan,cval: byte; - begin - scan:=Hi(key); - cval:=Lo(key); - case scan of - $00: Conv:=''; - $01: Conv:='ESC'; - $04..$07: Conv:=MName[scan mod 2 xor 1+1]+' '+KName[scan div 2+9]; - $0E: if cval=8 then Conv:='Bksp' - else Conv:='Ctrl Bksp'; - $0F: if cval=9 then Conv:='Tab' - else Conv:='Shift Tab'; - $1C: if cval=13 then Conv:='Cr' - else Conv:='Ctrl Cr'; - $10..$32: begin - cc:=GetAltChar(scan*256); - case cval of - 0: Conv:='Alt '+cc; - 1..$1B: Conv:='Ctrl '+Cc; - $41..$5B, - $61..$7B: Conv:=cc; - end; - end; - $39: Conv:=''; - $3B..$44: Conv:='F'+Num(scan-$3A); - $47..$53: Conv:=KName[KVal[scan]]; - $54..$71: Conv:=MName[(scan-$49) div 10]+' '+'F'+Num((scan-$49) Mod 10); - $72..$77: Conv:='Ctrl '+KName[SName[scan]]; - $84: Conv:='Ctrl Pgup'; - else Conv:='???' - end; - end; - - function find(key: word): integer; - var i,j,m: integer; - found: boolean; - begin - i:=-1; - j:=top; - found:=false; - while (i<j-1) do - begin - m:=(i+j) div 2; - if T[m].k1<key then i:=m - else if T[m].k1>=key then j:=m - end; - while (j>0) and (T[j-1].k1=key) do - Dec(j); - find:=j - end; - - function insert(k1,k2,cm:word): integer; - var i: integer; - begin - insert:=-1; - if k1=0 then Exit; - insert:=-2; - if (k1=kbEsc) and (k2=kbEsc) then Exit; - insert:=0; - i:=find (k1); - if (T[i].k1=k1) and (k2=0) or - (T[i].k2=0) then Exit; - while (T[i].k1=k1) and (T[i].k2<k2) do - Inc(i); - if (T[i].k1=k1) and (T[i].k2=k2) then - Exit; - move(T[i],T[i+1],(top-i+1)*sizeof(T[0])); - T[i].k1:=k1; - T[i].k2:=k2; - T[i].cm:=cm; - Inc(top); - insert:=1; - end; - - function ReadKbd: word; - var E: TEvent; - begin - repeat GetKeyEvent(E); - until E.What<>evNothing; - if (ShiftState and 3 <> 0) and - (E.ScanCode in [$47..$51]) then - E.CharCode:=#0; - Write(Conv(E.KeyCode)); - if E.KeyCode=kbBlank then ReadKbd:=0 - else ReadKbd:=E.KeyCode; - end; - - function EditKeyTable; - var state,k: integer; - - f: File; - begin - top:=0; - T[0].k1:=$FFFF; - T[0].k2:=$FFFF; - for k:=0 to N-1 do - begin - repeat - write(Commands[k].s,': '); - state:=insert(ReadKbd,ReadKbd,k); - writeln; - if state=0 then - writeln('Key(s) already defined'); - until (state<0); - if state=-2 then - begin - EditKeyTable:=ReadKeyTable; - Exit; - end; - end; - EditKeyTable:=True; - Assign(f,'edit.cfg'); - Rewrite(f,1); - blockwrite(f,top,2); - blockwrite(f,T,top*sizeof(T[0])); - close(f) - end; - - function ReadKeyTable; - var f: file; - Result: word; - begin - top:=0; - ReadKeyTable:=False; - assign(f,'edit.cfg'); - reset(f,1); - if IOResult<>0 then - begin - EditorDialog(edNoKeyTab,NiL); - Exit - end; - blockread(f,top,2,Result); - if Result<>2 then - begin - EditorDialog(edNoKeyTab,Nil); - Close(f); - Exit; - end; - blockread(f,T,sizeof(T[0])*top); - cloSe(f); - ReadKeyTable:=True; - T[top].k1:=$FFFF; - T[top].k2:=$FFFF - end; - - procedure GetComm; - begin - if (ShiftState and 3<>0) and (E.ScanCode in [$47..$51]) - then E.CharCode:=#0; - if Pos=0 then - begin - Pos:=find(E.KeyCode); - if T[Pos].k1<>E.KeyCode then Pos:=0 - else if T[Pos].k2=0 then - begin - E.Command:=Commands[T[pos].cm].v; - E.What:=evCommand; - Pos:=0; - end - else E.What:=evNothing; - end - else - begin - while (T[Pos+1].k1=T[Pos].k1) and - (T[Pos+1].k2<=E.KeyCode) do Inc(Pos); - if T[POS].k2=E.KeyCode then - begin - E.What:=evCommand; - E.Command:=Commands[T[pos].cm].v; - end - else E.What:=evInvalidKey; - Pos:=0; - end; - end; - - procedure ShowKeyTable; - var k: integer; - f: text; - begin - Assign(f,'out.$$$'); - Rewrite(f); - for k:=0 to top-1 do - writeln(f,Commands[T[k].cm].s,' : ',Conv(T[k].k1),Conv(T[k].k2)); - Close(f) - end; - - end. |