如何禁用笔记本电脑光驱弹出按钮并将弹出分配给键盘快捷键?

如何禁用笔记本电脑光驱弹出按钮并将弹出分配给键盘快捷键?

注意:答案现已更新,可在 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++AltE

然后您可以立即测试快捷方式。如果一切顺利,您就大功告成了!


挂起唤醒时锁定驱动器(预系统方法)

我注意到我的驱动器在从挂起状态恢复后再次被解锁,因此我创建了一个脚本来确保驱动器在这种情况下保持锁定状态。

创建脚本文件:

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/目录中,不在/ETC/ 现在在我的 Ubuntu 14.04 中命令有效:eject -i 1 /dev/sr0

答案3

尝试以下方法让按钮不弹出:

  1. 打开:系统设置>键盘>快捷方式>声音和媒体

  2. 选择“弹出”并清除快捷方式(按“Backspace”键)。

您可以使用快捷方式设置使其执行更有用的操作,例如打开常用应用程序、锁定屏幕或重置 wifi。


来源:

我有一台运行 14.04 版的 MacBook Pro,弹出按钮就在 Delete/Backspace 键的正上方,因此很容易被意外按下(对于没有光驱的 MacBook 来说,情况更糟,因为那个按钮是电源键)。使用快捷方式设置让弹出按钮锁定我的笔记本电脑。从 12.04 版开始,以及其间的所有版本,我都使用过这个解决方案。

答案4

在此地点我发现这个建议如果eject -i 1它不起作用:
sudo echo 1 > /proc/sys/dev/cdrom/lock锁定(0 而不是 1 来解锁)
还有一些其他选项。

下面是执行另一个选项的简短 C 源代码:关联(请注意上面的评论中针对新版本的错误修复!)

但我在其他一些论坛上看到,所有这些弹出命令只会在插入和安装磁盘时更改驱动器的锁定状态。唯一的解决方案似乎是一个名为的工具cdctl,但它与许多系统不太兼容,正如我研究评论时一样。

相关内容