Re: [Qemu-devel] [PATCH 1/2 v4] Support for multiple keyboard devices

2011-04-29 Thread Dmitry Zhurikhin

On 05/11/2010 12:18 AM, Anthony Liguori wrote:

On 04/18/2010 02:21 PM, Shahar Havivi wrote:
Patch add QEMUPutKbdEntry structure - handling each keyboard entry, the 
structure handled

by qemu tail queue.
Adding a new keyboard add to the list and select it, removing keyboard select 
the previous

keyboard in list.

Signed-off-by: Shahar Havivishah...@redhat.com


Applied all.  Thanks.
Hello.  What happened to this patchset?  Seems like it didn't make to the 
trunk.  Were there any objections not discussed on the list?  If there are no 
objections I'll update these patches and resend them.  Is it OK?


Regards,
Dmitry



Regards,

Anthony Liguori


---
  console.h|   14 -
  hw/adb.c |2 +-
  hw/escc.c|3 +-
  hw/musicpal.c|2 +-
  hw/nseries.c |4 +-
  hw/palm.c|2 +-
  hw/ps2.c |2 +-
  hw/pxa2xx_keypad.c   |3 +-
  hw/spitz.c   |3 +-
  hw/stellaris_input.c |2 +-
  hw/syborg_keyboard.c |2 +-
  hw/usb-hid.c |   10 ++--
  hw/xenfb.c   |5 ++-
  input.c  |   51 -
  14 files changed, 78 insertions(+), 27 deletions(-)

diff --git a/console.h b/console.h
index 6def115..91b66ea 100644
--- a/console.h
+++ b/console.h
@@ -41,7 +41,19 @@ typedef struct QEMUPutLEDEntry {
  QTAILQ_ENTRY(QEMUPutLEDEntry) next;
  } QEMUPutLEDEntry;

-void qemu_add_kbd_event_handler(QEMUPutKBDEvent *func, void *opaque);
+typedef struct QEMUPutKbdEntry {
+char *qemu_put_kbd_name;
+QEMUPutKBDEvent *qemu_put_kbd_event;
+void *qemu_put_kbd_event_opaque;
+int index;
+
+QTAILQ_ENTRY(QEMUPutKbdEntry) node;
+} QEMUPutKbdEntry;
+
+QEMUPutKbdEntry *qemu_add_kbd_event_handler(QEMUPutKBDEvent *func,
+void *opaque,
+const char *name);
+void qemu_remove_kbd_event_handler(QEMUPutKbdEntry *entry);
  QEMUPutMouseEntry *qemu_add_mouse_event_handler(QEMUPutMouseEvent *func,
  void *opaque, int absolute,
  const char *name);
diff --git a/hw/adb.c b/hw/adb.c
index 4fb7a62..09afcf9 100644
--- a/hw/adb.c
+++ b/hw/adb.c
@@ -304,7 +304,7 @@ void adb_kbd_init(ADBBusState *bus)
  s = qemu_mallocz(sizeof(KBDState));
  d = adb_register_device(bus, ADB_KEYBOARD, adb_kbd_request,
  adb_kbd_reset, s);
-qemu_add_kbd_event_handler(adb_kbd_put_keycode, d);
+qemu_add_kbd_event_handler(adb_kbd_put_keycode, d, adb);
  register_savevm(adb_kbd, -1, 1, adb_kbd_save,
  adb_kbd_load, s);
  }
diff --git a/hw/escc.c b/hw/escc.c
index 6d2fd36..2b21d98 100644
--- a/hw/escc.c
+++ b/hw/escc.c
@@ -919,7 +919,8 @@ static int escc_init1(SysBusDevice *dev)
   QEMU Sun Mouse);
  }
  if (s-chn[1].type == kbd) {
-qemu_add_kbd_event_handler(sunkbd_event,s-chn[1]);
+qemu_add_kbd_event_handler(sunkbd_event,s-chn[1],
+   QEMU Sun Keyboard);
  }

  return 0;
