Come disabilitare il pulsante di espulsione dell'unità ottica del laptop e assegnare l'espulsione a una scorciatoia da tastiera?


8

Nota: risposta ora aggiornata per funzionare in 19.04

Sono il 14.04 e apro accidentalmente il mio disco cd / dvd / bluray circa 20 volte al giorno. Ho esaminato alcune domande qui che non hanno fornito alcuna soluzione funzionante.

Sia questa domanda che questa domanda sembrano essere obsolete: la soluzione offerta non funziona.

Quando lo faccio, eject -i onmi sono incontratoeject: unable to find or open device for: 'cdrom'

Quando lo faccio, eject -i on /dev/sr0ottengo una risposta più favorevole: CD-Drive may NOT be ejected with device buttontuttavia il pulsante è purtroppo ancora abilitato.

Le informazioni fornite /proc/sys/dev/cdrom/infosuggeriscono che il blocco è possibile:

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

Questa risposta ha una soluzione funzionante che corregge una regola UDEV per abilitare il blocco dell'unità. Ho aggiunto alcune informazioni pratiche alla soluzione, consentendo di:

  • Disabilitare il pulsante di espulsione hardware dell'unità ottica all'avvio
  • Aggiungi una scorciatoia da tastiera per espellere l'unità ottica
  • Assicurarsi che l'unità rimanga bloccata dopo il risveglio dalla sospensione

1
sta funzionando per me. hai ricaricato le regole udev con "udevadm control --reload-rules" ???
solsTiCe

Risposte:


11

Abilita blocco dell'unità

(nota: se eject -i onfunziona già, puoi passare a "Blocca l'unità all'avvio")

Innanzitutto, copia /lib/udev/rules.d/60-cdrom_id.rulesin /etc/udev/rules.d/modo simile:

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

Quindi, modifica /etc/udev/rules.d/60-cdrom_id.rules e commenta la riga problematica:

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

Trova questa linea:

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

Ora aggiungi un #(questo "commenta" la linea, annullandola efficacemente senza eliminarla) davanti per farla apparire così:

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

Ora salva e chiudi premendo Ctrl+ X, quindi Yper confermare, seguito da Enterper accettare il nome del file corrente. Non preoccuparti che appaia come uno strano nome di file temporaneo, è così che funziona sudoedit.

Ora dovresti essere in grado di disabilitare il pulsante hardware dell'unità ottica (essenzialmente stiamo bloccando l'unità) con questo:

eject -i on /dev/sr0~ o ~ eject -i 1 /dev/sr0Fanno lo stesso.


Blocca l'unità all'avvio

Per renderlo più utile, volevo che questo comando avesse effetto all'avvio. Ho usato il programma "Startup Applications" della GUI (preinstallato in Ubuntu, trovalo con Dash) per farlo.

Apri il programma e fai clic sul pulsante "Aggiungi", si aprirà una nuova finestra di dialogo.

Digita un nome (sono andato con il descrittivo "Blocca unità ottica") e nel campo "Comando:" inserisci bash -c 'eject -i on /dev/sr0'

Fai clic su "Aggiungi" per completare e quindi chiudere il programma.


Aggiungi una scorciatoia da tastiera

Ora l'unità ottica è bloccata all'avvio. Ma come aprirò l'unità quando devo usarla ?! Per semplificare, inserisco i comandi in una scorciatoia da tastiera "espelli" che sblocca l'unità, espelle l'unità, quindi rilascia nuovamente l'unità. In questo modo posso ancora accedere facilmente all'unità ma il pulsante hardware non è mai un problema.

Ecco come realizzare questa scorciatoia da tastiera:

  • Apri il programma "Tastiera" presente nel Dash.
  • Fai clic sulla scheda "Collegamenti"
  • Fai clic su "Collegamenti personalizzati" nella parte inferiore dell'elenco
  • Fai clic sul segno "+", si aprirà una nuova finestra di dialogo
  • Assegna un nome al collegamento (ho usato "Unlock, Eject, Relock CD")
  • Inserisci questo nel campo "Comando:":

    bash -c 'eject -i off /dev/sr0 && eject /dev/sr0 && eject -i on /dev/sr0'
    
  • Fai clic su "Applica"

  • Fai clic a destra del nome del collegamento in cui è indicato "Disabilitato". Dopo aver fatto clic su di esso, "Disabilitato" diventa "Nuovo acceleratore":

    Premere la combinazione di tasti che si desidera utilizzare. Ho usato Ctrl+ Alt+E

È quindi possibile testare immediatamente il collegamento. Se tutto è molto vicino e il gioco è fatto!


Blocca Drive Upon Wake From Suspend (metodo pre-systemd)

Ho notato che il mio disco si sblocca nuovamente dopo la ripresa dalla sospensione, quindi ho creato uno script per garantire che l'unità rimanga bloccata in questo caso.

Crea il file di script:

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

Incolla quanto segue nel nuovo file:

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

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

Blocca Drive Upon Wake From Suspend (metodo systemd)

Sto usando 19.04 ora e ho notato che il mio disco si stava sbloccando al momento della ripresa dalla sospensione. Questo metodo funziona per mantenerlo bloccato:

Crea il file di script:

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

Incolla quanto segue nel nuovo file:

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

Salva e chiudi e sei pronto!


