Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:3
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:7
Форум » starterkit.ru » Embedded Linux
gpio keyboard и комбинация клавиш
titan83
Добавлено 11.09.2020 12:31
0
Сообщение: 1
titan83
3

Пункты: 3141
Регистрация: 16.12.2012
Доброго всем здравия.
Настроил тут gpio keyboard в боард файле для 9g45.
все, в общем-то, работает. но есть проблема: не знаю пока, как вызвать нажатие комбинации клавиш после замыкания входа.
т.е. просто tab ввызывается без проблем, а вот мне надо shift-tab и вот это не получается.
я пробовал сделать последовательно два вызова на один пин.
{ /* BP2, "rightclic" */
.code = KEY_LEFTSHIFT,
.gpio = AT91_PIN_PD21,
.active_low = 1,
.desc = "key_shift",
.wakeup = 1,
.debounce_interval = 10,
},
{ /* BP1, "leftclic" */
.code = KEY_TAB,
.gpio = AT91_PIN_PD21,
.active_low = 1,
.desc = "tab",
.wakeup = 1,
.debounce_interval = 10,
},
это компилируется, но не работает, т.е. просто не созадется устройство eventX, если повесить их на разные пины, то все работает, как и ожидается.

Соотвествено, как-то можно организовать имитацию нажатия комбинации клавиш при замыкании цифрового входа?

Спасибо.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 11.09.2020 22:58 Сообщение: 2
sasamy
4.71

Пункты: 83540
Регистрация: 14.08.2009
Цитата

Соотвествено, как-то можно организовать имитацию нажатия комбинации клавиш при замыкании цифрового входа?


не уверен что это на уровне ядерного драйвера клавиатуры на gpio можно сделать. Может проще из юзерспейса отслеживать изменения gpio и генерировать клавиатурные события ?

https://www.kernel.org/doc/html/latest/input/uinput.html
Спуститься к концу Подняться к началу
Персональная информация
titan83
Добавлено 12.09.2020 09:42 Сообщение: 3
titan83
3

Пункты: 3141
Регистрация: 16.12.2012
sasamy, благодарю за ответ.
ссыла на uinput - очень интересная. даже, если сейчас не пригодится (gpio на sysfs не очень удобно мониторить из userspace, poll() на них не работает), все равно может быть кстати.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 12.09.2020 11:10 Сообщение: 4
sasamy
4.71

Пункты: 83540
Регистрация: 14.08.2009
Цитата
gpio на sysfs не очень удобно мониторить из userspace, poll() на них не работает


должен работать

https://developer.ridgerun.com/wiki/index.php?title=Gpio-int-test.c
Спуститься к концу Подняться к началу
Персональная информация
titan83
Добавлено 12.09.2020 18:33 Сообщение: 5
titan83
3

Пункты: 3141
Регистрация: 16.12.2012
да, вы правы, конкретно на sysfs\gpio poll() работает.
Нашел тут свою старую тему на лоре.
Цитата

Ну как же я устал от этой маеты((( Хочу тупо получать оповещения о изменении некоторых файлов - в линухе есть различные инструменты (inotify, select, poll, может еще что-то), на обычных файлах они чудесно работают, но стоит сделать шаг влево и попробовать мониторить состояние, например, sysfs или procfs, то выясняется, что линуховое Everything is a file - это, мягко говоря, не истина. Если с помощью poll() удается словить изменение на sysfs/gpio, то пот отловить изменения температуры уже низя, ибо на sysfs/i2c файлы уже не являются interruptable, и вот, когда наши космические корабли бороздят, ты вынужден как древний долбоящер периодически вычитывать интересующий тебя файл, вместо того, чтобы реагировать на события. Я очень обрадуюсь, если это я дурак, а лыжи на самом деле едут (есть способ наблюдать за любыми файлами на любых файловых системам). Спасибо, я кончил.
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux