LINUX.ORG.RU

Embedded + Qt - не работает клавиатура

 ,


0

1

Всем доброго времени суток.

Есть embedded машина на arm, у нее есть экран и usb-клавиатура.

Если с помощью клавиатуры залогиниться на машину (консоль выводится на экран) как root и запустить Qt-шное приложение через

# ./app -qws
то клавиатура работает.

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

Возможно вопрос не совсем в Development, но я помню, что здесь обитают люди, успешно запускавшие Qt-шные приложения на embedded девайсах.

P.S.: К слову, такая же ситуация наблюдается, если запускать приложение через отладочную консоль, подключенную через rs232 к хост-компьютеру. При этом в последнем случае пользователь уже роли не играет (то есть, клавиатура не работает всегда).

★★

Ответ на: комментарий от quiet_readonly

Здесь я зарегистрирован, там - нет. Поэтому сначала сюда пришел)

Сейчас загляну.

solovey ★★
() автор топика
Ответ на: комментарий от velikS

У меня в /dev/input только mice, но спасибо за подсказку...

Уже копаю в сторону QWS_KEYBOARD, может что и получится...

solovey ★★
() автор топика

P.S.: К слову, такая же ситуация наблюдается, если запускать приложение через отладочную консоль, подключенную через rs232 к хост-компьютеру. При этом в последнем случае пользователь уже роли не играет (то есть, клавиатура не работает всегда).

Вот не уверен, тот ли самый случай: у меня, когда запускалось Qt приложение «отключалась» сериальная консоль. Нашел, что это делает Qt. Помог такой патч:

diff -urN orig_qt-everywhere-opensource-src-4.7.3/src/gui/embedded/qkbdlinuxinput_qws.cpp qt-everywhere-opensource-src-4.7.3/src/gui/embedded/qkbdlinuxinput_qws.cpp
--- orig_qt-everywhere-opensource-src-4.7.3/src/gui/embedded/qkbdlinuxinput_qws.cpp	2011-03-30 07:19:04.000000000 +0200
+++ qt-everywhere-opensource-src-4.7.3/src/gui/embedded/qkbdlinuxinput_qws.cpp	2012-01-10 15:15:51.844257365 +0100
@@ -126,8 +126,10 @@
         connect(notifier, SIGNAL(activated(int)), this, SLOT(readKeycode()));
 
         // play nice in case we are started from a shell (e.g. for debugging)
-        m_tty_fd = isatty(0) ? 0 : -1;
-
+//        m_tty_fd = isatty(0) ? 0 : -1;
+//+ SVE 10.06.2010: set it to -1 oterwise the debug console will be closed after starting of Qt application
+        m_tty_fd = -1;
+	
         if (m_tty_fd >= 0) {
             // save tty config for restore.
             tcgetattr(m_tty_fd, &m_tty_attr);
velikS
()

Линукс тут при чём?

anonymous
()
Ответ на: комментарий от velikS

«отключалась» сериальная консоль

Я, наверное, не совсем корректно объяснил... У меня сериальная консоль работает, на нее плюется лог, на клавиатуру реагирует, все нормально.

Не работает та клавиатура, которая через USB воткнута в машину... Приведенный выше прием (через export) в данном случае не работает. Но это не критично, так как в реальных условиях приложение все-равно будет стартовать из автозапуска, а не через отладочную консоль.

Еще раз спасибо за помощь!

solovey ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.