LINUX.ORG.RU

xkb

 ,


0

2

Если кто с этим сталкивался помогите пожалуйста разобраться. я пытаюсь определить новый тип клавиши в котором 3 уровня 1 базовый, 2 и 3 они работают с клавишами Shift_L и Shift_R и пытаюсь повесь это на пробел.

partial default xkb_types "shift_space" {
	type "NEW_SPACE" {
		modifiers = Mod1 + Mod3;
		map[None] = Level1;
		map[Mod1] = Level2;
		map[Mod3] = level3;
		level_name[Level1] = "Base";
		level_name[Level2] = "Left Shift";
		level_name[Level3] = "Right Shift";
	};
};
А когда описываю сам пробел показываю в нем эти 2 модификатора.
partial alphanumeric_keys xkb_symbols "space_shift" {
	key <SPCE> { type = "NEW_SPACE" , [ space , ISO_First_Group , ISO_Last_Group ] };
	modifier_map Mod1 { Shift_L };
	modifier_map Mod3 { Shift_R };
};
Он говорит

Warning: Type «NEW_SPACE» has 3 levels, but <SPCE> has 4 symbols Ignoring extra symbols

из-за строки в файле symbols/colemak:

key <SPCE> { [ space, space, space, nobreakspace ] };
Почему мое определение клавиши пробела не перезаписало предыдущее (в файле colemak)? Это предупреждение сохраняется до тех пор пока не закоментируешь строку.

Error: Shift_R added to symbol map for multiple modifiers Using Mod3, ignoring Shift.

А здесь говорит что новое определение конфликтует со старым. Но у клавиши пробела вроде только один уровень. смотрел файл symbols/us(basic) там пробел не описан. Помогите, пожалуйста, разобраться с этой кашой.

с кашей сложновато.
Я правильно понимаю, что при удалении строки описания пробела из раскладки колемака вы получаете работающий вариант желанной реализации?

LiBer ★★★ ()
Ответ на: комментарий от LiBer

не, там просто предупреждение. как я понял 4 значение записывается null'ом. я не правильно понимаю как работает shift. надо читать ман до просветления. вот почему мое определение пробела не перезаписывает, то что указано в раскладке colemak, ведь в этой раскладке тоже записи которые перезаписаны из раскладки us. вот это вопрос... хотя если честно все это нытье неосилятора... пойду читать ман.

SmilePlz ()

key <SPCE> { type = «NEW_SPACE» , [ space , ISO_First_Group , ISO_Last_Group ] };

Не очень хочется разбираться, мозги не варят сейчас. Сделай так:

key <SPCE> { type = «NEW_SPACE» , [ space , ISO_First_Group , ISO_Last_Group, nobreakspace ] };

Zubok ★★★★★ ()
Ответ на: комментарий от SmilePlz

не знаю будет ли полезно, но вот как у меня сделано переключение по левому альту+пробел на первую раскладку и правому+пробел на последнюю.
в первой раскладке определено:
key <SPCE> { [ space, space, ISO_Last_Group, space] };


во второй(последней)
key <SPCE> {[ space, ISO_First_Group, ISO_Last_Group ],
type[Group1] = «PC_ALT_LEVEL2»
};

LiBer ★★★ ()
Последнее исправление: LiBer (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.