windows.directx.dinput windows.directx.dinput.constants
windows.kernel32 windows.messages windows.ole32 windows.errors
windows.user32 classes.struct ;
+FROM: namespaces => change-global ;
SPECIALIZED-ARRAY: DIDEVICEOBJECTDATA
IN: game.input.dinput
GUID_SysMouse device-for-guid
[ configure-mouse ] [ +mouse-device+ set-global ] bi
0 0 0 0 8 f <array> mouse-state boa +mouse-state+ set-global
- MOUSE-BUFFER-SIZE <DIDEVICEOBJECTDATA-array> +mouse-buffer+ set-global ;
+ MOUSE-BUFFER-SIZE DIDEVICEOBJECTDATA <c-array> +mouse-buffer+ set-global ;
: device-info ( device -- DIDEVICEIMAGEINFOW )
DIDEVICEINSTANCEW <struct>
delete-dinput ;
M: dinput-game-input-backend (reset-game-input)
- global [
+ [
{
+dinput+ +keyboard-device+ +keyboard-state+
+controller-devices+ +controller-guids+
+device-change-window+ +device-change-handle+
} [ off ] each
- ] bind ;
+ ] with-global ;
M: dinput-game-input-backend get-controllers
+controller-devices+ get-global
: >slider ( long -- float )
65535.0 /f ; inline
: >pov ( long -- symbol )
- dup HEX: FFFF bitand HEX: FFFF =
+ dup 0xFFFF bitand 0xFFFF =
[ drop pov-neutral ]
[ 2750 + 4500 /i pov-values nth ] if ; inline