我的征尘是星辰大海。。。
The dirt and dust from my pilgrimage forms oceans of stars...
-------当记忆的篇章变得零碎,当追忆的图片变得模糊,我们只能求助于数字存储的永恒的回忆
作者:黄教授
手机视频列表
看似最平凡的键盘鼠标背后藏着底层编程真相
视频
音频
原始脚本
看似最平凡的键盘鼠标,原来藏着我们都忽略的底层真相。 CH340加CH9329硬件输入中文踩坑实录。 最近玩了一套 CH340加CH9329 硬件键鼠模拟设备,本来我真的以为这是一件再简单不过的小事。 插上线,发几条指令,让系统以为有人在敲键盘、点鼠标,不就轻轻松松搞定了吗?尤其是输入中文这种天天都在做的事情,谁会想到里面居然藏着一堆平时根本不会注意到的坑。 可真正从头到尾跑通一遍之后,我反而生出了很多很真实的感慨。 也忽然发现,我们每天用的最熟练、最普通的键盘鼠标,其实大多数人根本没有真正理解过它底层到底是怎么一回事。 一开始上手的时候,我还带着一种很想当然的心态,觉得这种基础输入设备能有多复杂?结果第一段代码跑下去就直接翻车了。 鼠标点下去之后就再也弹不起来,键盘按完之后就一直处于卡死的状态,整个界面乱跳,按键失灵,怎么救都救不回来。 后来才真正弄明白一件最基础却又最容易被忽略的事情。 我们平时手按一下鼠标,敲一下键盘,看起来只是一个动作。 可在系统和硬件的底层逻辑里,按下和释放是两个完全独立的事件,人自然会松手。 但机器模拟必须把两个动作都完整做一遍,少一个都会让系统误以为按键一直按住,最后直接卡死。 这件小事虽然简单,却一下子把我那种随便写写就能跑的心态彻底打醒了。 更让我颠覆认知的是中间关于中文输入的一段弯路。 最开始我也跟绝大多数人一样,被长期的使用习惯带着走,理所当然的觉得想要输入中文,就必须安装中文输入法,不然系统根本不可能识别汉字。 甚至还想过去模拟拼音、模拟选词这种完全绕远路的方式。 可一路往底层追问下去才发现,自己完全被上层的使用习惯给骗了。 现代操作系统早就原生支持 Unicode,任何语言、任何文字,在系统底层都只是一串对应的编码。 系统本身就可以直接识别并显示,和你有没有安装中文输入法没有任何关系。 输入法其实只是给人类使用的一层翻译工具,并不是系统运行的必要条件。 这件事也让我忽然意识到,很多我们以为天经地义的常识,其实只是长期使用形成的习惯,并不是底层真正的规则。 等到真正明白可以用 Unicode 的直接输入中文之后我又以为这下总该顺利了。 不就是按一个 Ctrl 加 Shift 加 U 的组合键,输入编码再回车就完事了吗?可现实是代码跑了一遍又一遍,系统始终只输出一串普通的字母和数字,完全不把它当成汉字处理。 后来才搞清楚,组合键这种东西真的没有我们想象的那么随便,时序上差一点点系统就完全不识别。 我们手动操作的时候,明明是先按住 Ctrl 加 Shift,按一下 U,看到下划线出现之后,就立刻松开修饰键,再正常输入编码。 最后回车确认,根本不可能一直按住 Ctrl 加 Shift 去输字母数字。 代码能跑通的关键,也只是精准模拟了这一段真实的操作节奏,而不是像很多人误解的那样,一直按住修饰键不放。 就这么一点点细微的差别,对了就通,不对就完全失效。 也让我第一次认真意识到,我们天天按的组合键背后其实有一套非常严谨的逻辑。 最后还有一个小麻烦,就是系统开启中文输入法的时候,会对 Unicode 的输入产生干扰,按键会被输入法拦截到选词框里,导致输出乱码。 而我们做的是非侵入式的硬件模拟,不能去修改对方电脑的设置,也不能安装任何软件,所以只能依靠硬件指令的方式提前清理状态,避开干扰,输入完成之后再恢复原状,全程不留下任何痕迹。 这也让我更加看明白一件事,中文输入法只是上层的一层包装,并不是底层输入必须遵守的规则。 真正稳定可靠的方式,反而是绕开这些上层工具,直接和系统底层对话。 整段经历走下来,其实技术难度并不算高,可给我的感触却特别深。 键盘和鼠标是每个人从第一次使用电脑就开始接触的东西,我们每天敲字点击,熟悉到不能再熟悉。 可真正理解底层逻辑的人其实并没有那么多。 有多少人知道按键是按下和释放两个事件?有多少人手动用过 Unicode 输入中文?有多少人想过没有输入法也能正常输出汉字?又有多少人真正理解组合键和输入法背后的原理?计算机发展到今天,界面越来越精致,功能越来越强大。 我们习惯了方便快捷的操作,却很少再去留意那些最基础、最底层、最朴素的东西。 这次踩坑让我最真实的感受就是,越平常越不起眼的东西,背后往往越不简单。 越是天天使用的基础功能,越值得我们静下心去看一眼它真正的样子。 很多时候不是事情本身有多难,而是我们太习惯想当然,忘了那些最根本的道理,其实一直都在最不起眼的地方。
修正脚本
看似最平凡的键盘鼠标,原来藏着我们都忽略的底层真相。 CH340加CH9329硬件输入中文踩坑实录。 最近玩了一套 CH340加CH9329 硬件键鼠模拟设备,本来我真的以为这是一件再简单不过的小事。 插上线,发几条指令,让系统以为有人在敲键盘、点鼠标,不就轻轻松松搞定了吗?尤其是输入中文这种天天都在做的事情,谁会想到里面居然藏着一堆平时根本不会注意到的坑。 可真正从头到尾跑通一遍之后,我反而生出了很多很真实的感慨。 也忽然发现,我们每天用的最熟练、最普通的键盘鼠标,其实大多数人根本没有真正理解过它底层到底是怎么一回事。 一开始上手的时候,我还带着一种很想当然的心态,觉得这种基础输入设备能有多复杂?结果第一段代码跑下去就直接翻车了。 鼠标点下去之后就再也弹不起来,键盘按完之后就一直处于卡死的状态,整个界面乱跳,按键失灵,怎么救都救不回来。 后来才真正弄明白一件最基础却又最容易被忽略的事情。 我们平时手按一下鼠标,敲一下键盘,看起来只是一个动作。 可在系统和硬件的底层逻辑里,按下和释放是两个完全独立的事件,人自然会松手。 但机器模拟必须把两个动作都完整做一遍,少一个都会让系统误以为按键一直按住,最后直接卡死。 这件小事虽然简单,却一下子把我那种随便写写就能跑的心态彻底打醒了。 更让我颠覆认知的是中间关于中文输入的一段弯路。 最开始我也跟绝大多数人一样,被长期的使用习惯带着走,理所当然地觉得想要输入中文,就必须安装中文输入法,不然系统根本不可能识别汉字。 甚至还想过去模拟拼音、模拟选词这种完全绕远路的方式。 可一路往底层追问下去才发现,自己完全被上层的使用习惯给骗了。 现代操作系统早就原生支持 Unicode,任何语言、任何文字,在系统底层都只是一串对应的编码。 系统本身就可以直接识别并显示,和你有没有安装中文输入法没有任何关系。 输入法其实只是给人类使用的一层翻译工具,并不是系统运行的必要条件。 这件事也让我忽然意识到,很多我们以为天经地义的常识,其实只是长期使用形成的习惯,并不是底层真正的规则。 等到真正明白可以用 Unicode 直接输入中文之后我又以为这下总该顺利了。 不就是按一个 Ctrl 加 Shift 加 U 的组合键,输入编码再回车就完事了吗?可现实是代码跑了一遍又一遍,系统始终只输出一串普通的字母和数字,完全不把它当成汉字处理。 后来才搞清楚,组合键这种东西真的没有我们想象的那么随便,时序上差一点点系统就完全不识别。 我们手动操作的时候,明明是先按住 Ctrl 加 Shift,按一下 U,看到下划线出现之后,就立刻松开修饰键,再正常输入编码。 最后回车确认,根本不可能一直按住 Ctrl 加 Shift 去输字母数字。 代码能跑通的关键,也只是精准模拟了这一段真实的操作节奏,而不是像很多人误解的那样,一直按住修饰键不放。 就这么一点点细微的差别,对了就通,不对就完全失效。 也让我第一次认真意识到,我们天天按的组合键背后其实有一套非常严谨的逻辑。 最后还有一个小麻烦,就是系统开启中文输入法的时候,会对 Unicode 的输入产生干扰,按键会被输入法拦截到选词框里,导致输出乱码。 而我们做的是非侵入式的硬件模拟,不能去修改对方电脑的设置,也不能安装任何软件,所以只能依靠硬件指令的方式提前清理状态,避开干扰,输入完成之后再恢复原状,全程不留下任何痕迹。 这也让我更加看明白一件事,中文输入法只是上层的一层包装,并不是底层输入必须遵守的规则。 真正稳定可靠的方式,反而是绕开这些上层工具,直接和系统底层对话。 整段经历走下来,其实技术难度并不算高,可给我的感触却特别深。 键盘和鼠标是每个人从第一次使用电脑就开始接触的东西,我们每天敲字点击,熟悉到不能再熟悉。 可真正理解底层逻辑的人其实并没有那么多。 有多少人知道按键是按下和释放两个事件?有多少人手动用过 Unicode 输入中文?有多少人想过没有输入法也能正常输出汉字?又有多少人真正理解组合键和输入法背后的原理?计算机发展到今天,界面越来越精致,功能越来越强大。 我们习惯了方便快捷的操作,却很少再去留意那些最基础、最底层、最朴素的东西。 这次踩坑让我最真实的感受就是,越平常越不起眼的东西,背后往往越不简单。 越是天天使用的基础功能,越值得我们静下心去看一眼它真正的样子。 很多时候不是事情本身有多难,而是我们太习惯想当然,忘了那些最根本的道理,其实一直都在最不起眼的地方。
back to top