From cb49cc5d8307d7c839ed79821fbfc85ec1627d8c Mon Sep 17 00:00:00 2001 From: Markus Brueffer Date: Thu, 9 Jun 2005 22:56:12 +0000 Subject: Add tpb 0.6.3, An On-Screen-Display for hotkeys of IBM ThinkPads and the first consumer of the updated acpi_ibm(4) driver: With TPB it is possible to bind a program to the ThinkPad, Mail, Home and Search button. TPB can also run a callback program on each state change with the changed state and the new state as options. So it is possible to trigger several actions on different events. TPB has an on-screen display (OSD) to show volume, mute, brightness and some other information. Furthermore TPB supports a software mixer, as the R series ThinkPads have no hardware mixer to change the volume. WWW: http://www.nongnu.org/tpb/ --- deskutils/tpb/Makefile | 58 ++++++++++++++ deskutils/tpb/distinfo | 2 + deskutils/tpb/files/patch-Makefile.in | 11 +++ deskutils/tpb/files/patch-man-tpb.1 | 43 +++++++++++ deskutils/tpb/files/patch-src-Makefile.in | 11 +++ deskutils/tpb/files/patch-src-cfg.h | 11 +++ deskutils/tpb/files/patch-src-tpb.c | 121 ++++++++++++++++++++++++++++++ deskutils/tpb/pkg-descr | 10 +++ deskutils/tpb/pkg-plist | 6 ++ 9 files changed, 273 insertions(+) create mode 100644 deskutils/tpb/Makefile create mode 100644 deskutils/tpb/distinfo create mode 100644 deskutils/tpb/files/patch-Makefile.in create mode 100644 deskutils/tpb/files/patch-man-tpb.1 create mode 100644 deskutils/tpb/files/patch-src-Makefile.in create mode 100644 deskutils/tpb/files/patch-src-cfg.h create mode 100644 deskutils/tpb/files/patch-src-tpb.c create mode 100644 deskutils/tpb/pkg-descr create mode 100644 deskutils/tpb/pkg-plist (limited to 'deskutils/tpb') diff --git a/deskutils/tpb/Makefile b/deskutils/tpb/Makefile new file mode 100644 index 000000000000..a3c0bb63c872 --- /dev/null +++ b/deskutils/tpb/Makefile @@ -0,0 +1,58 @@ +# New ports collection makefile for: tpb +# Date created: Fri Jun 10 00:38:03 CEST 2005 +# Whom: Markus Brueffer +# +# $FreeBSD$ + +PORTNAME= tpb +PORTVERSION= 0.6.3 +CATEGORIES= deskutils +MASTER_SITES= ${MASTER_SITE_SAVANNAH} +MASTER_SITE_SUBDIR= ${PORTNAME} + +MAINTAINER= markus@FreeBSD.org +COMMENT= On-Screen-Display for hotkeys of IBM ThinkPads + +LIB_DEPENDS= xosd.4:${PORTSDIR}/misc/xosd + +ONLY_FOR_ARCHS= i386 amd64 + +USE_GMAKE= yes +GNU_CONFIGURE= yes +USE_REINPLACE= yes +USE_ICONV= yes +USE_BISON= yes +USE_REINPLACE= yes + +CONFIGURE_TARGET= --build=${MACHINE_ARCH}-portbld-freebsd${OSREL} +CONFIGURE_ARGS= --with-libiconv-prefix=${LOCALBASE} + +MAN1= tpb.1 + +.ifndef(WITHOUT_NLS) +USE_GETTEXT= yes +PLIST_SUB+= NLS="" +.else +CONFIGURE_ARGS+=--disable-nls +PLIST_SUB+= NLS="@comment " +.endif + +post-patch: + @${REINPLACE_CMD} -e 's|%%PREFIX%%|${PREFIX}|g' \ + ${WRKSRC}/src/cfg.h \ + ${WRKSRC}/man/tpb.1 + +post-install: + ${INSTALL_DATA} ${WRKSRC}/doc/tpbrc ${PREFIX}/etc/tpbrc.default +.ifndef(NOPORTDOCS) + ${MKDIR} ${DOCSDIR} + ${INSTALL_SCRIPT} ${WRKSRC}/doc/callback_example.sh ${DOCSDIR} +.endif + +.include + +.if ${OSVERSION} < 600030 +IGNORE=is not supported on FreeBSD < 6.0 +.endif + +.include diff --git a/deskutils/tpb/distinfo b/deskutils/tpb/distinfo new file mode 100644 index 000000000000..17e1e4c6a09d --- /dev/null +++ b/deskutils/tpb/distinfo @@ -0,0 +1,2 @@ +MD5 (tpb-0.6.3.tar.gz) = fc11a0af992178e4013fd9c041dbaa7e +SIZE (tpb-0.6.3.tar.gz) = 277058 diff --git a/deskutils/tpb/files/patch-Makefile.in b/deskutils/tpb/files/patch-Makefile.in new file mode 100644 index 000000000000..84ea9699997a --- /dev/null +++ b/deskutils/tpb/files/patch-Makefile.in @@ -0,0 +1,11 @@ +--- Makefile.in.orig Thu Jun 9 01:19:36 2005 ++++ Makefile.in Thu Jun 9 01:19:52 2005 +@@ -92,7 +92,7 @@ + USE_NLS = @USE_NLS@ + VERSION = @VERSION@ + +-SUBDIRS = doc intl po src man ++SUBDIRS = intl po src man + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 + mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs + CONFIG_HEADER = config.h diff --git a/deskutils/tpb/files/patch-man-tpb.1 b/deskutils/tpb/files/patch-man-tpb.1 new file mode 100644 index 000000000000..dac2d56d1b2f --- /dev/null +++ b/deskutils/tpb/files/patch-man-tpb.1 @@ -0,0 +1,43 @@ +--- man/tpb.1.orig Mon Aug 23 13:01:45 2004 ++++ man/tpb.1 Thu Jun 9 23:49:03 2005 +@@ -7,7 +7,7 @@ + With TPB it is possible to bind a program to the ThinkPad, Mail, Home and Search button. + TPB can also run a callback program on each state change with the changed state and the new state as options. + So it is possible to trigger several actions on different events. +-TPB has a on-screen display (OSD) to show volume, mute, brightness and some other informations. ++TPB has an on-screen display (OSD) to show volume, mute, brightness and some other information. + Furthermore TPB supports a software mixer, as the R series ThinkPads have no hardware mixer to change the volume. + .SH OPTIONS + .TP 8 +@@ -86,7 +86,7 @@ + builtin defaults + .TP + \(bu +-configuration in /etc/tpbrc ++configuration in %%PREFIX%%/etc/tpbrc + .TP + \(bu + configuration in $HOME/.tpbrc +@@ -112,7 +112,8 @@ + .TP 8 + .B NVRAM + Should define the nvram device from where the information about the key states +-is read. Default is to try /dev/nvram, followed by /dev/misc/nvram. ++is read. Default is to try /dev/nvram, followed by /dev/misc/nvram. This has no ++effect on FreeBSD, since it uses the acpi_ibm(4) driver instead. + .TP 8 + .B POLLTIME + Defines the delay between polls in microseconds. Default is 200000. +@@ -266,9 +267,11 @@ + .B OSDALIGN + Defines the alignment of the osd. Possible values are left, center and right. Default is left. + .SH "NOTES" +-Requires NVRAM device /dev/nvram. This must be enabled in your kernel. ++Requires NVRAM device /dev/nvram on Linux. This must be enabled in your kernel. + Although the device file must exist. The device file could be created with + \'mknod /dev/nvram c 10 144\' ++ ++On FreeBSD you have to load the acpi_ibm(4) driver prior to using TPB. + + This program was developed on a Thinkpad Model T21. I don't know if it works on + other models. diff --git a/deskutils/tpb/files/patch-src-Makefile.in b/deskutils/tpb/files/patch-src-Makefile.in new file mode 100644 index 000000000000..21ec7cc6d523 --- /dev/null +++ b/deskutils/tpb/files/patch-src-Makefile.in @@ -0,0 +1,11 @@ +--- src/Makefile.in.orig Thu Jun 9 00:42:42 2005 ++++ src/Makefile.in Thu Jun 9 00:45:44 2005 +@@ -106,7 +106,7 @@ + + CPPFLAGS = @CPPFLAGS@ + LDFLAGS = @LDFLAGS@ +-LIBS = @LIBS@ ++LIBS = @LIBS@ $(INTLLIBS) + X_CFLAGS = @X_CFLAGS@ + X_LIBS = @X_LIBS@ + X_EXTRA_LIBS = @X_EXTRA_LIBS@ diff --git a/deskutils/tpb/files/patch-src-cfg.h b/deskutils/tpb/files/patch-src-cfg.h new file mode 100644 index 000000000000..f8ca4d34219c --- /dev/null +++ b/deskutils/tpb/files/patch-src-cfg.h @@ -0,0 +1,11 @@ +--- src/cfg.h.orig Mon May 30 00:06:16 2005 ++++ src/cfg.h Mon May 30 00:06:32 2005 +@@ -67,7 +67,7 @@ + #ifdef SYSCONFDIR + #define GLOBAL_CONFIG_FILE SYSCONFDIR "/tpbrc" + #else /* SYSCONFDIR */ +-#define GLOBAL_CONFIG_FILE "/etc/tpbrc" ++#define GLOBAL_CONFIG_FILE "%%PREFIX%%/etc/tpbrc" + #endif /* SYSCONFDIR */ + #define PRIVATE_CONFIG_FILE ".tpbrc" + diff --git a/deskutils/tpb/files/patch-src-tpb.c b/deskutils/tpb/files/patch-src-tpb.c new file mode 100644 index 000000000000..a57e61a43def --- /dev/null +++ b/deskutils/tpb/files/patch-src-tpb.c @@ -0,0 +1,121 @@ +--- src/tpb.c.orig Sun Aug 22 15:45:11 2004 ++++ src/tpb.c Fri Jun 10 00:11:56 2005 +@@ -34,6 +34,10 @@ + #include + #include "config.h" + ++#ifdef __FreeBSD__ ++#include ++#endif ++ + #if ENABLE_NLS + #include + #endif /* ENABLE_NLS */ +@@ -163,6 +167,9 @@ + /* to initialize struct */ + memset(&last_thinkpad_state, 0x00, sizeof(t_thinkpad_state)); + if(get_nvram_state(&thinkpad_state) != 0) { ++#ifdef __FreeBSD__ ++ fprintf(stderr, _("acpi_ibm(4) driver not loaded. Exiting...")); ++#endif + _exit(1); + } + if(cfg.apm == STATE_ON) { +@@ -972,6 +979,7 @@ + /* get the current state from the nvram */ + int get_nvram_state(t_thinkpad_state *thinkpad_state) /* {{{ */ + { ++#ifndef __FreeBSD__ + static int fdsc = -1; /* -1 -> file not opened */ + unsigned char buffer[114]; + struct { +@@ -1030,13 +1038,50 @@ + thinkpad_state->mute_toggle = (thinkpad_state->mute_toggle & ~0x01) | (( buffer[0x60] & 0x40) >> 6); + thinkpad_state->powermgt_ac = (( buffer[0x39] & 0x07) ); + thinkpad_state->powermgt_battery = (( buffer[0x39] & 0x38) >> 3); ++#else ++ u_int n = 0; ++ size_t len = sizeof(n); ++ if ( sysctlbyname("dev.acpi_ibm.0.hotkey", &n, &len, NULL, 0) == -1 ) ++ return -1; ++ ++ thinkpad_state->thinkpad_toggle = (thinkpad_state->thinkpad_toggle & ~0x01) | (( n & (1<<3)) >> 3); ++ thinkpad_state->zoom_toggle = (thinkpad_state->zoom_toggle & ~0x01) | (( n & (1<<4)) >> 4); ++ thinkpad_state->display_toggle = (thinkpad_state->display_toggle & ~0x01) | (( n & (1<<6)) >> 6); ++ thinkpad_state->home_toggle = (thinkpad_state->home_toggle & ~0x01) | (( n & (1<<0)) ); ++ thinkpad_state->search_toggle = (thinkpad_state->search_toggle & ~0x01) | (( n & (1<<1)) >> 1); ++ thinkpad_state->mail_toggle = (thinkpad_state->mail_toggle & ~0x01) | (( n & (1<<2)) >> 2); ++ thinkpad_state->hibernate_toggle = (thinkpad_state->hibernate_toggle & ~0x01) | (( n & (1<<7)) >> 7); ++ thinkpad_state->expand_toggle = (thinkpad_state->expand_toggle & ~0x01) | (( n & (1<<9)) >> 9); ++ thinkpad_state->brightness_toggle = (thinkpad_state->brightness_toggle & ~0x01) | (( n & (1<<10)) >> 10); ++ thinkpad_state->volume_toggle = (thinkpad_state->volume_toggle & ~0x01) | (( n & (1<<11)) >> 11); ++ ++ if ( sysctlbyname("dev.acpi_ibm.0.wlan", &n, &len, NULL, 0) == -1 ) ++ return -1; ++ thinkpad_state->wireless_toggle = (thinkpad_state->wireless_toggle & ~0x01) | n; ++ ++ if ( sysctlbyname("dev.acpi_ibm.0.thinklight", &n, &len, NULL, 0) == -1 ) ++ return -1; ++ thinkpad_state->thinklight_toggle = (thinkpad_state->thinklight_toggle & ~0x01) | n; ++ ++ if ( sysctlbyname("dev.acpi_ibm.0.lcd_brightness", &n, &len, NULL, 0) == -1 ) ++ return -1; ++ thinkpad_state->brightness_level = n; ++ ++ if ( sysctlbyname("dev.acpi_ibm.0.volume", &n, &len, NULL, 0) == -1 ) ++ return -1; ++ thinkpad_state->volume_level = n; + ++ if ( sysctlbyname("dev.acpi_ibm.0.mute", &n, &len, NULL, 0) == -1 ) ++ return -1; ++ thinkpad_state->mute_toggle = (thinkpad_state->mute_toggle & ~0x01) | n; ++#endif + return 0; + } /* }}} */ + + /* get the current state from the apm subsystem */ + int get_apm_state(t_thinkpad_state *thinkpad_state) /* {{{ */ + { ++#ifndef __FreeBSD__ + unsigned int i; + static int fdsc = -1; /* -1 -> file not opened */ + char buffer[38]; +@@ -1114,7 +1159,15 @@ + thinkpad_state->ac_state = STATE_ON; + break; + } ++#else ++ u_long addr; ++ size_t len = sizeof(addr); + ++ if ( sysctlbyname("hw.acpi.acline", &addr, &len, NULL, 0) == -1 ) ++ return -1; ++ ++ thinkpad_state->ac_state = (addr == 1) ? STATE_ON : STATE_OFF; ++#endif + return 0; + } /* }}} */ + +@@ -1276,6 +1329,12 @@ + + /* only use writeback to nvram when cfg.mixersteps is different from DEFAULT_MIXERSTEPS */ + if(cfg.mixersteps != DEFAULT_MIXERSTEPS) { ++#ifdef __FreeBSD__ ++ u_int n = 0; ++ ++ if (sysctlbyname("dec.acpi_ibm.0.volume", NULL, NULL, &n, sizeof(n))) ++ fprintf(stderr, _("Unable to set volume sysctl")); ++#else + /* open nvram */ + if((fdsc = open(cfg.nvram, O_RDWR|O_NONBLOCK)) == -1) { + fprintf(stderr, _("Unable to open device %s: "), cfg.nvram); +@@ -1317,8 +1376,8 @@ + } + + close(fdsc); ++#endif + } +- + return; + + } /* }}} */ diff --git a/deskutils/tpb/pkg-descr b/deskutils/tpb/pkg-descr new file mode 100644 index 000000000000..0e07bdaa8a97 --- /dev/null +++ b/deskutils/tpb/pkg-descr @@ -0,0 +1,10 @@ +With TPB it is possible to bind a program to the ThinkPad, Mail, Home and +Search button. TPB can also run a callback program on each state change with +the changed state and the new state as options. So it is possible to trigger +several actions on different events. + +TPB has an on-screen display (OSD) to show volume, mute, brightness and some +other information. Furthermore TPB supports a software mixer, as the R series +ThinkPads have no hardware mixer to change the volume. + +WWW: http://www.nongnu.org/tpb/ diff --git a/deskutils/tpb/pkg-plist b/deskutils/tpb/pkg-plist new file mode 100644 index 000000000000..d9c92cf7337d --- /dev/null +++ b/deskutils/tpb/pkg-plist @@ -0,0 +1,6 @@ +bin/tpb +etc/tpbrc.default +%%PORTDOCS%%%%DOCSDIR%%/callback_example.sh +%%NLS%%share/locale/da/LC_MESSAGES/tpb.mo +%%NLS%%share/locale/de/LC_MESSAGES/tpb.mo +%%NLS%%share/locale/ru/LC_MESSAGES/tpb.mo -- cgit v1.2.3