};
enum cursor_movement {
- CURSOR_UP,
- CURSOR_DOWN,
- CURSOR_LEFT,
- CURSOR_RIGHT,
CURSOR_SAVE,
CURSOR_LOAD
};
int bot; /* bottom scroll limit */
int mode; /* terminal mode flags */
int esc; /* escape state flags */
+ bool numlock; /* lock numbers in keyboard */
bool *tabs;
} Term;
/* function definitions used in config.h */
static void xzoom(const Arg *);
static void selpaste(const Arg *);
+static void numlock(const Arg *);
/* Config.h for applying patches and the configuration. */
#include "config.h"
}
void
-getbuttoninfo(XEvent *e, int *b, int *x, int *y) {
- if(b)
- *b = e->xbutton.button;
-
- *x = x2col(e->xbutton.x);
- *y = y2row(e->xbutton.y);
+getbuttoninfo(XEvent *e) {
+ sel.ex = x2col(e->xbutton.x);
+ sel.ey = y2row(e->xbutton.y);
sel.b.x = sel.by < sel.ey ? sel.bx : sel.ex;
sel.b.y = MIN(sel.by, sel.ey);
selpaste(NULL);
} else if(e->xbutton.button == Button1) {
sel.mode = 0;
- getbuttoninfo(e, NULL, &sel.ex, &sel.ey);
+ getbuttoninfo(e);
term.dirty[sel.ey] = 1;
if(sel.bx == sel.ex && sel.by == sel.ey) {
sel.bx = -1;
if(sel.mode) {
oldey = sel.ey;
oldex = sel.ex;
- getbuttoninfo(e, NULL, &sel.ex, &sel.ey);
+ getbuttoninfo(e);
if(oldey != sel.ey || oldex != sel.ex) {
starty = MIN(oldey, sel.ey);
term.alt [row] = xmalloc(term.col * sizeof(Glyph));
term.dirty[row] = 0;
}
+ term.numlock = 1;
memset(term.tabs, 0, term.col * sizeof(*term.tabs));
/* setup screen */
treset();
}
}
/*
- * All characters which forms part of a sequence are not
+ * All characters which form part of a sequence are not
* printed
*/
return;
void
xresize(int col, int row) {
- xw.tw = MAX(1, 2*borderpx + col * xw.cw);
- xw.th = MAX(1, 2*borderpx + row * xw.ch);
+ xw.tw = MAX(1, col * xw.cw);
+ xw.th = MAX(1, row * xw.ch);
XftDrawChange(xw.draw, xw.buf);
}
sizeh->width = xw.w;
sizeh->height_inc = xw.ch;
sizeh->width_inc = xw.cw;
- sizeh->base_height = 2*borderpx;
- sizeh->base_width = 2*borderpx;
+ sizeh->base_height = 2 * borderpx;
+ sizeh->base_width = 2 * borderpx;
} else {
sizeh->flags = PMaxSize | PMinSize;
sizeh->min_width = sizeh->max_width = xw.fw;
xw.w = xw.fw;
} else {
/* window - default size */
- xw.h = 2*borderpx + term.row * xw.ch;
- xw.w = 2*borderpx + term.col * xw.cw;
+ xw.h = 2 * borderpx + term.row * xw.ch;
+ xw.w = 2 * borderpx + term.col * xw.cw;
xw.fx = 0;
xw.fy = 0;
}
return true;
}
+void
+numlock(const Arg *dummy)
+{
+ term.numlock ^= 1;
+}
+
char*
kmap(KeySym k, uint state) {
uint mask;
if(!match(mask, state))
continue;
- if((kp->appkey < 0 && IS_SET(MODE_APPKEYPAD)) ||
- (kp->appkey > 0 && !IS_SET(MODE_APPKEYPAD))) {
+ if(kp->appkey > 0) {
+ if(!IS_SET(MODE_APPKEYPAD))
+ continue;
+ if(term.numlock && kp->appkey == 2)
+ continue;
+ } else if (kp->appkey < 0 && IS_SET(MODE_APPKEYPAD)) {
continue;
}
if(height != 0)
xw.h = height;
- col = (xw.w - 2*borderpx) / xw.cw;
- row = (xw.h - 2*borderpx) / xw.ch;
+ col = (xw.w - 2 * borderpx) / xw.cw;
+ row = (xw.h - 2 * borderpx) / xw.ch;
tresize(col, row);
xresize(col, row);