Как отключить устройство ввода?

Если вы ищете руководство по разработке ядра, связанного с сетью, перейдите к Understanding Linux Network Internals-O'Reilly Media. Это действительно хорошая книга.

Еще одним интересным способом изучения программирования ядра является Eudyptulla Challenge. . Это также поможет вам внести свой вклад в открытый исходный код.

Лучший способ понять, как работает любая подсистема ядра, — изучить код, который вы можете найти здесь:http://elixir.free-electrons.com/linux/v3.7/source/kernelдля всех версий.

Некоторые другие книги:

Кратко о ядре Linux

Понимание ядра Linux

2
30.08.2019, 13:24
2 ответа

Если поиск на уровне USB не обнаружил ничего, что можно было бы исправить, то следующие две вещи, которые вы можете сделать, — это «схватить» его на уровне входного слоя или предотвратить его активацию на уровне X.

Для первого,

evtest --grab /dev/input/event0 > /dev/null

или что-то подобное должно сработать. :Захват гарантирует, что только захватывающее приложение получает события, т. е. X не получит их.

Во втором случае добавьте раздел InputClassк вашему xorg.confпо аналогии с

Section "InputClass"
    Identifier "BrokenKeyboard"
    MatchDevicePath "/dev/input/by-path/platform-i8042-serio-0-event-kb"
    Option "Ignore" "true"
EndSection

предполагая, что этот путь на самом деле ведет к вашей клавиатуре. Не используйте /dev/input/event0и т. д. здесь, это не гарантирует согласованность между загрузками.

1
27.01.2020, 22:02

Можно добавить его в черный список. Например, если это происходит через модуль atkbdи больше ничего не нужно в этом конкретном модуле, просто добавьте этот модуль в черный список.

В противном случае, возможно, unbindтоже вариант.

Не имея ноутбука для тестирования, я подключил к своей системе запасную мышь, а затем отключил ее.

Это мышь:

I: Bus=0003 Vendor=04f3 Product=0235 Version=0111
N: Name="OM"
P: Phys=usb-0000:00:14.0-10.1/input0
S: Sysfs=/devices/pci0000:00/0000:00:14.0/usb2/2-10/2-10.1/2-10.1:1.0/0003:04F3:0235.0004/input/input12
U: Uniq=
H: Handlers=event12 mouse1 
B: PROP=0
B: EV=17
B: KEY=70000 0 0 0 0
B: REL=903
B: MSC=10

Прохождение/sys/bus/hid/...:

# head /sys/bus/hid/drivers/*/*/*/*/name
==> /sys/bus/hid/drivers/hid-generic/0003:046A:010D.0001/input/input3/name <==
HID 046a:010d

==> /sys/bus/hid/drivers/hid-generic/0003:046A:010D.0002/input/input4/name <==
HID 046a:010d

==> /sys/bus/hid/drivers/hid-generic/0003:046D:C077.0003/input/input5/name <==
Logitech USB Optical Mouse

==> /sys/bus/hid/drivers/hid-generic/0003:04F3:0235.0004/input/input12/name <==
OM

Ну, давайте выгоним.

# echo 0003:04F3:0235.0004 > /sys/bus/hid/drivers/hid-generic/unbind

И его нет. Больше не двигает курсор мыши. Больше даже не указан как устройство ввода. Это действительно прошло.

Таким образом, вы можете делать такие вещи с unbinding, и в зависимости от того, какой драйвер он использует, также в черный список. Основная проблема заключается в том, чтобы найти правильное имя и место для его отмены, а затем автоматизировать с помощью пользовательского правила udev. В противном случае, если вы вытащите вилку и вставите ее обратно, она будет там и обратно.

2
27.01.2020, 22:02

Теги

Похожие вопросы