在Linux中使用Python模拟键盘按键

之前在做自动化测试中需要用Python在linux中模拟Ctrl+V 进行路径粘贴,试了很多种方法,起初用了xerox和pyperclip这两个python库,但打开对话框后调用粘贴API无法进行粘贴,不知道为什么。

然后发现了virtkey这个库,这个库可以在linux 中模拟键盘按键,但网上资料甚少。这个库主要有两个API

1、press_keysym/release_keysym
2、press_unicode/release_unicode

第一个接受keysym作为参数,第二个接受键盘的unicode,键盘unicode用来模拟字母键还是很方便的,但要模拟Ctrl这样的键一直没找到方法,最终找到了一个关于keysym的表,解决了问题,表如下

 

.keysym

.keycode

.keysym_num

Key

Alt_L

64

65513

左手边的Alt键

Alt_R

113

65514

右手边的Alt键

BackSpace

22

65288

BackSpace

Cancel

110

65387

Pause Break

Caps_Lock

66

65549

CapsLock

Control_L

37

65507

左手边的Control键

Control_R

109

65508

右手边的Control键

Delete

107

65535

Delete

Down

104

65364

方向键:下

End

103

65367

End

Escape

9

65307

Esc

Execute

111

65378

系统调用

F1

67

65470

F1

F2

68

65471

F2

Fi

66+i

65469+i

Fi

F12

96

68481

F12

Home

97

65360

Home

Insert

106

65379

Insert

Left

100

65361

方向键:左

Linefeed

54

106

Linefeed(Ctrl-j)

KP_0

90

65438

数字键:0

KP_1

87

65436

数字键:1

KP_2

88

65433

数字键:2

KP_3

89

65435

数字键:3

KP_4

83

65430

数字键:4

KP_5

84

65437

数字键:5

KP_6

85

65432

数字键:6

KP_7

79

65429

数字键:7

KP_8

80

65431

数字键:8

KP_9

81

65434

数字键:9

KP_Add

86

65451

运算键:+

KP_Begin

84

65437

小键盘:5号键

KP_Decimal

91

65439

“.”键

KP_Delete

91

65439

Delete

KP_Divide

112

65455

“/”键

KP_Down

88

65433

方向键:下

KP_End

87

65436

End

KP_Enter

108

65421

Enter

KP_Home

79

65429

Home

KP_Insert

90

65438

Insert

KP_Left

83

65430

方向键:左

KP_Multiply

63

65450

运算键:*

KP_Next

89

65435

PageDown

KP_Prior

81

65434

PageUp

KP_Right

85

65432

方向键:右

KP_Subtract

82

65453

“-”键

KP_Up

80

65431

方向键:上

Next

105

65366

PageDown

Num_Lock

77

65407

NumLock

Pause

110

65299

Pause

Print

111

65377

PrintScreen

Prior

99

65365

PageUp

Return

36

65293

回车键

Right

102

65363

方向键:右

Scroll_Lock

78

65300

ScrollLock

Shift_L

50

65505

左手边的Shift键

Shift_R

62

65506

有手边的Shift键

Tab

23

65289

Tab

Up

98

65362

方向键:上

 

至此,我们可以写出模拟Ctrl+V的代码

import virtkey
import time


v = virtkey.virtkey()
v.press_keysym(65507) #Ctrl键位
v.press_unicode(ord('v')) #模拟字母V
v.release_unicode(ord('v'))
v.release_keysym(65507)
time.sleep(5)
v.press_keysym(65421) #Enter
v.release_keysym(65421)

你可能感兴趣的:(工作问题记录)