randy@tessa.iaf.uiowa.edu (randy frank) (12/07/90)
Ok, I was paging through my 3.3.1 GL refs manual and came accross qcontrol() and qgetfd(). (I had never heard of these before. Are they new/unhearlded routines in 3.3.1?) They appear to do what I want. Reading the man pages it keeps warning against this but it looks like QC_SENDEVENT could be used to send an event from a program with input focus to another without focus if the program with focus had the result of a qgetfd() call from within the other program. So I pasted this together to test the use of qcontrol: #include <stdio.h> #include <gl/qcontrol.h> #include <device.h> #include <gl.h> main() { long myque,wid; short devid,data; long icnt,ocnt,i; short idata[100],odata[100]; myque = winopen("broad\0"); myque = qgetfd(); printf("Queue desc = %d\n",myque); devid = 0x3ff0; icnt = 2; idata[0] = 0x3ff0; idata[1] = 0; ocnt = 0; i = qcontrol(QC_ADDDEVICE,icnt,idata,ocnt,odata); if (i != 0) printf("Error %d\n",i); qdevice(MOUSEX); qdevice(0x3ff0); qenter(REDRAW,wid); while (1) { i = qread(&data); if (i == REDRAW) { (void) reshapeviewport(); (void) color(BLACK); (void) clear(); } if (i == 0x3ff0) { printf("0x3ff0 event = %d\n",data); } if (i == MOUSEX) { printf("0x3ff0 via get call = %d\n",getvaluator(0x3ff0)); icnt = 5; idata[0] = myque; idata[1] = 1; idata[2] = 0x3ff0; idata[3] = data; idata[4] = NULLDEV; ocnt = 0; i=qcontrol(QC_SENDEVENT,icnt,idata,ocnt,odata); if (i != 0) printf("Error %d\n",i); icnt = 4; idata[0] = 0x3ff0; idata[1] = data; idata[2] = NULLDEV; idata[3] = NULLDEV; i=qcontrol(QC_CHANGEDEVICE,icnt,idata,ocnt,odata); if (i != 0) printf("Error %d\n",i); (void) printf("MOUSEX= %d\n",data); } } } Problem: It does not work. None of the qcontrols return errors but neither does the 0x3ff0 pseudo device change with MOUSEX. It is not catching changes in 0x3ff0 in the event loop nor can I poll it with getvaluator. If anyone can point me to my mistake I would greatly appreciate it. Thanks in advance... -- rjf. Randy Frank, Engineer | (319) 335-6712 University of Iowa, Image Analysis Facility | 73 EMRB randy@tessa.iaf.uiowa.edu | Iowa City, IA 52242