diff --git a/hw/musicpal.c b/hw/musicpal.c
index ebd933e..e1a3b6a 100644
--- a/hw/musicpal.c
+++ b/hw/musicpal.c
@@ -1447,7 +1447,7 @@ static int musicpal_key_init(SysBusDevice *dev)

  qdev_init_gpio_out(dev-qdev, s-out, ARRAY_SIZE(s-out));

-qemu_add_kbd_event_handler(musicpal_key_event, s);
+qemu_add_kbd_event_handler(musicpal_key_event, s, Musicpal);

  return 0;
  }
diff --git a/hw/nseries.c b/hw/nseries.c
index 0273eee..abfcec3 100644
--- a/hw/nseries.c
+++ b/hw/nseries.c
@@ -262,7 +262,7 @@ static void n800_tsc_kbd_setup(struct n800_s *s)
  if (n800_keys[i]= 0)
  s-keymap[n800_keys[i]] = i;

-qemu_add_kbd_event_handler(n800_key_event, s);
+qemu_add_kbd_event_handler(n800_key_event, s, Nokia n800);

  tsc210x_set_transform(s-ts.chip,n800_pointercal);
  }
@@ -371,7 +371,7 @@ static void n810_kbd_setup(struct n800_s *s)
  if (n810_keys[i]  0)
  s-keymap[n810_keys[i]] = i;

-qemu_add_kbd_event_handler(n810_key_event, s);
+qemu_add_kbd_event_handler(n810_key_event, s, Nokia n810);

  /* Attach the LM8322 keyboard to the I2C bus,
   * should happen in n8x0_i2c_setup and s-kbd be initialised here.  */
diff --git a/hw/palm.c b/hw/palm.c
index 6d19167..1b405d4 100644
--- a/hw/palm.c
+++ b/hw/palm.c
@@ -228,7 +228,7 @@ static void palmte_init(ram_addr_t ram_size,

  palmte_microwire_setup(cpu);

-qemu_add_kbd_event_handler(palmte_button_event, cpu);
+qemu_add_kbd_event_handler(palmte_button_event, cpu, Palm Keyboard);

  palmte_gpio_setup(cpu);

diff --git a/hw/ps2.c b/hw/ps2.c
index f0b206a..886da37 100644
--- a/hw/ps2.c
+++ b/hw/ps2.c
@@ -596,7 +596,7 @@ void *ps2_kbd_init(void (*update_irq)(void *, int), void 
*update_arg)

  s-common.update_arg = 

Re: [Qemu-devel] [PATCH 1/2 v4] Support for multiple keyboard devices

2011-04-29 Thread Shahar Havivi
Fine with me



On Apr 29, 2011, at 19:24, Dmitry Zhurikhin z...@ispras.ru wrote:

 On 05/11/2010 12:18 AM, Anthony Liguori wrote:
 On 04/18/2010 02:21 PM, Shahar Havivi wrote:
 Patch add QEMUPutKbdEntry structure - handling each keyboard entry, the 
 structure handled
 by qemu tail queue.
 Adding a new keyboard add to the list and select it, removing keyboard 
 select the previous
 keyboard in list.
 
 Signed-off-by: Shahar Havivishah...@redhat.com
 
 Applied all.  Thanks.
 Hello.  What happened to this patchset?  Seems like it didn't make to the 
 trunk.  Were there any objections not discussed on the list?  If there are no 
 objections I'll update these patches and resend them.  Is it OK?
 
Regards,
Dmitry
 
 
 Regards,
 
 Anthony Liguori
 
 ---
  console.h|   14 -
  hw/adb.c |2 +-
  hw/escc.c|3 +-
  hw/musicpal.c|2 +-
  hw/nseries.c |4 +-
  hw/palm.c|2 +-
  hw/ps2.c |2 +-
  hw/pxa2xx_keypad.c   |3 +-
  hw/spitz.c   |3 +-
  hw/stellaris_input.c |2 +-
  hw/syborg_keyboard.c |2 +-
  hw/usb-hid.c |   10 ++--
  hw/xenfb.c   |5 ++-
  input.c  |   51 
 -
  14 files changed, 78 insertions(+), 27 deletions(-)
 
 diff --git a/console.h b/console.h
 index 6def115..91b66ea 100644
 --- a/console.h
 +++ b/console.h
 @@ -41,7 +41,19 @@ typedef struct QEMUPutLEDEntry {
  QTAILQ_ENTRY(QEMUPutLEDEntry) next;
  } QEMUPutLEDEntry;
 
 -void qemu_add_kbd_event_handler(QEMUPutKBDEvent *func, void *opaque);
 +typedef struct QEMUPutKbdEntry {
 +char *qemu_put_kbd_name;
 +QEMUPutKBDEvent *qemu_put_kbd_event;
 +void *qemu_put_kbd_event_opaque;
 +int index;
 +
 +QTAILQ_ENTRY(QEMUPutKbdEntry) node;
 +} QEMUPutKbdEntry;
 +
 +QEMUPutKbdEntry *qemu_add_kbd_event_handler(QEMUPutKBDEvent *func,
 +void *opaque,
 +const char *name);
 +void qemu_remove_kbd_event_handler(QEMUPutKbdEntry *entry);
  QEMUPutMouseEntry *qemu_add_mouse_event_handler(QEMUPutMouseEvent *func,
  void *opaque, int absolute,
  const char *name);
 diff --git a/hw/adb.c b/hw/adb.c
 index 4fb7a62..09afcf9 100644
 --- a/hw/adb.c
 +++ b/hw/adb.c
 @@ -304,7 +304,7 @@ void adb_kbd_init(ADBBusState *bus)
  s = qemu_mallocz(sizeof(KBDState));
  d = adb_register_device(bus, ADB_KEYBOARD, adb_kbd_request,
  adb_kbd_reset, s);
 -qemu_add_kbd_event_handler(adb_kbd_put_keycode, d);
 +qemu_add_kbd_event_handler(adb_kbd_put_keycode, d, adb);
  register_savevm(adb_kbd, -1, 1, adb_kbd_save,
  adb_kbd_load, s);
  }
 diff --git a/hw/escc.c b/hw/escc.c
 index 6d2fd36..2b21d98 100644
 --- a/hw/escc.c
 +++ b/hw/escc.c
 @@ -919,7 +919,8 @@ static int escc_init1(SysBusDevice *dev)
   QEMU Sun Mouse);
  }
  if (s-chn[1].type == kbd) {
 -qemu_add_kbd_event_handler(sunkbd_event,s-chn[1]);
 +qemu_add_kbd_event_handler(sunkbd_event,s-chn[1],
 +   QEMU Sun Keyboard);
  }
 
  return 0;
 diff --git a/hw/musicpal.c b/hw/musicpal.c
 index ebd933e..e1a3b6a 100644
 --- a/hw/musicpal.c
 +++ b/hw/musicpal.c
 @@ -1447,7 +1447,7 @@ static int musicpal_key_init(SysBusDevice *dev)
 
  qdev_init_gpio_out(dev-qdev, s-out, ARRAY_SIZE(s-out));
 
 -qemu_add_kbd_event_handler(musicpal_key_event, s);
 +qemu_add_kbd_event_handler(musicpal_key_event, s, Musicpal);
 
  return 0;
  }
 diff --git a/hw/nseries.c b/hw/nseries.c
 index 0273eee..abfcec3 100644
 --- a/hw/nseries.c
 +++ b/hw/nseries.c
 @@ -262,7 +262,7 @@ static void n800_tsc_kbd_setup(struct n800_s *s)
  if (n800_keys[i]= 0)
  s-keymap[n800_keys[i]] = i;
 
 -qemu_add_kbd_event_handler(n800_key_event, s);
 +qemu_add_kbd_event_handler(n800_key_event, s, Nokia n800);
 
  tsc210x_set_transform(s-ts.chip,n800_pointercal);
  }
 @@ -371,7 +371,7 @@ static void n810_kbd_setup(struct n800_s *s)
  if (n810_keys[i]  0)
  s-keymap[n810_keys[i]] = i;
 
 -qemu_add_kbd_event_handler(n810_key_event, s);
 +qemu_add_kbd_event_handler(n810_key_event, s, Nokia n810);
 
  /* Attach the LM8322 keyboard to the I2C bus,
   * should happen in n8x0_i2c_setup and s-kbd be initialised here.  */
 diff --git a/hw/palm.c b/hw/palm.c
 index 6d19167..1b405d4 100644
 --- a/hw/palm.c
 +++ b/hw/palm.c
 @@ -228,7 +228,7 @@ static void palmte_init(ram_addr_t ram_size,
 
  palmte_microwire_setup(cpu);
 
 -qemu_add_kbd_event_handler(palmte_button_event, cpu);
 +qemu_add_kbd_event_handler(palmte_button_event, cpu, Palm Keyboard);
 
  palmte_gpio_setup(cpu);
 
 diff --git a/hw/ps2.c b/hw/ps2.c
 index 

Re: [Qemu-devel] [PATCH 1/2 v4] Support for multiple keyboard devices

2010-05-26 Thread Shahar Havivi
On Mon, May 10, 2010 at 03:18:29PM -0500, Anthony Liguori wrote:
 Date: Mon, 10 May 2010 15:18:29 -0500
 From: Anthony Liguori anth...@codemonkey.ws
 To: Shahar Havivi shah...@redhat.com
 CC: qemu-devel@nongnu.org
 Subject: Re: [Qemu-devel] [PATCH 1/2 v4] Support for multiple keyboard
  devices
 
 On 04/18/2010 02:21 PM, Shahar Havivi wrote:
 Patch add QEMUPutKbdEntry structure - handling each keyboard entry, the 
 structure handled
 by qemu tail queue.
 Adding a new keyboard add to the list and select it, removing keyboard 
 select the previous
 keyboard in list.
 
 Signed-off-by: Shahar Havivishah...@redhat.com
 
 Applied all.  Thanks.
 
 Regards,
 
 Anthony Liguori
 
Anthony, I don't think that you applied this changes,
Thanks
Shahar Havivi.

 ---
   console.h|   14 -
   hw/adb.c |2 +-
   hw/escc.c|3 +-
   hw/musicpal.c|2 +-
   hw/nseries.c |4 +-
   hw/palm.c|2 +-
   hw/ps2.c |2 +-
   hw/pxa2xx_keypad.c   |3 +-
   hw/spitz.c   |3 +-
   hw/stellaris_input.c |2 +-
   hw/syborg_keyboard.c |2 +-
   hw/usb-hid.c |   10 ++--
   hw/xenfb.c   |5 ++-
   input.c  |   51 
  -
   14 files changed, 78 insertions(+), 27 deletions(-)
 
 diff --git a/console.h b/console.h
 index 6def115..91b66ea 100644
 --- a/console.h
 +++ b/console.h
 @@ -41,7 +41,19 @@ typedef struct QEMUPutLEDEntry {
   QTAILQ_ENTRY(QEMUPutLEDEntry) next;
   } QEMUPutLEDEntry;
 
 -void qemu_add_kbd_event_handler(QEMUPutKBDEvent *func, void *opaque);
 +typedef struct QEMUPutKbdEntry {
 +char *qemu_put_kbd_name;
 +QEMUPutKBDEvent *qemu_put_kbd_event;
 +void *qemu_put_kbd_event_opaque;
 +int index;
 +
 +QTAILQ_ENTRY(QEMUPutKbdEntry) node;
 +} QEMUPutKbdEntry;
 +
 +QEMUPutKbdEntry *qemu_add_kbd_event_handler(QEMUPutKBDEvent *func,
 +void *opaque,
 +const char *name);
 +void qemu_remove_kbd_event_handler(QEMUPutKbdEntry *entry);
   QEMUPutMouseEntry *qemu_add_mouse_event_handler(QEMUPutMouseEvent *func,
   void *opaque, int absolute,
   const char *name);
 diff --git a/hw/adb.c b/hw/adb.c
 index 4fb7a62..09afcf9 100644
 --- a/hw/adb.c
 +++ b/hw/adb.c
 @@ -304,7 +304,7 @@ void adb_kbd_init(ADBBusState *bus)
   s = qemu_mallocz(sizeof(KBDState));
   d = adb_register_device(bus, ADB_KEYBOARD, adb_kbd_request,
   adb_kbd_reset, s);
 -qemu_add_kbd_event_handler(adb_kbd_put_keycode, d);
 +qemu_add_kbd_event_handler(adb_kbd_put_keycode, d, adb);
   register_savevm(adb_kbd, -1, 1, adb_kbd_save,
   adb_kbd_load, s);
   }
 diff --git a/hw/escc.c b/hw/escc.c
 index 6d2fd36..2b21d98 100644
 --- a/hw/escc.c
 +++ b/hw/escc.c
 @@ -919,7 +919,8 @@ static int escc_init1(SysBusDevice *dev)
