LINUX.ORG.RU

В Gnome 3.8 планируется обеспечить базовую поддержку XI2

 , , , xi2,


0

2

В запланированных к выходу весной 2013 года версиях Gnome-shell и Mutter будет обеспечена базовая поддержка набора расширений XI2.
В Gnome 3.8 планируется значительно расширить поддержку сенсорного ввода и, прежде всего, управления жестами. Конкретно будет обеспечено:

  • Поддержка перелистывания месяцев в календаре.
  • Перелистывание списка приложений в режиме обзора Gnome-shell.
  • Регулировка звука.
  • Масштабирование окон жестами.
  • Поддержка различных экранных слайдеров.
  • Различные комбо-боксы, например, в меню статуса пользователя.
  • Снятие блокировки экрана жестом.
  • Перелистывание рабочих столов


С целью полной поддержки всевозможных вариантов сенсорного управления и будет обеспечена поддержка XI2.
В качестве особенностей нового протокола называются:

  • Поддержка иерархии устройств ввода с разделением их на slave devices и master devices (не путать с slave и master дисками). Slave device — это физическое устройство ввода, подключенное к компьютеру. Master device — это виртуальное устройство ввода, создающееся в памяти компьютера, имитирующее физичекое (например, клавиатуру или мышь). Каждый раз, когда slave device генерирует некое событие, оно обрабатывается через master device и передается конкретному приложению.
  • Благодаря поддержке множества master devices, есть возможность реализовывать их все через один slave device. Это позволит обеспечить обработку самых различных событий через одно устройство ввода. Например, при работе с сенсорным экраном можно легко отделить жест масштабирования окна или перелистывания списка от простого касания для перемещения курсора мыши или нажатия виртуальной клавиши.
  • В XI2 введена поддержка 32-битных кей-кодов. На сегодняшний день в протоколе X11 поддерживаются клавиатуры максимум с 255 клавишами. В XI2 данное ограничение снимается.
  • Поддержка субпиксельных координат в событиях ввода.
  • Поддержка динамических устройств. Устройства ввода могут менять свое назначение прямо на лету.
  • Поддержка самых различных жестов для управления окнами.
  • Поддержка упрощенного API для исправления информации об устройстве ввода, а также выбора и смены события ввода.


О порте Gnome на XI2 вы можете прочитать здесь.

>>> Подробности

★★★★★

Проверено: tazhate ()
Последнее исправление: tazhate (всего исправлений: 6)
Ответ на: комментарий от loz

Первые две нет, третью проверю дома.

Спасибо. Будет интересно узнать результаты проверки. На всякий случай проверь все три, и лучше проверять из текстовой консоли (Ctrl+Alt+F2) от рута. Каждая из трёх команд должна реагировать на все кнопки, в том числе на Alt, Shift... Если команда на них не реагирует — она либо не работает, либо читает не из того устройства.

Для команды evtest надо указывать устройство /dev/input/eventX. Чтобы узнать, который из eventX к кому относится:

udevadm info -a -p $(udevadm info -q path -n /dev/input/eventX)
(ясное дело, вместо X подставить цифру)

Я вот не помню как оно все, но все упиралось в иксы и 256 кодов.

Это-то и странно. Ведь ни одна из этих команд не работает через иксы.

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

Интересно, получил такое: https://gist.github.com/4039037, я точно знаю кнопки с кодами 600+, как-то другим способом я их вычислял, они не работают в том числе.

Не. Это не всё. При нажатии на кнопки клавиатуры и evtest и showkey должны показывать коды нажимаемых кнопок. Вот самое интересное — что они показывают?

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

Вобщем получилось так - те кнопки, которые не работают не вызывают событий, но и некоторые из тех которые работают тоже, правда они печатают символы типа ^@.

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

Вывод этих программ (на примере кнопок F1, F2, F3) должен выглядеть так: https://gist.github.com/4048749 Примерно таким же, только с другими кодами, он должен быть для всех кнопок.

Вобщем получилось так - те кнопки, которые не работают не вызывают событий, но и некоторые из тех которые работают тоже, правда они печатают символы типа ^@.

Кнопки, которые работают, не могут не вызывать событий, иначе они бы не работали. Если кнопки, которые работают, не вызывают вывода кейкода/сканкода на экран, от это значит одно из двух: либо программы showkey и evtest не были запущены от рута в текстовой консоли без иксов (с указанием правильного устройства из /dev/input для evtest), либо на клавиатуре вообще не работает ни одна кнопка, а сообщение на лоре было написано телепатически. :)

PS: да, кстати, запускать их надо по очереди, не одновременно. :)

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

Повторяю еще раз, showkey ни в каком режиме их не видит. Программы я запускал по очереди, в консоли, от рута, как делал и несколько лет наазд, я еще не совсем идиот. На счет того что evtest таки должно их видеть у меня есть подозрения что клава имеет 2 input устройства в /dev/input, проверю, отпишу.

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

/dev/input/event3 - обычные кнопки клавы, /dev/input/event4 - дополнительные, есть вывод evtest https://gist.github.com/4050422 тут я понажимал эти кнопки.

Отлично, есть сканкоды! Осталось только смапить их на нужные кейкоды. Грубо говоря, надо создать файл типа /lib/udev/keymaps/my-super-keyboard и вписать в него сканкоды и кнопки для недостающих клавиш, а потом вписать запуск keymap-а либо в /etc/rc.local, либо в /etc/udev/rules.d/99-my-super-keymap.rules. Можешь попробовать сделать это сам по любой из нагуглившихся инструкций, например этой.

Если хочешь, я могу помочь составить таблицу маппинга, для этого мне нужны ответы на 3 вопроса:
1. https://gist.github.com/4050422 — это вывод какой команды? evtest /dev/input/event4 или evtest /dev/input/event3? Или какой-то другой?
2. В этом выводе видны нажатия 10 кнопок со сканкодами: 90158, 90157, 10082, c0194, c0192, 9015c, 9015b, 90156, 90159 и 90206. Как подписана каждая из этих кнопок на клавиатуре? В смысле, какой физической кнопке соответствует какой из кодов? Назови их все, тогда я смогу сказать, какую из них куда смапить.
3. Скинь вывод команды xmodmap -pk

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