termnal + detekce klavesy ESC

Miroslav BENES mbenes na tenez.cz
Čtvrtek Červenec 17 16:08:38 CEST 2003


> To samozrejme program z terminalu dostane. Problem je, jak to ma odlisit
> od situace, kdy stejnou nebo podobnou sekvenci vygeneruje napr. klavesa
> F1. Na to jsou v podstate dva pristupy:
> 
> 1. chce-li uzivatel opravdu prave a pouze klavesu ESC, pak ji
>    zmackne dvakrat,

V definici protermcap (nastaveni terminalu v Progress-u] je mj. 
i radek
:ESC=\E\E:   :L_ESC=<ESC><ESC>:\

Coz by napovidalo zminen teorii (jen pro poradek - prvni ESC je 
jmeno funkce, vyraz za rovnitkem je popis sekvence ktera ma 
prijit z terminalu).

Ovsem takto to bohuzel nechodi :(


> 2. program sleduje, jak dlouha prodleva nasleduje po prijeti kodu 27,
>    a kdyz je dost velka, tak usoudi, ze to nebude soucast delsi sekvence
>    a interpretuje ho samostatne (tohle samozrejme muze selhat, pokud
>    se tok dat nekde zasekne)
> 
> Cele se to samozrejme muze znacne zkomplikovat, pokud mezi terminalem a
> vlastnim programem stoji neco, co data z terminalu interpretuje vlastnim
> zpusobem, treba ten zmineny progressovsky klient.

Ano, tak to bohuzel je. V klientovi je funkce LASTKEY a do ni uz 
to "neprobubla".


BTW napadlo me jine "reseni" - kdyz bych obetoval malo 
pouzivanou klavesu (napr. F12), mohl bych program predelat tak 
aby reagoval na ni. Pa by mi stacilo nekde v retezci 
Uzivael -> putty -> terminal -> DB klient
zamenit kody klaces ESC a F12. Ale nevim jak toho dosahnout - ve 
zdrojacich putty jsem zadne vhodne misto nenasel a nevim ani 
jestli by se dal "ukecat" terminal aby vracel jine kody klaves.


--------------------------
Miroslav BENES
E-mail   : mbenes na tenez.cz
TENEZ Chotebor, a.s
--------------------------



Další informace o konferenci Linux