Повторное сопоставление клавиши питания для удаления

14

У меня есть MacBook Pro под управлением Ubuntu 13.10 с FluxBox. К сожалению, кнопка питания физически находится над клавишей Backspace, где, как я ожидаю, должен находиться ключ удаления. В OS X программа PowerKey может использоваться для переназначения ключа питания для удаления. Как я могу сделать что-то подобное в X Windows?

Я отключил кнопку питания путем редактирования /etc/systemd/logind.confи настройки. HandlePowerKey = ignoreПосле этого я могу нажать кнопку питания, не выключая ноутбук.

Запуск xev -event keyboardпоказывает, что KeyPress для клавиши питания обычно используется другим процессом:

MappingNotify event, serial 36, synthetic NO, window 0x0,
    request MappingKeyboard, first_keycode 8, count 248

KeymapNotify event, serial 36, synthetic NO, window 0x0,
    keys:  1   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   
           0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   

KeymapNotify event, serial 37, synthetic NO, window 0x0,
    keys:  1   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   
           0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   

Однако, запустив только xterm непосредственно из консоли, я смог успешно получить код ключа и переназначить его.

xinit /usr/bin/xterm -- :1
xev -event keyboard | tee /tmp/junk.txt
tail -n ???? /tmp/junk.txt
MappingNotify event, serial 28, synthetic NO, window 0x0,
    request MappingKeyboard, first_keycode 8, count 248

KeyPress event, serial 28, synthetic NO, window 0x600001,
    root 0xa1, subw 0x0, time 720369, (146,89), root:(148,91),
    state 0x0, keycode 124 (keysym 0x1008ff2a, XF86PowerOff), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 28, synthetic NO, window 0x600001,
    root 0xa1, subw 0x0, time 720369, (146,89), root:(148,91),
    state 0x0, keycode 124 (keysym 0x1008ff2a, XF86PowerOff), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

MappingNotify event, serial 29, synthetic NO, window 0x0,
    request MappingKeyboard, first_keycode 8, count 248

На этом этапе также можно было сопоставить ключ с помощью xmodmap. Я сопоставил его с обратной косой чертой, которую легче увидеть, чем удалить:

 xmodmap -e "keycode 124 = backslash bar"

Я мог бы получить едва ли функциональный эквивалент для запуска, добавив это, ~/.fluxbox/keysно это и уродливо, и достаточно медленно, чтобы его нельзя было использовать.

  # Remap the power off to a delete key...
  XF86PowerOff :Exec xdotool key Delete

Как я могу использовать xmodmap или setxkbmap, чтобы использовать кнопку питания одновременно с обычным оконным менеджером?

Натан
источник

Ответы:

3

Я не совсем понимаю последнее предложение, вопрос, но я могу относиться к названию вопроса: «Переопределение клавиши питания для удаления».

Попробуйте заменить любой «XF86PowerOff» или только тот, который соответствует вашей клавиатуре, на «Удалить» в / usr / share / X11 / xkb / symbols / inet.

Вы должны повторить это после обновления системы, которое обновляет этот файл.

LyXTeX
источник
см. askubuntu.com/questions/325272/… для получения подробной информации. этот ответ должен быть принят.
phil294
1

Это не точный ответ, но вы пытались нажать fn+ delete? Это должно действовать как реальное удаление , против фактического действия «возврата» и очень близко к клавише включения.

Еще один совет:

fn+ enterдействует как кнопка вставки , поэтому вы должны иметь возможность нажимать shift+ fn+ enterи вставлять, как средний щелчок.

Дэрил Такер
источник
0

Трудно сказать наверняка. Это могут быть вещи, которые вы уже пробовали, но они могут привести к простому решению.

Работает ли xmodmap для других ключей, или что-то, что делает fluxbox, полностью ломает xmodmap?

Что произойдет, если вы запустите x, модифицируете клавишу питания, а затем запустите fluxbox? Карта придерживается?

Если запуск xmodmap до того, как fluxbox сработает и сохранит ваши настройки, вы можете либо написать сценарий оболочки для вызова обоих в правильном порядке, либо, если вы используете gdm, он должен прочитать ~/.xmodmapили ~/.xmodmaprcавтоматически для вас, прежде чем fluxbox войдет в картинку.

Майк Фэрхерст
источник
Да, xmodmap работает. Прямо сейчас у меня есть правая команда alt и right, переназначенная для удаления и вставки соответственно, используя xmodmap -e "remove mod1 = Alt_L" -e "remove mod4 = Super_L" -e "add mod1 = Super_L" -e "add mod4 = Alt_L "-e" удалить mod1 = Alt_R "-e" удалить mod4 = Super_R "-e" keysym Alt_R = удалить "-e" keysym Super_R = Вставить "
Натан
Можете ли вы включить вывод xmodmap -pke в fluxbox?
Майк Фэйрхерст
@nathan, так что это проблема того, когда запускается xmodmap, после fluxbox или раньше. Была такая же проблема с удивительным wm
Darek