Estoy tratando de forzar el bloqueo del led. xsetno funciona para mí, así que estoy tratando de usarlo setleds.
En una consola gráfica, este comando devuelve:
> LANG=C setleds -L +caps
KDGKBLED: Inappropriate ioctl for device
Error reading current flags setting. Maybe you are not on the console?
En una terminal virtual, funciona, sin embargo, el efecto es local en esa terminal virtual. Por lo que entiendo, corriendo
> setleds -L +caps < /dev/tty1
desde una terminal virtual (mi servidor X está sentado en tty1) debería funcionar. Sin embargo, esto requiere acceso de root.
¿Hay alguna forma de enviar un comando a la consola subyacente a un servidor X, ya sea desde dicho servidor x o desde otro VT, sin root?
Editar: a partir de una sugerencia de Mark Plotnik, y en base al código encontrado aquí , escribí y compilé lo siguiente:
#include <X11/Xlib.h>
#include <X11/XKBlib.h>
#define SCROLLLOCK 1
#define CAPSLOCK 2
#define NUMLOCK 16
void setLeds(int leds) {
Display *dpy = XOpenDisplay(0);
XKeyboardControl values;
values.led_mode = leds & SCROLLLOCK ? LedModeOn : LedModeOff;
values.led = 3;
XChangeKeyboardControl(dpy, KBLedMode, &values);
XkbLockModifiers(dpy, XkbUseCoreKbd, CAPSLOCK | NUMLOCK,
leds & (CAPSLOCK | NUMLOCK) );
XFlush(dpy);
XCloseDisplay(dpy);
}
int main() {
setLeds(CAPSLOCK);
return 0;
}
Por lo que Gilles escribió sobre xset, no esperaba que funcionara, pero lo hace ... en cierto sentido: establece el led, pero también establece el estado del bloqueo de mayúsculas. No entiendo completamente todo el código anterior, por lo que es posible que haya cometido un error tonto. Aparentemente, la línea XChangeKeyboardControl...no cambia el comportamiento del programa, y XkbLockModifierses lo que establece el led y el estado del bloqueo de mayúsculas.
xtermfuente y utiliza una llamada a XChangeKeyboardControl () para configurar o deshabilitar los LED sin afectar el estado de bloqueo de mayúsculas, etc. Entonces, si puede compilar el código C, ese es un enfoque.
xterma los leds? Parece una buena idea, editaré la pregunta con mis resultados.
xtermencender el LED ScrollLock enviando la secuencia de escape ESC [3 q, según el archivo ctlseqs.txtque viene con la fuente, pero no pude hacer que los LED Num o CapsLock se iluminaran con los parámetros 1 y 2. Tal vez necesito haz la configuración XKB mencionada en la respuesta. xtermllamadas XChangeKeyboardControlen xtermShowLEDy xtermClearLEDs, pero no llama XkbLockModifiersa ningún lado.
xdotool key Caps_Lockdesde un cliente X autorizado, aunque esto realmente activará el bloqueo de mayúsculas.