|
From: <sch...@us...> - 2008-11-22 01:38:43
|
Revision: 45
http://deraciel.svn.sourceforge.net/deraciel/?rev=45&view=rev
Author: schnippi001
Date: 2008-11-22 01:35:25 +0000 (Sat, 22 Nov 2008)
Log Message:
-----------
Added keyboard handler source files
Modified Paths:
--------------
trunk/main.c
Added Paths:
-----------
trunk/keyboard.c
trunk/keyboard.h
Added: trunk/keyboard.c
===================================================================
--- trunk/keyboard.c (rev 0)
+++ trunk/keyboard.c 2008-11-22 01:35:25 UTC (rev 45)
@@ -0,0 +1,50 @@
+#include "keyboard.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <ncurses.h>
+#include <pthread.h>
+
+
+pthread_t keyreader_thread;
+static void (*handler_cb)(const int key);
+
+
+
+static void *keyreader(void *unused)
+{
+ int tid;
+ int ch;
+
+ while(1) {
+ ch = getch();
+ if (handler_cb) handler_cb(ch);
+ }
+}
+
+
+
+void keyreader_create()
+{
+ int rc = pthread_create(&keyreader_thread, NULL, keyreader, NULL);
+ if (rc){
+ printf("ERROR; return code from pthread_create() is %d\n", rc);
+ exit(-1);
+ }
+}
+
+
+
+void keyreader_destroy()
+{
+}
+
+
+
+void keyreader_set_handler(void(*cb)(const int key))
+{
+ // TODO: Error handling
+ if (cb) {
+ handler_cb = cb;
+ }
+}
Property changes on: trunk/keyboard.c
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added: svn:keywords
+ Date Rev Author URL Id
Added: svn:eol-style
+ native
Added: trunk/keyboard.h
===================================================================
--- trunk/keyboard.h (rev 0)
+++ trunk/keyboard.h 2008-11-22 01:35:25 UTC (rev 45)
@@ -0,0 +1,12 @@
+#ifndef DERACIEL_KEYBOARD_H
+#define DERACIEL_KEYBOARD_H
+
+#include <stdint.h>
+
+void keyreader_create(void);
+
+void keyreader_destroy(void);
+
+void keyreader_set_handler(void(*cb)(const int key));
+
+#endif // !DERACIEL_KEYBOARD_H
Property changes on: trunk/keyboard.h
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added: svn:keywords
+ Date Rev Author URL Id
Added: svn:eol-style
+ native
Modified: trunk/main.c
===================================================================
--- trunk/main.c 2008-11-22 01:19:43 UTC (rev 44)
+++ trunk/main.c 2008-11-22 01:35:25 UTC (rev 45)
@@ -17,6 +17,8 @@
#define KEY_ESCAPE 27
+static void test_keyhandler(const int key);
+
int main(int argc, char **argv)
{
signal(SIGINT, finish); /* arrange interrupts to terminate */
@@ -78,6 +80,8 @@
// refresh();
// }
+ keyreader_set_handler(test_keyhandler);
+
/* Let thread work */
while(1);
@@ -100,3 +104,11 @@
exit(0);
}
+
+
+
+static void test_keyhandler(const int key)
+{
+ fprintf(stderr, "key: %c\n", (char)key);
+ if (key == KEY_ESCAPE) finish(0);
+}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|