Jak wyłączyć przycisk wysuwania napędu optycznego laptopa i przypisać wysuwanie do skrótu klawiaturowego?


8

Uwaga: odpowiedź została zaktualizowana do funkcji pod 19.04

Mam 14.04 i przypadkowo otwieram dysk CD / DVD / bluray około 20 razy dziennie. Przejrzałem tutaj kilka pytań, które nie zapewniły żadnego działającego rozwiązania.

Zarówno to pytanie, jak i to pytanie wydają się nieaktualne - oferowane rozwiązanie nie działa.

Kiedy to robię, eject -i onspotykam się zeject: unable to find or open device for: 'cdrom'

Kiedy to robię, eject -i on /dev/sr0otrzymuję bardziej przychylną odpowiedź: CD-Drive may NOT be ejected with device buttonjednak przycisk jest niestety nadal włączony.

Informacje z /proc/sys/dev/cdrom/infosugerują, że blokowanie jest możliwe:

CD-ROM information, Id: cdrom.c 3.20 2003/12/17

drive name:             sr0
drive speed:            24
drive # of slots:       1
Can close tray:         1
Can open tray:          1
Can lock tray:          1
Can change speed:       1
Can select disk:        0
Can read multisession:  1
Can read MCN:           1
Reports media changed:  1
Can play audio:         1
Can write CD-R:         1
Can write CD-RW:        1

Ta odpowiedź zawiera działające rozwiązanie, które naprawia regułę UDEV, aby umożliwić blokowanie dysku. Dodałem kilka praktycznych informacji do rozwiązania, umożliwiając:

  • Wyłącz przycisk wysuwania sprzętu napędu optycznego podczas uruchamiania
  • Dodaj skrót klawiaturowy, aby wysunąć napęd optyczny
  • Upewnij się, że napęd pozostaje zablokowany po wybudzeniu z trybu wstrzymania

1
to działa dla mnie. czy załadowałeś ponownie reguły udev z „udevadm control --reload-rules” ???
solsTiCe

Odpowiedzi:


11

Włącz blokowanie dysku

(uwaga: jeśli eject -i onjuż działa, możesz przejść do „Zablokuj dysk przy uruchamianiu”)

Po pierwsze, należy skopiować /lib/udev/rules.d/60-cdrom_id.rulesdo /etc/udev/rules.d/tak:

cp /lib/udev/rules.d/60-cdrom_id.rules /etc/udev/rules.d/

Następnie edytuj /etc/udev/rules.d/60-cdrom_id.rules i skomentuj problematyczną linię:

sudoedit /etc/udev/rules.d/60-cdrom_id.rules

Znajdź tę linię:

ENV{DISK_EJECT_REQUEST}=="?*", RUN+="cdrom_id --eject-media $devnode", GOTO="cdrom_end"

Teraz dodaj #(to „komentuje”) linię, skutecznie ją niwelując bez usuwania) z przodu, aby wyglądała tak:

# ENV{DISK_EJECT_REQUEST}=="?*", RUN+="cdrom_id --eject-media $devnode", GOTO="cdrom_end"

Teraz zapisz i zamknij, naciskając Ctrl+ X, a następnie, Yaby potwierdzić, a następnie, Enteraby zaakceptować bieżącą nazwę pliku. Nie martw się, że pojawia się jako dziwna nazwa pliku tymczasowego, tak właśnie działa sudoedit.

Teraz powinieneś być w stanie wyłączyć przycisk sprzętowy napędu optycznego (zasadniczo blokujemy napęd) w następujący sposób:

eject -i on /dev/sr0~ lub ~ eject -i 1 /dev/sr0Robią to samo.


Zablokuj dysk przy uruchamianiu

Aby uczynić to bardziej użytecznym, chciałem, aby to polecenie zadziałało podczas uruchamiania. W tym celu użyłem programu GUI „Startup Applications” (preinstalowanego w Ubuntu, znajdź go z Dash).

Otwórz program, a następnie kliknij przycisk „Dodaj”, otworzy się nowe okno dialogowe.

Wpisz nazwę (poszedłem z opisowym „Zablokuj napęd optyczny”) i w polu „Command:” wpisz bash -c 'eject -i on /dev/sr0'

Kliknij „Dodaj”, aby zakończyć, a następnie zamknij program.


Dodaj skrót klawiaturowy

