搜档网
当前位置:搜档网 › QT 篇键盘、鼠标事件的处理

QT 篇键盘、鼠标事件的处理

QT  篇键盘、鼠标事件的处理
QT  篇键盘、鼠标事件的处理

键盘、鼠标事件的处理

事件是对各种应用程序需要知道的由应用程序内部或者外部产生的事情或者动作的通称。对于初学者,总会对Qt中信号和事件的概念混淆不清。其实,记住事件比信号更底层就可以了。比如说,我们用鼠标按下界面上的一个按钮,它会发射clicked()单击信号,但是,它怎么知道自己被按下的呢,那就是通过鼠标事件处理的。这里可以看到,鼠标事件比信号更底层。

在Qt中处理事件有多种方法,不过最常用的是重写Qt事件处理函数。这里我们就以鼠标事件和键盘事件为例来进行简单的介绍。

一、鼠标事件

1.新建Qt Gui应用,项目名称为“myEvent”,基类更改为QWidget,类名为Widget。

2.完成项目创建后,在设计模式向界面上拖入一个Push Button。

3.在widget.h文件添加鼠标按下事件处理函数声明:

protected:

void mousePressEvent(QMouseEvent*);

4.到widget.cpp文件中先添加头文件包含:

#include

然后在下面添加函数的定义:

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

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);break;

case Qt::Key_S:ui->pushButton->move(x,y+10);break;

case Qt::Key_A:ui->pushButton->move(x-10,y);break;

case Qt::Key_D:ui->pushButton->move(x+10,y);break;

}

}

这里我们先获取了按钮的位置,然后使用key()函数获取按下的按键,如果是指定的W、S、A、D等按键时则移动按钮。所有的按键都在Qt::Key枚举变量中进行了定义,大家可以在帮助文档中进行查看。

除了键盘按下事件,常用的还有键盘释放事件,这里就不再举例。如果想了解更多事件方面的知识,可以参考《Qt Creator快速入门》一书的第6章的内容。

adb shell中模拟键盘鼠标事件

Android自动化测试初探-5:再述模拟键盘鼠标事件(adb shell 实现) 2010-07-28 17:01 上一篇博文中讲述了通过Socket编程从外部向Emulator发送键盘鼠标模拟事件,貌似实现细节有点复杂。其实Android还有一种更简单的模拟键盘鼠标事件的方法,那就是通过使用adb shell 命令。 1. 发送键盘事件: 命令格式1:adb shell input keyevent “value” 其中value以及对应的key code如下表所列: KeyEvent Value KEYCODE Comment KEYCODE_UNKNOWN 1 KEYCODE_MENU 在SDK2.1的模拟器中命令失效,sendevent命令可行 2 KEYCODE_SOFT_RIGHT 3 KEYCODE_HOME 4 KEYCODE_BACK 5 KEYCODE_CALL 6 KEYCODE_ENDCALL

KEYCODE_0 8 KEYCODE_1 9 KEYCODE_2 10 KEYCODE_3 11 KEYCODE_4 12 KEYCODE_5 13 KEYCODE_6 14 KEYCODE_7 15 KEYCODE_8 16 KEYCODE_9 17 KEYCODE_STAR

KEYCODE_POUND 19 KEYCODE_DPAD_UP 20 KEYCODE_DPAD_DOWN 21 KEYCODE_DPAD_LEFT 22 KEYCODE_DPAD_RIGHT 23 KEYCODE_DPAD_CENTER 24 KEYCODE_VOLUME_UP 25 KEYCODE_VOLUME_DOWN 26 KEYCODE_POWER 27 KEYCODE_CAMERA 28 KEYCODE_CLEAR

VC 模拟鼠标和键盘输入

VC 模拟鼠标和键盘输入 - 天下 - 博客频道 - https://www.sodocs.net/doc/77181798.html, 模拟鼠标点击: 1、这里是鼠标左键按下和松开两个事件的组合即一次单击: mouse_event (MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 ) 2、模拟鼠标右键单击事件: mouse_event (MOUSEEVENTF_RIGHTDOWN | MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0 ) 3、两次连续的鼠标左键单击事件构成一次鼠标双击事件: mouse_event (MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 ) mouse_event (MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 ) 4、使用绝对坐标 MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE, 500, 500, 0, 0 需要说明的是,如果没有使用MOUSEEVENTF_ABSOLUTE,函数默认的是相对于鼠标当前位置的点,如果dx,和dy,用0,0表示,这函数认为是当前鼠标所在的点--直接设定绝对坐标并单击 mouse_event(MOUSEEVENTF_LEFTDOWN, X * 65536 / 1024, Y * 65536 / 768, 0, 0); mouse_event(MOUSEEVENTF_LEFTUP, X * 65536 / 1024, Y * 65536 / 768, 0, 0); 其中X,Y分别是你要点击的点的横坐标和纵坐标 模拟键盘输入: [cpp] void EnterString(const char* text) { bool bShift = false; size_t length = strlen(text); for(size_t index = 0;index < length;index++) { int val = text[index]; if(val >= 97 && val <= 122) //小写a-z { val -= 32; bShift = false; } else if(val >= 65 && val <= 90) //大写A-Z { bShift = true;

