diff mbox series

[45/67] ui/vc: remove kby_put_keysym() and update function calls

Message ID 20230830093843.3531473-46-marcandre.lureau@redhat.com
State New
Headers show
Series Make pixman an optional dependency | expand

Commit Message

Marc-André Lureau Aug. 30, 2023, 9:38 a.m. UTC
From: Marc-André Lureau <marcandre.lureau@redhat.com>

The function calls to `kbd_put_keysym` have been updated to now call
`kbd_put_keysym_console` with a NULL console parameter.

Like most console functions, NULL argument is now for the active console.

This will allow to rename the text console functions in a consistent manner.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 include/ui/console.h |  1 -
 ui/console.c         | 14 ++++++------
 ui/curses.c          |  2 +-
 ui/vnc.c             | 54 ++++++++++++++++++++++----------------------
 ui/cocoa.m           |  2 +-
 5 files changed, 36 insertions(+), 37 deletions(-)

Comments

Akihiko Odaki Aug. 30, 2023, 8:59 p.m. UTC | #1
On 2023/08/30 18:38, marcandre.lureau@redhat.com wrote:
> From: Marc-André Lureau <marcandre.lureau@redhat.com>
> 
> The function calls to `kbd_put_keysym` have been updated to now call
> `kbd_put_keysym_console` with a NULL console parameter.
> 
> Like most console functions, NULL argument is now for the active console.
> 
> This will allow to rename the text console functions in a consistent manner.
> 
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
>   include/ui/console.h |  1 -
>   ui/console.c         | 14 ++++++------
>   ui/curses.c          |  2 +-
>   ui/vnc.c             | 54 ++++++++++++++++++++++----------------------
>   ui/cocoa.m           |  2 +-
>   5 files changed, 36 insertions(+), 37 deletions(-)
> 
> diff --git a/include/ui/console.h b/include/ui/console.h
> index 1ccd432b4d..9c362f0e87 100644
> --- a/include/ui/console.h
> +++ b/include/ui/console.h
> @@ -115,7 +115,6 @@ bool qemu_mouse_set(int index, Error **errp);
>   void kbd_put_keysym_console(QemuTextConsole *s, int keysym);
>   bool kbd_put_qcode_console(QemuTextConsole *s, int qcode, bool ctrl);
>   void kbd_put_string_console(QemuTextConsole *s, const char *str, int len);
> -void kbd_put_keysym(int keysym);
>   
>   /* Touch devices */
>   typedef struct touch_slot {
> diff --git a/ui/console.c b/ui/console.c
> index a98adbb1b2..6068e02928 100644
> --- a/ui/console.c
> +++ b/ui/console.c
> @@ -1141,6 +1141,13 @@ void kbd_put_keysym_console(QemuTextConsole *s, int keysym)
>       int c;
>       uint32_t num_free;
>   
> +    if (!s) {
> +        if (!QEMU_IS_TEXT_CONSOLE(active_console)) {
> +            return;
> +        }
> +        s = QEMU_TEXT_CONSOLE(active_console);
> +    }
> +
>       switch(keysym) {
>       case QEMU_KEY_CTRL_UP:
>           console_scroll(s, -1);
> @@ -1231,13 +1238,6 @@ void kbd_put_string_console(QemuTextConsole *s, const char *str, int len)
>       }
>   }
>   
> -void kbd_put_keysym(int keysym)
> -{
> -    if (QEMU_IS_TEXT_CONSOLE(active_console)) {
> -        kbd_put_keysym_console(QEMU_TEXT_CONSOLE(active_console), keysym);
> -    }
> -}
> -
>   static void text_console_invalidate(void *opaque)
>   {
>       QemuTextConsole *s = QEMU_TEXT_CONSOLE(opaque);
> diff --git a/ui/curses.c b/ui/curses.c
> index de962faa7c..4ddbbae7cd 100644
> --- a/ui/curses.c
> +++ b/ui/curses.c
> @@ -400,7 +400,7 @@ static void curses_refresh(DisplayChangeListener *dcl)
>               if (keysym == -1)
>                   keysym = chr;
>   
> -            kbd_put_keysym(keysym);
> +            kbd_put_keysym_console(NULL, keysym);
>           }
>       }
>   }
> diff --git a/ui/vnc.c b/ui/vnc.c
> index 92964dcc0c..1fa4456744 100644
> --- a/ui/vnc.c
> +++ b/ui/vnc.c
> @@ -1945,88 +1945,88 @@ static void do_key_event(VncState *vs, int down, int keycode, int sym)
>               case 0xb8:                          /* Right ALT */
>                   break;
>               case 0xc8:
> -                kbd_put_keysym(QEMU_KEY_UP);
> +                kbd_put_keysym_console(NULL, QEMU_KEY_UP);

