Existe uma maneira de consultar o sistema para saber se o caps lock está ativado ou desativado na linha de comando no terminal.app?
Existe uma maneira de consultar o sistema para saber se o caps lock está ativado ou desativado na linha de comando no terminal.app?
Respostas:
Existe um ótimo código de linha de comando escrito por Stefenk no Macscripter
O código de Stefen permite detectar cmd, opção, controle, mudança e caps lock.
Em seu post, ele fornece o código e um zip para download.
Você pode fazer o download ou criar o seu próprio no Xcode usando o projeto de fundação.
Acabei de testar os dois lados em El Capitan e os dois funcionam.
O código se você deseja criar o seu próprio no 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;
}
---------- (atualização ->
Se você deseja compilá-lo no Terminal.app
Coloque o código em um arquivo de texto sem formatação. Eu apenas usei TextEdit.app e um documento de texto sem formatação.
cd para o mesmo diretório que o seu arquivo. Verifique se a extensão é .m (.c também ficará ok)
Então corra.
gcc -framework Carbon CheckModKeys.m -o CheckModKeys
CheckModKeys.m é o seu arquivo.
CheckModKeys é o nome do aplicativo a ser produzido.
<-)
Para detectar caps lock, seu comando seria semelhante a:
/Users/UserName/MyFolder/CheckModKeys capslock
um 1 ou 0 será retornado.
1 para em
0 para desligado
Todo o crédito é para Stefen. Acabei de me lembrar que ele postou desta maneira em2009. E ainda funciona hoje ..
gcc -o getmod getmod.c
, mas que retornou getmod.c:4:5: error: expected expression @autoreleasepool { ^ 1 error generated.
Se você possui o XQuartz instalado e está executando ou não se importa com o lançamento, é possível executar: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
no El Capitan usando uma conta de usuário padrão no bash. Isso faz parte de um shell específico ou algo que você precisa instalar para que o comando funcione?
xset
é que ele faz com que o XQuartz.app seja aberto (xset) para ser executado em um Terminal. Para mim, esse é um comportamento indesejável, pois eu gostaria apenas de um utilitário CLI que seja executado como qualquer outro comando BSD.