Domanda

Per una domanda così semplice, sono sorpreso di non aver trovato nulla cercando...

Ad ogni modo, ho creato un'app curses in Python che aiuta a risolvere gli enigmi di un certo gioco DSiWare.Con esso, puoi prendere un puzzle e ispezionarne i componenti individualmente.I tasti qweasdzx servono per dipingere le piastrelle (i tasti sono disposti in una sorta di tavolozza).Premendo uno di questi tasti mentre si tiene premuto Maiusc si evidenziano le tessere con quel colore.Non potrei chiedere uno schema di controllo più naturale.

Quindi è un peccato che, ancora una volta, Shift mi stia dando problemi (l'ultima volta che ho avuto problemi con Shift, ho guadagnato un badge Tumbleweed).Questa volta, però, il problema è più o meno il Caps Lock, che rovina completamente il mio programma invertendo le funzioni.

Come posso rilevare lo stato di Caps Lock in Python con curses?

MODIFICARE:Se suggerisci di usare un modulo separato, probabilmente dovrei ricordarti che curses - e quindi il mio programma - è in territorio UNIX.

È stato utile?

Soluzione

Ho trovato una soluzione da solo:

Poiché i cursori è completamente inconsapevole dell'impostazione del blocco dei cappucci in base a τζωτζιου, ho provato una soluzione alternativa. Nello specifico, ho cercato come controllare i tappi bloccati in uno script bash. Quello che ho trovato è stato questo:

solo Linux. Richiede il sistema X Window.

$ xset q | grep LED
>  auto repeat:  on    key click percent:  0    LED mask:  00000000
.

L'ultimo 0 in quell'output (il 66 ° carattere nella stringa) è il bandiera Blocco Caps. 1 Se è acceso, 0 se è spento.

Python può eseguire comandi di sistema UNIX con Linux-solo Commands Module. I comandi non sembra interferire con maledizioni.

>>> import commands
>>> # Caps Lock is off.
>>> commands.getoutput("xset q | grep LED")[65]
'0'
>>> # Setting Caps Lock on now.
>>> commands.getoutput("xset q | grep LED")[65]
'1'
.

Questo funziona bene per me; Questo è uno script di uso personale, e non è come il mio programma non era già esclusivo di Linux. Ma spero che qualcuno abbia un altro, più soluzione compatibile con Windows.

Accetterò questo auto-risposta per ora, ma se qualcun altro può inventare una soluzione di lavoro migliore, mi piacerebbe vederlo.

Altri suggerimenti

La risposta breve:non puoi.

Una risposta più lunga:

curses è stato creato come libreria basata su terminfo per facilitare la creazione di UI basate sui caratteri indipendenti dal terminale utilizzato (for terminal in 'vt220', 'wyse100', …).

Questi terminali collegati tramite una linea seriale e la comunicazione avanti e indietro con l'host avveniva tramite testo semplice (input dall'utente o output dall'host) o sequenze speciali (sequenze di "escape");input da parte dell'utente se sono stati premuti tasti speciali, come O Prec, o output dall'host se sono state richieste operazioni speciali come il posizionamento del cursore o la pulizia dello schermo).

Non ne ho conoscenza Qualunque terminale stupido che invia una sequenza speciale ogni volta che il tasto BLOC MAIUSC viene premuto o l'host richiede lo stato BLOC MAIUSC;bloccare i capitali faceva parte del lavoro del terminale e l'host non aveva bisogno di alcuna conoscenza.Questo è simile al motivo per cui non puoi far funzionare un programma curses quando il tasto Control viene premuto da solo.

Tutto ciò che riguarda le maledizioni si riferisce a terminfo capacità;non c'è alcuna capacità correlata per quello che chiedi.

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