Як відключити кнопку виймання оптичного приводу ноутбука та призначити витяг на ярлик клавіатури?


8

Примітка. Відповідь тепер оновлено, щоб функціонувати під 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
це працює для мене. Ви перезавантажили правила udev за допомогою "udevadm control --reload-правила" ???
solsTiCe

Відповіді:


11

Увімкнути блокування диска

(зауважте: якщо це 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'

Натисніть "Додати", щоб завершити, а потім закрийте програму.


Додати ярлик клавіатури

Тепер оптичний привід заблокований при запуску. Але як я відкрию накопичувач, коли мені потрібно його використовувати ?! Щоб зробити це простішим, я вкладаю команди в ярлик клавіатури "викидання", який розблоковує привід, викидає привід, а потім відновлює привід. Таким чином я все ще легко отримую доступ до накопичувача, але апаратна кнопка ніколи не є проблемою.

Ось як виконати цю комбінацію клавіш:

  • Відкрийте програму "Клавіатура", яку ви знайдете в тирі.
  • Перейдіть на вкладку "Ярлики"
  • Клацніть на "Спеціальні ярлики" внизу списку
  • Натисніть на знак "+", відкриється нове діалогове вікно
  • Назвіть ярлик (я використав "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

Блокування диска після пробудження із зупинки (системний метод)

Я використовую 19.04 зараз і помітив, що моє накопичувач розблоковується після відновлення призупинення. Цей метод працює, щоб зробити його заблокованим:

Створіть файл сценарію:

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

Вставте наступне у новий файл:

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

Збережіть і закрийте, і все готово!


Хороший! (І не потрібно дурних лайфхаків! Відмінно! ) Хочете, щоб я видалив той із шпилькою?
Fabby

1
Дякую! Зі мною нормально залишати це людям, які не мають іншого рішення. Це ще одне ціле значення "рубати" :)
Insperatus

Мабуть, призупинення реверсує та знову розблоковує привід.
Інсперат

є щось, що називається "сценарій призупинення / пробудження", який викликається при призупиненні / пробудженні. Я пропоную вам також додати своє рішення (я не маю абсолютного шляху до сценарію, просто знаю, що він існує)
Fabby

1
Так, я так само гадав. Перевірка тут і тут на рішення.
Інсперат

1

Для мене інформація тут допомагає: https://bugs.launchpad.net/ubuntu/+source/eject/+bug/885051/comments/6

Я редагував файл у / lib / директорії, а не в / etc / Зараз у моїй команді Ubuntu 14.04 працює: eject -i 1 / dev / sr0


На жаль, це не працює для мене.
Інсперат

працював на мене (Ubuntu 14.04 на ThinkPad T420, відредагував файл lib, як gonzo запропонував на панелі запуску)
mondjunge

Насправді я накручував структуру каталогів, ви були на правильному шляху з цією відповіддю!
Інсперат

1

Якщо все інше не вдається:

Візьміть шпильку (не голку, оскільки ви будете собі шкодити), міцно натисніть її за кнопку на приводі DVD і використовуйте її як важіль, щоб витягнути кнопку. Потім візьміть невеликий шматочок пластику на 1 мм ширший і більший від отриманого отвору, покладіть на нього супер клей і наклейте його на отвір, обережно, щоб не покласти його над крихітним отвором поруч .

Відтепер використовуйте наступні два способи, щоб відкрити привід DVD:

  1. Використовуйте Ubuntu "Eject" через тире
  2. Тримайте цей рятувальний штифт навколо свого ПК відтепер і всуньте його в крихітний отвір поруч із вашим шматочком пластику, щоб вийняти DVD, коли ваш ноутбук вимкнений. (Використовуйте шматок скотчу, щоб прикріпити рятувальний шпильку до нижньої сторони ноутбука)

1
Але знищення мого cdrom-накопичувача насправді не те, що я очікував би як відповідь на те, як ПРОГРАМНЕ ЗАБЕЗПЕЧЕННЯ - заблокувати лоток! Перш ніж це зробити, я б навіть взяв невеликий шматочок картону, вирізав би в ньому отвір, подібний до кнопки, і наклеїв його на кнопку витягування, щоб випадково торкнутися його, наприклад, коліном.
Командир байт

@ByteCommander: саме тому існує величезна "якщо все інше не вдається" як назва. Крім того, оригінальний плакат уже засміявся з нього і вже був схвалено. Однак я вважаю, що і ваш хай-хай гідний відповіді! Якщо ви опублікуєте це як відповідь, я думаю, ви отримаєте 2 оновлення!
Fabby

Приємна думка, але я не можу її перетворити, і я не хочу писати її знову. Якщо це комусь допомагає, це добре. І ви можете підтримати коментарі. До речі, як ти хочеш знати, що ти отримав свій голос із плаката запитань?
Байт-командир

@ByteCommander: Оголошення коментарів не отримає жодної повтори. Я підтримую коментар, лише якщо я не залишаю іншого коментаря. Це як поплескування по спині. І додатковий коментар - це як великий обійм! > :)
Fabby

@ByteCommander: Зазвичай ви не знаєте, хто піднімає / знижує значення, але я побачив, що вступник підходить, перейшов до питання, зайшов на сторінку користувача OP і побачив "останню активність: 1 хв". Тож я вивів, що це він / її / це, і це посміхнулось і мені.
Fabby

0

Спробуйте це зробити, щоб кнопка не виймалася:

  1. Відкрийте: Налаштування системи > Клавіатура > Комбінації клавіш > Звук та медіа

  2. Виберіть "Витягнути" та очистіть ярлик (натиснувши "Backspace").

Ви можете скористатися налаштуваннями швидкого доступу, щоб зробити щось кориснішим, наприклад відкрити широко використовуване додаток, заблокувати екран або скинути Wi-Fi.


Джерело:

У мене MacBook Pro працює 14.04, і кнопка виймання знаходиться праворуч на панелі Delete / Backspace, що дозволяє легко натискати її випадково (це гірше для MacBooks без дисководів, де ця кнопка замість Power). Використовуючи налаштування швидкого доступу, я змусив замість цього кнопку блокування мого ноутбука. Використовували це рішення з 12.04 і все між ними.


Це не спрацювало для мене, оскільки я натискаю кнопку на фактичному диску, а не кнопку клавіатури.
Інсперат

0

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

Ось короткий вихідний код c, який виконує інший варіант: посилання (зверніть увагу на помилку для новіших версій у верхніх коментарях!)

Але я читав на деяких інших форумах, що всі ці команди-виймання змінюють стан блокування диска лише тоді, коли диск вставлений і встановлений. Здається, єдиним рішенням є інструмент, який називається cdctl, але він не дуже сумісний із багатьма системами, як я вивчав коментарі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.