diff options
Diffstat (limited to 'NxWidgets/nxwm/include')
-rw-r--r-- | NxWidgets/nxwm/include/ckeyboard.hxx | 133 | ||||
-rw-r--r-- | NxWidgets/nxwm/include/ctaskbar.hxx | 10 | ||||
-rw-r--r-- | NxWidgets/nxwm/include/nxwmconfig.hxx | 39 |
3 files changed, 180 insertions, 2 deletions
diff --git a/NxWidgets/nxwm/include/ckeyboard.hxx b/NxWidgets/nxwm/include/ckeyboard.hxx new file mode 100644 index 000000000..8f16bd506 --- /dev/null +++ b/NxWidgets/nxwm/include/ckeyboard.hxx @@ -0,0 +1,133 @@ +/**************************************************************************** + * NxWidgets/nxwm/include/keyboard.hxx + * + * Copyright (C) 2012 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt <gnutt@nuttx.org> + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name NuttX, NxWidgets, nor the names of its contributors + * me be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +#ifndef __INCLUDE_CKEYBOARD_HXX +#define __INCLUDE_CKEYBOARD_HXX + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include <nuttx/nx/nxglib.h> + +#include <semaphore.h> +#include <pthread.h> + +#include <nuttx/input/touchscreen.h> + +#include "cnxserver.hxx" +#include "ccalibration.hxx" + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/**************************************************************************** + * Implementation Classes + ****************************************************************************/ + +namespace NxWM +{ + /** + * The CKeyboard class provides the the calibration window and obtains + * callibration data. + */ + + class CKeyboard + { + private: + /** + * The state of the listener thread. + */ + + enum EListenerState + { + LISTENER_NOTRUNNING = 0, /**< The listener thread has not yet been started */ + LISTENER_STARTED, /**< The listener thread has been started, but is not yet running */ + LISTENER_RUNNING, /**< The listener thread is running normally */ + LISTENER_STOPREQUESTED, /**< The listener thread has been requested to stop */ + LISTENER_TERMINATED, /**< The listener thread terminated normally */ + LISTENER_FAILED /**< The listener thread terminated abnormally */ + }; + + /** + * CKeyboard state data + */ + + NXWidgets::CNxServer *m_server; /**< The current NX server */ + int m_kbdFd; /**< File descriptor of the opened keyboard device */ + pthread_t m_thread; /**< The listener thread ID */ + volatile enum EListenerState m_state; /**< The state of the listener thread */ + sem_t m_waitSem; /**< Used to synchronize with the listener thread */ + + /** + * The keyboard listener thread. This is the entry point of a thread that + * listeners for and dispatches keyboard events to the NX server. + * + * @param arg. The CKeyboard 'this' pointer cast to a void*. + * @return This function normally does not return but may return NULL on + * error conditions. + */ + + static FAR void *listener(FAR void *arg); + + public: + + /** + * CKeyboard Constructor + * + * @param server. An instance of the NX server. This will be needed for + * injecting mouse data. + */ + + CKeyboard(NXWidgets::CNxServer *server); + + /** + * CKeyboard Destructor + */ + + ~CKeyboard(void); + + /** + * Start the keyboard listener thread. + * + * @return True if the keyboard listener thread was correctly started. + */ + + bool start(void); + }; +} + +#endif // __INCLUDE_CKEYBOARD_HXX diff --git a/NxWidgets/nxwm/include/ctaskbar.hxx b/NxWidgets/nxwm/include/ctaskbar.hxx index 2578a3ce9..5aab9e6bf 100644 --- a/NxWidgets/nxwm/include/ctaskbar.hxx +++ b/NxWidgets/nxwm/include/ctaskbar.hxx @@ -184,7 +184,15 @@ namespace NxWM * @return true on success */ - bool redrawTopWindow(void); + bool redrawTopApplication(void); + + /** + * Raise the top window to the top of the NXheirarchy. + * + * @return true on success + */ + + void raiseTopApplication(void); /** * (Re-)draw the background window. diff --git a/NxWidgets/nxwm/include/nxwmconfig.hxx b/NxWidgets/nxwm/include/nxwmconfig.hxx index 25a8beb66..8a7700af4 100644 --- a/NxWidgets/nxwm/include/nxwmconfig.hxx +++ b/NxWidgets/nxwm/include/nxwmconfig.hxx @@ -65,6 +65,7 @@ * CONFIG_NXWM_DEFAULT_FONTID - the NxWM default font ID. Default: * NXFONT_DEFAULT * CONFIG_NXWM_TOUCHSCREEN - Define to build in touchscreen support. + * CONFIG_NXWM_KEYBOARD - Define to build in touchscreen support. */ #ifndef CONFIG_HAVE_CXX @@ -386,7 +387,7 @@ * * CONFIG_NXWM_TOUCHSCREEN_DEVNO - Touchscreen device minor number, i.e., the * N in /dev/inputN. Default: 0 - * CONFIG_NXWM_TOUCHSCREEN_DEVNO - The full path to the touchscreen device. + * CONFIG_NXWM_TOUCHSCREEN_DEVPATH - The full path to the touchscreen device. * Default: "/dev/input0" * CONFIG_NXWM_TOUCHSCREEN_SIGNO - The realtime signal used to wake up the * touchscreen listener thread. Default: 5 @@ -416,6 +417,42 @@ # define CONFIG_NXWM_TOUCHSCREEN_LISTENERSTACK 1024 #endif +/* Keyboard device **********************************************************/ +/** + * Keyboard device settings + * + * CONFIG_NXWM_KEYBOARD_DEVNO - The full path to the touchscreen device. + * Default: "/dev/console" + * CONFIG_NXWM_KEYBOARD_SIGNO - The realtime signal used to wake up the + * touchscreen listener thread. Default: 6 + * CONFIG_NXWM_KEYBOARD_BUFSIZE - The size of the keyboard read data buffer. + * Default: 16 + * CONFIG_NXWM_KEYBOARD_LISTENERPRIO - Priority of the touchscreen listener + * thread. Default: SCHED_PRIORITY_DEFAULT + * CONFIG_NXWM_KEYBOARD_LISTENERSTACK - Keyboard listener thread stack + * size. Default 1024 + */ + +#ifndef CONFIG_NXWM_KEYBOARD_DEVPATH +# define CONFIG_NXWM_KEYBOARD_DEVPATH "/dev/console" +#endif + +#ifndef CONFIG_NXWM_KEYBOARD_SIGNO +# define CONFIG_NXWM_KEYBOARD_SIGNO 6 +#endif + +#ifndef CONFIG_NXWM_KEYBOARD_BUFSIZE +# define CONFIG_NXWM_KEYBOARD_BUFSIZE 6 +#endif + +#ifndef CONFIG_NXWM_KEYBOARD_LISTENERPRIO +# define CONFIG_NXWM_KEYBOARD_LISTENERPRIO SCHED_PRIORITY_DEFAULT +#endif + +#ifndef CONFIG_NXWM_KEYBOARD_LISTENERSTACK +# define CONFIG_NXWM_KEYBOARD_LISTENERSTACK 1024 +#endif + /* Calibration display ******************************************************/ /** * Calibration display settings: |