Keyboard tracker
authorZbigniew Kosinski <z.kosinski@samsung.com>
Mon, 20 Oct 2014 08:19:34 +0000 (10:19 +0200)
committerZbigniew Kosinski <z.kosinski@samsung.com>
Mon, 20 Oct 2014 08:39:32 +0000 (10:39 +0200)
include/keyboard_tracker.h [new file with mode: 0644]
org.tizen.smart-navigator.xml
src/keyboard_tracker.c [new file with mode: 0644]
src/navigator.c

diff --git a/include/keyboard_tracker.h b/include/keyboard_tracker.h
new file mode 100644 (file)
index 0000000..4adb8eb
--- /dev/null
@@ -0,0 +1,17 @@
+/**
+ * @brief Supported Keys
+ */
+enum _Key {
+     KEY_LEFT,
+     KEY_RIGHT,
+     KEY_UP,
+     KEY_DOWN,
+     KEY_COUNT
+};
+
+typedef enum _Key Key;
+
+typedef void (*Keyboard_Tracker_Cb) (void *data, Key k);
+void keyboard_tracker_init(void);
+void keyboard_tracker_register(Keyboard_Tracker_Cb cb, void *data);
+void keyboard_tracker_shutdown(void);
index ca3677f..775dac0 100755 (executable)
@@ -1,11 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <manifest xmlns="http://tizen.org/ns/packages" package="org.tizen.smart-navigator" version="0.1.0" install-location="internal-only">
-       <label>etest</label>
-       <author email="m.szczecinsk@partner.samsung.com" href="www.samsung.com">Michal Szczecinski</author>
-       <description>EFL TEST APPLICATION</description>
-       <ui-application appid="org.tizen.smart-navigator" exec="/opt/usr/apps/org.tizen.etetst/bin/smart-navigator" nodisplay="false" multiple="false" type="capp" taskmanage="true">
-               <label>smart-navigator</label>
-               <icon>/usr/apps/org.tizen.etest/res/icons/etest.png</icon>
-               <label xml:lang="en-us">smart-navigator</label>
-       </ui-application>
+        <label>smart-navigator</label>
+        <author email="m.szczecinsk@partner.samsung.com" href="www.samsung.com">Michal Szczecinski</author>
+        <description>SMART NAVIGATOR</description>
+        <ui-application appid="org.tizen.smart-navigator" exec="/usr/apps/org.tizen.smart-navigator/bin/smart-navigator" nodisplay="false" multiple="false" type="capp" taskmanage="true">
+                <label>smart-navigator</label>
+                <icon>/usr/apps/org.tizen.smart-navigator/res/icons/smart-navigator.png</icon>
+                <label xml:lang="en-us">smart-navigator</label>
+        </ui-application>
 </manifest>
+
diff --git a/src/keyboard_tracker.c b/src/keyboard_tracker.c
new file mode 100644 (file)
index 0000000..b6a71c1
--- /dev/null
@@ -0,0 +1,42 @@
+#include <string.h>
+#include <atspi/atspi.h>
+#include "keyboard_tracker.h"
+#include "logger.h"
+
+static AtspiDeviceListener *listener;
+static Keyboard_Tracker_Cb user_cb;
+static void *user_data;
+
+static gboolean device_cb(const AtspiDeviceEvent *stroke, void *data)
+{
+  Key k = KEY_COUNT;
+
+  if (!strcmp(stroke->event_string, "Up"))
+      k = KEY_UP;
+  else if (!strcmp(stroke->event_string, "Down"))
+      k = KEY_DOWN;
+  else if (!strcmp(stroke->event_string, "Left"))
+      k = KEY_LEFT;
+  else if (!strcmp(stroke->event_string, "Right"))
+      k = KEY_RIGHT;
+
+    if(user_cb)
+         user_cb(user_data, k);
+
+   return TRUE;
+}
+
+void keyboard_tracker_init(void)
+{
+   atspi_init();
+   listener =  atspi_device_listener_new(device_cb, NULL, NULL);
+   atspi_register_keystroke_listener(listener, NULL, 0, ATSPI_KEY_PRESSED, ATSPI_KEYLISTENER_SYNCHRONOUS, NULL);
+}
+void keyboard_tracker_register(Keyboard_Tracker_Cb cb, void *data)
+{
+   user_cb = cb;
+   user_data = data;
+}
+void keyboard_tracker_shutdown(void)
+{
+}
index 15e8fc3..2251030 100644 (file)
@@ -2,6 +2,7 @@
 #include "navigator.h"
 #include "gesture_tracker.h"
 #include "window_tracker.h"
+#include "keyboard_tracker.h"
 
 static AtspiAccessible *current_obj;
 static AtspiAccessible *top_window;
@@ -321,13 +322,34 @@ static void on_window_activate(void *data, AtspiAccessible *window)
       top_window = window;
 }
 
+static void on_keyboard(void *data, Key k)
+{
+   switch(k)
+   {
+       case KEY_LEFT:
+          _focus_prev();
+          break;
+       case KEY_RIGHT:
+          _focus_next();
+          break;
+       case KEY_UP:
+          break;
+       case KEY_DOWN:
+          break;
+       default:
+         ERROR("Function not implemented for key :%d", k);
+   }
+}
+
 void navigator_init(void)
 {
    // register on gesture_getected
    gesture_tracker_register(on_gesture_detected, NULL);
    // register on active_window
    window_tracker_register(on_window_activate, NULL);
-   return;
+
+   keyboard_tracker_init();
+   keyboard_tracker_register(on_keyboard, NULL);
 }
 void navigator_shutdown(void)
 {