devctl(4)/devd(8) support in acpi_thinkpad(4).
authorHasso Tepper <hasso@dragonflybsd.org>
Fri, 3 Oct 2008 00:47:36 +0000 (00:47 +0000)
committerHasso Tepper <hasso@dragonflybsd.org>
Fri, 3 Oct 2008 00:47:36 +0000 (00:47 +0000)
share/man/man4/acpi_thinkpad.4
sys/dev/acpica5/acpi_thinkpad/acpi_thinkpad.c

index 757f14d..58daa8c 100644 (file)
@@ -24,7 +24,7 @@
 .\" SUCH DAMAGE.
 .\"
 .\" $FreeBSD$
-.\" $DragonFly: src/share/man/man4/acpi_thinkpad.4,v 1.4 2008/08/28 20:30:46 swildner Exp $
+.\" $DragonFly: src/share/man/man4/acpi_thinkpad.4,v 1.5 2008/10/03 00:47:36 hasso Exp $
 .\"
 .Dd August 28, 2008
 .Dt ACPI_THINKPAD 4
@@ -54,98 +54,98 @@ Thinkpad laptops.
 The main purpose of this driver is to provide an interface,
 accessible via
 .Xr sysctl 8 ,
-.\" and
-.\" .Xr devd 8 ,
+and
+.Xr devd 8 ,
 through which applications can determine the status of
 various laptop components.
