我想提供根据可用鼠标按钮数量而变化的教程文本。例如,如果有两个鼠标按钮,则文本将显示“右键单击”,而如果只有一个按钮,则文本将显示“Ctrl +单击”。 Cocoa或Carbon中是否有可以识别附加鼠标上可用按钮数量的API?
答案 0 :(得分:5)
使用“辅助点击”。右键单击,按住Ctrl键单击,左键单击按钮交换的鼠标,第18次单击高度可配置的鼠标,配置为鼠标等的平板电脑或操纵杆等都是如此。
答案 1 :(得分:1)
我会看Quartz event services.这是我能想到的唯一可以告诉你硬件问题的地方。
但是,我认为你不应该打扰。通常,您应该采用假定标准化硬件或硬件等效的术语。例如,实际命令是'ctrl-click'。该命令可以通过鼠标右键实现,但它可能来自键盘或某些其他硬件的自定义设置。例如,我有一个Wacom平板电脑,可让我自定义五个不同的按钮。你的软件无法解决我的映射问题。
您的界面应该只是说'ctrl-click'并留给用户定义对他们自己的硬件意味着什么。
答案 2 :(得分:1)
我和Peter Hosey在一起:“辅助点击”是正确的,“右击”肯定是错误的,因为您可以更改鼠标首选项窗格中的哪个。此外,还有一个二次点击触控板手势。
为了实际回答这个问题,如果你真的想要计算连接鼠标上的按钮(不要假设只有一个;特别是笔记本电脑通常会有两个并且没有固有限制),我相信你我需要与IOKit(特别是IOKit / hid / IOHIDDevice.h。)进行交谈。
然后,您需要查找kIOHIDPrimaryUsagePageKey
为kHIDPage_GenericDesktop
且其kIOHIDPrimaryUsageKey
为kHIDUsage_GD_Pointer
或kHIDUsage_GD_Mouse
的设备,并搜索该元素。具有最高使用价值的kHIDPage_Button
使用情况页面。这一切都很繁琐,但并不是很难,除非你觉得需要支持pre-Leopard系统,在这种情况下这是一个疯狂的混乱。
但是!这实际上并不能告诉你用户在每只鼠标上有多少按钮,它只会给你一个上限,因为USB设备往往有通用的硬件。例如,我测试过的所有罗技鼠标 - 除罗技制造的Apple Puck Mouse™外 - 都声称拥有16个按钮。作为参考,键盘比这更糟糕。