vs->vd->dcl.con should be used instead. There may be VNC connections for 
consoles other than the "active console" and in such a case 
vs->vd->dcl.con != NULL. Unfortunately it seems that ui/vnc is very 
buggy in such a situation.

>                   break;
>               case 0xd0:
> -                kbd_put_keysym(QEMU_KEY_DOWN);
> +                kbd_put_keysym_console(NULL, QEMU_KEY_DOWN);
>                   break;
>               case 0xcb:
> -                kbd_put_keysym(QEMU_KEY_LEFT);
> +                kbd_put_keysym_console(NULL, QEMU_KEY_LEFT);
>                   break;
>               case 0xcd:
> -                kbd_put_keysym(QEMU_KEY_RIGHT);
> +                kbd_put_keysym_console(NULL, QEMU_KEY_RIGHT);
>                   break;
>               case 0xd3:
> -                kbd_put_keysym(QEMU_KEY_DELETE);
> +                kbd_put_keysym_console(NULL, QEMU_KEY_DELETE);
>                   break;
>               case 0xc7:
> -                kbd_put_keysym(QEMU_KEY_HOME);
> +                kbd_put_keysym_console(NULL, QEMU_KEY_HOME);
>                   break;
>               case 0xcf:
> -                kbd_put_keysym(QEMU_KEY_END);
> +                kbd_put_keysym_console(NULL, QEMU_KEY_END);
>                   break;
>               case 0xc9:
> -                kbd_put_keysym(QEMU_KEY_PAGEUP);
> +                kbd_put_keysym_console(NULL, QEMU_KEY_PAGEUP);
>                   break;
>               case 0xd1:
> -                kbd_put_keysym(QEMU_KEY_PAGEDOWN);
> +                kbd_put_keysym_console(NULL, QEMU_KEY_PAGEDOWN);
>                   break;
>   
>               case 0x47:
> -                kbd_put_keysym(numlock ? '7' : QEMU_KEY_HOME);
> +                kbd_put_keysym_console(NULL, numlock ? '7' : QEMU_KEY_HOME);
>                   break;
>               case 0x48:
> -                kbd_put_keysym(numlock ? '8' : QEMU_KEY_UP);
> +                kbd_put_keysym_console(NULL, numlock ? '8' : QEMU_KEY_UP);
>                   break;
>               case 0x49:
> -                kbd_put_keysym(numlock ? '9' : QEMU_KEY_PAGEUP);
> +                kbd_put_keysym_console(NULL, numlock ? '9' : QEMU_KEY_PAGEUP);
>                   break;
>               case 0x4b:
> -                kbd_put_keysym(numlock ? '4' : QEMU_KEY_LEFT);
> +                kbd_put_keysym_console(NULL, numlock ? '4' : QEMU_KEY_LEFT);
>                   break;
>               case 0x4c:
> -                kbd_put_keysym('5');
> +                kbd_put_keysym_console(NULL, '5');
>                   break;
>               case 0x4d:
> -                kbd_put_keysym(numlock ? '6' : QEMU_KEY_RIGHT);
> +                kbd_put_keysym_console(NULL, numlock ? '6' : QEMU_KEY_RIGHT);
>                   break;
>               case 0x4f:
> -                kbd_put_keysym(numlock ? '1' : QEMU_KEY_END);
> +                kbd_put_keysym_console(NULL, numlock ? '1' : QEMU_KEY_END);
>                   break;
>               case 0x50:
> -                kbd_put_keysym(numlock ? '2' : QEMU_KEY_DOWN);
> +                kbd_put_keysym_console(NULL, numlock ? '2' : QEMU_KEY_DOWN);
>                   break;
>               case 0x51:
> -                kbd_put_keysym(numlock ? '3' : QEMU_KEY_PAGEDOWN);
> +                kbd_put_keysym_console(NULL, numlock ? '3' : QEMU_KEY_PAGEDOWN);
>                   break;
>               case 0x52:
> -                kbd_put_keysym('0');
> +                kbd_put_keysym_console(NULL, '0');
>                   break;
>               case 0x53:
> -                kbd_put_keysym(numlock ? '.' : QEMU_KEY_DELETE);
> +                kbd_put_keysym_console(NULL, numlock ? '.' : QEMU_KEY_DELETE);
>                   break;
>   
>               case 0xb5:
> -                kbd_put_keysym('/');
> +                kbd_put_keysym_console(NULL, '/');
>                   break;
>               case 0x37:
> -                kbd_put_keysym('*');
> +                kbd_put_keysym_console(NULL, '*');
>                   break;
>               case 0x4a:
> -                kbd_put_keysym('-');
> +                kbd_put_keysym_console(NULL, '-');
>                   break;
>               case 0x4e:
> -                kbd_put_keysym('+');
> +                kbd_put_keysym_console(NULL, '+');
>                   break;
>               case 0x9c:
> -                kbd_put_keysym('\n');
> +                kbd_put_keysym_console(NULL, '\n');
>                   break;
>   
>               default:
>                   if (control) {
> -                    kbd_put_keysym(sym & 0x1f);
> +                    kbd_put_keysym_console(NULL, sym & 0x1f);
>                   } else {
> -                    kbd_put_keysym(sym);
> +                    kbd_put_keysym_console(NULL, sym);
>                   }
>                   break;
>               }
> diff --git a/ui/cocoa.m b/ui/cocoa.m
> index 0c2153d17c..9eb4da7713 100644
> --- a/ui/cocoa.m
> +++ b/ui/cocoa.m
> @@ -784,7 +784,7 @@ - (void) handleMonitorInput:(NSEvent *)event
>       }
>   
>       if (keysym) {
> -        kbd_put_keysym(keysym);
> +        kbd_put_keysym_console(NULL, keysym);
>       }
>   }
>
Marc-André Lureau Sept. 4, 2023, 12:42 p.m. UTC | #2
Hi

