键盘和鼠标按下的事件怎么c/c++获取键盘事件

js鼠标按键事件和键盘按键事件用法实例汇总
转载 &更新时间:日 11:02:11 & 作者:kp12345
这篇文章主要介绍了js鼠标按键事件和键盘按键事件用法,结合实例形式总结分析了JavaScript针对鼠标与键盘事件的常用操作技巧,需要的朋友可以参考下
本文实例讲述了js鼠标按键事件和键盘按键事件用法。分享给大家供大家参考,具体如下:
keydown,keyup,keypress:属于你的键盘按键
mousedown,mouseup:属于你的鼠标按键
当按钮被按下时,发生 keydown 事件,
keyup是在用户将按键抬起的时候才会触发的,
完整的 key press 过程分为两个部分:1. 按键被按下;2. 按键被松开。
当用户在这个元素上按下鼠标键的时候,发生mousedown
当用户在这个元素上松开鼠标键的时候,发生mouseup
1. 鼠标的哪个按键被点击
&script type="text/javascript"&
function whichButton(event)
if (event.button==2)
alert("你点击了鼠标右键!")
alert("你点击了鼠标左键!")
&body onmousedown="whichButton(event)"&
&p&请单击你鼠标的左键或右键试试&/p&
2. 当前鼠标的光标坐标是多少
&script type="text/javascript"&
function show_coords(event)
x=event.clientX
y=event.clientY
alert("X 坐标: " + x + ", Y 坐标: " + y)
&body onmousedown="show_coords(event)"&
&p&在此文档中按下你鼠标的左键看看!&/p&
3. 被按下键的unicode码是多少
&script type="text/javascript"&
function whichButton(event)
alert(event.keyCode)
&body onkeyup="whichButton(event)"&
&p&在此文档中按下你键盘上的某个键看看&/p&
4. 当前鼠标的光标相对于屏幕的坐标是多少
&script type="text/javascript"&
function coordinates(event)
x=event.screenX
y=event.screenY
alert("X=" + x + " Y=" + y)
&body onmousedown="coordinates(event)"&
点击你鼠标的左键
5. 当前鼠标的光标坐标是多少
&script type="text/javascript"&
function coordinates(event)
alert("X=" + x + " Y=" + y)
&body onmousedown="coordinates(event)"&
点击你鼠标的左键
6. shift键是否按下
&script type="text/javascript"&
function isKeyPressed(event)
if (event.shiftKey==1)
alert("shit键按下了!")
alert("shit键没有按下!")
&body onmousedown="isKeyPressed(event)"&
&p&按下shit键,点击你鼠标的左键&/p&
7. 当前被点击的是哪一个元素
&script type="text/javascript"&
function whichElement(e)
if (!e) var e = window.event
if (e.target) targ = e.target
else if (e.srcElement) targ = e.srcElement
if (targ.nodeType == 3) // defeat Safari bug
targ = targ.parentNode
tname=targ.tagName
alert("你点击了 " + tname + "元素")
&body onmousedown="whichElement(event)"&
&p&在这里点击看看,这里是p&/p&
&h3&或者点击这里也可以呀,这里是h3&/h3&
&p&你想点我吗??&/p&
&img border="0" src="../myCode/btn.gif" width="100" height="26" alt="pic"&
PS:这里再为大家提供一个关于JS事件的在线工具,归纳总结了JS常用的事件类型与函数功能:
javascript事件与功能说明大全:
更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》、《》、《》及《》
希望本文所述对大家JavaScript程序设计有所帮助。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具1、问题
通过一个死循环将读取键盘对应的设备文件将触发键盘事件在屏幕上打印出来,按esc退出程序
代码是在unbuntu10.04编译执行通过的
2、input_event描述
在Linux内核中,input设备用input_dev结构体描述,使用input子系统实现输入设备驱动的时候,驱动的核心工作就是向系统报告按键、触摸屏、键盘、鼠标等输入事件(event,通过input_event结构体描述),不再需要关心文件操作接口,因为Input子系统已经完成了文件操作接口
linux/input.h 这个文件定义了event事件的结构体,API和标准按键的编码等;
struct input_event {
&&&& //按键时间
&&& __u16 //事件类型
&&& __u16 //要模拟成什么按键
&&& __s32//是按下还是释放
};
type,指事件类型,常见的事件类型有:
EV_KEY, 按键事件,如键盘的按键(按下哪个键),鼠标的左键右键(是非击下)等;
EV_REL, 相对坐标,主要是指鼠标的移动事件(相对位移);
EV_ABS, 绝对坐标,主要指触摸屏的移动事件
code:事件的代码.
如果事件的类型代码是EV_KEY,该代码code为设备键盘代码.0~127为键盘上的按键代码
关于按键代码的定义,部分如下所示:
#define KEY_RESERVED&&&& 0
#define KEY_ESC& 1
#define KEY_1&&& 2
#define KEY_2&&& 3
#define KEY_3&&& 4
#define KEY_4&&& 5
#define KEY_5&&& 6
#define KEY_6&&& 7
#define KEY_7&&& 8
#define KEY_8&&& 9
#define KEY_9&&& 10
#define KEY_0&&& 11
#define KEY_MINUS&&& 12
#define KEY_EQUAL&&& 13
#define KEY_BACKSPACE&&& 14
#define KEY_TAB& 15
#define KEY_Q&&& 16
#define KEY_W&&& 17
#define KEY_E&&& 18
#define KEY_R&&& 19
#define KEY_T&&& 20
value:
事件的值.如果事件的类型代码是EV_KEY,当按键按下时值为1,松开时值为0;如果事件的类型代码是EV_REL,value的正数值和负数值分别代表两个不同方向的值.
3、相关代码
key_simulator.c
#include
int main ()
char ret[2];
struct input_
keys_fd = open ("/dev/input/event2", O_RDONLY);
if (keys_fd &= 0)
printf ("open /dev/input/event2 device error!\n");
if (read (keys_fd, &t, sizeof (t)) == sizeof (t))
if (t.type == EV_KEY)
if (t.value == 0 || t.value == 1)
printf ("key %d %s\n", t.code,
(t.value) ? "Pressed" : "Released");
if(t.code==KEY_ESC)
close (keys_fd);
}
4、注意问题
1)不同的类型计算机,设备对应event信息会有所不同
可以用cat获得的设备对应event信息:
# cat /proc/bus/input/devices
I: Bus=0019 Vendor=0000 Product=0001 Version=0000
N: Name="Power Button"
P: Phys=LNXPWRBN/button/input0
S: Sysfs=/devices/LNXSYSTM:00/LNXPWRBN:00/input/input0
U: Uniq=
H: Handlers=kbd event0
B: EV=3
B: KEY= 0 0
I: Bus=0017 Vendor=0001 Product=0001 Version=0100
N: Name="Macintosh mouse button emulation"
P: Phys=
S: Sysfs=/devices/virtual/input/input1
U: Uniq=
H: Handlers=mouse0 event1
B: EV=7
B: KEY= 0 0 0 0 0 0
B: REL=3
I: Bus=0011 Vendor=0001 Product=0001 Version=ab41
N: Name="AT Translated Set 2 keyboard"
P: Phys=isa0060/serio0/input0
S: Sysfs=/devices/platform/i8042/serio0/input/input2
U: Uniq=
H: Handlers=kbd event2
B: EV=120013
B: KEY=4 1 feffffdf ffefffff ffffffff fffffffe
B: MSC=10
B: LED=7
I: Bus=0011 Vendor=0002 Product=0005 Version=0000
N: Name="ImPS/2 Generic Wheel Mouse"
P: Phys=isa0060/serio1/input0
S: Sysfs=/devices/platform/i8042/serio1/input/input3
U: Uniq=
H: Handlers=mouse1 event3
B: EV=7
B: KEY= 0 0 0 0 0 0
B: REL=103
I line:这行包含身份信息,显示了 bus type是 3 (usb), vendor, product, version等信息。
N line:这行包含了名字信息。
P line:这行包含了物理设备信息。
H line: 这行包含了与设备关联的 handler drivers。
B line: 这些行包含了显示设备能力的一些位域 (bitfield)。
我的键盘对应的事件类型是event2
2)open /dev/input/event2 device error
需要使用sudo或者改变设备的属性
如下:
sudo ./key_simulator
或者
chmod 777 /dev/input/event2
本文欢迎转载,转载请注明作者与出处
作者:流星
出处:http://blog.sina.com.cn/staratsky
浏览 21465
论坛回复 /
(0 / 5834)
浏览: 305284 次
来自: 北京
能否截一些图?
怎么添加目录映射?
使用apache ActiveMQ深入企业级程序设计百度网盘: ...
你在servlet中进行处理,还不是一个请求,和原来一样的效果 ...
看到下面明白了 谢谢
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'后使用快捷导航没有帐号?
Qt键盘、鼠标事件的处理 版权声明该文章原创于Qter开源社区(),作者yafeilinux,转载请注明出处!
导语事件是对各种应用程序需要知道的由应用程序内部或者外部产生的事情或者动作的通称。对于初学者,总会对Qt中信号和事件的概念混淆不清。其实,记住事件比信号更底层就可以了。比如说,我们用鼠标按下界面上的一个按钮,它会发射clicked()单击信号,但是,它怎么知道自己被按下的呢,那就是通过鼠标事件处理的。这里可以看到,鼠标事件比信号更底层。& & 在Qt中处理事件有多种方法,不过最常用的是重写Qt事件处理函数。这里我们就以鼠标事件和键盘事件为例来进行简单的介绍。
环境是:Windows 7 + Qt 4.8.1 +Qt Creator 2.4.1
目录一、鼠标事件二、键盘事件
正文一、鼠标事件 1.新建Qt Gui应用,项目名称为“myEvent”,基类更改为QWidget,类名为Widget。
2.完成项目创建后,在设计模式向界面上拖入一个Push Button。
3.在widget.h文件添加鼠标按下事件处理函数声明: protected:& & void mousePressEvent(QMouseEvent *);
4.到widget.cpp文件中先添加头文件包含: #include &QMouseEvent& 然后在下面添加函数的定义: void Widget::mousePressEvent(QMouseEvent *e){& &ui-&pushButton-&setText(tr(&(%1,%2)&).arg(e-&x()).arg(e-&y()));} 这里的arg()里的参数分别用来填充%1和%2处的内容,arg()是QString类中的一个静态函数,使用它就可以在字符串中使用变量了。其中x()和y()分别用来返回鼠标光标所在位置的x和y坐标值。这样,当鼠标在界面上点击时,按钮就会显示出当前鼠标的坐标值。效果如下图所示。
除了鼠标按下事件,还有鼠标释放、双击、移动、滚轮等事件,其处理方式与这个例子是相似的。
二、键盘事件 1.首先在widget.h中添加protected函数声明: void keyPressEvent(QKeyEvent *);
2.然后到widget.cpp中添加头文件包含: #include &QKeyEvent&
3.最后添加键盘按下事件处理函数的定义: void Widget::keyPressEvent(QKeyEvent *e){& &int x = ui-&pushButton-&x();& &int y = ui-&pushButton-&y();& &switch (e-&key())& &{& &case Qt::Key_W : ui-&pushButton-&move(x, y-10);& &case Qt::Key_S : ui-&pushButton-&move(x, y+10);& &case Qt::Key_A : ui-&pushButton-&move(x-10, y);& &case Qt::Key_D : ui-&pushButton-&move(x+10, y);& &}}
这里我们先获取了按钮的位置,然后使用key()函数获取按下的按键,如果是指定的W、S、A、D等按键时则移动按钮。所有的按键都在Qt::Key枚举变量中进行了定义,大家可以在帮助文档中进行查看。
结语除了键盘按下事件,常用的还有键盘释放事件,这里就不再举例。如果想了解更多事件方面的知识,可以参考一书的第6章的内容。
涉及到的源码:
本帖子中包含更多资源
才可以下载或查看,没有帐号?
这个例子实现起来不对啊
是谁激活mousePressEvent(QMouseEvent *e) 这个函数
我要从哪里才能获得QMouseEvent 事件
程序里面都没有说清楚,无法激活事件,这个函数写了等于没写
事件是Qt内部实现的,我们只需要实现该事件发生后的处理即可。&
重写mousePressEvent(QMouseEvent *e) ,但是不能激活这个事件,怎么弄
可以先下载源码测试下效果。&
是我弄错了,mousePressEvent(QMouseEvent *e) 是鼠标右击事件,不是左击事件
如果在一个场景中有多个对象,对待每个对象,都要触发鼠标事件。要用到二维图像的QGraphicsView框架。最经通过俄罗是方块程序的学习、研究。对QGraphicsView了解了一点。但总觉得抓不住要点。。没法随心所欲的使用。。
dreamer 发表于
如果在一个场景中有多个对象,对待每个对象,都要触发鼠标事件。要用到二维图像的QGraphicsView框架。最经 ...
嗯,图形视图框架是有点乱,把《Qt Creator快速入门》里面的相关章节好好看一遍,然后把《Qt及Qt Quick开发实战精解》里面的方块游戏自己写一遍,应该就没有问题了。
请问,有两个QGraphicsItem对象,它们有一部分重叠。我的鼠标事件是点击一个对象时,这个对象就移动一段距离,现在我碰到的问题是,当点击l两个对象的重叠部分时,两个对象都移动了,如何仅使一个对象移动????
dreamer 发表于
请问,有两个QGraphicsItem对象,它们有一部分重叠。我的鼠标事件是点击一个对象时,这个对象就移动一段距 ...
这个需要重写这个对象的鼠标事件,让它处理完就不再向下传播。
yafeilinux 发表于
这个需要重写这个对象的鼠标事件,让它处理完就不再向下传播。
谢谢,问题解决了。。。原因是我在鼠标事件函数的末尾有重新调用了本身。
这一讲学习了,但是yafeilinux老师有个地方没有转过弯来,希望给解释一下:
ui-&pushButton-&setText(tr(&(%1,%2)&).arg(e-&x()).arg(e-&y()));
这个函数式将鼠标点击空白区域的坐标给显示到按钮上,但是“%1,%2”这个和我们c语言c++中的输出不太一样啊,我们是&%d,%d&&&,那我们要是输出整形数据,字符串数据,double,float类型数据怎么办呢?
还有个问题是后面的& & 点arg(e-&x())点arg(e-&y()) 这里怎么使用了两个点啊,不应该和前面的“%1,%2”对齐吗?& &
主题帖子积分c语言 获取鼠标键盘事件_百度知道
c语言 获取鼠标键盘事件
[高分:100分]请问c语言如何获取鼠标键盘事件?这----应该不是一个太难的问题。但我的要求是:1.关键代码应有注释(我是来学c语言的,不是来复制粘贴的!)2.最好能做到不使用死循环(...
[高分:100分]请问c语言如何获取鼠标键盘事件? 这----应该不是一个太难的问题。但我的要求是: 1.关键代码应有注释(我是来学c语言的,不是来复制粘贴的!) 2.最好能做到不使用死循环(注意:这里的关键词是“最好”,即你也可以做不到) 3.请自行编译通过...(限定在TC2.0,
***注意vc、tc3.0、tc++等不算***)
不难吧...(答的好加分+++)
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
匿名用户知道合伙人
我估计你分数给的在高也没人回答。来个这样的代码太麻烦了。而且百度金币用处也不大。 不过,我可以写几个鼠标函数给你参考一下。 首先了解一下鼠标的中断。 _AX=0x01 表示显示光标 _AX=0x02 停止显示光标 _AX=0x03 读取光标位置与案件 _AX=0x04 设置光标位置 所以啊。根据这四个中断,有以下几个函数 ---------------------------------------------------- void MouseOn(void)//鼠标光标显示 {
_AX = 0x01;
geninterrupt(0x33); } ---------------------------------------------------- void MouseOff(void)//鼠标光标隐藏 {
_AX = 0x02;
geninterrupt(0x33); } --------------------------------------------------- void MouseSetXY(int x,int y)//设置当前位置 {
_AX = 0x04;
geninterrupt(0x33); } --------------------------------------------------- int LeftPress(void)//鼠标左键按下 {
_AX = 0x33;
geninterrupt(0x33);
return(_BX&1); } ----------------------------------------------------- 鼠标右键的应该也会了吧。不过要return(_BX&2); ----------------------------------------------------- void MouseGetXY(void)//得到当前位置 {
_AX = 0x33;
geninterrupt(0x33);
MouseX = _CX;
MouseY = _DX; } --------------------------------------------------------------- 最好要复制粘贴,打字打得手疼。
匿名用户知道合伙人
匿名用户知道合伙人
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。怎样捕获 Silverlight 中的鼠标键盘事件? - 知乎有问题,上知乎。知乎作为中文互联网最大的知识分享平台,以「知识连接一切」为愿景,致力于构建一个人人都可以便捷接入的知识分享网络,让人们便捷地与世界分享知识、经验和见解,发现更大的世界。3被浏览427分享邀请回答support.microsoft.com/kb/312777private void axWebBrowser1_DocumentComplete(object sender, AxSHDocVw.DWebBrowserEvents2_DocumentCompleteEvent e)
mshtml.HTMLD
doc = (mshtml.HTMLDocument)axWebBrowser1.D
mshtml.HTMLDocumentEvents2_Event iE
iEvent = (mshtml.HTMLDocumentEvents2_Event)
iEvent.onclick += new mshtml.HTMLDocumentEvents2_onclickEventHandler(ClickEventHandler);
private bool ClickEventHandler(mshtml.IHTMLEventObj e)
此处处理单击事件
}赞同 1 条评论分享收藏感谢收起赞同 添加评论分享收藏感谢收起写回答

我要回帖

更多关于 键盘鼠标没反应怎么办 的文章

 

随机推荐