Ядро Linux: удалить обработчик ввода из драйвера

#linux-kernel #driver #linux-device-driver

#linux-ядро #драйвер #linux-device-driver

Вопрос:

когда я вижу результат cat /proc/bus/input/devices , я вижу это:

 I: Bus=0010 Vendor=0001 Product=0001 Version=0100
N: Name="aml_keypad"
P: Phys=keypad/input0
S: Sysfs=/devices/c8100580.rc/input/input0
U: Uniq=
H: Handlers=kbd mouse0 event0 
B: PROP=0
B: EV=7
B: KEY=7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffff fffffffffffffffe
B: REL=103
  

Как я могу удалить обработчик из драйвера. (Я компилирую ядро для себя)

Например, я хочу удалить mouse0 из обработчиков

Комментарии:

1. Какую фактическую функциональную цель вы пытаетесь достичь здесь? Если ваша цель — скажем, отключить сенсорную панель, есть общепринятые способы сделать это.

2. Я хочу по-прежнему использовать устройство, но удалить из него функциональность мыши. (на самом деле это обязательно для меня, если вы знаете мой вариант использования) . возможно ли это? @ChrisStratton

3. Если вы отключите все функции мыши, вы можете настроить CONFIG_INPUT_MOUSEDEV

Ответ №1:

Чтобы удалить обработчик, достаточно просто прокомментировать соответствующий _set_bit в исходном коде драйвера. В моем случае :

 // __set_bit(BTN_MOUSE, dev->input_device->keybit);
// __set_bit(BTN_LEFT, dev->input_device->keybit);
// __set_bit(BTN_RIGHT, dev->input_device->keybit);
// __set_bit(BTN_MIDDLE, dev->input_device->keybit);
//
// __set_bit(EV_REL, dev->input_device->evbit);
// __set_bit(REL_X, dev->input_device->relbit);
// __set_bit(REL_Y, dev->input_device->relbit);
// __set_bit(REL_WHEEL, dev->input_device->relbit);
  

Приведенный выше фрагмент является частью этого файла.