Описание тега hadoop
Я пытаюсь заставить капслоком привели. xset
не работает для меня, поэтому я пытаюсь использовать setleds
.
В графической консоли, эта команда возвращает:
> Ланг=с setleds -л +крышки
KDGKBLED: несоответствующий ioctl для устройства
Ошибка чтения текущего значения флагов. Может быть, вы не на консоли?
В виртуальном терминале, он работает, однако эффект для виртуального терминала. Насколько я понимаю, работает
> setleds -л +крышки < как /dev/tty1
из виртуального терминала (мой X-сервер сидит на tty1) должны работать. Однако, это требует корневого доступа.
Есть ли способ, чтобы отправить команду в консоль, лежащие в основе X-сервера, будь то из X сервера или с другого Вт, без root?
Редактировать: от предложение от Марка плотник, и на основе кода здесь, я написал и обобщил следующие:
#включить <Х11/на Xlib.ч>
#включить <Х11/XKBlib.ч>
#определите заблокировать 1
#определить режим CapsLock 2
#определите, что NumLock 16
пустота setLeds(инт светодиодов) {
Дисплей *dpy = XOpenDisplay(0);
XKeyboardControl ценностей;
значения.led_mode = светодиоды и заблокировать ? LedModeOn : LedModeOff;
значения.Сид = 3;
XChangeKeyboardControl(dpy, KBLedMode, и ценности);
XkbLockModifiers(dpy, XkbUseCoreKbd, CapsLock включен | режим NumLock,
светодиоды (режим CapsLock | индикатор NumLock) );
XFlush(dpy);
XCloseDisplay(dpy);
}
тап_п() {
setLeds(капслоком);
возврат 0;
}
От того, что Жиль писал о xset
, я не ожидал его на работу, но это... в каком-то смысле: он устанавливает Сид, но он также указывает на CapsLock состояние. Я не полностью понимаю все выше код, так что я, возможно, сделал глупую ошибку. Судя по всему, линия XChangeKeyboardControl...
не меняет поведения программы, и XkbLockModifiers
это то, что отличает Сид и на CapsLock статус.