bd - SunButtons and SunDials STREAMS module
The bd STREAMS module processes the byte streams generated
by the SunButtons buttonbox and SunDials dialbox. The but-
tonbox generates a stream of bytes that encode the identity
and state transition of the buttons. The dialbox generates a
stream of bytes that encode the identity of the dials and
the amount by which they are turned. Both of these streams
are merged together when a host has both a buttonbox and a
dialbox in use at the same time.
SunButtons reports the button number and up/down status
encoded into a one byte message. Byte values from 0xc0 to
0xdf indicate a transition to button down. To obtain the
button number, subtract 0xc0 from the byte value. Byte
values from 0xe0 to 0xff indicate a transition to button up.
To obtain the button number, subtract 0xe0 from the byte
Each dial sample in the byte stream consists of three bytes.
The first byte identifies which dial was turned and the next
two bytes return the delta in signed binary format. When
bound to an application using the window system, Virtual
User Input Device ("VUID") events are generated. An event
from a dial is constrained to lie between 0x80 and 0x87.
A stream with the bd pushed streams module configured in it
can emit firm_events as specified by the protocol of a VUID.
bd understands the
VUIDSFORMAT and VUIDGFORMAT ioctls (see reference below),
as defined in /usr/include/sys/bdio.h and
$OPENWINHOME/include/xview/win_event.h. All other ioctl()
requests are passed downstream.
The bd streams module sets the parameters of the serial port
when it is first opened. No termio(7I) ioctl () requests
should be performed on a bd STREAMS module, as bd expects
the device parameters to remain as it set them.
These are standard VUID ioctls.
The bd streams module implements this ioctl to enable
processes to manipulate the lights on the buttonbox.
The BDIOBUTLITE ioctl must be carried by an I_STR
ioctl to the bd module. For an explanation of I_STR
see streamio(7I). The data for the BDIOBUTLITE ioctl
is an unsigned integer in which each bit represents
the lamp on one button. The macro LED_MAP in
<sys/bdio.h> maps button numbers to appropriate bits.
Source code for the demo program x_buttontest is pro-
vided with the buttons and dials package, and may be
found in the directory /usr/demo/BUTTONBOX. Look at
x_buttontest.c for an example of how to manipulate the
lights on the buttonbox.
bdconfig(1M), ioctl(2), x_buttontest(6), x_dialtest(6),
SunButtons Installation and Programmers Guide
SunDials Installation and Programmers Guide
The SunDials dial box must be used with a serial port.
Man(1) output converted with