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;