On Thu, Aug 31, 2023 at 12:59 AM Akihiko Odaki <akihiko.odaki@daynix.com> wrote:
>
> On 2023/08/30 18:38, marcandre.lureau@redhat.com wrote:
> > From: Marc-André Lureau <marcandre.lureau@redhat.com>
> >
> > The function calls to `kbd_put_keysym` have been updated to now call
> > `kbd_put_keysym_console` with a NULL console parameter.
> >
> > Like most console functions, NULL argument is now for the active console.
> >
> > This will allow to rename the text console functions in a consistent manner.
> >
> > Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> > ---
> >   include/ui/console.h |  1 -
> >   ui/console.c         | 14 ++++++------
> >   ui/curses.c          |  2 +-
> >   ui/vnc.c             | 54 ++++++++++++++++++++++----------------------
> >   ui/cocoa.m           |  2 +-
> >   5 files changed, 36 insertions(+), 37 deletions(-)
> >
> > diff --git a/include/ui/console.h b/include/ui/console.h
> > index 1ccd432b4d..9c362f0e87 100644
> > --- a/include/ui/console.h
> > +++ b/include/ui/console.h
> > @@ -115,7 +115,6 @@ bool qemu_mouse_set(int index, Error **errp);
> >   void kbd_put_keysym_console(QemuTextConsole *s, int keysym);
> >   bool kbd_put_qcode_console(QemuTextConsole *s, int qcode, bool ctrl);
> >   void kbd_put_string_console(QemuTextConsole *s, const char *str, int len);
> > -void kbd_put_keysym(int keysym);
> >
> >   /* Touch devices */
> >   typedef struct touch_slot {
> > diff --git a/ui/console.c b/ui/console.c
> > index a98adbb1b2..6068e02928 100644
> > --- a/ui/console.c
> > +++ b/ui/console.c
> > @@ -1141,6 +1141,13 @@ void kbd_put_keysym_console(QemuTextConsole *s, int keysym)
> >       int c;
> >       uint32_t num_free;
> >
> > +    if (!s) {
> > +        if (!QEMU_IS_TEXT_CONSOLE(active_console)) {
> > +            return;
> > +        }
> > +        s = QEMU_TEXT_CONSOLE(active_console);
> > +    }
> > +
> >       switch(keysym) {
> >       case QEMU_KEY_CTRL_UP:
> >           console_scroll(s, -1);
> > @@ -1231,13 +1238,6 @@ void kbd_put_string_console(QemuTextConsole *s, const char *str, int len)
> >       }
> >   }
> >
> > -void kbd_put_keysym(int keysym)
> > -{
> > -    if (QEMU_IS_TEXT_CONSOLE(active_console)) {
> > -        kbd_put_keysym_console(QEMU_TEXT_CONSOLE(active_console), keysym);
> > -    }
> > -}
> > -
> >   static void text_console_invalidate(void *opaque)
> >   {
> >       QemuTextConsole *s = QEMU_TEXT_CONSOLE(opaque);
> > diff --git a/ui/curses.c b/ui/curses.c
> > index de962faa7c..4ddbbae7cd 100644
> > --- a/ui/curses.c
> > +++ b/ui/curses.c
> > @@ -400,7 +400,7 @@ static void curses_refresh(DisplayChangeListener *dcl)
> >               if (keysym == -1)
> >                   keysym = chr;
> >
> > -            kbd_put_keysym(keysym);
> > +            kbd_put_keysym_console(NULL, keysym);
> >           }
> >       }
> >   }
> > diff --git a/ui/vnc.c b/ui/vnc.c
> > index 92964dcc0c..1fa4456744 100644
> > --- a/ui/vnc.c
> > +++ b/ui/vnc.c
> > @@ -1945,88 +1945,88 @@ static void do_key_event(VncState *vs, int down, int keycode, int sym)
> >               case 0xb8:                          /* Right ALT */
> >                   break;
> >               case 0xc8:
> > -                kbd_put_keysym(QEMU_KEY_UP);
> > +                kbd_put_keysym_console(NULL, QEMU_KEY_UP);
>
> vs->vd->dcl.con should be used instead. There may be VNC connections for
> consoles other than the "active console" and in such a case
> vs->vd->dcl.con != NULL. Unfortunately it seems that ui/vnc is very
> buggy in such a situation.
>

