我目前正在为我的大学研究项目.目标是使用Microsoft Kinect摄像头控制Mac.另一名学生正在编写Kinect驱动程序(它将安装在Mac后面的天花板或墙壁上的某个位置,并在Macs屏幕上输出所有手指的位置).
我有责任使用手指位置并对它们做出反应.目标是使用一根手指控制鼠标,并以同样的方式对多个手指做出反应,就像它们在触控板上一样.
我认为这将是简单而直接的,但事实并非如此.实际上很容易用一根手指控制鼠标光标(使用CGEvent),但不幸的是,没有用于创建和发布Multitouch-Gestures到系统的公共API.
我已经做了很多研究,包括在最低位置使用事件点击捕获所有CGEvents并尝试反汇编它们,但到目前为止还没有真正的进展.
比我偶然发现并意识到,即使是事件点击的最低位置也不够深入: 扩展Magic Mouse的功能:我需要一个kext吗?
当我做对了,内置的Trackpad(以及MagicMouse和MagicTrackpad)通过KEXT-Kernel-Extension与私有MultitouchSupport框架进行通信,该框架生成并以某种方式将传入数据发布到操作系统.
因此,我需要使用MultitouchSupport.framework中的私有API来执行与触控板相同的操作,对吧?或者我需要写一个KEXT-Extension?
如果我需要使用MultitouchSupport框架:我如何反汇编它以获得私有API?(我知道类转储,但这只适用于Objective-C-frameworks,而这个框架不是)
非常感谢您的回复!NexD.
我的一个Silverlight应用程序有一些用户在Apple Macs上使用它.他们抱怨鼠标滚轮和触控板不起作用.
根据我所做的研究,似乎Mac上的浏览器托管应用程序不支持此功能.
Silverlight 5是否增加了改进的支持?对于未来版本的Silverlight,它是微软的关注吗?
在我的应用程序中,我希望滚动发生,只有鼠标滚轮动作而不是触控板上的两个手指动作.基本上,我试图确定是否从鼠标或触控板生成scrollWheelEvent,内部 - (void)scrollWheel:(NSEvent*)theEvent方法.据我所知,到目前为止,似乎没有直接的方法来实现这一目标.
我尝试了将boolean变量设置为true和false in - (void)beginGestureWithEvent:(NSEvent*)event; 和 - (void)endGestureWithEvent:(NSEvent*)事件; 但这不是一个解决方案,因为在调用endGestureWithEvent:方法之后,会多次调用scrollWheel:方法.
这是我的代码:
$BOOL fromTrackPad = NO;
-(void)beginGestureWithEvent:(NSEvent *)event;
{
fromTrackPad = YES;
}
-(void) endGestureWithEvent:(NSEvent *)event;
{
fromTrackPad = NO;
}
- (void)scrollWheel:(NSEvent *)theEvent
{
if(!fromTrackPad)
{
//then do scrolling
}
else
{
//then don't scroll
}
}
Run Code Online (Sandbox Code Playgroud)
我知道这是不标准的,但这是我的要求.有谁知道这样做的方法?谢谢!
我想阅读触控板多点触控手势并将数据协调到我的C++程序中.我在哪里可以找到一些关于这样做的入门教程?
我想知道是否有任何方法可以检测用户是否使用 JavaScript 或 jQuery 在 MacBook 触控板上进行了两指点击。在其中一个项目中,我使用 JavaScript 检测鼠标右键单击并将其用于某些操作。当您在触控板上用双指点击时,它实际上不起作用。虽然在操作中可以作为右键单击,但 JavaScript 无法像这样检测到它。
有什么线索吗?
我希望能够使用键盘快捷键切换Mac笔记本电脑上的垂直滚动方向.我已经安装了一个名为Karabiner的应用程序,我将其用于许多自定义键映射.
是否有人熟悉Karabiner谁知道如何编辑private.xml文件来实现这一目标?(我private.xml以前编辑过,但只使用__KeyToKey__而不是更改实际设置)
如果没有,有没有人知道我可以创建一个键盘快捷方式切换滚动方向的另一种方式?
我有一个带有自定义 UIView 的 iPad 应用程序(在 C# 中),它允许通过触摸和 Apple Pencil 手写笔触摸进行输入。我正在尝试集成对触控板/鼠标间接支持(光标,或 Apple 所说的“指针”)。
我使用 HoverGestureRecognizer 悬停工作。我使用正常的触摸开始/移动/结束/取消事件进行了右键单击和控制单击工作并检查 .type == .indirectPointer 然后检查是否设置了 event.ModifierFlags 中的控制键修饰符,或者是否设置了 event.ButtonMask == 次要的。
我花了很多时间在 Apple Developer 网站上搜索文档,从这里开始并扩展:
不知何故,当发生两指触控板滚动(或鼠标滚轮滚动)时,我无法在我的代码中找到系统调用的 API 。(在另一个滚动视图视图上,当我执行两指滚动时,我可以获得滚动视图的滚动事件,因为这是 iPadOS 13.4+ 内置的滚动视图,但我的自定义视图不是滚动视图,它里面只有一些可滚动的区域。)
我尝试过的事情:
iPadOS 13.4+ 将触控板双指滚动手势转换成什么?我可以把它当作某种事件吗?上面链接的文档是非常令人失望的准系统,但它提到了 UIEvent.EventType.scroll 但没有提到系统将如何、何时或何地使用该类型的事件调用我的任何方法。真气人。他们应该更清楚地说明这一点。
欢迎使用 Swift 或 C# 回答。
操作系统是Retina Macbook PRO上的Windows 8.
我需要支持使用触控板的垂直滚动和我的应用程序中的水平滚动.
我想基于上下两个手指滑动(垂直滚动)和左右(水平滚动)移动WPF滚动查看器位置.
据我所知,触控板上的垂直滚动被转换为框架中的鼠标滚轮事件.但是,我发现无法识别鼠标滚轮事件是否为水平滚动.
我应该在WPF中处理哪些事件才能实现?
此问题询问如何在 Mac 计算机上使用触控板两指捏合缩放。
接受的答案解释说,当检测到触控板上有两根手指捏合时,OS X 版 Chrome 会触发按下按键的wheel事件。ctrl
不幸的是,这个解决方案在 Safari 中不起作用。
如何使用 Javascript 检测 OS X Safari 中的两指捏合缩放?
我正在编写为 macOS Catalina 系统创建新用户的脚本。我试图默认激活触控板的“点击点击”行为。我已经在运行这些命令,这些命令可以正确激活“系统偏好设置 -> 触控板 -> 点击”中的“点击点击”复选框
defaults write com.apple.AppleMultitouchTrackpad Clicking -bool true
defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad Clicking -bool true
defaults -currentHost write NSGlobalDomain com.apple.mouse.tapBehavior -int 1
defaults write NSGlobalDomain com.apple.mouse.tapBehavior -int 1
Run Code Online (Sandbox Code Playgroud)
不幸的是,即使选中“点击点击”复选框,点击点击也不起作用。即使我注销并登录用户或重新启动计算机,点击也不起作用。但如果我取消选中并再次手动检查它,那么它就会按预期工作。
我怀疑其他一些首选项文件上还必须有另一个属性,该属性也应该被标记,以使“点击点击”有效,并且 GUI 正在处理......
关于如何完全自动化“点击点击”激活有什么想法吗?
trackpad ×10
macos ×5
javascript ×2
automation ×1
c# ×1
c++ ×1
cocoa ×1
command-line ×1
gesture ×1
ipados ×1
jquery ×1
keymapping ×1
kinect ×1
mouse ×1
mousewheel ×1
multi-touch ×1
nsevent ×1
plist ×1
safari ×1
scroll ×1
silverlight ×1
wpf ×1