Comment désactiver le bouton d'éjection du lecteur optique d'ordinateur portable et affecter l'éjection à un raccourci clavier?

8

Remarque: la réponse est maintenant mise à jour pour fonctionner sous 19.04

Je suis le 14.04 et j'ouvre accidentellement mon lecteur cd / dvd / bluray environ 20 fois par jour. J'ai examiné quelques questions ici qui n'ont fourni aucune solution de travail.

Les deux cette question et cette question semblent dépassées - la solution proposée ne fonctionne pas.

Quand je le fais, eject -i onje rencontreeject: unable to find or open device for: 'cdrom'

Quand je le fais, eject -i on /dev/sr0j'obtiens une réponse plus favorable: CD-Drive may NOT be ejected with device buttoncependant le bouton est malheureusement toujours activé.

Les informations de /proc/sys/dev/cdrom/infosuggèrent que le verrouillage est possible:

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

Cette réponse a une solution de travail qui corrige une règle UDEV pour activer le verrouillage du lecteur. J'ai ajouté quelques informations pratiques à la solution, permettant de:

  • Désactivez le bouton d'éjection du matériel du lecteur optique au démarrage
  • Ajouter un raccourci clavier pour éjecter le lecteur optique
  • Assurez-vous que le lecteur reste verrouillé après le réveil de la suspension
Insperatus
la source
1
Ça marche pour moi. avez-vous rechargé les règles udev avec "udevadm control --reload-rules" ???
solsTiCe

Réponses:

11

Activer le verrouillage du lecteur

(Remarque: si cela eject -i onfonctionne déjà, vous pouvez passer à "Verrouiller le lecteur au démarrage")

Tout d'abord, copiez /lib/udev/rules.d/60-cdrom_id.rulespour /etc/udev/rules.d/aimer ainsi:

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

Ensuite, modifiez /etc/udev/rules.d/60-cdrom_id.rules et commentez la ligne problématique:

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

Localisez cette ligne:

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

Maintenant, ajoutez un #(ceci "commente" la ligne, l'annulant efficacement sans le supprimer) devant pour le faire ressembler à ceci:

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

Maintenant, enregistrez et fermez en appuyant sur Ctrl+ X, puis sur Ypour confirmer, puis sur Enterpour accepter le nom de fichier actuel. Ne vous inquiétez pas, il apparaît comme un étrange nom de fichier temporaire, c'est comme ça que sudoedit fonctionne.

Maintenant, vous devriez être en mesure de désactiver le bouton matériel du lecteur optique (essentiellement, nous verrouillons le lecteur) avec ceci:

eject -i on /dev/sr0~ ou ~ eject -i 1 /dev/sr0Ils font de même.


Verrouiller le lecteur au démarrage

Pour rendre cela plus utile, je voulais que cette commande prenne effet au démarrage. J'ai utilisé le programme GUI "Startup Applications" (préinstallé dans Ubuntu, trouvez-le avec Dash) pour accomplir cela.

Ouvrez le programme puis cliquez sur le bouton "Ajouter", une nouvelle boîte de dialogue s'ouvre.

Tapez un nom (je suis allé avec le descriptif "Verrouiller le lecteur optique") et dans le champ "Commande:" entrez bash -c 'eject -i on /dev/sr0'

Cliquez sur "Ajouter" pour terminer, puis fermez le programme.


Ajouter un raccourci clavier

Le lecteur optique est maintenant verrouillé au démarrage. Mais comment vais-je ouvrir le lecteur lorsque je dois l'utiliser?! Pour faire simple, j'ai mis les commandes dans un raccourci clavier "éjecter" qui déverrouille le lecteur, éjecte le lecteur, puis re-verrouille le lecteur. De cette façon, je peux toujours accéder facilement au lecteur, mais le bouton matériel n'est jamais un problème.

