为键盘修改器和ASCII代码创建位掩码

问题描述

我想将三个键盘修饰符(CTRL,ALT,SHIFT)和所按键的ASCII码编码为一个值。这自然属于位掩码类别。 我可以这样做的一种方法是,发件人将每个密钥编码如下:

CTRL: 1000
ALT: 10000
SHIFT: 100000
KeyCode: 1-255

例如,如果我单击所有修改器+ ascii表中的最后一个键,则会得到: 100000 + 10000 + 1000 + 255 =111255。然后可以在接收方进行减法运算,并检查数字是否低于0,如下所示:

has_shift = X - 100000 < 0
has_alt = X - 10000 < 0
has_ctrl = X - 1000 < 0
if has_shift
   X -= 100000
if has_alt
   X -= 10000
if has_ctrl
   X -= 1000
keyCode = X (the remainder)

当然,我发现这太可怕了,并认为可以使用移位或在球场上进行某些操作来更好地做到这一点。怎么可能做得更好?

解决方法

相反,分别为ctrl,alt和shift加256、512和1024。然后使用您使用的任何语言(缺少问题标记)使用运算符提取修饰符和代码。在C语言和许多语言中,该运算符为&。因此,如果按下shift键,X & 1024不为零。 X & 255是字符代码。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...