Czy istnieje sposób na wysłanie zapytania do systemu w celu ustalenia, czy funkcja Caps Lock jest włączona, czy wyłączona z wiersza poleceń w terminal.app?
Czy istnieje sposób na wysłanie zapytania do systemu w celu ustalenia, czy funkcja Caps Lock jest włączona, czy wyłączona z wiersza poleceń w terminal.app?
Odpowiedzi:
Na Macscripter jest świetny kod wiersza poleceń napisany przez Stefenka
Kod Stefena pozwala wykryć polecenia cmd, Option, Control, Shift i Caps Lock.
W swoim poście udostępnia kod i plik zip do pobrania.
Możesz go pobrać lub zbudować w Xcode za pomocą projektu fundacji.
Właśnie przetestowałem oba sposoby w El Capitan i oba działają.
Kod, jeśli chcesz zbudować własny w Xcode.app, to:
#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;
}
---------- (aktualizacja ->
Jeśli chcesz go skompilować z Terminal.app
Umieść kod w zwykłym pliku tekstowym. Właśnie użyłem TextEdit.app i zwykłego dokumentu tekstowego.
cd do tego samego katalogu co twój plik. Upewnij się, że rozszerzenie to .m (.c będzie również w porządku)
Następnie uruchomić.
gcc -framework Carbon CheckModKeys.m -o CheckModKeys
CheckModKeys.m to Twój plik.
CheckModKeys to nazwa aplikacji, która ma zostać wyprowadzona.
<-)
Aby wykryć blokadę klawiszy, twoje polecenie wyglądałoby mniej więcej tak:
/Users/UserName/MyFolder/CheckModKeys capslock
1 lub 0 zostanie zwrócone.
1 na wł
0 za wyłączone
Wszystkie zasługi należą się Stefenowi. Przypomniałem sobie, że opublikował to w 2009 roku. I nadal działa do dzisiaj ..
gcc -o getmod getmod.c
ale wróciło getmod.c:4:5: error: expected expression @autoreleasepool { ^ 1 error generated.
Jeśli masz zainstalowany XQuartz i albo działasz, albo nie przeszkadza ci uruchomienie, możesz uruchomić: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
na El Capitan przy użyciu domyślnego konta użytkownika w bash. Czy to część konkretnej powłoki lub coś, co musisz zainstalować, aby polecenie działało?
xset
polega na tym, że XQuartz.app otwiera się dla niego (`xset) w Terminalu. Dla mnie jest to niepożądane zachowanie, ponieważ chciałbym po prostu narzędzie CLI, które działa jak każde inne polecenie BSD.