QEMU Sun Mouse);
   }
   if (s-chn[1].type == kbd) {
 -qemu_add_kbd_event_handler(sunkbd_event,s-chn[1]);
 +qemu_add_kbd_event_handler(sunkbd_event,s-chn[1],
 +   QEMU Sun Keyboard);
   }
 
   return 0;
 diff --git a/hw/musicpal.c b/hw/musicpal.c
 index ebd933e..e1a3b6a 100644
 --- a/hw/musicpal.c
 +++ b/hw/musicpal.c
 @@ -1447,7 +1447,7 @@ static int musicpal_key_init(SysBusDevice *dev)
 
   qdev_init_gpio_out(dev-qdev, s-out, ARRAY_SIZE(s-out));
 
 -qemu_add_kbd_event_handler(musicpal_key_event, s);
 +qemu_add_kbd_event_handler(musicpal_key_event, s, Musicpal);
 
   return 0;
   }
 diff --git a/hw/nseries.c b/hw/nseries.c
 index 0273eee..abfcec3 100644
 --- a/hw/nseries.c
 +++ b/hw/nseries.c
 @@ -262,7 +262,7 @@ static void n800_tsc_kbd_setup(struct n800_s *s)
   if (n800_keys[i]= 0)
   s-keymap[n800_keys[i]] = i;
 
 -qemu_add_kbd_event_handler(n800_key_event, s);
 +qemu_add_kbd_event_handler(n800_key_event, s, Nokia n800);
 
   tsc210x_set_transform(s-ts.chip,n800_pointercal);
   }
 @@ -371,7 +371,7 @@ static void n810_kbd_setup(struct n800_s *s)
   if (n810_keys[i]  0)
   s-keymap[n810_keys[i]] = i;
 
 -qemu_add_kbd_event_handler(n810_key_event, s);
 +qemu_add_kbd_event_handler(n810_key_event, s, Nokia n810);
 
   /* Attach the LM8322 keyboard to the I2C bus,
* should happen in n8x0_i2c_setup and s-kbd be initialised here.  */
 diff --git a/hw/palm.c b/hw/palm.c
 index 6d19167..1b405d4 100644
 --- a/hw/palm.c
 +++ b/hw/palm.c
 @@ -228,7 +228,7 @@ static void palmte_init(ram_addr_t ram_size,
 
   palmte_microwire_setup(cpu);
 
 -qemu_add_kbd_event_handler(palmte_button_event, cpu);
 +qemu_add_kbd_event_handler(palmte_button_event, cpu, Palm Keyboard);
 
   palmte_gpio_setup(cpu);
 
 diff

Re: [Qemu-devel] [PATCH 1/2 v4] Support for multiple keyboard devices

2010-05-10 Thread Anthony Liguori

On 04/18/2010 02:21 PM, Shahar Havivi wrote:

Patch add QEMUPutKbdEntry structure - handling each keyboard entry, the 
structure handled
by qemu tail queue.
Adding a new keyboard add to the list and select it, removing keyboard select 
the previous
keyboard in list.

Signed-off-by: Shahar Havivishah...@redhat.com
   


Applied all.  Thanks.

Regards,

Anthony Liguori


---
  console.h|   14 -
  hw/adb.c |2 +-
  hw/escc.c|3 +-
  hw/musicpal.c|2 +-
  hw/nseries.c |4 +-
  hw/palm.c|2 +-
  hw/ps2.c |2 +-
  hw/pxa2xx_keypad.c   |3 +-
  hw/spitz.c   |3 +-
  hw/stellaris_input.c |2 +-
  hw/syborg_keyboard.c |2 +-
  hw/usb-hid.c |   10 ++--
  hw/xenfb.c   |5 ++-
  input.c  |   51 -
  14 files changed, 78 insertions(+), 27 deletions(-)

diff --git a/console.h b/console.h
index 6def115..91b66ea 100644
--- a/console.h
+++ b/console.h
@@ -41,7 +41,19 @@ typedef struct QEMUPutLEDEntry {
  QTAILQ_ENTRY(QEMUPutLEDEntry) next;
  } QEMUPutLEDEntry;

-void qemu_add_kbd_event_handler(QEMUPutKBDEvent *func, void *opaque);
+typedef struct QEMUPutKbdEntry {
+char *qemu_put_kbd_name;
+QEMUPutKBDEvent *qemu_put_kbd_event;
+void *qemu_put_kbd_event_opaque;
+int index;
+
+QTAILQ_ENTRY(QEMUPutKbdEntry) node;
+} QEMUPutKbdEntry;
+
+QEMUPutKbdEntry *qemu_add_kbd_event_handler(QEMUPutKBDEvent *func,
+void *opaque,
+const char *name);
+void qemu_remove_kbd_event_handler(QEMUPutKbdEntry *entry);
  QEMUPutMouseEntry *qemu_add_mouse_event_handler(QEMUPutMouseEvent *func,
  void *opaque, int absolute,
  const char *name);
diff --git a/hw/adb.c b/hw/adb.c
index 4fb7a62..09afcf9 100644
--- a/hw/adb.c
+++ b/hw/adb.c
@@ -304,7 +304,7 @@ void adb_kbd_init(ADBBusState *bus)
  s = qemu_mallocz(sizeof(KBDState));
  d = adb_register_device(bus, ADB_KEYBOARD, adb_kbd_request,
  adb_kbd_reset, s);
-qemu_add_kbd_event_handler(adb_kbd_put_keycode, d);
+qemu_add_kbd_event_handler(adb_kbd_put_keycode, d, adb);
  register_savevm(adb_kbd, -1, 1, adb_kbd_save,
  adb_kbd_load, s);
  }
