Como desativo o botão de ejeção da unidade óptica do laptop e atribuo a ejeção a um atalho de teclado?

Como desativo o botão de ejeção da unidade óptica do laptop e atribuo a ejeção a um atalho de teclado?

Nota: Resposta agora atualizada para funcionar em 19.04

Estou no 14.04 e acidentalmente abro minha unidade de CD/DVD/Bluray cerca de 20 vezes por dia. Analisei algumas perguntas aqui que não forneceram nenhuma solução funcional.

Ambosessa questãoeessa questãoparecem estar desatualizados – a solução oferecida não funciona.

Quando eu faço isso, eject -i onme deparo comeject: unable to find or open device for: 'cdrom'

Quando faço isso, eject -i on /dev/sr0recebo uma resposta mais favorável: CD-Drive may NOT be ejected with device buttonporém, infelizmente, o botão ainda está ativado.

As informações de /proc/sys/dev/cdrom/infosugerem que o bloqueio é possível:

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

Esta respostatem uma solução funcional que corrige uma regra UDEV para permitir o bloqueio da unidade. Adicionei algumas informações práticas à solução, permitindo:

  • Desative o botão de ejeção de hardware da unidade óptica na inicialização
  • Adicione um atalho de teclado para ejetar a unidade óptica
  • Certifique-se de que a unidade permaneça bloqueada após sair da suspensão

Responder1

Habilite o bloqueio da unidade

(nota: se eject -i onjá funcionar, você pode pular para "Bloquear a unidade na inicialização")

Primeiro, copie /lib/udev/rules.d/60-cdrom_id.rulespara /etc/udev/rules.d/assim:

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

Em seguida, edite /etc/udev/rules.d/60-cdrom_id.rulese comente a linha problemática:

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

Localize esta linha:

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

Agora adicione um #(isso "comenta" a linha, anulando-a efetivamente sem excluí-la) na frente para que fique assim:

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

Agora salve e feche pressionando Ctrl+ X, depois Ypara confirmar, seguido de Enterpara aceitar o nome do arquivo atual. Não se preocupe se ele aparecer como um nome de arquivo temporário estranho, é assim que o sudoedit funciona.

Agora você deve conseguir desabilitar o botão de hardware da unidade óptica (essencialmente estamos bloqueando a unidade) com isto:

eject -i on /dev/sr0ou eject -i 1 /dev/sr0Eles fazem o mesmo.


Bloqueie a unidade na inicialização

Para tornar isso mais útil, eu queria que este comando entrasse em vigor na inicialização. Eu usei a GUIAplicativos de inicializaçãoprograma (pré-instalado no Ubuntu, encontre-o com Dash) para fazer isso.

Abra o programa e clique no botãoAdicionarbotão, uma nova caixa de diálogo é aberta.

Digite um nome (usei a descrição "Bloquear unidade óptica") e dentro doComando:campo entrarbash -c 'eject -i on /dev/sr0'

CliqueAdicionarpara concluir e feche o programa.


Adicionar um atalho de teclado

Agora a unidade óptica está bloqueada na inicialização. Mas como vou abrir o drive quando precisar utilizá-lo?! Para simplificar, coloquei os comandos em um atalho de teclado "ejetar" que desbloqueia a unidade, ejeta a unidade e trava novamente a unidade. Dessa forma, ainda posso acessar facilmente a unidade, mas o botão de hardware nunca é um problema.

Veja como realizar este atalho de teclado:

  • Abra oTecladoprograma encontrado no Dash.

  • Clique noAtalhosaba

  • Clique emAtalhos personalizadosno final da lista

  • Clique no+assinar, uma nova caixa de diálogo será aberta

  • Nomeie o atalho (usei "Desbloquear, Ejetar, Rebloquear CD")

  • Insira isso noComando:campo:

    bash -c 'eject -i off /dev/sr0 && eject /dev/sr0 && eject -i on /dev/sr0'
    
  • CliqueAplicar

  • Clique à direita do nome do seu atalho, onde dizDesabilitado. Depois de clicar nele,Desabilitadomuda paraNovo acelerador:

Pressione a combinação de teclas que deseja usar. Eu usei Ctrl+ Alt+E

Você pode então testar o atalho imediatamente. Se tudo estiver bem perto e pronto!


Bloquear unidade ao acordar da suspensão (método pré-systemd)

Percebi que minha unidade é desbloqueada novamente ao retomar da suspensão, então criei um script para garantir que a unidade permaneça bloqueada nesse caso.

Crie o arquivo de script:

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

Cole o seguinte no novo arquivo:

#!/bin/sh
# lock the optical drive upon resume from suspend
        
case "${1}" in
    resume|thaw)
        eject -i 1 /dev/sr0    
;;
esac

Bloquear unidade ao acordar da suspensão (método systemd)

Estou usando o 19.04 agora e percebi que minha unidade estava sendo desbloqueada ao retomar da suspensão. Este método funciona para mantê-lo bloqueado:

Crie o arquivo de script:

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

Cole o seguinte no novo arquivo:

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

Salve e feche o arquivo, torne-o executável e pronto!

Responder2

Para mim, as informações aqui ajudam: https://bugs.launchpad.net/ubuntu/+source/eject/+bug/885051/comments/6

Eu editei o arquivo em/lib/diretório, não em/etc/ Agora no meu Ubuntu 14.04 o comando funciona: eject -i 1 /dev/sr0

Responder3

Tente isto para que o botão não seja ejetado:

  1. Abrir:Configurações de sistema>Teclado>Atalhos>Som e mídia

  2. Selecione “Ejetar” e limpe o atalho (pressionando “Backspace”).

Você pode usar as configurações de atalho para fazer algo mais útil, como abrir um aplicativo comumente usado, bloquear a tela ou redefinir o wifi.


Fonte:

Eu tenho um MacBook Pro rodando 14.04 e o botão de ejetar está bem em cima de Delete/Backspace, o que o torna facilmente pressionado acidentalmente (é pior para MacBooks sem unidades de disco, onde esse botão é para Power). Usei as configurações de atalho para fazer com que o botão de ejeção bloqueasse meu laptop. Usei esta solução desde 12.04 e tudo mais.

Responder4

NistositeEncontrei esta sugestão se eject -i 1não funcionar:
sudo echo 1 > /proc/sys/dev/cdrom/lockpara bloquear (0 em vez de 1 para desbloquear).
Existem algumas outras opções discutidas também.

Aqui está um pequeno código-fonte c executando outra opção:link(observe a correção de bug para versões mais recentes nos comentários superiores!)

Mas li em alguns outros fóruns que todos esses comandos de ejeção apenas alteram o status de bloqueio da unidade quando um disco é inserido e montado. A única solução parece ser uma ferramenta chamada cdctl, mas não é muito compatível com muitos sistemas, conforme estudei os comentários.

informação relacionada