Voici comment réaliser ce raccourci clavier:

  • Ouvrez le programme "Clavier" trouvé dans le Dash.
  • Cliquez sur l'onglet "Raccourcis"
  • Cliquez sur "Raccourcis personnalisés" en bas de la liste
  • Cliquez sur le signe "+", une nouvelle boîte de dialogue s'ouvrira
  • Nommez le raccourci (j'ai utilisé "Unlock, Eject, Relock CD")
  • Saisissez-le dans le champ "Commande:":

    bash -c 'eject -i off /dev/sr0 && eject /dev/sr0 && eject -i on /dev/sr0'
    
  • Cliquez sur "Appliquer"

  • Cliquez à droite du nom de votre raccourci où il est écrit "Désactivé". Une fois que vous avez cliqué dessus, "Désactivé" devient "Nouvel accélérateur":

    Appuyez sur la combinaison de touches que vous souhaitez utiliser. J'ai utilisé Ctrl+ Alt+E

Vous pouvez ensuite tester le raccourci immédiatement. Si tout va bien et que vous avez terminé!


Verrouiller le lecteur au réveil de la suspension (méthode pré-système)

J'ai remarqué que mon disque est déverrouillé à la reprise de la suspension, j'ai donc créé un script pour garantir que le disque reste verrouillé dans ce cas.

Créez le fichier de script:

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

Collez ce qui suit dans le nouveau fichier:

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

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

Verrouiller le lecteur au réveil de la suspension (méthode systemd)

J'utilise 19.04 maintenant et j'ai remarqué que mon disque se déverrouillait à la reprise de la suspension. Cette méthode fonctionne pour qu'il reste verrouillé:

Créez le fichier de script:

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

Collez ce qui suit dans le nouveau fichier:

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

Enregistrez et fermez et vous êtes prêt!

Insperatus
la source
Bon! (Et pas besoin de hacks de vie idiots! Excellent! ) Voulez-vous que je supprime celui avec la broche?
Fabby
1
Merci! Je suis d'accord pour le laisser aux personnes sans autre solution. C'est un autre sens de "hack" :)
Insperatus
Apparemment, la suspension annule et déverrouille à nouveau le lecteur.
Insperatus
il y a quelque chose appelé un "script de suspension / réveil" qui est appelé lors de la suspension / réveil. Je vous suggère également d'y ajouter votre solution (je n'ai pas le chemin absolu vers le script à portée de main, sachez simplement qu'elle existe)
Fabby
1
Ouais, je présume aussi. Vérifier ici et ici les solutions.
Insperatus
1

Pour moi, les informations ici sont utiles: https://bugs.launchpad.net/ubuntu/+source/eject/+bug/885051/comments/6

J'ai édité le fichier dans le répertoire / lib / , pas dans / etc / Maintenant dans ma commande Ubuntu 14.04 fonctionne: éjecter -i 1 / dev / sr0

