HP OpenVMS Systems Documentation

Content starts here

VMS DECwindows Device Driver Manual


Previous Contents Index

A.6.2 UCB/DECwindows Keyboard Input Extension (DWI)

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.

Figure A-8 UCB/DECwindows Keyboard Input Extension


4735DWIKBSTRUCT.TEX

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.

1read only fields

A.6.3 UCB/DECwindows Pointer Input Extension (DWI)

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.

Figure A-9 UCB/DECwindows Pointer Input Extension


4735DWIPTRSTRUCT.TEX

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.

1QV mouse is an older version pointing device (model VS10X--EA).

A.7 Unit Control Block for Output Device

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 general UCB structure for an output device for DECwindows is shown in Figure A-10. It contains three sections: the system section (base UCB), the DECwindows common output extension, and the DECwindows output device-specific extension.

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.

Figure A-10 Unit Control Block Output Device General Structure


A.7.1 UCB/DECwindows Common Output Extension (UCB/DECW)

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.

Figure A-11 UCB/DECwindows Common Output Extension


4735DECWSTRUCT.TEX

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.

1read only fields


Previous Next Contents Index