1: /* Copyright 1985, Massachusetts Institute of Technology */
2: /* util.c Various utilities
3: *
4: * SoundBell Generate audible bell
5: * SetKeyClick Control key click
6: * SetAutoRepeat Control auto repeat
7: * SetLockLED Control Lock LED
8: * SetVideo Disable/enable video
9: * QueryShape Determine shapes
10: * ResolveColors does nothing
11: * StoreColors does nothing
12: */
13:
14: #include <sys/types.h>
15: #include <vaxuba/qvioctl.h>
16:
17: #include "ddxqvss.h"
18:
19: extern int vsdev;
20:
21: #define LK_REPEAT_ON 0xe3 /* enable autorepeat across kbd */
22: #define LK_REPEAT_OFF 0xe1 /* diable autorepeat across kbd */
23: #define LK_ENABLE_CLICK 0x1b /* enable keyclick / set volume */
24: #define LK_DISABLE_CLICK 0x99 /* disable keyclick entirely */
25: #define LK_ENABLE_BELL 0x23 /* enable bell / set volume */
26: #ifndef LK_RING_BELL /* can go away after 1.2 is out */
27: #define LK_RING_BELL 0xa7 /* command to ring a bell */
28: #define LED_1 0x81 /* led 1 on the keyboard */
29: #define LED_2 0x82 /* led 2 on the keyboard */
30: #define LED_3 0x84 /* led 3 on the keyboard */
31: #define LED_4 0x88 /* led 4 on the keyboard */
32: #define LK_LED_ENABLE 0x13 /* turn on led */
33: #define LK_LED_DISABLE 0x11 /* turn off led */
34: #endif
35:
36: /* Sound bell, volume between 0 (quiet) and 7 (loud) */
37:
38: SoundBell (volume)
39: int volume;
40: {
41: struct qv_kpcmd ioc;
42: volume = volume & 7;
43: volume = 7 - volume;
44:
45: ioc.nbytes = 1;
46: ioc.cmd = LK_ENABLE_BELL;
47: ioc.par[0] = volume;
48: ioctl(vsdev, QIOCKPCMD, &ioc);
49:
50: ioc.nbytes = 0;
51: ioc.cmd = LK_RING_BELL;
52: return(ioctl(vsdev, QIOCKPCMD, &ioc));
53: }
54:
55: /* Set key click, volume between -1 (default), 0 (off) and 8 (loud) */
56:
57: SetKeyClick (volume)
58: int volume;
59: {
60: struct qv_kpcmd ioc;
61: int ret;
62: if(volume < 0) volume = 6;
63: if(volume > 0 ) {
64: volume -= 1;
65: if(volume > 7) volume = 7;
66: volume = 7 - volume;
67:
68: ioc.nbytes = 1;
69: ioc.cmd = LK_ENABLE_CLICK;
70: ioc.par[0] = volume;
71: ret = ioctl(vsdev, QIOCKPCMD, &ioc);
72: }
73: else if(volume == 0) {
74: ioc.nbytes = 0;
75: ioc.cmd = LK_DISABLE_CLICK;
76: ret = ioctl(vsdev, QIOCKPCMD, &ioc);
77: }
78: return(ret);
79: }
80:
81: /* Set autorepeat */
82:
83: SetAutoRepeat (onoff)
84: int onoff;
85: {
86: struct qv_kpcmd ioc;
87: register char *divsets;
88: divsets = onoff ? (char *) AutoRepeatLKMode () : (char *) UpDownLKMode ();
89: ioc.nbytes = 0;
90: while (ioc.cmd = *divsets++)
91: ioctl(vsdev, QIOCKPCMD, &ioc);
92: ioc.cmd = ((onoff > 0) ? LK_REPEAT_ON : LK_REPEAT_OFF );
93: return(ioctl(vsdev, QIOCKPCMD, &ioc));
94: }
95:
96: int SetVideo(onoff)
97: int onoff;
98: {
99: return(0);
100: }
101: QueryShape (shape, width, height)
102: int shape;
103: short *width, *height;
104: {
105: switch (shape) {
106: case CursorShape: /* braindamaged qvss cursor.... */
107: if (*width > 16)
108: *width = 16;
109: if (*height > 16)
110: *height = 16;
111: break;
112: case TileShape:
113: *width = *height = 16;
114: break;
115: }
116: }
117:
118: SetLockLED (onoff)
119: int onoff;
120: {
121: struct qv_kpcmd ioc;
122: if (onoff)
123: ioc.cmd = LK_LED_ENABLE;
124: else
125: ioc.cmd = LK_LED_DISABLE;
126: ioc.par[0] = LED_3;
127: ioc.par[1] = 0;
128: ioc.nbytes = 1;
129: ioctl(vsdev, QIOCKPCMD, &ioc);
130: return;
131: }
132:
133: ResolveColor (red, green, blue)
134: unsigned short *red, *green, *blue;
135: {
136: }
137:
138: StoreColors (count, entries)
139: int count;
140: ColorDef *entries;
141:
142: {
143: }
Defined functions
Defined macros
LED_1
defined in line
28;
never used
LED_2
defined in line
29;
never used
LED_3
defined in line
30; used 1 times
LED_4
defined in line
31;
never used