diff --git a/hw/escc.c b/hw/escc.c
index 6d2fd36..2b21d98 100644
--- a/hw/escc.c
+++ b/hw/escc.c
@@ -919,7 +919,8 @@ static int escc_init1(SysBusDevice *dev)
   QEMU Sun Mouse);
  }
  if (s-chn[1].type == kbd) {
-qemu_add_kbd_event_handler(sunkbd_event,s-chn[1]);
+qemu_add_kbd_event_handler(sunkbd_event,s-chn[1],
+   QEMU Sun Keyboard);
  }

  return 0;
diff --git a/hw/musicpal.c b/hw/musicpal.c
index ebd933e..e1a3b6a 100644
--- a/hw/musicpal.c
+++ b/hw/musicpal.c
@@ -1447,7 +1447,7 @@ static int musicpal_key_init(SysBusDevice *dev)

  qdev_init_gpio_out(dev-qdev, s-out, ARRAY_SIZE(s-out));

-qemu_add_kbd_event_handler(musicpal_key_event, s);
+qemu_add_kbd_event_handler(musicpal_key_event, s, Musicpal);

  return 0;
  }
diff --git a/hw/nseries.c b/hw/nseries.c
index 0273eee..abfcec3 100644
--- a/hw/nseries.c
+++ b/hw/nseries.c
@@ -262,7 +262,7 @@ static void n800_tsc_kbd_setup(struct n800_s *s)
  if (n800_keys[i]= 0)
  s-keymap[n800_keys[i]] = i;

