能否合并两款AutoHotkey脚本实现Oculus Quest 2与RC遥控器按键控制?
合并Oculus Quest 2与RC遥控器的AutoHotkey脚本实现联动控制
当然可以合并两款脚本,以下是精简后的合并版本,完全保留你需要的按键映射功能,删除了所有无关的额外功能:
#include auto_oculus_touch.ahk ; 初始化Oculus SDK InitOculus() ; 保持脚本持续运行 #Persistent ; 设置定时器检测RC遥控器轴状态,间隔5ms SetTimer, WatchRCAxis, 5 ; Oculus Touch控制器主轮询循环 Loop { Poll() ; 获取最新Oculus输入状态 ; Oculus X键映射为键盘H键 if IsPressed(ovrX) SendInput {h Down} if IsReleased(ovrX) SendInput {h Up} ; Oculus Y键映射为键盘B键 if IsPressed(ovrY) SendInput {b Down} if IsReleased(ovrY) SendInput {b Up} Sleep, 10 ; 控制轮询频率,避免资源占用过高 } ; RC遥控器轴检测子程序 WatchRCAxis: static KeyToHoldDownPrev := "" ; 静态变量记录上一次的按键状态 JoyR := GetKeyState("JoyR") ; 获取RC遥控器指定轴的位置 ; 根据轴位置判断空格键状态 if (JoyR > 30) KeyToHoldDown := "Space" else if (JoyR < 80) KeyToHoldDown := "" else KeyToHoldDown := KeyToHoldDownPrev ; 保持当前状态 ; 仅当状态变化时发送按键指令 if (KeyToHoldDown != KeyToHoldDownPrev) { SetKeyDelay -1 ; 取消按键延迟 if (KeyToHoldDownPrev) SendInput {%KeyToHoldDownPrev% Up} ; 释放之前的按键 if (KeyToHoldDown) SendInput {%KeyToHoldDown% Down} ; 按下新按键 KeyToHoldDownPrev := KeyToHoldDown ; 更新状态记录 } return
关键说明:
- 保留了Oculus Touch的*
InitOculus()和Poll()*核心函数,确保能正确读取控制器输入 - 仅保留X键→H键、Y键→B键的映射逻辑,删除了鼠标控制、滚轮缩放、其他按键映射等无关功能
- 整合了RC遥控器的轴检测逻辑,使用*
SetTimer*定时监控轴状态,避免与Oculus的主循环冲突 - 优化了RC遥控器的按键发送逻辑,仅在状态变化时执行发送操作,减少冗余指令
- 使用*
SendInput替代原RC脚本的Send*,提升按键发送的响应速度和可靠性
内容的提问来源于stack exchange,提问作者Allan Tori
相关产品推荐
相关产品推荐

