มีวิธีการสอบถามระบบเพื่อบอกหรือไม่ว่า Caps Lock เปิดหรือปิดจากบรรทัดคำสั่งใน terminal.app?
มีวิธีการสอบถามระบบเพื่อบอกหรือไม่ว่า Caps Lock เปิดหรือปิดจากบรรทัดคำสั่งใน terminal.app?
คำตอบ:
มีรหัสบรรทัดคำสั่งที่ดีเขียนโดยStefenk บน Macscripter
รหัสของ Stefen ช่วยให้คุณตรวจจับ cmd, ตัวเลือก, ควบคุม, เปลี่ยนและล็อคแคป
ในโพสต์ของเขาเขาให้รหัสและ zip ดาวน์โหลดของมัน
คุณสามารถดาวน์โหลดหรือสร้าง Xcode ของคุณเองโดยใช้โปรเจคพื้นฐาน
ฉันเพิ่งทดสอบทั้งสองวิธีใน 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 และเอกสารข้อความล้วน
cd ไปยังไดเรกทอรีเดียวกับไฟล์ของคุณ ตรวจสอบให้แน่ใจว่าส่วนขยายคือ. m (.c จะใช้ได้เช่นกัน)
จากนั้นเรียกใช้
gcc -framework Carbon CheckModKeys.m -o CheckModKeys
CheckModKeys.m เป็นไฟล์ของคุณ
CheckModKeys เป็นชื่อของแอพที่จะแสดงผล
<-)
ในการตรวจจับตัวพิมพ์ใหญ่ล็อคคำสั่งของคุณจะมีลักษณะดังนี้
/Users/UserName/MyFolder/CheckModKeys capslock
จะส่งคืน 1 หรือ 0
1 สำหรับบน
0 สำหรับปิด
เครดิตทั้งหมดไปที่ Stefen ฉันเพิ่งจำได้ว่าเขาโพสต์ด้วยวิธีนี้ในปีพ. ศ. 2552 และมันก็ยังใช้ได้วันนี้ ..
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 โดยใช้บัญชีผู้ใช้เริ่มต้นในการทุบตี เป็นส่วนหนึ่งของเชลล์เฉพาะหรือสิ่งที่คุณต้องติดตั้งเพื่อให้คำสั่งทำงานหรือไม่
xset
คือมันทำให้ XQuartz.app เปิดเพื่อให้มัน (`xset) ทำงานในเทอร์มินัล สำหรับฉันนี่เป็นพฤติกรรมที่ไม่พึงประสงค์เพราะฉันต้องการยูทิลิตี้ CLI ที่ทำงานเหมือนคำสั่ง BSD อื่น ๆ