Capslock led'i zorlamaya çalışıyorum. xset
benim 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 XkbLockModifiers
ve led ve capslock durumunu ayarlayan şeydir.
xterm
Kaynağ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.
xterm
etkiler mi? Kulağa iyi bir fikir gibi geliyor, soruyu sonuçlarımla birlikte düzenleyeceğim.
xterm
dosya başına olarak çıkış sırası ESC [3 q, göndererek ScrollLock LED kadar ışık için ctlseqs.txt
kaynağı 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 XChangeKeyboardControl
içinde xtermShowLED
ve xtermClearLEDs
fakat çağırmaz XkbLockModifiers
yerde hiç.
xdotool key Caps_Lock
Yetkili bir X istemcisinden benzer bir şey yapabilirsiniz , ancak bu aslında büyük harf kilidini açar.