diff --git a/4J_Input/Xbox/4J_Input.cpp b/4J_Input/Xbox/4J_Input.cpp index 1ebae84..ee79220 100644 --- a/4J_Input/Xbox/4J_Input.cpp +++ b/4J_Input/Xbox/4J_Input.cpp @@ -149,12 +149,12 @@ C4JStorage::EMessageResult C_4JInput::RequestMessageBox(LPCWSTR uiTitle, LPCWSTR return InternalInputManager.m_MessageUI.RequestMessageBox(uiTitle, uiText, uiButtons, uiButtonCount, dwPad, Func, lpParam, dwFocusButton); } -/*void C_4JInput::GetText(uint16_t *UTF16String) +void C_4JInput::GetText(uint16_t *UTF16String) { InternalInputManager.m_Keyboard.GetText(UTF16String); } -bool C_4JInput::VerifyStrings(WCHAR **pwStringA, int iStringC, int (*Func)(LPVOID, STRING_VERIFY_RESPONSE *), LPVOID lpParam) +/*bool C_4JInput::VerifyStrings(WCHAR **pwStringA, int iStringC, int (*Func)(LPVOID, STRING_VERIFY_RESPONSE *), LPVOID lpParam) { return true; } diff --git a/4J_Input/Xbox/INP_Keyboard.cpp b/4J_Input/Xbox/INP_Keyboard.cpp index b34994a..9300153 100644 --- a/4J_Input/Xbox/INP_Keyboard.cpp +++ b/4J_Input/Xbox/INP_Keyboard.cpp @@ -9,7 +9,8 @@ CKeyboard::CKeyboard() void CKeyboard::Tick(void) { - if (bActive && KeyboardOverlap.InternalLow != ERROR_IO_PENDING) + //str1k3r - decomp is (bActive && KeyboardOverlap->InternalLow != ERROR_IO_PENDING) but XHasOverlappedIoCompleted does the same thing... + if (bActive && XHasOverlappedIoCompleted(&KeyboardOverlap)) { if(Func != NULL) Func(lpParam, KeyboardOverlap.dwExtendedError == 0); bActive = false; @@ -88,17 +89,23 @@ C_4JInput::EKeyboardResult CKeyboard::RequestKeyboard(LPCWSTR uiTitle, LPCWSTR u return eState; } -//str1k3r - These 2 only exist cause of iggy +//str1k3r - These 3 only exist cause of iggy C_4JInput::EKeyboardResult CKeyboard::RequestKeyboard(LPCWSTR uiTitle, LPCWSTR uiText, LPCWSTR uiDesc, DWORD dwPad, UINT uiMaxChars, int(*Func)(LPVOID, const bool), LPVOID lpParam, C_4JInput::EKeyboardMode eMode) { - return RequestKeyboard(uiTitle, uiText, uiDesc, dwPad, pwchResult, uiMaxChars, Func, lpParam, eMode); + return RequestKeyboard(uiTitle, uiText, uiDesc, dwPad, L"", uiMaxChars, Func, lpParam, eMode); +} + +//str1k3r - heh i destroyed your keyboard +void CKeyboard::DestroyKeyboard() +{ + if (!XHasOverlappedIoCompleted(&KeyboardOverlap)) + { + XCancelOverlapped(&KeyboardOverlap); + bActive = false; + } } void CKeyboard::GetText(uint16_t *UTF16String) { - //uint16_t *keyString; - //for (unsigned int index = 0; keyString[index] && index < 0x200; index++) - //{ - // UTF16String[index] = keyString[index]; - //} + wcsncpy_s(reinterpret_cast(UTF16String), 65, pwchResult, 64); } \ No newline at end of file diff --git a/4J_Input/Xbox/INP_Keyboard.h b/4J_Input/Xbox/INP_Keyboard.h index 7263df2..d0d2dca 100644 --- a/4J_Input/Xbox/INP_Keyboard.h +++ b/4J_Input/Xbox/INP_Keyboard.h @@ -21,7 +21,8 @@ public: C_4JInput::EKeyboardResult RequestKeyboard(LPCWSTR uiTitle, LPCWSTR uiText, LPCWSTR uiDesc, DWORD dwPad, WCHAR *pwchResult, UINT uiMaxChars, int (*Func)(LPVOID, const bool), LPVOID lpParam, C_4JInput::EKeyboardMode eMode = C_4JInput::EKeyboardMode_Default); - //str1k3r - These 2 only exist cause of iggy + //str1k3r - These 3 only exist cause of iggy C_4JInput::EKeyboardResult RequestKeyboard(LPCWSTR uiTitle, LPCWSTR uiText, LPCWSTR uiDesc, DWORD dwPad, UINT uiMaxChars, int(*Func)(LPVOID, const bool), LPVOID lpParam, C_4JInput::EKeyboardMode eMode); - void GetText(uint16_t *UTF16String); + void DestroyKeyboard(); + void GetText(uint16_t *UTF16String); }; \ No newline at end of file diff --git a/Headers/Xbox/4J_Input.h b/Headers/Xbox/4J_Input.h index 43e4702..555ef95 100644 --- a/Headers/Xbox/4J_Input.h +++ b/Headers/Xbox/4J_Input.h @@ -1,4 +1,5 @@ #pragma once +#include "4J_Storage.h" #define MAP_STYLE_0 0 #define MAP_STYLE_1 1 @@ -99,13 +100,15 @@ public: void SetMenuDisplayed(int iPad, bool bVal); -// EKeyboardResult RequestKeyboard(UINT uiTitle, UINT uiText, UINT uiDesc, DWORD dwPad, WCHAR *pwchResult, UINT uiResultSize,int( *Func)(LPVOID,const bool),LPVOID lpParam,EKeyboardMode eMode,CXuiStringTable *pStringTable=NULL); -// EKeyboardResult RequestKeyboard(UINT uiTitle, LPCWSTR pwchDefault, UINT uiDesc, DWORD dwPad, WCHAR *pwchResult, UINT uiResultSize,int( *Func)(LPVOID,const bool),LPVOID lpParam, EKeyboardMode eMode,CXuiStringTable *pStringTable=NULL); + //str1k3r - dont ask. EKeyboardResult RequestKeyboard(LPCWSTR uiTitle, LPCWSTR uiText, DWORD dwPad, WCHAR *pwchResult, UINT uiMaxChars, int(*Func)(LPVOID, const bool), LPVOID lpParam, EKeyboardMode eMode); EKeyboardResult RequestKeyboard(LPCWSTR uiTitle, LPCWSTR pwchDefault, LPCWSTR uiDesc, DWORD dwPad, WCHAR *pwchResult, UINT uiMaxChars, int(*Func)(LPVOID, const bool), LPVOID lpParam, EKeyboardMode eMode); EKeyboardResult RequestKeyboard(LPCWSTR uiTitle, LPCWSTR uiText, DWORD dwPad, UINT uiMaxChars, int(*Func)(LPVOID, const bool), LPVOID lpParam, C_4JInput::EKeyboardMode eMode); C4JStorage::EMessageResult RequestMessageBox(LPCWSTR uiTitle, LPCWSTR uiText, LPCWSTR *uiButtons, UINT uiButtonCount, DWORD dwPad, int(*Func)(LPVOID, int, const C4JStorage::EMessageResult), LPVOID lpParam, DWORD dwFocusButton); + void DestroyKeyboard(); + void GetText(uint16_t *UTF16String); + // Online check strings against offensive list - TCR 92 // TCR # 092 CMTV Player Text String Verification // Requirement Any player-entered text visible to another player on Xbox LIVE must be verified using the Xbox LIVE service before being transmitted. Text that is rejected by the Xbox LIVE service must not be displayed.