|
|
1.1 root 1: .ds ZZ DEVELOPMENT PACKAGE
2: .TH KEYBOARD 3R "630 MTG"
3: .XE "keyboard"
4: .XE "NOPFEXPAND"
5: .XE "NOCURSEXPAND"
6: .XE "NOPADEXPAND"
7: .XE "NOTRANSLATE"
8: .XE "reqkbdID()"
9: .SH NAME
10: keyboard: P->state, SCRLOCKREQD, SCR_LOCK, NOPFEXPAND, NOCURSEXPAND, NOPADEXPAND, NOTRANSLATE, reqkbdID( ) \- per process keyboard states, keyboard ID
11:
12: .SH SYNOPSIS
13: .B #include <dmd.h>
14: .sp
15: .B long P->state;
16: .sp
17: .B void reqkbdID ( )
18:
19: .SH DESCRIPTION
20: .I P->state
21: is the state variable for an application running in the 630
22: MTG.
23: .PP
24: An application can give different interpretations on
25: groups of 630 MTG supported keyboard keys by
26: setting corresponding bits in the process state variable.
27: The groups are Scroll Lock key, programmable function keys, arrow keys,
28: numerical keypad keys, or the whole keyboard. If
29: the bits are not set, when a key is depressed, the
30: keyboard will send to the process the ASCII/hexadecimal code(s) as specified
31: by the \fI630 MTG Terminal User's Guide\fR.
32: An exception is the Scroll Lock key
33: which is a "dead" key (no special processing) if it is not requested
34: and processed by the application itself.
35: .PP
36: If an application program wishes to implement local
37: terminal flow control with the
38: keyboard Scroll Lock key, it must request the use of the Scroll Lock key
39: by setting the \s-1SCRLOCKREQD\s+1 in the state variable as follows:
40: .sp
41: .ft CM
42: .ce
43: P->state |= SCRLOCKREQD;
44: .ft R
45: .PP
46: The application program can then determine if the Scroll Lock key has been
47: depressed by checking the SCR_LOCK bit as follows:
48: .sp
49: .ft CM
50: .ce
51: P->state & SCR_LOCK;
52: .ft R
53: .PP
54: The SCR_LOCK bit is set whenever the Scroll Lock key is depressed. It is
55: automatically cleared by the keyboard when the Scroll Lock key is depressed a second time.
56: .PP
57: The programmable function (PF) keys,
58: when depressed are expanded by default,
59: i.e., the corresponding character strings (minus the \s-1NULL\s+1 character)
60: stored in the non-volatile BRAM memory will be sent to the process as would
61: be typed from the keyboard. If an application prefers to have its own interpretation
62: of the programmable function keys,
63: it is necessary to set a bit in the process state variable:
64: .sp
65: .nf
66: .ft CM
67: .ce
68: P->state |= NOPFEXPAND;
69: .ft R
70: .fi
71: .sp
72: In this case, the keyboard will only send to the process the PF key keycode
73: which is 0x80 for PF key F1, 0x81 for PF key F2, and so forth.
74: .PP
75:
76: If a program wants to interpret the arrow keys without having to parse
77: their entire sequence, it can set a bit in the process state variable:
78: .sp
79: .nf
80: .ft CM
81: .ce
82: P->state |= NOCURSEXPAND;
83: .ft R
84: .fi
85: .sp
86: When an arrow key is then depressed, it will have the value:
87: .sp
88: .DS
89: .TS
90: center, tab(~);
91: lp10 lp10.
92: up arrow~0xE0
93: down arrow~0xE1
94: right arrow~0xE2
95: left arrow~0xE3
96: home key~0xE4
97: .TE
98: .DE
99: .PP
100: If a program wants to have its own interpretation of the numerical
101: keypad keys,
102: it is necessary to set a bit in the process state variable:
103: .sp
104: .ft CM
105: .ce
106: P->state |= NOPADEXPAND;
107: .ft R
108: .sp
109: When a numerical keypad key is then depressed, it will have the value:
110: .sp
111: .DS
112: .TS
113: center, tab(~);
114: lp10 lp10.
115: Enter~0xC0
116: \\=~0xC1
117: *~0xC2
118: /~0xC3
119: +~0xC4
120: 7~0xC5
121: 8~0xC6
122: 9~0xC7
123: -~0xC8
124: 4~0xC9
125: 5~0xCA
126: 6~0xCB
127: ,~0xCC
128: 1~0xCD
129: 2~0xCE
130: 3~0xCF
131: 0~0xD0
132: \\\.~0xD1
133: .TE
134: .DE
135: .PP
136: If a program wants to remap the entire keyboard, it must
137: set a bit in the state variable:
138: .sp
139: .ft CM
140: .ce
141: P->state |= NOTRANSLATE;
142: .ft R
143: .sp
144: The application will then receive from the keyboard the raw keycodes
145: as listed in the \fI630 MTG Terminal User's Guide\fR.
146: Also, the keyboard LEDs will no longer be automatically updated.
147: At this point, calling the
148: .I reqkbdID
149: function will ask the keyboard for its identity (ID).
150: The keyboard will send back its ID and all keys currently depressed,
151: followed again by the ID. Refer to the \f2630 MTG
152: Software Development Guide\f1 for more information.
153:
154: .SH SEE ALSO
155: kbdchar(3R), state(3R), pfkey(3R), resources(3R), setled(3L).
156: .br
157: \fI630 MTG Terminal User's Guide\fR.
158: .br
159: \f2630 MTG Software Development Guide\f1.
160: .SH WARNING
161: If the process has not requested the keyboard (see \fIresources(3r)\fR),
162: all per process keyboard states will be ignored, and the key's
163: ASCII/hexadecimal code(s) as specified in the
164: \fI630 MTG Terminal User's Guide\fR will be
165: sent to the host (if the process is connected) or ignored (if the process
166: runs locally).
167: .PP
168: The exception is the Scroll Lock key which does not require the application
169: to request the whole keyboard. However in order to process that key, the
170: application has to set the SCRLOCKREQD bit in \fIP->state\fR.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.