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