JAVA模拟键盘鼠标操作

//可以在eclipse下直接运行的示例程序: package key_robot; import java.awt.*; import java.awt.event.*; import javax.swing.JOptionPane; public class key_robot { public key_robot() { } // 鼠标单击,要双击就连续调用 private static void pressMouse(Robot r, int m, int delay) { r.mousePress(m); r.delay(10); r.mouseRelease(m); r.delay(delay); } // 键盘输入方法 private static void pressKeys(Robot r, int[] ks, int delay) { for (int i = 0; i < ks.length; i++) { r.keyPress(ks[i]); r.delay(10); r.keyRelease(ks[i]); r.delay(delay); } } public static void main(String[] args) throws Exception { final Robot rb = new Robot(); new Thread() { public void run() { rb.delay(2000); // 模拟回车 rb.keyPress(KeyEvent.VK_ENTER); rb.keyRelease(KeyEvent.VK_ENTER); } }.start();

模拟键盘鼠标事件

android中的MotionEvent 及其它事件处理 2014-09-18 08:47 7386人阅读评论(0) 收藏举报 MotionEvent对象 当用户触摸屏幕时将创建一个MotionEvent对象。MotionEvent包含关于发生触摸的位置和时间等细节信息。MotionEvent对象被传递到程序中合适的方法比如View对象的onTouchEvent()方法中。在这些方法中我们可以分析MotionEvent对象那个,以决定要执行的操作。 MotionEvent对象是与用户触摸相关的时间序列,该序列从用户首次触摸屏幕开始,经历手指在屏幕表面的任何移动,直到手指离开屏幕时结束。手指的初次触摸(ACTION_DOWN 操作),滑动(ACTION_MOVE操作)和抬起(ACTION_UP)都会创建MotionEvent对象。所以每次触摸时候这三个操作是肯定发生的,而在移动过程中会产生大量事件,每个事件都会产生对应的MotionEvent对象记录发生的操作,触摸的位置,使用的多大压力,触摸的面积,合适发生,以及最初的ACTION_DOWN和时发生等相关的信息。 在设置事件时我们有2种设置的方式,一种是委托式一种是回调式。第一种就是将事件的处理委托给监听器处理,你可以定义一个View.OnTouchListener接口的子类作为监听器,其中有onTouch()方法。而第二种是重写View类自己本身的onTouchEvent方法,也就是控件自己处理事件。onTouch方法接收一个MotionEvent参数和一个View参数,而onTouchEvent方法仅接收MotionEvent参数。这是因为监听器可以监听多个View 控件的事件。通过MotionEvent方法getation可以得到该Motionevent具体是哪个操作如ACTION_DOWN。 1、MotionEvent中getAction()与getActionMasked()的区别 如果我们在监听Ontouch()里面测试的时候会发现,这两个返回值竟然是一样的。查询API 我们发现ACTION_MASK说明是:Constant Value: 255 (0x000000ff)。也就是哦0Xff. public final intgetAction () Return the kind of action being performed. Consider using getActionMasked() and getActionIndex() to retrieve the separate masked action and pointer index. 翻译意思大概是返回action的类型,考虑使用getActionMasked()和getActionIndex()来获得单独的经过掩码的action和触控点的索引. public final intgetActionMasked () Return the masked action being performed, without pointer index information. Use getActionIndex() to return the index associated with pointer actions.

总结Selenium WebDriver中一些鼠标和键盘事件的使用

本文将总结Selenium WebDriver 中的一些鼠标和键盘事件的使用,以及组合键的使用,并且将介绍WebDriver 中没有实现的键盘事件(Keys 枚举中没有列举的按键)的扩展。举例说明扩展Alt+PrtSc 组合键来截取当前活动窗口并将剪切板图像保存到文件。 在使用Selenium WebDriver 做自动化测试的时候,会经常模拟鼠标和键盘的一些行为。比如使用鼠标单击、双击、右击、拖拽等动作;或者键盘输入、快捷键使用、组合键使用等模拟键盘的操作。在WebDeriver 中,有一个专门的类来负责实现这些测试场景,那就是Actions 类,在使用该类的过程中会配合使用到Keys 枚举以及Mouse、Keyboard、CompositeAction 等类。 其次,在实际测试过程中,可能会遇到某些按键没办法使用Actions、Keys 等类来实现的情况。比如通过使用Alt+PrtSc 组合键来实现截取屏幕当前活动窗口的图像,在Keys 枚举中,因为没有枚举出PrtSc 键,所以没办法通过Action 的KeyDown(Keys) 来模拟按下这个动作。 再次是在自动化测试中,可能会遇到一些附件、文件上传的场景,或者是多文件上传,这些在Selenium2.0 之后,可以直接使用WebElement 类的sendKeys() 方法来实现。 下面就分别介绍这些情况的具体使用。 鼠标点击操作 鼠标点击事件有以下几种类型: 清单1. 鼠标左键点击 Actions action = new Actions(driver);action.click();// 鼠标左键在当前停留的位置做单击操作 action.click(driver.findElement(https://www.sodocs.net/doc/77181798.html,(element)))// 鼠标左键点击指定的元素 清单2. 鼠标右键点击 Actions action = new Actions(driver); action.contextClick();// 鼠标右键在当前停留的位置做单击操作 action.contextClick(driver.findElement(https://www.sodocs.net/doc/77181798.html,(element)))// 鼠标右键点击指定的元素 清单3. 鼠标双击操作 Actions action = new Actions(driver); action.doubleClick();// 鼠标在当前停留的位置做双击操作

