我想要将三个键盘修饰符(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)当然,我觉得这很可怕,我会假设这可以通过使用位移位或类似的方式更好地完成。怎样才能做得更好呢?
发布于 2020-10-03 11:29:44
而是分别为ctrl、alt、shift添加256、512和1024。然后在您正在使用的任何语言中使用and运算符(问题标签中缺少)来提取修饰符和代码。在C和许多语言中,运算符是&。因此,如果按下shift,则X & 1024不为零。X & 255是字符代码。
https://stackoverflow.com/questions/64179571
复制相似问题