[Python] [evdev]点击鼠标后获取光标位置

时间:2013-08-01 14:11:44

标签: python linux mouseevent evdev

我遇到了一个问题,我需要捕获来自鼠标的所有事件。浏览网页后,我阅读了有关evdev模块的信息并尝试了一下。

我现在有一个脚本,我从鼠标中抓取所有事件,以防止与其他窗口的其他交互(我最初的问题中的重点)。 有了它,我可以在单击按钮时以及鼠标移动时读取事件。但是,单击按钮时,我找不到如何获取光标位置。

#!/usr/bin/env python
# -*- coding: utf8 -*-

from evdev import InputDevice, categorize, ecodes
from os import listdir
from os.path import isfile, isdir, exists, join

def my_list():
    print('*** my_list(): begin.')
    devices = map(InputDevice, list_devices())
    for dev in devices:
        print('%-20s %-32s %s' % (dev.fn, dev.name, dev.phys))
        print('*** my_list(): end.')

def monitor_device(dev):
    for event in dev.read_loop():
        if event.type == ecodes.EV_KEY:
            print(categorize(event))
            print(event)

if __name__ == "__main__" :
    dev_path = '/dev/input/event17'
    if(exists(dev_path)):
        device = InputDevice(dev_path)
        try:
            device.grab()
            monitor_device(device)
        except KeyboardInterrupt :
            device.ungrab()
            print('User aborted the program.')

我怎样才能用evdev做到这一点?如果我不能,还有另一种方法吗?

非常感谢任何帮助。 :)

1 个答案:

答案 0 :(得分:0)

您可以侦听ABS_MT_POSITION_X和ABS_MT_POSITION_Y事件,并将值存储在x,y变量中。然后,当您收到BTN_TOUCH事件时,您便知道该位置。