-qemu_add_kbd_event_handler(n800_key_event, s);
+qemu_add_kbd_event_handler(n800_key_event, s, Nokia n800);

  tsc210x_set_transform(s-ts.chip,n800_pointercal);
  }
@@ -371,7 +371,7 @@ static void n810_kbd_setup(struct n800_s *s)
  if (n810_keys[i]  0)
  s-keymap[n810_keys[i]] = i;

-qemu_add_kbd_event_handler(n810_key_event, s);
+qemu_add_kbd_event_handler(n810_key_event, s, Nokia n810);

  /* Attach the LM8322 keyboard to the I2C bus,
   * should happen in n8x0_i2c_setup and s-kbd be initialised here.  */
diff --git a/hw/palm.c b/hw/palm.c
index 6d19167..1b405d4 100644
--- a/hw/palm.c
+++ b/hw/palm.c
@@ -228,7 +228,7 @@ static void palmte_init(ram_addr_t ram_size,

  palmte_microwire_setup(cpu);

-qemu_add_kbd_event_handler(palmte_button_event, cpu);
+qemu_add_kbd_event_handler(palmte_button_event, cpu, Palm Keyboard);

  palmte_gpio_setup(cpu);

diff --git a/hw/ps2.c b/hw/ps2.c
index f0b206a..886da37 100644
--- a/hw/ps2.c
+++ b/hw/ps2.c
@@ -596,7 +596,7 @@ void *ps2_kbd_init(void (*update_irq)(void *, int), void 
*update_arg)
  s-common.update_arg = update_arg;
  s-scancode_set = 2;
  vmstate_register(0,vmstate_ps2_keyboard, s);
-qemu_add_kbd_event_handler(ps2_put_keycode, s);
+qemu_add_kbd_event_handler(ps2_put_keycode, s, QEMU PS/2 Keyboard);
  qemu_register_reset(ps2_kbd_reset, s);
  return s;
  }
