| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "ui/events/ozone/evdev/libgestures_glue/gesture_interpreter_libevdev_cr
os.h" | 5 #include "ui/events/ozone/evdev/libgestures_glue/gesture_interpreter_libevdev_cr
os.h" |
| 6 | 6 |
| 7 #include <gestures/gestures.h> | 7 #include <gestures/gestures.h> |
| 8 #include <libevdev/libevdev.h> | 8 #include <libevdev/libevdev.h> |
| 9 #include <linux/input.h> | 9 #include <linux/input.h> |
| 10 | 10 |
| (...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 194 hwstate.finger_cnt = current_finger; | 194 hwstate.finger_cnt = current_finger; |
| 195 hwstate.fingers = fingers; | 195 hwstate.fingers = fingers; |
| 196 | 196 |
| 197 // Buttons. | 197 // Buttons. |
| 198 if (Event_Get_Button_Left(evdev)) | 198 if (Event_Get_Button_Left(evdev)) |
| 199 hwstate.buttons_down |= GESTURES_BUTTON_LEFT; | 199 hwstate.buttons_down |= GESTURES_BUTTON_LEFT; |
| 200 if (Event_Get_Button_Middle(evdev)) | 200 if (Event_Get_Button_Middle(evdev)) |
| 201 hwstate.buttons_down |= GESTURES_BUTTON_MIDDLE; | 201 hwstate.buttons_down |= GESTURES_BUTTON_MIDDLE; |
| 202 if (Event_Get_Button_Right(evdev)) | 202 if (Event_Get_Button_Right(evdev)) |
| 203 hwstate.buttons_down |= GESTURES_BUTTON_RIGHT; | 203 hwstate.buttons_down |= GESTURES_BUTTON_RIGHT; |
| 204 if (Event_Get_Button(evdev, BTN_SIDE) || |
| 205 Event_Get_Button(evdev, BTN_BACK)) { |
| 206 hwstate.buttons_down |= GESTURES_BUTTON_BACK; |
| 207 } |
| 208 if (Event_Get_Button(evdev, BTN_EXTRA) || |
| 209 Event_Get_Button(evdev, BTN_FORWARD)) { |
| 210 hwstate.buttons_down |= GESTURES_BUTTON_FORWARD; |
| 211 } |
| 204 | 212 |
| 205 GestureInterpreterPushHardwareState(interpreter_, &hwstate); | 213 GestureInterpreterPushHardwareState(interpreter_, &hwstate); |
| 206 } | 214 } |
| 207 | 215 |
| 208 void GestureInterpreterLibevdevCros::OnLibEvdevCrosStopped( | 216 void GestureInterpreterLibevdevCros::OnLibEvdevCrosStopped( |
| 209 Evdev* evdev, | 217 Evdev* evdev, |
| 210 EventStateRec* state) { | 218 EventStateRec* state) { |
| 211 stime_t timestamp = StimeNow(); | 219 stime_t timestamp = StimeNow(); |
| 212 | 220 |
| 213 ReleaseKeys(timestamp); | 221 ReleaseKeys(timestamp); |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 312 void GestureInterpreterLibevdevCros::OnGestureButtonsChange( | 320 void GestureInterpreterLibevdevCros::OnGestureButtonsChange( |
| 313 const Gesture* gesture, | 321 const Gesture* gesture, |
| 314 const GestureButtonsChange* buttons) { | 322 const GestureButtonsChange* buttons) { |
| 315 DVLOG(3) << base::StringPrintf("Gesture Button Change: down=0x%02x up=0x%02x", | 323 DVLOG(3) << base::StringPrintf("Gesture Button Change: down=0x%02x up=0x%02x", |
| 316 buttons->down, | 324 buttons->down, |
| 317 buttons->up); | 325 buttons->up); |
| 318 | 326 |
| 319 if (!cursor_) | 327 if (!cursor_) |
| 320 return; // No cursor! | 328 return; // No cursor! |
| 321 | 329 |
| 322 if (buttons->down & GESTURES_BUTTON_LEFT) | 330 DispatchChangedMouseButtons(buttons->down, true, gesture->end_time); |
| 323 DispatchMouseButton(BTN_LEFT, true, gesture->end_time); | 331 DispatchChangedMouseButtons(buttons->up, false, gesture->end_time); |
| 324 if (buttons->down & GESTURES_BUTTON_MIDDLE) | |
| 325 DispatchMouseButton(BTN_MIDDLE, true, gesture->end_time); | |
| 326 if (buttons->down & GESTURES_BUTTON_RIGHT) | |
| 327 DispatchMouseButton(BTN_RIGHT, true, gesture->end_time); | |
| 328 if (buttons->up & GESTURES_BUTTON_LEFT) | |
| 329 DispatchMouseButton(BTN_LEFT, false, gesture->end_time); | |
| 330 if (buttons->up & GESTURES_BUTTON_MIDDLE) | |
| 331 DispatchMouseButton(BTN_MIDDLE, false, gesture->end_time); | |
| 332 if (buttons->up & GESTURES_BUTTON_RIGHT) | |
| 333 DispatchMouseButton(BTN_RIGHT, false, gesture->end_time); | |
| 334 } | 332 } |
| 335 | 333 |
| 336 void GestureInterpreterLibevdevCros::OnGestureContactInitiated( | 334 void GestureInterpreterLibevdevCros::OnGestureContactInitiated( |
| 337 const Gesture* gesture) { | 335 const Gesture* gesture) { |
| 338 // TODO(spang): handle contact initiated. | 336 // TODO(spang): handle contact initiated. |
| 339 } | 337 } |
| 340 | 338 |
| 341 void GestureInterpreterLibevdevCros::OnGestureFling(const Gesture* gesture, | 339 void GestureInterpreterLibevdevCros::OnGestureFling(const Gesture* gesture, |
| 342 const GestureFling* fling) { | 340 const GestureFling* fling) { |
| 343 DVLOG(3) << base::StringPrintf( | 341 DVLOG(3) << base::StringPrintf( |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 412 void GestureInterpreterLibevdevCros::OnGestureMetrics( | 410 void GestureInterpreterLibevdevCros::OnGestureMetrics( |
| 413 const Gesture* gesture, | 411 const Gesture* gesture, |
| 414 const GestureMetrics* metrics) { | 412 const GestureMetrics* metrics) { |
| 415 DVLOG(3) << base::StringPrintf("Gesture Metrics: [%f, %f] type=%d", | 413 DVLOG(3) << base::StringPrintf("Gesture Metrics: [%f, %f] type=%d", |
| 416 metrics->data[0], | 414 metrics->data[0], |
| 417 metrics->data[1], | 415 metrics->data[1], |
| 418 metrics->type); | 416 metrics->type); |
| 419 NOTIMPLEMENTED(); | 417 NOTIMPLEMENTED(); |
| 420 } | 418 } |
| 421 | 419 |
| 420 void GestureInterpreterLibevdevCros::DispatchChangedMouseButtons( |
| 421 unsigned int changed_buttons, bool down, stime_t time) { |
| 422 if (changed_buttons & GESTURES_BUTTON_LEFT) |
| 423 DispatchMouseButton(BTN_LEFT, down, time); |
| 424 if (changed_buttons & GESTURES_BUTTON_MIDDLE) |
| 425 DispatchMouseButton(BTN_MIDDLE, down, time); |
| 426 if (changed_buttons & GESTURES_BUTTON_RIGHT) |
| 427 DispatchMouseButton(BTN_RIGHT, down, time); |
| 428 if (changed_buttons & GESTURES_BUTTON_BACK) |
| 429 DispatchMouseButton(BTN_BACK, down, time); |
| 430 if (changed_buttons & GESTURES_BUTTON_FORWARD) |
| 431 DispatchMouseButton(BTN_FORWARD, down, time); |
| 432 } |
| 433 |
| 422 void GestureInterpreterLibevdevCros::DispatchMouseButton(unsigned int button, | 434 void GestureInterpreterLibevdevCros::DispatchMouseButton(unsigned int button, |
| 423 bool down, | 435 bool down, |
| 424 stime_t time) { | 436 stime_t time) { |
| 425 if (!SetMouseButtonState(button, down)) | 437 if (!SetMouseButtonState(button, down)) |
| 426 return; // No change. | 438 return; // No change. |
| 427 | 439 |
| 428 bool allow_remap = is_mouse_; | 440 bool allow_remap = is_mouse_; |
| 429 dispatcher_->DispatchMouseButtonEvent( | 441 dispatcher_->DispatchMouseButtonEvent( |
| 430 MouseButtonEventParams(id_, cursor_->GetLocation(), button, down, | 442 MouseButtonEventParams(id_, cursor_->GetLocation(), button, down, |
| 431 allow_remap, StimeToTimedelta(time))); | 443 allow_remap, StimeToTimedelta(time))); |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 476 | 488 |
| 477 bool GestureInterpreterLibevdevCros::SetMouseButtonState(unsigned int button, | 489 bool GestureInterpreterLibevdevCros::SetMouseButtonState(unsigned int button, |
| 478 bool down) { | 490 bool down) { |
| 479 DCHECK(BTN_MOUSE <= button && button < BTN_JOYSTICK); | 491 DCHECK(BTN_MOUSE <= button && button < BTN_JOYSTICK); |
| 480 int button_offset = button - BTN_MOUSE; | 492 int button_offset = button - BTN_MOUSE; |
| 481 | 493 |
| 482 if (mouse_button_state_.test(button_offset) == down) | 494 if (mouse_button_state_.test(button_offset) == down) |
| 483 return false; | 495 return false; |
| 484 | 496 |
| 485 // State transition: !(down) -> (down) | 497 // State transition: !(down) -> (down) |
| 486 if (down) | 498 mouse_button_state_.set(button_offset, down); |
| 487 mouse_button_state_.set(button_offset); | |
| 488 else | |
| 489 mouse_button_state_.reset(button_offset); | |
| 490 | 499 |
| 491 return true; | 500 return true; |
| 492 } | 501 } |
| 493 | 502 |
| 494 void GestureInterpreterLibevdevCros::ReleaseMouseButtons(stime_t timestamp) { | 503 void GestureInterpreterLibevdevCros::ReleaseMouseButtons(stime_t timestamp) { |
| 495 DispatchMouseButton(BTN_LEFT, false /* down */, timestamp); | 504 DispatchMouseButton(BTN_LEFT, false /* down */, timestamp); |
| 496 DispatchMouseButton(BTN_MIDDLE, false /* down */, timestamp); | 505 DispatchMouseButton(BTN_MIDDLE, false /* down */, timestamp); |
| 497 DispatchMouseButton(BTN_RIGHT, false /* down */, timestamp); | 506 DispatchMouseButton(BTN_RIGHT, false /* down */, timestamp); |
| 507 DispatchMouseButton(BTN_BACK, false /* down */, timestamp); |
| 508 DispatchMouseButton(BTN_FORWARD, false /* down */, timestamp); |
| 498 } | 509 } |
| 499 | 510 |
| 500 } // namespace ui | 511 } // namespace ui |
| OLD | NEW |