Неккоректное поведение Caps_Lock в системной консоли при отображении кириллицы в верхнем регистре

Aivar
Походу топ читаете по диагонали. Никакие правки файла раскладки не помогут если используется юникод.
читал нормально, правда линк не смотрел, поленился. Но лично я имею ввиду не конкретно ter-u20b, а вообще, например, тот же cyr-sun16 и др.
А правка нормального FONT, думаю, может помочь, хотя 100% уверенности нет - не знаю как и что там изменили, что Caps_Lock в ru не работает как клавиша модификатор. Если там можно прописать, то заработает. Вот только не уверен, что эту функцию у данного кей-кода можно прописать.

I3eceJIbIu
если я правильно понял, то нужно править в моем случае /usr/share/kbd/keymaps/ru.map.gz?
Смотри вывод
cat /etc/vconsole.conf | grep KEYMAP
Ну а проверить/убедиться фактически можно и так
strings /usr/lib/locale/locale-archive | grep -i ru
если вывод будет не пустой, то так оно и есть.
Можешь проверить любую другую, например, эту
strings /usr/lib/locale/locale-archive | grep -i ru1
и вывод будет пустой.

Aivar
Ну нет у них такого бага! И на проблемы юникода им на*рать!
А вот тут я полностью согласен - они внесли изменения, в us все нормально, а на ru им наплевать.
Ошибки не исчезают с опытом - они просто умнеют
Посмотрел я раскладку ru и действительно в ru Caps_Lock для переключения регистра не прописан.
Например, вот что записано для символа кирилицы а и А CYRILLIC для Shift (т.е. при нажатом Shift получим большую А)
                        keycode  33 = +f
        shift           keycode  33 = +F
altgr                   keycode  33 = U+0430        # CYRILLIC SMALL LETTER A
altgr   shift           keycode  33 = U+0410        # CYRILLIC CAPITAL LETTER A
И если ввести код U+0430, то получим маленькую а, если ввести код U+0410 , то получим большую А
А вот для Caps_Lock там этого ничего не прописано, имеется только одна эта строчка - keycode 58 = Caps_Lock
А потому если есть желание задействовать Caps_Lock для переключения регистра, то это все нужно прописывать для каждой буковки.
Очень большая и нудная работа, а выгоды, имхо, не вижу.
Если я, конечно, правильно понял смысл - особо не вникал, а потому мог что то и неверно истолковать.

UPD - для ввода кода нужно нажать Ctrl+Shift+u появится подчеркнутая u и вводим код, например, 0410 получаем А (не работает в xterm и на форуме)
Ошибки не исчезают с опытом - они просто умнеют
altgr keycode 33 = U+0430 # CYRILLIC SMALL LETTER A
altgr shift keycode 33 = U+0410 # CYRILLIC CAPITAL LETTER A

Согласно этим строкам, по нажатию правой Alt+F должна выводиться прописная русская буква "а", а выводится "f". Аналогично при нажатии правый Alt+Shift+F должна выводиться заглавная русская "А", а выводится "F".
Будто altgr связана со сменой раскладки.
I3eceJIbIu
Согласно этим строкам, по нажатию правой Alt+F должна выводиться прописная русская буква "а", а выводится "f". Аналогично при нажатии правый Alt+Shift+F
Насколько я понял, первые 2-е строчки это вывод keycode 33 в раскладке us (это и есть символ f/F , посмотри на клавишу - us - f, а в ru - а)
Вторые 2-е строчки, где указано CYRILLIC , это вывод keycode 33 в раскладке ru
Привожу вывод xev (но он в Х-ах увеличивает keycode на 8)
keycode 41 (keysym 0x66, f)
keycode 41 (keysym 0x6c1, Cyrillic_a)

UPD - забыл отметить - altgr - насколько я понял, означает вывод данной клавиши после смены раскладки на ru
Ошибки не исчезают с опытом - они просто умнеют
Видимо, пока сам не залезу в ядро и не исправлю - проблема так и не будет решена. А с кодингом у меня проблемы ((...Только собираюсь начать изучать Си. Так что только в следующей жизни, а в лучшем случае - на пенсии, решу данную проблему ))
Всем спасибо за участие!
Тему можно закрывать.
vasek
Посмотрел я раскладку ru и действительно в ru Caps_Lock для переключения регистра не прописан.
Прописан:
Aivar
$ zgrep -i caps /usr/share/kbd/keymaps/i386/qwerty/ru.map.gz
                        keycode  58 = Caps_Lock
Вы же понимаете, что современная клавиатура - это не просто матрица кнопок, это самодостаточное устройство со своим микроконтроллером, где функция Caps_Lock генерируется аппаратно. Можно пытаться назначать этот режим в раскладке, т.е. симулировать зажатый shift, но это должно сказываться только на символьных клавишах, минуя цифровые, другие модификаторы и т.д. К тому же этот режим нужно приостанавливать если shift нажат вместе с символьной клавишей. Как вы себе это представляете??? Ну бред же!

I3eceJIbIu
Будто altgr связана со сменой раскладки.
Можете назначить любое действие. Читать тут.

I3eceJIbIu
Видимо, пока сам не залезу в ядро и не исправлю - проблема так и не будет решена.
Аминь! Об этом писалось еще на первой странице трэда.
Aivar
Прописан:
Прописан, но насколько я понимаю, прописано для раскладки us (конечно, должно работать и для ru ). А вот как прописать/изменить для ru, до меня не доходит - не сталкивался с таким. Если иммитировать Shift, согласен, это не дело. Заинтересовался этим только по одной причине - мне это не известно и интересно как это можно исправить.
А влезать во все это не вижу смысла. Да и вообще считаю для ru это не нужным делом - есть Shift и его достаточно.
Ошибки не исчезают с опытом - они просто умнеют
vasek
прописано для раскладки us
Нет там us/ru, есть кейкоды, которые в данном случае, если включен модификатор AltGr, интерпретируются как символы кириллицы вместо латиницы. Я давненько сделал (вернее переделал) для себя национальную раскладку, но редко пользуюсь виртуальной консолью. Зачем? Это так, аварийный режим... Посему предлагаю прекратить спор с вердиктом: "Не работает - значит не надо!" )
Aivar
Посему предлагаю прекратить спор с вердиктом: "Не работает - значит не надо!" )
Принимаю и писал уже - не вижу смысла в этом (на ru в консоле обычно писать нечего).

Aivar
Нет там us/ru, есть кейкоды, которые в данном случае, если включен модификатор AltGr, интерпретируются как символы кириллицы вместо латиницы.
Это мне понятно. Просто не понятно, а потому и интересно, что нужно изменить, чтобы Caps Lock заработал в ru. Поверхностный гуглеж ответа не дал.
Ошибки не исчезают с опытом - они просто умнеют
 
Зарегистрироваться или войдите чтобы оставить сообщение.