MacOS获取辅助功能权限控制鼠标点击事件
昨晚玩一个模拟经营的游戏,由于升级太慢我就不停的种树卖树来换取经验值。不过重复点击10几分钟后,实在受不了。网上本来准备找个鼠标自动点击的软件用用。结果没找到趁手的。如是自己写了个。
自己设置需要点击的一组动作,长按(100,200),点击(576,789),点击(750,550)。类似在对应坐标点操作鼠标。
原理非常简单,我就不贴代码了,主要说下如何控制鼠标点击事件。
注册系统辅助权限,这里会触发用户授权
let opts = NSDictionary(object: kCFBooleanTrue,
forKey: kAXTrustedCheckOptionPrompt.takeUnretainedValue() as NSString
) as CFDictionary
guard AXIsProcessTrustedWithOptions(opts) == true else { return }
鼠标事件
// 鼠标左键按下
let mouseDown = CGEvent(mouseEventSource: nil,
mouseType: .leftMouseDown,
mouseCursorPosition: CGPoint(x: 200, y: 300),
mouseButton: .left
)
mouseDown?.post(tap: .cghidEventTap)
// 鼠标左键抬起
let mouseUp = CGEvent(mouseEventSource: nil,
mouseType: .leftMouseUp,
mouseCursorPosition: CGPoint(x: 200, y: 300),
mouseButton: .left
)
mouseUp?.post(tap: .cghidEventTap)
以上两个事件,组成了一个鼠标左键在坐标(200,300)点击事件
MouseType支持类型
/* Constants that specify the different types of input events. */
public enum CGEventType : UInt32 {
/* The null event. */
case null
/* Mouse events. */
case leftMouseDown
case leftMouseUp
case rightMouseDown
case rightMouseUp
case mouseMoved
case leftMouseDragged
case rightMouseDragged
/* Keyboard events. */
case keyDown
case keyUp
case flagsChanged
/* Specialized control devices. */
case scrollWheel
case tabletPointer
case tabletProximity
case otherMouseDown
case otherMouseUp
case otherMouseDragged
/* Out of band event types. These are delivered to the event tap callback
to notify it of unusual conditions that disable the event tap. */
case tapDisabledByTimeout
case tapDisabledByUserInput
}
长按事件
有人可能会留意到上述没有长按事件
长按事件就是 .leftMouseDown, 达到你需要长按的时间后,再触发.leftMouseUp
扩展
一般情况你做好一系列点击组合后,是用快捷键触发开始的。那么MacOS中如何监听系统快捷键呢或者键盘事件?
添加系统键盘监听
NSEvent.addGlobalMonitorForEvents(matching: .keyDown, handler: {
[unowned self] event in
// num1:18, num2:19
if event.keyCode == 18 {
// self.startAction()
}
})
MacOS获取辅助功能权限控制鼠标点击事件的更多相关文章
- JS控制鼠标点击事件
鼠标点击事件就是当鼠标点击元素时,就会出现另一个窗口,类似于百度首页中右上角的“登录”这个按钮,当鼠标点击 登录时,就会出现登录窗口.大体的意思就是这样,直接上代码了,简单易懂. <!DOCTY ...
- Echarts如何添加鼠标点击事件?防止重复触发点击事件
Echarts如何添加鼠标点击事件? 1.通常我们只使用了以下代码,通过配置项和数据显示图表. var myChart = echarts.init(document.getElementById(' ...
- css禁用鼠标点击事件
css禁用鼠标点击事件 .disabled { pointer-events: none; } <div class="main-container disabled"> ...
- Listbox与dataGridView的获取鼠标点击事件的区别!!!
lisxian.SelectedIndex = index; Listbox获取鼠标的代码!!!! DataGridViewRow currenRow = this.dgvxian3.Rows[ind ...
- easyui-numberbox后台获取数据后,鼠标一点击就自动清空了
<input type="text" name="txtMeterInitData" id="txtMeterInitData" cl ...
- jQuery模拟鼠标点击事件失效的问题
最近使用jQuery操作浏览器获取数据,需要对分页的信息进行处理,发现直接使用$('div#pager a.next').click();的这种写法无法触发点击事件. 使用trigger('click ...
- JavaScript与jQuery关于鼠标点击事件
即实现鼠标点击其中一个菜单发生样式的改变,当点击下一个菜单时,当前菜单样式改变,其他菜单均变为之前样式. 用JavaScript,jQuery都可以实现,只是后者是封装的JavaScript库,具有s ...
- WPF基于3D对象捕获鼠标点击事件
ModelUIElment3DUIElment3D是.NET3.5新增的类,替代了ModelVisual3D.ModelVisual3D有2个派生类ModelUIElment3D和ContainerU ...
- JavaFX如何制作鼠标多击事件?
JavaFX制作鼠标双击或者多击事件需要用到getClickCount()方法,这个方法需要添加addEventHandler()方法,addEventHandler()是事件方法. 1 scene. ...
随机推荐
- FTP方式发布webservice
以前我发布webservice的步骤是:在 C:\inetpub\wwwroot\路径下发布webservice,然后再在IIS中添加网站并制定路径,这样每次发布了webservice后,需要把发布 ...
- APP开发外包时常见的错误
时代在发展,科技在进步,很多企业都想要开发出属于自己的一款APP.然而,不是每个企业都有开发团队或是专门雇一个技术人员来做的,有一个好方法就是把开发APP的工作外包出去,找一个比较好的外包公司根据自己 ...
- 百度URL 部分参数
[Baidu URL的部分参数] 1.Baidu Form表单如下: 2.部分参数解析 wd 查询关键字,就是你要搜索的内容. bs 上一次搜索的词或者内容: rn 搜索结果页每页显示的数目,默认 ...
- 线段树——codevs 1690 开关灯
先来一发题目: 1690 开关灯 时间限制: 1 s 空间限制: 128000 KB 题目描述 Description YYX家门前的街上有N(2<=N<=100000)盏路灯,在晚上六点 ...
- [ZJOI2015]幻想乡战略游戏
Description 傲娇少女幽香正在玩一个非常有趣的战略类游戏,本来这个游戏的地图其实还不算太大,幽香还能管得过来,但是不知道为什么现在的网游厂商把游戏的地图越做越大,以至于幽香一眼根本看不过来, ...
- 洛谷P3168 [CQOI2015]任务查询系统
#include<cstdio> #include<cstdlib> #include<algorithm> #include<cstring> #in ...
- UVALive - 3027:Corporative Network
加权并查集 #include<cstdio> #include<cstdlib> #include<algorithm> #include<cstring&g ...
- hdu 5317 合数分解+预处理
RGCDQ Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submi ...
- poj 3335 Rotating Scoreboard(半平面交)
Rotating Scoreboard Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 6420 Accepted: 25 ...
- [APIO2009]
来自FallDream的博客,不经允许,请勿转载,谢谢. ------------------------------------------------------ 1.Oil 给定一个n*m的矩阵 ...