C'è un modo per interrogare il sistema per dire se il blocco maiuscole è attivato o è disattivato dalla riga di comando in terminal.app?
C'è un modo per interrogare il sistema per dire se il blocco maiuscole è attivato o è disattivato dalla riga di comando in terminal.app?
Risposte:
C'è un ottimo codice da riga di comando scritto da Stefenk su Macscripter
Il codice di Stefen consente di rilevare cmd, opzioni, controllo, spostamento e blocco maiuscole.
Nel suo post fornisce il codice e un download zip di esso.
Puoi scaricarlo o crearne uno tuo in Xcode usando il progetto di fondazione.
Ho appena provato in entrambi i modi a El Capitan ed entrambi funzionano.
Il codice se vuoi crearne uno tuo in Xcode.app è:
#import <Carbon/Carbon.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
unsigned int modifiers = GetCurrentKeyModifiers();
if (argc == 1)
printf("%d\n", modifiers);
else {
int i, result = 1;
for (i = 1; i < argc; ++i) {
if (0 == strcmp(argv[i], "shift"))
result = result && (modifiers & shiftKey);
else if (0 == strcmp(argv[i], "option"))
result = result && (modifiers & optionKey);
else if (0 == strcmp(argv[i], "cmd"))
result = result && (modifiers & cmdKey);
else if (0 == strcmp(argv[i], "control"))
result = result && (modifiers & controlKey);
else if (0 == strcmp(argv[i], "capslock"))
result = result && (modifiers & alphaLock);
}
printf("%d\n", result);
}
}
return 0;
}
---------- (aggiorna ->
Se vuoi compilarlo da Terminal.app
Inserisci il codice in un file di testo semplice. Ho appena usato TextEdit.app e un documento di testo semplice.
cd nella stessa directory del tuo file. Assicurati che l'estensione sia .m (anche .c sarà ok)
Quindi corri.
gcc -framework Carbon CheckModKeys.m -o CheckModKeys
CheckModKeys.m è il tuo file.
CheckModKeys è il nome dell'app da inviare.
<-)
Per rilevare il blocco maiuscole, il comando dovrebbe assomigliare a:
/Users/UserName/MyFolder/CheckModKeys capslock
verrà restituito 1 o 0.
1 per on
0 per spento
Tutto il merito va a Stefen. Ho appena ricordato che ha pubblicato in questo modo nel '2009. E funziona ancora oggi ..
gcc -o getmod getmod.c
ma è tornato getmod.c:4:5: error: expected expression @autoreleasepool { ^ 1 error generated.
Se XQuartz è installato e in esecuzione o non ti dispiace l'avvio, puoi eseguire:xset -q
Keyboard Control:
auto repeat: on key click percent: 0 LED mask: 00000000
XKB indicators:
00: Caps Lock: off 01: Num Lock: off 02: Shift Lock: off
03: Group 2: off 04: Mouse Keys: off 05: Scroll Lock: off
xset
su El Capitan utilizzando un account utente predefinito in bash. Fa parte di una shell specifica o qualcosa che devi installare per far funzionare il comando?
xset
fa parte del X11
quale non è installato per impostazione predefinita. Puoi ottenerlo qui: XQuartz
xset
è che fa aprire XQuartz.app per farlo funzionare (`xset) in un Terminale. Per me questo è un comportamento indesiderato poiché vorrei solo un'utilità CLI che funzioni come qualsiasi altro comando BSD.