possibly fix numpad

This commit is contained in:
speedie 2023-01-22 18:32:10 +01:00
parent 692638248a
commit dc0d6ee211

View file

@ -1100,31 +1100,50 @@ move(const Arg *arg)
}
}
void
updatenumlockmask(void)
{
unsigned int i, j;
XModifierKeymap *modmap;
numlockmask = 0;
modmap = XGetModifierMapping(dpy);
for (i = 0; i < 8; i++)
for (j = 0; j < modmap->max_keypermod; j++)
if (modmap->modifiermap[i * modmap->max_keypermod + j]
== XKeysymToKeycode(dpy, XK_Num_Lock))
numlockmask = (1 << i);
XFreeModifiermap(modmap);
}
void
keypress(XEvent *e)
{
unsigned int i;
KeySym keysym;
XKeyEvent *ev;
char buf[64];
KeySym ksym = NoSymbol;
Status status;
updatenumlockmask();
{
unsigned int i;
KeySym keysym;
XKeyEvent *ev;
char buf[64];
KeySym ksym = NoSymbol;
Status status;
int len = 0;
ev = &e->xkey;
len = XmbLookupString(xic, ev, buf, sizeof buf, &ksym, &status);
int len = 0;
ev = &e->xkey;
len = XmbLookupString(xic, ev, buf, sizeof buf, &ksym, &status);
keysym = XKeycodeToKeysym(dpy, (KeyCode)ev->keycode, 0);
keysym = XKeycodeToKeysym(dpy, (KeyCode)ev->keycode, 0);
for (i = 0; i < LENGTH(keys); i++) {
if (keysym == keys[i].keysym && CLEANMASK(keys[i].mod) == CLEANMASK(ev->state) && keys[i].func)
keys[i].func(&(keys[i].arg));
}
for (i = 0; i < LENGTH(keys); i++) {
if (keysym == keys[i].keysym && CLEANMASK(keys[i].mod) == CLEANMASK(ev->state) && keys[i].func)
keys[i].func(&(keys[i].arg));
}
if (!iscntrl(*buf) && type) {
insert(buf, len);
if (!iscntrl(*buf) && type) {
insert(buf, len);
drawmenu();
drawmenu();
}
}
}