Each input device requires a specific block of information that is
contiguous with the end of the common UCB input extension. The specific
device extension information starts at address B816
(18410). This section describes the DWI keyboard input
extension structure that is shown in Figure A-8 starting at
DWI$L_KB_LAST_CHAR (18410). Table A-7 lists and defines
the fields of the DECwindows UCB keyboard input extension.
UCB class driver section field UCB$L_DECW_I_DWI points to the DWI
common input extension starting address. Note that field
UCB$L_TT_WFLINK is overwritten and redefined as UCB$L_DECW_I_DWI when
macro $DECWINPUTUCB creates the DECwindows extension. The common DWI
extension length is specified as B816 (18410) by
DWI$K_DECW_COMMON_LENGTH and the keyboard extension length is specified
as 11416 (27610) by DWI$K_KB_LENGTH.
Table A-7 UCB/DECwindows Keyboard Input Extension Fields
Field Name |
Contents |
DWI$L_KB_LAST_CHAR
|
Defines the last input character.
|
DWI$L_KB_AUTORTIME
|
Defines the autorepeat time (metronome) in milliseconds.
|
DWI$L_KB_LIGHTS
|
Defines the keyboard lights (LEDs).
|
DWI$L_KB_CTRL
|
Contains the status input flags using macro $VIELD from the controller
CSR. Mask flag bits in this field correspond to ten possible states:
FLAG$V_SHIFT
|
Bit 0 defines the state of the Shift key.
|
FLAG$V_LOCK
|
Bit 1 defines the state of the Lock key.
|
FLAG$V_CTRL
|
Bit 2 defines the state of the Ctrl key.
|
FLAG$V_BUTTONDOWN
|
Bit 3 indicates that a mouse button down transition occurred.
|
FLAG$V_LOCKDOWN
|
Bit 4 defines the up/down state of the lock key.
|
FLAG$V_AUTOREPEAT
|
Bit 5 indicates that the software autorepeat timer is enabled/disabled.
|
|
||
FLAG$V_UART_KEYBOARD
|
Bit 6 indicates that the serial port (UART) for the keyboard is
enabled/disabled.
|
FLAG$V_PMOUSE
|
Bit 7 indicates that the pseudomouse mode is enabled/disabled.
|
FLAG$V_AUTOREPEAT_OFF
|
Bit 8 is the global autorepeat flag. A value of 0 indicates the
autorepeat mode, a value of 1 indicates the up/down mode with no keys
in autorepeat.
|
FLAG$V_MAIN_KB_UPDOWN
|
Bit 9 indicates the up/down mode for the main keyboard.
|
|
DWI$B_KB_OPWIN_KEY
|
Specifies the primary key to invoke the operator window.
|
DWI$B_KB_OPWIN_MOD
|
Defines the modifier key (Ctrl or Shift) used with the primary key to
invoke the operator window.
|
DWI$B_KB_HOLD_KEY
|
Specifies the primary key to invoke the hold-screen mode.
|
DWI$B_KB_HOLD_MOD
|
Defines the modifier key (Ctrl or Shift) used with the primary key to
invoke the hold-screen mode.
|
DWI$B_KB_KEYCLICK_VOL
|
Defines the keyclick volume.
|
DWI$B_KB_BELL_VOL
|
Defines the bell volume.
|
DWI$T_KB_DOWNONLY
|
Starting address of the 32-byte down-only key transition buffer for all
LK201 key codes.
|
DWI$T_KB_AUTOREPEAT
|
Starting address of the software autorepeat flag buffer for all LK201
key codes.
|
DWI$T_KB_KEYDOWN
|
Starting address of the 32-byte current key down transition buffer for
all LK201 key codes.
|
DWI$B_KB_PMOUSE_KEY
|
Defines the primary key to invoke the pseudomouse mode.
|
DWI$B_KB_PMOUSE_MOD
|
Defines the modifier key (Ctrl or Shift) used with the primary key to
invoke pseudomouse mode.
|
DWI$L_FIRST_OUTPUT_UCB
|
Defines the first output device connected.
|
DWI$L_KB_PMOUSE_METRO
|
Counter for the autorepeat pseudomouse.
|
DWI$L_KB_PMOUSE_LATCH
|
Defines the keyboard keys for the pseudomouse buttons/latches. To
simulate a button hold down for the keyboard user, a latch key is
provided with each mouse-button key. Within the longword, four bytes
define the latch keys corresponding to the simulated mouse buttons as
follows:
DWI$B_PMOUSE_LATCH1
|
Defines the keyboard key (raw key code) to latch the MB1 key.
|
DWI$B_PMOUSE_LATCH2
|
Defines the keyboard key (raw key code) to latch the MB2 key.
|
DWI$B_PMOUSE_LATCH3
|
Defines the keyboard key (raw key code) to latch the MB3 key.
|
DWI$B_PMOUSE_LATCH_SAVE
|
Defines the keyboard key (raw key code) that is currently latched.
|
|
Each input device requires a specific block of information that is
contiguous with the end of the common UCB input extension. The specific
device extension information starts at address B816
(18410). This section describes the DWI pointer input
extension structure for mouse device information that is shown in
Figure A-9 starting at DWI$L_PTR_DECODE_RTN (18410).
Table A-8 lists and defines the fields of the DECwindows UCB
pointer input extension.
UCB class driver section field UCB$L_DECW_I_DWI points to the DWI
common input extension starting address. Note that field
UCB$L_TT_WFLINK is overwritten and redefined as UCB$L_DECW_I_DWI when
macro $DECWINPUTUCB creates the DECwindows extension. The common DWI
extension length is specified as B816 (18410) by
DWI$K_DECW_COMMON_LENGTH and the pointer extension length is specified
as 11C16 (28410) by DWI$K_PTR_LENGTH.
Table A-8 UCB/DECwindows Pointer Input Extension Fields
Field Name |
Contents |
DWI$L_PTR_DECODE_RTN
|
Points to the specific decoding routine for the serial data.
|
DWI$L_PTR_CTRL
|
Contains the pointing device status input flags by way of macro $VIELD
from the controller CSR. Mask flag bits in this field correspond to
five possible states:
FLAG$V_QUAD_MOUSE
|
Bit 0 specifies that a QV mouse
1 is connected.
|
FLAG$V_SERIAL_MOUSE
|
Bit 1 specifies that a serial mouse is connected.
|
FLAG$V_SERIAL_TABLET
|
Bit 2 specifies that a serial tablet is connected.
|
|
||
FLAG$V_STYLUS
|
Bit 3 specifies that a stylus is connected.
|
FLAG$V_MOTION_COMP
|
Bit 4 indicates the pointer motion compression mode.
|
|
DWI$F_PTR_TABLET_XRATIO
|
Pointer to the tablet
x-ratio array.
|
DWI$F_PTR_TABLET_YRATIO
|
Pointer to the tablet
y-ratio array.
|
DWI$W_PTR_NEWBUT
|
Contains the new button status.
|
DWI$W_PTR_OLDBUT
|
Contains the old button status.
|
DWI$W_PTR_BUT_STATUS
|
Current button status.
|
DWI$W_PTR_BUTTONS
|
Button status in raw format.
|
DWI$W_PTR_TABLET_XPIX
|
Defines the tablet/stylus
x position.
|
DWI$W_PTR_TABLET_YPIX
|
Defines the tablet/stylus
y position.
|
DWI$B_PTR_SIZE
|
Defines the number of bytes for every pointer report.
|
DWI$B_PTR_COUNT
|
Defines the byte count of the pointer data buffer.
|
DWI$B_PTR_MAP_ARRAY
|
Starting address of the 32-byte pointer mapping array.
|
DWI$B_BUT_NUM
|
Defines the number of buttons mapped.
|
DWI$B_PTR_DELTA_X
|
Defines the change in
x position.
|
DWI$B_PTR_DELTA_Y
|
Defines the change in
y position.
|
DWI$T_PTR_BUFFER
|
Starting address of the 10-byte pointer data buffer.
|
DWI$B_PTR_QUAD_CNT
|
Contains the byte count for a QV mouse.
1
|
DWI$L_PTR_KEYBOARD_UCB
|
Points to the keyboard UCB when there is no output device.
|
DWI$W_PTR_ACCEL_NUM
|
Defines the pointer acceleration table numerator.
|
DWI$W_PTR_ACCEL_DEN
|
Defines the pointer acceleration table denominator.
|
DWI$W_PTR_ACCEL_THR
|
Defines the pointer acceleration threshold.
|
DWI$L_PTR_MOTION_COMP_HIT
|
Defines the count of motion compression hits that indicates the number
of lost pointer-motion events stored in the motion history buffer.
|
A unit control block (UCB) data structure is a variable-length block in
the I/O database that describes the characteristics of a single device.
The driver loading procedure creates some static fields. VMS and device
drivers can read and modify all nonstatic fields of the UCB.
The system section of the terminal driver UCB contains the fields of
the UCB that are present in all of the UCBs on the system. The length
of the system UCB is defined by UCB$K_LENGTH.
The common output extension of the UCB contains fields that are
required by all DECwindows output drivers. These fields have names of
the form UCB$x_DECW_fieldname, where x
denotes the field size and fieldname is the name of the field.
The UCB$K_DECW_COMMON_LENGTH constant defines the length of the common
output extension.
The output-device-specific extension of the UCB contains fields that
both the output driver and the device must access. These fields have
names of the form UCB$x_zz_fieldname, where
x denotes the field size, where zz sometimes implies
the controller type, and fieldname is the name of the field.
A DECwindows output device UCB includes a DECwindows common output
extension (DECW) to the main system UCB. This section describes the
structure of the UCB/DECW common output extension (see Figure A-11).
The main system UCB is described in the OpenVMS VAX Device Support Reference Manual. Table A-9
lists and defines the fields of the DECwindows UCB common output
extension.
The output extension is created by macro $DECWOUTPUTUCB (invoked by
$DECWGBL) and follows the system base UCB starting at symbolic offset
UCB$K_LENGTH. The output common extension length is defined by
UCB$K_DECW_COMMON_LENGTH.
Table A-9 UCB/DECwindows Common Output Extension Fields
Field Name |
Contents |
UCB$L_DECW_OUTPUT_VECTOR
|
Address of the output vector table.
|
UCB$L_DECW_DVI
|
Pointer to the DVI.
|
UCB$L_DECW_KB_UCB
|
Address of the keyboard UCB.
|
UCB$L_DECW_PTR_UCB
|
Address of the mouse UCB.
|
UCB$L_DECW_CSR
|
Address of the monitor Control and Status Register (CSR).
|
UCB$L_DECW_TIMER
|
Contains the vertical synchronization (VSYNC) timer value (16.6
milliseconds to zero).
|
UCB$L_DECW_SCRSAV_TIMEOUT
|
Defines the screen saver timeout period.
|
UCB$L_DECW_CTRL
|
Defines the control/status field for workstation configuration
information. Bits in this longword field specify the workstation
configuration as follows:
FLAG$V_SCRSAV_ON
|
Bit 0, set if screen saver is active.
|
FLAG$V_RESET_SCRSAV
|
Bit 1 is set to reset screen saver.
|
FLAG$V_RELOAD_DONE
|
Bit 2, set when driver is reloaded.
|
FLAG$V_CONSOLE
|
Bit 3, set when console is available for this device.
|
FLAG$V_OPWIN_ACTIVE
|
Bit 4, set when the operator window is active. (Check operator
reference count for 0 and expected F2 key.)
|
|
||
FLAG$V_CTRL_INIT_SUCCESS
|
Bit 5, set when controller initialization completes successfully.
|
FLAG$V_CURSOR_OFF_SCREEN
|
Bit 6, set if cursor is on another screen.
|
FLAG$V_REFRESH_CURSOR
|
Bit 7, set when cursor is off top or left of screen and needs to be
redrawn on the VAXstation II monochrome screen.
|
FLAG$V_CURSOR_BOUNDED
|
Bit 8, set to hold cursor in a confinement region defined by
UCB$W_DECW_X1_BOUNDRY. UCB$W_DECW_Y1_BOUNDRY, UCB$W_DECW_X2_BOUNDRY,
and UCB$W_DECW_Y2_BOUNDRY.
|
|
UCB$L_DECW_CURSOR_PATTERN
|
Address of cursor pattern bits.
|
UCB$L_DECW_WAIT_FLINK
|
Defines the forward link in the I/O request packet (IRP) wait list
(during first system initialization only).
|
UCB$L_DECW_WAIT_BLINK
|
Defines the backward link in the IRP wait list (during first system
initialization only).
|
UCB$L_DECW_VSYNC_INTERVAL
|
Defines the VSYNC interval in milliseconds.
|
UCB$L_DECW_HW_PTR_UCB
|
Address of the pointing device UCB on this workstation.
|
UCB$L_DECW_HW_KB_UCB
|
Address of the keyboard UCB on this workstation.
|
UCB$L_DECW_ATTACHED_FLINK
|
Defines the forward link in the list of attached screens.
|
UCB$L_DECW_ATTACHED_BLINK
|
Defines the backward link in the list of attached screens.
|
UCB$W_DECW_NEG_VSYNC_MS
|
Contains the negated VSYNC interval in milliseconds.
|
UCB$W_DECW_SNIFF_STYLE
|
Defines the cursor style that is checked at every sniff cycle. A value
of 0 defines a black cursor, a value of 1 defines a white cursor, and a
value of 2 defines a two-plane (black outlined) cursor.
|
UCB$W_DECW_SNIFF_CYCLE
|
The sniff cycle defines the interval (the number of vertical SYNCs for
VAXstation II, black and white only) at which the hotspot and cursor
characteristics are checked. Typically, the cursor characteristics are
checked on every tenth vertical SYNC. A value of 10 selects every tenth
vertical SYNC as the sniff cycle.
|
UCB$W_DECW_CURSOR_X
|
Defines the current cursor
x position.
|
UCB$W_DECW_CURSOR_Y
|
Defines the current cursor
y position.
|
UCB$W_DECW_CURSOR_XOFF
|
Defines the current cursor
x position offset.
|
UCB$W_DECW_CURSOR_YOFF
|
Defines the current cursor
y position offset.
|
UCB$W_DECW_MAX_X
|
Defines the maximum
x position of the screen (minus one).
|
UCB$W_DECW_MAX_Y
|
Defines the maximum
y position of the screen (minus one).
|
UCB$W_DECW_MAXCURS_X
|
Address of the maximum
x-coordinate of the cursor.
|
UCB$W_DECW_MAXCURS_Y
|
Address of the maximum
y-coordinate of the cursor.
|
UCB$W_DECW_SCRSAV_CYCLE
|
Defines the screen saver cycle count.
|
UCB$W_DECW_CURSOR_LENGTH
|
Defines the cursor pattern length.
|
UCB$W_DECW_RED_CURSOR
|
Three words defining the red foreground, red background, and hotspot.
|
UCB$W_DECW_GREEN_CURSOR
|
Three words defining the green foreground, background, and hotspot.
|
UCB$W_DECW_BLUE_CURSOR
|
Three words defining the blue foreground, background, and hotspot.
|
UCB$B_DECW_LAST_X
|
Defines the previous cursor
x position.
|
UCB$B_DECW_LAST_Y
|
Defines the previous cursor
y position.
|
UCB$B_DECW_SCRSAV_LIGHTS
|
Defines the active keyboard lights during screen save.
|
UCB$L_DECW_ABOVE
|
UCB of screen above this one.
|
UCB$L_DECW_BELOW
|
UCB of screen below this one.
|
UCB$L_DECW_ONRIGHT
|
UCB of screen to the right of this one.
|
UCB$L_DECW_ONLEFT
|
UCB of screen to the left of this one.
|
UCB$L_DECW_SCREEN_INFO
|
Defines the screen information passed to the server.
|
UCB$W_DECW_CURS_WIDTH
|
Defines the cursor width boundary for hotspot location checking.
|
UCB$W_DECW_CURS_HEIGHT
|
Defines the cursor height boundary for hotspot location checking.
|
UCB$L_DECW_INTLK_FLAGS
|
Defines the interlock control/status field for fork queue
entry/synchronization between drivers and server. Bits in this longword
field specify the fork queue as follows:
FLAG$V_ON_FORK_QUEUE
|
Bit 0, set if the device UCB is queued in the fork block.
|
|
UCB$W_DECW_X1_BOUNDRY
|
Defines the left screen boundary of the cursor confinement region on the
x-axis.
|
UCB$W_DECW_X2_BOUNDRY
|
Defines the right screen boundary of the cursor confinement region on
the
x-axis.
|
UCB$W_DECW_Y1_BOUNDRY
|
Defines the top screen boundary of the cursor confinement region on the
y-axis.
|
UCB$W_DECW_Y2_BOUNDRY
|
Defines the bottom screen boundary of the cursor confinement region on
the
y-axis.
|