精易论坛

标题: 功能键状态问题 [打印本页]

作者: Ls60    时间: 2022-1-15 23:58
标题: 功能键状态问题
如题,功能键状态问题:按照图片里的顺序按功能键,发现不能正常输出我现在按的功能键
目前的情况就是:三个键任意顺序按是能正常输出的,但如果是两个功能键按图中顺序按下,会出现问题(红色标记)
123调试结果想要结果
CtrlShiftAltCtrl+Shift+Alt+Ctrl+Shift+Alt+
CtrlAltShiftCtrl+Shift+Alt+Ctrl+Shift+Alt+
ShiftCtrlAltCtrl+Shift+Alt+Ctrl+Shift+Alt+
ShiftAltCtrlCtrl+Shift+Alt+Ctrl+Shift+Alt+
AltShiftCtrlCtrl+Shift+Alt+Ctrl+Shift+Alt+
AltCtrlShiftCtrl+Shift+Alt+Ctrl+Shift+Alt+
CtrlShiftCtrl+Shift+Ctrl+Shift+
CtrlAltCtrl+Alt+Ctrl+Alt+
ShiftCtrl Shift+Ctrl+Shift+
ShiftAltShift+AltShift+Alt
AltCtrl Alt+Ctrl+Alt+
AltShift Alt+Shift+Alt+

我感觉这个是bug,求大神修正,最好不要直接使用功能键状态进行计算得出
下面是我的源码
  
窗口程序集名保 留  保 留备 注
窗口程序集_启动窗口   
子程序名返回值类型公开备 注
_热键1_按下某键逻辑型 
参数名类 型参考可空数组备 注
键代码整数型
功能键状态整数型
变量名类 型静态数组备 注
键名文本型 
监控功能键整数型 
如果真 (位与 (功能键状态, #Ctrl键状态 ) ≠ 0)
调试输出 (“Ctrl键状态”到文本 (位与 (功能键状态, #Ctrl键状态 )))
键名 = 键名 + “Ctrl+”
监控功能键 = 监控功能键 + 1

如果真 (位与 (功能键状态, #Shift键状态 ) ≠ 0)
调试输出 (“Ctrl键状态”到文本 (位与 (功能键状态, #Ctrl键状态 )))
键名 = 键名 + “Shift+”
监控功能键 = 监控功能键 + 2

如果真 (位与 (功能键状态, #Alt键状态 ) ≠ 0)
调试输出 (“Ctrl键状态”到文本 (位与 (功能键状态, #Ctrl键状态 )))
键名 = 键名 + “Alt+”
监控功能键 = 监控功能键 + 4

调试输出 (键名)


i支持库列表   支持库注释   
spec特殊功能支持库


作者: 超级萌新    时间: 2022-1-15 23:58
  
子程序名返回值类型公开备 注
__启动窗口_按下某键逻辑型 
参数名类 型参考可空数组备 注
键代码整数型
功能键状态整数型
变量名类 型静态数组备 注
键名文本型 
a整数型 
s整数型 
c整数型 
X整数型 
c = 位与 (功能键状态, #Ctrl键状态 )
s = 位与 (功能键状态, #Shift键状态 )
a = 位与 (功能键状态, #Alt键状态 )
X = c + s + a
判断 (键代码 = #Ctrl键 X = 2)
键名 = “Shift+Ctrl”
判断 (键代码 = #Ctrl键 X = 4)
键名 = “Alt+Ctrl”
判断 (键代码 = #Shift键 X = 4)
键名 = “Alt+Shift”
判断 (键代码 = #Ctrl键 X = 0)
键名 = “Ctrl”
判断 (键代码 = #Shift键 X = 0)
键名 = “Shift”
判断 (键代码 = #Alt键 X = 0)
键名 = “Alt”
判断 (X = 3)
键名 = “Ctrl+Shift”
判断 (X = 5)
键名 = “Ctrl+Alt”
判断 (X = 6)
键名 = “Shift+Alt”
判断 (X = 7)
键名 = “Ctrl+Alt+Shift”



调试输出 (X, 键代码, 键名)


i支持库列表   支持库注释   
spec特殊功能支持库


作者: 超级萌新    时间: 2022-1-16 00:39
不出的原因是  ctrl状态等于0  而你写的是 不等于0才输出,你可以改一下,因为这是不同的情况
不算bug

补充内容 (2022-1-16 00:43):
不好意思 是位与的问题  不是ctrl状态=0  0.0
作者: 汉族    时间: 2022-1-16 00:40
你这调试输出 都是复制的 你想需要啥 自己 下断点  F9   下段
作者: 汉族    时间: 2022-1-16 00:44
测试一下 状态键 对应 3 =  ctrl+shift ,     5=ctrl+alt ,    7=3个   
作者: Ls60    时间: 2022-1-16 00:50
汉族 发表于 2022-1-16 00:44
测试一下 状态键 对应 3 =  ctrl+shift ,     5=ctrl+alt ,    7=3个

一开始我就是这样试的,貌似不行。
ctrl不能接在shift后面
ctrl、shift不能接在alt后面,如图

作者: 汉族    时间: 2022-1-16 00:52
  
子程序名返回值类型公开备 注
__启动窗口_按下某键逻辑型 
参数名类 型参考可空数组备 注
键代码整数型
a整数型状态
调试输出 (a)
如果真 (a = 6 a = 7)
标题 = “3键”
如果真 (a = 4 a = 5)
标题 = “2键”
如果真 (a = 2 a = 3)
标题 = “1键”


i支持库列表   支持库注释   
spec特殊功能支持库

作者: 汉族    时间: 2022-1-16 00:54
  
如果真 (a = 6 a = 7)  ' ctrl+alt+shift
标题 = “3键”
如果真 (a = 4 a = 5)  ' ctrl+alt
标题 = “2键”
如果真 (a = 2 a = 3)  ' ctrl+shift
标题 = “1键”

没有先后顺序,这样写

补充内容 (2022-1-16 00:57):
这样测试好像也不太对,




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4