1
0
Fork 0
forked from wry/wry

tablet: implement version 2

This commit is contained in:
Julian Orth 2025-04-22 22:22:31 +02:00
parent 1d017ec2c2
commit dee0066f1a
25 changed files with 426 additions and 31 deletions

View file

@ -12,13 +12,13 @@ use {
Axis120, AxisFrame, AxisInverted, AxisPx, AxisSource, AxisStop, Button, HoldBegin,
HoldEnd, Key, Modifiers, PinchBegin, PinchEnd, PinchUpdate, PointerAbs, PointerRel,
SwipeBegin, SwipeEnd, SwipeUpdate, SwitchEvent, TabletPadButton,
TabletPadModeSwitch, TabletPadRingAngle, TabletPadRingFrame, TabletPadRingSource,
TabletPadRingStop, TabletPadStripFrame, TabletPadStripPosition,
TabletPadStripSource, TabletPadStripStop, TabletToolButton, TabletToolDistance,
TabletToolDown, TabletToolFrame, TabletToolMotion, TabletToolPressure,
TabletToolProximityIn, TabletToolProximityOut, TabletToolRotation,
TabletToolSlider, TabletToolTilt, TabletToolUp, TabletToolWheel, TouchCancel,
TouchDown, TouchMotion, TouchUp,
TabletPadDialDelta, TabletPadDialFrame, TabletPadModeSwitch, TabletPadRingAngle,
TabletPadRingFrame, TabletPadRingSource, TabletPadRingStop, TabletPadStripFrame,
TabletPadStripPosition, TabletPadStripSource, TabletPadStripStop, TabletToolButton,
TabletToolDistance, TabletToolDown, TabletToolFrame, TabletToolMotion,
TabletToolPressure, TabletToolProximityIn, TabletToolProximityOut,
TabletToolRotation, TabletToolSlider, TabletToolTilt, TabletToolUp,
TabletToolWheel, TouchCancel, TouchDown, TouchMotion, TouchUp,
},
},
},
@ -82,6 +82,11 @@ pub struct PendingTabletPadRing {
stop: bool,
}
#[derive(Default, Debug, Copy, Clone)]
pub struct PendingTabletPadDial {
value120: Option<i32>,
}
async fn run(seat_test: Rc<SeatTest>) {
let tc = &seat_test.tc;
let comp = tc.jay_compositor().await;
@ -586,6 +591,30 @@ async fn run(seat_test: Rc<SeatTest>) {
}
println!();
});
let tt = Rc::new(RefCell::new(PendingTabletPadDial::default()));
TabletPadDialDelta::handle(tc, se, tt.clone(), move |tt, ev| {
tt.borrow_mut().value120 = Some(ev.value120);
});
let st = seat_test.clone();
TabletPadDialFrame::handle(tc, se, tt.clone(), move |tt, ev| {
let tt = tt.take();
if !all && ev.seat != seat {
return;
}
if all {
print!("Seat: {}, ", st.name(ev.seat));
}
print!(
"Time: {:.4}, Device: {}, Dial: {}",
time(ev.time_usec),
ev.input_device,
ev.dial,
);
if let Some(val) = tt.value120 {
print!(", delta: {val}/120");
}
println!();
});
let st = seat_test.clone();
TouchDown::handle(tc, se, (), move |_, ev| {
if all || ev.seat == seat {