Re: [问题] 2.4G 无线鼠标键盘凭什么关我笔电?

楼主: cuello (cuello)   2021-04-10 01:39:52
上一篇我所提的问题, 有了部份解答, 回文整理一下
我讲的琐碎一点, 大家比较容易发现我的盲点
以后有碰到类似问题的人也可以省下一点时间
搞不好, 最常跑来回顾细节的, 就是我自己
因为我们会游走在 "kernel 边缘" (我现在是 5.10.28)
所以我们所讨论的这些, 基本上 *应该要* 适用所有人
先大致复习一下有点复杂的问题
我有个无线鼠标直键盘, 称为 空中飞鼠
它身上长了一个电源键, 但是按下去会同时
1. 透过 IR LED 关掉电视 2. 透过 USB 关掉笔电
但是我不要它关我笔电...
前情提要: (抄过来)
> 1. 它凭啥关我笔电?什么管道?我自己都还要 sudo, 它谁?
> 2. 如何告诉我的系统,不准接受 hid 来的 shutdown 命令
===============================================
我们从第二个问题开始, 再回到第一个问题
===============================================
实务上, 会有不少人碰到类似的问题, 例如
USB 键盘右上角长了一颗电源键, 因为很接近常用键
动不动就会无意间按到, 导致无预警关机, 例如:
https://i.stack.imgur.com/9EgBZ.jpg
也有人用的 USB HID 长的像这样
https://www.orbsmart.de/wp-content/uploads/2018/09/orbsmart-WA-1_1-1.jpg
这比较像我这支所谓的 "空中飞鼠", 大概因为它有陀螺仪,
可以像玩 Wii 那样在空中挥舞, 就带动萤幕上的鼠标
https://i.imgur.com/7mJwOoi.jpg
另外, 要是有一天, 你突然发现机器是关机状态,
不要排除是你家的猫, 这时也会想要 disable 那个键
或是, 有时会需要把 sleep/suspend/hibernate 键停用
https://i.stack.imgur.com/524Oj.jpg
最简单的方法就是修改 /etc/systemd/logind.conf
把 HandlePowerKey=poweroff 改为 =ignore
或是把 HandleLidSwitch 改为 =ignore
(...)
(至于 /etc/acpi/.... 我到现在还是一头雾水,
这中间大概也夹杂了一些过渡性的 kernel 问题
还有我的笔电硬件特别的状况... 所以不想再去想了)
这是 Bencrie 一开始就想到的, 但是他也没忘记有个前提
就是 *如果你用 systemd 的话*, 换句话说,
并不是所有人, 所有系统, 都可以从这边着手
而且改 logind.conf 的话, 只能让所有的电源键都失效.
因为它在很上层, 应该无法分辨 interrupt 是来自哪个电源键.
我的情形是, 最好只停用 "空中飞鼠" 的电源键 (不含 IR LED),
保留笔电上面电源键的功能.
我所能找到的是:
方法一, Vojtech Pavlik 写的 evtest(1) 是个好朋友.
**************************************************
(不是 xev(1), xinput(1), showkey(1)... 等, 选对工具是关键)
$ sudo apt-get install evtest
$ sudo evtest
作者: in09   2021-04-10 07:00:00
感谢
作者: OrzOGC (洞八达人.拖哨天王)   2021-04-10 09:36:00
好硬核啊...
作者: tomsawyer (安安)   2021-04-10 10:41:00
看起来是南桥帮你注册input fd,kernel也随之生成相关event
作者: Bencrie   2021-04-10 12:45:00
应该是算 systemd 设计上的不足,毕竟都它在处理的config 没办法个别设定要不要反应 power button至于遮断 event20 我想应该可以用 udev rule 去处理
作者: LinBuoRen (林博仁)   2021-04-10 19:15:00
推解决方案
作者: ptrpan (人生目标)   2021-04-11 09:14:00
作者: goldie (阿良)   2021-04-11 11:13:00
作者: H2b2t (H2b2t)   2021-04-16 05:18:00

Links booklink

Contact Us: admin [ a t ] ucptt.com