首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >xbindkeys绑定光标移动到左右键按下

xbindkeys绑定光标移动到左右键按下
EN

Unix & Linux用户
提问于 2022-07-22 22:00:50
回答 1查看 78关注 0票数 0

我想编程我的鼠标,这样,每当光标被移向右或左,操作系统解释为一个右键按或左键按。哪些鼠标事件对应于游标的右和左,以及在xbindkey中将使用什么语法(因为这似乎是用于xbindkey的正确工具)。

使用xev -event mouse,我看到光标的移动会给出MotionNotify事件--会不会以某种方式导致该事件的接收导致右/左键按下?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2022-07-22 23:49:32

这个使用平普特包的python脚本达到了预期的目标。

代码语言:javascript
复制
import time
from pynput import mouse, keyboard
from pynput.keyboard import Key, Controller

keyboard = Controller()

prevX = -1
def on_move(x, y):
  global prevX
  if prevX == -1:
    prevX = x
  elif prevX < x:
    keyboard.press(Key.right)
    keyboard.release(Key.right)
  elif prevX > x:
    keyboard.press(Key.left)
    keyboard.release(Key.left)
  if prevX != x:
    prevX = x

listener = mouse.Listener(
  on_move=on_move)
listener.daemon = True
listener.start()

while True:
  time.sleep(1)

调整为只在一个方向上的鼠标事件确定数量之后才触发键按:

代码语言:javascript
复制
import time
from pynput import mouse, keyboard
from pynput.keyboard import Key, Controller

keyboard = Controller()

sensitivity = 20 # number of events to trigger key press
prevX = -1
leftEvents = 0
rightEvents = 0
def on_move(x, y):
  global prevX
  global leftEvents
  global rightEvents

  if prevX == -1:
    prevX = x
  elif prevX < x:
    rightEvents += 1
    leftEvents = 0
  elif prevX > x:
    leftEvents += 1
    rightEvents = 0
  if rightEvents == sensitivity:
    keyboard.press(Key.right)
    keyboard.release(Key.right)
    rightEvents = 0
  if leftEvents == sensitivity:
    keyboard.press(Key.left)
    keyboard.release(Key.left)
    leftEvents = 0
  if prevX != x:
    prevX = x

listener = mouse.Listener(
  on_move=on_move)
listener.daemon = True
listener.start()

while True:
  time.sleep(1)
票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/710960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档