pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

在 Mac OS X 中模擬按鍵事件

Simulating key press events in Mac OS X(在 Mac OS X 中模擬按鍵事件)
本文介紹了在 Mac OS X 中模擬按鍵事件的處理方法,對(duì)大家解決問(wèn)題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧!

問(wèn)題描述

我正在編寫一個(gè)應(yīng)用程序,我需要在 Mac 上模擬按鍵事件,給定代表每個(gè)鍵的代碼.看來(lái)我需要使用 CGEventCreateKeyboardEvent 函數(shù)來(lái)創(chuàng)建事件.問(wèn)題是這個(gè)功能需要一個(gè)Mac鍵碼,而我有的是一個(gè)代表特定鍵的代碼.因此,例如,我收到:

I'm writing an app where I need to simulate key press events on a Mac, given a code that represents each key. It seems I need to use the CGEventCreateKeyboardEvent function to create the event. The problem is that this function needs a Mac keycode, and what I have is a code that represents the specific key. So, for example, I receive:

KEY_CODE_SHIFTKEY_CODE_A - 這些都是在某處定義的數(shù)字常量.

KEY_CODE_SHIFT or KEY_CODE_A - these are both numeric constants defined somewhere.

我需要將這些常量轉(zhuǎn)換為 CGKeyCode 值.

I need to take these constants and turn them into CGKeyCode values.

我目前的嘗試使用類似于this SO question的代碼.問(wèn)題是它只適用于可打印的字符.如果所有其他方法都失敗了,我不會(huì)對(duì)轉(zhuǎn)換進(jìn)行硬編碼,但這意味著我需要一個(gè)可能的 CGKeyCode 值表,但我還沒有找到.

My current attempt uses code similar to this SO question. The problem is that it only works for printable characters. If all else fails, I'm not above hard coding the conversion, but that would mean that I'd need a table of possible CGKeyCode values, which I have not yet been able to find.

有什么想法嗎?

推薦答案

這是模擬 Cmd-S 動(dòng)作的代碼:

Here's code to simulate a Cmd-S action:

CGKeyCode inputKeyCode = kVK_ANSI_S;
CGEventSourceRef source = CGEventSourceCreate(kCGEventSourceStateCombinedSessionState);
CGEventRef saveCommandDown = CGEventCreateKeyboardEvent(source, inputKeyCode, YES);
CGEventSetFlags(saveCommandDown, kCGEventFlagMaskCommand);
CGEventRef saveCommandUp = CGEventCreateKeyboardEvent(source, inputKeyCode, NO);

CGEventPost(kCGAnnotatedSessionEventTap, saveCommandDown);
CGEventPost(kCGAnnotatedSessionEventTap, saveCommandUp);

CFRelease(saveCommandUp);
CFRelease(saveCommandDown);
CFRelease(source);

CGKeyCode 只不過(guò)是一個(gè)無(wú)符號(hào)整數(shù):

A CGKeyCode is nothing more than an unsigned integer:

typedef uint16_t CGKeyCode;  //From CGRemoteOperation.h

您真正的問(wèn)題是將字符(可能是 NSString)轉(zhuǎn)換為鍵碼.幸運(yùn)的是,Shortcut Recorder 項(xiàng)目的代碼可以在 SRKeyCodeTransformer.m 文件.它非常適合將字符串轉(zhuǎn)換為鍵碼并再次返回.

Your real issue will be turning a character (probably an NSString) into a keycode. Fortunately, the Shortcut Recorder project has code that will do just that in the SRKeyCodeTransformer.m file. It's great for transforming a string to a keycode and back again.

這篇關(guān)于在 Mac OS X 中模擬按鍵事件的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,也希望大家多多支持html5模板網(wǎng)!

【網(wǎng)站聲明】本站部分內(nèi)容來(lái)源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問(wèn)題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請(qǐng)聯(lián)系我們刪除處理,感謝您的支持!

相關(guān)文檔推薦

How do I set the icon for my application in visual studio 2008?(如何在 Visual Studio 2008 中為我的應(yīng)用程序設(shè)置圖標(biāo)?)
Convert CString to const char*(將 CString 轉(zhuǎn)換為 const char*)
Remove secure warnings (_CRT_SECURE_NO_WARNINGS) from projects by default in Visual Studio(默認(rèn)情況下,在 Visual Studio 中從項(xiàng)目中刪除安全警告 (_CRT_SECURE_NO_WARNINGS))
How do I start a new CUDA project in Visual Studio 2008?(如何在 Visual Studio 2008 中啟動(dòng)新的 CUDA 項(xiàng)目?)
Exporting classes containing `std::` objects (vector, map etc.) from a DLL(從 DLL 導(dǎo)出包含 `std::` 對(duì)象(向量、映射等)的類)
What are some reasons a Release build would run differently than a Debug build(發(fā)布版本與調(diào)試版本的運(yùn)行方式不同的一些原因是什么)
主站蜘蛛池模板: DNA亲子鉴定_DNA基因检测中心官方预约平台-严选好基因网 | 二手注塑机回收_旧注塑机回收_二手注塑机买卖 - 大鑫二手注塑机 二手光谱仪维修-德国OBLF光谱仪|进口斯派克光谱仪-热电ARL光谱仪-意大利GNR光谱仪-永晖检测 | 成都亚克力制品,PVC板,双色板雕刻加工,亚克力门牌,亚克力标牌,水晶字雕刻制作-零贰捌广告 | 环比机械 | 福兰德PVC地板|PVC塑胶地板|PVC运动地板|PVC商用地板-中国弹性地板系统专业解决方案领先供应商! 福建成考网-福建成人高考网 | 置顶式搅拌器-优莱博化学防爆冰箱-磁驱搅拌器-天津市布鲁克科技有限公司 | 电销卡_北京电销卡_包月电话卡-豪付网络 | 家用净水器代理批发加盟_净水机招商代理_全屋净水器定制品牌_【劳伦斯官网】 | 作文导航网_作文之家_满分作文_优秀作文_作文大全_作文素材_最新作文分享发布平台 | 数显水浴恒温振荡器-分液漏斗萃取振荡器-常州市凯航仪器有限公司 | 气密性检测仪_气密性检测设备_防水测试仪_密封测试仪-岳信仪器 | 安全,主动,被动,柔性,山体滑坡,sns,钢丝绳,边坡,防护网,护栏网,围栏,栏杆,栅栏,厂家 - 护栏网防护网生产厂家 | 东莞市踏板石餐饮管理有限公司_正宗桂林米粉_正宗桂林米粉加盟_桂林米粉加盟费-东莞市棒子桂林米粉 | 手术室净化厂家_成都实验室装修公司_无尘车间施工单位_洁净室工程建设团队-四川华锐16年行业经验 | 喷砂机厂家_自动除锈抛丸机价格-成都泰盛吉自动化喷砂设备 | 万烁建筑设计院-建筑设计公司加盟,设计院加盟分公司,市政设计加盟 | 酶联免疫分析仪-多管旋涡混合仪|混合器-莱普特科学仪器(北京)有限公司 | 飞象网 - 通信人每天必上的网站 全球化工设备网—化工设备,化工机械,制药设备,环保设备的专业网络市场。 | 铸铁平台,大理石平台专业生产厂家_河北-北重机械 | 模具硅橡胶,人体硅胶,移印硅胶浆厂家-宏图硅胶科技 | 动物解剖台-成蚊接触筒-标本工具箱-负压实验台-北京哲成科技有限公司 | EPDM密封胶条-EPDM密封垫片-EPDM生产厂家 | 龙门加工中心-数控龙门加工中心厂家价格-山东海特数控机床有限公司_龙门加工中心-数控龙门加工中心厂家价格-山东海特数控机床有限公司 | 发电机组|柴油发电机组-批发,上柴,玉柴,潍柴,康明斯柴油发电机厂家直销 | 刹车盘机床-刹车盘生产线-龙口亨嘉智能装备 | 步入式高低温测试箱|海向仪器| 艺术生文化课培训|艺术生文化课辅导冲刺-济南启迪学校 | 四合院设计_四合院装修_四合院会所设计-四合院古建设计与建造中心1 | 电镀标牌_电铸标牌_金属标贴_不锈钢标牌厂家_深圳市宝利丰精密科技有限公司 | 医学模型生产厂家-显微手术模拟训练器-仿真手术模拟训练系统-北京医教科技 | 旗杆生产厂家_不锈钢锥形旗杆价格_铝合金电动旗杆-上海锥升金属科技有限公司 | 混合气体腐蚀试验箱_盐雾/硫化氢/气体腐蚀试验箱厂家-北京中科博达 | 河南空气能热水器-洛阳空气能采暖-洛阳太阳能热水工程-洛阳润达高科空气能商行 | 周易算网-八字测算网 - 周易算网-宝宝起名取名测名字周易八字测算网 | 上海璟文空运首页_一级航空货运代理公司_机场快递当日达 | 拉力测试机|材料拉伸试验机|电子拉力机价格|万能试验机厂家|苏州皖仪实验仪器有限公司 | 新疆散热器,新疆暖气片,新疆电锅炉,光耀暖通公司 | 济南菜鸟驿站广告|青岛快递车车体|社区媒体-抖音|墙体广告-山东揽胜广告传媒有限公司 | 筛分机|振动筛分机|气流筛分机|筛分机厂家-新乡市大汉振动机械有限公司 | 顶空进样器-吹扫捕集仪-热脱附仪-二次热解吸仪-北京华盛谱信仪器 | 【直乐】河北石家庄脊柱侧弯医院_治疗椎间盘突出哪家医院好_骨科脊柱外科专业医院_治疗抽动症/关节病骨伤权威医院|排行-直乐矫形中医医院 |