| 267 | } |
| 268 | |
| 269 | bool WaylandClient::pointer(EventPhase phase, int x, int y, int contact) |
| 270 | { |
| 271 | if (!connected_) { |
| 272 | return false; |
| 273 | } |
| 274 | |
| 275 | const uint32_t event_time = WaylandHelper::get_ms(); |
| 276 | |
| 277 | int btn = BTN_LEFT; |
| 278 | switch (contact) { |
| 279 | case 1: |
| 280 | btn = BTN_RIGHT; |
| 281 | break; |
| 282 | case 2: |
| 283 | btn = BTN_MIDDLE; |
| 284 | break; |
| 285 | case 0: |
| 286 | default:; |
| 287 | } |
| 288 | |
| 289 | switch (phase) { |
| 290 | case EventPhase::Began: |
| 291 | zwlr_virtual_pointer_v1_motion_absolute(pointer_.get(), event_time, x, y, screen_size_.first, screen_size_.second); |
| 292 | zwlr_virtual_pointer_v1_button(pointer_.get(), event_time, btn, WL_POINTER_BUTTON_STATE_PRESSED); |
| 293 | break; |
| 294 | case EventPhase::Moved: |
| 295 | zwlr_virtual_pointer_v1_motion_absolute(pointer_.get(), event_time, x, y, screen_size_.first, screen_size_.second); |
| 296 | break; |
| 297 | case EventPhase::Ended: |
| 298 | zwlr_virtual_pointer_v1_button(pointer_.get(), event_time, btn, WL_POINTER_BUTTON_STATE_RELEASED); |
| 299 | break; |
| 300 | default:; |
| 301 | } |
| 302 | |
| 303 | zwlr_virtual_pointer_v1_frame(pointer_.get()); |
| 304 | return process_requests(); |
| 305 | } |
| 306 | |
| 307 | bool WaylandClient::relative_move(int dx, int dy) |
| 308 | { |
no test coverage detected