aktivieren Gibt es eine einfache Methode, um Caps Lock, Scroll Lock und Num Lock auf Linux (OpenSuse) mit C++, was Header zu aktivieren/deaktivieren Dateien müssen verwenden? Ich möchte einige Geräte steuern Tastenanschläge simuliert.Wie kann ich Caps Lock, Scroll Lock, Num Lock-Taste programmatisch auf Linux
Antwort
Lösung 1
Bitte gehen Kopf, weil diese Lösung auf die LED der Tastatur drehen nur, wenn Sie die Caps Lock funcion aktivieren müssen, siehe Lösung 2.
// Linux header, no portable source
#include <sys/ioctl.h>
#include <fcntl.h>
#include <unistd.h>
int main(int argc, char* argv[]) {
int fd_console = open("/dev/console", O_WRONLY);
if (fd_console == -1) {
std::cerr << "Error opening console file descriptor\n";
exit(-1);
}
// turn on caps lock
ioctl(fd_console, 0x4B32, 0x04);
// turn on num block
ioctl(fd_console, 0x4B32, 0x02);
// turn off
ioctl(fd_console, 0x4B32, 0x0);
close(fd_console);
return 0;
}
Denken Sie daran, Sie müssen Ihr Programm mit Superuser-Rechten starten, um in die Datei /dev/console
zu schreiben.
EDIT
Lösung 2
Diese Lösung mit X11-Window-System-Manager arbeitet (unter Linux ist fast ein Standard).
// X11 library and testing extensions
#include <X11/Xlib.h>
#include <X11/keysym.h>
#include <X11/extensions/XTest.h>
int main(int argc, char *argv[]) {
// Get the root display.
Display* display = XOpenDisplay(NULL);
// Get the keycode for XK_Caps_Lock keysymbol
unsigned int keycode = XKeysymToKeycode(display, XK_Caps_Lock);
// Simulate Press
XTestFakeKeyEvent(display, keycode, True, CurrentTime);
XFlush(display);
// Simulate Release
XTestFakeKeyEvent(display, keycode, False, CurrentTime);
XFlush(display);
return 0;
}
Hinweis: mehr Schlüssel-Symbol in den header finden.
Die Super-User-Privileg-Sache klingt so albern wie Windows oft ist. Das Gegenteil von Sicherheit, wenn man etwas zulassen muss, um etwas Triviales, aber Entscheidendes zu tun. Könnte es möglich sein, einen Daemon-Prozess oder etwas, das dies kann, zu entwerfen und eine API für jeden nicht-privilegierten Prozess bereitzustellen? –
Was ist mit [xdotool] (https://github.com/jordansissel/xdotool)? –
Gibt es eine analoge KDSETLED/KDGETLED in Windows? – MaysSpirit
- 1. Caps Lock implizit auf
- 2. Caps Lock-Anzeige in Mint 18
- 3. Wie kann ich Caps Lock in VB.NET umschalten?
- 4. Aufschalten Caps Lock mit Ctrl C#
- 5. Get Caps Lock-Status in Android
- 6. jQuery Scrollen Fußzeile scroll-lock
- 7. Caps Lock State in Qt (oder einer anderen Mac-API)
- 8. Wie kann ich überprüfen, Caps Lock-Status in C# (asp.net), Client-Seite
- 9. Lock-Windows-Workstation programmatisch in C#
- 10. Wie kann ich die Caps Lock Warnung mit einer Passwortkontrolle deaktivieren?
- 11. Aktivieren Sie die Num Lock-Anzeige in der Statusleiste
- 12. Lock Profiling in 2.6 Linux Kernel
- 13. Lock-Kombination
- 14. Wie warne ich Benutzer von CAPS LOCK in Flex/AIR aktiviert?
- 15. GridBagConstraints ipad lock size
- 16. JPA: Wie funktioniert Read Lock?
- 17. Lock-Datenbank mit C#
- 18. package-lock, package.json, wehe
- 19. Wie bekomme ich den aktuellen Status von Num Lock in VB.NET?
- 20. Lock-Bestellung in C3p0
- 21. Lock simultane JavaScript-Aufruf
- 22. Dead Lock Thread Check
- 23. SharePoint: Timerjobs Lock-Typ
- 24. Iphone Lock Screen Anwendung
- 25. Hibernate Lock Tabelle
- 26. Python-Lock-Methode Annotation
- 27. Implementieren von 'Caps Lock On' und 'Show Password' auf der gehosteten Anmeldeseite
- 28. MySQL: „lock Wartezeitlimit überschritten“
- 29. C# lock Anweisung Leistung
- 30. Ersetzen Android Screen Lock
[Diese] (http://stackoverflow.com/questions/2171408/how-to-change-caps-lock-status-without-key-press) Frage betrifft Python, aber ist im Wesentlichen das gleiche, seit dem Mechanismus ist mehr oder weniger sprachunabhängig. Ich weiß nicht, ob es POSIX ist oder von anderen Unices unterstützt wird. – Downvoter