mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-09 18:44:58 -06:00
keymap: make struct kbd_layout_t private to ui/keymaps.c
Also use kbd_layout_t pointers instead of void pointers. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> Message-id: 20180222070513.8740-2-kraxel@redhat.com
This commit is contained in:
parent
4112621420
commit
fe5fca9a03
2 changed files with 31 additions and 30 deletions
32
ui/keymaps.c
32
ui/keymaps.c
|
@ -28,6 +28,26 @@
|
||||||
#include "trace.h"
|
#include "trace.h"
|
||||||
#include "qemu/error-report.h"
|
#include "qemu/error-report.h"
|
||||||
|
|
||||||
|
#define MAX_NORMAL_KEYCODE 512
|
||||||
|
#define MAX_EXTRA_COUNT 256
|
||||||
|
|
||||||
|
struct key_range {
|
||||||
|
int start;
|
||||||
|
int end;
|
||||||
|
struct key_range *next;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct kbd_layout_t {
|
||||||
|
uint16_t keysym2keycode[MAX_NORMAL_KEYCODE];
|
||||||
|
struct {
|
||||||
|
int keysym;
|
||||||
|
uint16_t keycode;
|
||||||
|
} keysym2keycode_extra[MAX_EXTRA_COUNT];
|
||||||
|
int extra_count;
|
||||||
|
struct key_range *keypad_range;
|
||||||
|
struct key_range *numlock_range;
|
||||||
|
};
|
||||||
|
|
||||||
static int get_keysym(const name2keysym_t *table,
|
static int get_keysym(const name2keysym_t *table,
|
||||||
const char *name)
|
const char *name)
|
||||||
{
|
{
|
||||||
|
@ -186,15 +206,15 @@ static kbd_layout_t *parse_keyboard_layout(const name2keysym_t *table,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void *init_keyboard_layout(const name2keysym_t *table, const char *language)
|
kbd_layout_t *init_keyboard_layout(const name2keysym_t *table,
|
||||||
|
const char *language)
|
||||||
{
|
{
|
||||||
return parse_keyboard_layout(table, language, NULL);
|
return parse_keyboard_layout(table, language, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int keysym2scancode(void *kbd_layout, int keysym)
|
int keysym2scancode(kbd_layout_t *k, int keysym)
|
||||||
{
|
{
|
||||||
kbd_layout_t *k = kbd_layout;
|
|
||||||
if (keysym < MAX_NORMAL_KEYCODE) {
|
if (keysym < MAX_NORMAL_KEYCODE) {
|
||||||
if (k->keysym2keycode[keysym] == 0) {
|
if (k->keysym2keycode[keysym] == 0) {
|
||||||
trace_keymap_unmapped(keysym);
|
trace_keymap_unmapped(keysym);
|
||||||
|
@ -217,9 +237,8 @@ int keysym2scancode(void *kbd_layout, int keysym)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int keycode_is_keypad(void *kbd_layout, int keycode)
|
int keycode_is_keypad(kbd_layout_t *k, int keycode)
|
||||||
{
|
{
|
||||||
kbd_layout_t *k = kbd_layout;
|
|
||||||
struct key_range *kr;
|
struct key_range *kr;
|
||||||
|
|
||||||
for (kr = k->keypad_range; kr; kr = kr->next) {
|
for (kr = k->keypad_range; kr; kr = kr->next) {
|
||||||
|
@ -230,9 +249,8 @@ int keycode_is_keypad(void *kbd_layout, int keycode)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int keysym_is_numlock(void *kbd_layout, int keysym)
|
int keysym_is_numlock(kbd_layout_t *k, int keysym)
|
||||||
{
|
{
|
||||||
kbd_layout_t *k = kbd_layout;
|
|
||||||
struct key_range *kr;
|
struct key_range *kr;
|
||||||
|
|
||||||
for (kr = k->numlock_range; kr; kr = kr->next) {
|
for (kr = k->numlock_range; kr; kr = kr->next) {
|
||||||
|
|
29
ui/keymaps.h
29
ui/keymaps.h
|
@ -32,25 +32,6 @@ typedef struct {
|
||||||
int keysym;
|
int keysym;
|
||||||
} name2keysym_t;
|
} name2keysym_t;
|
||||||
|
|
||||||
struct key_range {
|
|
||||||
int start;
|
|
||||||
int end;
|
|
||||||
struct key_range *next;
|
|
||||||
};
|
|
||||||
|
|
||||||
#define MAX_NORMAL_KEYCODE 512
|
|
||||||
#define MAX_EXTRA_COUNT 256
|
|
||||||
typedef struct {
|
|
||||||
uint16_t keysym2keycode[MAX_NORMAL_KEYCODE];
|
|
||||||
struct {
|
|
||||||
int keysym;
|
|
||||||
uint16_t keycode;
|
|
||||||
} keysym2keycode_extra[MAX_EXTRA_COUNT];
|
|
||||||
int extra_count;
|
|
||||||
struct key_range *keypad_range;
|
|
||||||
struct key_range *numlock_range;
|
|
||||||
} kbd_layout_t;
|
|
||||||
|
|
||||||
/* scancode without modifiers */
|
/* scancode without modifiers */
|
||||||
#define SCANCODE_KEYMASK 0xff
|
#define SCANCODE_KEYMASK 0xff
|
||||||
/* scancode without grey or up bit */
|
/* scancode without grey or up bit */
|
||||||
|
@ -69,10 +50,12 @@ typedef struct {
|
||||||
#define SCANCODE_ALT 0x400
|
#define SCANCODE_ALT 0x400
|
||||||
#define SCANCODE_ALTGR 0x800
|
#define SCANCODE_ALTGR 0x800
|
||||||
|
|
||||||
|
typedef struct kbd_layout_t kbd_layout_t;
|
||||||
|
|
||||||
void *init_keyboard_layout(const name2keysym_t *table, const char *language);
|
kbd_layout_t *init_keyboard_layout(const name2keysym_t *table,
|
||||||
int keysym2scancode(void *kbd_layout, int keysym);
|
const char *language);
|
||||||
int keycode_is_keypad(void *kbd_layout, int keycode);
|
int keysym2scancode(kbd_layout_t *k, int keysym);
|
||||||
int keysym_is_numlock(void *kbd_layout, int keysym);
|
int keycode_is_keypad(kbd_layout_t *k, int keycode);
|
||||||
|
int keysym_is_numlock(kbd_layout_t *k, int keysym);
|
||||||
|
|
||||||
#endif /* QEMU_KEYMAPS_H */
|
#endif /* QEMU_KEYMAPS_H */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue