Mouse position: Difference between revisions
Content added Content deleted
No edit summary |
|||
Line 292: | Line 292: | ||
There's no particularly easy way to inquire about a non-Emacs focused window, |
There's no particularly easy way to inquire about a non-Emacs focused window, |
||
only generic X11 or similar approaches run externally. |
only generic X11 or similar approaches run externally. |
||
=={{header|ERRE}}== |
|||
This example program, taken from distribution disk, shows the mouse position in a text field at the bottom-right corner and updates when the mouse is moved. |
|||
<lang ERRE> |
|||
! |
|||
! MOUSE WITH 'MOUSE.LIB' LIBRARY |
|||
! |
|||
PROGRAM MOUSE |
|||
!$KEY |
|||
!$INCLUDE="PC.LIB" |
|||
!$INCLUDE="MOUSE.LIB" |
|||
PROCEDURE GETMONITORTYPE(->MONITOR$) |
|||
!$RCODE="DEF SEG=0" |
|||
STATUS=PEEK($463) |
|||
!$RCODE="DEF SEG" |
|||
MONITOR$="" |
|||
IF STATUS=$B4 THEN |
|||
!$RCODE="STATUS=(INP(&H3BA) AND &H80)" |
|||
FOR DELAYLOOP=1 TO 30000 DO |
|||
!$RCODE="XX=((INP(&H3BA) AND &H80)<>STATUS)" |
|||
IF XX THEN MONITOR$="HERC" END IF |
|||
END FOR |
|||
IF MONITOR$="" THEN MONITOR$="MONO" END IF |
|||
ELSE |
|||
REGAX%=$1A00 |
|||
EXECUTEASM($10) |
|||
IF (REGAX% AND $FF)=$1A THEN |
|||
MONITOR$="VGA" |
|||
ELSE |
|||
REGAX%=$1200 REGBX%=$10 |
|||
EXECUTEASM($10) |
|||
IF (REGBX% AND $FF)=$10 THEN |
|||
MONITOR$="CGA" |
|||
ELSE |
|||
MONITOR$="EGA" |
|||
END IF |
|||
END IF |
|||
END IF |
|||
END PROCEDURE |
|||
BEGIN |
|||
INITASM |
|||
GETMONITORTYPE(->MONITOR$) |
|||
COLOR(7,0) |
|||
CLS |
|||
LOCATE(1,50) PRINT("MONITOR TYPE ";MONITOR$) |
|||
MOUSE_RESETANDSTATUS(->STATUS,BUTTONS) |
|||
IF STATUS<>-1 THEN |
|||
BEEP |
|||
CLS |
|||
PRINT("MOUSE DRIVER NOT INSTALLED OR MOUSE NOT FOUND") |
|||
REPEAT |
|||
GET(IN$) |
|||
UNTIL IN$<>"" |
|||
ELSE |
|||
MOUSE_SETEXTCURSOR |
|||
MOUSE_SETCURSORLIMITS(8,199,0,639) |
|||
MOUSE_SETSENSITIVITY(30,30,50) |
|||
MOUSE_SHOWCURSOR |
|||
REPEAT |
|||
OLDX=X OLDY=Y |
|||
MOUSE_GETCURSORPOSITION(->X,Y,LEFT%,RIGHT%,BOTH%,MIDDLE%) |
|||
GET(IN$) |
|||
COLOR(15,0) |
|||
LOCATE(1,2) |
|||
PRINT("X =";INT(X/8)+1;" Y =";INT(Y/8)+1;" ";) |
|||
IF LEFT% THEN LOCATE(1,37) COLOR(10,0) PRINT("LEFT";) END IF |
|||
IF RIGHT% THEN LOCATE(1,37) COLOR(12,0) PRINT("RIGHT";) END IF |
|||
IF MIDDLE% THEN LOCATE(1,37) COLOR(14,0) PRINT("MIDDLE";) END IF |
|||
IF NOT RIGHT% AND NOT LEFT% AND NOT MIDDLE% THEN |
|||
LOCATE(1,37) PRINT(" ";) |
|||
END IF |
|||
IF NOT (X=OLDX AND Y=OLDY) THEN MOUSE_SHOWCURSOR END IF |
|||
UNTIL IN$=CHR$(27) |
|||
END IF |
|||
MOUSE_HIDECURSOR |
|||
CLS |
|||
END PROGRAM |
|||
</lang> |
|||
=={{header|Factor}}== |
=={{header|Factor}}== |