Domanda

Sto scrivendo una domanda di maledizioni in Python in ambiente UNIX. Voglio consentire all'utente di utilizzare C-Y per tirare da un anello di uccidere alla l'Emacs.

Il problema è, naturalmente, che C-Y viene catturato da mio guscio che poi invia SIGTSTP al mio processo. Inoltre, C-Z comporta anche SIGTSTP inviati, quindi prendere la segnale significa che C-Y e C-Z non sono distinguibili (ma anche senza questo le uniche soluzioni che vengono in mente sono estremamente hackish).

Lo so quello che sto chiedendo è possibile (in C, se non in Python), dal momento che Emacs lo fa. Come è possibile disattivare la gestione speciale della shell di alcuni caratteri di controllo inviati dalla tastiera e hanno i personaggi in questione compaiono sul processo di stdin?

È stato utile?

Soluzione

Si veda il modulo termios, e la pagina termios(3) dell'uomo.

Altri suggerimenti

Per la funzionalità di base, utilizzare tty . Ad esempio, la chiamata tty.setraw(sys.stdin) metterà terminale di input standard in modalità raw.

Per il caso più generale, Python viene fornito con una termios biblioteca , ma si probabilmente bisogno di una certa esperienza con termios sapere come usarlo.

In alternativa, un modo economico è sborsare a stty, che è una riga di comando per termios.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top