1/* 2 * Copyright 2008, Haiku, Inc. All rights reserved. 3 * Distributed under the terms of the MIT License. 4 * 5 */ 6#ifndef _INPUT_H 7#define _INPUT_H 8 9 10#include <Messenger.h> 11 12 13enum input_method_op { 14 B_INPUT_METHOD_STARTED = 0, 15 B_INPUT_METHOD_STOPPED = 1, 16 B_INPUT_METHOD_CHANGED = 2, 17 B_INPUT_METHOD_LOCATION_REQUEST = 3 18}; 19 20 21enum input_device_type { 22 B_POINTING_DEVICE = 0, 23 B_KEYBOARD_DEVICE = 1, 24 B_UNDEFINED_DEVICE = 2 25}; 26 27 28enum input_device_notification { 29 B_INPUT_DEVICE_ADDED = 0x0001, 30 B_INPUT_DEVICE_STARTED = 0x0002, 31 B_INPUT_DEVICE_STOPPED = 0x0004, 32 B_INPUT_DEVICE_REMOVED = 0x0008 33}; 34 35 36class BInputDevice; 37class BList; 38 39BInputDevice* find_input_device(const char* name); 40status_t get_input_devices(BList* list); 41status_t watch_input_devices(BMessenger target, bool start); 42 43 44class BInputDevice { 45public: 46 ~BInputDevice(); 47 48 const char* Name() const; 49 input_device_type Type() const; 50 bool IsRunning() const; 51 52 status_t Start(); 53 status_t Stop(); 54 status_t Control(uint32 code, BMessage* message); 55 56 static status_t Start(input_device_type type); 57 static status_t Stop(input_device_type type); 58 static status_t Control(input_device_type type, uint32 code, 59 BMessage* message); 60 61private: 62 friend BInputDevice* find_input_device(const char* name); 63 friend status_t get_input_devices(BList* list); 64 65 BInputDevice(); 66 void _SetNameAndType(const char* name, 67 input_device_type type); 68 69 char* fName; 70 input_device_type fType; 71 uint32 _reserved[4]; 72}; 73 74#endif // _INPUT_H 75