diff --git 

[Qemu-devel] [PATCH 1/2 v4] Support for multiple keyboard devices

2010-04-18 Thread Shahar Havivi
Patch add QEMUPutKbdEntry structure - handling each keyboard entry, the 
structure handled
by qemu tail queue.
Adding a new keyboard add to the list and select it, removing keyboard select 
the previous
keyboard in list.

Signed-off-by: Shahar Havivi shah...@redhat.com
---
 console.h|   14 -
 hw/adb.c |2 +-
 hw/escc.c|3 +-
 hw/musicpal.c|2 +-
 hw/nseries.c |4 +-
 hw/palm.c|2 +-
 hw/ps2.c |2 +-
 hw/pxa2xx_keypad.c   |3 +-
 hw/spitz.c   |3 +-
 hw/stellaris_input.c |2 +-
 hw/syborg_keyboard.c |2 +-
 hw/usb-hid.c |   10 ++--
 hw/xenfb.c   |5 ++-
 input.c  |   51 -
 14 files changed, 78 insertions(+), 27 deletions(-)

diff --git a/console.h b/console.h
index 6def115..91b66ea 100644
--- a/console.h
+++ b/console.h
@@ -41,7 +41,19 @@ typedef struct QEMUPutLEDEntry {
 QTAILQ_ENTRY(QEMUPutLEDEntry) next;
 } QEMUPutLEDEntry;
 
-void qemu_add_kbd_event_handler(QEMUPutKBDEvent *func, void *opaque);
+typedef struct QEMUPutKbdEntry {
+char *qemu_put_kbd_name;
+QEMUPutKBDEvent *qemu_put_kbd_event;
+void *qemu_put_kbd_event_opaque;
+int index;
+
+QTAILQ_ENTRY(QEMUPutKbdEntry) node;
+} QEMUPutKbdEntry;
+
+QEMUPutKbdEntry *qemu_add_kbd_event_handler(QEMUPutKBDEvent *func,
+void *opaque,
+const char *name);
+void qemu_remove_kbd_event_handler(QEMUPutKbdEntry *entry);
 QEMUPutMouseEntry *qemu_add_mouse_event_handler(QEMUPutMouseEvent *func,
 void *opaque, int absolute,
 const char *name);
diff --git a/hw/adb.c b/hw/adb.c
index 4fb7a62..09afcf9 100644
--- a/hw/adb.c
+++ b/hw/adb.c
@@ -304,7 +304,7 @@ void adb_kbd_init(ADBBusState *bus)
 s = qemu_mallocz(sizeof(KBDState));
 d = adb_register_device(bus, ADB_KEYBOARD, adb_kbd_request,
 adb_kbd_reset, s);
