summaryrefslogtreecommitdiff
path: root/libopie2/opiecore/oinputsystem.cpp
Side-by-side diff
Diffstat (limited to 'libopie2/opiecore/oinputsystem.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opiecore/oinputsystem.cpp113
1 files changed, 112 insertions, 1 deletions
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 <qfile.h>
+
+/* STD */
+#include <errno.h>
+#include <string.h>
+#include <linux/input.h>
+#include <sys/fcntl.h>
+#include <sys/ioctl.h>
+
+#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] = "<unknown>";
+ ::ioctl( _fd, EVIOCGNAME(sizeof buf), buf );
+ return buf;
+}
+
+
+QString OInputDevice::path() const
+{
+ char buf[BUFSIZE] = "<unknown>";
+ ::ioctl( _fd, EVIOCGPHYS(sizeof buf), buf );
+ return buf;
+}
+
+
+QString OInputDevice::uniq() const
+{
+ char buf[BUFSIZE] = "<unknown>";
+ ::ioctl( _fd, EVIOCGUNIQ(sizeof buf), buf );
+ return buf;
+}
+