That's not how the console & VNC server code works. VNC server will
send the key event to the hw anyway. But if the active_console is
text/vc, then it also sends (some) of the key events to it. There is
no "per-client" console either, the console switch is global
(console_select()).

Anyway, this patch is quite systematic. Further complicated changes
should be done later. please ack/r-b

thanks
Akihiko Odaki Sept. 4, 2023, 12:47 p.m. UTC | #3
On 2023/09/04 21:42, Marc-André Lureau wrote:
> Hi
> 
> On Thu, Aug 31, 2023 at 12:59 AM Akihiko Odaki <akihiko.odaki@daynix.com> wrote:
>>
>> On 2023/08/30 18:38, marcandre.lureau@redhat.com wrote:
>>> From: Marc-André Lureau <marcandre.lureau@redhat.com>
>>>
>>> The function calls to `kbd_put_keysym` have been updated to now call
>>> `kbd_put_keysym_console` with a NULL console parameter.
>>>
>>> Like most console functions, NULL argument is now for the active console.
>>>
>>> This will allow to rename the text console functions in a consistent manner.
>>>
>>> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
>>> ---
>>>    include/ui/console.h |  1 -
>>>    ui/console.c         | 14 ++++++------
>>>    ui/curses.c          |  2 +-
>>>    ui/vnc.c             | 54 ++++++++++++++++++++++----------------------
>>>    ui/cocoa.m           |  2 +-
>>>    5 files changed, 36 insertions(+), 37 deletions(-)
>>>
>>> diff --git a/include/ui/console.h b/include/ui/console.h
>>> index 1ccd432b4d..9c362f0e87 100644
>>> --- a/include/ui/console.h
>>> +++ b/include/ui/console.h
>>> @@ -115,7 +115,6 @@ bool qemu_mouse_set(int index, Error **errp);
>>>    void kbd_put_keysym_console(QemuTextConsole *s, int keysym);
>>>    bool kbd_put_qcode_console(QemuTextConsole *s, int qcode, bool ctrl);
>>>    void kbd_put_string_console(QemuTextConsole *s, const char *str, int len);
>>> -void kbd_put_keysym(int keysym);
>>>
>>>    /* Touch devices */
>>>    typedef struct touch_slot {
>>> diff --git a/ui/console.c b/ui/console.c
>>> index a98adbb1b2..6068e02928 100644
>>> --- a/ui/console.c
>>> +++ b/ui/console.c
>>> @@ -1141,6 +1141,13 @@ void kbd_put_keysym_console(QemuTextConsole *s, int keysym)
>>>        int c;
>>>        uint32_t num_free;
>>>
>>> +    if (!s) {
>>> +        if (!QEMU_IS_TEXT_CONSOLE(active_console)) {
>>> +            return;
>>> +        }
>>> +        s = QEMU_TEXT_CONSOLE(active_console);
>>> +    }
>>> +
>>>        switch(keysym) {
>>>        case QEMU_KEY_CTRL_UP:
>>>            console_scroll(s, -1);
>>> @@ -1231,13 +1238,6 @@ void kbd_put_string_console(QemuTextConsole *s, const char *str, int len)
>>>        }
>>>    }
>>>
>>> -void kbd_put_keysym(int keysym)
>>> -{
>>> -    if (QEMU_IS_TEXT_CONSOLE(active_console)) {
>>> -        kbd_put_keysym_console(QEMU_TEXT_CONSOLE(active_console), keysym);
>>> -    }
>>> -}
>>> -
>>>    static void text_console_invalidate(void *opaque)
>>>    {
>>>        QemuTextConsole *s = QEMU_TEXT_CONSOLE(opaque);
>>> diff --git a/ui/curses.c b/ui/curses.c
>>> index de962faa7c..4ddbbae7cd 100644
>>> --- a/ui/curses.c
>>> +++ b/ui/curses.c
>>> @@ -400,7 +400,7 @@ static void curses_refresh(DisplayChangeListener *dcl)
>>>                if (keysym == -1)
>>>                    keysym = chr;
>>>
>>> -            kbd_put_keysym(keysym);
>>> +            kbd_put_keysym_console(NULL, keysym);
>>>            }
>>>        }
>>>    }
>>> diff --git a/ui/vnc.c b/ui/vnc.c
>>> index 92964dcc0c..1fa4456744 100644
>>> --- a/ui/vnc.c
>>> +++ b/ui/vnc.c
>>> @@ -1945,88 +1945,88 @@ static void do_key_event(VncState *vs, int down, int keycode, int sym)
>>>                case 0xb8:                          /* Right ALT */
>>>                    break;
>>>                case 0xc8:
>>> -                kbd_put_keysym(QEMU_KEY_UP);
>>> +                kbd_put_keysym_console(NULL, QEMU_KEY_UP);
>>
>> vs->vd->dcl.con should be used instead. There may be VNC connections for
>> consoles other than the "active console" and in such a case
>> vs->vd->dcl.con != NULL. Unfortunately it seems that ui/vnc is very
>> buggy in such a situation.
>>
> 
> That's not how the console & VNC server code works. VNC server will
> send the key event to the hw anyway. But if the active_console is
> text/vc, then it also sends (some) of the key events to it. There is
> no "per-client" console either, the console switch is global
> (console_select()).

