summaryrefslogtreecommitdiff
path: root/system/base/1.7.5/src/tasten
blob: 752303b48be358814c1ad05a7bc78b92ecb9d96a (plain)
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;