Encoding 程序实际上是如何接收字符输入的?从扫描代码到最终原始输入位

Encoding 程序实际上是如何接收字符输入的?从扫描代码到最终原始输入位,encoding,character-encoding,scancodes,low-level-io,Encoding,Character Encoding,Scancodes,Low Level Io,所以,我的问题很简单:在用户“输入”(从物理键盘或任何其他方式)字符键之后,程序如何接收原始输入位 我的意思是,我知道在程序接收到字符作为原始比特后,字符编码是如何工作的,但我不清楚这个比特序列最初是如何出现的 我读了一点,但这对我的Google fu来说是一个艰难的搜索。操作系统似乎从输入设备(通常是键盘)接收扫描代码,使用字符映射和键盘布局将其映射到编码,然后将生成的位序列传递给程序。我说得对吗?如果是这样,我唯一缺少的部分是: 键盘布局如何定义扫描代码的字符 对应于?使用Unicode代码

所以,我的问题很简单:在用户“输入”(从物理键盘或任何其他方式)字符键之后,程序如何接收原始输入位

我的意思是,我知道在程序接收到字符作为原始比特后,字符编码是如何工作的,但我不清楚这个比特序列最初是如何出现的

我读了一点,但这对我的Google fu来说是一个艰难的搜索。操作系统似乎从输入设备(通常是键盘)接收扫描代码,使用字符映射和键盘布局将其映射到编码,然后将生成的位序列传递给程序。我说得对吗?如果是这样,我唯一缺少的部分是:

  • 键盘布局如何定义扫描代码的字符 对应于?使用Unicode代码点?特定于操作系统的内部 桌子

  • 其次,程序是否定义了它使用的字符编码 是否希望在编译时输入(来自操作系统)?真的吗


  • 作为汇编程序课程的一部分,有一个非常好的关于如何从键盘读取的低级描述。它覆盖了从按键到CPU的整个管道。你可以找到整个课程和关于键盘输入的章节。

    作为汇编程序课程的一部分,有一个关于如何从键盘读取的非常好的低级描述。它覆盖了从按键到CPU的整个管道。你可以找到整个课程和关于键盘输入的章节