mirror of
https://github.com/baketnk/frame-yap.git
synced 2026-10-06 06:00:04 +02:00
Bind Frame right X to normal-priority hold-to-talk
This commit is contained in:
1 parent
b5499eccdf
commit
6b1d20858a
10 files changed
+85
-23
No files matched your search
+3
-2
@@ -24,8 +24,9 @@ void help() {
|
||||
"Mount: world (first-launch default), left-wrist, right-wrist, head.\n"
|
||||
"Settings save the mount; --mount overrides it for this launch. --head is an alias.\n"
|
||||
"Font defaults to bundled Inconsolata in the assets directory.\n"
|
||||
"Right grip: double-tap, hold second squeeze to speak, release to review.\n"
|
||||
"Left grip: double-tap for explicit Enter. Bindings are remappable.\n"
|
||||
"Right X: hold to speak, release to review (default Frame binding).\n"
|
||||
"Grip gestures are remappable but may be unavailable in the dashboard.\n"
|
||||
"Left grip: double-tap for explicit Enter when active.\n"
|
||||
"Review first: Insert approves current focus; never automatic Enter.\n"
|
||||
"No device access unless an explicit runtime/check/registration mode is used.\n";
|
||||
#ifndef FRAMEYAP_NATIVE
|
||||
|
||||
@@ -341,6 +341,15 @@ std::string Overlay::controls_status() {
|
||||
" origin=" + (origin_ok ? "Y" : "N") +
|
||||
" raw=" + (raw_ok ? ((raw.ulButtonPressed & vr::ButtonMaskFromId(vr::k_EButton_Grip)) ? "down" : "up") : "n/a");
|
||||
}
|
||||
// The default Frame binding maps right X to the named hold-to-talk action.
|
||||
// Report the action's own activity separately from the stricter pose gate;
|
||||
// remapped bindings may intentionally have a different origin.
|
||||
vr::InputDigitalActionData_t ptt{};
|
||||
const auto ptt_error = impl_->input->GetDigitalActionData(impl_->actions[2], &ptt, sizeof(ptt), vr::k_ulInvalidInputValueHandle);
|
||||
const auto [accepted, down] = impl_->digital(2);
|
||||
result += "\nPTT (default right X): err=" + std::to_string(int(ptt_error)) +
|
||||
" active=" + (ptt.bActive ? "Y" : "N") + " down=" + (ptt.bState ? "Y" : "N") +
|
||||
" accepted=" + (accepted ? "Y" : "N") + " gated-down=" + (down ? "Y" : "N");
|
||||
return result;
|
||||
}
|
||||
std::string Overlay::pointer_status() const {
|
||||
|
||||
+2
-2
@@ -24,7 +24,7 @@ void signal_stop(int) { interrupted = 1; }
|
||||
std::string state_label(State state) {
|
||||
switch (state) {
|
||||
case State::Warming: return "Warming - on-device Redux CPU";
|
||||
case State::Ready: return "Ready - double-tap + hold right grip";
|
||||
case State::Ready: return "Ready - hold X or click Record";
|
||||
case State::Recording: return "RECORDING";
|
||||
case State::Transcribing: return "Transcribing - on device";
|
||||
case State::Review: return "Review - Insert approves CURRENT focus";
|
||||
@@ -66,7 +66,7 @@ int run(const Options& options) {
|
||||
if (session.state() == State::Error) session.cancel();
|
||||
if (!session.record()) return;
|
||||
audio.start();
|
||||
detail = "Release grip to finish. Cancel discards. Maximum 20 seconds.";
|
||||
detail = "Release to finish. Cancel discards. Maximum 20 seconds.";
|
||||
};
|
||||
try { warm(); }
|
||||
catch (const std::exception& e) { session.fail(); detail = e.what(); }
|
||||
|
||||
Reference in new issue
Block a user