| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/input_device_factory_evdev.h" | 5 #include "ui/events/ozone/evdev/input_device_factory_evdev.h" |
| 6 | 6 |
| 7 #include <fcntl.h> | 7 #include <fcntl.h> |
| 8 #include <linux/input.h> | 8 #include <linux/input.h> |
| 9 | 9 |
| 10 #include "base/stl_util.h" | 10 #include "base/stl_util.h" |
| (...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 311 | 311 |
| 312 // If we have an existing device, detach it. We don't want two | 312 // If we have an existing device, detach it. We don't want two |
| 313 // devices with the same name open at the same time. | 313 // devices with the same name open at the same time. |
| 314 if (converters_[path]) | 314 if (converters_[path]) |
| 315 DetachInputDevice(path); | 315 DetachInputDevice(path); |
| 316 | 316 |
| 317 // Add initialized device to map. | 317 // Add initialized device to map. |
| 318 converters_[path] = converter.release(); | 318 converters_[path] = converter.release(); |
| 319 converters_[path]->Start(); | 319 converters_[path]->Start(); |
| 320 UpdateDirtyFlags(converters_[path]); | 320 UpdateDirtyFlags(converters_[path]); |
| 321 |
| 322 // Sync settings to new device. |
| 323 ApplyInputDeviceSettings(); |
| 321 } | 324 } |
| 322 | 325 |
| 323 if (--pending_device_changes_ == 0) | 326 if (--pending_device_changes_ == 0) |
| 324 NotifyDevicesUpdated(); | 327 NotifyDevicesUpdated(); |
| 325 } | 328 } |
| 326 | 329 |
| 327 void InputDeviceFactoryEvdev::DetachInputDevice(const base::FilePath& path) { | 330 void InputDeviceFactoryEvdev::DetachInputDevice(const base::FilePath& path) { |
| 328 TRACE_EVENT1("ozone", "DetachInputDevice", "path", path.value()); | 331 TRACE_EVENT1("ozone", "DetachInputDevice", "path", path.value()); |
| 329 DCHECK(task_runner_->RunsTasksOnCurrentThread()); | 332 DCHECK(task_runner_->RunsTasksOnCurrentThread()); |
| 330 | 333 |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 383 void InputDeviceFactoryEvdev::EnableInternalKeyboard() { | 386 void InputDeviceFactoryEvdev::EnableInternalKeyboard() { |
| 384 for (const auto& it : converters_) { | 387 for (const auto& it : converters_) { |
| 385 EventConverterEvdev* converter = it.second; | 388 EventConverterEvdev* converter = it.second; |
| 386 if (converter->type() == InputDeviceType::INPUT_DEVICE_INTERNAL && | 389 if (converter->type() == InputDeviceType::INPUT_DEVICE_INTERNAL && |
| 387 converter->HasKeyboard()) { | 390 converter->HasKeyboard()) { |
| 388 converter->AllowAllKeys(); | 391 converter->AllowAllKeys(); |
| 389 } | 392 } |
| 390 } | 393 } |
| 391 } | 394 } |
| 392 | 395 |
| 393 void InputDeviceFactoryEvdev::SetTouchpadSensitivity(int value) { | 396 void InputDeviceFactoryEvdev::UpdateInputDeviceSettings( |
| 394 SetIntPropertyForOneType(DT_TOUCHPAD, "Pointer Sensitivity", value); | 397 const InputDeviceSettingsEvdev& settings) { |
| 395 SetIntPropertyForOneType(DT_TOUCHPAD, "Scroll Sensitivity", value); | 398 input_device_settings_ = settings; |
| 396 } | 399 ApplyInputDeviceSettings(); |
| 397 | |
| 398 void InputDeviceFactoryEvdev::SetTapToClick(bool enabled) { | |
| 399 SetBoolPropertyForOneType(DT_TOUCHPAD, "Tap Enable", enabled); | |
| 400 } | |
| 401 | |
| 402 void InputDeviceFactoryEvdev::SetThreeFingerClick(bool enabled) { | |
| 403 SetBoolPropertyForOneType(DT_TOUCHPAD, "T5R2 Three Finger Click Enable", | |
| 404 enabled); | |
| 405 } | |
| 406 | |
| 407 void InputDeviceFactoryEvdev::SetTapDragging(bool enabled) { | |
| 408 SetBoolPropertyForOneType(DT_TOUCHPAD, "Tap Drag Enable", enabled); | |
| 409 } | |
| 410 | |
| 411 void InputDeviceFactoryEvdev::SetNaturalScroll(bool enabled) { | |
| 412 SetBoolPropertyForOneType(DT_MULTITOUCH, "Australian Scrolling", enabled); | |
| 413 } | |
| 414 | |
| 415 void InputDeviceFactoryEvdev::SetMouseSensitivity(int value) { | |
| 416 SetIntPropertyForOneType(DT_MOUSE, "Pointer Sensitivity", value); | |
| 417 SetIntPropertyForOneType(DT_MOUSE, "Scroll Sensitivity", value); | |
| 418 } | |
| 419 | |
| 420 void InputDeviceFactoryEvdev::SetTapToClickPaused(bool state) { | |
| 421 SetBoolPropertyForOneType(DT_TOUCHPAD, "Tap Paused", state); | |
| 422 } | 400 } |
| 423 | 401 |
| 424 void InputDeviceFactoryEvdev::GetTouchDeviceStatus( | 402 void InputDeviceFactoryEvdev::GetTouchDeviceStatus( |
| 425 const GetTouchDeviceStatusReply& reply) { | 403 const GetTouchDeviceStatusReply& reply) { |
| 426 scoped_ptr<std::string> status(new std::string); | 404 scoped_ptr<std::string> status(new std::string); |
| 427 #if defined(USE_EVDEV_GESTURES) | 405 #if defined(USE_EVDEV_GESTURES) |
| 428 DumpTouchDeviceStatus(gesture_property_provider_.get(), status.get()); | 406 DumpTouchDeviceStatus(gesture_property_provider_.get(), status.get()); |
| 429 #endif | 407 #endif |
| 430 reply.Run(status.Pass()); | 408 reply.Run(status.Pass()); |
| 431 } | 409 } |
| 432 | 410 |
| 433 base::WeakPtr<InputDeviceFactoryEvdev> InputDeviceFactoryEvdev::GetWeakPtr() { | 411 base::WeakPtr<InputDeviceFactoryEvdev> InputDeviceFactoryEvdev::GetWeakPtr() { |
| 434 return weak_ptr_factory_.GetWeakPtr(); | 412 return weak_ptr_factory_.GetWeakPtr(); |
| 435 } | 413 } |
| 436 | 414 |
| 415 void InputDeviceFactoryEvdev::ApplyInputDeviceSettings() { |
| 416 SetIntPropertyForOneType(DT_TOUCHPAD, "Pointer Sensitivity", |
| 417 input_device_settings_.touchpad_sensitivity); |
| 418 SetIntPropertyForOneType(DT_TOUCHPAD, "Scroll Sensitivity", |
| 419 input_device_settings_.touchpad_sensitivity); |
| 420 |
| 421 SetBoolPropertyForOneType(DT_TOUCHPAD, "Tap Enable", |
| 422 input_device_settings_.tap_to_click_enabled); |
| 423 SetBoolPropertyForOneType(DT_TOUCHPAD, "T5R2 Three Finger Click Enable", |
| 424 input_device_settings_.three_finger_click_enabled); |
| 425 SetBoolPropertyForOneType(DT_TOUCHPAD, "Tap Drag Enable", |
| 426 input_device_settings_.tap_dragging_enabled); |
| 427 |
| 428 SetBoolPropertyForOneType(DT_MULTITOUCH, "Australian Scrolling", |
| 429 input_device_settings_.natural_scroll_enabled); |
| 430 |
| 431 SetIntPropertyForOneType(DT_MOUSE, "Pointer Sensitivity", |
| 432 input_device_settings_.mouse_sensitivity); |
| 433 SetIntPropertyForOneType(DT_MOUSE, "Scroll Sensitivity", |
| 434 input_device_settings_.mouse_sensitivity); |
| 435 |
| 436 SetBoolPropertyForOneType(DT_TOUCHPAD, "Tap Paused", |
| 437 input_device_settings_.tap_to_click_paused); |
| 438 } |
| 439 |
| 437 void InputDeviceFactoryEvdev::UpdateDirtyFlags( | 440 void InputDeviceFactoryEvdev::UpdateDirtyFlags( |
| 438 const EventConverterEvdev* converter) { | 441 const EventConverterEvdev* converter) { |
| 439 if (converter->HasTouchscreen()) | 442 if (converter->HasTouchscreen()) |
| 440 touchscreen_list_dirty_ = true; | 443 touchscreen_list_dirty_ = true; |
| 441 | 444 |
| 442 if (converter->HasKeyboard()) | 445 if (converter->HasKeyboard()) |
| 443 keyboard_list_dirty_ = true; | 446 keyboard_list_dirty_ = true; |
| 444 | 447 |
| 445 if (converter->HasMouse()) | 448 if (converter->HasMouse()) |
| 446 mouse_list_dirty_ = true; | 449 mouse_list_dirty_ = true; |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 533 std::vector<int> ids; | 536 std::vector<int> ids; |
| 534 gesture_property_provider_->GetDeviceIdsByType(type, &ids); | 537 gesture_property_provider_->GetDeviceIdsByType(type, &ids); |
| 535 for (size_t i = 0; i < ids.size(); ++i) { | 538 for (size_t i = 0; i < ids.size(); ++i) { |
| 536 SetGestureBoolProperty(gesture_property_provider_.get(), ids[i], name, | 539 SetGestureBoolProperty(gesture_property_provider_.get(), ids[i], name, |
| 537 value); | 540 value); |
| 538 } | 541 } |
| 539 #endif | 542 #endif |
| 540 } | 543 } |
| 541 | 544 |
| 542 } // namespace ui | 545 } // namespace ui |
| OLD | NEW |