Ponowne mapowanie przycisku zasilania do usunięcia

14

Mam MacBooka Pro z systemem Ubuntu 13.10 z FluxBox. Niestety przycisk zasilania znajduje się fizycznie nad backspace, w którym spodziewałbym się, że znajduje się w nim klawisz usuwania. W OS X można użyć programu PowerKey do zmiany mapowania przycisku zasilania w celu usunięcia. Jak mogę zrobić coś podobnego w X Windows?

Wyłączyłem klawisz zasilania, edytując /etc/systemd/logind.confi ustawiając. HandlePowerKey = ignore Następnie mogę nacisnąć przycisk zasilania bez wyłączania laptopa.

Uruchomienie xev -event keyboardujawnia, że ​​KeyPress dla klawisza zasilania jest zwykle spożywany przez inny proces:

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   

Jednak uruchamiając tylko xterm bezpośrednio z konsoli, udało mi się uzyskać kod dostępu i ponownie przypisać klucz.

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

W tym momencie możliwe było również zmapowanie klucza za pomocą xmodmap. Odwzorowałem go na odwrotny ukośnik, który jest łatwiejszy do zauważenia niż usunięcie:

 xmodmap -e "keycode 124 = backslash bar"

Mogłem uzyskać ledwo funkcjonalny odpowiednik do uruchomienia, dodając to, ~/.fluxbox/keysale jest to zarówno brzydkie, jak i powolne, aby było bezużyteczne.

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

Jak mogę użyć xmodmap lub setxkbmap, aby używać przycisku zasilania w tym samym czasie, co zwykły menedżer okien?

Natan
źródło

Odpowiedzi:

3

Nie do końca rozumiem ostatnie zdanie, pytanie, ale mogę odnieść się do tytułu pytania: „Ponowne mapowanie klucza zasilania do usunięcia”.

Spróbuj zastąpić dowolny „XF86PowerOff” lub tylko ten odpowiadający twojej klawiaturze słowem „Delete” w / usr / share / X11 / xkb / symbols / inet.

Powtórz to po aktualizacji systemu, która aktualizuje ten plik.

LyXTeX
źródło
szczegółowe informacje na stronie askubuntu.com/questions/325272/ ... ta odpowiedź powinna zostać zaakceptowana.
phil294
1

To nie jest dokładna odpowiedź, ale czy próbowałeś nacisnąć fn+ delete? Powinno to działać jak prawdziwe usuwanie , w przeciwieństwie do faktycznego działania „backspace” i jest bardzo zbliżone do klawisza zasilania.

Kolejna wskazówka:

fn+ enterdziała jak przycisk Wstaw , więc powinieneś być w stanie nacisnąć shift+ fn+ enteri wkleić jak środkowe kliknięcie.

Daryl Tucker
źródło
0

Trudno powiedzieć na pewno. Mogą to być rzeczy, które już wypróbowałeś, ale mogą one prowadzić do łatwego rozwiązania.

Czy xmodmap działa na inne klucze, czy jest coś, co robi fluxbox, co całkowicie psuje xmodmap?

Co się stanie, jeśli uruchomisz x, zmodyfikujesz klawisz zasilania, a następnie uruchom fluxboksa? Czy mapowanie się trzyma?

Jeśli uruchomisz xmodmap zanim Fluxbox zadziała i zachowa twoje ustawienia, możesz albo napisać skrypt powłoki, aby wywoływał oba w odpowiedniej kolejności, lub jeśli używasz gdm, powinien przeczytać ~/.xmodmaplub ~/.xmodmaprcautomatycznie, zanim Fluxbox przejdzie do obrazu.

Mike Fairhurst
źródło
Tak, xmodmap działa. W tej chwili mam prawe polecenie alt i prawe polecenie ponownie przypisane do usunięcia i wstawienia odpowiednio za pomocą xmodmap -e "usuń mod1 = Alt_L" -e "usuń mod4 = Super_L" -e "dodaj mod1 = Super_L" -e "dodaj mod4 = Alt_L „-e” usuń mod1 = Alt_R „-e” usuń mod4 = Super_R „-e” keysym Alt_R = Usuń „-e” keysym Super_R = Insert ”
nathan
Czy możesz dołączyć wynik działania xmodmap -pke do fluxboksa?
Mike Fairhurst,
@nathan, więc jest to problem z uruchomieniem xmodmap, po fluxboksie lub wcześniej. Miałem ten sam problem z niesamowitym wm
Darek