curses: start support for mouse events
							parent
							
								
									e1a9d597b0
								
							
						
					
					
						commit
						bb89b92a98
					
				| 
						 | 
				
			
			@ -136,6 +136,38 @@ CONSTANT: KEY_EVENT     OCT: 633  /* We were interrupted by an event */
 | 
			
		|||
CONSTANT: KEY_F0        OCT: 410  /* Function keys.  Space for 64 */
 | 
			
		||||
: KEY_F ( n -- code ) KEY_F0 + ; inline /* Value of function key n */
 | 
			
		||||
 | 
			
		||||
: BUTTON1_RELEASED       ( -- mask ) 1 ffi:NCURSES_BUTTON_RELEASED ffi:NCURSES_MOUSE_MASK ; inline
 | 
			
		||||
: BUTTON1_PRESSED        ( -- mask ) 1 ffi:NCURSES_BUTTON_PRESSED  ffi:NCURSES_MOUSE_MASK ; inline
 | 
			
		||||
: BUTTON1_CLICKED        ( -- mask ) 1 ffi:NCURSES_BUTTON_CLICKED  ffi:NCURSES_MOUSE_MASK ; inline
 | 
			
		||||
: BUTTON1_DOUBLE_CLICKED ( -- mask ) 1 ffi:NCURSES_DOUBLE_CLICKED  ffi:NCURSES_MOUSE_MASK ; inline
 | 
			
		||||
: BUTTON1_TRIPLE_CLICKED ( -- mask ) 1 ffi:NCURSES_TRIPLE_CLICKED  ffi:NCURSES_MOUSE_MASK ; inline
 | 
			
		||||
: BUTTON2_RELEASED       ( -- mask ) 2 ffi:NCURSES_BUTTON_RELEASED ffi:NCURSES_MOUSE_MASK ; inline
 | 
			
		||||
: BUTTON2_PRESSED        ( -- mask ) 2 ffi:NCURSES_BUTTON_PRESSED  ffi:NCURSES_MOUSE_MASK ; inline
 | 
			
		||||
: BUTTON2_CLICKED        ( -- mask ) 2 ffi:NCURSES_BUTTON_CLICKED  ffi:NCURSES_MOUSE_MASK ; inline
 | 
			
		||||
: BUTTON2_DOUBLE_CLICKED ( -- mask ) 2 ffi:NCURSES_DOUBLE_CLICKED  ffi:NCURSES_MOUSE_MASK ; inline
 | 
			
		||||
: BUTTON2_TRIPLE_CLICKED ( -- mask ) 2 ffi:NCURSES_TRIPLE_CLICKED  ffi:NCURSES_MOUSE_MASK ; inline
 | 
			
		||||
: BUTTON3_RELEASED       ( -- mask ) 3 ffi:NCURSES_BUTTON_RELEASED ffi:NCURSES_MOUSE_MASK ; inline
 | 
			
		||||
: BUTTON3_PRESSED        ( -- mask ) 3 ffi:NCURSES_BUTTON_PRESSED  ffi:NCURSES_MOUSE_MASK ; inline
 | 
			
		||||
: BUTTON3_CLICKED        ( -- mask ) 3 ffi:NCURSES_BUTTON_CLICKED  ffi:NCURSES_MOUSE_MASK ; inline
 | 
			
		||||
: BUTTON3_DOUBLE_CLICKED ( -- mask ) 3 ffi:NCURSES_DOUBLE_CLICKED  ffi:NCURSES_MOUSE_MASK ; inline
 | 
			
		||||
: BUTTON3_TRIPLE_CLICKED ( -- mask ) 3 ffi:NCURSES_TRIPLE_CLICKED  ffi:NCURSES_MOUSE_MASK ; inline
 | 
			
		||||
: BUTTON4_RELEASED       ( -- mask ) 4 ffi:NCURSES_BUTTON_RELEASED ffi:NCURSES_MOUSE_MASK ; inline
 | 
			
		||||
: BUTTON4_PRESSED        ( -- mask ) 4 ffi:NCURSES_BUTTON_PRESSED  ffi:NCURSES_MOUSE_MASK ; inline
 | 
			
		||||
: BUTTON4_CLICKED        ( -- mask ) 4 ffi:NCURSES_BUTTON_CLICKED  ffi:NCURSES_MOUSE_MASK ; inline
 | 
			
		||||
: BUTTON4_DOUBLE_CLICKED ( -- mask ) 4 ffi:NCURSES_DOUBLE_CLICKED  ffi:NCURSES_MOUSE_MASK ; inline
 | 
			
		||||
: BUTTON4_TRIPLE_CLICKED ( -- mask ) 4 ffi:NCURSES_TRIPLE_CLICKED  ffi:NCURSES_MOUSE_MASK ; inline
 | 
			
		||||
 | 
			
		||||
: BUTTON1_RESERVED_EVENT ( -- mask ) 1 ffi:NCURSES_RESERVED_EVENT ffi:NCURSES_MOUSE_MASK ; inline
 | 
			
		||||
: BUTTON2_RESERVED_EVENT ( -- mask ) 2 ffi:NCURSES_RESERVED_EVENT ffi:NCURSES_MOUSE_MASK ; inline
 | 
			
		||||