USB模拟鼠标与键盘使用说明

第一章使用说明 1.1 功能简介 本例程是用实验板来模拟鼠标或键盘,即将相关程序下载到单片机,并将学习板与电脑通过U口连接后,本学习板可以当作U口的鼠标或者键盘来用。 其中能够模拟实现的鼠标功能为:鼠标左移、右移、上移、下移,鼠标左键按下和右键按下。 能够模拟实现的键盘功能为:数字1和2的键入、SHIFT和ALT功能键的键入、大小写切换和小键盘数字键功能的键入。 本例程共用到学习板上的六个按键,位于矩阵键盘左上角的S6、S7、S10、S11、S14和S15。 1.2鼠标的信息说明 将UsbMouse.hex文件下载到单片机中,且之后保证USB1口(位于学习板左上方)与电脑的U口处于连接状态(USB1口即为TX-1C开发板的U口)。 稍等片刻,便会先后在电脑屏幕的右下角出现下面两个提示(此提示只在第一次安装时出现): 图1.1 系统发现新硬件提示 图1.2安装成功提示 右键单击“我的电脑”,选中“管理”项,点击并进入,在其左侧的项目栏里点击“设备管理器”,便会发现其中多了如下一个设备,也就是我们的TX-1C开发板所模拟的鼠标,如图1.3所示。

图1.3 设备描述显示 双击“USB人体学输入设备”,会弹出如图1.4和图1.5的属性描述 图1.4 属性描述---常规选项卡

图1.5 属性描述---详细信息选项卡 1.3 鼠标的使用说明 在使用USB模拟鼠标与键盘功能之前,请确保将芯片PDIUSBD12左侧的两根插针用跳帽连接起来(这两根跳帽是用于芯片PDIUSBD12向单片机发出中断的连接线)!!! 总共使用到的矩阵键盘中的六个按键的功能分别如表1.1所示 据此, 面上实验一下,体会自制鼠标的乐趣。 1.4 键盘的相关说明 将文件夹“键盘实例”中的UsbKeyboard.hex文件下载到单片机中,并通过USB 线将TX-1C学习板与电脑U口连接后,同样会出现如图1.1.、图1.2类似的安装信息(也是在第一次安装时提示,以后都不再提示,除非更改程序中的相关设备描述信息,让电脑以为是一个以前从未连接过的设备连接了。)同样的打开设备管理器,也可以找到如图1.3、图1.4、图1.5类似的信息。在此就不再赘述了。下面列出相关按键的功能,如表1.2所示。

第三章常见的鼠标键盘交互方法

TrackBall模式 Trackball模式是跟踪球模式,具体来说,就是物体的中心位置不变,而改变视点的位置,从而使模型随着鼠标的移动绕着中心位置旋转。 对于鼠标移动需要计算相应的视点(照相机)的运动情况,在osg中,通过TrackballManipulator::calcMovement()来实现,并且对于不同的鼠标事件,分别进行如下的操作: 1.按下鼠标的左键,则旋转照相机。 2.按下鼠标中间键或者同时按下鼠标的左键和与右键,则改变物体的中心位置,也即对物体进行平移操作。 3.按下鼠标的右键,则对模型进行缩放。 在按下鼠标的左键从而旋转照相机时,这里主要模拟了一个跟踪球技术,球的半径理想情况下应该基于旋转中心到鼠标所指的物体上某点的距离,但是为了简化处理,一般情况下,球的半径TRACKBALLSIZE可以预先给定,也能达到比较好的模拟效果。具体实现过程如下:首先分别记录两次鼠标事件的坐标的(x1,y1)和(x2,y2),根据x坐标的最小值X min和最大值X max,以及y坐标的最小值Y min和最大值Y max,对(x1,y1)和(x2,y2)坐标进行规范化,转化到(-1,1)之间,不妨假设新的坐标点为p1和p2,然后通过将p1和p2投影到跟踪球上,从而获取相应的z 坐标。这样,以球的中心为起始点,计算出的球上的两个点为终点,可以确定两个向量,不妨记作P1和P2,那么旋转轴axis = P2^ P1,旋转的弧度为:t = ||(P2- P1)|| / (2.0*TRACKBALLSIZE),为了避免产生某些不可操纵的结果,必须先将t规范到(-1,1)之间,再将其转化为角度angles,然后将照相机绕着axis旋转angles的角度,从而实现了对照相机的旋转操作。 在osg的实现中,该跟踪球并不是一个正规的球体,而是进行了一定的变形,在中心附近是一个半径为TRACKBALLSIZE的球体,而在离中心达到一定距离时(小于球的半径TRACKBALLSIZE),该球体被扭曲成了四个双曲面。 在Trackball模式的具体实现时,有许多细节问题,如 1.首先需要将世界坐标系转化到视点坐标系,这可以通过先将中心平移到视点后根据照相机的up、物体的中心以及视点重新确立坐标系。在osg中,由void TrackballManipulator::computePosition(const osg::Vec3& eye,const osg::Vec3& center,const osg::Vec3& up)实现。 2.模型的旋转通过鼠标控制,因此需要判断鼠标是否移动,具体实现时,可以预先自定义一个速率v,分别记录下连续两次鼠标事件的时间和位置,计算出间隔的时间?t和移动的距离?s,如果?s > v * ?t,就可以认为鼠标移动,并根据鼠标的具体事件(如按下的是左键、右键等)进行相应的操作。在osg中,由bool TrackballManipulator::isMouseMoving()实现。 3.需要有一个函数接收不同的鼠标和键盘事件,从而做出相应的处理。在osg中,由bool TrackballManipulator::handle(const GUIEventAdapter& ea,GUIActionAdapter& us)实现,如果事件被正确处理,返回true,否则返回false。其中GUIEventAdapter接受来自GUI的更新事件,GUIActionAdapter则是对这些GUI事件的回应。 Quaternion The quaternions are members of a noncommutative division algebra first invented by William Rowan Hamilton. The idea for quaternions occurred to him while he was walking along the Royal

硬件模拟键盘鼠标,键鼠控制器KMC3

硬件模拟键盘鼠标(键鼠控制器KMC3) 1 概述 键鼠控制器KMC3,是一款通过RS232接口控制,输出标准键盘鼠标信号的设备,即可通过计算机的com口来控制它完成进行模拟硬件键盘鼠标的操作。主要应用场合为:彩票速打、游戏辅助、计算机自动控制、远程控制、多机同步操作等。 2 产品特点 速度快:键盘鼠标信号的模拟,每秒可达100个以上,只要串口能够将指令发送出来,它就能够将指令转换为键盘或者鼠标信号发送出去, 性能稳定:所有元器件均选用工业级器件,可保证长期稳定运行,决无误码与丢码现象。 兼容性好:输入端为标准RS232接口,可直接与计算机的com口连接;输出端为PS2接口,可直接连计算机的PS2键盘、鼠标接口,亦可通过转接线 转为usb接口。 控制简单:串口控制,指令协议简单,发送指令无需考虑时间间隔,连续发送即可;无需握手信号验证,只要串口能发送出去,就能保证转换成功。 与手工操作键盘鼠标完全相同:该设备完全模拟手工操作键盘鼠标的特点,通过com口控制指令转发出来的键盘鼠标信号与普通手工操作键盘鼠标没 有任何区别。 3 工作原理 键鼠控制器KMC3内嵌单片机,通过单片机完成RS232串口信号到键盘鼠标信号的转换过程;控制指令部分,键盘的指令根据手工操作特性,分为键盘的通码、断码两种,鼠标的指令部分根据手工操作鼠标的特点分为按键、移动等几个指令了;输出的键盘鼠标信号部分,是单片机软件模拟的符合PS2协议的信号,实际输出到计算机之后,其效果与硬件键盘、鼠标效果完全相同,同时该设备能够模拟键盘鼠标对计算机发出的各种控制指令进行响应;如果直接将设备连接到计算机的ps2接口,则计算机会默认该设备为普通的键盘鼠标设备,而无需

android详细解释键盘和鼠标事件