-qemu_add_kbd_event_handler(adb_kbd_put_keycode, d);
+qemu_add_kbd_event_handler(adb_kbd_put_keycode, d, adb);
 register_savevm(adb_kbd, -1, 1, adb_kbd_save,
 adb_kbd_load, s);
 }
diff --git a/hw/escc.c b/hw/escc.c
index 6d2fd36..2b21d98 100644
--- a/hw/escc.c
+++ b/hw/escc.c
@@ -919,7 +919,8 @@ static int escc_init1(SysBusDevice *dev)
  QEMU Sun Mouse);
 }
 if (s-chn[1].type == kbd) {
-qemu_add_kbd_event_handler(sunkbd_event, s-chn[1]);
+qemu_add_kbd_event_handler(sunkbd_event, s-chn[1],
+   QEMU Sun Keyboard);
 }
 
 return 0;
diff --git a/hw/musicpal.c b/hw/musicpal.c
index ebd933e..e1a3b6a 100644
--- a/hw/musicpal.c
+++ b/hw/musicpal.c
@@ -1447,7 +1447,7 @@ static int musicpal_key_init(SysBusDevice *dev)
 
 qdev_init_gpio_out(dev-qdev, s-out, ARRAY_SIZE(s-out));
 
-qemu_add_kbd_event_handler(musicpal_key_event, s);
+qemu_add_kbd_event_handler(musicpal_key_event, s, Musicpal);
 
 return 0;
 }
diff --git a/hw/nseries.c b/hw/nseries.c
index 0273eee..abfcec3 100644
--- a/hw/nseries.c
+++ b/hw/nseries.c
@@ -262,7 +262,7 @@ static void n800_tsc_kbd_setup(struct n800_s *s)
 if (n800_keys[i] = 0)
 s-keymap[n800_keys[i]] = i;
 
-qemu_add_kbd_event_handler(n800_key_event, s);
+qemu_add_kbd_event_handler(n800_key_event, s, Nokia n800);
 
 tsc210x_set_transform(s-ts.chip, n800_pointercal);
 }
@@ -371,7 +371,7 @@ static void n810_kbd_setup(struct n800_s *s)
 if (n810_keys[i]  0)
 s-keymap[n810_keys[i]] = i;
 
-qemu_add_kbd_event_handler(n810_key_event, s);
+qemu_add_kbd_event_handler(n810_key_event, s, Nokia n810);
 
 /* Attach the LM8322 keyboard to the I2C bus,
  * should happen in n8x0_i2c_setup and s-kbd be initialised here.  */
diff --git a/hw/palm.c b/hw/palm.c
index 6d19167..1b405d4 100644
--- a/hw/palm.c
+++ b/hw/palm.c
@@ -228,7 +228,7 @@ static void palmte_init(ram_addr_t ram_size,
 
 palmte_microwire_setup(cpu);
 
-qemu_add_kbd_event_handler(palmte_button_event, cpu);
+qemu_add_kbd_event_handler(palmte_button_event, cpu, Palm Keyboard);
 
 palmte_gpio_setup(cpu);
 
diff --git a/hw/ps2.c b/hw/ps2.c
index f0b206a..886da37 100644
--- a/hw/ps2.c
+++ b/hw/ps2.c
@@ -596,7 +596,7 @@ void *ps2_kbd_init(void (*update_irq)(void *, int), void 
*update_arg)
 s-common.update_arg = update_arg;
 s-scancode_set = 2;
 vmstate_register(0, vmstate_ps2_keyboard, s);
-qemu_add_kbd_event_handler(ps2_put_keycode, s);
+qemu_add_kbd_event_handler(ps2_put_keycode, s, QEMU PS/2 Keyboard);
 qemu_register_reset(ps2_kbd_reset, s);
 return s;
 }
diff --git a/hw/pxa2xx_keypad.c b/hw/pxa2xx_keypad.c
index 060df58..2b75351 100644
--- a/hw/pxa2xx_keypad.c
+++ b/hw/pxa2xx_keypad.c
@@ -332,5 +332,6 @@