: BUTTON3_RESERVED_EVENT ( -- mask ) 3 ffi:NCURSES_RESERVED_EVENT ffi:NCURSES_MOUSE_MASK ; inline
 | 
			
		||||
: BUTTON4_RESERVED_EVENT ( -- mask ) 4 ffi:NCURSES_RESERVED_EVENT ffi:NCURSES_MOUSE_MASK ; inline
 | 
			
		||||
: BUTTON_CTRL            ( -- mask ) 5 OCT: 01 ffi:NCURSES_MOUSE_MASK ; inline
 | 
			
		||||
: BUTTON_SHIFT           ( -- mask ) 5 OCT: 02 ffi:NCURSES_MOUSE_MASK ; inline
 | 
			
		||||
: BUTTON_ALT             ( -- mask ) 5 OCT: 04 ffi:NCURSES_MOUSE_MASK ; inline
 | 
			
		||||
: REPORT_MOUSE_POSITION  ( -- mask ) 5 OCT: 10 ffi:NCURSES_MOUSE_MASK ; inline
 | 
			
		||||
 | 
			
		||||
: ALL_MOUSE_EVENTS ( -- mask ) REPORT_MOUSE_POSITION 1 - ; inline
 | 
			
		||||
 | 
			
		||||
ERROR: curses-failed ;
 | 
			
		||||
ERROR: unsupported-curses-terminal ;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,6 +18,7 @@ TYPEDEF: uint chtype
 | 
			
		|||
TYPEDEF: chtype attr_t
 | 
			
		||||
TYPEDEF: short NCURSES_SIZE_T
 | 
			
		||||
TYPEDEF: ushort wchar_t
 | 
			
		||||
TYPEDEF: ulong mmask_t
 | 
			
		||||
 | 
			
		||||
CONSTANT: CCHARW_MAX  5
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -76,6 +77,11 @@ STRUCT: c-window
 | 
			
		|||
 | 
			
		||||
{ _bkgrnd cchar_t } ;
 | 
			
		||||
 | 
			
		||||
STRUCT: MEVENT
 | 
			
		||||
    { id short }
 | 
			
		||||
    { x int } { y int } { z int }
 | 
			
		||||
    { bstate mmask_t } ;
 | 
			
		||||
 | 
			
		||||
LIBRARY: curses
 | 
			
		||||
 | 
			
		||||
C-GLOBAL: void* stdscr
 | 
			
		||||
| 
						 | 
				
			
			@ -180,7 +186,6 @@ FUNCTION: int vw_printw ( WINDOW* win, c-string fmt, va_list varglist ) ;
 | 
			
		|||
FUNCTION: int move ( int y, int x ) ;
 | 
			
		||||
FUNCTION: int wmove ( WINDOW* win, int y, int x ) ;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FUNCTION: int scroll ( WINDOW* win ) ;
 | 
			
		||||
FUNCTION: int scrl ( int n ) ;
 | 
			
		||||
FUNCTION: int wscrl ( WINDOW* win, int n ) ;
 | 
			
		||||
| 
						 | 
				
			
			@ -252,3 +257,20 @@ C-GLOBAL: int COLOR_PAIRS
 | 
			
		|||
FUNCTION: int wattron ( WINDOW* win, int attrs ) ;
 | 
			
		||||
FUNCTION: int wattroff ( WINDOW* win, int attrs ) ;
 | 
			
		||||
FUNCTION: int wattrset ( WINDOW* win, int attrs ) ;
 | 
			
		||||
 | 
			
		||||
: NCURSES_MOUSE_MASK ( b m -- mask ) swap 1 - 5 * shift ; inline
 | 
			
		||||
 | 
			
		||||
CONSTANT: NCURSES_BUTTON_RELEASED OCT: 01
 | 
			
		||||
CONSTANT: NCURSES_BUTTON_PRESSED  OCT: 02
 | 
			
		||||
CONSTANT: NCURSES_BUTTON_CLICKED  OCT: 04
 | 
			
		||||
CONSTANT: NCURSES_DOUBLE_CLICKED  OCT: 10
 | 
			
		||||
CONSTANT: NCURSES_TRIPLE_CLICKED  OCT: 20
 | 
			
		||||
CONSTANT: NCURSES_RESERVED_EVENT  OCT: 40
 | 
			
		||||
 | 
			
		||||
FUNCTION: int getmouse ( MEVENT* event ) ;
 | 
			
		||||
FUNCTION: int ungetmouse ( MEVENT* event ) ;
 | 
			
		||||
FUNCTION: mmask_t mousemask ( mmask_t newmask, mmask_t* oldmask ) ;
 | 
			
		||||
FUNCTION: bool wenclose ( WINDOW* win, int y, int x ) ;
 | 
			
		||||
FUNCTION: bool mouse_trafo ( int* pY, int* pX, bool to_screen ) ;
 | 
			
		||||
FUNCTION: bool wmouse_trafo ( WINDOW* win, int* pY, int* pX, bool to_screen ) ;
 | 
			
		||||
FUNCTION: int mouseinterval ( int erval ) ;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue