CMD +期权+ D可可模拟 [英] CMD+Option+D simulation in Cocoa

查看:339
本文介绍了CMD +期权+ D可可模拟的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要同时模拟CMD +期权+ D键preSS。我已经做了所有类型的寻找,至今我见过的最好的办法是做这样的:

I need to simulate a CMD+Option+D key press simultaneously. I've done all kind of looking and the best way so far I've seen is to do this:

CGEventSourceRef src =
    CGEventSourceCreate(kCGEventSourceStateHIDSystemState);

    CGEventRef cmdd = CGEventCreateKeyboardEvent(src, kVK_Command, true);
    CGEventRef cmdu = CGEventCreateKeyboardEvent(src, kVK_Command, false);
    CGEventRef optd = CGEventCreateKeyboardEvent(src, kVK_Option, true);
    CGEventRef optu = CGEventCreateKeyboardEvent(src, kVK_Option, false);
    CGEventRef dd = CGEventCreateKeyboardEvent(src, kVK_ANSI_D, true);
    CGEventRef du = CGEventCreateKeyboardEvent(src, kVK_ANSI_D, false);

    CGEventSetFlags(dd, kCGEventFlagMaskCommand); //NO idea why this is here.
    CGEventSetFlags(du, kCGEventFlagMaskCommand); //NO idea why this is here.


    CGEventTapLocation loc = kCGHIDEventTap; // kCGSessionEventTap also works
    CGEventPost(loc, cmdd); //Cmd down
    CGEventPost(loc, optd); //Option down
    CGEventPost(loc, dd);   //D down
    CGEventPost(loc, cmdu); //Cmd up
    CGEventPost(loc, optu); //Option up
    CGEventPost(loc, du);   //D up

    CFRelease(cmdd);
    CFRelease(cmdu);
    CFRelease(optd);
    CFRelease(optu);
    CFRelease(dd);
    CFRelease(du);
    CFRelease(src);

但是,这样做就像它当我用我的键盘,这并不切换被告席?为什么是这样?我究竟做错了什么?我进口Carbon.h,所以它看起来像这应该工作?

However, doing this does not toggle the dock like it does when I use my keyboard? Why is this? What am I doing wrong? I imported Carbon.h, so it seems like this should work?

推荐答案

你试试这个?

// as before ...
CGEventSetFlags(dd, kCGEventFlagMaskCommand ^ kCGEventFlagMaskAlternate); 
CGEventSetFlags(du, kCGEventFlagMaskCommand ^ kCGEventFlagMaskAlternate);
// continues...

我认为你必须给D活动同时设置命令的的备用(option键)标志。

I think you have to set both the command and alternate (option key) flags for the D event.

这篇关于CMD +期权+ D可可模拟的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