cleanup Makefile, add initial man page svkbd.1 - svkbd - simple virtual keyboard
 (HTM) git clone git://git.suckless.org/svkbd
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 1c75314faf5a6d6a9d330b01d50ebbf0cd424b15
 (DIR) parent fc267005ced2251de9e05e62e8a2b42a2712236a
 (HTM) Author: Hiltjo Posthuma <hiltjo@codemadness.org>
       Date:   Fri, 29 May 2020 14:24:17 +0200
       
       cleanup Makefile, add initial man page svkbd.1
       
       Diffstat:
         M Makefile                            |      93 +++++++++++++++----------------
         A README                              |      44 +++++++++++++++++++++++++++++++
         D README.md                           |      44 -------------------------------
         M config.mk                           |      30 ++++++++----------------------
         A svkbd.1                             |      36 +++++++++++++++++++++++++++++++
         M svkbd.c                             |       5 ++++-
       
       6 files changed, 136 insertions(+), 116 deletions(-)
       ---
 (DIR) diff --git a/Makefile b/Makefile
       @@ -1,73 +1,68 @@
        # svkbd - simple virtual keyboard
        # See LICENSE file for copyright and license details.
       +.POSIX:
       +
       +NAME = svkbd
       +VERSION = 0.1
        
        include config.mk
        
       -SRC = svkbd.c
       +BIN = ${NAME}-${LAYOUT}
       +SRC = ${NAME}.c
       +OBJ = ${NAME}-${LAYOUT}.o
       +MAN1 = ${NAME}.1
        
       -all: options svkbd-${LAYOUT}
       +all: ${BIN}
        
        options:
                @echo svkbd build options:
       -        @echo "CFLAGS   = ${CFLAGS}"
       -        @echo "LDFLAGS  = ${LDFLAGS}"
       +        @echo "CFLAGS   = ${SVKBD_CFLAGS}"
       +        @echo "CPPLAGS  = ${SVKBD_CPPFLAGS}"
       +        @echo "LDFLAGS  = ${SVKBD_LDFLAGS}"
                @echo "CC       = ${CC}"
        
       -config.h: config.mk
       -        @echo creating $@ from config.def.h
       -        @cp config.def.h $@
       +config.h:
       +        cp config.def.h $@
       +
       +${BIN}: config.h ${OBJ}
       +
       +${OBJ}: config.h
        
       -svkbd-%: layout.%.h config.h ${SRC}
       -        @echo creating layout.h from $<
       -        @cp $< layout.h
       -        @echo CC -o $@
       -        @${CC} -o $@ ${SRC} ${LDFLAGS} ${CFLAGS}
       +${OBJ}:
       +        ${CC} -o $@ -c ${SRC} ${SVKBD_CFLAGS} ${SVKBD_CPPFLAGS}
       +
       +${BIN}:
       +        ${CC} -o ${BIN} ${OBJ} ${SVKBD_LDFLAGS}
        
        clean:
       -        @echo cleaning
       -        @for i in svkbd-*; \
       -        do \
       -                if [ -x $$i ]; \
       -                then \
       -                        rm -f $$i 2> /dev/null; \
       -                fi \
       -        done; true
       -        @rm -f ${OBJ} svkbd-${VERSION}.tar.gz 2> /dev/null; true
       +        rm -f ${NAME}-?? ${NAME}-??.o ${OBJ}
        
       -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 layout.*.h; \
       +dist:
       +        rm -rf "${NAME}-${VERSION}"
       +        mkdir -p "${NAME}-${VERSION}"
       +        cp LICENSE Makefile README config.def.h config.mk ${MAN1} \
       +                ${SRC} ${NAME}-${VERSION}
       +        for i in layout.*.h; \
                do \
       -                cp $$i svkbd-${VERSION}; \
       +                cp $$i ${NAME}-${VERSION}; \
                done
       -        @tar -cf svkbd-${VERSION}.tar svkbd-${VERSION}
       -        @gzip svkbd-${VERSION}.tar
       -        @rm -rf svkbd-${VERSION}
       +        tar -cf - "${NAME}-${VERSION}" | \
       +                gzip -c > "${NAME}-${VERSION}.tar.gz"
       +        rm -rf "${NAME}-${VERSION}"
        
        install: all
       -        @echo installing executable files to ${DESTDIR}${PREFIX}/bin
       -        @mkdir -p ${DESTDIR}${PREFIX}/bin
       -        @for i in svkbd-*; \
       +        mkdir -p ${DESTDIR}${PREFIX}/bin
       +        for i in ${NAME}-??; \
                do \
       -                if [ -x $$i ]; \
       -                then \
       -                        echo CP $$i; \
       -                        cp $$i ${DESTDIR}${PREFIX}/bin; \
       -                        chmod 755 ${DESTDIR}${PREFIX}/bin/$$i; \
       -                fi \
       +                cp $$i ${DESTDIR}${PREFIX}/bin; \
       +                chmod 755 ${DESTDIR}${PREFIX}/bin/$$i; \
                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
       +        mkdir -p "${DESTDIR}${MANPREFIX}/man1"
       +        sed "s/VERSION/${VERSION}/g" < ${MAN1} > ${DESTDIR}${MANPREFIX}/man1/${MAN1}
       +        chmod 644 ${DESTDIR}${MANPREFIX}/man1/${MAN1}
        
        uninstall:
       -        @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
       +        rm -f ${DESTDIR}${PREFIX}/bin/${NAME}-??
       +        rm -f ${DESTDIR}${MANPREFIX}/man1/${MAN1}
        
       -.PHONY: all options clean dist install uninstall
       +.PHONY: all clean dist install uninstall
 (DIR) diff --git a/README b/README
       @@ -0,0 +1,44 @@
       +SVKBD
       +=====
       +This is a simple virtual keyboard, intended to be used in environments,
       +where no keyboard is available.
       +
       +Installation
       +------------
       +
       +        $ make
       +        $ make install
       +
       +This will create by default `svkbd-en`, which is svkbd using an English
       +keyboard layout. You can create svkbd for additional layouts by doing:
       +
       +        $ make LAYOUT=$layout
       +
       +This will take the file `layout.$layout.h` and create `svkbd-$layout`.
       +`make install` will then pick up the new file and install it accordingly.
       +
       +Usage
       +-----
       +
       +        $ svkbd-en
       +
       +This will open svkbd at the bottom of the screen, showing the default
       +English layout.
       +
       +        $ svkbd-en -d
       +
       +This tells svkbd-en to announce itself being a dock window, which then
       +is managed differently between different window managers. If using dwm
       +and the dock patch, then this will make svkbd being managed by dwm and
       +some space of the screen being reserved for it.
       +
       +        $ svkbd-en -g 400x200+1+1
       +
       +This will start svkbd-en with a size of 400x200 and at the upper left
       +window corner.
       +
       +Repository
       +----------
       +
       +        git clone https://git.suckless.org/svkbd
       +
 (DIR) diff --git a/README.md b/README.md
       @@ -1,44 +0,0 @@
       -SVKBD
       -=====
       -This is a simple virtual keyboard, intended to be used in environments,
       -where no keyboard is available.
       -
       -Installation
       -------------
       -
       -        % make
       -        % make install
       -
       -This will create by default `svkbd-en`, which is svkbd using an English
       -keyboard layout. You can create svkbd for additional layouts by doing:
       -
       -        % make svkbd-$layout
       -
       -This will take the file `layout.$layout.h` and create `svkbd-$layout`.
       -`make install` will then pick up the new file and install it accordingly.
       -
       -Usage
       ------
       -
       -        % svkbd-en
       -
       -This will open svkbd at the bottom of the screen, showing the default
       -English layout.
       -
       -        % svkbd-en -d
       -
       -This tells svkbd-en to announce itself being a dock window, which then
       -is managed differently between different window managers. If using dwm
       -and the dock patch, then this will make svkbd being managed by dwm and
       -some space of the screen being reserved for it.
       -
       -        % svkbd-en -g 400x200+1+1
       -
       -This will start svkbd-en with a size of 400x200 and at the upper left
       -window corner.
       -
       -Repository
       -----------
       -
       -        git clone http://git.suckless.org/svkbd
       -
 (DIR) diff --git a/config.mk b/config.mk
       @@ -1,31 +1,17 @@
       -# svkbd version
       -VERSION = 0.1
       -
       -LAYOUT ?= en
       -
       -# Customize below to fit your system
       +LAYOUT = en
        
        # paths
       -PREFIX ?= /usr/local
       +PREFIX = /usr/local
        MANPREFIX = ${PREFIX}/share/man
        
        X11INC = /usr/X11R6/include
        X11LIB = /usr/X11R6/lib
        
        # includes and libs
       -INCS = -I. -I./layouts -I/usr/include -I${X11INC}
       -LIBS = -L/usr/lib -lc -L${X11LIB} -lX11 -lXtst
       -
       -# flags
       -CPPFLAGS = -DVERSION=\"${VERSION}\" \
       -           ${XINERAMAFLAGS}
       -CFLAGS = -g -std=c99 -pedantic -Wall -Os ${INCS} ${CPPFLAGS}
       -LDFLAGS = -g ${LIBS}
       -
       -# Solaris
       -#CFLAGS = -fast ${INCS} -DVERSION=\"${VERSION}\"
       -#LDFLAGS = ${LIBS}
       -
       -# compiler and linker
       -CC = cc
       +INCS = -I. -I./layouts -I${X11INC}
       +LIBS = -L${X11LIB} -lX11 -lXtst
        
       +# use system flags
       +SVKBD_CFLAGS = ${CFLAGS}
       +SVKBD_LDFLAGS = ${LDFLAGS} ${LIBS}
       +SVKBD_CPPFLAGS = ${CPPFLAGS} ${INCS} -DVERSION=\"VERSION\" -DLAYOUT=\"layout.${LAYOUT}.h\"
 (DIR) diff --git a/svkbd.1 b/svkbd.1
       @@ -0,0 +1,36 @@
       +.Dd May 29, 2020
       +.Dt SVKBD 1
       +.Os
       +.Sh NAME
       +.Nm svkbd
       +.Nd simple virtual keyboard
       +.Sh SYNOPSIS
       +.Nm
       +.Op Fl d
       +.Op Fl g Ar geometry
       +.Op Fl h
       +.Op Fl v
       +.Sh DESCRIPTION
       +.Nm
       +is a simple virtual keyboard, intended to be used in environments, where no
       +keyboard is available.
       +.Pp
       +The options are as follows:
       +.Bl -tag -width Ds
       +.It Fl d
       +Set the _NET_WM_WINDOW_TYPE_DOCK property to hint windowmanagers it is
       +dockable, by default off.
       +.It Fl g Ar geometry
       +Adjust the initial window position or size as specified by the standard X11
       +geometry format.
       +.It Fl h
       +Show the usage information.
       +.It Fl v
       +Show the version information.
       +.El
       +.Sh SEE ALSO
       +.Xr XParseGeometry 3
       +.Sh AUTHORS
       +.An Christoph Lohmann Aq Mt 20h@r-36.net
       +and
       +.An Enno Boland Aq Mt gottox@s01.de
 (DIR) diff --git a/svkbd.c b/svkbd.c
       @@ -101,7 +101,10 @@ Bool ispressing = False;
        
        /* configuration, allows nested code to access above variables */
        #include "config.h"
       -#include "layout.h"
       +#ifndef LAYOUT
       +#error "make sure to define LAYOUT"
       +#endif
       +#include LAYOUT
        
        void
        motionnotify(XEvent *e)