Как отключить кнопку извлечения дисковода для оптических дисков ноутбука и назначить ее для сочетания клавиш?
Я на 14.04 и случайно открываю свой CD / DVD / Blu-ray диск около 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 для включения блокировки диска. Я добавил практическую информацию к решению, что позволяет:
- Отключите аппаратную кнопку извлечения оптического привода при запуске
- Добавьте сочетание клавиш, чтобы извлечь оптический привод
- Убедитесь, что диск остается заблокированным после выхода из режима ожидания
5 ответов
Включить блокировку диска
Сначала скопируйте /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 "Startup Applications" (предварительно установленную в Ubuntu, найдите ее с помощью Dash).
Откройте программу и затем нажмите кнопку "Добавить", откроется новое диалоговое окно.
Введите имя (я использовал описательное "Блокировка оптического привода") и в поле "Command:" введите bash -c 'eject -i on /dev/sr0'
Нажмите "Добавить" для завершения, а затем закройте программу.
Добавить сочетание клавиш
Теперь оптический привод заблокирован при запуске. Но как мне открыть диск, когда мне нужно его использовать?! Чтобы упростить процесс, я поместил команды в комбинацию клавиш "извлечь", которая разблокирует диск, извлекает диск и затем снова блокирует диск. Таким образом, я все еще могу легко получить доступ к диску, но аппаратная кнопка никогда не является проблемой.
Вот как сделать это сочетание клавиш:
- Откройте программу "Клавиатура", найденную в Dash.
- Перейдите на вкладку "Ярлыки"
- Нажмите "Пользовательские ярлыки" внизу списка.
- Нажмите на знак "+", откроется новое диалоговое окно
- Назовите ярлык (я использовал "Unlock, Eject, Relock CD")
Введите это в поле "Command:":
bash -c 'eject -i off /dev/sr0 && eject /dev/sr0 && eject -i on /dev/sr0'
Нажмите "Применить"
Нажмите справа от имени вашего ярлыка, где написано "Отключено". После того, как вы щелкнете по нему, "Отключено" изменится на "Новый ускоритель":
Нажмите комбинацию клавиш, которую вы хотите использовать. Я использовал Ctrl+Alt+E
Вы можете сразу же проверить ярлык. Если все хорошо, и все готово!
Блокировка диска после пробуждения
Я заметил, что мой диск снова разблокируется после возобновления из режима ожидания, поэтому я создал скрипт, который гарантирует, что диск останется заблокированным в этом случае.
Создайте файл скрипта:
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
Сохраните и закройте, и все готово!
Для меня информация здесь помогает: https://bugs.launchpad.net/ubuntu/+source/eject/+bug/885051/comments/6
Я отредактировал файл в каталоге /lib/, а не в /etc/ Теперь в моей команде Ubuntu 14.04 работает: eject -i 1 /dev/sr0
Если все остальное терпит неудачу:
Возьмите булавку (не иглу, которая поранит вас), плотно нажмите на нее за кнопкой на DVD-приводе и используйте ее в качестве рычага, чтобы вытащить кнопку. Затем возьмите небольшой кусочек пластика на 1 мм шире и больше полученного отверстия, нанесите на него немного супер-клея и приклейте его на отверстие , стараясь не положить его на крошечное отверстие рядом с ним.
С этого момента используйте следующие 2 способа, чтобы открыть DVD-привод:
- Используйте Ubuntu "Извлечь" через тире
- С этого момента держите этот хакерский штырь вокруг своего ПК и вставьте его в крошечное отверстие рядом с пластиковым элементом, чтобы извлечь DVD, когда ваш ноутбук выключен. (Используйте кусок клейкой ленты, чтобы прикрепить булавочный ключ к нижней части ноутбука)
Попробуйте сделать так, чтобы кнопка не извлекалась:
Открыть: Системные настройки > Клавиатура > Сочетания клавиш > Звук и мультимедиа
Выберите "Извлечь" и очистите ярлык (нажав "Backspace").
Вы можете использовать настройки ярлыков, чтобы вместо этого сделать что-то более полезное, например, открыть часто используемое приложение, заблокировать экран или сбросить настройки Wi-Fi.
Источник:
У меня MacBook Pro под управлением 14.04, и кнопка извлечения находится прямо над Delete/Backspace, что делает его легким случайным нажатием (это хуже для MacBook без дисководов, где эта кнопка вместо Power). Использовал настройки ярлыков, чтобы кнопка извлечения заблокировала мой ноутбук. Использовали это решение с 12.04 и все промежуточное.
На этом сайте я нашел это предложение, если eject -i 1
не работает:sudo echo 1 > /proc/sys/dev/cdrom/lock
заблокировать (0 вместо 1 чтобы разблокировать)
Есть и другие варианты, которые также обсуждаются.
Вот краткий исходный код c, выполняющий другую опцию: ссылка (обратите внимание на исправление для более новых версий в верхних комментариях!)
Но я читал на некоторых других форумах, что все эти команды извлечения изменяют состояние блокировки диска только тогда, когда диск вставлен и смонтирован. Единственное решение, кажется, инструмент под названием cdctl
, но это не очень совместимо со многими системами, так как я изучил комментарии.