如果没有生成相同扫描代码的键(您没有),唯一的选择是echo <char> > /proc/sysrq-trigger,<char>您要与 一起按下的键在哪里M-SysRq。(当然,这假设你正在运行与魔术SysRq的编译成它的内核,和以前做过echo 1 > /proc/sys/kernel/sysrq的/etc/rc.local或相似的。)
如果您想要真正神奇的 SysRq 功能,而不是通过回显到随机 /proc 条目中获得的苍白模仿,您会想要找到一个带有 SysRq 键的 PC 风格的 USB 键盘。无论 Linux 在何种架构上运行,它都会正确解释扫描码;在这种情况下,棘手的部分是首先生成扫描码,这是无法通过标准 Mac 键盘完成的。
(另一方面,似乎可以编译内核以识别不同的扫描代码,例如 Mac 的弹出键的扫描代码,而不是 SysRq;我从未有过降级 MBP 的冲动,所以不会我不知道第一手资料,但我想有人已经做到了。或者也许你会是第一个;毕竟,对内核进行自定义黑客攻击是运行 Linux 的一半乐趣,至少我是理解的。)
更新:显然这可以从用户空间完成:
目前最好的方法是安装(手动编译)keyfuzz 程序并把
echo "786616 99" | keyfuzz -s -d /dev/input/by-id/usb-Apple_Inc._Apple_Internal_Keyboard___Trackpad-event-kbd
Run Code Online (Sandbox Code Playgroud)
例如在您的 /etc/profile 中。这将典型 Apple Macbook Pro 上的 Alt-Eject(我的是 2010 年年中,6,2)映射到 Alt-SysRq 组合。
如果您正在寻找更多老式的“Linux 的双拳故事”之类的体验,则可以从该评论线程链接一些内核补丁,它们可能会为在内核级别重新映射键码提供指导。
这个答案也贴在这里。
经过 3 或 4 小时的艰苦搜索、阅读和反复试验,这里有一个更全面和通用的答案,适用于任何Apple/Mac 笔记本电脑或键盘。但是,在我的特殊情况下,我将这个解决方案用于 2008运行 Xubuntu 16.04 LTS 的 MacBook 白色。
非常感谢Bengt Olsson 在这里的出色指导,这让我有必要开始找出缺失的细节。
这个解决方案是在用户空间完成的,不需要像一些建议那样重新编译内核。
下载 keyfuzz 的源代码 ( http://0pointer.de/lennart/projects/keyfuzz/keyfuzz-0.2.tar.gz ),并解压缩它(我可以右键单击它并转到“Extract Here”以将其解压缩到我的GUI 文件管理器,例如)。要阅读有关 keyfuzz 的更多信息,请参见此处。它是在 GNU GPL 2.0 或更高版本的开源许可证下发布的(yaaay 开源!)。
./configure下面的命令将失败。安装依赖,否则在./configure下面运行可能会吐出一些错误:
Run Code Online (Sandbox Code Playgroud)sudo apt-get update sudo apt-get install lynx xmltoman gengetopt
使用常用命令编译和安装 keyfuzz:
Run Code Online (Sandbox Code Playgroud)./configure make sudo make install
导航/dev/input/by-id并找到以“-event-kbd”结尾的 Apple 键盘:
Run Code Online (Sandbox Code Playgroud)cd /dev/input/by-id ls
将以下行添加到您的/etc/rc.local文件中(请参阅下面的注释),以便在您的计算机每次启动并加载此用户时运行此命令。请注意,我们正在使用我们刚刚在上面找到的 Apple 键盘条目。此命令使用 keyfuzz 将Apple 键盘或笔记本电脑上的 F12 或 F13 映射到系统“ Magic SysRq 键”,以进行软重启。
要映射F12到SysRq的:458821 99。非常感谢“pjjjv”在这里解决了这个问题!https://ubuntuforums.org/archive/index.php/t-762665.html
要映射F13到SysRq的:458856 99。
由于我的 MacBook 2008 没有 F13,我使用上面的 F12 选项。还要记住使用我们在上面找到的正确键盘输入。我rc.local为我的案例添加的命令是:echo "458821 99" | keyfuzz -s -d /dev/input/by-id/usb-Apple_Computer_Apple_Internal_Keyboard___Trackpad-event-kbd.
注意:在最近的 Ubuntu 版本中,/etc/rc.local默认情况下不存在,但如本答案和本答案所述,如果它 1) 存在,2) 至少可由 root 用户执行,并且 3) 包含一个hashbang,则使用它顶部,例如#!/bin/sh -e。确保它由 root 和可执行文件拥有(sudo gedit /etc/rc.localORgedit /etc/rc.local后跟sudo chown root:root rc.local; thensudo chmod u+x /etc/rc.local)。
这是我的整个/etc/rc.local文件,带有相应的条目:
Run Code Online (Sandbox Code Playgroud)#!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. echo "458821 99" | keyfuzz -s -d /dev/input/by-id/usb-Apple_Computer_Apple_Internal_Keyboard___Trackpad-event-kbd exit 0
重启。
现在我可以按 Alt+F12(或者你可以使用 Alt+F13 如上所述)并发出 REISUB 来软重启你的计算机。在运行 Xubuntu 16.04 LTS 的 MacBook 2008 笔记本电脑上完美运行。
请注意,通过Ctrl+Alt+F1 (F1 through F6 work actually)在发出命令之前首先跳转到替代会话,您可以在按下每个键时通过发出 REISUB 来查看返回的结果。要返回您的主要 X Window 会话,请使用Ctrl+Alt+F7.
如果您得到的结果显示“此 sysrq 操作已禁用”,这对于一些命令来说是正常的,因为它们会带来潜在的安全风险。但是,Boot 应该仍然有效,允许您软重启计算机。这里有更多关于这方面的信息,来自这里的 mniess:
从 Ubuntu 12.10 开始,可以更精细地控制启用哪些 Magic-SysRq 功能。只需编辑文件/etc/sysctl.d/10-magic-sysrq.conf。
该文件有详细记录,并准确地告诉您如何启用哪些功能。当前的默认值是出于安全目的选择的,只有在您知道为什么需要时才应该更改(有关安全隐患,请参阅错误 #194676)。
| 归档时间: |
|
| 查看次数: |
11573 次 |
| 最近记录: |