You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否合并两款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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 05:44:57