[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: про X-овую клавиатуру
> > 1. Уменьшится размер сервера.
> И увеличится Xlib.
Да, естественно.
> > 2. В сервер бинарные модули подгрузить -
> > большая проблема, а в клиента - легко.
>
> Если сервер не "железный", то - не вижу разницы.
Как правило, пользователи (не root) не могут вставлять свой код в Х-сервер.
> > тут разницы нет, но с сервера убирается целый блок работы с Keymapping'гом,
> > и убирается часть X протокола.
>
> Так а что именно убирается?
Разная ненужная мелочевка. Хранение/выдача/модификация modmap'а, алгоритм
модификации lock'ов. Запоминать состояние клавиатуры нужно, но это делалось
бы готовым кодом работы с properties.
> Ну хорошо, в Xlib. А как?
Например так, как сделано сейчас. Или лучше.
> Жестко зашить? Неинтересно.
> Сделать настраиваемый из текстовых конфигов?
> А если сервер и клиент - разные машины, то и клиенты скорее всего -
> с разных машин. А кто будет обеспечивать единообразие настроек (или версий
> Xlib, или конкретных подгружаемых модулей)?
> Опять возможен тот же кошмар.
Насчет версий Xlib - согласен, я упоминал про трудности обратной совместимости.
А однообразные настройки - проблема того, кто настраивает. К тому же не
обязательно они должны быть одинаковыми. Можно ведь сейчас запустить
несколько программ одновременно с разными locale.
> > > - состояние клавиатуры (если клиент не сам его вычисляет) пусть каждый
> > > раз запрашивает с сервера. (Зачем? Ему сейчас его и так докладывают.)
> >
> > Каждый раз не надо, конечно. При загрузке приложения делается
> > XQueryKeymap, затем отслеживаются нажатия/отпускания клавиш; при
> > смене фокуса карта нажатых клавиш передается клиенту автоматически.
>
> А что значит - карта? Это и получится то же состояние. Серверу все-равно
> надо соображать, что lock'ирующася клавиша даже когда отпущена, все-равно -
> нажата. :-)
> То есть - что получается. Сервер должен не только знать - какая клавиша
> в данный момент нажата, но и
> - по всем клавишам - lock'ирующаяся она или нет.
> (Ему это жестко зашить? Или сделать настраиваемым?)
нет. Я в курсе, что сейчас сервер считает, что когда capslock включен, то
он нажат. Но я то предлагал от этого избавиться, т.е. серверу не нужно
знать, что capslock - залипающая клавиша, и его нажатость не будет
эквивалентна включению caps'ов.
> Кстати, а как менять раскладку "на лету"? Или уже не надо?
Уже не надо. Смена на лету - это всего лишь hack.
> > > Ну и чем это лучше? :-)
> >
> > Логика переключения состояния клавиатуры переносится в клиента, что позволяет
> > 1. облегчить сервер
> И и настолько же утяжелить _все_ клиенты.
>
> > 2. большую гибкость за счет подгружаемых модулей.
> Если модули у всех клиентов разные - это кошмар.
> Если один и тот же - ну так пусть он в сервере сидит (подгружаемый).
На сервере то хорошо, только X клиенты не могут на сервер бинарный код
загрузить.
Еще один момент - размазывание одной функции (трансляции кодов клавиш в
символы и команды) на клиента и сервер одновременно. Было бы куда лучше
сосредоточить ее где-нибудь в одном месте, тогда было бы проще ее менять.
А вообще то оригинальный вопрос был: можно ли обойтись без xmodmap и
xkb :) Ответ - можно, хотя и надо менять Xlib.
--
Alexander.