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.conf
i ustawiając. HandlePowerKey = ignore
Następnie mogę nacisnąć przycisk zasilania bez wyłączania laptopa.
Uruchomienie xev -event keyboard
ujawnia, ż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/keys
ale 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?
źródło
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.
źródło
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ć
~/.xmodmap
lub~/.xmodmaprc
automatycznie, zanim Fluxbox przejdzie do obrazu.źródło