UEFI开发探索10 – 再论键盘

(请保留-> 作者: 罗冰   https://blog.csdn.net/luobing4365)

坐在旅馆的书桌旁,突然想起一句诗:戍客望边色,思归多苦颜。

也许是天气原因,也许是因为出差,心情总是不好。

上海的天空,灰蒙蒙的。一眼望去,都是淡墨色的乌云,不沉重,也透不过阳光。窗外的风很柔,茂盛的树叶一动不动。要不是偶尔传来的汽车声音,几乎要怀疑时间都停止了。

没有阳光的天气,让人心情比较压抑。

需要点爱好来扫去沉闷的心情:人生苦短,最乐编程!


UEFI下编写Option ROM,除了图形显示外(这是用户最直接能感受到的),最常用的就是键盘了。

我把上一篇博客中关于键盘的代码,以x64的方式再编译,拿到实际的环境中去测试。上次使用的ReadKeyStrokeEx来获取键盘输入,我测试的是一款AMI BIOS的环境,与联想开发的一款计算机。

很奇怪,程序不工作。

加上调试代码,提示SimpleTextInputEx的Protocol找不到。嗯,确实奇怪。

Spec中没有对这方面的说明。Console I/O protocol中提供了两种获取键盘的方式,除了SimpleTextInputEx外,还有SimpleTextInput可以使用。

我最关心的是键盘的处理,因此关注点放在了ReadKeyStrokeEx和ReadKeyStroke上。它们的区别,从函数说明上很容易看出来:

图1 两个API函数比较

ReadKeyStroke所用的数据结构EFI_INPUT_Key是ReadKeyStrokeEx所用EFK_KET_DATA的子集。EFI_KEY_DATA中多了EFI_KEY_STATE的字段,这是用来标志Shift、Ctrl等键状态的。

不知道为什么实际环境中不支持ReadKeyStrokeEx,偷懒吗?

这次的代码比较简单,直接把ReadKeyStroke运行起来,重新编个函数封装一下。运行情况就不截图了,就是在上次的代码上改的,输出信息差不多。

Gitee地址:https://gitee.com/luobing4365/uefi-exolorer
项目代码位于:/04 ReadKey下。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

luobing4365

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值