Implement input grabbing for x11; add do-nothing game.input backend for linux. The game and gpu demos now run correctly.
parent
f2e8128f5d
commit
d3d7392fa9
|
@ -93,5 +93,5 @@ M: mouse-state clone
|
||||||
{
|
{
|
||||||
{ [ os windows? ] [ "game.input.xinput" require ] }
|
{ [ os windows? ] [ "game.input.xinput" require ] }
|
||||||
{ [ os macosx? ] [ "game.input.iokit" require ] }
|
{ [ os macosx? ] [ "game.input.iokit" require ] }
|
||||||
{ [ t ] [ ] }
|
{ [ os linux? ] [ "game.input.linux" require ] }
|
||||||
} cond
|
} cond
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
Erik Charlebois
|
|
@ -0,0 +1,49 @@
|
||||||
|
! Copyright (C) 2010 Erik Charlebois.
|
||||||
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
|
USING: kernel game.input namespaces classes windows.com.syntax
|
||||||
|
bit-arrays
|
||||||
|
vectors ;
|
||||||
|
IN: game.input.linux
|
||||||
|
|
||||||
|
SINGLETON: linux-game-input-backend
|
||||||
|
|
||||||
|
linux-game-input-backend game-input-backend set-global
|
||||||
|
|
||||||
|
M: linux-game-input-backend (open-game-input)
|
||||||
|
;
|
||||||
|
|
||||||
|
M: linux-game-input-backend (close-game-input)
|
||||||
|
;
|
||||||
|
|
||||||
|
M: linux-game-input-backend (reset-game-input)
|
||||||
|
;
|
||||||
|
|
||||||
|
M: linux-game-input-backend get-controllers
|
||||||
|
{ } ;
|
||||||
|
|
||||||
|
M: linux-game-input-backend product-string
|
||||||
|
drop "" ;
|
||||||
|
|
||||||
|
M: linux-game-input-backend product-id
|
||||||
|
drop GUID: {00000000-0000-0000-0000-000000000000} ;
|
||||||
|
|
||||||
|
M: linux-game-input-backend instance-id
|
||||||
|
drop GUID: {00000000-0000-0000-0000-000000000000} ;
|
||||||
|
|
||||||
|
M: linux-game-input-backend read-controller
|
||||||
|
drop controller-state new ;
|
||||||
|
|
||||||
|
M: linux-game-input-backend calibrate-controller
|
||||||
|
drop ;
|
||||||
|
|
||||||
|
M: linux-game-input-backend vibrate-controller
|
||||||
|
3drop ;
|
||||||
|
|
||||||
|
M: linux-game-input-backend read-keyboard
|
||||||
|
256 <bit-array> keyboard-state boa ;
|
||||||
|
|
||||||
|
M: linux-game-input-backend read-mouse
|
||||||
|
0 0 0 0 2 <vector> mouse-state boa ;
|
||||||
|
|
||||||
|
M: linux-game-input-backend reset-mouse
|
||||||
|
;
|
|
@ -0,0 +1 @@
|
||||||
|
Linux backend for game input.
|
|
@ -0,0 +1 @@
|
||||||
|
games
|
|
@ -1,14 +1,13 @@
|
||||||
! Copyright (C) 2005, 2009 Eduardo Cavazos and Slava Pestov
|
! Copyright (C) 2005, 2009 Eduardo Cavazos and Slava Pestov
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
USING: accessors alien.c-types arrays ascii assocs colors
|
USING: accessors alien.c-types ascii assocs classes.struct combinators
|
||||||
classes.struct combinators io.encodings.ascii
|
combinators.short-circuit command-line environment io.encodings.ascii
|
||||||
io.encodings.string io.encodings.utf8 kernel literals math
|
io.encodings.string io.encodings.utf8 kernel literals locals math
|
||||||
namespaces sequences strings ui ui.backend ui.clipboards
|
namespaces sequences specialized-arrays.instances.alien.c-types.uchar
|
||||||
ui.event-loop ui.gadgets ui.gadgets.private ui.gadgets.worlds
|
strings ui ui.backend ui.clipboards ui.event-loop ui.gadgets
|
||||||
ui.gestures ui.pixel-formats ui.pixel-formats.private
|
ui.gadgets.private ui.gadgets.worlds ui.gestures ui.pixel-formats
|
||||||
ui.private x11 x11.clipboard x11.constants x11.events x11.glx
|
ui.pixel-formats.private ui.private x11 x11.clipboard x11.constants
|
||||||
x11.io x11.windows x11.xim x11.xlib environment command-line
|
x11.events x11.glx x11.io x11.windows x11.xim x11.xlib ;
|
||||||
combinators.short-circuit ;
|
|
||||||
IN: ui.backend.x11
|
IN: ui.backend.x11
|
||||||
|
|
||||||
SINGLETON: x11-ui-backend
|
SINGLETON: x11-ui-backend
|
||||||
|
@ -328,6 +327,22 @@ M: x11-ui-backend (with-ui) ( quot -- )
|
||||||
M: x11-ui-backend beep ( -- )
|
M: x11-ui-backend beep ( -- )
|
||||||
dpy get 100 XBell drop ;
|
dpy get 100 XBell drop ;
|
||||||
|
|
||||||
|
: black ( -- xcolor ) 0 0 0 0 0 0 XColor <struct-boa> ; inline
|
||||||
|
|
||||||
|
M:: x11-ui-backend (grab-input) ( handle -- )
|
||||||
|
handle window>> :> wnd
|
||||||
|
dpy get :> dpy
|
||||||
|
dpy wnd uchar-array{ 0 0 0 0 0 0 0 0 } 8 8 XCreateBitmapFromData :> pixmap
|
||||||
|
dpy pixmap dup black dup 0 0 XCreatePixmapCursor :> cursor
|
||||||
|
|
||||||
|
dpy wnd 1 NoEventMask GrabModeAsync dup wnd cursor CurrentTime XGrabPointer drop
|
||||||
|
|
||||||
|
dpy cursor XFreeCursor drop
|
||||||
|
dpy pixmap XFreePixmap drop ;
|
||||||
|
|
||||||
|
M: x11-ui-backend (ungrab-input)
|
||||||
|
drop dpy get CurrentTime XUngrabPointer drop ;
|
||||||
|
|
||||||
x11-ui-backend ui-backend set-global
|
x11-ui-backend ui-backend set-global
|
||||||
|
|
||||||
[ "DISPLAY" os-env "ui.tools" "listener" ? ]
|
[ "DISPLAY" os-env "ui.tools" "listener" ? ]
|
||||||
|
|
|
@ -284,6 +284,11 @@ X-FUNCTION: int XConvertSelection ( Display* display, Atom selection, Atom targe
|
||||||
X-FUNCTION: Pixmap XCreatePixmap ( Display* display, Drawable d, uint width, uint height, uint depth ) ;
|
X-FUNCTION: Pixmap XCreatePixmap ( Display* display, Drawable d, uint width, uint height, uint depth ) ;
|
||||||
X-FUNCTION: int XFreePixmap ( Display* display, Pixmap pixmap ) ;
|
X-FUNCTION: int XFreePixmap ( Display* display, Pixmap pixmap ) ;
|
||||||
|
|
||||||
|
! 5.2 - Creating, Recoloring, and Freeing Cursors
|
||||||
|
|
||||||
|
C-TYPE: XColor
|
||||||
|
X-FUNCTION: Cursor XCreatePixmapCursor ( Display* display, Pixmap source, Pixmap mask, XColor* foreground_color, XColor* background_color, uint x, uint y ) ;
|
||||||
|
X-FUNCTION: int XFreeCursor ( Display* display, Cursor cursor ) ;
|
||||||
|
|
||||||
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
! 6 - Color Management Functions
|
! 6 - Color Management Functions
|
||||||
|
@ -1096,6 +1101,7 @@ X-FUNCTION: int XGrabPointer (
|
||||||
X-FUNCTION: Status XUngrabPointer ( Display* display, Time time ) ;
|
X-FUNCTION: Status XUngrabPointer ( Display* display, Time time ) ;
|
||||||
X-FUNCTION: Status XChangeActivePointerGrab ( Display* display, uint event_mask, Cursor cursor, Time time ) ;
|
X-FUNCTION: Status XChangeActivePointerGrab ( Display* display, uint event_mask, Cursor cursor, Time time ) ;
|
||||||
X-FUNCTION: Status XGrabKey ( Display* display, int keycode, uint modifiers, Window grab_window, Bool owner_events, int pointer_mode, int keyboard_mode ) ;
|
X-FUNCTION: Status XGrabKey ( Display* display, int keycode, uint modifiers, Window grab_window, Bool owner_events, int pointer_mode, int keyboard_mode ) ;
|
||||||
|
X-FUNCTION: int XGrabKeyboard ( Display* display, Window grab_window, Bool owner_events, int pointer_mode, int keyboard_mode, Time time ) ;
|
||||||
X-FUNCTION: Status XSetInputFocus ( Display* display, Window focus, int revert_to, Time time ) ;
|
X-FUNCTION: Status XSetInputFocus ( Display* display, Window focus, int revert_to, Time time ) ;
|
||||||
|
|
||||||
X-FUNCTION: Status XGetInputFocus ( Display* display,
|
X-FUNCTION: Status XGetInputFocus ( Display* display,
|
||||||
|
@ -1210,6 +1216,14 @@ STRUCT: XVisualInfo
|
||||||
{ colormap_size int }
|
{ colormap_size int }
|
||||||
{ bits_per_rgb int } ;
|
{ bits_per_rgb int } ;
|
||||||
|
|
||||||
|
! 16.9 Manipulating Bitmaps
|
||||||
|
X-FUNCTION: Pixmap XCreateBitmapFromData (
|
||||||
|
Display* display,
|
||||||
|
Drawable d,
|
||||||
|
char* data,
|
||||||
|
uint width,
|
||||||
|
uint height ) ;
|
||||||
|
|
||||||
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
! Appendix D - Compatibility Functions
|
! Appendix D - Compatibility Functions
|
||||||
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
|
Loading…
Reference in New Issue