Buona! (E non c'è bisogno di stupidi hack di vita! Eccellente! ) Vuoi che elimini quello con il pin?
Fabby,

1
Grazie! Va bene per me lasciarlo per le persone senza altra soluzione. È un altro significato di "hack" :)
Insperatus,

Apparentemente la sospensione ripristina e sblocca nuovamente l'unità.
Insperatus,

c'è qualcosa chiamato "script di sospensione / riattivazione" che viene chiamato quando si sospende / si sveglia. Ti suggerisco di aggiungere la tua soluzione anche lì (non ho il percorso assoluto dello script a portata di mano, sappi solo che esiste)
Fabby

1
Sì, ho anche presunto. Controllando qui e qui per soluzioni.
Insperatus,

1

Per me le informazioni qui aiutano: https://bugs.launchpad.net/ubuntu/+source/eject/+bug/885051/comments/6

Ho modificato il file nella directory / lib / , non in / etc / Now nel mio comando Ubuntu 14.04 funziona: espelli -i 1 / dev / sr0


Purtroppo questo non funziona per me.
Insperatus,

ha funzionato per me (Ubuntu 14.04 su un ThinkPad T420, modificato il file lib, come suggerito gonzo sul launchpad)
mondjunge

In realtà stavo rovinando la struttura della directory, eri sulla buona strada con questa risposta!
Insperatus,

1

Se tutti gli altri falliscono:

Prendi uno spillo (non un ago perché ti farai male), spingilo saldamente dietro il pulsante sull'unità DVD e usalo come leva per estrarre il pulsante. Quindi prendi un piccolo pezzo di plastica 1 mm più largo e più grande del foro risultante, metti un po 'di colla super e incollalo sul foro facendo attenzione a non metterlo sul piccolo foro accanto ad esso .

D'ora in poi, utilizzare i seguenti 2 metodi per aprire l'unità DVD:

  1. Usa Ubuntu "Espelli" attraverso il trattino
  2. Tieni d'ora in poi quel perno di hacking attorno al tuo PC e spingilo nel piccolo foro accanto al tuo pezzo di plastica per espellere il DVD quando il tuo laptop è spento. (Usa un pezzo di nastro adesivo per fissare il perno del life-hack sul lato inferiore del laptop)

1
Ma distruggere il mio cdrom-drive non è proprio quello che mi aspetterei come risposta a come bloccare SOFTWARE il vassoio! Prima di farlo, prenderei anche un piccolo pezzo di cartone, taglierei un buco a forma di bottone e lo legherò sopra il bottone di espulsione in modo che toccarlo accidentalmente, ad es. Con il ginocchio, non lo innesci.
Byte Commander

@ByteCommander: ecco perché c'è l'enorme "se tutto il resto fallisce" come titolo. Inoltre, il poster originale ne ha già riso e già votato. Tuttavia, penso che anche il tuo hack sia degno di una risposta! Se lo pubblichi come risposta, penso che otterrai 2 voti!
Fabby,

Bel pensiero, ma non riesco a convertirlo e non voglio riscriverlo. Se aiuta qualcuno va bene. E puoi anche votare i commenti. A proposito, come vuoi sapere di aver ottenuto il tuo voto dal poster della domanda?
Byte Commander

@ByteCommander: l'upgrade dei commenti non ti dà alcun rappresentante. Voto un commento solo se non lascio un altro commento. È come una pacca sulla spalla. E un commento aggiuntivo è come un grande abbraccio! > :)
Fabby,

@ByteCommander: Normalmente non sai chi è il up / downvotes, ma ho visto entrare l'upgrade, sono andato alla domanda, sono andato alla pagina utente OP e ho visto "ultima attività: 1 min". Quindi ho dedotto che fosse lui e lei mi ha dato anche un sorriso.
Fabby,

0

Prova questo per non far espellere il pulsante:

  1. Apri: Impostazioni di sistema > Tastiera > Tasti di scelta rapida > Audio e contenuti multimediali

  2. Seleziona "Espelli" e cancella il collegamento (premendo "Backspace").

Puoi utilizzare le impostazioni di scelta rapida per fare qualcosa di più utile invece, come aprire un'applicazione di uso comune, bloccare lo schermo o ripristinare il wifi.


Fonte:

Ho un MacBook Pro con 14.04 e il pulsante di espulsione si trova proprio sopra Elimina / Backspace, il che lo rende facilmente premuto accidentalmente (è peggio per MacBook senza unità disco dove quel pulsante è invece per Power). Ho usato le impostazioni di scelta rapida per bloccare il pulsante di espulsione del mio laptop. Ho usato questa soluzione dal 12.04 e tutto il resto.


Questo non ha funzionato per me poiché sto premendo il pulsante sull'unità reale e non un pulsante della tastiera.
Insperatus,

0

Su questo sito ho trovato questo suggerimento se eject -i 1non funziona:
sudo echo 1 > /proc/sys/dev/cdrom/lockbloccare (0 invece di 1 per sbloccare)
Ci sono anche altre opzioni discusse.

Ecco un breve codice sorgente c che esegue un'altra opzione: link (notare il bugfix per le versioni più recenti nei commenti in alto!)

Ma ho letto in alcuni altri forum che tutti questi comandi di espulsione cambiano lo stato di blocco dell'unità solo quando viene inserito e montato un disco. L'unica soluzione sembra essere uno strumento chiamato cdctl, ma non è molto compatibile con molti sistemi, come ho studiato i commenti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.