aboutsummaryrefslogtreecommitdiff
path: root/src-qt5/core/libLumina/LInputDevice.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src-qt5/core/libLumina/LInputDevice.cpp')
-rw-r--r--src-qt5/core/libLumina/LInputDevice.cpp88
1 files changed, 88 insertions, 0 deletions
diff --git a/src-qt5/core/libLumina/LInputDevice.cpp b/src-qt5/core/libLumina/LInputDevice.cpp
new file mode 100644
index 00000000..a760d19d
--- /dev/null
+++ b/src-qt5/core/libLumina/LInputDevice.cpp
@@ -0,0 +1,88 @@
+//===========================================
+// Lumina-DE source code
+// Copyright (c) 2016, Ken Moore
+// Available under the 3-clause BSD license
+// See the LICENSE file for full details
+//===========================================
+#include "LInputDevice.h"
+
+//Qt Library includes
+#include <QString>
+#include <QX11Info>
+#include <QDebug>
+
+//XCB Library includes
+#include <xcb/xcb.h>
+#include <xcb/xcb_atom.h>
+#include <xcb/xinput.h>
+
+// LInputDevice Class
+LInputDevice::LInputDevice(unsigned int id, unsigned int type){
+ devID = id;
+ devType = type;
+ //devName = name;
+}
+
+LInputDevice::~LInputDevice(){
+
+}
+
+unsigned int LInputDevice::devNumber(){
+ return devID;
+}
+
+bool LInputDevice::isPointer(){
+ return (devType==XCB_INPUT_DEVICE_USE_IS_X_POINTER \
+ || devType==XCB_INPUT_DEVICE_USE_IS_X_EXTENSION_POINTER);
+}
+
+bool LInputDevice::isKeyboard(){
+ return (devType==XCB_INPUT_DEVICE_USE_IS_X_KEYBOARD \
+ || devType==XCB_INPUT_DEVICE_USE_IS_X_EXTENSION_KEYBOARD);
+}
+
+bool LInputDevice::isExtension(){
+ return (devType==XCB_INPUT_DEVICE_USE_IS_X_EXTENSION_DEVICE \
+ || devType==XCB_INPUT_DEVICE_USE_IS_X_EXTENSION_KEYBOARD \
+ || devType==XCB_INPUT_DEVICE_USE_IS_X_EXTENSION_POINTER);
+}
+
+QStringList LInputDevice::listProperties(){
+ xcb_input_list_device_properties_cookie_t cookie = xcb_input_list_device_properties_unchecked(QX11Info::connection(), devID);
+ xcb_input_list_device_properties_reply_t *reply = xcb_input_list_device_properties_reply(QX11Info::connection(), cookie, NULL);
+ qDebug() << "Property List:";
+ qDebug() << " - response_type:" << reply->response_type;
+ qDebug() << " - num atoms:" << reply->num_atoms;
+ qDebug() << " - length:" << reply->length;
+ qDebug() << " - sequence:" << reply->sequence;
+ //Done with data structure
+ ::free(reply);
+ //Return info
+ return QStringList();
+}
+//======================
+// LInput Static Functions
+//======================
+QList<LInputDevice*> LInput::listDevices(){
+ QList<LInputDevice*> devices;
+ xcb_input_list_input_devices_cookie_t cookie = xcb_input_list_input_devices_unchecked(QX11Info::connection());
+ xcb_input_list_input_devices_reply_t *reply = xcb_input_list_input_devices_reply(QX11Info::connection(), cookie, NULL);
+ if(reply==0){ return devices; } //error - nothing returned
+ //Use the iterator for going through the reply
+ xcb_input_device_info_iterator_t iter = xcb_input_list_input_devices_devices_iterator(reply);
+ //xcb_str_iterator_t nameiter = xcb_input_list_input_devices_names_iterator(reply);
+
+ //Now step through the reply
+ QStringList info;
+ while(iter.data != 0 ){
+ devices << new LInputDevice(iter.data->device_id, iter.data->device_use);
+ //qDebug() << "Input Device:" << iter.data->device_id;
+ //qDebug() << " - num_class_info:" << iter.data->num_class_info;
+ xcb_input_device_info_next(&iter);
+ //xcb_input_device_name_next(&nameiter);
+ }
+ //Free the reply (done with it)
+ ::free(reply);
+ //return the information
+ return devices;
+}
bgstack15