Document revision date: 30 March 2001
|
|
|
|
OpenVMS RTL Screen Management (SMG$) Manual
SMG$SET_DEFAULT_STATE
The Set Default State routine sets and/or returns the current default
state for a key table.
Format
SMG$SET_DEFAULT_STATE key-table-id [,new-state] [,old-state]
RETURNS
OpenVMS usage: |
cond_value |
type: |
longword (unsigned) |
access: |
write only |
mechanism: |
by value |
Arguments
key-table-id
OpenVMS usage: |
identifier |
type: |
longword (unsigned) |
access: |
read only |
mechanism: |
by reference |
Specifies the key table in which you are setting or inquiring about a
default state. The key-table-id argument is the
address of an unsigned longword that contains the key table identifier.
The key table identifier is returned by the SMG$CREATE_KEY_TABLE
routine.
new-state
OpenVMS usage: |
char_string |
type: |
character string |
access: |
read only |
mechanism: |
by descriptor |
Specifies the new default state for the entire key table. The
new-state argument is the address of a descriptor
pointing to the new state string. The specified state name is converted
to uppercase and stripped of trailing blanks before use.
old-state
OpenVMS usage: |
char_string |
type: |
character string |
access: |
write only |
mechanism: |
by descriptor |
Receives the existing default state name of the specified key
definition table. The old-state argument is the
address of a descriptor pointing to the string into which the old state
string is written.
Description
SMG$SET_DEFAULT_STATE sets and/or returns the default state name for an
entire key definition table. By changing the default state for an
entire key definition table, you can use the keypad keys for a new set
of functions. You can use the key definition table with the
SMG$READ_COMPOSED_LINE routine.
Condition Values Returned
SS$_NORMAL
|
Normal successful completion.
|
SMG$_INVKTB_ID
|
Invalid
key-table-id.
|
SMG$_INVSTANAM
|
Invalid state name.
|
LIB$_INVSTRDES
|
Invalid string descriptor.
|
SMG$SET_DISPLAY_SCROLL_REGION
The Create Display Scrolling Region routine creates a virtual scrolling
region in a virtual display.
Format
SMG$SET_DISPLAY_SCROLL_REGION display-id [,start-row] [,end-row]
RETURNS
OpenVMS usage: |
cond_value |
type: |
longword (unsigned) |
access: |
write only |
mechanism: |
by value |
Arguments
display-id
OpenVMS usage: |
identifier |
type: |
longword (unsigned) |
access: |
read only |
mechanism: |
by reference |
Specifies the virtual display in which scrolling takes place. The
display-id argument is the address of an unsigned
longword that contains the display identifier.
The display identifier is returned by SMG$CREATE_VIRTUAL_DISPLAY.
start-row
OpenVMS usage: |
longword_signed |
type: |
longword (signed) |
access: |
read only |
mechanism: |
by reference |
Specifies the first line of the virtual scrolling region. The
start-row argument is the address of a signed longword
that contains the starting line number. If omitted, the first line of
the display is used.
end-row
OpenVMS usage: |
longword_signed |
type: |
longword (signed) |
access: |
read only |
mechanism: |
by reference |
Specifies the last line of the virtual scrolling region. The
end-row argument is the address of a signed longword
that contains the ending line number. If omitted, the last line of the
virtual display is used.
Description
SMG$SET_DISPLAY_SCROLL_REGION creates a virtual scrolling region in a
specified virtual display, using the specified starting and ending
lines. If the start-row and end-row
arguments are omitted, the entire display becomes a scrolling region.
This routine does not change the appearance of the pasteboard or the
virtual cursor position.
You can define part or all of a virtual display as scrolling using
SMG$SET_DISPLAY_SCROLL_REGION. The behavior of scrolling in the Screen
Management Facility is as follows: When you call SMG$PUT_LINE to write
to the bottom line of the scroll region, the display does not scroll up
immediately. If the display scrolled up immediately, it never would be
possible to use the bottom line of the scroll region. Instead, the need
for a scroll is "stored" until you issue the next
SMG$PUT_LINE call. (The need for a scroll is stored only until your
next call to a whole-line write routine, such as SMG$PUT_LINE,
SMG$PUT_LINE_WIDE, and so on.)
If you call another routine after SMG$PUT_LINE, such as
SMG$SET_CURSOR_ABS or SMG$PUT_CHARS, the stored need for a scroll will
be discarded and text written to the bottom line of the scrolling
region will overwrite the existing line.
Condition Values Returned
SS$_NORMAL
|
Normal successful completion.
|
SMG$_INVARG
|
The
end-row argument is less than or equal to
start-row.
|
SMG$_INVDIS_ID
|
Invalid
display-id.
|
SMG$_INVROW
|
Invalid row.
|
SMG$_WRONUMARG
|
Wrong number of arguments.
|
SMG$SET_KEYPAD_MODE
The Set Keypad Mode routine sets the terminal's numeric keypad to
either numeric or applications mode.
Format
SMG$SET_KEYPAD_MODE keyboard-id ,flags
RETURNS
OpenVMS usage: |
cond_value |
type: |
longword (unsigned) |
access: |
write only |
mechanism: |
by value |
Arguments
keyboard-id
OpenVMS usage: |
identifier |
type: |
longword (unsigned) |
access: |
read only |
mechanism: |
by reference |
Specifies the virtual keyboard whose mode is to be changed. The
keyboard-id argument is the address of an unsigned
longword that contains the keyboard identifier.
The keyboard identifier is returned by SMG$CREATE_VIRTUAL_KEYBOARD.
flags
OpenVMS usage: |
mask_longword |
type: |
longword (unsigned) |
access: |
read only |
mechanism: |
by reference |
Optional bit mask that specifies whether the keypad is to be in
applications or numeric mode. The flags argument is
the address of an unsigned longword that contains the flag. Valid
values for flags are as follows:
0
|
Keypad is set to numeric mode.
|
SMG$M_KEYPAD_APPLICATION
|
Keypad is set to applications mode.
|
Description
SMG$SET_KEYPAD_MODE sets the terminal's numeric keypad to either
numeric or applications mode. In applications mode, numeric keypad keys
are considered function keys and may be used as terminators. In numeric
mode, these keys are equivalent to the corresponding keys on the main
keyboard.
If the terminal does not support applications keypad mode, this routine
has no effect.
Condition Values Returned
SS$_NORMAL
|
Normal successful completion.
|
SMG$_INVKBD_ID
|
Invalid
keyboard-id.
|
SMG$_WRONUMARG
|
Wrong number of arguments.
|
SMG$SET_OUT_OF_BAND_ASTS
The Set Out-of-Band ASTs routine either enables or disables the
trapping of out-of-band control characters.
Format
SMG$SET_OUT_OF_BAND_ASTS pasteboard-id,control-character-mask
,AST-routine [,AST-argument]
RETURNS
OpenVMS usage: |
cond_value |
type: |
longword (unsigned) |
access: |
write only |
mechanism: |
by value |
Arguments
pasteboard-id
OpenVMS usage: |
identifier |
type: |
longword (unsigned) |
access: |
read only |
mechanism: |
by reference |
Specifies the pasteboard for which out-of-band characters are enabled
or disabled. The pasteboard-id argument is the address
of an unsigned longword that contains the pasteboard identifier.
The pasteboard identifier is returned by SMG$CREATE_PASTEBOARD.
control-character-mask
OpenVMS usage: |
mask_longword |
type: |
longword (unsigned) |
access: |
read only |
mechanism: |
by reference |
Specifies which control characters are to be the new out-of-band
control characters. The control-character-mask
argument is the address of an unsigned longword that contains the mask.
Create this mask by setting the bit that corresponds to the ASCII value
of the desired character. For example, to specify that Ctrl/C (ASCII
value 3) is an out-of-band control character, set bit 3 (value 8) in
the control-character-mask. If no bits are set in this
mask, then no out-of-band ASTs occur. For more information, see the
OpenVMS I/O User's Reference Manual.
AST-routine
OpenVMS usage: |
ast_procedure |
type: |
procedure value |
access: |
read only |
mechanism: |
by value |
The address of an AST routine to be called when an out-of-band control
character is typed at the terminal. The AST-routine
argument is the routine's procedure value.
AST-argument
OpenVMS usage: |
user_arg |
type: |
longword (unsigned) |
access: |
read only |
mechanism: |
by value |
The argument you supply to the AST. AST-argument is an
unsigned longword that contains the value to be passed to the AST
routine. However, the AST routine may also need to determine the
out-of-band character and the pasteboard-id at which
it was typed. Therefore, the Screen Management Facility creates a
three-longword structure to hold this information and passes the
address of this structure as the first argument to the AST routine. The
remaining four arguments are R0, R1, PC, and PSL (on VAX systems) or PS
(on Alpha systems). The Screen Management Facility stores the argument
you supply in this structure.
The first longword contains the pasteboard-id and has
the symbolic name SMG$L_PBD_ID. The second longword contains the
AST-argument and has the symbolic name SMG$L_USER_ARG.
The third longword contains the ASCII value of the out-of-band
character typed and can be accessed by way of two symbolic names:
SMG$B_CHAR (the low-order byte containing the ASCII value), and
SMG$L_CHAR (the longword containing the ASCII value in the low-order
byte and spaces in the high-order bytes).
Description
SMG$SET_OUT_OF_BAND_ASTS enables or disables the acceptance of
out-of-band control characters at the specified terminal. If one of
these characters is typed at the terminal, the AST routine is called.
This routine can be used to trap out-of-band characters, such as
Ctrl/C, Ctrl/Y, and Ctrl/O.
Condition Values Returned
SS$_NORMAL
|
Normal successful completion.
|
SMG$_INVPAS_ID
|
Invalid
pasteboard-id.
|
SMG$_WRONUMARG
|
Wrong number of arguments.
|
Example
|
!+
! This BASIC example demonstrates the use of
! SMG$SET_OUT_OF_BAND_ASTS.
!-
OPTION TYPE = EXPLICIT
OPTION CONSTANT TYPE = INTEGER
%INCLUDE "$smgdef" %FROM %LIBRARY "sys$library:basic$starlet"
%INCLUDE "$ssdef" %FROM %LIBRARY "sys$library:basic$starlet"
EXTERNAL LONG FUNCTION smg$create_pasteboard, &
smg$create_virtual_keyboard, &
smg$set_out_of_band_asts
EXTERNAL LONG out_band_routine
DECLARE LONG s, pasteboard_id, keyboard_id, ctrl_mask
ctrl_mask = (2%**smg$k_trm_ctrlc) + (2%**smg$k_trm_ctrlw) + &
(2%**smg$k_trm_ctrlz)
s = smg$create_pasteboard (pasteboard_id)
IF s <> ss$_normal THEN CALL lib$signal(s) END IF
s = smg$create_virtual_keyboard (keyboard_id)
IF s <> ss$_normal THEN CALL lib$signal(s) END IF
s = smg$set_out_of_band_asts (pasteboard_id, &
ctrl_mask, &
LOC(out_band_routine) BY VALUE, &
keyboard_id BY VALUE)
IF s <> ss$_normal THEN CALL lib$signal(s) END IF
SLEEP(60)
END
SUB out_band_routine(smg$r_out_of_band_table smg_info, &
LONG r0, LONG r1, LONG pc, LONG psl)
OPTION TYPE = EXPLICIT
%INCLUDE "$smgdef" %FROM %LIBRARY "sys$library:basic$starlet"
%INCLUDE "$ssdef" %FROM %LIBRARY "sys$library:basic$starlet"
EXTERNAL LONG FUNCTION smg$repaint_screen, &
smg$set_keypad_mode
DECLARE LONG s, keypad_mode
IF smg_info::smg$b_char = smg$k_trm_ctrlc
THEN
PRINT "Ctrl/C typed"
END IF
IF smg_info::smg$b_char = smg$k_trm_ctrlz
THEN
PRINT "Ctrl/Z typed"
STOP
END IF
IF smg_info::smg$b_char = smg$k_trm_ctrlw
THEN
s = smg$repaint_screen (smg_info::smg$l_pbd_id)
IF s <> ss$_normal THEN CALL lib$signal(s) END IF
keypad_mode = smg$m_keypad_application
s = smg$set_keypad_mode (smg_info::smg$l_user_arg, keypad_mode)
IF s <> ss$_normal THEN CALL lib$signal(s) END IF
END IF
SUBEND
|
SMG$SET_PHYSICAL_CURSOR
The Set Cursor on Physical Screen routine moves the physical cursor to
the specified position on the pasteboard.
Format
SMG$SET_PHYSICAL_CURSOR pasteboard-id ,pasteboard-row ,pasteboard-column
RETURNS
OpenVMS usage: |
cond_value |
type: |
longword (unsigned) |
access: |
write only |
mechanism: |
by value |
Arguments
pasteboard-id
OpenVMS usage: |
identifier |
type: |
longword (unsigned) |
access: |
read only |
mechanism: |
by reference |
Specifies the pasteboard whose physical cursor is to move. The
pasteboard-id argument is the address of an unsigned
longword that contains the pasteboard identifier.
The pasteboard identifier is returned by SMG$CREATE_PASTEBOARD.
pasteboard-row
OpenVMS usage: |
longword_signed |
type: |
longword (signed) |
access: |
read only |
mechanism: |
by reference |
Specifies the row to which the physical cursor moves. The
pasteboard-row argument is the address of a signed
longword that contains the row number.
pasteboard-column
OpenVMS usage: |
longword_signed |
type: |
longword (signed) |
access: |
read only |
mechanism: |
by reference |
Specifies the column to which the physical cursor moves. The
pasteboard-column argument is the address of a signed
longword that contains the column number.
Description
SMG$SET_PHYSICAL_CURSOR moves the physical cursor to the specified row
and column position on the specified pasteboard. This routine should
not be used when pasteboard batching is in effect.
Condition Values Returned
SS$_NORMAL
|
Normal successful completion.
|
SMG$_INVARG
|
Invalid column.
|
SMG$_INVPAS_ID
|
Invalid
pasteboard-id.
|
SMG$_WRONUMARG
|
Wrong number of arguments.
|
SMG$SET_TERM_CHARACTERISTICS
The Change Terminal Characteristics routine changes or retrieves the
terminal characteristics for a given pasteboard.
Format
SMG$SET_TERM_CHARACTERISTICS pasteboard-id
[,on-characteristics1]
[,on-characteristics2] [,off-characteristics1] [,off-characteristics2]
[,old-characteristics1] [,old-characteristics2] [,on-characteristics3]
[,off-characteristics3] [,old-characteristics3]
RETURNS
OpenVMS usage: |
cond_value |
type: |
longword (unsigned) |
access: |
write only |
mechanism: |
by value |
Arguments
pasteboard-id
OpenVMS usage: |
identifier |
type: |
longword (unsigned) |
access: |
read only |
mechanism: |
by reference |
Specifies the pasteboard whose characteristics are to be changed or
retrieved. The pasteboard-id argument is the address
of an unsigned longword that contains the pasteboard identifier.
The pasteboard identifier is returned by SMG$CREATE_PASTEBOARD.
on-characteristics1
OpenVMS usage: |
mask_longword |
type: |
longword (unsigned) |
access: |
read only |
mechanism: |
by reference |
Bit mask that specifies the terminal characteristics to be set from
$TTDEF. The on-characteristics1 argument is the
address of an unsigned longword that contains the bit mask.
on-characteristics2
OpenVMS usage: |
mask_longword |
type: |
longword (unsigned) |
access: |
read only |
mechanism: |
by reference |
Bit mask that specifies the terminal characteristics to be set from
$TT2DEF. The on-characteristics2 argument is the
address of an unsigned longword that contains the bit mask.
off-characteristics1
OpenVMS usage: |
mask_longword |
type: |
longword (unsigned) |
access: |
read only |
mechanism: |
by reference |
Bit mask that specifies the terminal characteristics to be reset from
$TTDEF. The off-characteristics1 argument is the
address of an unsigned longword that contains the bit mask.
off-characteristics2
OpenVMS usage: |
mask_longword |
type: |
longword (unsigned) |
access: |
read only |
mechanism: |
by reference |
Bit mask that specifies the terminal characteristics to be reset from
$TT2DEF. The off-characteristics2 argument is the
address of an unsigned longword that contains the bit mask.
old-characteristics1
OpenVMS usage: |
mask_longword |
type: |
longword (unsigned) |
access: |
write only |
mechanism: |
by reference |
Retrieves the current terminal characteristics in the first group. The
old-characteristics1 argument is the address of an
unsigned longword that contains the bit mask.
old-characteristics2
OpenVMS usage: |
mask_longword |
type: |
longword (unsigned) |
access: |
write only |
mechanism: |
by reference |
Retrieves the current terminal characteristics in the second group. The
old-characteristics2 argument is the address of an
unsigned longword that contains the bit mask.
on-characteristics3
OpenVMS usage: |
mask_longword |
type: |
longword (unsigned) |
access: |
read only |
mechanism: |
by reference |
Bit mask that specifies the terminal characteristics to be set from
$TT3DEF. The on-characteristics3 argument is the
address of an unsigned longword that contains the bit mask.