1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
PACKET tasten verwaltung DEFINES (* #009 *)
(***************)
lernsequenz auf taste legen,
lernsequenz auf taste,
kommando auf taste legen,
kommando auf taste,
taste enthaelt kommando,
std tastenbelegung :
LET kommandoidentifikation = ""0"" ,
esc = ""27"" ,
niltext = "" ,
hop right left up down cr tab rubin rubout mark esc
= ""1""2""8""3""10""13""9""11""12""16""27"" ;
ROW 256 TEXT VAR belegung;
INT VAR i; FOR i FROM 1 UPTO 256 REP belegung (i) := "" PER;
std tastenbelegung;
PROC lernsequenz auf taste legen (TEXT CONST taste, lernsequenz) :
belege (belegung (code (taste) + 1), taste, lernsequenz)
ENDPROC lernsequenz auf taste legen ;
PROC belege (TEXT VAR tastenpuffer, TEXT CONST taste, lernsequenz) :
tastenpuffer := lernsequenz ;
verhindere rekursives lernen .
verhindere rekursives lernen :
loesche alle folgen esc taste aber nicht esc esc taste ;
IF taste ist freies sonderzeichen
THEN change all (tastenpuffer, taste, niltext)
FI .
loesche alle folgen esc taste aber nicht esc esc taste :
INT VAR i := pos (tastenpuffer, esc + taste) ;
WHILE i > 0 REP
IF ist esc esc taste
THEN i INCR 1
ELSE change (tastenpuffer, i, i+1, niltext)
FI ;
i := pos (tastenpuffer, esc + taste, i)
PER .
ist esc esc taste :
(tastenpuffer SUB i-1) = esc AND (tastenpuffer SUB i-2) <> esc .
taste ist freies sonderzeichen :
taste < ""32"" AND
pos (hop right left up down cr tab rubin rubout mark esc, taste) = 0 .
END PROC belege ;
TEXT PROC lernsequenz auf taste (TEXT CONST taste) :
IF taste enthaelt kommando (taste)
THEN ""
ELSE belegung (code (taste) + 1)
FI
END PROC lernsequenz auf taste;
PROC kommando auf taste legen (TEXT CONST taste, kommando) :
belegung (code (taste) + 1) := kommandoidentifikation;
belegung (code (taste) + 1) CAT kommando
END PROC kommando auf taste legen;
TEXT PROC kommando auf taste (TEXT CONST taste) :
IF taste enthaelt kommando (taste)
THEN subtext (belegung (code (taste) + 1), 2)
ELSE ""
FI
END PROC kommando auf taste;
BOOL PROC taste enthaelt kommando (TEXT CONST taste) :
(belegung (code (taste) + 1) SUB 1) = kommandoidentifikation
END PROC taste enthaelt kommando;
PROC std tastenbelegung:
lernsequenz auf taste legen ("(", ""91"");
lernsequenz auf taste legen (")", ""93"");
lernsequenz auf taste legen ("<", ""123"");
lernsequenz auf taste legen (">", ""125"");
lernsequenz auf taste legen ("A", ""214"");
lernsequenz auf taste legen ("O", ""215"");
lernsequenz auf taste legen ("U", ""216"");
lernsequenz auf taste legen ("a", ""217"");
lernsequenz auf taste legen ("o", ""218"");
lernsequenz auf taste legen ("u", ""219"");
lernsequenz auf taste legen ("k", ""220"");
lernsequenz auf taste legen ("-", ""221"");
lernsequenz auf taste legen ("#", ""222"");
ler�sequenz auf taste legen (" ", ""223"");
lernsequenz auf taste legen ("B", ""251"");
lernsequenz auf taste legen ("s", ""251"");
END PROC std tastenbelegung;
END PACKET tasten verwaltung;
|