Teraz napęd optyczny jest zablokowany podczas uruchamiania. Ale jak mogę otworzyć dysk, kiedy muszę go użyć ?! Aby to uprościć, wstawiam polecenia do skrótu klawiaturowego „wysuwania”, który odblokowuje dysk, wysuwa dysk, a następnie blokuje dysk. W ten sposób nadal mogę łatwo uzyskać dostęp do dysku, ale przycisk sprzętowy nigdy nie stanowi problemu.

Oto jak wykonać ten skrót klawiaturowy:

  • Otwórz program „Klawiatura” znajdujący się w Dash.
  • Kliknij kartę „Skróty”
  • Kliknij „Niestandardowe skróty” na dole listy
  • Kliknij znak „+”, otworzy się nowe okno dialogowe
  • Nazwij skrót (użyłem „Odblokuj, wysuń, ponownie zablokuj dysk CD”)
  • Wpisz to w pole „Polecenie:”:

    bash -c 'eject -i off /dev/sr0 && eject /dev/sr0 && eject -i on /dev/sr0'
    
  • Kliknij „Zastosuj”

  • Kliknij po prawej stronie nazwy skrótu, gdzie jest napisane „Wyłączone”. Po kliknięciu „Wyłączone” zmienia się w „Nowy akcelerator”:

    Naciśnij kombinację klawiszy, której chcesz użyć. Użyłem Ctrl+ Alt+E

Następnie możesz natychmiast przetestować skrót. Jeśli wszystko jest już blisko i gotowe!


Zablokuj napęd po wybudzeniu z zawieszenia (metoda wstępnie zaprogramowana)

Zauważyłem, że mój dysk ponownie odblokowuje się po wznowieniu zawieszenia, więc utworzyłem skrypt, aby upewnić się, że dysk pozostanie zablokowany w tym przypadku.

Utwórz plik skryptu:

sudoedit /usr/lib/pm-utils/sleep.d/99lock-optical

Wklej następujące elementy do nowego pliku:

#!/bin/sh
# lock the optical drive upon resume from suspend

case "${1}" in
    resume|thaw)
        eject -i 1 /dev/sr0    
;;
esac

Lock Drive Upon Wake From Suspend (metoda systemowa)

Używam teraz 19.04 i zauważyłem, że mój dysk odblokowuje się po wznowieniu z zawieszenia. Ta metoda działa tak, aby pozostała zablokowana:

Utwórz plik skryptu:

sudoedit /lib/systemd/system-sleep/00start_my_connection

Wklej następujące elementy do nowego pliku:

 #!/bin/sh
 if [ $1 = post ]
 then eject -i 1 /dev/sr0
 fi

Zapisz i zamknij, a wszystko gotowe!


Dobry! (I nie potrzeba głupich życiowych hacków! Doskonale! ) Czy chcesz, żebym usunął ten z kodem PIN?
Fabby

1
Dzięki! Mogę pozostawić to osobom, które nie mają innego rozwiązania. To kolejne całe znaczenie „hack” :)
Insperatus

Najwyraźniej zawieszenie przywraca i odblokowuje ponownie dysk.
Insperatus

istnieje coś takiego jak „skrypt zawieszenia / budzenia”, który jest wywoływany podczas zawieszania / budzenia. Proponuję również dodać tam swoje rozwiązanie (nie mam pod ręką bezwzględnej ścieżki do skryptu, po prostu wiem, że istnieje)
Fabby,

1
Tak, też tak przypuszczałem. Sprawdzanie tu i tutaj rozwiązań.
Insperatus

1

Dla mnie informacje tutaj pomagają: https://bugs.launchpad.net/ubuntu/+source/eject/+bug/885051/comments/6

Edytowałem plik w katalogu / lib / , a nie w / etc / Now w mojej komendzie Ubuntu 14.04 działa: eject -i 1 / dev / sr0


Niestety to nie działa dla mnie.
Insperatus

działało dla mnie (Ubuntu 14.04 na ThinkPad T420, edytowałem plik lib, podobnie jak gonzo sugerowany na starterze)
mondjunge,

Właściwie spieprzyłem strukturę katalogów, z tą odpowiedzią byłeś na dobrej drodze!
Insperatus

1

Jeśli wszystko inne zawiedzie:

Weź szpilkę (a nie igłę, bo sam się zranisz), wciśnij ją mocno za przycisk napędu DVD i użyj jej jako dźwigni, aby wyciągnąć przycisk. Następnie weź mały kawałek plastiku o szerokości 1 mm szerszy i większy niż powstały otwór, nałóż na niego trochę super kleju i przyklej go do otworu, uważając, aby nie nałożyć go na niewielki otwór obok niego .

Od teraz użyj następujących 2 metod, aby otworzyć napęd DVD:

  1. Użyj „Wysuń” Ubuntu przez myślnik
  2. Trzymaj odtąd pinezkę ratunkową wokół komputera i wepchnij ją do małego otworu obok kawałka plastiku, aby wysunąć dysk DVD, gdy laptop jest wyłączony. (Użyj kawałka taśmy samoprzylepnej, aby przymocować zawleczkę ratunkową do spodu laptopa)

1
Ale zniszczenie mojego napędu cdrom nie jest tym, czego oczekiwałbym jako odpowiedź na to, jak OPROGRAMOWAĆ zablokować tacę! Zanim to zrobię, wziąłbym nawet mały kawałek tektury, wyciąłem w nim otwór w kształcie przycisku i przykleiłem go nad przyciskiem wysuwania, aby przypadkowe dotknięcie go np. Kolanem go nie uruchomiło.
Bajt Dowódca

@ByteCommander: dlatego tytuł brzmi „jeśli wszystko inne zawiedzie”. Co więcej, oryginalny plakat już się z niego wyśmiewał i był już dobrze oceniany. Myślę jednak, że twój hack na życie również zasługuje na odpowiedź! Jeśli opublikujesz to jako odpowiedź, myślę, że dostaniesz 2 głosy poparcia!
Fabby

Fajna myśl, ale nie mogę jej przekonwertować i nie chcę pisać ponownie. Jeśli to pomaga komukolwiek, jest w porządku. Możesz również głosować za komentarzami. Przy okazji, skąd chcesz wiedzieć, że otrzymałeś swój głos z plakatu z pytaniami?
Bajt Dowódca

@ByteCommander: Upvoting komentarze nie otrzymają jednak żadnego przedstawiciela. Głosuję za komentarzem tylko wtedy, gdy nie zostawię innego komentarza. To jak poklepanie po plecach. A dodatkowy komentarz jest jak duży uścisk! > :)
Fabby,

@ByteCommander: Zwykle nie wiesz, kto głosuje w górę / w dół, ale widziałem, że głosowanie przychodzi, poszedłem do pytania, poszedłem na stronę użytkownika OP i zobaczyłem „ostatnia aktywność: 1 min”. Wydedukowałem więc, że to on / ona / ja i to też mnie uśmiechnęło.
Fabby

0

Spróbuj, aby przycisk nie wysunął się:

  1. Otwórz: Ustawienia systemu > Klawiatura > Skróty > Dźwięk i multimedia

  2. Wybierz „Wysuń” i usuń skrót (naciskając „Backspace”).

Możesz użyć ustawień skrótu, aby zrobić coś bardziej przydatnego, na przykład otworzyć często używaną aplikację, zablokować ekran lub zresetować Wi-Fi.


Źródło:

Mam MacBooka Pro z 14.04, a przycisk wysuwania znajduje się tuż nad klawiszem Delete / Backspace, co sprawia, że ​​łatwo go przypadkowo nacisnąć (gorzej w przypadku MacBooków bez napędów dyskowych, w których ten przycisk jest zamiast zasilania). Użyłem ustawień skrótu, aby zamiast tego przycisk wysuwania zablokował mojego laptopa. Korzystam z tego rozwiązania od 12.04 i wszystkiego pomiędzy.


Nie działało to dla mnie, ponieważ naciskam przycisk na rzeczywistym dysku, a nie przycisk klawiatury.
Insperatus

0

Na tej stronie znalazłem tę sugestię, jeśli eject -i 1nie działa:
sudo echo 1 > /proc/sys/dev/cdrom/lockzablokować (0 zamiast 1, aby odblokować)
Istnieją również inne opcje omówione.

Oto krótki kod źródłowy c z inną opcją: link (zauważ poprawkę dla nowszych wersji w wyższych komentarzach!)

Ale czytałem na innych forach, że wszystkie te polecenia wysuwania zmieniają stan blokowania napędu tylko po włożeniu i zamontowaniu dysku. Jedynym rozwiązaniem wydaje się być narzędzie o nazwie cdctl, ale nie jest zbyt kompatybilne z wieloma systemami, jak studiowałem komentarze.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.