Merge branch 'master' of https://git.suckless.org/st
commit
a35f266d5a
113
x.c
113
x.c
|
@ -1822,60 +1822,6 @@ char *kmap(KeySym k, uint state) {
|
|||
return NULL;
|
||||
}
|
||||
|
||||
void kpress(XEvent *ev) {
|
||||
XKeyEvent *e = &ev->xkey;
|
||||
KeySym ksym;
|
||||
char buf[64], *customkey;
|
||||
int len;
|
||||
Rune c;
|
||||
Status status;
|
||||
Shortcut *bp;
|
||||
|
||||
if (xw.pointerisvisible) {
|
||||
XDefineCursor(xw.dpy, xw.win, xw.bpointer);
|
||||
xsetpointermotion(1);
|
||||
xw.pointerisvisible = 0;
|
||||
}
|
||||
|
||||
if (IS_SET(MODE_KBDLOCK))
|
||||
return;
|
||||
|
||||
if (xw.ime.xic)
|
||||
len = XmbLookupString(xw.ime.xic, e, buf, sizeof buf, &ksym, &status);
|
||||
else
|
||||
len = XLookupString(e, buf, sizeof buf, &ksym, NULL);
|
||||
/* 1. shortcuts */
|
||||
for (bp = shortcuts; bp < shortcuts + LEN(shortcuts); bp++) {
|
||||
if (ksym == bp->keysym && match(bp->mod, e->state)) {
|
||||
bp->func(&(bp->arg));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/* 2. custom keys from config.h */
|
||||
if ((customkey = kmap(ksym, e->state))) {
|
||||
ttywrite(customkey, strlen(customkey), 1);
|
||||
return;
|
||||
}
|
||||
|
||||
/* 3. composed string from input method */
|
||||
if (len == 0)
|
||||
return;
|
||||
if (len == 1 && e->state & Mod1Mask) {
|
||||
if (IS_SET(MODE_8BIT)) {
|
||||
if (*buf < 0177) {
|
||||
c = *buf | 0x80;
|
||||
len = utf8encode(c, buf);
|
||||
}
|
||||
} else {
|
||||
buf[1] = buf[0];
|
||||
buf[0] = '\033';
|
||||
len = 2;
|
||||
}
|
||||
}
|
||||
ttywrite(buf, len, 1);
|
||||
}
|
||||
|
||||
void cmessage(XEvent *e) {
|
||||
/*
|
||||
* See xembed specs
|
||||
|
@ -1894,6 +1840,65 @@ void cmessage(XEvent *e) {
|
|||
}
|
||||
}
|
||||
|
||||
void
|
||||
kpress(XEvent *ev)
|
||||
{
|
||||
XKeyEvent *e = &ev->xkey;
|
||||
KeySym ksym = NoSymbol;
|
||||
char buf[64], *customkey;
|
||||
int len;
|
||||
Rune c;
|
||||
Status status;
|
||||
Shortcut *bp;
|
||||
|
||||
if (xw.pointerisvisible) {
|
||||
XDefineCursor(xw.dpy, xw.win, xw.bpointer);
|
||||
xsetpointermotion(1);
|
||||
xw.pointerisvisible = 0;
|
||||
}
|
||||
|
||||
if (IS_SET(MODE_KBDLOCK))
|
||||
return;
|
||||
|
||||
if (xw.ime.xic) {
|
||||
len = XmbLookupString(xw.ime.xic, e, buf, sizeof buf, &ksym, &status);
|
||||
if (status == XBufferOverflow)
|
||||
return;
|
||||
} else {
|
||||
len = XLookupString(e, buf, sizeof buf, &ksym, NULL);
|
||||
}
|
||||
/* 1. shortcuts */
|
||||
for (bp = shortcuts; bp < shortcuts + LEN(shortcuts); bp++) {
|
||||
if (ksym == bp->keysym && match(bp->mod, e->state)) {
|
||||
bp->func(&(bp->arg));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/* 2. custom keys from config.h */
|
||||
if ((customkey = kmap(ksym, e->state))) {
|
||||
ttywrite(customkey, strlen(customkey), 1);
|
||||
return;
|
||||
}
|
||||
|
||||
/* 3. composed string from input method */
|
||||
if (len == 0)
|
||||
return;
|
||||
if (len == 1 && e->state & Mod1Mask) {
|
||||
if (IS_SET(MODE_8BIT)) {
|
||||
if (*buf < 0177) {
|
||||
c = *buf | 0x80;
|
||||
len = utf8encode(c, buf);
|
||||
}
|
||||
} else {
|
||||
buf[1] = buf[0];
|
||||
buf[0] = '\033';
|
||||
len = 2;
|
||||
}
|
||||
}
|
||||
ttywrite(buf, len, 1);
|
||||
}
|
||||
|
||||
void resize(XEvent *e) {
|
||||
if (e->xconfigure.width == win.w && e->xconfigure.height == win.h)
|
||||
return;
|
||||
|
|
Loading…
Reference in New Issue