From 227d06128b74ef78b8268e18dabe454469b65cc8 Mon Sep 17 00:00:00 2001 From: mickeyl Date: Wed, 02 Feb 2005 15:23:01 +0000 Subject: first work on input system abstractions --- (limited to 'libopie2/opiecore/oinputsystem.cpp') diff --git a/libopie2/opiecore/oinputsystem.cpp b/libopie2/opiecore/oinputsystem.cpp index c33d5c8..bfdc31f 100644 --- a/libopie2/opiecore/oinputsystem.cpp +++ b/libopie2/opiecore/oinputsystem.cpp @@ -27,5 +27,116 @@ */ #include "oinputsystem.h" - using namespace Opie::Core; + +/* QT */ +#include + +/* STD */ +#include +#include +#include +#include +#include + +#define BUFSIZE 256 + +/*====================================================================================== + * OInputSystem + *======================================================================================*/ + +OInputSystem* OInputSystem::_instance = 0; + +OInputSystem::OInputSystem() : QObject() +{ + qDebug( "OInputSystem::OInputSystem()" ); + synchronize(); +} + + +void OInputSystem::synchronize() +{ + qDebug( "OInputSystem::synchronize()" ); + if ( QFile::exists( "/dev/input/event0" ) ) _devices.insert( "0", new OInputDevice( this, "/dev/input/event0" ) ); + if ( QFile::exists( "/dev/input/event1" ) ) _devices.insert( "1", new OInputDevice( this, "/dev/input/event1" ) ); + if ( QFile::exists( "/dev/input/event2" ) ) _devices.insert( "2", new OInputDevice( this, "/dev/input/event2" ) ); + if ( QFile::exists( "/dev/input/event3" ) ) _devices.insert( "3", new OInputDevice( this, "/dev/input/event3" ) ); + qDebug( "OInputSystem::synchronize() done" ); +} + + +OInputSystem::~OInputSystem() +{ + qDebug( "OInputSystem::~OInputSystem()" ); +} + + +int OInputSystem::count() const +{ + return _devices.count(); +} + + +OInputDevice* OInputSystem::device( const QString& device ) const +{ + return _devices[device]; +} + + +OInputSystem* OInputSystem::instance() +{ + if ( !_instance ) _instance = new OInputSystem(); + return _instance; +} + + +OInputSystem::DeviceIterator OInputSystem::iterator() const +{ + return OInputSystem::DeviceIterator( _devices ); +} + +/*====================================================================================== + * OInputDevice + *======================================================================================*/ + +OInputDevice::OInputDevice( QObject* parent, const char* name ) : QObject( parent, name ) +{ + qDebug( "OInputDevice::OInputDevice( '%s' )", name ); + + _fd = ::open( name, O_RDONLY ); + if ( _fd == -1 ) + { + qDebug( "OInputDevice::OInputDevice() - Warning: couldn't open %s (%s)", name, strerror( errno ) ); + } +} + + +OInputDevice::~OInputDevice() +{ + qDebug( "OInputDevice::~OInputDevice()" ); +} + + +QString OInputDevice::identity() const +{ + char buf[BUFSIZE] = ""; + ::ioctl( _fd, EVIOCGNAME(sizeof buf), buf ); + return buf; +} + + +QString OInputDevice::path() const +{ + char buf[BUFSIZE] = ""; + ::ioctl( _fd, EVIOCGPHYS(sizeof buf), buf ); + return buf; +} + + +QString OInputDevice::uniq() const +{ + char buf[BUFSIZE] = ""; + ::ioctl( _fd, EVIOCGUNIQ(sizeof buf), buf ); + return buf; +} + -- cgit v0.9.0.2