стандартный вывод и нажатие клавиши

420

когда в консоли, если я нажимаю клавишу, какой-то контроллер прерываний отправляет код этой клавиши в CPU, который просматривает какую-то таблицу и представляет это нажатие клавиши, печатая символ в stdout. Но посылает ли клавиатура код ASCII этой клавиши или просто какой-то стандартизированный код? Так как языков так много и лишних символов, ОС должна и далее переводить свой код в какой-то символ в соответствии с выбранной пользователем схемой. Я спрашиваю, потому что я из Чехии, и мы используем некоторые символы, которых нет в стандартном коде ASCII. Поэтому я подумал, что если я введу этот символ в консоль, а затем напечатаю его, скажем, в C ++, используя cin и cout, и я установил locale на чешский язык, stdin на самом деле должен отправить не-ASCII-код символа, который я нажал для ввода потока. Я прав?

0
Какая платформа? Windows, Linux или Mac OS X? Peter Mortensen 14 лет назад 0

1 ответ на вопрос

2
Peter Mortensen

По первому вопросу: клавиатуры отправляют сканкоды, а не ASCII или Unicode .

Программное обеспечение на компьютере затем интерпретирует коды сканирования, например, BIOS во время загрузки или операционную систему. Например, в Linux коды сканирования и состояние сдвига интерпретируются картами ключей ядра, которые преобразуют коды ключей в 16-битные числа, которые обычно являются символами Unicode / ASCII.