Implemented basic handling of assessibility actions.
This commit is contained in:
parent
15a478f839
commit
735a3292ca
|
@ -62,6 +62,169 @@ DECL_WINELIB_TYPE_AW(WINSTAENUMPROC)
|
|||
|
||||
typedef HANDLE HDWP;
|
||||
|
||||
/* flags for FILTERKEYS dwFlags field */
|
||||
#define FKF_AVAILABLE 0x00000002
|
||||
#define FKF_CLICKON 0x00000040
|
||||
#define FKF_FILTERKEYSON 0x00000001
|
||||
#define FKF_HOTKEYACTIVE 0x00000004
|
||||
#define FKF_HOTKEYSOUND 0x00000010
|
||||
#define FKF_CONFIRMHOTKEY 0x00000008
|
||||
#define FKF_INDICATOR 0x00000020
|
||||
|
||||
typedef struct tagFILTERKEYS
|
||||
{
|
||||
UINT cbSize;
|
||||
DWORD dwFlags;
|
||||
DWORD iWaitMSec;
|
||||
DWORD iDelayMSec;
|
||||
DWORD iRepeatMSec;
|
||||
DWORD iBounceMSec;
|
||||
} FILTERKEYS, *PFILTERKEYS, *LPFILTERKEYS;
|
||||
|
||||
/* flags for TOGGLEKEYS dwFlags field */
|
||||
#define TKF_AVAILABLE 0x00000002
|
||||
#define TKF_CONFIRMHOTKEY 0x00000008
|
||||
#define TKF_HOTKEYACTIVE 0x00000004
|
||||
#define TKF_HOTKEYSOUND 0x00000010
|
||||
#define TKF_TOGGLEKEYSON 0x00000001
|
||||
|
||||
typedef struct tagTOGGLEKEYS
|
||||
{
|
||||
DWORD cbSize;
|
||||
DWORD dwFlags;
|
||||
} TOGGLEKEYS, *PTOGGLEKEYS, *LPTOGGLEKEYS;
|
||||
|
||||
/* flags for MOUSEKEYS dwFlags field */
|
||||
#define MKF_AVAILABLE 0x00000002
|
||||
#define MKF_CONFIRMHOTKEY 0x00000008
|
||||
#define MKF_HOTKEYACTIVE 0x00000004
|
||||
#define MKF_HOTKEYSOUND 0x00000010
|
||||
#define MKF_INDICATOR 0x00000020
|
||||
#define MKF_MOUSEKEYSON 0x00000001
|
||||
#define MKF_MODIFIERS 0x00000040
|
||||
#define MKF_REPLACENUMBERS 0x00000080
|
||||
|
||||
typedef struct tagMOUSEKEYS
|
||||
{
|
||||
UINT cbSize;
|
||||
DWORD dwFlags;
|
||||
DWORD iMaxSpeed;
|
||||
DWORD iTimeToMaxSpeed;
|
||||
DWORD iCtrlSpeed;
|
||||
DWORD dwReserved1;
|
||||
DWORD dwReserved2;
|
||||
} MOUSEKEYS, *PMOUSEKEYS, *LPMOUSEKEYS;
|
||||
|
||||
/* flags for STICKYKEYS dwFlags field */
|
||||
#define SKF_AUDIBLEFEEDBACK 0x00000040
|
||||
#define SKF_AVAILABLE 0x00000002
|
||||
#define SKF_CONFIRMHOTKEY 0x00000008
|
||||
#define SKF_HOTKEYACTIVE 0x00000004
|
||||
#define SKF_HOTKEYSOUND 0x00000010
|
||||
#define SKF_INDICATOR 0x00000020
|
||||
#define SKF_STICKYKEYSON 0x00000001
|
||||
#define SKF_TRISTATE 0x00000080
|
||||
#define SKF_TWOKEYSOFF 0x00000100
|
||||
|
||||
typedef struct tagSTICKYKEYS
|
||||
{
|
||||
DWORD cbSize;
|
||||
DWORD dwFlags;
|
||||
} STICKYKEYS, *PSTICKYKEYS, *LPSTICKYKEYS;
|
||||
|
||||
/* flags for ACCESSTIMEOUT dwFlags field */
|
||||
#define ATF_ONOFFFEEDBACK 0x00000002
|
||||
#define ATF_AVAILABLE 0x00000004
|
||||
#define ATF_TIMEOUTON 0x00000001
|
||||
|
||||
typedef struct tagACCESSTIMEOUT
|
||||
{
|
||||
UINT cbSize;
|
||||
DWORD dwFlags;
|
||||
DWORD iTimeOutMSec;
|
||||
} ACCESSTIMEOUT, *PACCESSTIMEOUT, *LPACCESSTIMEOUT;
|
||||
|
||||
/* flags for SERIALKEYS dwFlags field */
|
||||
#define SERKF_ACTIVE 0x00000008
|
||||
#define SERKF_AVAILABLE 0x00000002
|
||||
#define SERKF_INDICATOR 0x00000004
|
||||
#define SERKF_SERIALKEYSON 0x00000001
|
||||
|
||||
typedef struct tagSERIALKEYSA
|
||||
{
|
||||
UINT cbSize;
|
||||
DWORD dwFlags;
|
||||
LPSTR lpszActivePort;
|
||||
LPSTR lpszPort;
|
||||
UINT iBaudRate;
|
||||
UINT iPortState;
|
||||
UINT iActive;
|
||||
} SERIALKEYSA, *LPSERIALKEYSA;
|
||||
|
||||
typedef struct tagSERIALKEYSW {
|
||||
UINT cbSize;
|
||||
DWORD dwFlags;
|
||||
LPWSTR lpszActivePort;
|
||||
LPWSTR lpszPort;
|
||||
UINT iBaudRate;
|
||||
UINT iPortState;
|
||||
UINT iActive;
|
||||
} SERIALKEYSW,*LPSERIALKEYSW;
|
||||
|
||||
DECL_WINELIB_TYPE_AW(SERIALKEYS)
|
||||
DECL_WINELIB_TYPE_AW(LPSERIALKEYS)
|
||||
|
||||
/* flags for SOUNDSENTRY dwFlags field */
|
||||
#define SSF_AVAILABLE 0x00000002
|
||||
#define SSF_SOUNDSENTRYON 0x00000001
|
||||
|
||||
#define SSTF_BORDER 0x00000002
|
||||
#define SSTF_CHARS 0x00000001
|
||||
#define SSTF_DISPLAY 0x00000003
|
||||
#define SSTF_NONE 0x00000000
|
||||
|
||||
#define SSGF_DISPLAY 0x00000003
|
||||
#define SSGF_NONE 0x00000000
|
||||
|
||||
#define SSWF_DISPLAY 0x00000003
|
||||
#define SSWF_NONE 0x00000000
|
||||
#define SSWF_TITLE 0x00000001
|
||||
#define SSWF_WINDOW 0x00000002
|
||||
|
||||
typedef struct tagSOUNDSENTRYA
|
||||
{
|
||||
UINT cbSize;
|
||||
DWORD dwFlags;
|
||||
DWORD iFSTextEffect;
|
||||
DWORD iFSTextEffectMSec;
|
||||
DWORD iFSTextEffectColorBits;
|
||||
DWORD iFSGrafEffect;
|
||||
DWORD iFSGrafEffectMSec;
|
||||
DWORD iFSGrafEffectColor;
|
||||
DWORD iWindowsEffect;
|
||||
DWORD iWindowsEffectMSec;
|
||||
LPSTR lpszWindowsEffectDLL;
|
||||
DWORD iWindowsEffectOrdinal;
|
||||
} SOUNDSENTRYA, *LPSOUNDSENTRYA;
|
||||
|
||||
typedef struct tagSOUNDSENTRYW
|
||||
{
|
||||
UINT cbSize;
|
||||
DWORD dwFlags;
|
||||
DWORD iFSTextEffect;
|
||||
DWORD iFSTextEffectMSec;
|
||||
DWORD iFSTextEffectColorBits;
|
||||
DWORD iFSGrafEffect;
|
||||
DWORD iFSGrafEffectMSec;
|
||||
DWORD iFSGrafEffectColor;
|
||||
DWORD iWindowsEffect;
|
||||
DWORD iWindowsEffectMSec;
|
||||
LPWSTR lpszWindowsEffectDLL;
|
||||
DWORD iWindowsEffectOrdinal;
|
||||
} SOUNDSENTRYW, *LPSOUNDSENTRYW;
|
||||
|
||||
DECL_WINELIB_TYPE_AW(SOUNDSENTRY)
|
||||
DECL_WINELIB_TYPE_AW(LPSOUNDSENTRY)
|
||||
|
||||
/* flags for HIGHCONTRAST dwFlags field */
|
||||
#define HCF_HIGHCONTRASTON 0x00000001
|
||||
|
@ -98,7 +261,6 @@ typedef struct
|
|||
HWND hwnd;
|
||||
} EVENTMSG, *PEVENTMSG, *LPEVENTMSG;
|
||||
|
||||
|
||||
/* WH_KEYBOARD_LL structure */
|
||||
typedef struct tagKBDLLHOOKSTRUCT
|
||||
{
|
||||
|
|
|
@ -1255,12 +1255,66 @@ BOOL WINAPI SystemParametersInfoA( UINT uiAction, UINT uiParam,
|
|||
|
||||
WINE_SPI_FIXME(SPI_SETPENWINDOWS); /* 49 WINVER >= 0x400 */
|
||||
|
||||
WINE_SPI_FIXME(SPI_GETFILTERKEYS); /* 50 */
|
||||
case SPI_GETFILTERKEYS: /* 50 */
|
||||
{
|
||||
LPFILTERKEYS lpFilterKeys = (LPFILTERKEYS)pvParam;
|
||||
WARN("SPI_GETFILTERKEYS not fully implemented\n");
|
||||
if (lpFilterKeys->cbSize == sizeof(FILTERKEYS))
|
||||
{
|
||||
/* Indicate that no FilterKeys feature available */
|
||||
lpFilterKeys->dwFlags = 0;
|
||||
lpFilterKeys->iWaitMSec = 0;
|
||||
lpFilterKeys->iDelayMSec = 0;
|
||||
lpFilterKeys->iRepeatMSec = 0;
|
||||
lpFilterKeys->iBounceMSec = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
ret = FALSE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
WINE_SPI_FIXME(SPI_SETFILTERKEYS); /* 51 */
|
||||
WINE_SPI_FIXME(SPI_GETTOGGLEKEYS); /* 52 */
|
||||
|
||||
case SPI_GETTOGGLEKEYS: /* 52 */
|
||||
{
|
||||
LPTOGGLEKEYS lpToggleKeys = (LPTOGGLEKEYS)pvParam;
|
||||
WARN("SPI_GETTOGGLEKEYS not fully implemented\n");
|
||||
if (lpToggleKeys->cbSize == sizeof(TOGGLEKEYS))
|
||||
{
|
||||
/* Indicate that no ToggleKeys feature available */
|
||||
lpToggleKeys->dwFlags = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
ret = FALSE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
WINE_SPI_FIXME(SPI_SETTOGGLEKEYS); /* 53 */
|
||||
WINE_SPI_FIXME(SPI_GETMOUSEKEYS); /* 54 */
|
||||
|
||||
case SPI_GETMOUSEKEYS: /* 54 */
|
||||
{
|
||||
LPMOUSEKEYS lpMouseKeys = (LPMOUSEKEYS)pvParam;
|
||||
WARN("SPI_GETMOUSEKEYS not fully implemented\n");
|
||||
if (lpMouseKeys->cbSize == sizeof(MOUSEKEYS))
|
||||
{
|
||||
/* Indicate that no MouseKeys feature available */
|
||||
lpMouseKeys->dwFlags = 0;
|
||||
lpMouseKeys->iMaxSpeed = 360;
|
||||
lpMouseKeys->iTimeToMaxSpeed = 1000;
|
||||
lpMouseKeys->iCtrlSpeed = 0;
|
||||
lpMouseKeys->dwReserved1 = 0;
|
||||
lpMouseKeys->dwReserved2 = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
ret = FALSE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
WINE_SPI_FIXME(SPI_SETMOUSEKEYS); /* 55 */
|
||||
|
||||
case SPI_GETSHOWSOUNDS: /* 56 */
|
||||
spi_idx = SPI_SETSHOWSOUNDS_IDX;
|
||||
|
||||
|
@ -1297,15 +1351,88 @@ BOOL WINAPI SystemParametersInfoA( UINT uiAction, UINT uiParam,
|
|||
ret = FALSE;
|
||||
break;
|
||||
}
|
||||
WINE_SPI_FIXME(SPI_GETSTICKYKEYS); /* 58 */
|
||||
|
||||
case SPI_GETSTICKYKEYS: /* 58 */
|
||||
{
|
||||
LPSTICKYKEYS lpStickyKeys = (LPSTICKYKEYS)pvParam;
|
||||
WARN("SPI_GETSTICKYKEYS not fully implemented\n");
|
||||
if (lpStickyKeys->cbSize == sizeof(STICKYKEYS))
|
||||
{
|
||||
/* Indicate that no StickyKeys feature available */
|
||||
lpStickyKeys->dwFlags = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
ret = FALSE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
WINE_SPI_FIXME(SPI_SETSTICKYKEYS); /* 59 */
|
||||
WINE_SPI_FIXME(SPI_GETACCESSTIMEOUT); /* 60 */
|
||||
|
||||
case SPI_GETACCESSTIMEOUT: /* 60 */
|
||||
{
|
||||
LPACCESSTIMEOUT lpAccessTimeout = (LPACCESSTIMEOUT)pvParam;
|
||||
WARN("SPI_GETACCESSTIMEOUT not fully implemented\n");
|
||||
if (lpAccessTimeout->cbSize == sizeof(ACCESSTIMEOUT))
|
||||
{
|
||||
/* Indicate that no accessibility features timeout is available */
|
||||
lpAccessTimeout->dwFlags = 0;
|
||||
lpAccessTimeout->iTimeOutMSec = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
ret = FALSE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
WINE_SPI_FIXME(SPI_SETACCESSTIMEOUT); /* 61 */
|
||||
|
||||
WINE_SPI_FIXME(SPI_GETSERIALKEYS); /* 62 WINVER >= 0x400 */
|
||||
case SPI_GETSERIALKEYS: /* 62 WINVER >= 0x400 */
|
||||
{
|
||||
LPSERIALKEYSA lpSerialKeysA = (LPSERIALKEYSA)pvParam;
|
||||
WARN("SPI_GETSERIALKEYS not fully implemented\n");
|
||||
if (lpSerialKeysA->cbSize == sizeof(SERIALKEYSA))
|
||||
{
|
||||
/* Indicate that no SerialKeys feature available */
|
||||
lpSerialKeysA->dwFlags = 0;
|
||||
lpSerialKeysA->lpszActivePort = NULL;
|
||||
lpSerialKeysA->lpszPort = NULL;
|
||||
lpSerialKeysA->iBaudRate = 0;
|
||||
lpSerialKeysA->iPortState = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
ret = FALSE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
WINE_SPI_FIXME(SPI_SETSERIALKEYS); /* 63 WINVER >= 0x400 */
|
||||
|
||||
WINE_SPI_FIXME(SPI_GETSOUNDSENTRY); /* 64 */
|
||||
case SPI_GETSOUNDSENTRY: /* 64 */
|
||||
{
|
||||
LPSOUNDSENTRYA lpSoundSentryA = (LPSOUNDSENTRYA)pvParam;
|
||||
WARN("SPI_GETSOUNDSENTRY not fully implemented\n");
|
||||
if (lpSoundSentryA->cbSize == sizeof(SOUNDSENTRYA))
|
||||
{
|
||||
/* Indicate that no SoundSentry feature available */
|
||||
lpSoundSentryA->dwFlags = 0;
|
||||
lpSoundSentryA->iFSTextEffect = 0;
|
||||
lpSoundSentryA->iFSTextEffectMSec = 0;
|
||||
lpSoundSentryA->iFSTextEffectColorBits = 0;
|
||||
lpSoundSentryA->iFSGrafEffect = 0;
|
||||
lpSoundSentryA->iFSGrafEffectMSec = 0;
|
||||
lpSoundSentryA->iFSGrafEffectColor = 0;
|
||||
lpSoundSentryA->iWindowsEffect = 0;
|
||||
lpSoundSentryA->iWindowsEffectMSec = 0;
|
||||
lpSoundSentryA->lpszWindowsEffectDLL = 0;
|
||||
lpSoundSentryA->iWindowsEffectOrdinal = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
ret = FALSE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
WINE_SPI_FIXME(SPI_SETSOUNDSENTRY); /* 65 */
|
||||
|
||||
case SPI_GETHIGHCONTRAST: /* 66 WINVER >= 0x400 */
|
||||
|
@ -1314,7 +1441,7 @@ BOOL WINAPI SystemParametersInfoA( UINT uiAction, UINT uiParam,
|
|||
WARN("SPI_GETHIGHCONTRAST not fully implemented\n");
|
||||
if (lpHighContrastA->cbSize == sizeof(HIGHCONTRASTA))
|
||||
{
|
||||
/* Indicate that there is no high contrast available */
|
||||
/* Indicate that no high contrast feature available */
|
||||
lpHighContrastA->dwFlags = 0;
|
||||
lpHighContrastA->lpszDefaultScheme = NULL;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue