我在用keyfuzz在 Mac 键盘上将 Alt-Eject 映射到 Alt-SysRq(参见这里)。但在最近的 (X)ubuntus 上,首选使用 systemd 服务在启动时运行所需的命令。我想知道我多早可以执行该服务?使用哪些WantedBy=
、After=
等Before=
属性才能使配置正常工作并且不会被覆盖?那么它在救援模式启动时也能工作吗?
这里是关于不同目标之间依赖关系的一些参考。
编辑:我将其放入了WantedBy=multi-user.target friendly-recovery.target
我[Install]
创建的 .service 文件的一部分。这似乎在恢复模式 root shell 中也有效。
答案1
我将其放入WantedBy=multi-user.target friendly-recovery.target
了[Install]
我创建的 .service 文件的一部分。这似乎在恢复模式 root shell 中也有效。不过,我不知道这是否是最佳配置。
答案2
我没有使用,而是keyfuzz
尝试重新映射 scancode->keycode,就像 Danzel 在命令中建议的那样,并根据 /lib/udev/hwdb.d/60-keyboard.hwdb 和这里。
我创建了文件 /etc/udev/hwdb.d/10-apple-keyboard.hwdb,内容如下:
evdev:name:Apple, Inc. Apple Internal Keyboard / Trackpad:dmi:bvn*:bvr*:bd*:svnAppleInc.:pn*
KEYBOARD_KEY_c00b8=sysrq
对于文件,我从输出的第三行获取了设备名称sudo evtest /dev/input/by-id/usb-Apple__Inc._Apple_Internal_Keyboard___Trackpad-evenkbd
,通过相同的命令获取了弹出键的扫描码 - 请参阅相关答案- 和来自的键码/usr/include/linux/input-event-codes.h
(小写并且不带上面的“key_”前缀。)
但仍然按下弹出按钮会触发 KEY_EJECTCD 而不是 KEY_SYSRQ,如下所示sudo uvtest
:
Event: time 1567436214.147340, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00b8
Event: time 1567436214.147340, type 1 (EV_KEY), code 161 (KEY_EJECTCD), value 1
Event: time 1567436214.147340, -------------- SYN_REPORT ------------
我无法确认按键映射:
udevadm info /dev/input/by-id/usb-Apple__Inc._Apple_Internal_Keyboard___Trackpad-event-kbd | grep KEYBOARD_KEY
那没有显示任何东西。