1: #include <X/mit-copyright.h> 2: 3: /* Copyright Massachusetts Institute of Technology 1985 */ 4: 5: #ifndef lint 6: static char *rcsid_xset_c = "$Header: xset.c,v 10.9 86/02/01 16:04:00 tony Rel $"; 7: #endif 8: 9: #include <X/Xlib.h> 10: #include <sys/types.h> 11: #include <stdio.h> 12: #include <netdb.h> 13: #include <netinet/in.h> 14: #include <strings.h> 15: 16: #define TRUE 1 17: #define FALSE 0 18: 19: main(argc, argv) 20: int argc; 21: char **argv; 22: { 23: char *disp = NULL; 24: register char *arg; 25: register int i; 26: int click, repeat, lock, bell, acc, thresh, video, timeout, cycle; 27: int doclick = FALSE, dorepeat = FALSE, dolock = FALSE; 28: int dobell = FALSE, domouse = FALSE, dosaver = FALSE; 29: int pixels[512]; 30: caddr_t colors[512]; 31: int numpixels = 0; 32: Color def; 33: 34: if (argc == 1) usage(argv[0]); 35: 36: for (i = 1; i < argc; ) { 37: arg = argv[i]; 38: i++; 39: if (strcmp(arg, "-c") == 0 || strcmp(arg, "-click") == 0) { 40: click = 0; 41: doclick = TRUE; 42: } else if (strcmp(arg, "c") == 0 || strcmp(arg, "click") == 0) { 43: click = 6; 44: doclick = TRUE; 45: if (i >= argc) 46: break; 47: arg = argv[i]; 48: if (strcmp(arg, "on") == 0) { 49: i++; 50: } else if (strcmp(arg, "off") == 0) { 51: click = 0; 52: i++; 53: } else if (*arg >= '0' && *arg <= '8') { 54: click = atoi(arg); 55: i++; 56: } 57: } else if (strcmp(arg, "-b") == 0 || strcmp(arg, "-bell") == 0) { 58: bell = 0; 59: dobell = TRUE; 60: } else if (strcmp(arg, "b") == 0 || strcmp(arg, "bell") == 0) { 61: bell = 6; 62: dobell = TRUE; 63: if (i >= argc) 64: break; 65: arg = argv[i]; 66: if (strcmp(arg, "on") == 0) { 67: i++; 68: } else if (strcmp(arg, "off") == 0) { 69: bell = 0; 70: i++; 71: } else if (*arg >= '0' && *arg <= '7') { 72: bell = atoi(arg); 73: i++; 74: } 75: } else if (strcmp(arg, "m") == 0 || strcmp(arg, "mouse") == 0) { 76: acc = 4; 77: thresh = 2; 78: domouse = TRUE; 79: if (i >= argc) 80: break; 81: arg = argv[i]; 82: if (strcmp(arg, "default") == 0) { 83: i++; 84: } else if (*arg >= '0' && *arg <= '9') { 85: acc = atoi(arg); 86: i++; 87: if (i >= argc) 88: break; 89: arg = argv[i]; 90: if (*arg >= '0' && *arg <= '9') { 91: thresh = atoi(arg); 92: i++; 93: } 94: } 95: } else if (strcmp(arg, "s") == 0 || strcmp(arg, "saver") == 0 || 96: strcmp(arg, "v") == 0 || strcmp(arg, "video") == 0) { 97: timeout = 10; 98: cycle = 60; 99: video = *arg == 's' ? 1 : 0; 100: dosaver = TRUE; 101: if (i >= argc) 102: break; 103: arg = argv[i]; 104: if (strcmp(arg, "default") == 0) { 105: i++; 106: } else if (*arg >= '0' && *arg <= '9') { 107: timeout = atoi(arg); 108: i++; 109: if (i >= argc) 110: break; 111: arg = argv[i]; 112: if (*arg >= '0' && *arg <= '9') { 113: cycle = atoi(arg); 114: i++; 115: } 116: } 117: } else if (strcmp(arg, "-r") == 0 || strcmp(arg, "-repeat") == 0) { 118: repeat = FALSE; 119: dorepeat = TRUE; 120: } else if (strcmp(arg, "r") == 0 || strcmp(arg, "repeat") == 0) { 121: repeat = TRUE; 122: dorepeat = TRUE; 123: if (i >= argc) 124: break; 125: arg = argv[i]; 126: if (strcmp(arg, "on") == 0) { 127: i++; 128: } else if (strcmp(arg, "off") == 0) { 129: repeat = FALSE; 130: i++; 131: } 132: } else if (strcmp(arg, "-l") == 0 || strcmp(arg, "-lock") == 0) { 133: lock = FALSE; 134: dolock = TRUE; 135: } else if (strcmp(arg, "l") == 0 || strcmp(arg, "lock") == 0) { 136: lock = TRUE; 137: dolock = TRUE; 138: if (i >= argc) 139: break; 140: arg = argv[i]; 141: if (strcmp(arg, "on") == 0) { 142: i++; 143: } else if (strcmp(arg, "off") == 0) { 144: lock = FALSE; 145: i++; 146: } 147: } else if (strcmp(arg, "p") == 0 || strcmp(arg, "pixel") == 0) { 148: if (i + 1 >= argc) 149: usage(argv[0]); 150: arg = argv[i]; 151: if (*arg >= '0' && *arg <= '9') 152: pixels[numpixels] = atoi(arg); 153: else 154: usage(argv[0]); 155: i++; 156: colors[numpixels] = argv[i]; 157: i++; 158: numpixels++; 159: } else if (index(arg, ':')) { 160: disp = arg; 161: } else 162: usage(argv[0]); 163: } 164: if (!doclick && !dorepeat && !dolock && !dobell && !domouse && !dosaver && 165: numpixels == 0) 166: usage(argv[0]); 167: 168: if (XOpenDisplay(disp) == NULL) { 169: fprintf(stderr, "%s: No such display %s!\n",argv[0],disp); 170: exit(1); 171: } 172: if (doclick) XKeyClickControl(click); 173: if (dolock) { 174: if (lock) XLockToggle(); 175: else XLockUpDown(); 176: } 177: if (dorepeat) { 178: if (repeat) XAutoRepeatOn(); 179: else XAutoRepeatOff(); 180: } 181: if (dobell) XFeepControl(bell); 182: if (domouse) XMouseControl(acc, thresh); 183: if (dosaver) XScreenSaver(timeout, cycle, video); 184: if (DisplayCells() >= 2) { 185: while (--numpixels >= 0) { 186: def.pixel = pixels[numpixels]; 187: if (XParseColor(colors[numpixels], &def)) 188: XStoreColor(&def); 189: else 190: fprintf(stderr, "%s: No such color\n", colors[numpixels]); 191: } 192: } 193: XSync(0); 194: exit(0); 195: } 196: 197: usage(prog) 198: char *prog; 199: { 200: printf("usage: %s option [option ...] [host:vs]\n", prog); 201: printf(" To turn bell off:\n"); 202: printf("\t-b b off b 0\n"); 203: printf(" To set bell volume:\n"); 204: printf("\t b [1-7] b on\n"); 205: printf(" To turn keyclick off:\n"); 206: printf("\t-c c off c 0\n"); 207: printf(" To set keyclick volume:\n"); 208: printf("\t c [1-8] c on\n"); 209: printf(" To turn shift-lock key off or on:\n"); 210: printf("\t-l l off\n"); 211: printf("\t l l on\n"); 212: printf(" To set mouse acceleration and threshold:\n"); 213: printf("\t m [acc [thr]] m default\n"); 214: printf(" To set pixel colors:\n"); 215: printf("\t p pixel_value color_name\n"); 216: printf(" To turn auto-repeat off or on:\n"); 217: printf("\t-r r off\n"); 218: printf("\t r r on\n"); 219: printf(" To make the screen-saver display a pattern:\n"); 220: printf("\t s [timeout [cycle]] s default\n"); 221: printf(" To make the screen-saver blank the video:\n"); 222: printf("\t v [timeout [cycle]] v default\n"); 223: exit(0); 224: }