使用Python做一个监听鼠标键盘(全局的)的代码实现。

代码一:这个代码较为简单,只实现了监听键盘。不过感觉上,它比“代码二”,更为基础。

 1 #!/usr/bin/env python
 2 #--*-- coding: UTF-8 --*--
 3 
 4 from evdev import InputDevice;
 5 from select import select;
 6 
 7 def detectInputKey():
 8     dev = InputDevice('/dev/input/event4');
 9     while True:
10         select([dev], [], []);
11         for event in dev.read():
12             print "code:%s value:%s" % (event.code, event.value)
13 
14 detectInputKey();
View Code

代码二:这个代码用到的组件,感觉比“代码一”更为高级。

 1 #!/usr/bin/env python
 2 # -*- coding: utf-8 -*-
 3 #
 4 
 5 import pythoncom
 6 import pyHook
 7 
 8 def onMouseEvent(event):
 9     # 监听鼠标事件
10     print "MessageName:", event.MessageName
11     print "Message:", event.Message
12     print "Time:", event.Time
13     print "Window:", event.Window
14     print "WindowName:", event.WindowName
15     print "Position:", event.Position
16     print "Wheel:", event.Wheel
17     print "Injected:", event.Injected
18     print "---"
19 
20     # 返回 True 以便将事件传给其它处理程序
21     # 注意,这儿如果返回 False ,则鼠标事件将被全部拦截
22     # 也就是说你的鼠标看起来会僵在那儿,似乎失去响应了
23     return True
24 
25 def onKeyboardEvent(event):
26     # 监听键盘事件
27     print "MessageName:", event.MessageName
28     print "Message:", event.Message
29     print "Time:", event.Time
30     print "Window:", event.Window
31     print "WindowName:", event.WindowName
32     print "Ascii:", event.Ascii, chr(event.Ascii)
33     print "Key:", event.Key
34     print "KeyID:", event.KeyID
35     print "ScanCode:", event.ScanCode
36     print "Extended:", event.Extended
37     print "Injected:", event.Injected
38     print "Alt", event.Alt
39     print "Transition", event.Transition
40     print "---"
41 
42     # 同鼠标事件监听函数的返回值
43     return True
44 
45 def main():
46     # 创建一个“钩子”管理对象
47     hm = pyHook.HookManager()
48 
49     # 监听所有键盘事件
50     hm.KeyDown = onKeyboardEvent
51     # 设置键盘“钩子”
52     hm.HookKeyboard()
53 
54     # 监听所有鼠标事件
55     hm.MouseAll = onMouseEvent
56     # 设置鼠标“钩子”
57     hm.HookMouse()
58 
59     # 进入循环,如不手动关闭,程序将一直处于监听状态
60     pythoncom.PumpMessages(10000)
61 
62 if __name__ == "__main__":
63     main()
监听代码

 

posted on 2016-10-01 09:32  闫冬 的地盘  阅读(938)  评论(0)    收藏  举报