Dima
la source
Malheureusement, cela ne fonctionne pas pour moi.
Insperatus
travaillé pour moi (Ubuntu 14.04 sur un ThinkPad T420, édité le fichier lib, comme gonzo l'a suggéré sur le tableau de bord)
mondjunge
En fait, je bousillais la structure du répertoire, vous étiez sur la bonne voie avec cette réponse!
Insperatus
1

Si tout le reste échoue:

Prenez une épingle (pas une aiguille car vous vous blesserez), poussez-la fermement derrière le bouton du lecteur de DVD et utilisez-la comme un levier pour tirer le bouton. Ensuite, prenez un petit morceau de plastique de 1 mm de plus en plus large, puis le trou résultant, mettez-y de la super colle et collez-le sur le trou en prenant soin de ne pas le mettre sur le petit trou à côté .

À partir de maintenant, utilisez les 2 méthodes suivantes pour ouvrir le lecteur de DVD:

  1. Utilisez Ubuntu "Eject" à travers le tableau de bord
  2. Gardez cette épingle de piratage de vie autour de votre PC à partir de maintenant et poussez-la dans le petit trou à côté de votre morceau de plastique pour éjecter le DVD lorsque votre ordinateur portable est éteint. (Utilisez un morceau de ruban adhésif pour fixer la goupille de sauvetage sur le dessous de votre ordinateur portable)
Fabby
la source
1
Mais détruire mon lecteur de cdrom n'est pas vraiment ce à quoi je m'attendrais comme réponse à la façon de verrouiller le plateau avec un LOGICIEL! Avant de faire cela, je prendrais même un petit morceau de carton, je ferais un trou en forme de bouton et je le collerais sur le bouton d'éjection pour que le toucher accidentellement, par exemple avec votre genou, ne le déclenche pas.
Byte Commander
@ByteCommander: c'est pourquoi il y a l'énorme "si tout le reste échoue" comme titre. De plus, l'affiche originale en a déjà fait rire et a déjà fait l'objet d'un vote positif. Cependant, je pense que votre hack de vie mérite également une réponse! Si vous le postez comme réponse, je pense que vous obtiendrez 2 votes positifs!
Fabby
Belle pensée, mais je ne peux pas le convertir et je ne veux pas l'écrire à nouveau. Si ça aide quelqu'un, ça va. Et vous pouvez également voter sur les commentaires. Au fait, comment voulez-vous savoir que vous avez obtenu votre vote sur l'affiche de la question?
Byte Commander
@ByteCommander: les commentaires de vote positif ne vous procurent cependant aucun représentant. Je ne vote un commentaire que si je ne laisse pas d'autre commentaire. C'est comme une tape dans le dos. Et un commentaire supplémentaire est comme un gros câlin! > :)
Fabby
@ByteCommander: Normalement, vous ne savez pas qui / upvotes, mais j'ai vu le upvote entrer, je suis allé à la question, je suis allé sur la page utilisateur OP et j'ai vu "dernière activité: 1 min". Alors j'ai déduit que c'était lui et ça m'a aussi fait sourire.
Fabby
0

Essayez ceci pour ne pas éjecter le bouton:

  1. Ouvrir: Paramètres système > Clavier > Raccourcis > Son et média

  2. Sélectionnez "Ejecter" et effacez le raccourci (en appuyant sur "Retour arrière").

Vous pouvez utiliser les paramètres de raccourci pour lui faire quelque chose de plus utile à la place, comme ouvrir une application couramment utilisée, verrouiller votre écran ou réinitialiser votre wifi.


La source:

J'ai un MacBook Pro fonctionnant sous 14.04 et le bouton d'éjection se trouve juste au-dessus de Supprimer / Retour arrière, ce qui le rend facile à appuyer accidentellement (c'est pire pour les MacBook sans lecteurs de disque où ce bouton est pour Power à la place). J'ai utilisé les paramètres de raccourci pour que le bouton d'éjection verrouille mon ordinateur portable à la place. J'ai utilisé cette solution depuis le 12.04 et tout le reste.

maki57
la source
Cela n'a pas fonctionné pour moi car j'appuie sur le bouton du lecteur réel et non sur un bouton du clavier.
Insperatus
0

Sur ce site, j'ai trouvé cette suggestion si eject -i 1cela ne fonctionne pas:
sudo echo 1 > /proc/sys/dev/cdrom/lockpour verrouiller (0 au lieu de 1 pour déverrouiller)
Il y a aussi d'autres options discutées.

Voici un court code source c effectuant une autre option: lien (notez le bugfix pour les versions plus récentes dans les commentaires supérieurs!)

Mais j'ai lu dans certains autres forums que toutes ces commandes d'éjection ne modifient l'état de verrouillage du lecteur que lorsqu'un disque est inséré et monté. La seule solution semble être un outil appelé cdctl, mais il n'est pas très compatible avec de nombreux systèmes, comme j'ai étudié les commentaires.

Byte Commander
la source