问题标签 [iokit]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
objective-c - IOKit IOPowerSources 的烦恼
我在使用 IOPowerSources 及其文档时遇到了很大的困难。
我的问题是,我无法弄清楚 IOPowerSources 的该死进口。我正在阅读:
找不到所需的进口商品,这让我很生气。有人可以告诉我要导入什么以便我可以开始使用 IOPowerSources 吗?谢谢 :)
objective-c - 目标 C 回调失败
我有发布通知处理程序的代码
而这个回调处理程序
但我的回调函数永远不会被调用。我用 USB 闪存驱动器尝试了这个,但没有成功。我哪里错了?
cocoa - OSX上的高分辨率和高帧率鼠标坐标?(或其他解决方案?)
我想在 OSX 上获得高分辨率和高帧率的鼠标移动。
“高帧率”= 60 fps 或更高(最好 > 120)
“高分辨率”= 子像素值
问题
我有一个以显示器刷新率运行的opengl 视图,所以它是~60 fps。我用鼠标环顾四周,所以我隐藏了鼠标光标,我依赖于鼠标增量值。
问题是鼠标事件的帧率太低,并且值被捕捉到整数(整个像素)。这会导致“断断续续”的观看体验。这是鼠标增量值随时间变化的可视化:
这是一条典型的(缩短的)曲线,用户将鼠标向右移动一点。每个 x 代表每一帧的 deltaX 值,并且由于 deltaX 值四舍五入为整数,因此该图实际上非常准确。正如我们所看到的,deltaX 值将在一帧为 0.000,下一帧为 1.000,但随后又为 0.000,然后是 2.000,然后又是 0.000,然后是 3.000、0.000,以此类推。
这意味着视图将在一帧旋转 2.000 个单位,然后在下一帧旋转 0.000 个单位,然后再旋转 3.000 个单位。当鼠标以或多或少的恒定速度拖动时会发生这种情况。不用说,这看起来像废话。
那么,我怎样才能 1)增加鼠标的事件帧率?和 2) 获得亚像素值?
到目前为止
,我已经尝试了以下方法:
嗯,这个很明显。dx
这是浮点数,但值总是四舍五入(0.000、1.000 等)。这将创建上面的图表。
所以下一步是在鼠标事件进入 WindowServer 之前尝试点击鼠标事件,我想。所以我创建了一个 CGEventTrap:
仍然值是n.000
,尽管我相信事件触发率要高一些。但它仍然不是60 fps。我仍然得到上面的图表。
我还尝试将鼠标灵敏度设置得非常高,然后在我这边按比例缩小值。但似乎 OSX 增加了某种加速或其他东西——这些值变得非常“不稳定”,因此无法使用,而且射速仍然太低。
没有运气,我开始跟踪兔子洞的鼠标事件,我已经到达了 IOKit。这对我来说很可怕。这是疯帽子。Apple 文档变得很奇怪,似乎在说“如果你如此深入,那么你真正需要的只是头文件”。
所以我一直在阅读头文件。我发现了一些有趣的花絮。
在<IOKit/hidsystem/IOLLEvent.h>
第 377 行有这个结构:
看,它说的是亚像素位置!好的。然后在第 73 行<IOKit/hidsystem/IOLLParameter.h>
唔。
总而言之,我感觉 OSX 深知亚像素鼠标坐标,并且必须有一种方法可以读取每一帧的原始鼠标移动,但我只是不知道如何获得这些值。
问题
呃,那么,我在问什么?
- 有没有办法在 OSX 中获得高帧率鼠标事件?(示例代码?)
- 有没有办法在 OSX 中获取亚像素鼠标坐标?(示例代码?)
- 有没有办法每帧读取“原始”鼠标增量?(即不依赖事件。)
- 或者,我如何获取 NXEvents 或设置 HIDParameters?示例代码?(所以我可以自己更深入地研究这个......)
(抱歉发了这么长的帖子)
objective-c - Objective-C 中的 C 回调 (IOKIT)
我正在尝试在 Objective C 中编写一些与 USB 设备交互的代码,但我一直在为传入报告设置回调函数。就我而言,它是一个 IOKIT 函数,但我认为这个问题更普遍,因为我(显然)不知道如何在 Objective-C 中正确设置 C 回调函数。我有一个处理 io 函数的“USBController”类
USB控制器.m:
所有函数也在头文件中声明。
我想我做的和我在这里找到的差不多,但它不起作用。该项目编译得很好,一切正常,直到有输入和回调函数被调用。然后我收到“EXC_BAD_ACCESS”错误。函数的前三个参数是正确的。我不太确定上下文..我做错了什么?
c++ - 覆盖另一个kext定义的方法?
我需要重写一个由 kext 定义的方法来进行我自己的处理并返回我自己的值,所以每当 kext 调用该方法时,它都会被路由到我的。所以我要做的就是在我自己的内核扩展中定义这个方法,然后加载它。问题是我不知道如何交换方法,所以我的方法被调用了。
是否有捷径可寻?我知道有一种方法可以通过VTables来实现,因为所有内核扩展都在同一个地址空间中运行(我认为这是唯一的方法,但我不确定如何去做)。
xcode - Mac Snow Leopard 上的 USBPrivateDataSample
我需要创建每次插入或拔出 USB 时都会收到通知的应用程序,并且还可以访问它。首先,我尝试使用 USBPrivateDataSample 应用程序作为示例:
为了编译它,我将 SDK 更改为 10.6,因为 Snow Leopard 不支持 10.4。该程序已编译并成功运行,但是,插入 USB 时我没有收到呼叫/事件。换句话说,从未调用函数 DeviceAdded。
这个程序是否应该在 Snow 中运行?它看起来很旧,也许有些电话已被弃用?
有人可以建议其他方式来接收 USB 设备通知吗?
谢谢!
macos - 使用 IOHIDManager 获取修饰符键事件
我正在尝试使用 IOHIDManager 来获取修饰键事件,因为缺少 Cocoa flagsChanged 事件(很难区分按下/释放、左/右是否都按下等)这是我创建管理器并注册回调的代码.
但是,回调永远不会运行。我错过了什么吗?
我不完全了解 HID 使用页面,所以我不知道是否使用带有键盘使用 ID (06) 的通用桌面页面 (0x01) 或带有个人使用 ID 的键盘/键盘页面 (0x07)键。也许这与它有关?
macos - 无代码kext加载问题
我创建了一个无代码 kext,这样我的一个 USB 设备就不会被 AppleUSBUHCI 驱动程序绑架。当我插入一个时,它应该加载不同的驱动程序。FTDI 和 CSR 设备都会发生这种情况。
我把我的 kext 放在一起,info.plist 看起来很像这里的示例:http: //www.projectosx.com/forum/index.php? showtopic=798只是具有不同的 VID/PID。我用 -entZ 运行了 kextutil,唯一的警告是我的个性有不同的 CFBundleId。我按照此处的说明,在 Mac 上读取和写入 USB (HID) 中断端点来加载它。
当我加载 kext 时,它说它加载成功,但是我用 kextstat 看不到它,当我插入我的设备时,它仍然被劫持。当我尝试执行 kextunload 时,它说未加载 kext。
任何帮助,将不胜感激。
macos - 通过 IOUSBDeviceInterface245 收集有关挂起的 USB 设备的信息
我正在尝试通过IOUSBDeviceInterface245
(来自 Mac OS X 上的 IOKit)获取一些信息(例如产品名称):
代码 #1
此代码适用于所有正在工作的设备,但不适用于暂停(“睡眠”)
设备(product_name
只是一个空白字符串)。
但是,如果我使用此代码:
代码 #2
这对所有设备都有效(我不知道为什么)。
我尝试通过此代码唤醒暂停的设备(与代码 #1 一起使用):
但它什么也没改变。
我注意到的一件事 - 代码 #1 完全适用于睡眠设备的所有属性,除了字符串值(通过字符串的索引获取)。
UPDATE:
So, my question is how can I unsuspend a device for using with the first code block?
Thank you.
objective-c - 如何以编程方式调暗 Mac 背光键盘
有没有办法以编程方式使 Mac 上的背光键盘变暗?