Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 27.03.2012
Сообщений: 3

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

28.03.2012, 14:02. Показов 1986. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!

По заданию нужно написать модуль ядра Linux,который будет блокировать определённые кнопки мыши и при нажатии на заблокированную кнопку выводить сообщение(достаточно использовать обычный printk).

Я по интернету полазил, кой какую информацию-то нашёл... В частности полезным для понимания оказалось: Модуль ядра, работа с мышью
Главной проблемой становится то, как разобрать и переиначить(или что-то подменить) стандартный драйвер мыши... Подскажите пожалуйста.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.03.2012, 14:02
Ответы с готовыми решениями:

Написать модуль ядра, который сохраняет в файле журнала все операции изменения файлов внутри заданного каталог
Написать модуль ядра, который сохраняет в файле журнала все операции изменения файлов внутри заданного каталог(платформа разработки - oc...

Написать простейший модуль ядра
Привет. Необходимо написать простейший модуль ядра. Имеются следующие исходники: #include <linux/module.h> #include...

Написать модуль ядра, который сохраняет в файле журнала все операции изменения файлов внутри заданного каталог
Написать модуль ядра, который сохраняет в файле журнала все операции изменения файлов внутри заданного каталога(платформа разработки - oc...

4
Заблокирован
28.03.2012, 20:16
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

когда первый раз читал, подумал, что нужно добавить что то в код ядра, но когда читал второй раз понял, что это не нужно, ну ладно не пропадать же добру...
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
*** linux-3.2.6/drivers/input/input.c   Tue Feb 14 02:17:29 2012
--- linux-3.2.6-test/drivers/input/input.c  Wed Mar 28 22:54:37 2012
***************
*** 32,37 ****
--- 32,39 ----
  MODULE_DESCRIPTION("Input core");
  MODULE_LICENSE("GPL");
  
+ bool block_right_button = false;
+ module_param(block_right_button, bool, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP);
  #define INPUT_DEVICES 256
  
  static LIST_HEAD(input_dev_list);
***************
*** 349,354 ****
--- 351,361 ----
  {
    unsigned long flags;
  
+   if (block_right_button && code == BTN_RIGHT && value == 1) {
+       pr_info("Right button of device %s blocked", dev->name);
+       return;
+   }
+   
    if (is_event_supported(type, dev->evbit, EV_MAX)) {
  
        spin_lock_irqsave(&dev->event_lock, flags);
***************
*** 2138,2143 ****
--- 2145,2151 ----
  
  static int __init input_init(void)
  {
+   /*block_right_button = false;*/
    int err;
  
    err = class_register(&input_class);

Я не понимаю чем тебя не устраивает мой второй вариант из Модуль ядра, работа с мышью, чтобы блокировал нужно просто добавить одну строчку
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
static void new_event(struct input_handle *handle, unsigned int type, unsigned int code, int value)
{
  switch (code) {
    case BTN_LEFT:
      pr_info("Left");
      break;
    case BTN_RIGHT:
      pr_info("Right");
      return; /*Right button blocked*/
      break;
    case BTN_MIDDLE:
      pr_info("Middle");
      break;      
  }
  
  old_event(handle, type, code, value);
}
1
0 / 0 / 0
Регистрация: 27.03.2012
Сообщений: 3
30.03.2012, 00:21  [ТС]
Спасибо огромное за помощь! Всё работает! Очень простое и очевидное решение с добавлением return'а...

Хотя без приключений не обошлось: в виртуалке не заработало совсем.. не ловит нажатия мыши=// А как только скомпилил модуль под нормальной системой - всё отлично... нужные кнопки блокирует, сообщения выводит(единственное, приходится лезть в var/log/kernel.log чтобы увидеть сообщения...)
Один нюанс: тачпад нетбука всё равно не виден(кнопки при тачпаде - блокируются, но не он сам).

Вопрос уже для большего понимания... где можно почитать про функции, использованные в данном модуле? А то пока понимание кода "в целом" есть, но не "конкретно"=(
0
Заблокирован
30.03.2012, 17:27
Цитата Сообщение от paztedd Посмотреть сообщение
единственное, приходится лезть в var/log/kernel.log чтобы увидеть сообщения...
cat /proc/kmsg

Цитата Сообщение от paztedd Посмотреть сообщение
Один нюанс: тачпад нетбука всё равно не виден(кнопки при тачпаде - блокируются, но не он сам).
нажатие по тачпаду обрабатывается BTN_TOUCH, если речь об этом

Цитата Сообщение от paztedd Посмотреть сообщение
Вопрос уже для большего понимания... где можно почитать про функции, использованные в данном модуле?
http://lxr.linux.no/#linux+v3.3/
1
0 / 0 / 0
Регистрация: 27.03.2012
Сообщений: 3
01.04.2012, 00:19  [ТС]
Спасибо!
Чего-то подобное я и искал, но, как-то видимо, слишком лениво и неправильно... Наконец-то нашёл описание структуры input_dev.
Могу сказать, что вроде полезно ещё почитать:
http://www.kernel.org/doc/Docu... amming.txt
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.04.2012, 00:19
Помогаю со студенческими работами здесь

Создайте обработчик события нажатия кнопки мыши на форме (Click), который будет очищать поле ввода
Делаю лабу: Разместите на форме поле ввода (TextBox), метку (Label) и кнопку (Button). Создайте обработчик события нажатия на кнопку,...

Массив: написать модуль, который будет находить максимальный элемент в массиве.
Хочу написать модуль, который будет находить максимальный элемент в массиве. Вот модуль: Unit poisk_max; Interface Type...

Фаервол для ubuntu, который по умолчанию будет блокировать весь трафик
Нужен фаервол для ubuntu который по умолчанию будет блокировать весь трафик

Напишите скрипт, который поможет откл. определённые кнопки на сайте
В вопросе все описал.:coffee2:

Создать приложение в котором в левой чисти экрана будет куб который будет вращаться с помощью "перетаскивания мыши"
Дали задание, не знаю как делать, подскажите пожалуйста. Вот текст задания: Создать приложение в котором в левой чисти экрана будет...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru