[第14天] 高分辨率和键盘输入

好久没有更新了。最近搞怎么黑人搞上瘾了。所以没有时间更新这个了。当然不能半途而废。

今天的主要内容是更新分辨率和接收键盘输入。分辨率这部分我早就实现了。因为原来320×200的分辨率看着实在恶心。而且这部分也不难,主要涉及硬件,所以直接跳过。

基本原理:

键盘的原理是什么?学过电子的应该知道,TM的映射那么多键需要很多线,而且还有组合这不是坑爹吗?我也不是很清楚,概括来说就是有个单片机一直在扫描电路,看看有没有接通,接通了就传给计算机相应代码。具体可以看这个。搞过下面的那个板子的同学肯定也能理解原理。但是如何做到这么多键位我就有点糊涂了。

danpianji

按下键盘的按键后,硬件会传入一个代码,这个代码代表什么字符就需要系统判断。一般的映射是Original XT scan code set。按下A就传如1E,松开传入9E。我也实现了这个。

代码实现:

其中接收部分之前就已经完成。就是传入到FIFO里。然后要做的就是解释代码。为了方便起见,用个数组。下面就是主要代码。

参考:

  1. OS dev
  2. Computer engineering
  3. linux atkbd.c
  4. how keyboard works