Есть ли способ запросить систему, чтобы узнать, включена ли блокировка заглавных букв или отключена из командной строки в Terminal.app?
Есть ли способ запросить систему, чтобы узнать, включена ли блокировка заглавных букв или отключена из командной строки в Terminal.app?
Ответы:
Существует отличный код командной строки, написанный Стефенком на Macscripter.
Код Стефена позволяет вам определять cmd, option, control, shift и caps lock.
В своем посте он предоставляет код и почтовый индекс его загрузки.
Вы можете скачать его или создать свой собственный в XCode, используя Foundation Project.
Я только что проверил оба пути в El Capitan, и они оба работают.
Код, если вы хотите создать свой собственный в 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 и простой текстовый документ.
перейдите в тот же каталог, что и ваш файл. Убедитесь, что расширение .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.