LINUX.ORG.RU

Перебиндить backspace, tab и enter в X'ах — возможно ли?


0

0

Сабж. Про xmodmap знаю, но может ли он переназначить эти действия на комбинации клавиш? Или другой какой способ имеется?

Хочу заменить backspace, tab и enter на консольные ^H, ^I и ^M, ибо тягаться за ними (особенно за backspace) неудобно жутко :(

Да, через XKB вроде как можно. Теоретически даже очень просто:

--[ xkb/compat/c-X-func ]--
	default partial xkb_compatibility {
		interpret m + AllOf(Control) {
			action = RedirectKey(key=<RTRN>,clearmods=Control);
		};
	};
---------------------------

--[ XF86Config ]--
	Option "XkbCompat" "...+c-X-func"
------------------

но у меня это дело почему-то не работает.
Т.е. без +AllOf(Control) очень даже работает ;-), но так не интересно.
М.б. имеет смысл задать этот вопрос в xfree86.internationalization. 


Другой вариант -- завести хитрый тип для этих клавиш.
Некрасиво, требует точной подгонки напильником по месту, но работает:

--[ xkb/types/c-X-func ]--
	type "CTRL_ALPHABETIC" {
		modifiers = Shift+Lock+Control;
		map[None] = Level1;
		map[Shift] = Level2;
		map[Lock] = Level2;
		map[Control] = Level3;
		level_name[Level1] = "Base";
		level_name[Level2] = "Caps";
		level_name[Level3] = "Ctrl";
	};
--------------------------

--[ xkb/symbols/чего-то ]--
    key	<AB07> {type="CTRL_ALPHABETIC",
    		[	U006D,	U004D,  Return	],	// m M RET
		[	U044C,	U042C,	Return	],	// ь Ь RET
		[	U044C,	U042C,	Return	]};	// ь Ь RET
---------------------------

--[ XF86Config ]--
	Option "XkbTypes" "...+c-X-func"
------------------

т.е. находишь _свою_ раскладку на m и смотришь чтобы Return попал на тот
Level3 (или какой там получится) который был введён в CTRL_ALPHABETIC.

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

Спасибо большое за наводку, на днях попробую.

putpixel
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.