gpt4 book ai didi

objective-c - 捕获 NSEvent 以添加修饰符问题

转载 作者:行者123 更新时间:2023-12-03 17:49:43 26 4
gpt4 key购买 nike

我正在尝试以编程方式在 cocoa 应用程序中为我的用户按住选项键。

在我的一生中,我似乎无法捕获 NSEVENT 修改它并重新发布它。我仍然想捕获 MouseDown 事件,因为我使用该位置 - 我一直在 try catch 该事件并向其添加修饰符标志,但它似乎不起作用。对此的任何帮助将不胜感激。

这就是我所做的:

- (void)mouseDown:(NSEvent *)theEvent {
[super mouseDown:theEvent];

if(!(theEvent.modifierFlags == NSAlternateKeyMask)){

NSEvent *newEvent = [NSEvent keyEventWithType:
theEvent.type
location:theEvent.locationInWindow
modifierFlags:NSAlternateKeyMask
timestamp:theEvent.timestamp
windowNumber:theEvent.windowNumber
context:theEvent.context
characters:@""
charactersIgnoringModifiers:@""
isARepeat:YES
keyCode:0];
[super mouseDown:newEvent];
}
}

我也尝试过使用 CGPostEvent 进行变体,但它似乎也不起作用。显然,仅发布修饰符标志比看起来更困难。

谢谢

最佳答案

我用这段代码解决了它 -

- (void)mouseDown:(NSEvent *)theEvent {

if(!(theEvent.modifierFlags == NSAlternateKeyMask)){

[super mouseDown:[self createNewEvent:theEvent]];
}
else {
[super mouseDown:theEvent];

}
}

- (NSEvent *)createNewEvent:(NSEvent *)theEvent {
NSEvent *newEvent = [NSEvent
keyEventWithType:NSKeyDown
location:theEvent.locationInWindow
modifierFlags:NSAlternateKeyMask
timestamp:theEvent.timestamp
windowNumber:theEvent.windowNumber
context:theEvent.context
characters:@""
charactersIgnoringModifiers:@""
isARepeat:NO
keyCode:0];
return newEvent;
}

关于objective-c - 捕获 NSEvent 以添加修饰符问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31119800/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com