All of lore.kernel.org
 help / color / mirror / Atom feed
From: Anthony Liguori <anthony@codemonkey.ws>
To: Gerd Hoffmann <kraxel@redhat.com>
Cc: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH v2 1/4] kbd leds: infrastructure
Date: Tue, 09 Mar 2010 09:02:54 -0600	[thread overview]
Message-ID: <4B96631E.4020700@codemonkey.ws> (raw)
In-Reply-To: <1267201059-24145-2-git-send-email-kraxel@redhat.com>

On 02/26/2010 10:17 AM, Gerd Hoffmann wrote:
> Adds infrastructure for keyboard led status tracking to qemu.
>
> Signed-off-by: Gerd Hoffmann<kraxel@redhat.com>
>    
Applied.  Thanks.

Regards,

Anthony Liguori
> ---
>   console.h |   15 +++++++++++++++
>   input.c   |   31 +++++++++++++++++++++++++++++++
>   2 files changed, 46 insertions(+), 0 deletions(-)
>
> diff --git a/console.h b/console.h
> index 916859d..71e8ff2 100644
> --- a/console.h
> +++ b/console.h
> @@ -10,10 +10,16 @@
>   #define MOUSE_EVENT_RBUTTON 0x02
>   #define MOUSE_EVENT_MBUTTON 0x04
>
> +/* identical to the ps/2 keyboard bits */
> +#define QEMU_SCROLL_LOCK_LED (1<<  0)
> +#define QEMU_NUM_LOCK_LED    (1<<  1)
> +#define QEMU_CAPS_LOCK_LED   (1<<  2)
> +
>   /* in ms */
>   #define GUI_REFRESH_INTERVAL 30
>
>   typedef void QEMUPutKBDEvent(void *opaque, int keycode);
> +typedef void QEMUPutLEDEvent(void *opaque, int ledstate);
>   typedef void QEMUPutMouseEvent(void *opaque, int dx, int dy, int dz, int buttons_state);
>
>   typedef struct QEMUPutMouseEntry {
> @@ -26,13 +32,22 @@ typedef struct QEMUPutMouseEntry {
>       struct QEMUPutMouseEntry *next;
>   } QEMUPutMouseEntry;
>
> +typedef struct QEMUPutLEDEntry {
> +    QEMUPutLEDEvent *put_led;
> +    void *opaque;
> +    QTAILQ_ENTRY(QEMUPutLEDEntry) next;
> +} QEMUPutLEDEntry;
> +
>   void qemu_add_kbd_event_handler(QEMUPutKBDEvent *func, void *opaque);
>   QEMUPutMouseEntry *qemu_add_mouse_event_handler(QEMUPutMouseEvent *func,
>                                                   void *opaque, int absolute,
>                                                   const char *name);
>   void qemu_remove_mouse_event_handler(QEMUPutMouseEntry *entry);
> +QEMUPutLEDEntry *qemu_add_led_event_handler(QEMUPutLEDEvent *func, void *opaque);
> +void qemu_remove_led_event_handler(QEMUPutLEDEntry *entry);
>
>   void kbd_put_keycode(int keycode);
> +void kbd_put_ledstate(int ledstate);
>   void kbd_mouse_event(int dx, int dy, int dz, int buttons_state);
>   int kbd_mouse_is_absolute(void);
>
> diff --git a/input.c b/input.c
> index 955b9ab..baaa4c6 100644
> --- a/input.c
> +++ b/input.c
> @@ -33,6 +33,7 @@ static QEMUPutKBDEvent *qemu_put_kbd_event;
>   static void *qemu_put_kbd_event_opaque;
>   static QEMUPutMouseEntry *qemu_put_mouse_event_head;
>   static QEMUPutMouseEntry *qemu_put_mouse_event_current;
> +static QTAILQ_HEAD(, QEMUPutLEDEntry) led_handlers = QTAILQ_HEAD_INITIALIZER(led_handlers);
>
>   void qemu_add_kbd_event_handler(QEMUPutKBDEvent *func, void *opaque)
>   {
> @@ -102,6 +103,27 @@ void qemu_remove_mouse_event_handler(QEMUPutMouseEntry *entry)
>       qemu_free(entry);
>   }
>
> +QEMUPutLEDEntry *qemu_add_led_event_handler(QEMUPutLEDEvent *func,
> +                                            void *opaque)
> +{
> +    QEMUPutLEDEntry *s;
> +
> +    s = qemu_mallocz(sizeof(QEMUPutLEDEntry));
> +
> +    s->put_led = func;
> +    s->opaque = opaque;
> +    QTAILQ_INSERT_TAIL(&led_handlers, s, next);
> +    return s;
> +}
> +
> +void qemu_remove_led_event_handler(QEMUPutLEDEntry *entry)
> +{
> +    if (entry == NULL)
> +        return;
> +    QTAILQ_REMOVE(&led_handlers, entry, next);
> +    qemu_free(entry);
> +}
> +
>   void kbd_put_keycode(int keycode)
>   {
>       if (qemu_put_kbd_event) {
> @@ -109,6 +131,15 @@ void kbd_put_keycode(int keycode)
>       }
>   }
>
> +void kbd_put_ledstate(int ledstate)
> +{
> +    QEMUPutLEDEntry *cursor;
> +
> +    QTAILQ_FOREACH(cursor,&led_handlers, next) {
> +        cursor->put_led(cursor->opaque, ledstate);
> +    }
> +}
> +
>   void kbd_mouse_event(int dx, int dy, int dz, int buttons_state)
>   {
>       QEMUPutMouseEvent *mouse_event;
>    

  reply	other threads:[~2010-03-09 15:03 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-02-26 16:17 [Qemu-devel] [PATCH v2 0/4] keyboard led status tracking Gerd Hoffmann
2010-02-26 16:17 ` [Qemu-devel] [PATCH v2 1/4] kbd leds: infrastructure Gerd Hoffmann
2010-03-09 15:02   ` Anthony Liguori [this message]
2010-03-09 15:58     ` Paul Brook
2010-03-09 16:09       ` Anthony Liguori
2010-03-09 16:13       ` Gerd Hoffmann
2010-03-09 16:28         ` Anthony Liguori
2010-03-09 16:41           ` Gerd Hoffmann
2010-03-09 17:10             ` Anthony Liguori
2010-02-26 16:17 ` [Qemu-devel] [PATCH v2 2/4] kbd leds: ps/2 kbd Gerd Hoffmann
2010-02-26 16:17 ` [Qemu-devel] [PATCH v2 3/4] kbd leds: usb kbd Gerd Hoffmann
2010-02-26 16:17 ` [Qemu-devel] [PATCH v2 4/4] kbd keds: vnc Gerd Hoffmann
2010-02-26 17:29 ` [Qemu-devel] Re: [PATCH v2 0/4] keyboard led status tracking Juan Quintela

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4B96631E.4020700@codemonkey.ws \
    --to=anthony@codemonkey.ws \
    --cc=kraxel@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.