(t.t @ Среда, 10 Августа 2005, 2:33) писал(а):Caps переключает циклически между раскладками, а на время удерживания RightWin включается раскладка, следующая в цикле за текущей.
пересмотрел доки - таки нашел решение. т.е., чтобы при любой текущей раскладке при удержании клавиши-модификатора получалась буква в одной конкретной раскладке.
прошу считать это виртуальным подарком к твоему дню рождения :thumbsup:
итак, по порядку:
начну с того, что средство это нештатное, т.е. прийдется либо модифицировать соответствующий файл в
, либо подгружать вручную с помощью xkbcomp.
немного теории:
при включении опции
на RWIN, в соответствии с содержимым
"вешается" функция Mode_switch. описана она в
и заключается в исполнении "действия" SetGroup(group=+1), т.е. временная смена раскладки на следующую по списку.
но нас это не устраивает. мы (вместе с t.t

) хотим, чтобы временная смена раскладки происходила на строго определенную раскладку. например, на первую (обычно английскую).
решение заключается в том, чтобы на клавишу-модификатор навесить не одно действие, а два (три, четыре - в зависимости от количества раскладок). при трех раскладках, делается это так:
Код: Выделить всё
replace key <RWIN>
{
actions[Group1]=[ SetGroup(group=1) ],
actions[Group2]=[ SetGroup(group=3) ],
actions[Group3]=[ SetGroup(group=2) ]
};
при двух:
Код: Выделить всё
replace key <RWIN>
{
actions[Group1]=[ SetGroup(group=1) ],
actions[Group2]=[ SetGroup(group=2) ]
};
при четырех:
Код: Выделить всё
replace key <RWIN>
{
actions[Group1]=[ SetGroup(group=1) ],
actions[Group2]=[ SetGroup(group=4) ],
actions[Group3]=[ SetGroup(group=3) ],
actions[Group4]=[ SetGroup(group=2) ]
};
теперь, какова бы ни была текущая раскладка, нажатие на RWIN+']' даст именно правую квадратную скобку.
некоторое отступление:
т.к. я активно использую клавиши win для разных shortcut'ов, для меня более удобным вариантом является правый контрол (RCTL). и переключаю я модификатором не на английскую, а на украинскую раскладку (она у меня третья по счету). но сути это не меняет:
Код: Выделить всё
replace key <RCTL>
{
actions[Group1]=[ SetGroup(group=3) ],
actions[Group2]=[ SetGroup(group=2) ],
actions[Group3]=[ SetGroup(group=1) ]
};
буду благодарен за отзывы/критику/дополнения.