Keys: Difference between revisions

From Sharpfin
Jump to navigation Jump to search
 
(4 intermediate revisions by the same user not shown)
Line 1: Line 1:
== Overview ==
== Overview ==


The libreciva key function provides access to the reciva keyboard.
The [[Libreciva]] key function provides access to the Reciva keyboard.


In order to use the library function, you must include the header file:
In order to use the library function, you must include the header file:


<pre>
<syntaxhighlight>
#include "key.h"
#include "key.h"
</pre>
</syntaxhighlight>


=== struct key_handler *key_init() ===
=== struct key_handler *key_init() ===


This function must be called to initialise the keyboard interface.  It returns a handle structure, which must be used whenever the keyboard is polled with key_poll().
This function must be called to initialize the keyboard interface.  It returns a handle structure, which must be used whenever the keyboard is polled with key_poll().


=== int key_poll(struct key_handler *eh, struct key *ev) ===
=== int key_poll(struct key_handler *eh, struct key *ev) ===
Line 23: Line 23:
When the function returns '1', the key structure is updated to contain details of the selected key.
When the function returns '1', the key structure is updated to contain details of the selected key.


<pre>
<syntaxhighlight>
struct key {
struct key {
   enum key_state state ;
   enum key_state state;
   enum key_id id ;
   enum key_id id;
}
}
</pre>
</syntaxhighlight>


The '''state''' is one of the following:
The '''state''' is one of the following:
Line 55: Line 55:
== Example ==
== Example ==


<pre>
<syntaxhighlight>
  #include "key.h"
#include "key.h"
  #include <stdio.h>
#include <stdio.h>


main()
main() {
{
   struct key k;
   struct key k ;
   struct key_handler *h;
   struct key_handler *h ;


   /* initialise / open the keyboard */
   /* initialise / open the keyboard */
   h=key_init() ;
   h=key_init();
   if (h==NULL) exit(1) ;
   if (h==NULL) exit(1);


   /* wait for a key change */
   /* wait for a key change */
   while (!key_poll(h, &k)) ;
   while (!key_poll(h, &k));


   /* finally, report what happened */
   /* finally, report what happened */
   printf("Key State = %d, Key ID = %d
   printf("Key State = %d, Key ID = %d
", k.state, k.id) ;
", k.state, k.id);
}
}
</pre>
</syntaxhighlight>

Latest revision as of 10:58, 31 December 2011

Overview

The Libreciva key function provides access to the Reciva keyboard.

In order to use the library function, you must include the header file:

<syntaxhighlight>

  1. include "key.h"

</syntaxhighlight>

struct key_handler *key_init()

This function must be called to initialize the keyboard interface. It returns a handle structure, which must be used whenever the keyboard is polled with key_poll().

int key_poll(struct key_handler *eh, struct key *ev)

This function polls the keyboard, and returns:

  • -1 - There has been a problem with the key interface
  • 0 - No key events are queued
  • 1 - Key event has occurred

When the function returns '1', the key structure is updated to contain details of the selected key.

<syntaxhighlight> struct key {

 enum key_state state;
 enum key_id id;

} </syntaxhighlight>

The state is one of the following:

  • KEY_STATE_PRESSED
  • KEY_STATE_RELEASED

The id is one of the following:

  • KEY_ID_1
  • KEY_ID_2
  • KEY_ID_3
  • KEY_ID_4
  • KEY_ID_5
  • KEY_ID_SHIFT
  • KEY_ID_BACK
  • KEY_ID_SELECT
  • KEY_ID_REPLY
  • KEY_ID_POWER
  • KEY_ID_LEFT
  • KEY_ID_RIGHT
  • KEY_ID_VOLUP
  • KEY_ID_VOLDN
  • KEY_ID_BROWSE

Example

<syntaxhighlight>

  1. include "key.h"
  2. include <stdio.h>

main() {

 struct key k;
 struct key_handler *h;
 /* initialise / open the keyboard */
 h=key_init();
 if (h==NULL) exit(1);
 /* wait for a key change */
 while (!key_poll(h, &k));
 /* finally, report what happened */
 printf("Key State = %d, Key ID = %d

", k.state, k.id); } </syntaxhighlight>