[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[PATCH] поддержка акселераторов в программах использующих gtk (и gnome-libs) в X независимо от текущего языка клавиатуры



 Здравствуйте!

 Не все адресаты данного письма знакомы со мной, но каждого из адресатов 
этот патч заинтересует. 
  Данный патч исправляет отсутствие поддержки акселераторов gtk 
(клавиатурных комбинаций) при языке клавиатуры, отличном от латинского. К
примеру возьмем стандартный акселератора для поля ввода -  Ctrl-U, очищающий
строку ввода. Когда клавиатура находится в латинском наборе символов,
нажатие Ctrl-U действительно очищает содержимое строки, поведение не
изменяетя и при фиксации верхнего региста (нажатием клавиши capslock). При
переходе на кириллический набор символов, нажатие Ctrl-U (вернее, Ctrl и
клавиши, на которой написана "U") никакого действия не предпринимается (без
использования данного патча). При применении данного патча поведение будет
одинаковым и корректном не зависимо от текущего языка клавиатуры и состояния
capslock. С технической точки зрения, этот патч подменяет keysym
нажатой клавиши на keysym который был бы выдан клавиатурой, находящейся в
латинском языке и при отжатой клавиши capslock. 
  На всякий случай, существует возможность отключить эту функциональность без
перекомпиляции библиотеки gdk путем определения переменной окружения с
названием GTK_NO_KEYSYM_SPOOFING (например, пользователи bash могут вставить
export GTK_NO_KEYSYM_SPOOFING=y в .bash_profile).
  Этот патч будет интересен и для людей, использующих только латинскую
раскладку клавиатуры. Так как этот патч переводит все keysym в их эквиваленты
нижнего регистра, то это позволит использовать акселераторы в некачественном
софте, который проверяет только keysym нижнего регистра при обработке
клавиатурных событий (и, соотвественно, будет вести себя по-другому при
зажатой клавише capslock). 
  Данный патч успешно протестирован с приложениями из gnome в частности.   

  Данный патч только меняет логику обработки клавиатурных событий в библиотеке
gdk, используемой gtk. Он не вносит никаких бинарных несовместимостей, и
соотвественно, при распространении update'ов достаточно распространять только
libgdk*.
  Этот патч создан для gtk версии 1.2.5 но он должен без проблем накладываться
на gtk любых версий из ветки gtk-1.2.x

 Данный патч возник вследствие некорректной обработки клавиатурных событий
библиотекой gdk. Данный патч не является идеологически верным и по-этому не
будет интегрирован разработчиками gtk в ветку gtk-1.4.x (или 2.0 - не известно
как он будет называться). Я попросил разработчиков gtk включить этот патч в
следующую ветку gtk-1.2.x - а именно 1.2.9, но ответа нет (прошел один день).
Я извещу всех адресатов данного письма о включении/невключении этого патча в
gtk-1.2.9 дополнительно.

 Данный патч находится здесь:
http://www.hippo.ru/~hvv/patches/no-patched-version-yet/gtk-accels-in-any-keylang-support.patch

 Я настоятельно прошу авторов дистрибьютивов, которые интегрируют этот патч в
свой дистрибьютивы, прислать мне весь комплект компактов дистрибьютивов, в
которых этот патч будет использован (желательно коробочную версию) (в
частности, debian potato (с исходниками) + non-free/russian). Адрес:
Россия, 443002, Самара, просп. Ленина-2а, 149, Харчеву Владу.

 По всем вопросам о патче и сотрудничестве обращайтесь по адресу hvv@hippo.ru.

 Форвардинг данного письма целиком в раличные списки рассылки приветствуется.

 Best regards,
  -Vlad

 

Reply to: