当前位置:文档之家› 模拟键盘鼠标事件

模拟键盘鼠标事件

模拟键盘鼠标事件
模拟键盘鼠标事件

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.

翻译意思大概:返回经过掩码的action,没有触控点索引信息. 通过getActionIndex()来得到触控操作点的索引.

所以两个返回值差别就是一个类似IP中掩码问题。

一个MotionEvent中的action代码,

前8位是实实在在包含表示哪一个动作常量.

后八位呢就是包含了触控点的索引信息.

动作常量就是指代什么类型操作,由于触摸操作可能是多点的,所以索引信息就是用来作为多点的标识,比如单点的话索引值是为0的。

因为ACTION_MASK = 0x00ff所以ACTION_MASK掩码过后的action码就没有索引信息了.也就是说getActionMasked()得到的值是经过掩码处理过的action码,里面信息只有动作常量

如何获得索引值呢?

先将action跟0xff00相与清除前8位用于存储动作常量的信息,

然后将action右移8位就可以得到索引值了.

我们就可以自己想办法得到索引信息了.

我们知道ACTION_POINTER_INDEX_MASK=0xff00。

即先对action用ACTION_POINTER_INDEX_MASK进行掩码处理,

即maskedIndex = action&ACTION_POINTER_INDEX_MASK = action&0xff00

这各掩码也就是将action这个数的前8位清零.

然后再将maskedIndex向右移8位就能够得到索引值了.

通过调用getActionIndex()函数即可得到该该操作的索引值了。

为什么要有索引信息?

因为,这样说吧,Android中,当有触摸事件发生时(假设已经注册了事件监听器),调用你注册监听器中的方法onTouch(,MotionEventev);传递了一个MotionEvent的对象过来.

但是,想想,上面只传递进来一个MotionEvent过来,如果只是单点触控那是没有问题.

问题就是当你多个手指触控的时候也是只传递这一个MotionEvent进来,

这个时候,你当然想知道每个手指的所对应的触控点数据信息啦.

所以MotionEvent中有就要索引信息了.

事件是你可以很容易通过API看到,MotionEvent还包含了移动操作中其它历史移动数据.

方便处理触控的移动操作.

android sdk对于这个类的描述中就有这么一句:

For efficiency, motion events with ACTION_MOVE may batch together multiple movement samples within a single object.

出于效率的考虑,事件代码为ACTION_MOVE的Motion,会在一个MotionEvent对象中包含多个移动数据采样

Android事件处理

转自:https://www.doczj.com/doc/3614543065.html,/kf/201109/102655.html

目的:通过全面的分析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对象可以处理测距、布局、绘制、焦点变换、滚动条,以及触屏区域自己表现的按键和手势。当我们重写View中的onTouchEvent(MotionEvent)方法后,就可以处理简单的触摸屏事件。

代码如下:

1 view plaincopy to clipboardprint?

2public booleanonTouchEvent(MotionEvent event)

3 {

4int events[] = {MotionEvent.ACTION_DOWN, MotionEvent.ACTION_MOVE,

5MotionEvent.ACTION_UP, MotionEvent.ACTION_MOVE,

MotionEvent.ACTION_CANCEL, MotionEvent.ACTION_OUTSIDE,

6MotionEvent.ACTION_POINTER_DOWN,MotionEvent.ACTION_POINTER_UP, 7

MotionEvent.EDGE_TOP,MotionEvent.EDGE_BOTTOM,MotionEvent.EDGE_LEFT,Mo tionEvent.EDGE_RIGHT};

8

9 String szEvents[]={"ACTION_DOWN", "ACTION_MOVE", 10"ACTION_UP", "ACTION_MOVE", "ACTION_CANCEL", "ACTION_OUTSIDE", 11"ACTION_POINTER_DOWN","ACTION_POINTER_UP",

12"EDGE_TOP","EDGE_BOTTOM","EDGE_LEFT","EDGE_RIGHT"};

13for(int i=0; i

14 {

15if(events[i] == event.getAction())

16 {

17if(oldevent != event.getAction())

18 {

19DisplayEventType(szEvents[i]);

20oldevent = event.getAction();

21 }

22break;

23 }

24 }

25return super.onTouchEvent(event);

26 }

27public booleanonTouchEvent(MotionEvent event)

28 {

29int events[] = {MotionEvent.ACTION_DOWN, MotionEvent.ACTION_MOVE, 30MotionEvent.ACTION_UP, MotionEvent.ACTION_MOVE,

MotionEvent.ACTION_CANCEL, MotionEvent.ACTION_OUTSIDE,

31MotionEvent.ACTION_POINTER_DOWN,MotionEvent.ACTION_POINTER_UP,

32

MotionEvent.EDGE_TOP,MotionEvent.EDGE_BOTTOM,MotionEvent.EDGE_LEFT,Mo tionEvent.EDGE_RIGHT};

33

34 String szEvents[]={"ACTION_DOWN", "ACTION_MOVE",

35"ACTION_UP", "ACTION_MOVE", "ACTION_CANCEL", "ACTION_OUTSIDE", 36"ACTION_POINTER_DOWN","ACTION_POINTER_UP",

37"EDGE_TOP","EDGE_BOTTOM","EDGE_LEFT","EDGE_RIGHT"};

38for(int i=0; i

39 {

40if(events[i] == event.getAction())

41 {

42if(oldevent != event.getAction())

43 {

44DisplayEventType(szEvents[i]);

45oldevent = event.getAction();

46 }

47break;

48 }

49 }

50return super.onTouchEvent(event);

51 }

2.2手势识别

很多时候,一个好的用户界面能够吸引用户的眼球。现在我们经常看到一些好的界面都带有滑动、滚动等效果。但是触摸屏是不可能产生滚动、滑动的消息的,需要根据其运动的轨迹用算法去判断实现。在Android系统中,android.view.GestureDetector来实现手势的识别,我们只需要实现其GestureDetector.OnGestureListener接口来侦听GestureDetector识别后的事件。我们需要在onTouchEvent,GestureDetector的onTouchEvent方法是进行轨迹识别。

代码如下:

1 view plaincopy to clipboardprint?

2 import android.view.GestureDetector;

3 import android.view.GestureDetector.OnGestureListener;

4publicclass TestEvent extends Activity {

5/** Called when the activity is first created. */

6

7TextViewm_eventType;

8int oldevent = -1;

9private GestureDetectorgestureDetector=

new GestureDetector(new OnGestureListener()

10 {

11

12// 鼠标按下的时候,会产生onDown。由一个ACTION_DOWN产生。

13public booleanonDown(MotionEvent event) {

14

15DisplayEventType("mouse down" + "" + event.getX() + "," +

event.getY());

16returnfalse;

17 }

18// 用户按下触摸屏、快速移动后松开,这个时候,你的手指运动是有加速度的。

19// 由1个MotionEvent ACTION_DOWN,

20// 多个ACTION_MOVE, 1个ACTION_UP触发

21// e1:第1个ACTION_DOWN MotionEvent

22// e2:最后一个ACTION_MOVE MotionEvent

23// velocityX:X轴上的移动速度,像素/秒

24// velocityY:Y轴上的移动速度,像素/秒

25public booleanonFling(MotionEvent e1, MotionEvent e2, float velocityX, 26float velocityY) {

27DisplayEventType("onFling");

28returnfalse;

29 }

30// 用户长按触摸屏,由多个MotionEvent ACTION_DOWN触发

31publicvoid onLongPress(MotionEvent event) {

32DisplayEventType("on long pressed");

33 }

34// 滚动事件,当在触摸屏上迅速的移动,会产生onScroll。由ACTION_MOVE

产生

35// e1:第1个ACTION_DOWN MotionEvent

36// e2:最后一个ACTION_MOVE MotionEvent

37// distanceX:距离上次产生onScroll事件后,X抽移动的距离

38// distanceY:距离上次产生onScroll事件后,Y抽移动的距离

39public booleanonScroll(MotionEvent e1, MotionEvent e2,

float distanceX,

40float distanceY) {

41DisplayEventType("onScroll" + "" + distanceX + "," + distanceY);

42returnfalse;

43 }

44//点击了触摸屏,但是没有移动和弹起的动作。onShowPress和onDown的区

别在于

45//onDown是,一旦触摸屏按下,就马上产生onDown事件,但是onShowPress

是onDown事件产生后,

46//一段时间内,如果没有移动鼠标和弹起事件,就认为是onShowPress事件。

47publicvoid onShowPress(MotionEvent event) {

48DisplayEventType("pressed");

49

50 }

51// 轻击触摸屏后,弹起。如果这个过程中产生了onLongPress、onScroll

和onFling事件,就不会

52// 产生onSingleTapUp事件。

53public booleanonSingleTapUp(MotionEvent event) {

54DisplayEventType("Tap up");

55returnfalse;

56 }

57

58 });

59

60 @Override

61publicvoid onCreate(Bundle savedInstanceState) {

62super.onCreate(savedInstanceState);

63setContentView(https://www.doczj.com/doc/3614543065.html,yout.main);

64m_eventType = (TextView)this.findViewById(R.id.eventtype);

65 }

66 @Override

67public booleanonTouchEvent(MotionEvent event)

68 {

69if(gestureDetector.onTouchEvent(event))

70returntrue;

71else

72returnfalse;

73 }

74

75 }

76 import android.view.GestureDetector;

77 import android.view.GestureDetector.OnGestureListener;

78publicclass TestEvent extends Activity {

79/** Called when the activity is first created. */

80

81TextViewm_eventType;

82int oldevent = -1;

83private GestureDetectorgestureDetector=

new GestureDetector(new OnGestureListener()

84 {

85

86// 鼠标按下的时候,会产生onDown。由一个ACTION_DOWN产生。

87public booleanonDown(MotionEvent event) {

88

89DisplayEventType("mouse down" + "" + event.getX() + "," +

event.getY());

90returnfalse;

91 }

92// 用户按下触摸屏、快速移动后松开,这个时候,你的手指运动是有加速度的。

93// 由1个MotionEvent ACTION_DOWN,

94// 多个ACTION_MOVE, 1个ACTION_UP触发

95// e1:第1个ACTION_DOWN MotionEvent

96// e2:最后一个ACTION_MOVE MotionEvent

97// velocityX:X轴上的移动速度,像素/秒

98// velocityY:Y轴上的移动速度,像素/秒

99public booleanonFling(MotionEvent e1, MotionEvent e2, float velocityX,

100float velocityY) {

101DisplayEventType("onFling");

102returnfalse;

103 }

104// 用户长按触摸屏,由多个MotionEvent ACTION_DOWN触发

105publicvoid onLongPress(MotionEvent event) {

106DisplayEventType("on long pressed");

107 }

108// 滚动事件,当在触摸屏上迅速的移动,会产生onScroll。由ACTION_MOVE 产生

109// e1:第1个ACTION_DOWN MotionEvent

110// e2:最后一个ACTION_MOVE MotionEvent

111// distanceX:距离上次产生onScroll事件后,X抽移动的距离

112// distanceY:距离上次产生onScroll事件后,Y抽移动的距离

113public booleanonScroll(MotionEvent e1, MotionEvent e2,

float distanceX,

114float distanceY) {

115DisplayEventType("onScroll" + "" + distanceX + "," + distanceY); 116returnfalse;

117 }

118//点击了触摸屏,但是没有移动和弹起的动作。onShowPress和onDown的区别在于

119//onDown是,一旦触摸屏按下,就马上产生onDown事件,但是onShowPress 是onDown事件产生后,

120//一段时间内,如果没有移动鼠标和弹起事件,就认为是onShowPress事件。121publicvoid onShowPress(MotionEvent event) {

122DisplayEventType("pressed");

123

124 }

125// 轻击触摸屏后,弹起。如果这个过程中产生了onLongPress、onScroll 和onFling事件,就不会

126// 产生onSingleTapUp事件。

127public booleanonSingleTapUp(MotionEvent event) {

128DisplayEventType("Tap up");

129returnfalse;

130 }

131

132 });

133

134 @Override

135publicvoid onCreate(Bundle savedInstanceState) {

136super.onCreate(savedInstanceState);

137setContentView(https://www.doczj.com/doc/3614543065.html,yout.main);

138m_eventType = (TextView)this.findViewById(R.id.eventtype);

139 }

140 @Override

141public booleanonTouchEvent(MotionEvent event)

142 {

143if(gestureDetector.onTouchEvent(event))

144returntrue;

145else

146returnfalse;

147 }

148

149 }

2.3键盘事件

键盘事件比较简单,直接重写原来的方法就可以了。

代码如下:

1 view plaincopy to clipboardprint?

2public booleanonKeyDown(int keyCode, KeyEvent event) 3 {

4switch(keyCode)

5 {

6case KeyEvent.KEYCODE_HOME:

7DisplayEventType("Home down");

8break;

9case KeyEvent.KEYCODE_BACK:

10DisplayEventType("Back down");

11break;

12case KeyEvent.KEYCODE_DPAD_LEFT:

13DisplayEventType("Left down");

14break;

15 }

16//return true;

17return super.onKeyDown(keyCode, event);

18 }

19 @Override

20public booleanonKeyUp(int keyCode, KeyEvent event) 21 {

22switch(keyCode)

23 {

24case KeyEvent.KEYCODE_HOME:

25DisplayEventType("Home up");

26break;

27case KeyEvent.KEYCODE_BACK:

28DisplayEventType("Back up");

29break;

30case KeyEvent.KEYCODE_DPAD_LEFT:

31DisplayEventType("Left up");

32break;

33 }

34//return true;

35return super.onKeyUp(keyCode, event);

36 }

37public booleanonKeyDown(int keyCode, KeyEvent event) 38 {

39switch(keyCode)

40 {

41case KeyEvent.KEYCODE_HOME:

42DisplayEventType("Home down");

43break;

44case KeyEvent.KEYCODE_BACK:

45DisplayEventType("Back down");

46break;

47case KeyEvent.KEYCODE_DPAD_LEFT:

48DisplayEventType("Left down");

49break;

50 }

51//return true;

52return super.onKeyDown(keyCode, event);

53 }

54 @Override

55public booleanonKeyUp(int keyCode, KeyEvent event) 56 {

57switch(keyCode)

58 {

59case KeyEvent.KEYCODE_HOME:

60DisplayEventType("Home up");

61break;

62case KeyEvent.KEYCODE_BACK:

63DisplayEventType("Back up");

64break;

65case KeyEvent.KEYCODE_DPAD_LEFT:

66DisplayEventType("Left up");

67break;

68 }

69//return true;

70return super.onKeyUp(keyCode, event);

71 }

3. 模拟鼠标/按键事件

Instrumentation发送键盘鼠标事件:Instrumentation提供了丰富的以send 开头的函数接口来实现模拟键盘鼠标,如下所述:

sendCharacterSync(int keyCode) //用于发送指定KeyCode的按键sendKeyDownUpSync(int key) //用于发送指定KeyCode的按键sendPointerSync(MotionEvent event) //用于模拟Touch

sendStringSync(String text) //用于发送字符串

Instrumentation inst=new Instrumentation();

inst.sendPointerSync(MotionEvent.obtain(SystemClock.uptimeMillis(),Sy stemClock.uptimeMillis(), MotionEvent.ACTION_DOWN, 10, 10, 0));

inst.sendPointerSync(MotionEvent.obtain(SystemClock.uptimeMillis(),Sy stemClock.uptimeMillis(), MotionEvent.ACTION_UP, 10, 10, 0));

鼠标的键盘使用方法

就可以用数字键盘控制了.1,2,3,6,9,8,7,4八个数字键是鼠标的(八个)方向键的替代键,5代替鼠标的单击(既可以是左键的单击,也可以是右键的单击,具体是哪 个键要看在tray中的鼠标键状态图标的指示),揿下5在鼠标键状态图标上的反应是相应的键的一次闪烁;“+”代替双击(同样也没有指定是哪个键的双击),在鼠标键图标 上的反应是相应的键连续闪烁两次;“*”代替左右两键的同时单击,在鼠标键图标上 的反应是相应的两个键同时闪烁一次,“/”是切换键,既是单击与双击间的切换,又是左键和右键间的切换;所有的这些状态都会在状态栏中的鼠标键图标上得到体现,当然左右键的状态是非常明显的显示在相应的图标上,而单击显示为灰色,双击显示为 黑色。“0(Ins)”键代替按下鼠标键(同样没有指明左右键),在鼠标键状态图标上的反应是相应的键由灰变黑,这个键为我们拖动文件夹,选择文档的部分内容提供了方便;“·(del)”键则代替释放鼠标键,在鼠标键图标上的反应是相应的键由黑变灰。还可以设置鼠标移动的速度(crl表示加速,shift表示减速),数字小键盘的开关键 不管你的桌面处于任何状态,按Win+E快捷键,打开Windows的资源管理器。此时 光标的默认位置定位于"我的电脑"上,按方向键移动到"控制面板"上,然后按Tab键跳动光标,继续按动方向键,选择"辅助选项",按Enter键确认,这时你会发现弹出一个"辅助选项属性"对话框。将Tab和方向键配合,选择对话框中的"鼠标"标签卡。到这一步,我们就可以着手设置"鼠标键"了。按下快捷键Alt+M,选中"使用'鼠标键'"复选框,就可以使"鼠标键"生效,做完这一步,可以使用小键盘来控制鼠标的指针方向和点击 操作。 上面的操作仅仅令"鼠标键"生效,如果想进一步设置鼠标键,则按Alt+S键,弹出"鼠 标键设置"对话框。按Alt+U选中"使用快捷方式",则以后你可以按"左Alt+在 Shift+NumLock"键以快速打开(关闭)"鼠标键"。按Alt+H选中"按住Ctrl键进行加速或按Shift键进行减速",则以后利用"鼠标键"移动"鼠标"时,可配合Ctrl键和Shift键 分别加速和减速移动鼠标指针。利用小键盘使用"鼠标键",NumLock是切换开关。如 果按"Alt+N"选定"打开",意即当NumLock按键处于打开状态时,小键盘用作"鼠标键";反之,按"Alt+F"选择"关闭",则意味着当NumLock按键处于关闭状态时,小键盘用作"鼠标键"。同理,按"Alt+S"键,选中"在屏幕上显示鼠标键状态"复选框,则可以看到 任务栏状态区中的"鼠标键"Tray标志,方便日后查看"鼠标键"状态以及设置相关参数。而鼠标键对鼠标操作的方法是: 1、移动 1) 要水平或垂直移动鼠标指针,请按小键盘上的"4"、"6"、"8"、"2"键,分别代表←、→、↑、↓四个方向。

VB编程的键盘控制

V B编程的键盘控制Prepared on 21 November 2021

VB编程的键盘控制 我们利用VisualBASIC编写程序,多数情况只涉及到鼠标操作(如单击、双击、拖动等),但如果程序中需要实现文本编辑、热键激活或利用键盘进行游戏控制等功能时,将不可避免地碰到键盘捕获及处理的问题。下面,我们就来看一看VB编程中如何进行键盘控制。 一、概述 在VB中,很多控件都提供了键盘输入功能(如文本框、组合框等),但它们对键盘的处理较简单,遇到复杂一点的要求即无能为力。因而VB提供了KeyPress、KeyUp、KeyDown三种键盘事件,当用户按键时,会触发这三种事件,而且窗体和接受键盘输入的控件都识别这三种事件。下表对这些事件作了描述。 键盘事件触发原因 KeyPress按下某ASCII字符键 KeyDown按下键盘的任意键 KeyUp释放键盘的任意键 KeyPress事件无法检测到的情况: SHIFT、CTRL和ALT键的特殊组合。 光标控制键。 HOME、END、PAGEUP、PAGEDOWN等。 数字小键盘的数字键与打字键盘数字键的区别。 不仅响应按键操作而且响应释放键操作(KeyPress只响应按键操作)。 键盘事件彼此不相互排斥。按下某键时将生成KeyDown和KeyPress事件,而松开此键时生成KeyUp事件。当用户按下一个KeyPress不能检测的键时将触发KeyDown事件,松开此键时生成KeyUp事件。若使用KeyUp和KeyDown事件应确保KeyPress事件的功能不够用,通常编写KeyPress事件的代码比较容易。 二、KeyPress事件 在按下与ASCII字符对应的键时将触发KeyPress事件。ASCII字符集代表标准键盘的字母、数字和标点符号以及部分控制键(ENTER、TAB、BACKSPACE键等)。KeyDown和KeyUp事件能够检测其它功能键、编辑键和光标定位键。当处理标准ASCII字符时应使用KeyPress事件。例如,如果希望将输入到文本框中的所有字符都强制转换为大写字符,则可在输入时使用此事件转换大小写:PrivateSubText1_KeyPress(KeyAsciiAsInteger) KeyAscii=Asc(Ucase(Chr(KeyAscii))) EndSub KeyAscii参数返回对应所按键的ASCII代码。 也可通过KeyPress事件识别部分控制键。例如,下述事件过程使用KeyPress检测用户是否正在按BACKSPACE键: PrivateSubText1_KeyPress(KeyAsciiAsInteger) IfKeyAscii=8ThenMsgBox"YouPressedtheBACKSPACEkey." EndSub 注:BACKSPACE键的ASCII值为8。 还可用KeyPress事件改变某些键的缺省行为。例如,当在文本框内按ENTER键就会结束当前行输入并将光标转到下一行(Multiline属性设为True)。在KeyPress事件中截断ENTER键(ASCII 值为13)就可避免这种情况:

如何用键盘控制鼠标的移动和击键

如何用键盘控制鼠标的移动和击键。。。。 2007-12-15 10:22 本文我就是全部用键盘控制鼠标进行复制与粘贴和发贴的。。。。。呵呵,熟悉一下用键盘 来控制鼠标的移动与击键,以备下次鼠标坏了,没法干活。。。。。。 自己看:在“开始”菜单上选择“设置”,“控制面板”,在“控制面板”上双击“辅助选项”图标,单击“鼠标器”标签,然后单击“使用鼠标键”。这样就可以用键盘来控制鼠标的光标,模拟鼠标的鼠标键都指键盘右侧的小键盘(数字键盘),使用时要使NumLock 键处于有效状态。以下就是鼠标键: 移动 8、2、4、6、7、9、1、3键,八个方位 长距离移动 Ctrl+以上八个键 选鼠标左键 / 选鼠标右键— 单击 5 双击 + 拖曳 0(INS) 释放 .(Del) 由此看出,单击鼠标左键即为/,5,拖动窗口为: 先移动到窗口的标题栏,再按INS,然后用“移动”键 将窗口移到合适的位置,最后按Del。 记住,由于数字小键盘不是真的鼠标,所以要领会它的一些规章制度。要领就是先确定下面的操作是左键呢还是右键,以及是单击呢还是双击,鼠标键是按下还是松开?然后再进行相关的操作。 如果您还没有听清的话,或者您想知道得更多一些,请参考相关的帮助文件。 3)用键盘的各种快捷键/组合键来代替鼠标的各种操作,当然这种方法的缺点就是要记忆许多的组合键,如同dos命令相对于windows操作来说的那种麻烦和扰人: [左键]大小键盘上的enter键。 [右键]用shift+F10可以完全代替,而alt+enter则是shift+F10+R的替代键:查看某选项(可以是文件,也可以是文件夹,甚至是硬盘)的属性。 [菜单的弹出与激活]可以用alt键或者组合键ctrl+f10来弹出第一个菜单,或者用alt+相应的字母,直接弹出对应的菜单;在子菜单中,可以直接用相应的缩写字母来执行对应的功能,也可以用键盘中的上下键移到相应的子菜单项上(特别是对于那些子菜单非常多,而我们需要的东东又在倒数几个的位置),再用enter键执行该功能。 [win键]^+ESC [选定、选择]SHIFT+方向键为行选择方式,SHIFT+ALT+方向键为列选择方式(列选择在word

利用VB建立鼠标键盘操作回放

利用VB建立鼠标键盘操作回放 很多的教学软件或系统监视软件可以自动记录回放用户的输入文字或点击按钮等操作操作,这个功能的实现是使用了Windows的Hook函数。本文介绍如何通过使用VB来实现鼠标键盘操作的纪录和回放。Windows提供API函数SetwindowsHookEx来建立一个Hook,通过这个函数可以将一个程序添加到Hook链中监视Windows消息,函数语法为: Public Declare Function SetWindowsHookEx Lib "user32" _ Alias "SetWindowsHookExA" _ (ByVal idHook As Long, _ ByVal lpfn As Long, _ ByVal hmod As Long, _ ByVal dwThreadId As Long) As Long 其中参数idHook指定建立的监视函数类型。通过Windows MSDN帮助可以看到,SetwindowsHookEx函数提供15种不同的消息监视类型,在这里我们将使用WH_JOURNALRECORD和WH_JOURNALPLAYBACK来监视键盘和鼠标操作。参数lpfn 指定消 息函数,在相应的消息产生后,系统会调用该函数并将消息值传递给该函数供处理。函数的一般形式为: Hookproc (code: Integer; wparam: WPARAM; lparam: LPARAM): LRESULT stdcall; 其中code为系统指示标记,wParam和lParam为附加参数,根据不同的消息监视类型而不同。只要在程序中建立这样 一个函数再通过SetwindowsHookEx函数将它加入到消息监视链中就可以处理消息了。 在不需要监视系统消息时需要调用提供UnHookWindowsHookEx来解除对消息的监视。WH_JOURNALRECORD和WH_JOURNALPLAYBACK类型是两种相反的Hook类型,前者获得鼠标、键盘动作消息,后者回放鼠 标键盘消息。所以在程序中我们需要建立两个消息函数,一个用于纪录鼠标键盘操作并保存到一个数组中,另一个用于 将保存的操作返给系统回放。 下面是具体的程序实现:首先建立一个新工程,在Form1中加入三个CommandButton控件用于控制消息钩子,另外还 可以增加若干Command或者TextBox控件用于检验操作回放的效果。然后在工程中增加一个模块文件,在模块中加入以下 定义和代码: Option Explicit Public Type EVENTMSG message As Long paramL As Long paramH As Long time As Long hwnd As Long End Type Public Declare Function CallNextHookEx Lib "user32" _ (ByVal hHook As Long, _

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

VB编程的键盘控制

VB编程的键盘控制 我们利用Visual BASIC编写程序,多数情况只涉及到鼠标操作(如单击、双击、拖动等),但如果程序中需要实现文本编辑、热键激活或利用键盘进行游戏控制等功能时,将不可避免地碰到键盘捕获及处理的问题。下面,我们就来看一看VB编程中如何进行键盘控制。 一、概述 在VB中,很多控件都提供了键盘输入功能(如文本框、组合框等),但它们对键盘的处理较简单,遇到复杂一点的要求即无能为力。因而VB提供了KeyPress、KeyUp、KeyDown 三种键盘事件,当用户按键时,会触发这三种事件,而且窗体和接受键盘输入的控件都识别这三种事件。下表对这些事件作了描述。 KeyDown和KeyUp事件提供了最低级的键盘响应,可用这些事件检测KeyPress事件无法检测到的情况: ◆SHIFT、CTRL和ALT键的特殊组合。 ◆光标控制键。 ◆HOME、END、PAGEUP、PAGEDOWN等。 ◆数字小键盘的数字键与打字键盘数字键的区别。 ◆不仅响应按键操作而且响应释放键操作(KeyPress只响应按键操作)。 键盘事件彼此不相互排斥。按下某键时将生成KeyDown和KeyPress事件,而松开此键时生成KeyUp事件。当用户按下一个KeyPress不能检测的键时将触发KeyDown事件,松开此键时生成KeyUp事件。若使用KeyUp和KeyDown事件应确保KeyPress事件的功能不够用,通常编写KeyPress事件的代码比较容易。 二、KeyPress事件 在按下与ASCII字符对应的键时将触发KeyPress事件。ASCII字符集代表标准键盘的字母、数字和标点符号以及部分控制键(ENTER、TAB、BACKSPACE键等)。KeyDown 和KeyUp事件能够检测其它功能键、编辑键和光标定位键。当处理标准ASCII字符时应使用KeyPress事件。例如,如果希望将输入到文本框中的所有字符都强制转换为大写字符,则可在输入时使用此事件转换大小写: Private Sub Text1_KeyPress(KeyAscii As Integer) KeyAscii = Asc(Ucase(Chr(KeyAscii))) End Sub KeyAscii参数返回对应所按键的ASCII代码。 也可通过KeyPress事件识别部分控制键。例如,下述事件过程使用KeyPress检测用户是否正在按BACKSPACE键:

VC 模拟鼠标和键盘输入

VC 模拟鼠标和键盘输入 - 天下 - 博客频道 - https://www.doczj.com/doc/3614543065.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();

VB常用快捷键

VB常用快捷键 窗体设置,控件布局时用: alt+v+x可以快速显示出工具框 Alt+P+N 引用 ctrl+左右键头可以移动控件 shift+左右键头调整控件大小 F7 切换到编辑窗口 Shift+f7 切换代码窗口 开发代码,调试代码都能用的: Ctrl+C复制 Ctrl+V粘贴 Ctrl+X剪贴 Ctrl+F查找 开发代码时用的: Tab 向右推 Shift+Tab 向左推 Ctrl+H 替换 Ctrl+J 呵呵,有点显丑。有几个函数。老要看总是记不住,呵呵(Alt+→)ctrl+home jump to 首行 ctrl+end jump to 末尾 调试时使用的: F5 运行 F8 断点运行 F9 设置/清除断点 Ctrl+G 立即窗口 Shift+F2 到定义处 Ctrl+Shift+F9 清除所有断点 Ctrl+shift+F2 到上次编辑处 Ctrl+PauseBreak 强行暂停程序(专门对付死循环之类的) shift+F9 可以监视表达式 Ctrl+W 编辑监视窗口 Ctrl+n n Enter 偶经常要另开一个程序先做试验,你们可能很少用吧?呵呵以上几个,是我使用中最多的。当然。其它的我也有使用。如:Ctrl+J(所选控件置前),Ctrl+J(所选控件置底),F7,Shift+F4还有那些Windows通用的那些快捷

键:Ctrl+C,Ctrl+V ,哈哈,这二个快捷键,偶好像使用次数。也可以在所有使用快捷中前几名呢!哈哈! 1、F1:显示MSDN帮助。当然你要安装MSDN,否则得不到真正的帮助了 2、F2:显示对象浏览器。这里你可以看到对象的各种属性、方法与事件 3、F3:查找一下个满足条件的内容 4、F4:显示当前选中控件的属性窗体 5、F5:运行程序(https://www.doczj.com/doc/3614543065.html,则是F8了) 6、F7:由窗体设计切换到对应的代码窗体 7、F8:单步执行程序 8、F9:切换断点 9、Alt+A:打开外接程序菜单 10、Alt+D:打开调试菜单 11、Alt+E:打开编辑菜单 12、Alt+F:打开文件菜单 13、Alt+H:打开帮助菜单 14、Alt+I:打开图表菜单 15、Alt+O:打开格式菜单 16、Alt+T:打开工具菜单 17、Alt+P:打开工程菜单 18、Alt+R:打开运行菜单 19、Alt+U:打开查询菜单 20、Alt+Q:退出 21、Alt+V:打开视图菜单 22、Alt+W:打开窗口菜单 23、Alt+→:根据输入的字符检索出可以使用的关键字 24、Tab:让选中的代码,集休缩进 25、Shift+F2:查看当前光标所在的变量或函数、子过程的定义。这一快捷键很方便,比如程序中有一个 call PubFunction ,你只要将鼠标在PubFunction 任意一处点中,然后按Shift+F2就可以直接转到函数的声明处。 26、Shift+F4:打开属性页窗口,与F4不一样哦 27、Shift+F5:重新启动 28、Shift+F7:由代码窗体切换到对应的窗体设计界面 29、Shift+F8:逐过程单步执行。按过程进行调试 30、Shift+F9:快速监视 31、Shift+Tab:让选中的代码集体凸出

总结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.doczj.com/doc/3614543065.html,(element)))// 鼠标左键点击指定的元素 清单2. 鼠标右键点击 Actions action = new Actions(driver); action.contextClick();// 鼠标右键在当前停留的位置做单击操作 action.contextClick(driver.findElement(https://www.doczj.com/doc/3614543065.html,(element)))// 鼠标右键点击指定的元素 清单3. 鼠标双击操作 Actions action = new Actions(driver); action.doubleClick();// 鼠标在当前停留的位置做双击操作

计算机基础(键盘鼠标操作).doc

Windows XP的基本操作 教学课题:键盘的基本功能和输入规则 教学目的:1.认识键盘上常用键并会运用 2.启动与关闭计算机 3.掌握键盘和鼠标的使用方法 教学重点:1.启动与关闭计算机的方法 2.鼠标的使用方法 教学难点:鼠标的使用 教学方法:讲授法、演示、多媒体演示 教学时数:2课时 教学过程: 一、清点人数 班级:应到:实到:请假: 班级:应到:实到:请假: 二、安全提示 三、讲授新课 (一)键盘手指分布图 (二)键盘与鼠标的使用 1. 键盘的使用 标准的计算机键盘主要由字符键区、功能键区、方向键区、小键盘区和辅助键区组成。

(1)字符键区: Tab键:跳格键,在表格中按Tab键,可以使光标沿单元格往前(右)一步一步地跳动。按“Shift+Tab”组合键则反向跳动;按“Ctrl+Tab”是复原。 Caps Lock键:大写锁定键。 Shift键:上档键,又称转换键。用以配合有上符的键盘输入上符键盘上的符号,还可以配合其他的键共同起作用,例如,Shift+F3是大小写转换;Shift+F5 是使光标回到此前状态;按住Shift键拖文本时是移动所选的文本;放光碟时,连按数下shift 键,可以跳过自动播放;删除文件时,按shift 键可以不经过回收站直接删除。。按shift +F10可以代替鼠标右键;shift+空格,输入法全/半角切换等。 Ctrl键:控制键。需要配合其他键或鼠标使用。有多种功能。例如Ctrl+s是保存文件;Ctrl+V是粘贴;Ctrl+A是全选;Ctrl+=是把锁选定的字变为下标字;Ctrl+C是调出保存24条信息的剪贴板;按住Ctrl键拖动选定的文本时是复制等。 Alt键:可选键。它需要和其他键配合使用来达到某一操作目的。例如,若同时按住Alt+ Ctrl+Del,是打开Windows的任务管理器。 Enter键:回车键,也称确认键。 Space键:空格键。按一下空格键,就会输入一个空格,光标也就向右移动一个字符。 Backspace键:后退格键。可以删除当前光标位置前的字符,并将光标向左移动一个位置。如果按Shift+Backspace键,就是删除整个表格。 (2)功能键区 Esc键:一般起退出或中止某个程序或某种操作的作用。 F1键:在Word中按F1可以得到“Wo rd帮助”。 F2键:在Word中,如果你选定了一组文本或图形,随后再按一下F2键,你想把这组文本或图形移到本文档的哪个位置,就把光标转移到哪里,再按一下Enter 键,移动就成功了。 F3键:在桌面或文件夹中按F3是打开“搜索文件和文件夹”的窗口。 F4键:在Word中,是重复上一次操作。如果你按组合键“Alt+F4”,就是关闭这个窗口。 F5键:在Word中,按F5可以调出“查找、替换和定位”对话框;在Web页面,F5键用来刷新IE或资源管理器中当前所在窗口的内容,Ctrl+F5是强制刷新。 F6键:在Word中,用它来撤消F8的扩展选择功能。 F7键:在Word中,按F7可以出现拼写和错误提示窗口。

模拟键盘鼠标事件

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.

VB 有关鼠标的操作

VB 有关鼠标的操作   假如没有鼠标,电脑的普及率绝对没有目前这么高。在windows下,鼠标的作用不亚于键盘。因此,在VB中设计基于windows下的应用程序,鼠标的操作和设计是非常重要的。 一、鼠标的移动、按键事件 要想在VB程序中自如应用鼠标,先要了解有关鼠标的事件,并学会如何编写这些事件过程。最常见的鼠标事件有: 当在某个对象上移动鼠标、按下鼠标按键、释放鼠标按键时均会触发鼠标事件,它们分别是:MouseMove、MouseDown、MouseUp。   这三个鼠标事件过程均会返回四个参数:Button As Integer, Shift As

具体解释如下: 1、 MouseDown事件 当单击鼠标上的任何一个按键之后,都会引起MouseDown事件。许多对象都有这个事件。如用鼠标在窗体上单击,可以引发这个事件,用鼠标单击“按钮”“标签”“文本框”等对象也可以引发这个事件。该事件还带回来不少参数,下面是鼠标单击窗体任何位置所引发的MouseDown事件,单击其它对象所带回的参数与此相同: Private Sub Form_MouseDown(Button As Integer,Shift As Integer,X As Integer,Y As Integer)   End Sub 其中: (1)、Button参数 Button参数带回来的信息是用户按了鼠标上的哪能一个键,左键?右键?还是中间键? Button=1,说明用户按的是鼠标的左键; Button=2,说明用户按的是鼠标的右键; Button=4,说明用户按的是鼠标的中间键;   (2)、Shift参数 Shift参数带回来的是用户按鼠标按键时是否同时按下了键盘上的Shift、Ctrl、Alt键。 Shift=1,说明用户在按下鼠标按键的同时,还按下了键盘上的Shift键;Shift=2,说明用户在按下鼠标按键的同时,还按下了键盘上的Ctrl键;

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所示。

vb 属性、方法和事件概述

Visual Basic 属性、方法和事件 属性、方法和事件概述 Visual Basic 的窗体和控件是具有自己的属性、方法和事件的对象。可以把属性看作一个对象的性质,把方法看作对象的动作,把事件看作对象的响应。日常生活中的对象,如小孩玩的气球同样具有属性、方法和事件。气球的属性包括可以看到的一些性质,如它的直径和颜色。其它一些属性描述气球的状态(充气的或未充气的)或不可见的性质,如它的寿命。通过定义,所有气球都具有这些属性;这些属性也会因气球的不同而不同。 气球还具有本身所固有的方法和动作。如:充气方法(用氦气充满气球的动作),放气方法(排出气球中的气体)和上升方法(放手让气球飞走)。所有的气球都具备这些能力。 气球还有预定义的对某些外部事件的响应。例如,气球对刺破它的事件响应是放气,对放手事件的响应是升空。 如果能对气球编程的话,Visual Basic 代码将如下所示。其作用是设置气球的属性: Balloon.Color = Red Balloon.Diameter = 10 Balloon.Inflated = True 注意代码的语法,首先是对象(Balloon),接着是属性(Color),然后是赋值(Red)。重复这条语句,但是,换一个不同的值,就可以改变气球的颜色。属性也可以在程序设计阶段在“属性”窗口中设置。 调用气球的方法是这样的: Balloon.Inflate Balloon.Deflate Balloon.Rise 5 它的语法与属性的语法相似,对象(一个名词)后面紧跟着方法(一个动词)。在第三个例子中有一个附加项,称为一个参数,表示气球上升的高度。一些方法有一个或多个参数,它们对执行的动作做进一步的描述。 气球对一个事件的响应如下所示: Sub Balloon_Puncture() Balloon.Deflate Balloon.MakeNoise "Bang" Balloon.Inflated = False

重装系统时USB接口鼠标和键盘不能使用的解决办法

重装系统时,U S B接口鼠标和键盘不能使用的解决办法现在的电脑基本都是USB接口的鼠标和键盘了。但是有的朋友想重装系统的时候,发现USB鼠标和键盘都不能用,安全模式也无法进入,按不了上面的选项,同时等那段时间过后自动进入系统后就可以用了,简直没办法重装系统了,这个是怎么回事呢? 这是因为你的键盘是USB插口的,因为没进入系统的时候USB还无法实现数据传输。建议使用普通的圆口的,如果没有圆口鼠标,就请重新设置bios里的USB选项把USB键盘功能功能打开.就可以了 开启USB鼠标键盘功能步骤如下: 重起电脑,按住DEL不放,进入蓝屏的bios设置页面,弹出菜单,这个是左边的一行: StandardCmosFeatures AdvancedBiosFeatures InTegratedperiphrels PowerManageMentSetup Pnp/PclContigurations OcHealthStatus 按键盘上的向上下左右小箭头“移动光标”位置,键盘最左上角的“Esc”菜单键是返回当进入Bios时的菜单,回车是“确定”,按F10保存退出,最后再按“Y”,也就是Yes,是的意思,再确定一下。请朋友们看准,不要胡乱改参数,这个设置是很简单的,不放心的朋友可以笔记一下。 进入InTegratedperiphrels(集成设备设定,选择ONBOARDDERIVE,再选择USBKEYBOARDSUPPOR设置为Enable即可。下面还有个MOUSESUPPOR,是USB鼠标的支持。 (转)另外关于U盘、USB鼠标、USB键盘,在进入安装界面后失效的问题(无论是否插在3.0都会失效),其根本原因是intelXHCI控制器的问题,intel的xhci控制器提供了一个smartauto功能,俗称“聪明”,但聪明过

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这两个参数是随消

相关主题
文本预览
相关文档 最新文档