如何停用筆記型電腦光碟機彈出按鈕並將彈出指派給鍵盤快速鍵?

如何停用筆記型電腦光碟機彈出按鈕並將彈出指派給鍵盤快速鍵?

注意:答案現已更新,可在 19.04 下運行

我現在是 14.04,每天不小心打開我的 CD/DVD/藍光光碟機大約 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他們也做同樣的事情。


啟動時鎖定驅動器

為了使其更有用,我希望該命令在啟動時生效。我使用了圖形使用者介面啟動應用程式程式(預先安裝在 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++AltE

然後您可以立即測試快捷方式。如果一切順利,那麼你就完成了!


從掛起狀態喚醒時鎖定驅動器(預 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

我編輯了文件/庫/目錄,不在/ETC/ 現在在我的 Ubuntu 14.04 命令中有效:彈出 -i 1 /dev/sr0

答案3

嘗試以下方法使按鈕不彈出:

  1. 打開:系統設定>鍵盤>快速方式>聲音與媒體

  2. 選擇“彈出”並清除快捷方式(按“退格鍵”)。

您可以使用快捷方式設定來讓它執行一些更有用的操作,例如打開常用的應用程式、鎖定螢幕或重置 wifi。


來源:

我有一台運行 14.04 的 MacBook Pro,彈出按鈕位於刪除/退格鍵的正上方,這使得它很容易被意外按下(對於沒有光碟機的 MacBook 來說情況更糟,因為該按鈕用於電源)。使用快捷方式設定使彈出按鈕鎖定我的筆記型電腦。從 12.04 開始以及其間的所有版本都使用此解決方案。

答案4

對此地點我發現這個建議不起作用eject -i 1
sudo echo 1 > /proc/sys/dev/cdrom/lock鎖定(0 而不是 1 解鎖)
還有一些其他選項也被討論。

這是執行另一個選項的簡短 C 原始碼:關聯(請注意上面評論中新版本的錯誤修復!)

但我在其他一些論壇上讀到,所有這些彈出命令僅在插入和安裝磁碟時更改驅動器的鎖定狀態。唯一的解決方案似乎是一個名為 的工具cdctl,但根據我研究的評論,它與許多系統不太相容。

相關內容