On Thu, 24 Feb 2005 21:39:38 -0600
Dmitriy Pivovarov <jcfho***@m*****.ru> wrote:
DP> Можно и мне в личку? или сюда, думаю многим интересно...
главный фокус в переключении на одну раскладку - в конструкции
LockGroup(group=<N>), где <N> - номер раскладки (1..4)
у меня переключение на третью раскладку происходит через
клавишу-посредника (т.к. в данном случае (caps - многофункциональная
клавиша) напрямую навесить LockGroup на клавишу Caps не получилось).
но если вешать LockGroup на отдельные клавиши (без связки с shift,ctrl и т.п.),
то никаких посредников не потребуется.
выдержка из debian-russi***@l*****.org
Begin forwarded message:
Date: Mon, 24 Jan 2005 16:40:48 +0200
From: alexander barakin <arizona20***@m*****.ru>
To: debian-russi***@l*****.org
Subject: Re: Аналог PuntoSwitcher
On Sat, 22 Jan 2005 22:04:01 +0300
Artem Chuprina <ran@r*****.ru> wrote:
> alexander barakin -> debian-russi***@l*****.org @ Sat, 22 Jan 2005 20:13:52
+0200:
> ab> работает. а можно ли добиться трех раскладок, загружая их, как в
> ab> Вашем примере, с помощью xkbcomp?
>
> Судя по тому, что я вижу в конфигах, скорее всего, можно, но
> документировать это забыли...
точно - можно таки приучить xkb не перебирать раскладки в цикле (украинцы меня
поймут :), а привязать каждую
раскладку на уникальное сочетание клавиш.
в приведенном примере задействованы три - us+ru+ua, но, при желании, можно и
четвертую (максимально
возможную) прикрутить.
основой взят многострадальный CapsLock:
нажатие CapsLock - раскладка us
Shift+CapsLock - ru
Ctrl+CapsLock - ua
Shift+Ctrl+CapsLock - "классика" - переключение режима CapsLock (для тех, кто
много пишет ПРОПИСЬЮ :)
проверено на версии
xkb-1.10-6
XFree86-4.3.0-42
итак, по пунктам:
1. файл .xsession:
...
(cd ~/etc/xkb && xkbcomp three_groups.keymap $DISPLAY)
...
2. файл ~/etc/xkb/three_groups.keymap:
xkb_keymap "THREE_LANG_MAP" {
xkb_keycodes { include "xfree86" };
xkb_geometry { include "pc(pc104)" };
xkb_types { include "complete+three_groups.types" };
xkb_compat { include "complete+leds(scroll)+three_groups.compat" };
// leds(scroll) можно и выкинуть - раскладки контролируются ручками :))
xkb_symbols
{
include "pc/pc(pc104)+pc/us+pc/ru(winkeys):2+pc/ua(winkeys):3"
replace key <CAPS> // можно и с другими поэкспериментировать
{
type = "THREE_LANG", // собственный "тип" клавиши. описан в
// three_groups.types
[
ISO_First_Group, // "чистая" клавиша переключает на us
ISO_Last_Group, // +Shift - ru
Mae_Koho, // это не украинское ругательство. это буква
// такая :)
// просто взял от фонаря из keysymdef.h то,
// что заведомо не используется в кириллице
Caps_Lock // +Shift+Ctrl - "родная" функция клавиши
]
};
};
};
3. файл ~/etc/xkb/types/three_groups.types:
partial xkb_types "shift" {
type "THREE_LANG" {
modifiers = Shift+Control+Alt;
map[None] = Level1;
map[Shift] = Level2;
map[Control] = Level3;
map[Control+Shift] = Level4;
level_name[Level1] = "Base";
level_name[Level2] = "Shift";
level_name[Level3] = "Ctrl";
level_name[Level4] = "Ctrl Shift";
};
};
4. файл ~/etc/xkb/compat/three_groups.compat:
default partial xkb_compatibility "default" {
interpret Mae_Koho {
action= LockGroup(group=3); // за работоспособность такой
// конструкции
// во всех версиях xkb, видимо,
// никто не поручится :(
};
};
скорее всего, много лишнего, но я пока только учусь.
благо есть у кого (тонкий намек в сторону Artem Chuprina :))
End forwarded message
--
с уважением, александр баракин.
-*Название листа "Обсуждения и споры о свободных системах и всём сопутствующем"
Написать в лист: comp.soft.linux.debate-list@subscribe.ru
Архив Листа - http://subscribe.ru/archive/comp.soft.linux.debate Поиск: http://www.google.com
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.debate/rules
Номер письма: 2238; Возраст листа: 492; Участников: 704
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.debate/msg/322536