https://www.sodocs.net/doc/77181798.html,/jinhaijian/article/details/6013985 目的:通过全面的分析Android的鼠标和键盘事件。了解Android中如何接收和处理键盘和鼠标事件,以及如何用代码来产生事件。 主要学习内容: 1. 接收并处理鼠标事件:按下、弹起、移动、双击、长按、滑动、滚动 2. 接收并处理按键事件:按下、弹起 3. 模拟鼠标/按键事件 1. Android事件 现代的用户界面,都是以事件来驱动的来实现人机交换的,而Android上的一套UI控件,无非就是派发鼠标和键盘事件,然后每个控件收到相应的事件之后,做相应的处理。如Button 控件,就只需要处理Down、move、up这几个事件,Down的时候重绘控件,move的时候一般也需要重绘控件,当up的时候,重绘控件,然后产生onClick事件。在Android中通过实现OnClickListener接口的onClick方法来实现对Button控件的处理。 对于触摸屏事件(鼠标事件)有按下有:按下、弹起、移动、双击、长按、滑动、滚动。按下、弹起、移动(down、move、up)是简单的触摸屏事件,而双击、长按、滑动、滚动需要根据运动的轨迹来做识别的。在Android中有专门的类去识别,android.view.GestureDetector。 对于按键(keyevent),无非就是按下、弹起、长按等。 2. Android事件处理 Android手机的坐标系是以左上定点为原点坐标(0,0), 向右为X抽正方形,向下为Y抽正方向。 2.1 简单触摸屏事件 在Android中任何一个控件和Activity都是间接或者直接继承于android.view.View。一个View对象可以处理测距、布局、绘制、焦点变换、滚动条,以及触屏区域自己表现的按键

VC模拟鼠标键盘输入

vc模拟键盘输入 keybd_event(VK_LWIN, 0, 0 ,0); keybd_event('M', 0, 0 ,0); keybd_event('M', 0, KEYEVENTF_KEYUP ,0); keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP,0); 方法1: HWND hwnd=::FindWindow(0, "文档1"); //假设你要找的窗口标题为“文档1”CWnd::FromHandle(hwnd)->SetForegroundWindow(); ::PostMessage(hwnd, WM_KEYDOWN, VK_ESCAPE, 0L); //发送ESC按下的键盘消息 方法2:这里以向记事本程序发送Ctrl+s按键消息为例: CWnd *pWnd = FindWindow("Notepad", NULL); if (pWnd->GetSafeHwnd()) { pWnd->ShowWindow(SW_NORMAL); pWnd->SetForegroundWindow(); keybd_event(VK_CONTROL, 0, 0, 0); keybd_event('S', 0, 0, 0); keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0); keybd_event('S', 0, KEYEVENTF_KEYUP, 0); } 对于其他程序,关键就是要找到就收消息的窗口句柄。 ::mouse_event(1) 模拟鼠标动作API函数mouse_event,它可以实现模拟鼠标按下和放开等动作。 VOID mouse_event( DWORD dwFlags, // 鼠标动作标识。 DWORD dx, // 鼠标水平方向位置。 DWORD dy, // 鼠标垂直方向位置。 DWORD dwData, // 鼠标轮子转动的数量。 DWORD dwExtraInfo // 一个关联鼠标动作辅加信息。 ); 其中,dwFlags表示了各种各样的鼠标动作和点击活动,它的常用取值如下:MOUSEEVENTF_MOVE 表示模拟鼠标移动事件; MOUSEEVENTF_LEFTDOWN 表示模拟按下鼠标左键; MOUSEEVENTF_LEFTUP 表示模拟放开鼠标左键; MOUSEEVENTF_RIGHTDOWN 表示模拟按下鼠标右键; MOUSEEVENTF_RIGHTUP 表示模拟放开鼠标右键; MOUSEEVENTF_MIDDLEDOWN 表示模拟按下鼠标中键;

)掌握 WINDOWS 操作系统中键盘和鼠标的基本操作;备课讲稿

)掌握W I N D O W S操作系统中键盘和鼠标的 基本操作;

步骤/方法 1 一:基本硬件组成简介 (1)计算机的基本组成 计算机从外观上来看主要有主机和显示器组成,计算机系统由运算器,控制器,存储器,输入设备和输出设备五大部分组成。运算器和控制器集成在一起又称为中央处理器简称为CPU;存储器分为内部存储器和外部存储器,内部存储器简称为内存(RAM),外部存储器简称为外存如硬盘,光盘,移动磁盘等;输入设备是用来从外界向计算机系统输入数据的唯一途径,常见的输入设备有鼠标,键盘,扫描仪等;输出设备是计算机将处理结果显示给用户的,常见的输出设备有显示器,绘图仪,音响等。 (2)主机的组成 主机由主板,内存, CPU,硬盘,光驱,数据线和电源。 (3)主机面板按钮 开机按钮(Power),复位键(Rest)死机时按一下该键系统将重 新启动。 (4)面板接口 计算机主机前面板上一般有USB和音响和话筒接口,BUS接口又称为即插即用接口(不用关闭计算机系统,在开机状态可以直接插),USB设备均可以使用此接口和计算机相连接,常见的USB设备有USB键盘,USB鼠标,USB 口打印机,U盘,移动硬盘等,此外还可以用来和数码相机,手机相连接。用

户要特别注意的是我们称USB设备为即插即用设备但是向移动类存储磁盘最好不要直接拔出,因为这样容易损坏磁盘导致数据丢失。正确的方法是:单击桌面右下角的图标,然后单击右下角弹出的小窗口,等出现“安全删除USB”再拔下USB设备。计算机主机后面板上有电源,POST,串口,并口,显示器,网络,USB,音响和话筒接口,这些接口大部分是主板上自带的。声卡,网卡,显卡可以是主板上集成的设备也可以是独立的设备。注:不同的主板接口布局有所不同,但是接口规格和形式都是符合国际标准的。 串口:这种接口的数据传送模式是串行通讯,所以它只能连接串行设备。 并口:这种接口的数据传送模式是并行通讯,主要和并口设备连接,通常可以和并口打印机相连接。 COM口:COM口有两个,一个COM口是鼠标接口,一个COM口是键盘接口,接口的旁边都有标示。 2 二:计算机软件介绍 (1)系统软件:Windows98/2000/2002/XP Windows优化大师。(2)应用软件:Word/Excel/Photoshop(应用于某一领域)。 三:开机、关机 (1)开机:①先打开显示器开关按钮(标有Power字样的按钮)。 ②再打开主机开关按钮(标有Power字样的按钮)。 (2)关机:①单击“开始”菜单。 ②单击“关闭计算机”。

键盘各键的值及事件

1、Dialog类 Dialog(Frame f,String s) 构造对话框,初始不可见,s是标题,f是对话框所依赖的窗口Dialog(Frame f,String s,boolean b) b设置初始是否可见 getTitle() 获取对话框标题 setTitle(String s) 设置对话框标题 setModal(boolean b) 设置对话框模式 setSize(int w,int h) 设置对话框大小 setVisible(boolean b) 显示或隐藏对话框 2、FileDialog类 Filedialog(Frame f,String s,int mode) mode的值是fileDialog.LOAD或者fileDialog.SAVE public String getDirectory() 获取当前文件对话框中显示的文件所属目录 public String getFile() 获取当前文件对话框中文件的字符串表示,不存在返回null Java中的鼠标和键盘事件 1、使用MouseListener借口处理鼠标事件 鼠标事件有5种:按下鼠标键,释放鼠标键,点击鼠标键,鼠标进入和鼠标退出 鼠标事件类型是MouseEvent,主要方法有: getX(),getY() 获取鼠标位置 getModifiers() 获取鼠标左键或者右键 getClickCount() 获取鼠标被点击的次数 getSource() 获取鼠标发生的事件源 事件源获得监视器的方法是addMouseListener(),移去监视器的方法是removeMouseListener() 处理事件源发生的时间的事件的接口是MouseListener 接口中有如下的方法mousePressed(MouseEvent) 负责处理鼠标按下事件 mouseReleased(MouseEvent) 负责处理鼠标释放事件 mouseEntered(MouseEvent) 负责处理鼠标进入容器事件 mouseExited(MouseEvent) 负责处理鼠标离开事件 mouseClicked(MouseEvent) 负责处理点击事件 2、使用MouseMotionListener接口处理鼠标事件 事件源发生的鼠标事件有2种:拖动鼠标和鼠标移动 鼠标事件的类型是MouseEvent 事件源获得监视器的方法是addMouseMotionListener() 处理事件源发生的事件的接口是MouseMotionListener 接口中有如下的方法mouseDragged() 负责处理鼠标拖动事件 mouseMoved() 负责处理鼠标移动事件 3、控制鼠标的指针形状 setCursor(Cursor.getPreddfinedCursor(Cursor.鼠标形状定义)) 鼠标形状定义见(书P 210)4、键盘事件 键盘事件源使用addKeyListener 方法获得监视器 键盘事件的接口是KeyListener 接口中有3个方法 public void keyPressed(KeyEvent e) 按下键盘按键 public void keyReleased(KeyEvent e) 释放键盘按键 public void keyTypde(KeyEvent e) 按下又释放键盘按键

C#模拟键盘鼠标事件-SendKeys

C#模拟键盘鼠标事件-SendKeys 2007-09-18 15:13 7689人阅读评论(1) 收藏举报1.模拟键盘事件 System.Windows.Forms.SendKeys 以下是SendKeys 的一些特殊键代码表。 键代码 BACKSPACE {BACKSPACE}、{BS} 或{BKSP} BREAK {BREAK} CAPS LOCK {CAPSLOCK} DEL 或DELETE {DELETE} 或{DEL} DOWN ARROW(下箭头键){DOWN} END {END} ENTER {ENTER} 或~ ESC {ESC} HELP {HELP} HOME {HOME} INS 或INSERT {INSERT} 或{INS} LEFT ARROW(左箭头键){LEFT} NUM LOCK {NUMLOCK} PAGE DOWN {PGDN} PAGE UP {PGUP} PRINT SCREEN {PRTSC}(保留,以备将来使用) RIGHT ARROW(右箭头键){RIGHT} SCROLL LOCK {SCROLLLOCK} TAB {TAB} UP ARROW(上箭头键){UP} F1 {F1} F2 {F2} F3 {F3} F4 {F4} F5 {F5} F6 {F6} F7 {F7} F8 {F8} F9 {F9}

F10 {F10} F11 {F11} F12 {F12} F13 {F13} F14 {F14} F15 {F15} F16 {F16} 数字键盘加号{ADD} 数字键盘减号{SUBTRACT} 数字键盘乘号{MULTIPLY} 数字键盘除号{DIVIDE} 若要指定与SHIFT、CTRL 和ALT 键的任意组合一起使用的键,请在这些键代码之前加上以下一个或多个代码: 键代码 SHIFT + (SHIFT="+") CTRL ^ (CTRL="^") 如果输入 ALT % private void button1_Click(object sender, System.EventArgs e) {//英文输入 this.richTextBox1.Focus(); for(int i=65;i<91;i++) { char Letter=(char)i; SendKeys.Send(Letter.ToString()); System.Threading.Thread.Sleep(100); SendKeys.Flush(); } for(int i=97;i<123;i++) { char Letter=(char)i; SendKeys.Send(Letter.ToString()); System.Threading.Thread.Sleep(100); SendKeys.Flush(); }

QT 篇键盘、鼠标事件的处理

键盘、鼠标事件的处理 事件是对各种应用程序需要知道的由应用程序内部或者外部产生的事情或者动作的通称。对于初学者,总会对Qt中信号和事件的概念混淆不清。其实,记住事件比信号更底层就可以了。比如说,我们用鼠标按下界面上的一个按钮,它会发射clicked()单击信号,但是,它怎么知道自己被按下的呢,那就是通过鼠标事件处理的。这里可以看到,鼠标事件比信号更底层。 在Qt中处理事件有多种方法,不过最常用的是重写Qt事件处理函数。这里我们就以鼠标事件和键盘事件为例来进行简单的介绍。 一、鼠标事件 1.新建Qt Gui应用,项目名称为“myEvent”,基类更改为QWidget,类名为Widget。 2.完成项目创建后,在设计模式向界面上拖入一个Push Button。 3.在widget.h文件添加鼠标按下事件处理函数声明: protected: void mousePressEvent(QMouseEvent*); 4.到widget.cpp文件中先添加头文件包含: #include 然后在下面添加函数的定义: 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坐标值。这样,当鼠标在界面上点击时,按钮就会显示出当前鼠标的坐标值。效果如下图所示。

VB_鼠标、键盘事件和ASCII码表

一、鼠标事件 Cilck:用户单击鼠标键时发生 DbLClick:用户双击鼠标键时发生 MouseDown:用户释放鼠标键时发生 MouseMove:移动鼠标时发生 二、键盘事件 KeyDown:在键按下时触发。(可获得一个KeyCode值) KeyUp:在键弹起时触发。(可获得一个KeyCode值) KeyPress:在键盘按下再弹起时发生。(它可获得KeyAscii值) 注: 1、既然有了KeyDown和KeyUp,为什么还要KeyPress事件,我将键盘按下去后,到底是触发了KeyPress事件,还是KeyDown或KeyUp事件?答案是,当我们按了一下键盘后,这三种事件都触发。 2、一般而言,大多数程序并不关心KeyDown事件来确定按下的键,KeyPress事件在触发后,能够获得一个KeyAscii值。它指键盘上的某个键与计算机ASCII码对应的值,如键“1”,KeyAscii为49;“A”,KeyAscii 为65;“Enter”,KeyAscii为13。当我们在KeyPress事件中将KeyAscii 的值改为0后,就等于禁止键入。 3、然而并不是所有键盘上的键都有其KeyAscii值,有时,我们程序要判断用户是否按了功能键,可要区别数字小键盘和常规数字键时,那么KeyAscii就无能为力了。此时可以考虑KEyDown和KeyUp事件,当用户击键后,它们能获得一个唯一的KeyCode值,从而判断用户到底按了键盘上的哪个键。可以说,键盘上大多数键(Tab、PrintScreen键除外),都有唯一的KeyCode序列号。

常用的 ASCII 码表(0-127)

使用API函数mouse_event可以模拟鼠标事件

使用API函数mouse_event可以模拟鼠标事件,比如左键单击、双击和右键单击等。这个实例利用此函数产生了十分有趣的效果,无论鼠标处于屏幕的任何位置,每隔一秒程序会使鼠标在那个位置单击或双击一次,这会给我们造成什么样的混乱呢?试一试就知道了。 先在程序中加入如下的声明后,就能引用mouse_event函数: Private Declare Sub mouse_event Lib "user32" (ByValdwFlags As Long, ByVal dx As Long, ByValdy As Long, ByValcButtons As Long, ByValdwExtraInfo As Long) 其中各个参数的意义如下表所示: 参数意义 dwFlags Long,下表中标志之一或它们的组合 dx,dy Long,根据MOUSEEVENTF_ABSOLUTE标志,指定x,y方向的绝对位置或相对位置 cButtons Long,没有使用 dwExtraInfo Long,没有使用 dwFlags常数意义 MOUSEEVENTF_MOVE &H1,移动鼠标 MOUSEEVENTF_LEFTDOWN &H2,模拟鼠标左键按下 MOUSEEVENTF_LEFTUP &H4,模拟鼠标左键抬起 MOUSEEVENTF_RIGHTDOWN &H8,模拟鼠标右键按下 MOUSEEVENTF_RIGHTUP &H10,模拟鼠标右键抬起 MOUSEEVENTF_MIDDLEDOWN &H20,模拟鼠标中键按下 MOUSEEVENTF_MIDDLEUP &H40,模拟鼠标中键抬起 MOUSEEVENTF_ABSOLUTE &H8000,标示是否采用绝对坐标 程序中我们这样使用mouse_event函数: 1、这里是鼠标左键按下和松开两个事件的组合即一次单击: mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 2、模拟鼠标右键单击事件: mouse_event MOUSEEVENTF_RIGHTDOWN Or MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0 3、两次连续的鼠标左键单击事件构成一次鼠标双击事件: mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 如上面所示如果我们要使用两个dwFlags常数的组合时,可以用Or将其连接起来。本例中我们把dx,dy参数都设为0,是指每次模拟事件的位置是鼠标的当前位置,dx,dy在没有使用MOUSEEVENTF_ABSOLUTE标志时是相对于鼠标当前位置的坐标,如果设置为使用绝对坐标,则dx,dy是相对于屏幕的坐标。

VB模拟鼠标键盘动作

VB模拟鼠标键盘动作 有些时候,一些重复性的,很繁琐的键盘操作总会让人疲惫,于是就有了用程序来代替人们按键的方法,这样可以把很多重复性的键盘操作交给程序来模拟,省了很多精力,按键精灵就是这样的一个软件。那么我们怎样才能用VB来写一个程序,达到与按键精灵类似的功能呢?那就让我们来先了解一下windows 中响应键盘事件的机制。 当用户按下键盘上的一个键时,键盘内的芯片会检测到这个动作,并把这个信号传送到计算机。如何区别是哪一个键被按下了呢?键盘上的所有按键都有一个编码,称作键盘扫描码。当你按下一个键时,这个键的扫描码就被传给系统。扫描码是跟具体的硬件相关的,同一个键,在不同键盘上的扫描码有可能不同。键盘控制器就是将这个扫描码传给计算机,然后交给键盘驱动程序。键盘驱动程序会完成相关的工作,并把这个扫描码转换为键盘虚拟码。什么是虚拟码呢?因为扫描码与硬件相关,不具有通用性,为了统一键盘上所有键的编码,于是就提出了虚拟码概念。无论什么键盘,同一个按键的虚拟码总是相同的,这样程序就可以识别了。简单点说,虚拟码就是我们经常可以看到的像VK_A,VK_B这样的常数,比如键A的虚拟码是65,写成16进制就是&H41,注意,人们经常用16进制来表示虚拟码。当键盘驱动程序把扫描码转换为虚拟码后,会把这个键盘操作的扫描码和虚拟码还有其它信息一起传递给操作系统。然后操作系统则会把这些信息封装在一个消息中,并把这个键盘消息插入到消息列队。最后,要是不出意外的话,这个键盘消息最终会被送到当前的活动窗口那里,活动窗口所在的应用程序接收到这个消息后,就知道键盘上哪个键被按下,也就可以决定该作出什么响应给用户了。这个过程可以简单的如下表示: 用户按下按键-----键盘驱动程序将此事件传递给操作系统-----操作系统将键盘事件插入消息队列-----键盘消息被发送到当前活动窗口 明白了这个过程,我们就可以编程实现在其中的某个环节来模拟键盘操作了。在VB中,有多种方法可以实现键盘模拟,我们就介绍几种比较典型的。 1.局部级模拟 从上面的流程可以看出,键盘事件是最终被送到活动窗口,然后才引起目标程序响应的。那么最直接的模拟方法就是:直接伪造一个键盘消息发给目标程序。哈哈,这实在是很简单,windows提供了几个这样的API函数可以实现直接向目标程序发送消息的功能,常用的有SendMessage和PostMessage,它们的区别是PostMessage函数直接把消息仍给目标程序就不管了,而SendMessage把消息发出去后,还要等待目标程序返回些什么东西才好。这里要注意的是,模拟键盘消息一定要用PostMessage函数才好,用SendMessage是不正确的(因为模拟键盘消息是不需要返回值的,不然目标程序会没反应),切记切记!PostMessage函数的VB声明如下: Declare Function PostMessage Lib"user32"Alias"PostMessageA"(ByVal hwnd As Long,ByVal wMsg As Long,ByVal wParam As Long,lParam As Any) As Long 参数hwnd是你要发送消息的目标程序上某个控件的句柄,参数wMsg是消息的类型,表示你要发送什么样的消息,最后wParam和lParam这两个参数是随消

相关主题