Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Перехват нажатия клавиш с постобработкой  (Прочитано 3604 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн VaYurik

  • Автор темы
  • Участник
  • *
  • Сообщений: 168
    • Просмотр профиля
    • http://vayurik.ru
Вопрос к программерам:
насколько сложно написать приложение (апплет?) который висел бы резидентно и перехватывал нажатия клавиш примерно по следующему алгоритму:

0. Если нажаты клавиши типа CTRL, ALT, Del Shift (возможны варианты), то
1. Запоминаем, какие клавиши нажаты (mem[0:$0417] вроде, уже не помню точно)
2. Обработка события по нажатию комбинации клавиш не происходит.
3. Ждём нажатия ещё клавиши до момента отпускания одной из клавиш (если нажато более одной, иначе - одной) (см.п.0).
4.1. Если отпущена одна из клавиш / одна клавиша (см.п.0), то происходит обработка события из п.2.
4.2. Если нажата ещё одна клавиша не из списка из п.0, то вызывается событие, которое должно наступить при одновременном нажатии данной комбинации клавиш.
5. Если одна из клавиш отпущена, идём на п.0.

Или типа того.
Суть заморочки - попытаться обойти баг (или это фича? :)) Линукса, который связан с переключением раскладки не в момент отпускания клавиш-переключателей, а в момент их нажатия. В результате чего, привыкшим работать под Виндой пользователям затруднительно работать в Линуксе из-за невозможности использовать в виде переключателя раскладки Ctrl+Shift.
Ногами не пинать, если задача нереализуема в меру объективных причин.

Оффлайн VestniK

  • Активист
  • *
  • Сообщений: 594
    • Просмотр профиля
А почему бы не попробовать поправить модуль xkb который должен такими вещами заниматься, а вместо этого делать костыльный обход.
Где то у X-ового API была функция регистрации глобальных клавиатурных комбинаций, я её даже в гугле находил, из спортивного интереса как это делается, но вот какая я уже не помню.

Оффлайн Viewizard

  • Активист
  • *
  • Сообщений: 481
    • Просмотр профиля
Суть заморочки - попытаться обойти баг (или это фича? :)) Линукса, который связан с переключением раскладки не в момент отпускания клавиш-переключателей, а в момент их нажатия. В результате чего, привыкшим работать под Виндой пользователям затруднительно работать в Линуксе из-за невозможности использовать в виде переключателя раскладки Ctrl+Shift.
Ногами не пинать, если задача нереализуема в меру объективных причин.
[немного оффтоп]
Возможно покажусь странным, но у меня на переключении раскладки стоит именно Ctrl+Shift (сижу в гноме)... и никаких проблем, начиная с Ubuntu 5.10 и по 7.04...
[/немного оффтоп]
Обходя разложенные грабли, ты теряешь драгоценный опыт!

Оффлайн h8

  • Активист
  • *
  • Сообщений: 395
    • Просмотр профиля
Суть заморочки - попытаться обойти баг (или это фича? :)) Линукса, который связан с переключением раскладки не в момент отпускания клавиш-переключателей, а в момент их нажатия. В результате чего, привыкшим работать под Виндой пользователям затруднительно работать в Линуксе из-за невозможности использовать в виде переключателя раскладки Ctrl+Shift.
Ногами не пинать, если задача нереализуема в меру объективных причин.

Если ты про КДЕ, то заниматься этим смысла уже нет, потому как осенью будет 4, и в ней уже используется libxclavier - т.е. с раскладками по идее уже не будет никаких проблем (эта же либа используется и в Гноме). Даже если ты и починишь это поведение, оно будет надо только до выхода 4.
Ubuntu 11.04 / MacOS X 10.6

Оффлайн VaYurik

  • Автор темы
  • Участник
  • *
  • Сообщений: 168
    • Просмотр профиля
    • http://vayurik.ru
Нет, господа, дело не в этом. В смысле - не в КДЕ.
Дело в том, что при включении переключения раскладки по CTRL+Shift в Линуксе приходится забыть о комбинациях с участием этих клавиш. Пример - Ctrl+Shift+стрелка.
Сам сижу под гномом, так что проблем с установкой переключателя не имел. А в Кедах ковырялся, так там тоже всё просто оказалось, хотя и через одно место. Я тут где-то писал, как там чего сделать нада.

 

Страница сгенерирована за 0.061 секунд. Запросов: 24.