Capslock led'i zorlamaya çalışıyorum. xsetbenim için çalışmıyor, bu yüzden kullanmaya çalışıyorum setleds.
Grafiksel bir konsolda bu komut döndürür:
> LANG=C setleds -L +caps
KDGKBLED: Inappropriate ioctl for device
Error reading current flags setting. Maybe you are not on the console?
Sanal bir terminalde çalışır, ancak etki o sanal terminal için yereldir. Anladığım kadarıyla, koşuyorum
> setleds -L +caps < /dev/tty1
sanal bir terminalden (X sunucum tty1 üzerinde oturuyor) çalışmalıdır. Ancak, bu root erişimi gerektirir.
Söz konusu xserver'den veya başka bir VT'den root olmadan bir X sunucusunun altında yatan konsola bir komut göndermenin bir yolu var mı?
Düzenleme: Mark Plotnik bir öneri ve burada bulunan koda dayanarak , ben yazdı ve derledi:
#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;
}
Gilles'in yazdıklarından xset, çalışmasını beklemiyordum, ama bir anlamda ... led'i ayarlıyor, ama aynı zamanda capslock durumunu da belirliyor. Ben tamamen yukarıdaki tüm kodu anlamıyorum, bu yüzden aptalca bir hata yapmış olabilir. Görünüşe göre, çizgi XChangeKeyboardControl...programın davranışını değiştirmez XkbLockModifiersve led ve capslock durumunu ayarlayan şeydir.
xtermKaynağa baktım ve XChangeKeyboardControl () ' e bir çağrı kullanır ve LED'leri büyük harf kilidini vb. Durumunu etkilemeden ayarlar veya ayarlar. Yani C kodunu derleyebiliyorsanız, bu bir yaklaşımdır.
xtermetkiler mi? Kulağa iyi bir fikir gibi geliyor, soruyu sonuçlarımla birlikte düzenleyeceğim.
xtermdosya başına olarak çıkış sırası ESC [3 q, göndererek ScrollLock LED kadar ışık için ctlseqs.txtkaynağı ile gelir, ama parametreleri 1 ve 2 ile ışık up Num veya CapsLock LED'leri alamadım Belki gerek cevapta belirtilen XKB yapılandırmasını yapın. xtermçağrılar XChangeKeyboardControliçinde xtermShowLEDve xtermClearLEDsfakat çağırmaz XkbLockModifiersyerde hiç.
xdotool key Caps_LockYetkili bir X istemcisinden benzer bir şey yapabilirsiniz , ancak bu aslında büyük harf kilidini açar.