问题标签 [directinput]

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.

0 投票
1 回答
1563 浏览

directx - 我可以在没有整个 DirectX SDK 的情况下获得 DirectInput / XInput 吗?

我正在开发一个内部应用程序,它将使用 XInput 或 DirectInput 从 Xbox 360 控制器中读取。(我认为这将是让操作员掌握多个控件的最便宜/最简单的方法。)

我需要对所有源代码和工具进行源代码控制,这也意味着 SDK 的。我宁愿不使用所有 DirectX —— DirectInput 和 XInput 是否可以与整个 DirectX SDK 分离?

0 投票
3 回答
2949 浏览

windows - DirectInput 模拟操纵杆范围

我使用 DirectInput 来处理输入设备,我枚举每个设备上的设备和元素。

在我的游戏手柄上使用模拟摇杆时,它们会报告 0-65535 范围内的值。所有类型的绝对轴都是这种情况吗?

如果不是:有没有办法找出 DX8 输入元素的 DIDEVICEOBJECTDATA::dwData 的范围(用 DIDFT_ABSAXIS 枚举)?我能想到的唯一其他选择是在我的应用程序中使用一些自制的内部校准,这听起来太 80 年代是真的。

0 投票
1 回答
907 浏览

vbscript - 发布消息以直接输入

我想在最小化的视频游戏中模拟鼠标点击。

我正在为此做的视频游戏允许像这样进行宏处理,所以一切都很好。

但是,游戏使用直接输入,因此使用PostMessageSendMessage不起作用。

0 投票
1 回答
3554 浏览

windows - 触控板的绝对触控坐标

是否可以直接从阿尔卑斯触摸板读取输入?我试图把我的触摸板变成一个便宜的绘图板,所以我需要读取它相对于物理触摸板的触摸位置的原始未处理 x 和 y 坐标。因此,如果我触摸触摸板的左下角,它应该对应于 (0,0) 等。

顺便说一句,我正在尝试用 Windows 来做到这一点。

我已经可以使用 Synaptics 触摸板做到这一点,但这只是因为 Synaptics 有一个很好的 SDK,它让我可以完全控制设备。我在阿尔卑斯山找不到类似的东西。无论如何使用windows api或directinput或其他什么来做到这一点?

0 投票
1 回答
870 浏览

c# - DirectX DirectInput C# 测量音频输入

C# 2008 SP3

我开发了一款软件电话,我们的客户希望有一个功能可以测试麦克风是否正常工作。

我在想有一个进度条,可以根据鼻子的高度上下移动。

我对此做了一些研究。但是我找不到任何关于 directX DirectInput 的教程,这些教程可以帮助我测量音频输入。有谁知道以前做过这方面的任何网站?

我是直接 x 编程的新手。我必须下载 DirectX sdk 吗?

非常感谢,

0 投票
2 回答
2211 浏览

c++ - 为什么我的 DirectX 程序无法识别我已经释放了转义键?(C++)

编辑:经过更多代码修改后,错误仍然存​​在,修改后的代码显示:

KeyDown()

PollKeyboard()

当我尝试将 MessageBox 放在KeyDown()if 语句中时(如下面的游戏循环所示),即使我停止按键,MessageBox 也会继续出现,即:我按下 ,“你想退出吗?” 消息框出现,我说不,它消失了,然后立即重新出现,好像我还在握着钥匙。

这是我的循环:

编辑: 中的 catchPollKeyboard()显示序列53gd6bcc,但是我找不到它对应的错误代码。

编辑:经过另一次测试,我看到即使 MessageBox 不在 KeyDown() if 语句中,故障仍然发生。

编辑:经过更多测试,似乎 MessageBox 本身导致了故障。

0 投票
1 回答
5566 浏览

python - 将输入发送到直接输入(如游戏)

我正在尝试为使用直接输入的游戏模拟按键。

我用谷歌搜索了一下,我发现了方法SendIput()

如果我尝试将按键发送到 notepad.exe,它工作正常,但当我尝试游戏时没有任何反应。我检查了这个网站,并稍微编辑了我的代码,但我仍然没有从游戏中获得任何按键事件。

任何人都可以帮助我吗?

我使用了 Python,但由于我导入了ctypes模块,所以 c/c++ 解释还可以。

0 投票
7 回答
17334 浏览

c++ - 我应该使用 DirectInput 还是 Windows 消息循环?

我正在开发 C++ DirectX 2D 游戏,我需要键盘和鼠标输入。
维基百科说:

Microsoft 建议新应用程序使用 Windows 消息循环进行键盘和鼠标输入,而不是 DirectInput

那么我应该如何使用它呢?
我有一个 GameScreen 类负责绘图和更新(游戏逻辑),我在 Windows 消息循环中调用 Draw 和 Update 方法。

谢谢

0 投票
1 回答
1090 浏览

windows - 为什么鼠标在DISCL_EXCLUSIVE 中消失?DISCL_FOREGROUND 模式?

使用DirectInput时,为什么使用DISCL_EXCLUSIVE时鼠标光标完全消失?DISCL_FOREGROUND 作为您的合作级别?

尽管 DirectInput 已被弃用,但鼠标甚至无法用于 WINDOWS 的事实是否意味着您在使用 DirectInput(与 RAWINPUT 相比)时响应更快且更好?

0 投票
5 回答
5979 浏览

c++ - GetRawInputData 与 GetAsyncKeyState()

好吧,我试图避免使用已弃用的 DirectInput。

但是我需要在游戏的每个“帧”或“迭代”中抢夺所有关键状态,以便我可以采取相应的行动。例如,如果玩家按下 VK_RIGHT 键,那么他将在该帧上向右移动一点点。

WM_INPUT 消息的问题在于,由于游戏循环的编写方式,它们每帧会出现不可预测的次数:

因此,如果在那里堆叠了多个WM_INPUT 消息,那么它们都将在 Update()/Draw() 之前得到处理。

我通过使用 BOOL 数组来记住哪些键已关闭,从而解决了这个问题:

这很好用,因为 Update() 函数检查

但现在的问题是 WM_INPUT 消息生成的频率不够高。在第一次按下 VK_RIGHT 和随后的 VK_RIGHT 消息之间有大约 1 秒的延迟,即使玩家一直将手指放在它上面。它不像 DirectInput 那样你可以keyboard->GetDeviceState( 256, (void*)array_of_keys_that_are_down );(通过一次调用获取每帧的所有关键状态)

所以我迷路了。除了对我需要监视的每个键使用 GetAsyncKeystate() 函数调用之外,如果您不能可靠地抓取每帧的所有键状态,我认为没有办法避免使用 DirectInput。

在我看来 DirectInput 是解决这个问题的一个很好的解决方案,但如果它被弃用,那么真的必须有某种方法可以方便地仅使用 Win32 api 来做到这一点。

当前array_of_keys_that_are_down被重置为所有 FALSE 的每一帧。

*编辑

我一直在解决这个问题,一个解决方案是只重置一个关键状态,一旦它被释放

我不喜欢这个解决方案,因为它看起来很脆弱。如果用户在按下某个键时从应用程序中切换,那么该键将被“卡住”,直到他切换回来并再次按下相同的键,因为我们永远不会收到上行WM_INPUT消息。它会导致奇怪的“粘滞键”错误。