24得票3回答
修改 NSEvent 以发送与按下的不同键相对应的键

我正在尝试为辅助技术目的(即不用担心,不是键盘记录器)创建一个OS X键盘钩子。 当用户按下一个键时,我想要阻止真正的按键事件并代替发送一个虚拟的按键事件(我选择的字符)。 我有以下代码:- (void) hookTheKeyboard { CGEventMask keyboard...

22得票4回答
如果某个修饰键被按下但没有其他键被按下,则检查NSEvent的modifierFlags。

我刚尝试使用NSEvent中的addLocalMonitorForEventsMatchingMask:handler:方法,并遇到以下问题:如何找出是否仅按下了某些修饰键? 以下是一个简短的示例,以将此问题设置为上下文:我想监听快捷键“⌘+W”。因此我编写了以下代码:[NSE...

21得票3回答
在视图坐标系统中获取[NSEvent mouseLocation]

我有一个NSView,它捕获了一个mouseDown事件。 我正在使用以下代码获取鼠标点击的坐标:- (void)mouseDown:(NSEvent *)theEvent { NSPoint touchPoint = [NSEvent mouseLocation]; //R...

15得票1回答
在NSView上检测鼠标左右键点击

在Swift中:我创建了一个简单的NSView,现在想要根据按下的鼠标按钮(左右)执行不同的函数。如何检测这一点?

13得票2回答
当Cocoa应用程序启动时,如何确定按下的修改键?

在我正在开发的应用程序中,数据库用于存储所有用户数据,通常位于Library/Application Support中的某个地方。为了让用户切换数据库,我想实现类似iTunes或iPhoto的功能,即如果在启动应用程序时按下选项键,则应用程序会请求库或数据库的位置。 如何检查当前按下的(修改...

12得票3回答
macOS应用程序:处理绑定到全局键盘快捷方式的按键组合

在某些应用程序中,直接处理与系统范围组合键绑定的键盘快捷方式是有意义的。例如,⌘-空格(通常为Spotlight)或⌘-Tab(通常为应用程序切换器)。这在各种Mac应用程序中起作用,例如VMWare Fusion、Apple自己的屏幕共享和远程桌面客户端(将事件转发到VM或服务器,而不是在本...

9得票5回答
Mac Cocoa:如何区分NSScrollWheel事件来自鼠标还是轨迹板?

在我的应用程序中,我希望只有通过鼠标的滚轮动作才能进行滚动,而不能使用触摸板上的两个手指手势。基本上,我正在尝试确定scrollWheelEvent是从鼠标还是触摸板生成的,在-(void)scrollWheel:(NSEvent *)theEvent方法中。到目前为止,据我所知,似乎没有直接...

9得票5回答
如何将滚动事件传递给父级NSScrollView

我需要在一个较大的滚动窗口中放置固定大小的NSTextViews。尽管它们的最小/最大尺寸已被固定,不会实际滚动,但IB要求将文本视图放置在自己的NSScrollViews中。当在文本视图框架内进行触控板手势操作时(无论是否有焦点),它们都会被文本视图的滚动视图所捕获,因此没有任何反应。 我...

8得票3回答
有没有一种方法可以区分左右Shift键被按下的情况?

我可以使用以下代码识别用户按下Shift键: -(void)flagsChanged:(NSEvent *)theEvent { if ([theEvent modifierFlags] & NSShiftKeyMask) //. . . } 但是有没有办...

8得票1回答
如何处理第一响应者和NSPopover?

我正在尝试复制iTunes中搜索字段的行为,以查找股票符号和名称。具体地说,当您在搜索栏中开始输入时,会出现一个弹出窗口,其中包含过滤后的项目。大部分情况下,我已经做到了这一点,但是我无法复制它处理第一响应者的方式。 当输入三个字符后,我的弹出窗口会出现。此时,NSSearchField将失...