LINUX.ORG.RU

Виртуальная консоль (не иксовая)

 


0

1

Привет. Проблема вот в чём: отечественные kbd раскладки в /usr/share/kbd/keymaps/ru* имеют одну неприятную особенность - правый alt != левому alt (если текущая раскладка латиница, то правый alt+.. даёт кириллицу). Пробовал много, но оник все кривые. Так как пользуюсь emacs'ом, это неудобно. Навскидку попытался затереть все altgr строки в файле-раскладке, но успехом это не увенчалось. Как можно сделать два alt равноправными (любой alt+b в emacs - на слово назад, например)? Искать другую раскладку, править текущую, есть хитрая команда для переназначения?

Ну, я не знаю. Попробуй изменить через loadkeys. Например, AltGr привязана у меня на keycode 100. Заменим на Alt.

keycode 100 = Alt

Скармливаем это loadkeys и вроде как оба Alt должны выдавать Alt.

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

Спасибо, это работает.
А вот как это победить?: под иксами в emacs ctrl+/ делает отмену действия, в vt

control keycode 53 = Delete

53 - код '/'. Я затёр строку, но отмена не работает, рисует слеш (затёр по аналогии с другими клавишами - ctrl+n в раскладке не имеет отдельной строки, но переход на строку вниз происходит).

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

Увы, это ты не исправишь, потому что Emacs использует то. что ему предоставляет консоль. Такого символа - Control_slash нет, поэтому исправить keymap нужным образом ты не сможешь. Тут дело не в Emacs, в общем-то, так как он использует то, что дают. А slash в терминалах не использовался как управляющий символ. Рекомендую отказаться от использования C-/ в Emacs как undo в Иксах и в консоли, а привыкнуть к C-_ , что ничуть не хуже нажимается и будет работать везде. Я уже привык, это тоже быстро.

Да, ну и keycode 100 = Alt лучше вот так вот сделать:

keycode 100 = Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt
Zubok ★★★★★ ()
Ответ на: комментарий от Zubok

Да, так даже удобней, ctrl+/ в качестве Backspace много удобней, чем тянуться за ним в обычное место, всегда было неудобно, под иксами тоже поменяю.

Такого символа - Control_slash

так же как и ctrl_n, но оно работает. Просто интересно - почему второе работает а первое нет? Хотя и не столь важно уже.

keycode 100 = Alt ...

для чего?

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

так же как и ctrl_n, но оно работает. Просто интересно - почему второе работает а первое нет? Хотя и не столь важно уже.

Потому что linux console эмулирует железные терминалы, а там https://en.wikipedia.org/wiki/C0_and_C1_control_codes . Вот коды A-Z _ \ ^ [ ] и т. д. туда входят, а / не входит.

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

так же как и ctrl_n, но оно работает. Просто интересно - почему второе работает а первое нет? Хотя и не столь важно уже.

Если ты сделаешь по аналогии с Control_n, то loadkeys ругнется на Control_slash. так как такого символа нет:

В ответ на это:

keycode  53 = slash question period comma 
              Control_slash Control_question Control_period Control_comma 
              Meta_slash Meta_question Meta_slash Meta_question 
              Meta_Control_slash Meta_Control_question Meta_Control_slash Meta_Control_question

уже сразу получим «неизвестный keysym <Control_slash>», а вот <Control_n> известный. Ну и другие тоже, конечно.

keycode  49 = +n               +N
             +n               +N               
Control_n        Control_n        Control_n        
Control_n        Meta_n           Meta_N           
Meta_n           Meta_N           Meta_Control_n   ...
Zubok ★★★★★ ()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от pavlick

К слову, Delete там оказался тоже по историческим причинам. В таблицах набора C0 по ссылке в Википедии есть следующее:

                                        Not technically part of the C0 control
					character range, this was originally 
					used to mark deleted characters      
^? 127 	7F 	DEL 	␡ 	Delete	on paper tape, since any character   
					could be changed to all ones by punch
					holes everywhere. On VT100 compatible
	                                terminals, this is the character generated
	                                by the key labelled ⌫, usually called
	                                backspace on modern machines, and does
	                                not correspond to the PC delete key. 

Так как на этой кнопке есть знак вопроса, то ее сделали Delete, так как </> вообще не являлся управляющим символом, а <?>, хоть и не в стандарте тоже, был раньше с таким смыслом.

Zubok ★★★★★ ()
Последнее исправление: Zubok (всего исправлений: 1)