commit 3619838eb7809043fae15ed0564fee9b6f237832
parent 31e00125e8b79809808c203f631b18b7a517097f
Author: Enno Boland (Gottox) <tox@s01.de>
Date:   Mon,  4 Apr 2011 13:39:31 +0200
Adding Christoph Lohmanns patches again. Thx :D
Diffstat:
3 files changed, 36 insertions(+), 19 deletions(-)
diff --git a/Makefile b/Makefile
@@ -6,7 +6,7 @@ include config.mk
 SRC = svkbd.c
 LAYOUTS = en de arrows
 
-all: options svkbd
+all: options svkbd.en
 
 options:
 	@echo svkbd build options:
@@ -19,11 +19,6 @@ config.h: config.mk
 	@echo creating $@ from config.def.h
 	@cp config.def.h $@
 
-
-svkbd: svkbd.en
-	@echo CP $@
-	@cp $< $@
-
 svkbd.%: layout.%.h config.h ${SRC}
 	@echo creating layout.h from $<
 	@cp $< layout.h
@@ -32,32 +27,45 @@ svkbd.%: layout.%.h config.h ${SRC}
 
 clean:
 	@echo cleaning
-	@for i in ${LAYOUTS}; do rm svkbd.$$i 2> /dev/null; done; true
-	@rm -f svkbd ${OBJ} svkbd-${VERSION}.tar.gz 2> /dev/null; true
+	@for i in ${LAYOUTS}; \
+	do \
+		rm -f svkbd.$$i 2> /dev/null; \
+	done; true
+	@rm -f ${OBJ} svkbd-${VERSION}.tar.gz 2> /dev/null; true
 
 dist: clean
 	@echo creating dist tarball
 	@mkdir -p svkbd-${VERSION}
 	@cp LICENSE Makefile README config.def.h config.mk \
 		${SRC} svkbd-${VERSION}
-	@for i in ${LAYOUTS}; do cp layout.$$i.h svkbd.${VERSION} || exit 1; done
+	@for i in ${LAYOUTS}; \
+	do \
+		cp layout.$$i.h svkbd-${VERSION}; \
+	done
 	@tar -cf svkbd-${VERSION}.tar svkbd-${VERSION}
 	@gzip svkbd-${VERSION}.tar
 	@rm -rf svkbd-${VERSION}
 
 install: all
-	@echo installing executable file to ${DESTDIR}${PREFIX}/bin
+	@echo installing executable files to ${DESTDIR}${PREFIX}/bin
 	@mkdir -p ${DESTDIR}${PREFIX}/bin
-	@cp -f svkbd ${DESTDIR}${PREFIX}/bin
-	@chmod 755 ${DESTDIR}${PREFIX}/bin/svkbd
-	@echo installing manual page to ${DESTDIR}${MANPREFIX}/man1
-	@mkdir -p ${DESTDIR}${MANPREFIX}/man1
+	@for i in ${LAYOUTS}; \
+	do \
+		if [ -e svkbd.$$i ]; \
+		then \
+			echo CP svkbd.$$i; \
+			cp svkbd.$$i ${DESTDIR}${PREFIX}/bin; \
+			chmod 755 ${DESTDIR}${PREFIX}/bin/svkbd.$$i; \
+		fi \
+	done
+#	@echo installing manual page to ${DESTDIR}${MANPREFIX}/man1
+#	@mkdir -p ${DESTDIR}${MANPREFIX}/man1
 #	@sed "s/VERSION/${VERSION}/g" < svkbd.1 > ${DESTDIR}${MANPREFIX}/man1/svkbd.1
 #	@chmod 644 ${DESTDIR}${MANPREFIX}/man1/svkbd.1
 
 uninstall:
-	@echo removing executable file from ${DESTDIR}${PREFIX}/bin
-	@rm -f ${DESTDIR}${PREFIX}/bin/svkbd
+	@echo removing executable files from ${DESTDIR}${PREFIX}/bin
+	@rm -f ${DESTDIR}${PREFIX}/bin/svkbd.*
 #	@echo removing manual page from ${DESTDIR}${MANPREFIX}/man1
 #	@rm -f ${DESTDIR}${MANPREFIX}/man1/svkbd.1
 
diff --git a/config.mk b/config.mk
@@ -6,7 +6,7 @@ LAYOUT ?= en
 # Customize below to fit your system
 
 # paths
-PREFIX = /usr/local
+PREFIX ?= /usr/local
 MANPREFIX = ${PREFIX}/share/man
 
 X11INC = /usr/X11R6/include
diff --git a/svkbd.c b/svkbd.c
@@ -333,8 +333,8 @@ setup(void) {
 	/* init screen */
 	screen = DefaultScreen(dpy);
 	root = RootWindow(dpy, screen);
-	sw = DisplayWidth(dpy, screen);
-	sh = DisplayHeight(dpy, screen); 
+	sw = DisplayWidth(dpy, screen) - 1;
+	sh = DisplayHeight(dpy, screen) - 1;
 	initfont(font);
 
 	/* init atoms */
@@ -344,12 +344,21 @@ setup(void) {
 	countrows();
 	if(!ww)
 		ww = sw - wx;
+	if(ww < 0)
+		ww = sw + ww;
 	if(!wx)
 		wx = 0;
+	if(wx < 0)
+		wx = sw + wx;
 	if(!wh)
 		wh = sh * rows / 32;
+	if(wh < 0)
+		wh = sh + wh;
 	if(!wy)
 		wy = sh - wh;
+	if(wy < 0)
+		wy = sh + wy - wh;
+
 	dc.norm[ColBG] = getcolor(normbgcolor);
 	dc.norm[ColFG] = getcolor(normfgcolor);
 	dc.press[ColBG] = getcolor(pressbgcolor);