Kupiłem laptopa Asus ROG G551JM, który okazał się kompatybilny z Ubuntu. Klawiatura komputera jest źle zaprojektowana, a klawisz „Poweroff” jest zwykłym klawiszem umieszczonym w miejscu, w którym zwykle znajduje się klawisz „End”. W przeciwnym razie komputer jest w porządku, więc kupiłem go z założeniem, że będę w stanie jakoś „naprawić” problem, tj. Ponownie przypisać przycisk PowerOff do klawisza „End”.
Niepoprawny przycisk PowerOff (ASUS G551JM):
Zwykle jest klawisz «End» (ASUS N56VZ):
W „poweroff przycisk” wydarzenia są wytwarzane przez /dev/input/event2: Power Button
urządzenie (jak donosi evtest
) z kodem 116 (przykład linii od evtest
: Event: time 1422895638.246142, type 1 (EV_KEY), code 116 (KEY_POWER), value 1
)
Klucz jest również widoczny dla serwera X, a ostatecznie Ubuntu może zidentyfikować naciśnięcia klawiszy jako PowerOff
klucz i uruchamia półprzezroczyste okno dialogowe „Pożegnaj użytkownika Adam ...”, które potwierdza moją wolę wyłączenia komputera.
Problem polega na tym, że powiązanie, które wiąże klawisz PowerOff, naciska na procedurę wyświetlającą, że okno dialogowe potwierdzenia nie jest widoczne w edytorze dconf i nie mam żadnej wskazówki, gdzie go znaleźć.
Czy ktoś może mi powiedzieć, gdzie zmienić (lub usunąć) domyślne powiązanie dla klucza PowerOff?
To powinno być coś łatwego.
edycja 21.IX.2016:
Istnieje sposób, aby trwale wyłączyć okno dialogowe, zobacz Jak zmodyfikować opcje przycisku zasilania? . Mam nadzieję, że po wyłączeniu przycisku zasilania możliwe będzie ponowne przypisanie go do czegoś innego.
źródło
Home
iEnd
są to klawisze „meta”, których najczęściej używam ... :(Odpowiedzi:
Udało mi się uruchomić go na moim ASUS N751JK w Ubuntu 18.04 LTS i Ubuntu 16.04 LTS (przetestowany w środowisku stacjonarnym Unity w obu przypadkach i KDE Plasma w 18.04):
Przede wszystkim ustaw działanie przycisku „Wyłącz” na
nothing
.Jedność
Jak wspomniano w odpowiedzi Johano Fierry :
lub alternatywnie
sudo apt install dconf-tools
i użyj,dconf-editor
aby zmienićorg.gnome.settings-daemon.plugins.power
właściwość (jak opisano tutaj ). Ponowne uruchomienie lub wylogowanie jest wymagane, aby działało.KDE
Przejdź do „Ustawień systemu” , wybierz zakładkę „Zarządzanie energią” w sekcji „Sprzęt”, a następnie wybierz zakładkę „Oszczędzanie energii” , przewiń w dół, znajdź listę rozwijaną „Po naciśnięciu przycisku zasilania” i zmień jej wartość na „Nie rób nic” . Kliknij przycisk „Zastosuj” , aby zastosować zmiany.
Zainstaluj xdotool :
Ten pozwoli nam uruchomić kluczowe wydarzenia.
Następnym krokiem jest uruchomienie przycisku „End” po naciśnięciu przycisku „Power off” .
Ubuntu 18.04
Utwórz
/etc/acpi/events/power
plik o następującej treści:i utwórz
/etc/acpi/power.sh
skrypt o następującej treści:i dodaj do niego uprawnienia do wykonywania:
Ubuntu 16.04
Kopia zapasowa skryptu ACPI używana do obsługi zdarzenia przycisku „Wyłącz” :
Następnie edytuj go, znajdź:
i zmodyfikuj poniższy kod, aby wyglądał następująco:
Aby zastosować te zmiany, należy uruchomić:
Dzięki Adamowi możliwe jest
acpid
automatyczne ponowne uruchomienie po zalogowaniu się użytkownika (podczas uruchamiania systemu). Dlatego zamiast ręcznego uruchamianiasudo acpid restart
w terminalu za każdym razem po ponownym uruchomieniu dodaj następujący wiersz:do końca
/etc/pam.d/common-session
pliku.źródło
sudo acpid reload
zamiast restartu? Czy to zadziała?acpid restart
problemu jest dodanie liniisession optional pam_exec.so /usr/sbin/acpid restart
na końcu/etc/pam.d/common-session
. W ten sposób acpid zostanie zrestartowany zaraz po zalogowaniu użytkownika i to mi wystarczy. W końcu problem rozwiązany !!gsettings set
zamiastgsettings get
.sudo chmod +x /etc/acpi/power.sh
@Ezze, być może możesz zaktualizować swoją odpowiedź, aby to uwzględnić.To powinno załatwić sprawę.
Wpisz w terminalu:
źródło
xev
poleceniu, i zapobiega ponownemuxmodmap
mapowaniu. Nawiasem mówiąc, kod przycisku „Wyłącz” może być inny (124 dla mojego ASUS N751JK).gsettings set org.gnome.settings-daemon.plugins.power button-power "shutdown"
(więc naciśnięcie przycisku jest przechwytywane), następnie edytuj/etc/acpi/events/powerbtn
i skomentuj linię#action=/etc/acpi/powerbtn.sh
, a następnie wejdź do terminalu:xmodmap -e "keycode 124 = End"
To powinno zapobiec działaniu przycisku zasilania i jednocześnie zmapować go do klawisza End.powerbtn.sh
skrypt, ale także przez (przynajmniej)systemd-logind
usługę (prawdopodobnie korzysta zbutton-power
ustawień wymienionych w odpowiedzi). Możesz znaleźćif pidof systemd-logind >/dev/null; then
...exit 0
linię,powerbtn.sh
co oznacza, że skrypt pozwalasystemd-logind
samodzielnie obsługiwać zdarzenie „Wyłącz”, gdy sesja pulpitu jest aktywna. Jedno masz rację - zmianabutton-power
wartości nie wpływa na zdolność do przechwycenia klucza, ale jest już przechwycona przez jakiś proces (systemd-logind
lub inny).