Gibt es eine Möglichkeit, das System abzufragen, um festzustellen, ob die Feststelltaste in der Befehlszeile in terminal.app aktiviert oder deaktiviert ist?
Gibt es eine Möglichkeit, das System abzufragen, um festzustellen, ob die Feststelltaste in der Befehlszeile in terminal.app aktiviert oder deaktiviert ist?
Antworten:
Es gibt einen großartigen Befehlszeilencode, der von Stefenk auf Macscripter geschrieben wurde
Mit dem Code von Stefen können Sie cmd, Option, Steuerung, Verschiebung und Feststelltaste erkennen.
In seinem Beitrag stellt er den Code und eine Download-Zip davon zur Verfügung.
Sie können es entweder herunterladen oder mit dem Foundation-Projekt in Xcode erstellen.
Ich habe gerade beide Wege in El Capitan getestet und beide funktionieren.
Der Code, wenn Sie Ihren eigenen in Xcode.app erstellen möchten, lautet:
#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;
}
---------- (Update ->
Wenn Sie es aus Terminal.app kompilieren möchten
Fügen Sie den Code in eine Nur-Text-Datei ein. Ich habe gerade TextEdit.app und ein einfaches Textdokument verwendet.
CD in dasselbe Verzeichnis wie Ihre Datei. Stellen Sie sicher, dass die Erweiterung .m ist (.c ist auch in Ordnung)
Dann renne.
gcc -framework Carbon CheckModKeys.m -o CheckModKeys
CheckModKeys.m ist Ihre Datei.
CheckModKeys ist der Name der App, die ausgegeben werden soll.
<-)
Um eine Feststelltaste zu erkennen, würde Ihr Befehl ungefähr so aussehen:
/Users/UserName/MyFolder/CheckModKeys capslock
Eine 1 oder 0 wird zurückgegeben.
1 für auf
0 für aus
Alle Kredite gehen an Stefen. Ich habe mich nur daran erinnert, dass er diesen Weg bereits 2009 gepostet hat. Und es funktioniert noch heute ..
gcc -o getmod getmod.c
aber das kehrte zurück getmod.c:4:5: error: expected expression @autoreleasepool { ^ 1 error generated.
Wenn Sie XQuartz installiert haben und entweder ausgeführt werden oder es Ihnen nichts ausmacht, es zu starten, können Sie Folgendes ausführen: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
auf El Capitan kein Standardbenutzerkonto in Bash. Ist dieser Teil einer bestimmten Shell oder etwas, das Sie installieren müssen, damit der Befehl funktioniert?
xset
ist ein Teil X11
davon ist nicht standardmäßig installiert. Sie können es hier bekommen: XQuartz
xset
ist, dass XQuartz.app geöffnet wird, damit es (`xset) in einem Terminal ausgeführt wird. Für mich ist dies ein unerwünschtes Verhalten, da ich nur ein CLI-Dienstprogramm möchte, das wie jeder andere BSD-Befehl ausgeführt wird.