-.\" .Pp
-.\" While the
-.\" .Xr sysctl 8
-.\" interface is enabled automatically after loading the driver, the
-.\" .Xr devd 8
-.\" interface has to be enabled explicitly, as it may alter the default action of
-.\" certain keys.
-.\" This is done by setting the
-.\" .Va events
-.\" sysctl as described below.
-.\" Specifying which keys should generate events is done by setting a bitmask,
-.\" whereas each bit represents one key or key combination.
-.\" This bitmask, accessible via the
-.\" .Va eventmask
-.\" sysctl, is set to
-.\" .Va availmask
-.\" by default, a value representing all possible keypress events on the specific
-.\" ThinkPad model.
-.\" .Ss Xr devd 8 Ss Events
-.\" Hotkey events received by
-.\" .Xr devd 8
-.\" provide the following information:
-.\" .Pp
-.\" .Bl -tag -width "subsystem" -offset indent -compact
-.\" .It system
-.\" .Qq Li ACPI
-.\" .It subsystem
-.\" .Qq Li IBM
-.\" .It type
-.\" The source of the event in the ACPI namespace.
-.\" The value depends on the model.
-.\" .It notify
-.\" Event code (see below).
-.\" .El
-.\" .Pp
-.\" Depending on the ThinkPad model, event codes may vary.
-.\" On a ThinkPad T41p these are as follows:
-.\" .Pp
-.\" .Bl -tag -width "subsystem" -offset indent -compact
-.\" .It Li 0x01
-.\" Fn + F1
-.\" .It Li 0x02
-.\" Fn + F2
-.\" .It Li 0x03
-.\" Fn + F3 (LCD backlight)
-.\" .It Li 0x04
-.\" Fn + F4 (Suspend to RAM)
-.\" .It Li 0x05
-.\" Fn + F5 (Bluetooth)
-.\" .It Li 0x06
-.\" Fn + F6
-.\" .It Li 0x07
-.\" Fn + F7 (Screen expand)
-.\" .It Li 0x08
-.\" Fn + F8
-.\" .It Li 0x09
-.\" Fn + F9
-.\" .It Li 0x0a
-.\" Fn + F10
-.\" .It Li 0x0b
-.\" Fn + F11
-.\" .It Li 0x0c
-.\" Fn + F12 (Suspend to disk)
-.\" .It Li 0x0d
-.\" Fn + Backspace
-.\" .It Li 0x0e
-.\" Fn + Insert
-.\" .It Li 0x0f
-.\" Fn + Delete
-.\" .It Li 0x10
-.\" Fn + Home (Brightness up)
-.\" .It Li 0x11
-.\" Fn + End (Brightness down)
-.\" .It Li 0x12
-.\" Fn + PageUp (ThinkLight)
-.\" .It Li 0x13
-.\" Fn + PageDown
-.\" .It Li 0x14
-.\" Fn + Space (Zoom)
-.\" .It Li 0x15
-.\" Volume Up
-.\" .It Li 0x16
-.\" Volume Down
-.\" .It Li 0x17
-.\" Mute
-.\" .It Li 0x18
-.\" Access IBM Button
-.\" .El
+.Pp
+While the
+.Xr sysctl 8
+interface is enabled automatically after loading the driver, the
+.Xr devd 8
+interface has to be enabled explicitly, as it may alter the default action of
+certain keys.
+This is done by setting the
+.Va events
+sysctl as described below.
+Specifying which keys should generate events is done by setting a bitmask,
+whereas each bit represents one key or key combination.
+This bitmask, accessible via the
+.Va eventmask
+sysctl, is set to
+.Va availmask
+by default, a value representing all possible keypress events on the specific
+ThinkPad model.
+.Ss Xr devd 8 Ss Events
+Hotkey events received by
+.Xr devd 8
+provide the following information:
+.Pp
+.Bl -tag -width "subsystem" -offset indent -compact
+.It system
+.Qq Li ACPI
+.It subsystem
+.Qq Li THINKPAD
+.It type
+The source of the event in the ACPI namespace.
+The value depends on the model.
+.It notify
+Event code (see below).
+.El
+.Pp
+Depending on the ThinkPad model, event codes may vary.
+On a ThinkPad T41p these are as follows:
+.Pp
+.Bl -tag -width "subsystem" -offset indent -compact
+.It Li 0x01
+Fn + F1
+.It Li 0x02
+Fn + F2
+.It Li 0x03
+Fn + F3 (LCD backlight)
+.It Li 0x04
+Fn + F4 (Suspend to RAM)
+.It Li 0x05
+Fn + F5 (Bluetooth)
+.It Li 0x06
+Fn + F6
+.It Li 0x07
+Fn + F7 (Screen expand)
+.It Li 0x08
+Fn + F8
+.It Li 0x09
+Fn + F9
+.It Li 0x0a
+Fn + F10
+.It Li 0x0b
+Fn + F11
+.It Li 0x0c
+Fn + F12 (Suspend to disk)
+.It Li 0x0d
+Fn + Backspace
+.It Li 0x0e
+Fn + Insert
+.It Li 0x0f
+Fn + Delete
+.It Li 0x10
+Fn + Home (Brightness up)
+.It Li 0x11
+Fn + End (Brightness down)
+.It Li 0x12
+Fn + PageUp (ThinkLight)
+.It Li 0x13
+Fn + PageDown
+.It Li 0x14
+Fn + Space (Zoom)
+.It Li 0x15
+Volume Up
+.It Li 0x16
+Volume Down
+.It Li 0x17
+Mute
+.It Li 0x18
+Access IBM Button
+.El
 .\" .Ss Xr led 4 Ss Interface
 .\" The
 .\" .Nm
@@ -350,101 +350,101 @@ Sensors can be monitored by
 .\" .Xr led 4
 .\" device node
 .\" .El
