Я использую Toshiba R835 с Lubuntu. После чистой установки нажатие кнопки питания, когда машина включена, ничего не делает. Я исправил кнопку питания, следуя этому совету :
Я добавил эти строки в ~ / .config / openbox / lubuntu-rc.xml
<keybind key="XF86PowerOff">
<action name="Execute">
<command>lubuntu-logout</command>
</action>
</keybind>
Это делает смысл для меня.
Я хочу сопоставить несколько других клавиш аналогичным ярлыкам. Например, когда я нажимаю Fn-F1, я хочу заблокировать экран. Я полагаю, я бы добавил что-то вроде
<keybind key="XF86ScreenSaver">
<action name="Execute">
<command>xscreensaver-command -lock</command>
</action>
</keybind>
. Однако, когда я нажимаю Fn-F1, он открывает меню Lubuntu, как если бы я нажал клавишу Super_L
. Он также печатает букву l
, если у меня открыт терминал. Мой желаемый ярлык xscreensaver-command -lock
, похоже, игнорируется. Что происходит? Почему мой ярлык не работает?
Я думал, что смогу разобраться с этим с помощью xev, но вывод xev смущает меня:
FocusOut event, serial 41, synthetic NO, window 0x2000001,
mode NotifyGrab, detail NotifyAncestor
FocusIn event, serial 41, synthetic NO, window 0x2000001,
mode NotifyUngrab, detail NotifyAncestor
KeymapNotify event, serial 41, synthetic NO, window 0x0,
keys: 0 0 0 0 0 64 0 0 0 0 0 0 0 0 0 0
32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
MappingNotify event, serial 41, synthetic NO, window 0x0,
request MappingKeyboard, first_keycode 8, count 248
KeyPress event, serial 41, synthetic NO, window 0x2000001,
root 0xae, subw 0x0, time 16525549, (289,-138), root:(341,155),
state 0x40, keycode 160 (keysym 0x1008ff2d, XF86ScreenSaver), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 41, synthetic NO, window 0x2000001,
root 0xae, subw 0x0, time 16525550, (289,-138), root:(341,155),
state 0x40, keycode 160 (keysym 0x1008ff2d, XF86ScreenSaver), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
MappingNotify event, serial 42, synthetic NO, window 0x0,
request MappingKeyboard, first_keycode 8, count 248
KeyRelease event, serial 42, synthetic NO, window 0x2000001,
root 0xae, subw 0x0, time 16525639, (289,-138), root:(341,155),
state 0x40, keycode 46 (keysym 0x6c, l), same_screen YES,
XLookupString gives 1 bytes: (6c) "l"
XFilterEvent returns: False
KeyRelease event, serial 43, synthetic NO, window 0x2000001,
root 0xae, subw 0x0, time 16525646, (289,-138), root:(341,155),
state 0x40, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
Похоже, я получить код 160, который, я думаю, называется XF86ScreenSaver, но это также как если бы я нажал клавишу Super_L
и клавишу l
. Я думаю, что весь этот вывод происходит от одного нажатия клавиши Fn-F1. Это смущает меня. Как заставить Fn-F1 заблокировать экран вместо того, чтобы открывать меню Lubuntu и вводить букву 'l'?
Можно выполнить это с xbindkeys приложением. Откройте окно терминала и введите следующее:
sudo apt-get install xbindkeys
После того, как установленный Вы хотите создать два файла в своем названном корневом каталоге:
.xbindkeysrc
Этот файл будет содержать Ваши конфигурации для Ваших привязок клавиш
.xbindkeys.noauto
Это просто будет пустым файлом, но когда он будет существовать, он мешает Xserver запускаться xbindkeys
при начальной загрузке. Хотя мы хотим, чтобы это запустилось при начальной загрузке, мы хотим запустить его сами через Приложения Запуска. Причиной этого является Xserver, запускает его к рано в процессе начальной загрузки, который иногда вызывает наши конфигурации, что мы вставляем наш .xbindkeysrc
файл для не работы.
Теперь добавьте следующие строки к Вашему .xbindkeysrc
файл
"xscreensaver-command -lock"
c:160
Сохраните файл
Теперь создайте немного сценария для запуска xbindkeys
то, что мы поместим в наши Приложения Запуска:
Откройте свой любимый текстовый редактор и или копия и вставьте или введите следующие строки к нему:
#!/bin/bash
sleep 10
/usr/bin/xbindkeys &
Сохраните его в своем корневом каталоге как xbstart.sh
или независимо от того, что Вы хотите
Сделайте это исполняемым файлом
chmod 755 xbstart.sh
Теперь просто добавьте что сценарий к своим Приложениям Запуска и Перезагрузке.
То, что происходит, - когда Вы входите в систему, xbindkeys
вызывается и читает Ваш .xbindkeysrc
файл и выполнения в фоновом режиме. Это постоянно контролирует Ваши нажатия клавиш и когда keycode 160
нажимается это захватит его, прежде чем Xserver будет иметь шанс к тому, чтобы заставлять это работать xscreensaver-command -lock
вместо того, чтобы открыть Ваше меню.
Я добавил это
<keybind key="C-A-L">
<action name="Execute">
<command>xscreensaver-command -lock</command>
</action>
</keybind>
, поэтому, когда я делаю Crt kbd> + Alt kbd> + L kbd> мой запуск screebscaver .. . как @fossfreedom покажи мне
, поэтому я полагаю, что ты должен сделать что-то подобное
<keybind key="C-F1">
<action name="Execute">
<command>xscreensaver-command -lock</command>
</action>
</keybind>
, но сначала проверь, не используется ли эта связка клавиш.
... По поводу опции fn, которую вы хотели: я процитирую википедию .
В отличие от других клавиш-модификаторов, таких как Ctrl, Shift и AltGr, микроконтроллер внутри клавиатуры обычно отправляет другой код клавиши в зависимости от того, нажата ли клавиша Fn. Это позволяет клавиатуре эмулировать полноразмерную клавиатуру, так что нет необходимости создавать специализированные сочетания клавиш; операционная система может использовать стандартные раскладки клавиш, предназначенные для полноразмерной клавиатуры. Поскольку операционная система не имеет понятия о клавише Fn, клавиша не может быть переназначена программно, в отличие от всех других стандартных клавиш клавиатуры.
BLOCKQUOTE>