- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我目前正在用 C 编写一个跨平台库,其中包括游戏 handle 支持。 Windows 上的游戏 handle 通信由原始输入和 xinput 处理,具体取决于特定的游戏 handle 。
虽然 xinput 有助于 xbox360 Controller 上的力反馈,但我还没有找到使用原始输入来执行此操作的方法。我有一些可以提供力反馈的游戏 handle ,但我找不到通过原始输入来执行此操作的方法。有办法做到这一点吗?
我不想使用 directinput api,因为它已被 Microsoft 弃用和劝阻。
编辑:
由于我已经实现了大部分游戏 handle ,也许我可以缩小问题范围。我怀疑通过读取 HIDP_CAPS 结构的 NumberOutputValueCaps 可以找到游戏 handle 中的隆隆声马达的数量。这为我所有的测试游戏 handle 提供了正确的结果。
我正在使用函数 HidP_GetUsageValue 读取轴值,效果很好。现在我怀疑调用 HidP_SetUsageValue 应该允许我更改此输出值,打开隆隆声电机。但是,调用此函数会失败。此函数是否应该能够访问隆隆声电机?
最佳答案
HidP_SetUsageValue() 仅修改报告缓冲区——您需要首先准备一个适当大小的缓冲区(这可能是该函数失败的原因;输入报告和输出报告的大小不一定相同)然后发送它之前它会产生任何影响的设备。 MSDN 建议您可以为此目的使用 HidD_SetOutputReport(),但我使用 WriteFile() 时运气更好,示例代码位于:https://code.msdn.microsoft.com/windowshardware/HClient-HID-Sample-4ec99697/sourcecode?fileId=51262&pathId=340791466。
这段代码(基于 Linux 驱动程序)让我可以控制 DualShock 4 上的电机和 LED:
const char *path = /* from GetRawInputDeviceInfo(RIDI_DEVICENAME) */;
HANDLE hid_device = CreateFile(path, GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
OPEN_EXISTING, 0, NULL);
assert(hid_device != INVALID_HANDLE_VALUE);
uint8_t buf[32];
memset(buf, 0, sizeof(buf));
buf[0] = 0x05;
buf[1] = 0xFF;
buf[4] = right_motor_strength; // 0-255
buf[5] = left_motor_strength; // 0-255
buf[6] = led_red_level; // 0-255
buf[7] = led_green_level; // 0-255
buf[8] = led_blue_level; // 0-255
DWORD bytes_written;
assert(WriteFile(hid_device, buf, sizeof(buf), &bytes_written, NULL));
assert(bytes_written == 32);
(编辑:固定缓冲区偏移量)
关于c - 使用原始输入在 Windows 上的游戏 handle 力反馈(振动),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25506101/
在我的应用中,一些 View 对 onLongClick 使用react。在其他情况下,我想实现相同的功能,但我想知道 View 的哪一部分被长按——所以我用 onTouchEvent 模拟它。长按的
我正在尝试使用声音管理器应用程序为“铃声、通知、媒体、系统”创建不同的声音配置文件。 根据设置音量级别,我通过使用 成功了 AudioManager setStreamVolume(AudioMana
有没有办法以编程方式禁用 iPhone 的振动? 我能找到的只是如何启用振动。基本上我想通过 UISwitch 切换振动模式。 如果有办法的话,有人可以帮我吗? 最佳答案 据我所知你不能这样做。因为苹
好像无法播放提示音 AudioServicesPlayAlertSound(kSystemSoundID_Vibrate); 当 AudioQueue 用于录制音频时。那是对的吗?也许我做错了什么。除
我正在尝试振动/摇动一个 UI 元素,即一个控件,就好像它被敲击一样,并且正在共振。我可以使用核心动画将其垂直、水平或同时摇动一个像素: CABasicAnimation* rotationXAnim
这个问题已经有答案了: 已关闭11 年前。 Possible Duplicate: Making the iPhone vibrate 如何以编程方式使 iPhone 振动? 任何想法或教程链接表示赞
以下代码无法运行... function onPageLoad(){ navigator.vibrate([500]);} 在移动设备上测试它,当我附加到按钮时它可以工作但不能加载??? 最佳
我正在我的应用程序中构建一个锻炼计时器。工作流程是: 用户点击“启动计时器”按钮 计时器倒计时 90 秒秒 计时器在 90 秒后结束并触发 PlayAlertSound振动 这仅在应用程序打开时有效,
您好,我已经创建了一个任务提醒应用程序。例如,您选择某个时间提醒某项任务,当该时间到来时,状态栏上会出现通知。 但是我想实现一个振动功能,可能还有一个带有通知的 LED 灯功能,但我不知道从哪里开始?
我正在开发一个应用程序,该应用程序会在计时器耗尽时发送本地通知。我已经把那部分全部设置好了。三十秒标记有通知,然后从十秒到一秒。当十比一的情况发生时,所有通知都会混在一起,变得有点困惑。现在我只剩下十
我正在使用 firebase 向我的应用程序(iOS 和 Android)发送通知。我不喜欢使用 data 字段来发送我的通知,因为对于 iOS,当用户强制退出应用程序时,不会调用 didReceiv
直到今天,我一直在模拟器中测试我的应用程序。我第一次在真实的 iPhone 上测试了一个项目。令我感到不快的是,每次我按下按钮时手机都会振动。这没什么大不了的,只是我的特定应用程序有一个内置键盘,每次
我有 slider 和一些输出框来显示这些 slider 的值。当用户移动 slider 并且值发生变化时,页面的其余部分会移动/抖动以适应新的(非常轻微的)值大小的增加。防止这种情况的最佳方法是什么
非常基本的问题,几个小时以来我一直试图自己弄清楚,但无法解决。 所以我正在为 Pebble 创建我的第一个表盘,我希望 watch 每小时发出嗡嗡声(振动)。您还记得一些数字 watch 会在点钟时间
我在收到通知时听不到声音、振动或灯光。有人可以告诉我我缺少什么吗? 还有一些问题: 1.) 我只在应用程序打开时得到指定的图标。当应用程序关闭时,我会看到 android Logo 图标(我想那是因为
我正在使用此代码购买音频线的编译错误。有谁知道为什么吗? - (void)handleTimer:(NSTimer *)timer { self.counter--; self.tim
我一直在尝试使用这段代码让 iPhone 振动: AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); 但是没有用,会不会是我在调用这个的同时播放
我查看了 http://caniuse.com/但找不到任何关于振动 API 兼容性的信息。 哪些浏览器支持它? 最佳答案 更新 [2014-03-07]:Firefox、Chrome 和 Opera
iPhone如何设置振动一次? 例如,当玩家失去生命或游戏结束时,iPhone 应该振动。 最佳答案 来自“iPhone Tutorial: Better way to check capabilit
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); 这行代码在 iPad 上似乎不起作用 - iPad 是否具有振动所需的硬件? 最佳答案 它没
我是一名优秀的程序员,十分优秀!