LVAL xmouse() { LVAL arg1,arg2,val; int flg=0,x=0,y=0; XEvent event; if (xlargc==2) { arg1= xlgetarg(); arg2 = xlgetarg(); x = (int)getnumint(arg1); y = (int)getnumint(arg2); } xllastarg(); while (XCheckMaskEvent( display, XButtonPressMask | XButtonMotionMask, &event )); xlsave1(val); x = event.xmotion.x; y = event.xmotion.y; val = NIL; val = cons(cvfixnum(y),val); val = cons(cvfixnum(x),val); if (event.type == ButtonPress) val = cons(true,val); else val = cons(NIL,val); xlpop(); return(val); }これは,
(flag num1 num2)というような3つの要素をもつリストを返します.最初の要素はボタンが押さ れているかどうかで,T ならば押されている.NILならば押されていない.を 示します.num1,num2はウィンドウの中でマウスカーソルが動いている時には, そのマウスカーソルのx,yの座標値を示します.