diff --git a/winit/src/conversion.rs b/winit/src/conversion.rs index 8ce3ed66..e10c633d 100644 --- a/winit/src/conversion.rs +++ b/winit/src/conversion.rs @@ -269,6 +269,13 @@ pub fn window_event( scale_factor, ))) } + winit::event::PointerSource::TabletTool { .. } => { + let position = position.to_logical::(scale_factor); + + Some(Event::Mouse(mouse::Event::CursorMoved { + position: Point::new(position.x as f32, position.y as f32), + })) + } _ => None, }, // TODO how to handle this for Touch? Is it different than a press? Need to double check winit impl @@ -306,6 +313,24 @@ pub fn window_event( } })) } + WindowEvent::PointerButton { + button: ButtonSource::TabletTool { button, .. }, + state, + .. + } => { + let button: Option = button.into(); + + button.map(mouse_button).map(|button| { + Event::Mouse(match state { + winit::event::ElementState::Pressed => { + mouse::Event::ButtonPressed(button) + } + winit::event::ElementState::Released => { + mouse::Event::ButtonReleased(button) + } + }) + }) + } WindowEvent::PointerButton { button: ButtonSource::Touch { finger_id, force }, state,