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

 Не все адресаты данного письма знакомы со мной, но каждого из адресатов 
этот патч заинтересует. 
  Данный патч исправляет отсутствие поддержки акселераторов 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, Харчеву Владу.

 По всем вопросам о патче и сотрудничестве обращайтесь по адресу [EMAIL 
PROTECTED]

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

 Best regards,
  -Vlad

 

Ответить