Как отключить кнопку извлечения оптического привода ноутбука и назначить для нее сочетание клавиш?

Как отключить кнопку извлечения оптического привода ноутбука и назначить для нее сочетание клавиш?

Примечание: ответ теперь обновлен для работы в версии 19.04.

Я на 14.04 и случайно открываю свой привод cd/dvd/bluray примерно 20 раз в день. Я посмотрел несколько вопросов здесь, которые не дали рабочего решения.

Обаэтот вопросиэтот вопроспохоже, устарело — предложенное решение не работает.

Когда я это делаю, eject -i onменя встречаютeject: unable to find or open device for: 'cdrom'

Когда я это делаю, eject -i on /dev/sr0я получаю более благоприятный ответ: CD-Drive may NOT be ejected with device buttonоднако кнопка, к сожалению, все еще активна.

Информация из /proc/sys/dev/cdrom/infoпредполагает, что блокировка возможна:

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

Этот ответесть работающее решение, которое исправляет правило UDEV, чтобы включить блокировку диска. Я добавил немного практической информации к решению, что позволяет:

  • Отключить кнопку извлечения оптического привода при запуске
  • Добавьте сочетание клавиш для извлечения оптического привода
  • Убедитесь, что диск остается заблокированным после выхода из режима ожидания.

решение1

Включить блокировку диска

(примечание: если eject -i onэто уже работает, вы можете перейти к разделу «Блокировка диска при запуске»)

Сначала скопируйте /lib/udev/rules.d/60-cdrom_id.rulesвот /etc/udev/rules.d/так:

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

Далее отредактируйте /etc/udev/rules.d/60-cdrom_id.rulesи закомментируйте проблемную строку:

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

Найдите эту строку:

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

Теперь добавьте #(это «закомментирует» строку, фактически аннулируя ее без удаления) впереди, чтобы она выглядела так:

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

Теперь сохраните и закройте, нажав Ctrl+ X, затем Yдля подтверждения, затем Enterдля принятия текущего имени файла. Не беспокойтесь, что оно отображается как странное временное имя файла, просто так работает sudoedit.

Теперь вы сможете отключить аппаратную кнопку оптического привода (по сути, мы блокируем привод) с помощью этой команды:

eject -i on /dev/sr0или eject -i 1 /dev/sr0Они делают то же самое.


Блокировка диска при запуске

Чтобы сделать это более полезным, я хотел, чтобы эта команда вступала в силу при запуске. Я использовал GUIСтартап приложенийпрограмма (предустановлена ​​в Ubuntu, ее можно найти с помощью Dash) для выполнения этой задачи.

Откройте программу и нажмите кнопкуДобавлятьПри нажатии кнопки открывается новое диалоговое окно.

Введите имя (я выбрал описательное «Блокировка оптического привода») и в полеКоманда:поле вводаbash -c 'eject -i on /dev/sr0'

НажмитеДобавлятьдля завершения и закрытия программы.


Добавить сочетание клавиш

Теперь оптический привод заблокирован при запуске. Но как я открою привод, когда он мне понадобится?! Чтобы упростить задачу, я помещаю команды в сочетание клавиш «извлечь», которое разблокирует привод, извлекает его, а затем снова блокирует. Таким образом, я по-прежнему могу легко получить доступ к приводу, но аппаратная кнопка никогда не является проблемой.

Вот как использовать это сочетание клавиш:

  • ОткройКлавиатурапрограмма, найденная в Dash.

  • Нажмите наЯрлыкивкладка

  • Нажмите наПользовательские сочетания клавишв конце списка

  • Нажать на+знак, откроется новое диалоговое окно

  • Назовите ярлык (я использовал «Разблокировать, Извлечь, Повторно заблокировать CD»)

  • Введите это вКоманда:поле:

    bash -c 'eject -i off /dev/sr0 && eject /dev/sr0 && eject -i on /dev/sr0'
    
  • НажмитеПрименять

  • Щелкните справа от имени вашего ярлыка, где написаноНеполноценный. Как только вы нажмете на нее,Неполноценныйизменения вНовый ускоритель:

Нажмите комбинацию клавиш, которую вы хотите использовать. Я использовал Ctrl+ Alt+E

Затем вы можете немедленно проверить ярлык. Если все хорошо, закройте и все готово!


Блокировка диска при выходе из спящего режима (метод, реализованный до systemd)

Я заметил, что мой диск снова разблокируется после выхода из режима ожидания, поэтому я создал скрипт, который гарантирует, что диск останется заблокированным в этом случае.

Создайте файл скрипта:

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

Вставьте следующее в новый файл:

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

Блокировка диска при выходе из спящего режима (метод systemd)

Я сейчас использую 19.04 и заметил, что мой диск разблокируется при выходе из спящего режима. Этот метод работает, чтобы он оставался заблокированным:

Создайте файл скрипта:

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

Вставьте следующее в новый файл:

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

Сохраните и закройте файл, сделайте его исполняемым — и все готово!

решение2

Мне помогает следующая информация: https://bugs.launchpad.net/ubuntu/+source/eject/+bug/885051/comments/6

Я отредактировал файл в/lib/каталог, не в/и т. д/ Теперь в моем Ubuntu 14.04 работает команда: eject -i 1 /dev/sr0

решение3

Попробуйте сделать так, чтобы кнопка не выдвигалась:

  1. Открыть:Настройки системы>Клавиатура>Ярлыки>Звук и Медиа

  2. Выберите «Извлечь» и удалите ярлык (нажав «Backspace»).

Вы можете использовать настройки сочетания клавиш, чтобы сделать что-то более полезное, например, открыть часто используемое приложение, заблокировать экран или сбросить настройки Wi-Fi.


Источник:

У меня MacBook Pro с 14.04, и кнопка извлечения находится прямо над Delete/Backspace, из-за чего ее легко нажать случайно (хуже с MacBook без дисководов, где эта кнопка используется для питания). Использовал настройки сочетания клавиш, чтобы кнопка извлечения блокировала мой ноутбук. Использовал это решение с 12.04 и со всех версий между ними.

решение4

На этомсайтЯ нашел это предложение, если eject -i 1оно не работает:
sudo echo 1 > /proc/sys/dev/cdrom/lockзаблокировать (0 вместо 1 для разблокировки).
Также обсуждаются некоторые другие варианты.

Вот краткий исходный код на языке C, реализующий другой вариант:связь(обратите внимание на исправление ошибок для новых версий в верхних комментариях!)

Но я читал на некоторых других форумах, что все эти команды eject-commands только изменяют статус блокировки привода, когда диск вставлен и смонтирован. Похоже, единственным решением является инструмент под названием cdctl, но он не очень совместим со многими системами, как я изучил комментарии.

Связанный контент