Чи є спосіб запиту системи, щоб дізнатись, чи блокується функція Caps, чи вимкнено командний рядок у terminal.app?
Чи є спосіб запиту системи, щоб дізнатись, чи блокується функція Caps, чи вимкнено командний рядок у terminal.app?
Відповіді:
Існує великий код командного рядка, написаний Стефенком на Macscripter
Код Стефана дозволяє виявити cmd, опцію, управління, зсув та блокування ковпачків.
У своїй посаді він надає код і поштовий індекс для завантаження.
Ви можете завантажити або створити свій власний Xcode за допомогою фундаментального проекту.
Я просто випробував обидва способи в Ель-Капітані, і вони обидва працюють.
Код, якщо ви хочете створити свій власний 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;
}
---------- (оновлення ->
Якщо ви хочете скласти його з Terminal.app
Помістіть код у звичайний текстовий файл. Я щойно використав TextEdit.app та звичайний текстовий документ.
CD в той самий каталог, що і ваш файл. Переконайтеся, що розширення .m (.c також буде добре)
Потім запустіть.
gcc -framework Carbon CheckModKeys.m -o CheckModKeys
CheckModKeys.m - це ваш файл.
CheckModKeys - це назва програми, що виводиться.
<-)
Для виявлення шапки блокування ваша команда виглядатиме приблизно так:
/Users/UserName/MyFolder/CheckModKeys capslock
1 або 0 буде повернуто.
1 для на
0 для вимкн
Вся заслуга належить Стефену. Я просто пам’ятав, що він розмістив цей шлях ще у2009 році. І це працює і сьогодні ..
gcc -o getmod getmod.c
але повернувся getmod.c:4:5: error: expected expression @autoreleasepool { ^ 1 error generated.
Якщо у вас встановлений XQuartz і працює або не заперечує його запуск, ви можете запустити: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
в El Capitan не використовується обліковий запис користувача за замовчуванням у bash. Це частина певної оболонки чи щось, що ви повинні встановити, щоб команда працювала?
xset
полягає в тому, що вона змушує XQuartz.app відкриватися для неї (`xset) у терміналі. Для мене це небажана поведінка, тому що я просто хотів би утиліту CLI, яка працює як і будь-яка інша команда BSD.