Actually vnc is capable of binding a VNC server instance to a particular 
console instead of active console controlled by global console_select() 
switch since commit 1d0d59fe29 ("vnc: allow binding servers to qemu 
consoles").

> 
> Anyway, this patch is quite systematic. Further complicated changes
> should be done later. please ack/r-b

I see.

Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>

> 
> thanks
> 
> 
>
diff mbox series

Patch

diff --git a/include/ui/console.h b/include/ui/console.h
index 1ccd432b4d..9c362f0e87 100644
--- a/include/ui/console.h
+++ b/include/ui/console.h
@@ -115,7 +115,6 @@  bool qemu_mouse_set(int index, Error **errp);
 void kbd_put_keysym_console(QemuTextConsole *s, int keysym);
 bool kbd_put_qcode_console(QemuTextConsole *s, int qcode, bool ctrl);
 void kbd_put_string_console(QemuTextConsole *s, const char *str, int len);
-void kbd_put_keysym(int keysym);
 
 /* Touch devices */
 typedef struct touch_slot {
diff --git a/ui/console.c b/ui/console.c
index a98adbb1b2..6068e02928 100644
--- a/ui/console.c
+++ b/ui/console.c
@@ -1141,6 +1141,13 @@  void kbd_put_keysym_console(QemuTextConsole *s, int keysym)
     int c;
     uint32_t num_free;
 
+    if (!s) {
+        if (!QEMU_IS_TEXT_CONSOLE(active_console)) {
+            return;
+        }
+        s = QEMU_TEXT_CONSOLE(active_console);
+    }
+
     switch(keysym) {
     case QEMU_KEY_CTRL_UP:
         console_scroll(s, -1);
@@ -1231,13 +1238,6 @@  void kbd_put_string_console(QemuTextConsole *s, const char *str, int len)
     }
 }
 
-void kbd_put_keysym(int keysym)
-{
-    if (QEMU_IS_TEXT_CONSOLE(active_console)) {
-        kbd_put_keysym_console(QEMU_TEXT_CONSOLE(active_console), keysym);
-    }
-}
-
 static void text_console_invalidate(void *opaque)
 {
     QemuTextConsole *s = QEMU_TEXT_CONSOLE(opaque);
diff --git a/ui/curses.c b/ui/curses.c
index de962faa7c..4ddbbae7cd 100644
--- a/ui/curses.c
+++ b/ui/curses.c
@@ -400,7 +400,7 @@  static void curses_refresh(DisplayChangeListener *dcl)
             if (keysym == -1)
                 keysym = chr;
 
-            kbd_put_keysym(keysym);
+            kbd_put_keysym_console(NULL, keysym);
         }
     }
 }
diff --git a/ui/vnc.c b/ui/vnc.c
index 92964dcc0c..1fa4456744 100644
--- a/ui/vnc.c
+++ b/ui/vnc.c
@@ -1945,88 +1945,88 @@  static void do_key_event(VncState *vs, int down, int keycode, int sym)
             case 0xb8:                          /* Right ALT */
                 break;
             case 0xc8:
-                kbd_put_keysym(QEMU_KEY_UP);
+                kbd_put_keysym_console(NULL, QEMU_KEY_UP);
                 break;
             case 0xd0:
-                kbd_put_keysym(QEMU_KEY_DOWN);
+                kbd_put_keysym_console(NULL, QEMU_KEY_DOWN);
                 break;
             case 0xcb:
-                kbd_put_keysym(QEMU_KEY_LEFT);
+                kbd_put_keysym_console(NULL, QEMU_KEY_LEFT);
                 break;
             case 0xcd:
-                kbd_put_keysym(QEMU_KEY_RIGHT);
+                kbd_put_keysym_console(NULL, QEMU_KEY_RIGHT);
                 break;
             case 0xd3:
-                kbd_put_keysym(QEMU_KEY_DELETE);
+                kbd_put_keysym_console(NULL, QEMU_KEY_DELETE);
                 break;
             case 0xc7:
-                kbd_put_keysym(QEMU_KEY_HOME);
+                kbd_put_keysym_console(NULL, QEMU_KEY_HOME);
                 break;
             case 0xcf:
-                kbd_put_keysym(QEMU_KEY_END);
+                kbd_put_keysym_console(NULL, QEMU_KEY_END);
                 break;
             case 0xc9:
-                kbd_put_keysym(QEMU_KEY_PAGEUP);
+                kbd_put_keysym_console(NULL, QEMU_KEY_PAGEUP);
                 break;
             case 0xd1:
-                kbd_put_keysym(QEMU_KEY_PAGEDOWN);
+                kbd_put_keysym_console(NULL, QEMU_KEY_PAGEDOWN);
                 break;
 
             case 0x47:
-                kbd_put_keysym(numlock ? '7' : QEMU_KEY_HOME);
+                kbd_put_keysym_console(NULL, numlock ? '7' : QEMU_KEY_HOME);
                 break;
             case 0x48:
-                kbd_put_keysym(numlock ? '8' : QEMU_KEY_UP);
+                kbd_put_keysym_console(NULL, numlock ? '8' : QEMU_KEY_UP);
                 break;
             case 0x49:
-                kbd_put_keysym(numlock ? '9' : QEMU_KEY_PAGEUP);
+                kbd_put_keysym_console(NULL, numlock ? '9' : QEMU_KEY_PAGEUP);
                 break;
             case 0x4b:
-                kbd_put_keysym(numlock ? '4' : QEMU_KEY_LEFT);
+                kbd_put_keysym_console(NULL, numlock ? '4' : QEMU_KEY_LEFT);
                 break;
             case 0x4c:
-                kbd_put_keysym('5');
+                kbd_put_keysym_console(NULL, '5');
                 break;
             case 0x4d:
-                kbd_put_keysym(numlock ? '6' : QEMU_KEY_RIGHT);
+                kbd_put_keysym_console(NULL, numlock ? '6' : QEMU_KEY_RIGHT);
                 break;
             case 0x4f:
-                kbd_put_keysym(numlock ? '1' : QEMU_KEY_END);
+                kbd_put_keysym_console(NULL, numlock ? '1' : QEMU_KEY_END);
                 break;
             case 0x50:
-                kbd_put_keysym(numlock ? '2' : QEMU_KEY_DOWN);
+                kbd_put_keysym_console(NULL, numlock ? '2' : QEMU_KEY_DOWN);
                 break;
             case 0x51:
-                kbd_put_keysym(numlock ? '3' : QEMU_KEY_PAGEDOWN);
+                kbd_put_keysym_console(NULL, numlock ? '3' : QEMU_KEY_PAGEDOWN);
                 break;
             case 0x52:
-                kbd_put_keysym('0');
+                kbd_put_keysym_console(NULL, '0');
                 break;
             case 0x53:
-                kbd_put_keysym(numlock ? '.' : QEMU_KEY_DELETE);
+                kbd_put_keysym_console(NULL, numlock ? '.' : QEMU_KEY_DELETE);
                 break;
 
             case 0xb5:
-                kbd_put_keysym('/');
+                kbd_put_keysym_console(NULL, '/');
                 break;
             case 0x37:
-                kbd_put_keysym('*');
+                kbd_put_keysym_console(NULL, '*');
                 break;
             case 0x4a:
-                kbd_put_keysym('-');
+                kbd_put_keysym_console(NULL, '-');
                 break;
             case 0x4e:
-                kbd_put_keysym('+');
+                kbd_put_keysym_console(NULL, '+');
                 break;
             case 0x9c:
-                kbd_put_keysym('\n');
+                kbd_put_keysym_console(NULL, '\n');
                 break;
 
             default:
                 if (control) {
-                    kbd_put_keysym(sym & 0x1f);
+                    kbd_put_keysym_console(NULL, sym & 0x1f);
                 } else {
-                    kbd_put_keysym(sym);
+                    kbd_put_keysym_console(NULL, sym);
                 }
                 break;
             }
diff --git a/ui/cocoa.m b/ui/cocoa.m
index 0c2153d17c..9eb4da7713 100644
--- a/ui/cocoa.m
+++ b/ui/cocoa.m
@@ -784,7 +784,7 @@  - (void) handleMonitorInput:(NSEvent *)event
     }
 
     if (keysym) {
-        kbd_put_keysym(keysym);
+        kbd_put_keysym_console(NULL, keysym);
     }
 }