按键精灵左键按下和d起的监听。

按键精灵左键按下和d起的监听。,第1张

Private Declare Function GetKeyState Lib"user32"(ByVal nVirtKey As Long) As Integer

Do

    Select Case GetKeyState(65)

    Case -127

        LeftDown 1

        Delay 1000

        LeftUp 1

    Case -128

        LeftDown 1

        Delay 1000

        LeftUp 1

    End Select

Loop

在Unix/Linux下,并没有提供int kbhit(void)这个函数。在linux下开发控制台程序时,需要自己编写kbhit()实现的程序了。下面是kbhit在Unix/Linux下的一个实现。用到了一种终端 *** 作库termios。

下面是头文件kbhith:

QUOTE:

#ifndef KBHITh

#define KBHITh

void init_keyboard(void);

void close_keyboard(void);

int kbhit(void);

int readch(void);

#endif

下面式源程序kbhitc:

QUOTE: #include "kbhith"

#include <stdioh>

#include <termiosh>

static struct termios initial_settings, new_settings;

static int peek_character = -1;

void init_keyboard()

{

tcgetattr(0,&initial_settings);

new_settings = initial_settings;

new_settingsc_lflag &= ~ICANON;

new_settingsc_lflag &= ~ECHO;

new_settingsc_lflag &= ~ISIG;

new_settingsc_cc[VMIN] = 1;

new_settingsc_cc[VTIME] = 0;

tcsetattr(0, TCSANOW, &new_settings);

}

void close_keyboard()

{

tcsetattr(0, TCSANOW, &initial_settings);

}

int kbhit()

{

unsigned char ch;

int nread;

if (peek_character != -1) return 1;

new_settingsc_cc[VMIN]=0;

tcsetattr(0, TCSANOW, &new_settings);

nread = read(0,&ch,1);

new_settingsc_cc[VMIN]=1;

tcsetattr(0, TCSANOW, &new_settings);

if(nread == 1)

{

peek_character = ch;

return 1;

}

return 0;

}

int readch()

{

char ch;

if(peek_character != -1)

{

ch = peek_character;

peek_character = -1;

return ch;

}

read(0,&ch,1);

return ch;

}

试用后会明白,一个按键会有多个功能,那么在Android系统中是如何表示的呢?其实对于Android系统,每次按键只会有一个唯一「键值」响应,使用起来感觉会模模糊糊的,但是其实对于系统来说是很清晰的。

AVRCP全称(Audio/Video Remote Control Profile),是蓝牙协议中的一个profile。从名字上就可以看出主要应用于Audio/Video控制。每个按键并不是独立的,上-曲/下一曲是在正在播放音乐的时候才会有效,即才会向Android发送「键值」。

基于按键从Linux到Android分析具体对于的键值:

Linux扫描码 功能 映射字串 Android键值

00c8 200 开始放音乐 MEDIA_PLAY KEYCODE_MEDIA_PLAY

00c9 201 停止放音乐 MEDIA_PAUSE KEYCODE_MEDIA_PAUSE

00a3 163 下一曲 MEDIA_NEXT KEYCODE_MEDIA_NEXT

00a5 165 上-曲 MEDIA_PREVIOUS KEYCODE_MEDIA_PREVIOUS

Android应用代码,完整测试应用:TeskKey。

总结:1号键会交替发送KEYCODE_MEDIA_PLAY/KEYCODE_MEDIA_PAUSE;2/3号键会在播放音乐时分别发送KEYCODE_MEDIA_PREVIOUS/KEYCODE_MEDIA_NEXT。如果想要把蓝牙耳机上的按键利用起来,可以在接收到KEYCODE_MEDIA_PLAY时播放 无声音乐 以使能2/3号键。这样就能完整接收3种键值了自行控制了。这个具体自行设计(测试代码已经更新包含了)。

以上就是关于按键精灵左键按下和d起的监听。全部的内容,包括:按键精灵左键按下和d起的监听。、linux下怎么实现监听键盘按键、Android怎样监听蓝牙耳机的按键事件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/10088390.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存