input: define our own modifiers
Just a direct mapping to X modifiers for now (= Shift, Control, Lock, Mod1-5). This gives us more flexibility to adapt it to our needs in the future. Also we don't have to include libxkbcommon headers just for the modifier definitions. Signed-off-by: Ran Benita <ran234@gmail.com> Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
This commit is contained in:
parent
7c9fb7bf29
commit
8d28790ba4
13
src/input.h
13
src/input.h
@ -54,12 +54,23 @@
|
||||
|
||||
struct kmscon_input;
|
||||
|
||||
enum kmscon_modifier {
|
||||
KMSCON_SHIFT_MASK = (1 << 0),
|
||||
KMSCON_LOCK_MASK = (1 << 1),
|
||||
KMSCON_CONTROL_MASK = (1 << 2),
|
||||
KMSCON_MOD1_MASK = (1 << 3),
|
||||
KMSCON_MOD2_MASK = (1 << 4),
|
||||
KMSCON_MOD3_MASK = (1 << 5),
|
||||
KMSCON_MOD4_MASK = (1 << 6),
|
||||
KMSCON_MOD5_MASK = (1 << 7),
|
||||
};
|
||||
|
||||
#define KMSCON_INPUT_INVALID 0xffffffff
|
||||
|
||||
struct kmscon_input_event {
|
||||
uint16_t keycode; /* linux keycode - KEY_* - linux/input.h */
|
||||
uint32_t keysym; /* X keysym - XK_* - X11/keysym.h */
|
||||
uint8_t modifiers; /* xkbcommon modifiers - XKB_COMMON_*_MASK */
|
||||
unsigned int mods; /* active modifiers - kmscon_modifier mask */
|
||||
uint32_t unicode; /* UCS-4 unicode value or KMSCON_INPUT_INVALID */
|
||||
};
|
||||
|
||||
|
@ -701,7 +701,8 @@ bool kmscon_xkb_process_evdev_key(struct xkb_desc *desc,
|
||||
if (key_state != KMSCON_KEY_RELEASED) {
|
||||
out->keycode = code;
|
||||
out->keysym = sym;
|
||||
out->modifiers = state->mods;
|
||||
/* 1-to-1 match - this might change. */
|
||||
out->mods = state->mods;
|
||||
out->unicode = KeysymToUcs4(sym);
|
||||
|
||||
if (out->unicode == 0)
|
||||
|
@ -62,23 +62,23 @@ static void sig_quit(struct kmscon_signal *sig, int signum, void *data)
|
||||
}
|
||||
}
|
||||
|
||||
static void print_modifiers(uint8_t mods)
|
||||
static void print_modifiers(unsigned int mods)
|
||||
{
|
||||
if (mods & XKB_COMMON_SHIFT_MASK)
|
||||
if (mods & KMSCON_SHIFT_MASK)
|
||||
printf("SHIFT ");
|
||||
if (mods & XKB_COMMON_LOCK_MASK)
|
||||
if (mods & KMSCON_LOCK_MASK)
|
||||
printf("LOCK ");
|
||||
if (mods & XKB_COMMON_CONTROL_MASK)
|
||||
if (mods & KMSCON_CONTROL_MASK)
|
||||
printf("CONTROL ");
|
||||
if (mods & XKB_COMMON_MOD1_MASK)
|
||||
if (mods & KMSCON_MOD1_MASK)
|
||||
printf("MOD1 ");
|
||||
if (mods & XKB_COMMON_MOD2_MASK)
|
||||
if (mods & KMSCON_MOD2_MASK)
|
||||
printf("MOD2 ");
|
||||
if (mods & XKB_COMMON_MOD3_MASK)
|
||||
if (mods & KMSCON_MOD3_MASK)
|
||||
printf("MOD3 ");
|
||||
if (mods & XKB_COMMON_MOD4_MASK)
|
||||
if (mods & KMSCON_MOD4_MASK)
|
||||
printf("MOD4 ");
|
||||
if (mods & XKB_COMMON_MOD5_MASK)
|
||||
if (mods & KMSCON_MOD5_MASK)
|
||||
printf("MOD5 ");
|
||||
printf("\n");
|
||||
}
|
||||
@ -108,7 +108,7 @@ static void input_arrived(struct kmscon_input *input,
|
||||
|
||||
printf("utf8 %s ", utf8);
|
||||
}
|
||||
print_modifiers(ev->modifiers);
|
||||
print_modifiers(ev->mods);
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
|
Loading…
x
Reference in New Issue
Block a user