dinput: Do not unacquire the device after every read, otherwise keyboard does not work. Fix inaccuracy in c_dfDIJoystick2 definition
parent
b6e0faae05
commit
f0951c36f2
|
@ -218,9 +218,7 @@ M: dinput-game-input-backend instance-id
|
|||
|
||||
:: with-acquisition ( device acquired-quot succeeded-quot failed-quot -- result/f )
|
||||
device IDirectInputDevice8W::Acquire succeeded? [
|
||||
device acquired-quot
|
||||
[ device IDirectInputDevice8W::Unacquire ole32-error ]
|
||||
[ ] cleanup
|
||||
device acquired-quot call
|
||||
succeeded-quot call
|
||||
] failed-quot if ; inline
|
||||
|
||||
|
|
|
@ -82,7 +82,7 @@ TUPLE: joystick-demo-gadget < pack axis raxis controller buttons alarm ;
|
|||
|
||||
: kill-update-axes ( gadget -- )
|
||||
gray <solid> >>interior
|
||||
[ cancel-alarm f ] change-alarm
|
||||
[ [ cancel-alarm ] when* f ] change-alarm
|
||||
relayout-1 ;
|
||||
|
||||
: (update-axes) ( gadget controller-state -- )
|
||||
|
|
|
@ -7,20 +7,20 @@ IN: key-caps
|
|||
: key-locations H{
|
||||
{ key-escape { { 0 0 } { 10 10 } } }
|
||||
|
||||
{ key-f1 { { 15 0 } { 10 10 } } }
|
||||
{ key-f2 { { 25 0 } { 10 10 } } }
|
||||
{ key-f3 { { 35 0 } { 10 10 } } }
|
||||
{ key-f4 { { 45 0 } { 10 10 } } }
|
||||
{ key-f1 { { 20 0 } { 10 10 } } }
|
||||
{ key-f2 { { 30 0 } { 10 10 } } }
|
||||
{ key-f3 { { 40 0 } { 10 10 } } }
|
||||
{ key-f4 { { 50 0 } { 10 10 } } }
|
||||
|
||||
{ key-f5 { { 60 0 } { 10 10 } } }
|
||||
{ key-f6 { { 70 0 } { 10 10 } } }
|
||||
{ key-f7 { { 80 0 } { 10 10 } } }
|
||||
{ key-f8 { { 90 0 } { 10 10 } } }
|
||||
{ key-f5 { { 65 0 } { 10 10 } } }
|
||||
{ key-f6 { { 75 0 } { 10 10 } } }
|
||||
{ key-f7 { { 85 0 } { 10 10 } } }
|
||||
{ key-f8 { { 95 0 } { 10 10 } } }
|
||||
|
||||
{ key-f9 { { 105 0 } { 10 10 } } }
|
||||
{ key-f10 { { 115 0 } { 10 10 } } }
|
||||
{ key-f11 { { 125 0 } { 10 10 } } }
|
||||
{ key-f12 { { 135 0 } { 10 10 } } }
|
||||
{ key-f9 { { 110 0 } { 10 10 } } }
|
||||
{ key-f10 { { 120 0 } { 10 10 } } }
|
||||
{ key-f11 { { 130 0 } { 10 10 } } }
|
||||
{ key-f12 { { 140 0 } { 10 10 } } }
|
||||
|
||||
|
||||
{ key-` { { 0 15 } { 10 10 } } }
|
||||
|
@ -36,7 +36,7 @@ IN: key-caps
|
|||
{ key-0 { { 100 15 } { 10 10 } } }
|
||||
{ key-- { { 110 15 } { 10 10 } } }
|
||||
{ key-= { { 120 15 } { 10 10 } } }
|
||||
{ key-backspace { { 130 15 } { 15 10 } } }
|
||||
{ key-backspace { { 130 15 } { 20 10 } } }
|
||||
|
||||
{ key-tab { { 0 25 } { 15 10 } } }
|
||||
{ key-q { { 15 25 } { 10 10 } } }
|
||||
|
@ -51,7 +51,7 @@ IN: key-caps
|
|||
{ key-p { { 105 25 } { 10 10 } } }
|
||||
{ key-[ { { 115 25 } { 10 10 } } }
|
||||
{ key-] { { 125 25 } { 10 10 } } }
|
||||
{ key-\ { { 135 25 } { 10 10 } } }
|
||||
{ key-\ { { 135 25 } { 15 10 } } }
|
||||
|
||||
{ key-caps-lock { { 0 35 } { 20 10 } } }
|
||||
{ key-a { { 20 35 } { 10 10 } } }
|
||||
|
@ -65,7 +65,7 @@ IN: key-caps
|
|||
{ key-l { { 100 35 } { 10 10 } } }
|
||||
{ key-; { { 110 35 } { 10 10 } } }
|
||||
{ key-' { { 120 35 } { 10 10 } } }
|
||||
{ key-return { { 130 35 } { 15 10 } } }
|
||||
{ key-return { { 130 35 } { 20 10 } } }
|
||||
|
||||
{ key-left-shift { { 0 45 } { 25 10 } } }
|
||||
{ key-z { { 25 45 } { 10 10 } } }
|
||||
|
@ -78,59 +78,60 @@ IN: key-caps
|
|||
{ key-, { { 95 45 } { 10 10 } } }
|
||||
{ key-. { { 105 45 } { 10 10 } } }
|
||||
{ key-/ { { 115 45 } { 10 10 } } }
|
||||
{ key-right-shift { { 125 45 } { 20 10 } } }
|
||||
{ key-right-shift { { 125 45 } { 25 10 } } }
|
||||
|
||||
{ key-left-control { { 0 55 } { 15 10 } } }
|
||||
{ key-left-gui { { 15 55 } { 15 10 } } }
|
||||
{ key-left-alt { { 30 55 } { 15 10 } } }
|
||||
{ key-space { { 45 55 } { 55 10 } } }
|
||||
{ key-right-alt { { 100 55 } { 15 10 } } }
|
||||
{ key-right-gui { { 115 55 } { 15 10 } } }
|
||||
{ key-right-control { { 130 55 } { 15 10 } } }
|
||||
{ key-space { { 45 55 } { 45 10 } } }
|
||||
{ key-right-alt { { 90 55 } { 15 10 } } }
|
||||
{ key-right-gui { { 105 55 } { 15 10 } } }
|
||||
{ key-application { { 120 55 } { 15 10 } } }
|
||||
{ key-right-control { { 135 55 } { 15 10 } } }
|
||||
|
||||
|
||||
{ key-print-screen { { 150 0 } { 10 10 } } }
|
||||
{ key-scroll-lock { { 160 0 } { 10 10 } } }
|
||||
{ key-pause { { 170 0 } { 10 10 } } }
|
||||
{ key-print-screen { { 155 0 } { 10 10 } } }
|
||||
{ key-scroll-lock { { 165 0 } { 10 10 } } }
|
||||
{ key-pause { { 175 0 } { 10 10 } } }
|
||||
|
||||
{ key-insert { { 150 15 } { 10 10 } } }
|
||||
{ key-home { { 160 15 } { 10 10 } } }
|
||||
{ key-page-up { { 170 15 } { 10 10 } } }
|
||||
{ key-insert { { 155 15 } { 10 10 } } }
|
||||
{ key-home { { 165 15 } { 10 10 } } }
|
||||
{ key-page-up { { 175 15 } { 10 10 } } }
|
||||
|
||||
{ key-delete { { 150 25 } { 10 10 } } }
|
||||
{ key-end { { 160 25 } { 10 10 } } }
|
||||
{ key-page-down { { 170 25 } { 10 10 } } }
|
||||
{ key-delete { { 155 25 } { 10 10 } } }
|
||||
{ key-end { { 165 25 } { 10 10 } } }
|
||||
{ key-page-down { { 175 25 } { 10 10 } } }
|
||||
|
||||
{ key-up-arrow { { 160 45 } { 10 10 } } }
|
||||
{ key-left-arrow { { 150 55 } { 10 10 } } }
|
||||
{ key-down-arrow { { 160 55 } { 10 10 } } }
|
||||
{ key-right-arrow { { 170 55 } { 10 10 } } }
|
||||
{ key-up-arrow { { 165 45 } { 10 10 } } }
|
||||
{ key-left-arrow { { 155 55 } { 10 10 } } }
|
||||
{ key-down-arrow { { 165 55 } { 10 10 } } }
|
||||
{ key-right-arrow { { 175 55 } { 10 10 } } }
|
||||
|
||||
|
||||
{ key-keypad-numlock { { 185 15 } { 10 10 } } }
|
||||
{ key-keypad-/ { { 195 15 } { 10 10 } } }
|
||||
{ key-keypad-* { { 205 15 } { 10 10 } } }
|
||||
{ key-keypad-- { { 215 15 } { 10 10 } } }
|
||||
{ key-keypad-numlock { { 190 15 } { 10 10 } } }
|
||||
{ key-keypad-/ { { 200 15 } { 10 10 } } }
|
||||
{ key-keypad-* { { 210 15 } { 10 10 } } }
|
||||
{ key-keypad-- { { 220 15 } { 10 10 } } }
|
||||
|
||||
{ key-keypad-7 { { 185 25 } { 10 10 } } }
|
||||
{ key-keypad-8 { { 195 25 } { 10 10 } } }
|
||||
{ key-keypad-9 { { 205 25 } { 10 10 } } }
|
||||
{ key-keypad-+ { { 215 25 } { 10 20 } } }
|
||||
{ key-keypad-7 { { 190 25 } { 10 10 } } }
|
||||
{ key-keypad-8 { { 200 25 } { 10 10 } } }
|
||||
{ key-keypad-9 { { 210 25 } { 10 10 } } }
|
||||
{ key-keypad-+ { { 220 25 } { 10 20 } } }
|
||||
|
||||
{ key-keypad-4 { { 185 35 } { 10 10 } } }
|
||||
{ key-keypad-5 { { 195 35 } { 10 10 } } }
|
||||
{ key-keypad-6 { { 205 35 } { 10 10 } } }
|
||||
{ key-keypad-4 { { 190 35 } { 10 10 } } }
|
||||
{ key-keypad-5 { { 200 35 } { 10 10 } } }
|
||||
{ key-keypad-6 { { 210 35 } { 10 10 } } }
|
||||
|
||||
{ key-keypad-1 { { 185 45 } { 10 10 } } }
|
||||
{ key-keypad-2 { { 195 45 } { 10 10 } } }
|
||||
{ key-keypad-3 { { 205 45 } { 10 10 } } }
|
||||
{ key-keypad-enter { { 215 45 } { 10 20 } } }
|
||||
{ key-keypad-1 { { 190 45 } { 10 10 } } }
|
||||
{ key-keypad-2 { { 200 45 } { 10 10 } } }
|
||||
{ key-keypad-3 { { 210 45 } { 10 10 } } }
|
||||
{ key-keypad-enter { { 220 45 } { 10 20 } } }
|
||||
|
||||
{ key-keypad-0 { { 185 55 } { 20 10 } } }
|
||||
{ key-keypad-. { { 205 55 } { 10 10 } } }
|
||||
{ key-keypad-0 { { 190 55 } { 20 10 } } }
|
||||
{ key-keypad-. { { 210 55 } { 10 10 } } }
|
||||
} ;
|
||||
|
||||
: KEYBOARD-SIZE { 225 65 } ;
|
||||
: KEYBOARD-SIZE { 230 65 } ;
|
||||
: FREQUENCY ( -- f ) 30 recip seconds ;
|
||||
|
||||
TUPLE: key-caps-gadget < gadget keys alarm ;
|
||||
|
|
|
@ -24,12 +24,15 @@ SYMBOLS:
|
|||
: (sizeof) ( field struct -- size )
|
||||
[ (field-spec-of) class>> "[" split1 drop heap-size ] [ drop 1 ] if* ;
|
||||
|
||||
MACRO: (flags) ( array -- )
|
||||
0 [ {
|
||||
: (flag) ( thing -- integer )
|
||||
{
|
||||
{ [ dup word? ] [ execute ] }
|
||||
{ [ dup callable? ] [ call ] }
|
||||
[ ]
|
||||
} cond bitor ] reduce 1quotation ;
|
||||
} cond ;
|
||||
|
||||
: (flags) ( array -- )
|
||||
0 [ (flag) bitor ] reduce ;
|
||||
|
||||
: (DIOBJECTDATAFORMAT) ( pguid dwOfs dwType dwFlags alien -- alien )
|
||||
[ {
|
||||
|
@ -45,7 +48,7 @@ MACRO: (flags) ( array -- )
|
|||
[ second rot [ (offsetof) ] [ (sizeof) ] 2bi ]
|
||||
[ third * + ]
|
||||
[ fourth (flags) ]
|
||||
[ 4 swap nth ]
|
||||
[ 4 swap nth (flag) ]
|
||||
} cleave
|
||||
"DIOBJECTDATAFORMAT" <c-object> (DIOBJECTDATAFORMAT) ;
|
||||
|
||||
|
@ -245,30 +248,30 @@ MACRO: (flags) ( array -- )
|
|||
{ f "rgbButtons" 125 { DIDFT_OPTIONAL DIDFT_BUTTON DIDFT_ANYINSTANCE } 0 }
|
||||
{ f "rgbButtons" 126 { DIDFT_OPTIONAL DIDFT_BUTTON DIDFT_ANYINSTANCE } 0 }
|
||||
{ f "rgbButtons" 127 { DIDFT_OPTIONAL DIDFT_BUTTON DIDFT_ANYINSTANCE } 0 }
|
||||
{ GUID_XAxis_malloced "lVX" 0 { DIDFT_OPTIONAL DIDFT_AXIS DIDFT_ANYINSTANCE } 0 }
|
||||
{ GUID_YAxis_malloced "lVY" 0 { DIDFT_OPTIONAL DIDFT_AXIS DIDFT_ANYINSTANCE } 0 }
|
||||
{ GUID_ZAxis_malloced "lVZ" 0 { DIDFT_OPTIONAL DIDFT_AXIS DIDFT_ANYINSTANCE } 0 }
|
||||
{ GUID_RxAxis_malloced "lVRx" 0 { DIDFT_OPTIONAL DIDFT_AXIS DIDFT_ANYINSTANCE } 0 }
|
||||
{ GUID_RyAxis_malloced "lVRy" 0 { DIDFT_OPTIONAL DIDFT_AXIS DIDFT_ANYINSTANCE } 0 }
|
||||
{ GUID_RzAxis_malloced "lVRz" 0 { DIDFT_OPTIONAL DIDFT_AXIS DIDFT_ANYINSTANCE } 0 }
|
||||
{ GUID_Slider_malloced "rglVSlider" 0 { DIDFT_OPTIONAL DIDFT_AXIS DIDFT_ANYINSTANCE } 0 }
|
||||
{ GUID_Slider_malloced "rglVSlider" 1 { DIDFT_OPTIONAL DIDFT_AXIS DIDFT_ANYINSTANCE } 0 }
|
||||
{ GUID_XAxis_malloced "lAX" 0 { DIDFT_OPTIONAL DIDFT_AXIS DIDFT_ANYINSTANCE } 0 }
|
||||
{ GUID_YAxis_malloced "lAY" 0 { DIDFT_OPTIONAL DIDFT_AXIS DIDFT_ANYINSTANCE } 0 }
|
||||
{ GUID_ZAxis_malloced "lAZ" 0 { DIDFT_OPTIONAL DIDFT_AXIS DIDFT_ANYINSTANCE } 0 }
|
||||
{ GUID_RxAxis_malloced "lARx" 0 { DIDFT_OPTIONAL DIDFT_AXIS DIDFT_ANYINSTANCE } 0 }
|
||||
{ GUID_RyAxis_malloced "lARy" 0 { DIDFT_OPTIONAL DIDFT_AXIS DIDFT_ANYINSTANCE } 0 }
|
||||
{ GUID_RzAxis_malloced "lARz" 0 { DIDFT_OPTIONAL DIDFT_AXIS DIDFT_ANYINSTANCE } 0 }
|
||||
{ GUID_Slider_malloced "rglASlider" 0 { DIDFT_OPTIONAL DIDFT_AXIS DIDFT_ANYINSTANCE } 0 }
|
||||
{ GUID_Slider_malloced "rglASlider" 1 { DIDFT_OPTIONAL DIDFT_AXIS DIDFT_ANYINSTANCE } 0 }
|
||||
{ GUID_XAxis_malloced "lFX" 0 { DIDFT_OPTIONAL DIDFT_AXIS DIDFT_ANYINSTANCE } 0 }
|
||||
{ GUID_YAxis_malloced "lFY" 0 { DIDFT_OPTIONAL DIDFT_AXIS DIDFT_ANYINSTANCE } 0 }
|
||||
{ GUID_ZAxis_malloced "lFZ" 0 { DIDFT_OPTIONAL DIDFT_AXIS DIDFT_ANYINSTANCE } 0 }
|
||||
{ GUID_RxAxis_malloced "lFRx" 0 { DIDFT_OPTIONAL DIDFT_AXIS DIDFT_ANYINSTANCE } 0 }
|
||||
{ GUID_RyAxis_malloced "lFRy" 0 { DIDFT_OPTIONAL DIDFT_AXIS DIDFT_ANYINSTANCE } 0 }
|
||||
{ GUID_RzAxis_malloced "lFRz" 0 { DIDFT_OPTIONAL DIDFT_AXIS DIDFT_ANYINSTANCE } 0 }
|
||||
{ GUID_Slider_malloced "rglFSlider" 0 { DIDFT_OPTIONAL DIDFT_AXIS DIDFT_ANYINSTANCE } 0 }
|
||||
{ GUID_Slider_malloced "rglFSlider" 1 { DIDFT_OPTIONAL DIDFT_AXIS DIDFT_ANYINSTANCE } 0 }
|
||||
{ GUID_XAxis_malloced "lVX" 0 { DIDFT_OPTIONAL DIDFT_AXIS DIDFT_ANYINSTANCE } DIDOI_ASPECTVELOCITY }
|
||||
{ GUID_YAxis_malloced "lVY" 0 { DIDFT_OPTIONAL DIDFT_AXIS DIDFT_ANYINSTANCE } DIDOI_ASPECTVELOCITY }
|
||||
{ GUID_ZAxis_malloced "lVZ" 0 { DIDFT_OPTIONAL DIDFT_AXIS DIDFT_ANYINSTANCE } DIDOI_ASPECTVELOCITY }
|
||||
{ GUID_RxAxis_malloced "lVRx" 0 { DIDFT_OPTIONAL DIDFT_AXIS DIDFT_ANYINSTANCE } DIDOI_ASPECTVELOCITY }
|
||||
{ GUID_RyAxis_malloced "lVRy" 0 { DIDFT_OPTIONAL DIDFT_AXIS DIDFT_ANYINSTANCE } DIDOI_ASPECTVELOCITY }
|
||||
{ GUID_RzAxis_malloced "lVRz" 0 { DIDFT_OPTIONAL DIDFT_AXIS DIDFT_ANYINSTANCE } DIDOI_ASPECTVELOCITY }
|
||||
{ GUID_Slider_malloced "rglVSlider" 0 { DIDFT_OPTIONAL DIDFT_AXIS DIDFT_ANYINSTANCE } DIDOI_ASPECTVELOCITY }
|
||||
{ GUID_Slider_malloced "rglVSlider" 1 { DIDFT_OPTIONAL DIDFT_AXIS DIDFT_ANYINSTANCE } DIDOI_ASPECTVELOCITY }
|
||||
{ GUID_XAxis_malloced "lAX" 0 { DIDFT_OPTIONAL DIDFT_AXIS DIDFT_ANYINSTANCE } DIDOI_ASPECTACCEL }
|
||||
{ GUID_YAxis_malloced "lAY" 0 { DIDFT_OPTIONAL DIDFT_AXIS DIDFT_ANYINSTANCE } DIDOI_ASPECTACCEL }
|
||||
{ GUID_ZAxis_malloced "lAZ" 0 { DIDFT_OPTIONAL DIDFT_AXIS DIDFT_ANYINSTANCE } DIDOI_ASPECTACCEL }
|
||||
{ GUID_RxAxis_malloced "lARx" 0 { DIDFT_OPTIONAL DIDFT_AXIS DIDFT_ANYINSTANCE } DIDOI_ASPECTACCEL }
|
||||
{ GUID_RyAxis_malloced "lARy" 0 { DIDFT_OPTIONAL DIDFT_AXIS DIDFT_ANYINSTANCE } DIDOI_ASPECTACCEL }
|
||||
{ GUID_RzAxis_malloced "lARz" 0 { DIDFT_OPTIONAL DIDFT_AXIS DIDFT_ANYINSTANCE } DIDOI_ASPECTACCEL }
|
||||
{ GUID_Slider_malloced "rglASlider" 0 { DIDFT_OPTIONAL DIDFT_AXIS DIDFT_ANYINSTANCE } DIDOI_ASPECTACCEL }
|
||||
{ GUID_Slider_malloced "rglASlider" 1 { DIDFT_OPTIONAL DIDFT_AXIS DIDFT_ANYINSTANCE } DIDOI_ASPECTACCEL }
|
||||
{ GUID_XAxis_malloced "lFX" 0 { DIDFT_OPTIONAL DIDFT_AXIS DIDFT_ANYINSTANCE } DIDOI_ASPECTFORCE }
|
||||
{ GUID_YAxis_malloced "lFY" 0 { DIDFT_OPTIONAL DIDFT_AXIS DIDFT_ANYINSTANCE } DIDOI_ASPECTFORCE }
|
||||
{ GUID_ZAxis_malloced "lFZ" 0 { DIDFT_OPTIONAL DIDFT_AXIS DIDFT_ANYINSTANCE } DIDOI_ASPECTFORCE }
|
||||
{ GUID_RxAxis_malloced "lFRx" 0 { DIDFT_OPTIONAL DIDFT_AXIS DIDFT_ANYINSTANCE } DIDOI_ASPECTFORCE }
|
||||
{ GUID_RyAxis_malloced "lFRy" 0 { DIDFT_OPTIONAL DIDFT_AXIS DIDFT_ANYINSTANCE } DIDOI_ASPECTFORCE }
|
||||
{ GUID_RzAxis_malloced "lFRz" 0 { DIDFT_OPTIONAL DIDFT_AXIS DIDFT_ANYINSTANCE } DIDOI_ASPECTFORCE }
|
||||
{ GUID_Slider_malloced "rglFSlider" 0 { DIDFT_OPTIONAL DIDFT_AXIS DIDFT_ANYINSTANCE } DIDOI_ASPECTFORCE }
|
||||
{ GUID_Slider_malloced "rglFSlider" 1 { DIDFT_OPTIONAL DIDFT_AXIS DIDFT_ANYINSTANCE } DIDOI_ASPECTFORCE }
|
||||
} <DIDATAFORMAT>
|
||||
] unless* ] change-at ;
|
||||
|
||||
|
|
|
@ -434,6 +434,16 @@ FUNCTION: HRESULT DirectInput8Create ( HINSTANCE hinst, DWORD dwVersion, REFIID
|
|||
: DIDFT_ENUMCOLLECTION ( n -- instance ) 8 shift HEX: FFFF bitand ; inline
|
||||
: DIDFT_NOCOLLECTION HEX: 00FFFF00 ; inline
|
||||
|
||||
: DIDOI_FFACTUATOR HEX: 00000001 ; inline
|
||||
: DIDOI_FFEFFECTTRIGGER HEX: 00000002 ; inline
|
||||
: DIDOI_POLLED HEX: 00008000 ; inline
|
||||
: DIDOI_ASPECTPOSITION HEX: 00000100 ; inline
|
||||
: DIDOI_ASPECTVELOCITY HEX: 00000200 ; inline
|
||||
: DIDOI_ASPECTACCEL HEX: 00000300 ; inline
|
||||
: DIDOI_ASPECTFORCE HEX: 00000400 ; inline
|
||||
: DIDOI_ASPECTMASK HEX: 00000F00 ; inline
|
||||
: DIDOI_GUIDISUSAGE HEX: 00010000 ; inline
|
||||
|
||||
: DISCL_EXCLUSIVE HEX: 00000001 ; inline
|
||||
: DISCL_NONEXCLUSIVE HEX: 00000002 ; inline
|
||||
: DISCL_FOREGROUND HEX: 00000004 ; inline
|
||||
|
|
Loading…
Reference in New Issue