标准输出和按键

标准输出和按键

在控制台中,如果我按下一个键,某个中断控制器会将该键的代码发送到 CPU,CPU 会查看某个表,然后通过将某个字符打印到 stdout 来表示该按键。但是,键盘发送的是该键的 ASCII 码,还是只是一些标准化代码?由于有这么多语言和额外字符,我猜操作系统必须根据用户选择的方案进一步将其代码转换为某些字符。我问这个问题,是因为我来自捷克共和国,我们使用一些标准 ASCII 码中不存在的字符。所以我在想,如果我将这个字符输入控制台,然后打印它,比如在 C++ 中使用 cin 和 cout,并且我已将语言环境设置为捷克,stdin 实际上必须将我按下的字符的一些非 ASCII 代码发送到输入流。我是对的吗?

答案1

对于第一个问题:键盘发送扫描码, 不是ASCII或者统一码

然后,计算机上的软件会解释扫描码,例如启动期间的 BIOS 或操作系统。例如,在 Linux 中,扫描码和移位状态由内核键映射解释,内核键映射将键码转换为 16 位数字,这些数字通常是 Unicode/ASCII 字符。

相关内容