读书人

Windows系统底层驱动对按上Enter键的解

发布时间: 2013-02-27 10:48:11 作者: rapoo

Windows系统底层驱动对按下Enter键的解释是?
在书上及网上看到:Windows平台的换行符实际上是由'\r''\n'两个字符组成,我用notepad测试了一下,按下Enter键后文件添加了这两个字符,但是我想请问:到底是Windows对Enter键键击的驱动解释就是'\r''\n',还是notepad程序监听键盘键击,发现按下的是Enter键而向文件末尾加上两个字符的?也就是说按下Enter键仅是一些文本文件会将其解释为两个字符,而其它的程序实际上只是按下了'\r'字符?(可能我说的很乱,因为我不知道怎么表达它,如果大侠能大致看懂或猜懂请告知一二)
[解决办法]
\r是程序自己加上去的。驱动会把按键的虚拟键位码传给用户层程序,这个是后又两种可能,有些软件自己翻译虚拟键位码,可能就直接把VK_ENTER翻译成了\r\n两个字符;有的软件直接用系统的翻译功能,VK_ENTER会被翻译成\n,然后软件看到\n需要自己把\r加上。

\r\n序列只有Windows的文本流里使用,并不是任何情况下\n前面都必须有\r的,所以这个显然不能做到底层。
[解决办法]
这一点的确不太和谐.

可移植性强的程序应该能够兼容\n以及\r\n。
[解决办法]
Windows文件行尾就是\r\n。。如果按照LZ的理论,Linux下行尾是\n又如何解释呢?
[解决办法]
按照楼主的逻辑,richedit里按回车的话加的不是符合RTF规范的\par,HTML编辑器里输入回车也不会出来<P>或者<BR>了。

没有驱动层解释键盘输入这回事,不同程序对键盘的处理不同。

读书人网 >C语言

热点推荐