[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.