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


8

注意:答案现在已更新为在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
它为我工作。您是否已使用“ udevadm control --reload-rules”重新加载了udev规则?
solsTiCe 2015年

Answers:


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'

单击“添加”完成,然后关闭程序。


添加键盘快捷键

现在,光盘驱动器在启动时已锁定。但是,当我需要使用驱动器时,我将如何打开它呢?为简单起见,我将命令放入“弹出”键盘快捷方式中,该快捷方式可解锁驱动器,弹出驱动器,然后重新锁定驱动器。这样,我仍然可以轻松访问驱动器,但是硬件按钮从来没有问题。

以下是完成此键盘快捷键的方法:

  • 打开仪表板中的“键盘”程序。
  • 点击“快捷方式”标签
  • 单击列表底部的“自定义快捷方式”
  • 点击“ +”号,一个新的对话框将打开
  • 命名快捷方式(我使用了“解锁,弹出,重新锁定CD”)
  • 在“命令:”字段中输入以下内容:

    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
谢谢!我可以把它留给没有其他解决方案的人使用。这是“ hack”的另一种完整含义:)
Insperatus

显然,挂起将还原并再次解锁驱动器。
Insperatus

有一种叫做“挂起/唤醒脚本”的东西,在挂起/唤醒时会被调用。我建议您也将解决方案添加到那里(我没有脚本的绝对路径,只是知道它的存在)
Fabby

1
是的,我想也是一样。在此处此处检查解决方案。
Insperatus

1

对于我来说,这里的信息会有所帮助:https : //bugs.launchpad.net/ubuntu/+source/eject/+bug/885051/comments/6

我在/ lib /目录中编辑了文件,而不是在/ etc /中编辑了文件, 现在在我的Ubuntu 14.04命令中工作了:弹出-i 1 / dev / sr0


不幸的是,这对我不起作用。
Insperatus

为我工作(在ThinkPad T420上使用Ubuntu 14.04,编辑了lib文件,就像启动
板上

实际上,我搞砸了目录结构,您在正确的位置上找到了答案!
Insperatus

1

如果其他所有方法均失败:

用大头针(不是会伤到自己的针头),将其牢固地推入DVD驱动器上的按钮,然后将其用作拉出按钮的杠杆。然后取一小块塑料为1mm宽和更大然后将所得的孔,把一些超级胶在其上然后把它粘在孔小心不要把它在微小的孔在它旁边

从现在开始,使用以下两种方法打开DVD驱动器:

  1. 通过破折号使用Ubuntu“弹出”
  2. 记住,生命砍脚在你的电脑从现在开始,并将其推入微小的孔旁边的塑料片当您的笔记本电脑被关闭弹出DVD。(使用胶带将救生绳固定到笔记本电脑的底部)

1
但是销毁我的cdrom驱动器并不是我真正希望得到的有关如何软件锁定托盘的答案!在执行此操作之前,我什至会拿一小块硬纸板,在其上切一个形状类似于按钮的孔,然后将其粘贴在弹出按钮上,以免意外碰触到它,例如用膝盖不会触发它。
字节指挥官

@ByteCommander:这就是为什么会有巨大的“如果其他所有都失败”作为标题的原因。 此外,原始海报已经被人们嘲笑了,并且已经被接受。但是,我认为您的人生秘诀也值得一提!如果您将其发布为答案,我想您会获得2票赞成!
Fabby

好主意,但我不能转换它,也不想再写一次。如果可以帮助任何人,那就没关系。您也可以投票。顺便说一句,您想如何知道您从问题海报中获得了投票?
字节指挥官

@ByteCommander:虽然发表评论并没有获得任何帮助。我只发表不发表评论的评论。就像是拍拍背。额外的评论就像一个大大的拥抱!> :)
Fabby 2015年

@ByteCommander:通常,您不知道谁进行了上/下投票,但是我看到了上投票,进入了问题,进入了OP用户页面,并看到了“上次活动:1分钟”。所以我推论出是他/她/它,它也给了我一个微笑。
Fabby 2015年

0

尝试执行以下操作以使按钮不弹出:

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

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

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


资源:

我有一台运行14.04的MacBook Pro,弹出按钮位于Delete / Backspace(删除/退格)的正上方,这使其很容易被意外按下(对于没有光驱的MacBook,该按钮用于Power的情况更糟)。使用快捷方式设置使弹出按钮锁定了我的笔记本电脑。从12.04开始使用此解决方案,并且介于两者之间。


这对我来说不起作用,因为我要按下实际驱动器上的按钮,而不是键盘按钮。
Insperatus

0

在这个站点上,我发现以下建议是否eject -i 1奏效:
sudo echo 1 > /proc/sys/dev/cdrom/lock锁定(0解锁而不是1解锁)
还有其他一些选择。

这是一个简短的c源代码,它执行另一个选项:链接(请注意在上方的注释中针对较新版本的错误修正!)

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.