Клавиатура не отправляет символы; он отправляет коды сканирования. Например, когда вы нажимаете клавишу с надписью «e» на типичной американской клавиатуре, она отправляет скан-код, который, по сути, говорит: «3-я клавиша слева во 2-м ряду буквенно-цифровых клавиш в основной группе». Этот скан-код преобразуется в символ (или, в общем, в символ ключа, подумайте о таких ключах, как «Print Screen») ядром (или каким-либо другим компонентом операционной системы) и, особенно в Linux, возможно, графическим подсистема.
Обычно операционная система или графическая подсистема предоставляют одну или несколько утилит, которые управляют таблицами преобразования; например, как в Windows, так и в Linux вы можете установить любое количество раскладок клавиатуры и легко переключаться между ними.
То, что получает приложение, зависит от соглашений операционной системы. В Windows консольные приложения получают символы, закодированные в соответствии с текущей кодовой страницей консоли, установленной командой chcp
; графические приложения получают ключевой символ, который обычно переводится в кодированный символ UTF-16. В Linux приложения обычно получают символы в кодировке UTF-8. Например, если я нажму клавишу с меткой ă
(СТРОЧНАЯ ЛАТИНСКАЯ БУКВА A С BREVE, U + 0103) с правильной раскладкой клавиатуры,
chcp 1250
получит один байт '\ xE3'
(227 в десятичной системе). chcp 852
получит один байт '\ xC7'
(199 десятичных знаков). '\ x03'
'\ x01'
(или как короткое целое число 0x103
). '\ xC4'
'\ x83'
( в кодировке UTF-8). '\ xC4'
'\ x83'
( в UTF -8 кодировка).(Обратите внимание, что под Windows я имею в виду Windows NT и ее преемники, такие как Windows XP, Windows Vista, 7 или 10. Windows 95 и т. Д. Представляют собой совершенно другую линию операционных систем, к счастью, больше не используемые.)
В Vim вы получаете два новых уровня перевода:
Вы можете установить карту перевода клавиатуры с набором раскладки клавиатуры
; см. : help 'keymap'
и : help mbyte-keymap
. Это помогает вводить текст на желаемом языке в системах, где вы не можете установить раскладку клавиатуры на уровне операционной системы.
Вы можете определить отображение с помощью команды : map
. См. : help: map
.