📄 int.txt
字号:
(只在一定的时候内一直扫描不就得了.比如在1S里面有几次按按键.每一次做个标记.应该可以.到主程序一判断就知道了)
另一方法:
以下代码为按键服务程序
将KeyServer放在10ms的中断中,因为用10ms作为消抖时间,也可以是别的时间
void KeyServer()
{
if(KeyUp) //确认按键抬起
{
if(Key)
{
KeyDown=1;
KeyUp=0;
}
else
{
KeyUp=0;
KeyDown=0;
KeyDetect=0;
if(KeyTime) //如果第二次按下小于双击时间间隔,则确定是一次双击
{
KeyTime=DbClickDelay; //重新设置连续按键超时时间
KeyHits++; //按键次数加1
}
else //否则,这是第一次击键,设置双击时间,当双击超时则为单击
{
KeyTime=DbClickDelay;
}
}
}
if(KeyDown) //确认按键按下
{
if(Key)
{
KeyDelay++;
KeyDelay&=0x7F; //不让按键时间溢出
}
else
{
KeyUp=1;
KeyDown=0;
}
}
if(KeyTime) //如果超出双击间隔时间,则确定为一次单击
{
KeyTime--;
if(!KeyTime)
{
if (KeyHits)
DbClick =1;
else
Click=1;
}
}
if(KeyDetect) //检测到有按键,激活KeyDown事件
KeyDown=1;
if((!KeyDetect) && Key)
{
KeyDetect=1;
}
}
楼主拿去试试吧
如果DbClick == 1,则说明有连续多次按键,KeyHits中保存了连续按键次数
如果Click == 1,则说明是一次单击,KeyDelay中保存了这次单击按下的时间长度
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -