Introduction
Introduction Statistics Contact Development Disclaimer Help
some code-style consistency changes + small tweaks - svkbd - simple virtual key…
git clone git://git.suckless.org/svkbd
Log
Files
Refs
README
LICENSE
---
commit 73f0edf7091bbfefb903c8b40c77dcfdaea06d7a
parent 4983666e332c93ff2e6add9f9c316423342a2388
Author: Hiltjo Posthuma <[email protected]>
Date: Tue, 4 Aug 2020 23:28:17 +0200
some code-style consistency changes + small tweaks
Diffstat:
M svkbd.c | 417 ++++++++++++++++-------------…
M util.c | 3 ++-
2 files changed, 224 insertions(+), 196 deletions(-)
---
diff --git a/svkbd.c b/svkbd.c
@@ -1,12 +1,16 @@
-/* See LICENSE file for copyright and license details.
- *
- * To understand svkbd, start reading main().
- */
+/* See LICENSE file for copyright and license details. */
+#include <sys/select.h>
+#include <sys/time.h>
+
#include <locale.h>
+#include <signal.h>
#include <stdarg.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
+#include <time.h>
+#include <unistd.h>
+
#include <X11/keysym.h>
#include <X11/keysymdef.h>
#include <X11/XF86keysym.h>
@@ -19,20 +23,14 @@
#ifdef XINERAMA
#include <X11/extensions/Xinerama.h>
#endif
-#include <signal.h>
-#include <time.h>
-#include <unistd.h>
-#include <sys/select.h>
-#include <sys/time.h>
#include "drw.h"
#include "util.h"
-
/* macros */
-#define LENGTH(x) (sizeof x / sizeof x[0])
-#define TEXTW(X) (drw_fontset_getwidth(drw, (X)))
-#define STRINGTOKEYSYM(X) (XStringToKeySym(X))
+#define LENGTH(x) (sizeof x / sizeof x[0])
+#define TEXTW(X) (drw_fontset_getwidth(drw, (X)))
+#define STRINGTOKEYSYM(X) (XStringToKeySym(X))
/* enums */
enum { SchemeNorm, SchemePress, SchemeHighlight, SchemeLast };
@@ -57,14 +55,14 @@ typedef struct {
} Buttonmod;
/* function declarations */
-static void printdbg(const char * fmt, ...);
+static void printdbg(const char *fmt, ...);
static void motionnotify(XEvent *e);
static void buttonpress(XEvent *e);
static void buttonrelease(XEvent *e);
static void cleanup(void);
static void configurenotify(XEvent *e);
static void countrows();
-static int countkeys(Key *k);
+static int countkeys(Key *layer);
static void drawkeyboard(void);
static void drawkey(Key *k);
static void expose(XEvent *e);
@@ -135,13 +133,13 @@ motionnotify(XEvent *e)
XPointerMovedEvent *ev = &e->xmotion;
int i;
- for(i = 0; i < numkeys; i++) {
- if(keys[i].keysym && ev->x > keys[i].x
+ for (i = 0; i < numkeys; i++) {
+ if (keys[i].keysym && ev->x > keys[i].x
&& ev->x < keys[i].x + keys[i].w
&& ev->y > keys[i].y
&& ev->y < keys[i].y + keys[i].h) {
- if(keys[i].highlighted != True) {
- if(ispressing) {
+ if (keys[i].highlighted != True) {
+ if (ispressing) {
keys[i].pressed = True;
} else {
keys[i].highlighted = True;
@@ -151,12 +149,12 @@ motionnotify(XEvent *e)
continue;
}
- if(!IsModifierKey(keys[i].keysym) && keys[i].pressed == True) {
+ if (!IsModifierKey(keys[i].keysym) && keys[i].pressed == True)…
unpress(&keys[i], 0);
drawkey(&keys[i]);
}
- if(keys[i].highlighted == True) {
+ if (keys[i].highlighted == True) {
keys[i].highlighted = False;
drawkey(&keys[i]);
}
@@ -164,50 +162,53 @@ motionnotify(XEvent *e)
}
void
-buttonpress(XEvent *e) {
- int i;
+buttonpress(XEvent *e)
+{
XButtonPressedEvent *ev = &e->xbutton;
Key *k;
KeySym mod = 0;
+ int i;
ispressing = True;
- for(i = 0; i < LENGTH(buttonmods); i++) {
- if(ev->button == buttonmods[i].button) {
+ for (i = 0; i < LENGTH(buttonmods); i++) {
+ if (ev->button == buttonmods[i].button) {
mod = buttonmods[i].mod;
break;
}
}
- if((k = findkey(ev->x, ev->y)))
+ if ((k = findkey(ev->x, ev->y)))
press(k, mod);
}
void
-buttonrelease(XEvent *e) {
- int i;
+buttonrelease(XEvent *e)
+{
XButtonPressedEvent *ev = &e->xbutton;
Key *k;
KeySym mod = 0;
+ int i;
ispressing = False;
- for(i = 0; i < LENGTH(buttonmods); i++) {
- if(ev->button == buttonmods[i].button) {
+ for (i = 0; i < LENGTH(buttonmods); i++) {
+ if (ev->button == buttonmods[i].button) {
mod = buttonmods[i].mod;
break;
}
}
- if(ev->x < 0 || ev->y < 0) {
+ if (ev->x < 0 || ev->y < 0) {
unpress(NULL, mod);
} else {
- if((k = findkey(ev->x, ev->y)))
+ if ((k = findkey(ev->x, ev->y)))
unpress(k, mod);
}
}
void
-cleanup(void) {
+cleanup(void)
+{
int i;
for (i = 0; i < SchemeLast; i++)
@@ -222,10 +223,11 @@ cleanup(void) {
}
void
-configurenotify(XEvent *e) {
+configurenotify(XEvent *e)
+{
XConfigureEvent *ev = &e->xconfigure;
- if(ev->window == win && (ev->width != ww || ev->height != wh)) {
+ if (ev->window == win && (ev->width != ww || ev->height != wh)) {
ww = ev->width;
wh = ev->height;
drw_resize(drw, ww, wh);
@@ -234,50 +236,52 @@ configurenotify(XEvent *e) {
}
void
-countrows() {
- int i = 0;
+countrows(void)
+{
+ int i;
- for(i = 0, rows = 1; i < numkeys; i++) {
- if(keys[i].keysym == 0)
+ for (i = 0, rows = 1; i < numkeys; i++) {
+ if (keys[i].keysym == 0)
rows++;
}
}
int
-countkeys(Key * layer) {
- int keys = 0;
- int i;
+countkeys(Key *layer)
+{
+ int i, nkeys = 0;
- for(i = 0; i < KEYS; i++) {
- if (i > 0 && layer[i].keysym == 0 && layer[i-1].keysym == 0) {
- keys--;
+ for (i = 0; i < KEYS; i++) {
+ if (i > 0 && layer[i].keysym == 0 && layer[i - 1].keysym == 0)…
+ nkeys--;
break;
}
- keys++;
+ nkeys++;
}
- return keys;
+ return nkeys;
}
-
void
-drawkeyboard(void) {
+drawkeyboard(void)
+{
int i;
- for(i = 0; i < numkeys; i++) {
- if(keys[i].keysym != 0)
+ for (i = 0; i < numkeys; i++) {
+ if (keys[i].keysym != 0)
drawkey(&keys[i]);
}
}
void
-drawkey(Key *k) {
+drawkey(Key *k)
+{
int x, y, w, h;
const char *l;
- if(k->pressed)
+ if (k->pressed)
drw_setscheme(drw, scheme[SchemePress]);
- else if(k->highlighted)
+ else if (k->highlighted)
drw_setscheme(drw, scheme[SchemeHighlight]);
else
drw_setscheme(drw, scheme[SchemeNorm]);
@@ -290,7 +294,7 @@ drawkey(Key *k) {
} else {
l = "≇";
}
- } else if(k->label) {
+ } else if (k->label) {
l = k->label;
} else {
l = XKeysymToString(k->keysym);
@@ -304,10 +308,11 @@ drawkey(Key *k) {
}
void
-expose(XEvent *e) {
+expose(XEvent *e)
+{
XExposeEvent *ev = &e->xexpose;
- if(ev->count == 0 && (ev->window == win))
+ if (ev->count == 0 && (ev->window == win))
drawkeyboard();
}
@@ -315,8 +320,8 @@ Key *
findkey(int x, int y) {
int i;
- for(i = 0; i < numkeys; i++) {
- if(keys[i].keysym && x > keys[i].x &&
+ for (i = 0; i < numkeys; i++) {
+ if (keys[i].keysym && x > keys[i].x &&
x < keys[i].x + keys[i].w &&
y > keys[i].y && y < keys[i].y + keys[i].h) {
return &keys[i];
@@ -325,15 +330,16 @@ findkey(int x, int y) {
return NULL;
}
-
int
-hasoverlay(KeySym keysym) {
+hasoverlay(KeySym keysym)
+{
int begin, i;
+
begin = 0;
- for(i = 0; i < OVERLAYS; i++) {
- if(overlay[i].keysym == XK_Cancel) {
+ for (i = 0; i < OVERLAYS; i++) {
+ if (overlay[i].keysym == XK_Cancel) {
begin = i+1;
- } else if(overlay[i].keysym == keysym) {
+ } else if (overlay[i].keysym == keysym) {
return begin+1;
}
}
@@ -341,23 +347,28 @@ hasoverlay(KeySym keysym) {
}
void
-leavenotify(XEvent *e) {
+leavenotify(XEvent *e)
+{
if (currentoverlay != -1) {
hideoverlay();
}
unpress(NULL, 0);
}
-void record_press_begin(KeySym ks) {
+void
+record_press_begin(KeySym ks)
+{
/* record the begin of the press, don't simulate the actual keypress y…
gettimeofday(&pressbegin, NULL);
ispressingkeysym = ks;
}
void
-press(Key *k, KeySym mod) {
+press(Key *k, KeySym mod)
+{
int i;
int overlayidx = -1;
+
k->pressed = !k->pressed;
if (debug) printdbg("Begin press: %ld\n", k->keysym);
@@ -365,7 +376,7 @@ press(Key *k, KeySym mod) {
pressbegin.tv_usec = 0;
ispressingkeysym = 0;
- if(!IsModifierKey(k->keysym)) {
+ if (!IsModifierKey(k->keysym)) {
if (enableoverlays && currentoverlay == -1)
overlayidx = hasoverlay(k->keysym);
if (enableoverlays && overlayidx != -1) {
@@ -375,19 +386,19 @@ press(Key *k, KeySym mod) {
}
} else {
if (debug) printdbg("Simulating press: %ld\n", k->keys…
- for(i = 0; i < numkeys; i++) {
- if(keys[i].pressed && IsModifierKey(keys[i].ke…
+ for (i = 0; i < numkeys; i++) {
+ if (keys[i].pressed && IsModifierKey(keys[i].k…
simulate_keypress(keys[i].keysym);
}
}
pressedmod = mod;
- if(pressedmod) {
+ if (pressedmod) {
simulate_keypress(mod);
}
simulate_keypress(k->keysym);
- for(i = 0; i < numkeys; i++) {
- if(keys[i].pressed && IsModifierKey(keys[i].ke…
+ for (i = 0; i < numkeys; i++) {
+ if (keys[i].pressed && IsModifierKey(keys[i].k…
simulate_keyrelease(keys[i].keysym);
}
}
@@ -396,18 +407,18 @@ press(Key *k, KeySym mod) {
drawkey(k);
}
-
-
-
-
-int tmp_remap(KeySym keysym) {
+int
+tmp_remap(KeySym keysym)
+{
XChangeKeyboardMapping(dpy, tmp_keycode, 1, &keysym, 1);
XSync(dpy, False);
+
return tmp_keycode;
}
void
-simulate_keypress(KeySym keysym) {
+simulate_keypress(KeySym keysym)
+{
KeyCode code = XKeysymToKeycode(dpy, keysym);
if (code == 0)
code = tmp_remap(keysym);
@@ -415,25 +426,32 @@ simulate_keypress(KeySym keysym) {
}
void
-simulate_keyrelease(KeySym keysym) {
+simulate_keyrelease(KeySym keysym)
+{
KeyCode code = XKeysymToKeycode(dpy, keysym);
if (code == 0)
code = tmp_remap(keysym);
XTestFakeKeyEvent(dpy, code, False, 0);
}
-
-double get_press_duration() {
+double
+get_press_duration(void)
+{
struct timeval now;
+
gettimeofday(&now, NULL);
- return (double) ((now.tv_sec * 1000000L + now.tv_usec) - (pressbegin.t…
+
+ return (double) ((now.tv_sec * 1000000L + now.tv_usec) -
+ (pressbegin.tv_sec * 1000000L + pressbegin.tv_usec)) /
+ (double) 1000000L;
}
void
-unpress(Key *k, KeySym mod) {
+unpress(Key *k, KeySym mod)
+{
int i;
- if(k != NULL) {
+ if (k != NULL) {
switch(k->keysym) {
case XK_Cancel:
cyclelayer();
@@ -451,19 +469,18 @@ unpress(Key *k, KeySym mod) {
}
}
-
if ((pressbegin.tv_sec || pressbegin.tv_usec) && enableoverlays && k &…
if (currentoverlay == -1) {
if (get_press_duration() < overlay_delay) {
if (debug) printdbg("Delayed simulation of pre…
/* simulate the press event, as we postponed i…
- for(i = 0; i < numkeys; i++) {
- if(keys[i].pressed && IsModifierKey(ke…
+ for (i = 0; i < numkeys; i++) {
+ if (keys[i].pressed && IsModifierKey(k…
simulate_keypress(keys[i].keys…
}
}
pressedmod = mod;
- if(pressedmod) {
+ if (pressedmod) {
simulate_keypress(mod);
}
simulate_keypress(k->keysym);
@@ -484,22 +501,22 @@ unpress(Key *k, KeySym mod) {
}
- for(i = 0; i < numkeys; i++) {
- if(keys[i].pressed && !IsModifierKey(keys[i].keysym)) {
+ for (i = 0; i < numkeys; i++) {
+ if (keys[i].pressed && !IsModifierKey(keys[i].keysym)) {
simulate_keyrelease(keys[i].keysym);
keys[i].pressed = 0;
drawkey(&keys[i]);
break;
}
}
- if(i != numkeys) {
- if(pressedmod) {
+ if (i != numkeys) {
+ if (pressedmod) {
simulate_keyrelease(mod);
}
pressedmod = 0;
- for(i = 0; i < numkeys; i++) {
- if(keys[i].pressed) {
+ for (i = 0; i < numkeys; i++) {
+ if (keys[i].pressed) {
simulate_keyrelease(keys[i].keysym);
keys[i].pressed = 0;
drawkey(&keys[i]);
@@ -517,7 +534,8 @@ unpress(Key *k, KeySym mod) {
}
void
-run(void) {
+run(void)
+{
XEvent ev;
int xfd;
fd_set fds;
@@ -525,23 +543,21 @@ run(void) {
double duration = 0.0;
int i, r;
-
xfd = ConnectionNumber(dpy);
- tv.tv_usec = 0;
tv.tv_sec = 1;
-
+ tv.tv_usec = 0;
XFlush(dpy);
while (running) {
- usleep(100000L);
+ usleep(100000L); /* 100ms */
FD_ZERO(&fds);
FD_SET(xfd, &fds);
r = select(xfd + 1, &fds, NULL, NULL, &tv);
if (r) {
while (XPending(dpy)) {
XNextEvent(dpy, &ev);
- if(handler[ev.type]) {
+ if (handler[ev.type]) {
(handler[ev.type])(&ev); /* call handl…
}
}
@@ -577,7 +593,8 @@ run(void) {
}
void
-setup(void) {
+setup(void)
+{
XSetWindowAttributes wa;
XTextProperty str;
XSizeHints *sizeh = NULL;
@@ -586,43 +603,45 @@ setup(void) {
int i, j, sh, sw;
XWMHints *wmh;
- #if XINERAMA
+#ifdef XINERAMA
XineramaScreenInfo *info = NULL;
- #endif
+#endif
/* init screen */
screen = DefaultScreen(dpy);
root = RootWindow(dpy, screen);
- #if XINERAMA
- if(XineramaIsActive(dpy)) {
+#ifdef XINERAMA
+ if (XineramaIsActive(dpy)) {
info = XineramaQueryScreens(dpy, &i);
sw = info[0].width;
sh = info[0].height;
XFree(info);
} else
- #endif
+#endif
{
sw = DisplayWidth(dpy, screen);
sh = DisplayHeight(dpy, screen);
}
drw = drw_create(dpy, screen, root, sw, sh);
if (!drw_fontset_create(drw, fonts, LENGTH(fonts)))
- die("no fonts could be loaded.");
+ die("no fonts could be loaded");
drw_setscheme(drw, scheme[SchemeNorm]);
- /* find an unused keycode to use as a temporary keycode (derived from …
+ /* find an unused keycode to use as a temporary keycode (derived from …
+ https://stackoverflow.com/questions/44313966/c-xtest-emitting-key-p…
KeySym *keysyms = NULL;
int keysyms_per_keycode = 0;
int keycode_low, keycode_high;
Bool key_is_empty;
int symindex;
+
XDisplayKeycodes(dpy, &keycode_low, &keycode_high);
keysyms = XGetKeyboardMapping(dpy, keycode_low, keycode_high - keycode…
- for(i = keycode_low; i <= keycode_high; i++) {
+ for (i = keycode_low; i <= keycode_high; i++) {
key_is_empty = True;
- for(j = 0; j < keysyms_per_keycode; j++) {
+ for (j = 0; j < keysyms_per_keycode; j++) {
symindex = (i - keycode_low) * keysyms_per_keycode + j;
- if(keysyms[symindex] != 0) {
+ if (keysyms[symindex] != 0) {
key_is_empty = False;
} else {
break;
@@ -639,7 +658,7 @@ setup(void) {
scheme[j] = drw_scm_create(drw, colors[j], 2);
/* init atoms */
- if(isdock) {
+ if (isdock) {
netatom[NetWMWindowType] = XInternAtom(dpy,
"_NET_WM_WINDOW_TYPE", False);
atype = XInternAtom(dpy, "_NET_WM_WINDOW_TYPE_DOCK", False);
@@ -647,21 +666,21 @@ setup(void) {
/* init appearance */
countrows();
- if(!ww)
+ if (!ww)
ww = sw;
- if(!wh)
+ if (!wh)
wh = sh * rows / heightfactor;
- if(!wx)
+ if (!wx)
wx = 0;
- if(wx < 0)
+ if (wx < 0)
wx = sw + wx - ww;
- if(!wy)
+ if (!wy)
wy = sh - wh;
- if(wy < 0)
+ if (wy < 0)
wy = sh + wy - wh;
- for(i = 0; i < numkeys; i++)
+ for (i = 0; i < numkeys; i++)
keys[i].pressed = 0;
wa.override_redirect = !wmborder;
@@ -678,7 +697,7 @@ setup(void) {
wmh = XAllocWMHints();
wmh->input = False;
wmh->flags = InputHint;
- if(!isdock) {
+ if (!isdock) {
sizeh = XAllocSizeHints();
sizeh->flags = PMaxSize | PMinSize;
sizeh->min_width = sizeh->max_width = ww;
@@ -696,10 +715,10 @@ setup(void) {
XFree(ch);
XFree(wmh);
XFree(str.value);
- if(sizeh != NULL)
+ if (sizeh != NULL)
XFree(sizeh);
- if(isdock) {
+ if (isdock) {
XChangeProperty(dpy, win, netatom[NetWMWindowType], XA_ATOM,
32, PropModeReplace,
(unsigned char *)&atype, 1);
@@ -711,31 +730,32 @@ setup(void) {
drawkeyboard();
}
-
void
-updatekeys() {
+updatekeys(void)
+{
int i, j;
int x = 0, y = 0, h, base, r = rows;
h = (wh - 1) / rows;
- for(i = 0; i < numkeys; i++, r--) {
- for(j = i, base = 0; j < numkeys && keys[j].keysym != 0; j++)
+ for (i = 0; i < numkeys; i++, r--) {
+ for (j = i, base = 0; j < numkeys && keys[j].keysym != 0; j++)
base += keys[j].width;
- for(x = 0; i < numkeys && keys[i].keysym != 0; i++) {
+ for (x = 0; i < numkeys && keys[i].keysym != 0; i++) {
keys[i].x = x;
keys[i].y = y;
keys[i].w = keys[i].width * (ww - 1) / base;
keys[i].h = r == 1 ? wh - y - 1 : h;
x += keys[i].w;
}
- if(base != 0)
+ if (base != 0)
keys[i - 1].w = ww - 1 - keys[i - 1].x;
y += h;
}
}
void
-usage(char *argv0) {
+usage(char *argv0)
+{
fprintf(stderr, "usage: %s [-hdvDO] [-g geometry] [-fn font] [-l layer…
fprintf(stderr, "Options:\n");
fprintf(stderr, " -d - Set Dock Window Type\n");
@@ -748,13 +768,16 @@ usage(char *argv0) {
exit(1);
}
-void setlayer() {
+void
+setlayer(void)
+{
numkeys = countkeys(layers[currentlayer]);
memcpy(&keys, layers[currentlayer], sizeof(Key) * numkeys);
}
void
-cyclelayer() {
+cyclelayer(void)
+{
currentlayer++;
if (currentlayer >= numlayers)
currentlayer = 0;
@@ -765,7 +788,8 @@ cyclelayer() {
}
void
-togglelayer() {
+togglelayer(void)
+{
if (currentlayer > 0) {
currentlayer = 0;
} else if (numlayers > 1) {
@@ -777,14 +801,15 @@ togglelayer() {
drawkeyboard();
}
-
void
-showoverlay(int idx) {
+showoverlay(int idx)
+{
if (debug) printdbg("Showing overlay %d\n", idx);
int i,j;
+
/* unpress existing key (visually only) */
- for(i = 0; i < numkeys; i++) {
- if(keys[i].pressed && !IsModifierKey(keys[i].keysym)) {
+ for (i = 0; i < numkeys; i++) {
+ if (keys[i].pressed && !IsModifierKey(keys[i].keysym)) {
keys[i].pressed = 0;
drawkey(&keys[i]);
break;
@@ -808,7 +833,8 @@ showoverlay(int idx) {
}
void
-hideoverlay() {
+hideoverlay(void)
+{
if (debug) printdbg("Hiding overlay %d\n", currentoverlay);
currentoverlay = -1;
overlaykeysym = 0;
@@ -816,19 +842,20 @@ hideoverlay() {
cyclelayer();
}
-
void
-sigterm(int sig)
+sigterm(int signo)
{
running = False;
sigtermd = True;
if (debug) printdbg("Sigterm received\n");
}
-
void
-init_layers(char * layer_names_list, const char * initial_layer_name) {
- int j;
+init_layers(char *layer_names_list, const char *initial_layer_name)
+{
+ char *s;
+ int j, found;
+
if (layer_names_list == NULL) {
numlayers = LAYERS;
memcpy(&layers, &available_layers, sizeof(available_layers));
@@ -841,11 +868,11 @@ init_layers(char * layer_names_list, const char * initial…
}
}
} else {
- char * s;
s = strtok(layer_names_list, ",");
while (s != NULL) {
- if (numlayers+1 > LAYERS) die("too many layers specifi…
- int found = 0;
+ if (numlayers+1 > LAYERS)
+ die("too many layers specified");
+ found = 0;
for (j = 0; j < LAYERS; j++) {
if (strcmp(layer_names[j], s) == 0) {
fprintf(stderr, "Adding layer %s\n", s…
@@ -869,87 +896,85 @@ init_layers(char * layer_names_list, const char * initial…
}
void
-printdbg(const char * fmt, ...) {
- va_list args;
- va_start(args, fmt);
- vfprintf(stderr, fmt, args);
- va_end(args);
+printdbg(const char *fmt, ...)
+{
+ va_list ap;
+ va_start(ap, fmt);
+ vfprintf(stderr, fmt, ap);
+ va_end(ap);
fflush(stderr);
}
int
-main(int argc, char *argv[]) {
+main(int argc, char *argv[])
+{
+ char *initial_layer_name = NULL;
+ char *layer_names_list = NULL;
+ char *tmp;
int i, xr, yr, bitm;
unsigned int wr, hr;
- char * initial_layer_name = NULL;
- char * layer_names_list = NULL;
signal(SIGTERM, sigterm);
- /* parse environment variables */
if (OVERLAYS <= 1) {
enableoverlays = 0;
} else {
- const char* enableoverlays_env = getenv("SVKBD_ENABLEOVERLAYS"…
- if (enableoverlays_env != NULL) enableoverlays = atoi(enableov…
+ if ((tmp = getenv("SVKBD_ENABLEOVERLAYS")))
+ enableoverlays = atoi(tmp);
}
- char *layers_env = getenv("SVKBD_LAYERS");
- if (layers_env != NULL) {
- if (!(layer_names_list = strdup(layers_env))) {
- die("memory allocation error\n");
- }
+ if ((tmp = getenv("SVKBD_LAYERS"))) {
+ if (!(layer_names_list = strdup(tmp)))
+ die("memory allocation error");
}
- const char* heightfactor_s = getenv("SVKBD_HEIGHTFACTOR");
- if (heightfactor_s != NULL)
- heightfactor = atoi(heightfactor_s);
+
+ if ((tmp = getenv("SVKBD_HEIGHTFACTOR")))
+ heightfactor = atoi(tmp);
/* parse command line arguments */
for (i = 1; argv[i]; i++) {
- if(!strcmp(argv[i], "-v")) {
- die("svkbd-"VERSION", © 2006-2020 svkbd engineers,"
- " see LICENSE for details\n");
- } else if(!strcmp(argv[i], "-d")) {
+ if (!strcmp(argv[i], "-v")) {
+ die("svkbd-"VERSION);
+ } else if (!strcmp(argv[i], "-d")) {
isdock = True;
continue;
- } else if(!strncmp(argv[i], "-g", 2)) {
- if(i >= argc - 1)
+ } else if (!strncmp(argv[i], "-g", 2)) {
+ if (i >= argc - 1)
continue;
- bitm = XParseGeometry(argv[i+1], &xr, &yr, &wr, &hr);
- if(bitm & XValue)
+ bitm = XParseGeometry(argv[i + 1], &xr, &yr, &wr, &hr);
+ if (bitm & XValue)
wx = xr;
- if(bitm & YValue)
+ if (bitm & YValue)
wy = yr;
- if(bitm & WidthValue)
+ if (bitm & WidthValue)
ww = (int)wr;
- if(bitm & HeightValue)
+ if (bitm & HeightValue)
wh = (int)hr;
- if(bitm & XNegative && wx == 0)
+ if (bitm & XNegative && wx == 0)
wx = -1;
- if(bitm & YNegative && wy == 0)
+ if (bitm & YNegative && wy == 0)
wy = -1;
i++;
} else if (!strcmp(argv[i], "-fn")) { /* font or font set */
fonts[0] = argv[++i];
- } else if(!strcmp(argv[i], "-D")) {
+ } else if (!strcmp(argv[i], "-D")) {
debug = 1;
- } else if(!strcmp(argv[i], "-h")) {
+ } else if (!strcmp(argv[i], "-h")) {
usage(argv[0]);
- } else if(!strcmp(argv[i], "-O")) {
+ } else if (!strcmp(argv[i], "-O")) {
enableoverlays = 0;
- } else if(!strcmp(argv[i], "-l")) {
- if(i >= argc - 1)
+ } else if (!strcmp(argv[i], "-l")) {
+ if (i >= argc - 1)
continue;
free(layer_names_list);
- if (!(layer_names_list = strdup(argv[++i]))) {
- die("memory allocation error\n");
- }
- } else if(!strcmp(argv[i], "-s")) {
- if(i >= argc - 1)
+ if (!(layer_names_list = strdup(argv[++i])))
+ die("memory allocation error");
+ } else if (!strcmp(argv[i], "-s")) {
+ if (i >= argc - 1)
continue;
initial_layer_name = argv[++i];
- } else if(!strcmp(argv[i], "-H")) {
- if(i >= argc - 1)
+ } else if (!strcmp(argv[i], "-H")) {
+ if (i >= argc - 1)
continue;
heightfactor = atoi(argv[++i]);
} else {
@@ -958,18 +983,20 @@ main(int argc, char *argv[]) {
}
}
- if (heightfactor <= 0) die("height factor must be a positive integer\n…
+ if (heightfactor <= 0)
+ die("height factor must be a positive integer");
init_layers(layer_names_list, initial_layer_name);
- if(!setlocale(LC_CTYPE, "") || !XSupportsLocale())
- fprintf(stderr, "warning: no locale support\n");
- if(!(dpy = XOpenDisplay(0)))
- die("svkbd: cannot open display\n");
+ if (!setlocale(LC_CTYPE, "") || !XSupportsLocale())
+ fprintf(stderr, "warning: no locale support");
+ if (!(dpy = XOpenDisplay(0)))
+ die("cannot open display");
setup();
run();
cleanup();
XCloseDisplay(dpy);
free(layer_names_list);
+
return 0;
}
diff --git a/util.c b/util.c
@@ -17,7 +17,8 @@ ecalloc(size_t nmemb, size_t size)
}
void
-die(const char *fmt, ...) {
+die(const char *fmt, ...)
+{
va_list ap;
va_start(ap, fmt);
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.