键盘控制鼠标移动

news/2024/7/5 1:45:51

记录一下,

windows用autohotkeys

^up::MouseMove,0,-75,0,r
^+up::MouseMove,0,-15,0,r
^down::MouseMove,0,75,0,r
^+down::MouseMove,0,15,0,r
^left::mousemove,-75,0,0,r
^+left::mousemove,-15,0,0,r
^right::mousemove,75,0,0,r
^+right::mousemove,15,0,0,r
^space::MouseClick, left
^+space::MouseClick, right

mac用hammerspoon ,这个还没做好,无法长按实现持续移动,鼠标点击也还没做,先用着

local screens = hs.screen.allScreens()

function moveleft()
    local cs = hs.mouse.getRelativePosition()
    hs.mouse.setRelativePosition({x= cs["x"]-100, y=cs["y"] + 0}, screens[1])
end

function moveleft_accurate()
    local cs = hs.mouse.getRelativePosition()
    hs.mouse.setRelativePosition({x= cs["x"]-10, y=cs["y"] + 0}, screens[1])
end

function moveright()
    local cs = hs.mouse.getRelativePosition()
    hs.mouse.setRelativePosition({x= cs["x"]+100, y=cs["y"] + 0}, screens[1])
end

function moveright_accurate()
    local cs = hs.mouse.getRelativePosition()
    hs.mouse.setRelativePosition({x= cs["x"]+10, y=cs["y"] + 0}, screens[1])
end


function moveup()
    local cs = hs.mouse.getRelativePosition()
    hs.mouse.setRelativePosition({x= cs["x"], y=cs["y"]-100}, screens[1])
end

function moveup_accurate()
    local cs = hs.mouse.getRelativePosition()
    hs.mouse.setRelativePosition({x= cs["x"], y=cs["y"]-10}, screens[1])
end

function movedown()
    local cs = hs.mouse.getRelativePosition()
    hs.mouse.setRelativePosition({x= cs["x"], y=cs["y"]+100}, screens[1])
end

function movedown_accurate()
    local cs = hs.mouse.getRelativePosition()
    hs.mouse.setRelativePosition({x= cs["x"], y=cs["y"]+10}, screens[1])
end

function MouseleftClick()
    local cs = hs.mouse.getRelativePosition()
    hs.eventtap.leftClick(cs)
end

function MouseRightClick()
    local cs = hs.mouse.getRelativePosition()
    hs.eventtap.RightClick(cs)
end

hs.hotkey.bind({"alt"}, "Left", moveleft)
hs.hotkey.bind({"alt","cmd"}, "Left", moveleft_accurate)
hs.hotkey.bind({"alt"}, "Right", moveright)
hs.hotkey.bind({"alt","cmd"}, "Right", moveright_accurate)
hs.hotkey.bind({"alt"}, "Up", moveup)
hs.hotkey.bind({"alt","cmd"}, "Up", moveup_accurate)
hs.hotkey.bind({"alt"}, "Down", movedown)
hs.hotkey.bind({"alt","cmd"}, "Down", movedown_accurate)
hs.hotkey.bind({"alt"}, "Space", MouseleftClick)
hs.hotkey.bind({"alt", "cmd"}, "Space", MouseRightClick)

http://lihuaxi.xjx100.cn/news/1344017.html

相关文章

Unity游戏源码分享-Unity手游火柴忍者游戏StickmanDojo

Unity游戏源码分享-Unity手游火柴忍者游戏StickmanDojo 项目地址:https://download.csdn.net/download/Highning0007/88050234

解决meta quest2时间对不上问题

解决meta quest2时间对不上问题,与标准时间相差大于1min 最近游玩quest2时发现时间对不上导致一系列问题,遂搜索解决方案 步骤如下 使用sidequest ,如果还没下可以到sidequest官网下载电脑版本 点此进入官网https://sidequestvr.com/使用us…

explain 是干嘛的

explain 是干嘛的 1.explain的作用 在MySQL中,EXPLAIN是一个用于查询优化的关键字。它可以用于分析查询语句的执行计划,帮助开发人员和数据库管理员理解查询的执行方式、查询涉及的表和索引、连接类型、查询优化器的决策等信息。 通过使用EXPLAIN关键…

fastapi初使用,构建自己的api

文章目录 1、安装2、api实现2.1、 app.get("/1")2.2、app.get("/{a}")2.3、app.get("/{a}{b}")2.4、函数和api分离 3、运行 原文链接:https://wangguo.site/posts/d98bb3c9.html fastapi 是一个基于 Python 的 API 构建框架&#xff…

青岛大学_王卓老师【数据结构与算法】Week05_12_队列的类型定义_学习笔记

本文是个人学习笔记,素材来自青岛大学王卓老师的教学视频。 一方面用于学习记录与分享, 另一方面是想让更多的人看到这么好的《数据结构与算法》的学习视频。 如有侵权,请留言作删文处理。 课程视频链接: 数据结构与算法基础…

Linux系统编程(守护进程)

文章目录 前言一、守护进程概念二、空洞文件三、创建守护进程总结 前言 本篇文章我们来讲解守护进程,守护进程在进程中是一个比较重要的概念,在笔试面试中也经常考到,这篇文章就带大家来学习一下什么是守护进程。 一、守护进程概念 守护进…

吴恩达机器学习2022-Jupyter

1 可选实验室: Python、 NumPy 和矢量化 简要介绍本课程中使用的一些科学计算。特别是 NumPy 科学计算包及其与 python 的使用。 2 目标 在这个实验室里将回顾课程中使用的 NumPy 和 Python 的特性。 Python 是本课程中使用的编程语言。NumPy 库扩展了 python 的基本功能&a…

基于PyQt5的图形化界面开发——打砖块

目录 0. 前言1. 砖块类定义2. 挡板类定义3. 碰撞检测4. 小球和游戏初始化5. 完整代码6. 运行效果演示7. Pyinstaller 编译exe程序PyQt5 0. 前言 本文使用 PyQt5实现一个打砖块小游戏 操作系统:Windows10 专业版 开发环境:Pycahrm Comunity 2022.3 Pyt…