Có cách nào để truy vấn hệ thống để biết khóa mũ đang bật hay tắt từ dòng lệnh trong terminal.app không?
Có cách nào để truy vấn hệ thống để biết khóa mũ đang bật hay tắt từ dòng lệnh trong terminal.app không?
Câu trả lời:
Có một mã dòng lệnh tuyệt vời được viết bởi Stefenk trên Macscripter
Mã của Stefen cho phép bạn phát hiện cmd, tùy chọn, điều khiển, dịch chuyển và khóa mũ.
Trong bài đăng của mình, anh ta cung cấp mã và mã zip tải xuống.
Bạn có thể tải xuống hoặc tự xây dựng trong Xcode bằng dự án nền tảng.
Tôi vừa thử nghiệm cả hai cách ở El Capitan và cả hai đều hoạt động.
Mã nếu bạn muốn xây dựng mã của riêng mình trong Xcode.app là:
#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;
}
---------- (cập nhật ->
Nếu bạn muốn biên dịch nó từ Terminal.app
Đặt mã vào một tệp văn bản đơn giản. Tôi chỉ sử dụng TextEdit.app và một tài liệu văn bản thuần túy.
cd vào cùng thư mục với tập tin của bạn. Đảm bảo rằng phần mở rộng là .m (.c cũng sẽ ổn)
Sau đó chạy.
gcc -framework Carbon CheckModKeys.m -o CheckModKeys
CheckModKeys.m là tệp của bạn.
CheckModKeys là tên của ứng dụng được xuất ra.
<-)
Để phát hiện khóa, lệnh của bạn sẽ trông giống như:
/Users/UserName/MyFolder/CheckModKeys capslock
1 hoặc 0 sẽ được trả lại.
1 cho
0 cho tắt
Tất cả các khoản tín dụng cho Stefen. Tôi chỉ nhớ anh ấy đã đăng cách này vào năm2009. Và nó vẫn hoạt động cho đến ngày hôm nay ..
gcc -o getmod getmod.c
nhưng nó đã quay trở lại getmod.c:4:5: error: expected expression @autoreleasepool { ^ 1 error generated.
Nếu bạn đã cài đặt XQuartz và đang chạy hoặc không bận tâm đến việc khởi chạy, bạn có thể chạy: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
trên El Capitan bằng tài khoản người dùng mặc định trong bash. Đây có phải là một phần của trình bao cụ thể hay thứ gì đó bạn phải cài đặt để lệnh hoạt động không?
xset
là một phần trong số X11
đó không được cài đặt theo mặc định. Bạn có thể lấy nó ở đây: XQuartz
xset
là nó khiến XQuartz.app mở cho nó (`xset) để chạy trong Terminal. Đối với tôi đây là hành vi không mong muốn vì tôi chỉ muốn một tiện ích CLI chạy như mọi lệnh BSD khác.