15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 25d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// found in the LICENSE file. 45d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#ifndef UI_EVENTS_OZONE_EVDEV_EVENT_CONVERTER_EVDEV_H_ 65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#define UI_EVENTS_OZONE_EVDEV_EVENT_CONVERTER_EVDEV_H_ 75d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/callback.h" 91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/files/file_path.h" 101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/message_loop/message_loop.h" 11cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "ui/events/ozone/evdev/events_ozone_evdev_export.h" 125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)namespace ui { 145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class Event; 165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 170529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochtypedef base::Callback<void(Event*)> EventDispatchCallback; 180529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass EVENTS_OZONE_EVDEV_EXPORT EventConverterEvdev 201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci : public base::MessagePumpLibevent::Watcher { 215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) public: 221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EventConverterEvdev(int fd, const base::FilePath& path); 235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual ~EventConverterEvdev(); 245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Start reading events. 261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void Start(); 275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Stop reading events. 291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void Stop(); 305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) protected: 321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // base::MessagePumpLibevent::Watcher: 331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual void OnFileCanWriteWithoutBlocking(int fd) OVERRIDE; 345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // File descriptor to read. 361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int fd_; 371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Path to input device. 391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::FilePath path_; 40c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Controller for watching the input fd. 421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::MessagePumpLibevent::FileDescriptorWatcher controller_; 431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci private: 455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(EventConverterEvdev); 465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}; 475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} // namespace ui 495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif // UI_EVENTS_OZONE_EVDEV_EVENT_CONVERTER_EVDEV_H_ 51