rpcsx/rpcs3/Emu/Cell/Modules/cellOskDialog.h
al0xf f2ba41af46 Stub cellOsk (#2264)
* Stub cellOsk

Returns the word "rpcs3" as OSK input for now. Tested and working in
Terraria, Nier, and some homebrew. The next step would be to hook it up
to the GUI so the user can enter any text.

* Fix commit

* Fix formatting

* cellOsk improvements

* cellOsk improvements
2017-01-19 01:01:25 +03:00

153 lines
3.5 KiB
C++

#pragma once
namespace vm { using namespace ps3; }
//error codes
enum
{
CELL_OSKDIALOG_OK = 0x0,
CELL_OSKDIALOG_ERROR_IME_ALREADY_IN_USE = 0x8002b501,
CELL_OSKDIALOG_ERROR_GET_SIZE_ERROR = 0x8002b502,
CELL_OSKDIALOG_ERROR_UNKNOWN = 0x8002b503,
CELL_OSKDIALOG_ERROR_PARAM = 0x8002b504,
};
//OSK status for the callback
enum
{
CELL_SYSUTIL_OSKDIALOG_LOADED = 0x0502,
CELL_SYSUTIL_OSKDIALOG_FINISHED = 0x0503,
CELL_SYSUTIL_OSKDIALOG_UNLOADED = 0x0504,
CELL_SYSUTIL_OSKDIALOG_INPUT_ENTERED = 0x0505,
CELL_SYSUTIL_OSKDIALOG_INPUT_CANCELED = 0x0506,
CELL_SYSUTIL_OSKDIALOG_INPUT_DEVICE_CHANGED = 0x0507,
CELL_SYSUTIL_OSKDIALOG_DISPLAY_CHANGED = 0x0508,
};
enum CellOskDialogInputFieldResult
{
CELL_OSKDIALOG_INPUT_FIELD_RESULT_OK = 0,
CELL_OSKDIALOG_INPUT_FIELD_RESULT_CANCELED = 1,
CELL_OSKDIALOG_INPUT_FIELD_RESULT_ABORT = 2,
CELL_OSKDIALOG_INPUT_FIELD_RESULT_NO_INPUT_TEXT = 3,
};
enum CellOskDialogInitialKeyLayout
{
CELL_OSKDIALOG_INITIAL_PANEL_LAYOUT_SYSTEM = 0,
CELL_OSKDIALOG_INITIAL_PANEL_LAYOUT_10KEY = 1,
CELL_OSKDIALOG_INITIAL_PANEL_LAYOUT_FULLKEY = 2,
};
enum CellOskDialogInputDevice
{
CELL_OSKDIALOG_INPUT_DEVICE_PAD = 0,
CELL_OSKDIALOG_INPUT_DEVICE_KEYBOARD = 1,
};
enum CellOskDialogContinuousMode
{
CELL_OSKDIALOG_CONTINUOUS_MODE_NONE = 0,
CELL_OSKDIALOG_CONTINUOUS_MODE_REMAIN_OPEN = 1,
CELL_OSKDIALOG_CONTINUOUS_MODE_HIDE = 2,
CELL_OSKDIALOG_CONTINUOUS_MODE_SHOW = 3,
};
enum CellOskDialogDisplayStatus
{
CELL_OSKDIALOG_DISPLAY_STATUS_HIDE = 0,
CELL_OSKDIALOG_DISPLAY_STATUS_SHOW = 1,
};
enum CellOskDialogFilterCallbackReturnValue
{
CELL_OSKDIALOG_NOT_CHANGE = 0,
CELL_OSKDIALOG_CHANGE_WORD = 1,
};
enum CellOskDialogActionValue
{
CELL_OSKDIALOG_CHANGE_NO_EVENT = 0,
CELL_OSKDIALOG_CHANGE_EVENT_CANCEL = 1,
CELL_OSKDIALOG_CHANGE_WORDS_INPUT = 3,
CELL_OSKDIALOG_CHANGE_WORDS_INSERT = 4,
CELL_OSKDIALOG_CHANGE_WORDS_REPLACE_ALL = 6,
};
enum CellOskDialogFinishReason
{
CELL_OSKDIALOG_CLOSE_CONFIRM = 0,
CELL_OSKDIALOG_CLOSE_CANCEL = 1,
};
enum CellOskDialogType
{
CELL_OSKDIALOG_TYPE_SINGLELINE_OSK = 0,
CELL_OSKDIALOG_TYPE_MULTILINE_OSK = 1,
CELL_OSKDIALOG_TYPE_FULL_KEYBOARD_SINGLELINE_OSK = 2,
CELL_OSKDIALOG_TYPE_FULL_KEYBOARD_MULTILINE_OSK = 3,
CELL_OSKDIALOG_TYPE_SEPARATE_SINGLELINE_TEXT_WINDOW = 4,
CELL_OSKDIALOG_TYPE_SEPARATE_MULTILINE_TEXT_WINDOW = 5,
CELL_OSKDIALOG_TYPE_SEPARATE_INPUT_PANEL_WINDOW = 6,
CELL_OSKDIALOG_TYPE_SEPARATE_FULL_KEYBOARD_INPUT_PANEL_WINDOW = 7,
CELL_OSKDIALOG_TYPE_SEPARATE_CANDIDATE_WINDOW = 8,
};
struct CellOskDialogInputFieldInfo
{
vm::bptr<u16> message;
vm::bptr<u16> init_text;
be_t<u32> limit_length;
};
struct CellOskDialogPoint
{
be_t<f32> x;
be_t<f32> y;
};
struct CellOskDialogParam
{
be_t<u32> allowOskPanelFlg;
be_t<u32> firstViewPanel;
CellOskDialogPoint controlPoint;
be_t<s32> prohibitFlgs;
};
//Actual input data
struct CellOskDialogCallbackReturnParam
{
be_t<s32> result; //CellOskDialogInputFieldResult
be_t<s32> numCharsResultString;
vm::bptr<u16> pResultString;
};
struct CellOskDialogLayoutInfo
{
be_t<s32> layoutMode;
CellOskDialogPoint position;
};
struct CellOskDialogSeparateWindowOption
{
be_t<s32> continuousMode; //CellOskDialogContinuousMode
be_t<s32> deviceMask;
be_t<s32> inputFieldWindowWidth;
be_t<f32> inputFieldBackgroundTrans;
vm::bptr<CellOskDialogLayoutInfo> inputFieldLayoutInfo;
vm::bptr<CellOskDialogLayoutInfo> inputPanelLayoutInfo;
vm::bptr<void> reserved;
};
struct CellOskDialogKeyMessage
{
be_t<u32> led;
be_t<u32> mkey;
be_t<u16> keycode;
};
struct CellOskDialogImeDictionaryInfo
{
be_t<u32> targetLanguage;
vm::bcptr<char> dictionaryPath;
};