public static void GetInputSourceIcons(uint mapperSource, uint mapperParameter, ref atFixedArray_sIconData_4 icons) => Invoke(Memory.CTextFormat_GetInputSourceIcons, mapperSource, mapperParameter, AsPointer(ref icons));
public static void GetIconListFormatString(ref atFixedArray_sIconData_4 icons, byte *buffer, uint bufferSize) => Invoke(Memory.CTextFormat_GetIconListFormatString, AsPointer(ref icons), buffer, bufferSize, null);
public static unsafe string GetId(this InstructionalKey key) { // special cases switch (key) { case InstructionalKey.ControllerDPadNone: return("b_8"); case InstructionalKey.ControllerDPadAll: return("b_9"); case InstructionalKey.ControllerDPadUpDown: return("b_10"); case InstructionalKey.ControllerDPadLeftRight: return("b_11"); case InstructionalKey.ControllerLStickRotate: return("b_20"); case InstructionalKey.ControllerRStickRotate: return("b_29"); case InstructionalKey.SymbolBusySpinner: return("b_44"); case InstructionalKey.SymbolPlus: return("b_998"); case InstructionalKey.SymbolArrowUp: return("b_0"); case InstructionalKey.SymbolArrowDown: return("b_1"); case InstructionalKey.SymbolArrowLeft: return("b_2"); case InstructionalKey.SymbolArrowRight: return("b_3"); case InstructionalKey.SymbolArrowUpDown: return("b_45"); case InstructionalKey.SymbolArrowLeftRight: return("b_46"); case InstructionalKey.SymbolArrowAll: return("b_47"); case InstructionalKey.Mouse: return("b_114"); } if (!CTextFormat.Available) { return("b_995"); // button with "???" in red } // from rage::ioMapperSource enum const uint IOMS_KEYBOARD = 0, IOMS_MOUSE_ABSOLUTEAXIS = 1, IOMS_MOUSE_WHEEL = 6, IOMS_MOUSE_BUTTON = 7, IOMS_PAD_DIGITALBUTTON = 9, IOMS_PAD_AXIS = 12; const uint MouseAxisMask = 0x200, MouseWheelMask = 0x400, MouseButtonMask = 0x800, ControllerAxisMask = 0x1000, ControllerButtonMask = 0x2000; atFixedArray_sIconData_4 icons = default; uint parameter = (uint)key; uint source = (parameter & MouseAxisMask) != 0 ? IOMS_MOUSE_ABSOLUTEAXIS : (parameter & MouseWheelMask) != 0 ? IOMS_MOUSE_WHEEL : (parameter & MouseButtonMask) != 0 ? IOMS_MOUSE_BUTTON : (parameter & ControllerAxisMask) != 0 ? IOMS_PAD_AXIS : (parameter & ControllerButtonMask) != 0 ? IOMS_PAD_DIGITALBUTTON : IOMS_KEYBOARD; if (source == IOMS_PAD_DIGITALBUTTON) { parameter = 1u << (int)(parameter & 0xFFu); } CTextFormat.GetInputSourceIcons(source, parameter, ref icons); const int BufferSize = 64; byte * buffer = stackalloc byte[BufferSize]; CTextFormat.GetIconListFormatString(ref icons, buffer, BufferSize); return(Encoding.UTF8.GetString(buffer, Memory.StrLen(buffer))); }