Jak odchytit klávesu break?

MB

Jak odchytit klávesu break?
« kdy: 28. 03. 2013, 11:51:11 »
Neví někdo jak odchytit pomocí 'trap' klávesu 'break'?
Díky MB
« Poslední změna: 28. 03. 2013, 13:29:38 od Petr Krčmář »



MB

Re:Jak odchytit klávesu break ?
« Odpověď #2 kdy: 28. 03. 2013, 14:02:38 »
Díky za tip, nic kloudného jsem tam ale nenašel, někdo nějaký jiný tip? Děkuji

martin-ux

Re:Jak odchytit klávesu break?
« Odpověď #3 kdy: 28. 03. 2013, 19:55:39 »
break posiela SIGTSTP. v zavislosti na akom UX/UX-like si, tak cez "kill -l" zistis, ktory je to signal. problem je, ze trap ten signal nestihne dostat, kedze susp dostane najskor jeho parent (shell). je to celkom zaujimavy problem; mne sa to nepodarilo spravit cez trap. workaround by mohol byt cez stty. na ukazku script:

Kód: [Vybrat]
#!/bin/sh

DEBUG=1
ORIG_STTY="`stty -g`"

[ ${DEBUG} ] || printf "DEBUG: orig stty: ${ORIG_STTY}\n";

stty susp ^Q -echo

cleanup() {
        printf "cleanup\n"
        stty ${ORIG_STTY}
        exit 0;
}

trap 'cleanup' INT

printf "starting endless loop..\n"
while true; do
        printf ".";
        sleep 1;
done

v principe nastavim susp na nieco ine. cez trap chytim INT, aby som mal moznost po sebe upratat a vratit term nastavenia do povodneho stavu. -echo aby sa neukazovali ziadne (pre mna) nechcene znaky.

neviem si spomenut ani sa na rychlo dogooglit, ci sa da susp nastavit na NULL. podla man chce CHAR, takze som si nie isty.