config: Add invert_scroll_direction and scroll_speed

This commit is contained in:
Aleksander
2025-11-11 12:11:34 +01:00
parent 6169ec9505
commit afc8804aba
16 changed files with 159 additions and 101 deletions

View File

@@ -15,7 +15,7 @@ use crate::{
graphics::CommandBuffers,
gui::panel::GuiPanel,
state::AppState,
subsystem::hid::{KeyModifier, VirtualKey, ALT, CTRL, META, SHIFT, SUPER},
subsystem::hid::{ALT, CTRL, KeyModifier, META, SHIFT, SUPER, VirtualKey, WheelDelta},
windowing::backend::{FrameMeta, OverlayBackend, ShouldRender},
};
@@ -69,8 +69,8 @@ impl OverlayBackend for KeyboardBackend {
&wgui::event::Event::InternalStateChange(InternalStateChangeEvent { metadata: 0 }),
);
}
fn on_scroll(&mut self, app: &mut AppState, hit: &PointerHit, delta_y: f32, delta_x: f32) {
self.panel.on_scroll(app, hit, delta_y, delta_x);
fn on_scroll(&mut self, app: &mut AppState, hit: &PointerHit, delta: WheelDelta) {
self.panel.on_scroll(app, hit, delta);
}
fn on_left(&mut self, app: &mut AppState, pointer: usize) {
self.panel.on_left(app, pointer);

View File

@@ -6,7 +6,7 @@ use std::{
use futures::{Future, FutureExt};
use glam::{Affine2, Affine3A, Vec3};
use vulkano::image::view::ImageView;
use wlx_capture::pipewire::{pipewire_select_screen, PipewireCapture, PipewireSelectScreenResult};
use wlx_capture::pipewire::{PipewireCapture, PipewireSelectScreenResult, pipewire_select_screen};
use crate::{
backend::{
@@ -15,10 +15,11 @@ use crate::{
},
graphics::CommandBuffers,
state::{AppSession, AppState},
subsystem::hid::WheelDelta,
windowing::{
backend::{ui_transform, FrameMeta, OverlayBackend, ShouldRender},
window::{OverlayWindowConfig, OverlayWindowState},
OverlaySelector,
backend::{FrameMeta, OverlayBackend, ShouldRender, ui_transform},
window::{OverlayWindowConfig, OverlayWindowState},
},
};
@@ -138,7 +139,7 @@ impl OverlayBackend for MirrorBackend {
}
fn on_left(&mut self, _: &mut AppState, _: usize) {}
fn on_pointer(&mut self, _: &mut AppState, _: &PointerHit, _: bool) {}
fn on_scroll(&mut self, _: &mut AppState, _: &PointerHit, _: f32, _: f32) {}
fn on_scroll(&mut self, _: &mut AppState, _: &PointerHit, _delta: WheelDelta) {}
fn get_interaction_transform(&mut self) -> Option<Affine2> {
self.interaction_transform
}

View File

@@ -1,21 +1,21 @@
use std::{
sync::{atomic::AtomicU64, Arc, LazyLock},
sync::{Arc, LazyLock, atomic::AtomicU64},
time::Instant,
};
use glam::{vec2, Affine2, Vec2};
use glam::{Affine2, Vec2, vec2};
use vulkano::image::view::ImageView;
use wlx_capture::{frame::Transform, WlxCapture};
use wlx_capture::{WlxCapture, frame::Transform};
use crate::{
backend::input::{HoverResult, PointerHit, PointerMode},
graphics::{CommandBuffers, ExtentExt},
state::AppState,
subsystem::hid::{MOUSE_LEFT, MOUSE_MIDDLE, MOUSE_RIGHT},
subsystem::hid::{MOUSE_LEFT, MOUSE_MIDDLE, MOUSE_RIGHT, WheelDelta},
windowing::backend::{FrameMeta, OverlayBackend, ShouldRender},
};
use super::capture::{receive_callback, ScreenPipeline, WlxCaptureIn, WlxCaptureOut};
use super::capture::{ScreenPipeline, WlxCaptureIn, WlxCaptureOut, receive_callback};
const CURSOR_SIZE: f32 = 16. / 1440.;
@@ -246,11 +246,11 @@ impl OverlayBackend for ScreenBackend {
let pos = self.mouse_transform.transform_point2(hit.uv);
app.hid_provider.inner.mouse_move(pos);
}
fn on_scroll(&mut self, app: &mut AppState, _hit: &PointerHit, delta_y: f32, delta_x: f32) {
app.hid_provider
.inner
.wheel((delta_y * 64.) as i32, (delta_x * 64.) as i32);
fn on_scroll(&mut self, app: &mut AppState, _hit: &PointerHit, delta: WheelDelta) {
app.hid_provider.inner.wheel(delta);
}
fn on_left(&mut self, _app: &mut AppState, _hand: usize) {}
fn get_interaction_transform(&mut self) -> Option<Affine2> {

View File

@@ -1,17 +1,17 @@
use glam::{vec3, Affine2, Affine3A, Quat, Vec3};
use glam::{Affine2, Affine3A, Quat, Vec3, vec3};
use smallvec::smallvec;
use std::{cell::RefCell, collections::HashMap, rc::Rc, sync::Arc};
use vulkano::{
buffer::{BufferUsage, Subbuffer},
command_buffer::CommandBufferUsage,
format::Format,
image::{view::ImageView, Image, ImageTiling, SubresourceLayout},
image::{Image, ImageTiling, SubresourceLayout, view::ImageView},
};
use wayvr_ipc::packet_server::{self, PacketServer, WvrStateChanged};
use wgui::gfx::{
WGfx,
pass::WGfxPass,
pipeline::{WGfxPipeline, WPipelineCreateInfo},
WGfx,
};
use wlx_capture::frame::{DmabufFrame, FourCC, FrameFormat, FramePlane};
@@ -20,20 +20,19 @@ use crate::{
input::{self, HoverResult},
task::TaskType,
wayvr::{
self, display,
self, WayVR, WayVRAction, WayVRDisplayClickAction, display,
server_ipc::{gen_args_vec, gen_env_vec},
WayVR, WayVRAction, WayVRDisplayClickAction,
},
},
config_wayvr,
graphics::{dmabuf::WGfxDmabuf, CommandBuffers, Vert2Uv},
graphics::{CommandBuffers, Vert2Uv, dmabuf::WGfxDmabuf},
state::{self, AppState},
subsystem::input::KeyboardFocus,
subsystem::{hid::WheelDelta, input::KeyboardFocus},
windowing::{
backend::{ui_transform, FrameMeta, OverlayBackend, ShouldRender},
OverlayID, OverlaySelector, Z_ORDER_DASHBOARD,
backend::{FrameMeta, OverlayBackend, ShouldRender, ui_transform},
manager::OverlayWindowManager,
window::{OverlayWindowConfig, OverlayWindowData, OverlayWindowState},
OverlayID, OverlaySelector, Z_ORDER_DASHBOARD,
},
};
@@ -770,15 +769,10 @@ impl OverlayBackend for WayVRBackend {
&mut self,
_app: &mut state::AppState,
_hit: &input::PointerHit,
delta_y: f32,
delta_x: f32,
delta: WheelDelta,
) {
let ctx = self.context.borrow();
ctx.wayvr
.borrow_mut()
.data
.state
.send_mouse_scroll(delta_y, delta_x);
ctx.wayvr.borrow_mut().data.state.send_mouse_scroll(delta);
}
fn get_interaction_transform(&mut self) -> Option<Affine2> {