-.\" .Sh EXAMPLES
-.\" The following can be added to
-.\" .Xr devd.conf 5
-.\" in order to pass button events to a
-.\" .Pa /usr/local/sbin/acpi_oem_exec.sh
-.\" script:
-.\" .Bd -literal -offset indent
-.\" notify 10 {
-.\"         match "system"          "ACPI";
-.\"         match "subsystem"       "IBM";
-.\"         action "/usr/local/sbin/acpi_oem_exec.sh $notify ibm";
-.\" };
-.\" .Ed
-.\" .Pp
-.\" A possible
-.\" .Pa /usr/local/sbin/acpi_oem_exec.sh
-.\" script might look like:
-.\" .Bd -literal -offset indent
-.\" #!/bin/sh
-.\" #
-.\" if [ "$1" = "" -o "$2" = "" ]
-.\" then
-.\"         echo "usage: $0 notify oem_name"
-.\"         exit 1
-.\" fi
-.\" NOTIFY=`echo $1`
-.\" LOGGER="logger"
-.\" CALC="bc"
-.\" BC_PRECOMMANDS="scale=2"
-.\" ECHO="echo"
-.\" CUT="cut"
-.\" MAX_LCD_BRIGHTNESS=7
-.\" MAX_VOLUME=14
-.\" OEM=$2
-.\" DISPLAY_PIPE=/tmp/acpi_${OEM}_display
-.\" 
-.\" case ${NOTIFY} in
-.\"         0x05)
-.\"                 LEVEL=`sysctl -n dev.acpi_${OEM}.0.bluetooth`
-.\"                 if [ "$LEVEL" = "1" ]
-.\"                 then
-.\"                         sysctl dev.acpi_${OEM}.0.bluetooth=0
-.\"                         MESSAGE="bluetooth disabled"
-.\"                 else
-.\"                         sysctl dev.acpi_${OEM}.0.bluetooth=1
-.\"                         MESSAGE="bluetooth enabled"
-.\"                 fi
-.\"                 ;;
-.\"         0x10|0x11)
-.\"                 LEVEL=`sysctl -n dev.acpi_${OEM}.0.lcd_brightness`
-.\"                 PERCENT=`${ECHO} "${BC_PRECOMMANDS} ; \\
-.\"                          ${LEVEL} / ${MAX_LCD_BRIGHTNESS} * 100" |\\
-.\"                          ${CALC} | ${CUT} -d . -f 1`
-.\"                 MESSAGE="brightness level ${PERCENT}%"
-.\"                 ;;
-.\"         0x12)
-.\"                 LEVEL=`sysctl -n dev.acpi_${OEM}.0.thinklight`
-.\"                 if [ "$LEVEL" = "1" ]
-.\"                 then
-.\"                         MESSAGE="thinklight enabled"
-.\"                 else
-.\"                         MESSAGE="thinklight disabled"
-.\"                 fi
-.\"                 ;;
-.\"         0x15|0x16)
-.\"                 LEVEL=`sysctl -n dev.acpi_${OEM}.0.volume`
-.\"                 PERCENT=`${ECHO} "${BC_PRECOMMANDS} ; \\
-.\"                         ${LEVEL} / ${MAX_VOLUME} * 100" | \\
-.\"                          ${CALC} | ${CUT} -d . -f 1`
-.\"                 MESSAGE="volume level ${PERCENT}%"
-.\"                 ;;
-.\"         0x17)
-.\"                 LEVEL=`sysctl -n dev.acpi_${OEM}.0.mute`
-.\"                 if [ "$LEVEL" = "1" ]
-.\"                 then
-.\"                         MESSAGE="volume muted"
-.\"                 else
-.\"                         MESSAGE="volume unmuted"
-.\"                 fi
-.\"                 ;;
-.\"         *)
-.\"                 ;;
-.\" esac
-.\" ${LOGGER} ${MESSAGE}
-.\" if [ -p ${DISPLAY_PIPE} ]
-.\" then
-.\"         ${ECHO} ${MESSAGE} >> ${DISPLAY_PIPE} &
-.\" fi
-.\" exit 0
-.\" .Ed
+.Sh EXAMPLES
+The following can be added to
+.Xr devd.conf 5
+in order to pass button events to a
+.Pa /usr/local/sbin/acpi_oem_exec.sh
+script:
+.Bd -literal -offset indent
+notify 10 {
+        match "system"          "ACPI";
+        match "subsystem"       "IBM";
+        action "/usr/local/sbin/acpi_oem_exec.sh $notify ibm";
+};
+.Ed
+.Pp
+A possible
+.Pa /usr/local/sbin/acpi_oem_exec.sh
+script might look like:
+.Bd -literal -offset indent
+#!/bin/sh
+#
+if [ "$1" = "" -o "$2" = "" ]
+then
+        echo "usage: $0 notify oem_name"
+        exit 1
+fi
+NOTIFY=`echo $1`
+LOGGER="logger"
+CALC="bc"
+BC_PRECOMMANDS="scale=2"
+ECHO="echo"
+CUT="cut"
+MAX_LCD_BRIGHTNESS=7
+MAX_VOLUME=14
+OEM=$2
+DISPLAY_PIPE=/tmp/acpi_${OEM}_display
+
+case ${NOTIFY} in
+        0x05)
+                LEVEL=`sysctl -n dev.acpi_${OEM}.0.bluetooth`
+                if [ "$LEVEL" = "1" ]
+                then
+                        sysctl dev.acpi_${OEM}.0.bluetooth=0
+                        MESSAGE="bluetooth disabled"
+                else
+                        sysctl dev.acpi_${OEM}.0.bluetooth=1
+                        MESSAGE="bluetooth enabled"
+                fi
+                ;;
+        0x10|0x11)
+                LEVEL=`sysctl -n dev.acpi_${OEM}.0.lcd_brightness`
+                PERCENT=`${ECHO} "${BC_PRECOMMANDS} ; \\
+                         ${LEVEL} / ${MAX_LCD_BRIGHTNESS} * 100" |\\
+                         ${CALC} | ${CUT} -d . -f 1`
+                MESSAGE="brightness level ${PERCENT}%"
+                ;;
+        0x12)
+                LEVEL=`sysctl -n dev.acpi_${OEM}.0.thinklight`
+                if [ "$LEVEL" = "1" ]
+                then
+                        MESSAGE="thinklight enabled"
+                else
+                        MESSAGE="thinklight disabled"
+                fi
+                ;;
+        0x15|0x16)
+                LEVEL=`sysctl -n dev.acpi_${OEM}.0.volume`
+                PERCENT=`${ECHO} "${BC_PRECOMMANDS} ; \\
+                        ${LEVEL} / ${MAX_VOLUME} * 100" | \\
+                         ${CALC} | ${CUT} -d . -f 1`
+                MESSAGE="volume level ${PERCENT}%"
+                ;;
+        0x17)
+                LEVEL=`sysctl -n dev.acpi_${OEM}.0.mute`
+                if [ "$LEVEL" = "1" ]
+                then
+                        MESSAGE="volume muted"
+                else
+                        MESSAGE="volume unmuted"
+                fi
+                ;;
+        *)
+                ;;
+esac
+${LOGGER} ${MESSAGE}
+if [ -p ${DISPLAY_PIPE} ]
+then
+        ${ECHO} ${MESSAGE} >> ${DISPLAY_PIPE} &
+fi
+exit 0
+.Ed
 .Sh SEE ALSO
 .Xr acpi 4 ,
 .\" .Xr led 4 ,
 .Xr sysctl.conf 5 ,
-.\" .Xr devd 8 ,
+.Xr devd 8 ,
 .Xr sensorsd 8 ,
 .Xr sysctl 8
 .Sh HISTORY
index d56f45d..73855e2 100644 (file)
@@ -25,7 +25,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/acpi_support/acpi_ibm.c,v 1.15 2007/10/25 17:30:18 jhb Exp $
- * $DragonFly: src/sys/dev/acpica5/acpi_thinkpad/acpi_thinkpad.c,v 1.1 2008/08/28 07:10:05 hasso Exp $
+ * $DragonFly: src/sys/dev/acpica5/acpi_thinkpad/acpi_thinkpad.c,v 1.2 2008/10/03 00:47:36 hasso Exp $
  */
 
 /*
@@ -949,8 +949,6 @@ acpi_thinkpad_notify(ACPI_HANDLE h, UINT32 notify, void *context)
                        }
 
                        /* Notify devd(8) */
-                       device_printf(dev, "THINKPAD event: %u\n",
-                           (arg & 0xff));
                        acpi_UserNotify("THINKPAD", h, (arg & 0xff));
                        break;
                default: