From 00a9f2dc53ba9c665b81c26852c6938914efd910 Mon Sep 17 00:00:00 2001 From: Xaymar Date: Fri, 8 Aug 2025 04:37:59 +0200 Subject: [PATCH] Effect 0x3B/0x3C: Define virtual key codes These are probably not all but they are the ones that I could actually make happen. --- vst.h | 222 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 216 insertions(+), 6 deletions(-) diff --git a/vst.h b/vst.h index d333172..dd49426 100644 --- a/vst.h +++ b/vst.h @@ -163,6 +163,218 @@ struct vst_rect_t { int16_t right; }; +/** Virtual Key codes. + * + * Steinberg seems to like reinventing the wheel. What was the problem with just using the platform specific key codes? + */ +enum VST_VKEY { + VST_VKEY_00 = 0, + + VST_VKEY_01 = 1, + VST_VKEY_BACKSPACE = 1, + + VST_VKEY_02 = 2, + VST_VKEY_TAB = 2, + + VST_VKEY_03 = 3, + + VST_VKEY_04 = 4, + VST_VKEY_RETURN = 4, // The big one left of the arrow keys. + + VST_VKEY_05 = 5, + VST_VKEY_PAUSE = 5, + + VST_VKEY_06 = 6, + VST_VKEY_ESCAPE = 6, + + VST_VKEY_07 = 7, + VST_VKEY_SPACE = 7, + + VST_VKEY_08 = 8, + + VST_VKEY_09 = 9, + VST_VKEY_END = 9, + + VST_VKEY_10 = 10, + VST_VKEY_HOME = 10, + + VST_VKEY_11 = 11, + VST_VKEY_ARROW_LEFT = 11, + + VST_VKEY_12 = 12, + VST_VKEY_ARROW_UP = 12, + + VST_VKEY_13 = 13, + VST_VKEY_ARROW_RIGHT = 13, + + VST_VKEY_14 = 14, + VST_VKEY_ARROW_DOWN = 14, + + VST_VKEY_15 = 15, + VST_VKEY_PAGE_UP = 15, + + VST_VKEY_16 = 16, + VST_VKEY_PAGE_DOWN = 16, + + VST_VKEY_17 = 17, + + VST_VKEY_18 = 18, + VST_VKEY_PRINT = 18, + + VST_VKEY_19 = 19, + VST_VKEY_NUMPAD_ENTER = 19, + + VST_VKEY_20 = 20, + + VST_VKEY_21 = 21, + VST_VKEY_INSERT = 21, + + VST_VKEY_22 = 22, + VST_VKEY_DELETE = 22, + + VST_VKEY_23 = 23, + + VST_VKEY_24 = 24, + VST_VKEY_NUMPAD_0 = 24, + + VST_VKEY_25 = 25, + VST_VKEY_NUMPAD_1 = 25, + + VST_VKEY_26 = 26, + VST_VKEY_NUMPAD_2 = 26, + + VST_VKEY_27 = 27, + VST_VKEY_NUMPAD_3 = 27, + + VST_VKEY_28 = 28, + VST_VKEY_NUMPAD_4 = 28, + + VST_VKEY_29 = 29, + VST_VKEY_NUMPAD_5 = 29, + + VST_VKEY_30 = 30, + VST_VKEY_NUMPAD_6 = 30, + + VST_VKEY_31 = 31, + VST_VKEY_NUMPAD_7 = 31, + + VST_VKEY_32 = 32, + VST_VKEY_NUMPAD_8 = 32, + + VST_VKEY_33 = 33, + VST_VKEY_NUMPAD_9 = 33, + + VST_VKEY_34 = 34, + VST_VKEY_NUMPAD_MULTIPLY = 34, + + VST_VKEY_35 = 35, + VST_VKEY_NUMPAD_ADD = 35, + + VST_VKEY_36 = 36, + VST_VKEY_NUMPAD_COMMA_OR_DOT = 36, + + VST_VKEY_37 = 37, + VST_VKEY_NUMPAD_SUBTRACT = 37, + + VST_VKEY_38 = 38, + + VST_VKEY_39 = 39, + VST_VKEY_NUMPAD_DIVIDE = 39, + + VST_VKEY_40 = 40, + VST_VKEY_F1 = 40, + + VST_VKEY_41 = 41, + VST_VKEY_F2 = 41, + + VST_VKEY_42 = 42, + VST_VKEY_F3 = 42, + + VST_VKEY_43 = 43, + VST_VKEY_F4 = 43, + + VST_VKEY_44 = 44, + VST_VKEY_F5 = 44, + + VST_VKEY_45 = 45, + VST_VKEY_F6 = 45, + + VST_VKEY_46 = 46, + VST_VKEY_F7 = 46, + + VST_VKEY_47 = 47, + VST_VKEY_F8 = 47, + + VST_VKEY_48 = 48, + VST_VKEY_F9 = 48, + + VST_VKEY_49 = 49, + VST_VKEY_F10 = 49, + + VST_VKEY_50 = 50, + VST_VKEY_F11 = 50, + + VST_VKEY_51 = 51, + VST_VKEY_F12 = 51, + + VST_VKEY_52 = 52, + VST_VKEY_NUMLOCK = 52, + + VST_VKEY_53 = 53, + VST_VKEY_SCROLLLOCK = 53, + + VST_VKEY_54 = 54, + VST_VKEY_SHIFT = 54, // Left or Right + + VST_VKEY_55 = 55, + VST_VKEY_CONTROL = 55, // Left or Right + + VST_VKEY_56 = 56, + VST_VKEY_ALT = 56, // Left or Right + + VST_VKEY_57 = 57, + VST_VKEY_58 = 58, + VST_VKEY_59 = 59, + VST_VKEY_60 = 60, + VST_VKEY_61 = 61, + VST_VKEY_62 = 62, + VST_VKEY_63 = 63, + VST_VKEY_64 = 64, + VST_VKEY_65 = 65, + VST_VKEY_66 = 66, + VST_VKEY_67 = 67, + VST_VKEY_68 = 68, + VST_VKEY_69 = 69, +}; + +enum VST_VKEY_MODIFIER { + /** One of the shift keys is held down. */ + VST_VKEY_MODIFIER_1ls0 = 1 << 0, + /** @sa VST_VKEY_MODIFIER_1ls0 */ + VST_VKEY_MODIFIER_SHIFT = 1 << 0, + + /** One of the alt keys is held down. */ + VST_VKEY_MODIFIER_1ls1 = 1 << 1, + /** @sa VST_VKEY_MODIFIER_1ls1 */ + VST_VKEY_MODIFIER_ALT = 1 << 1, + + /** Control on MacOS, System (Windows Logo) on Windows. + * + * Very funny Steinberg. + */ + VST_VKEY_MODIFIER_1ls2 = 1 << 2, + /** @sa VST_VKEY_MODIFIER_1ls2 */ + VST_VKEY_MODIFIER_SYSTEM = 1 << 2, + + /** Control on PC, System (Apple Logo) on Mac OS. + * + * I have questions. They're all "Why?!". + */ + VST_VKEY_MODIFIER_1ls3 = 1 << 3, + /** @sa VST_VKEY_MODIFIER_1ls3 */ + VST_VKEY_MODIFIER_CONTROL = 1 << 3, +}; + //------------------------------------------------------------------------------------------------------------------------ // VST Parameters //------------------------------------------------------------------------------------------------------------------------ @@ -2310,10 +2522,9 @@ enum VST_EFFECT_OPCODE { * * @note (VST 2.1+) Available from VST 2.1 onwards. * @param p_int1 ASCII character that represents the virtual key code. - * @param p_int2 Virtual Key Code - * @param p_float Modifiers being held down (bitfield) + * @param p_int2 See @ref VST_VKEY for the full list. + * @param p_float A bitfield with any of @ref VST_VKEY_MODIFIER. * @return @ref VST_STATUS_TRUE if we used the input, otherwise @ref VST_STATUS_FALSE - * @todo */ VST_EFFECT_OPCODE_3B = 0x3B, /** @sa VST_EFFECT_OPCODE_3B */ @@ -2323,10 +2534,9 @@ enum VST_EFFECT_OPCODE { * * @note (VST 2.1+) Available from VST 2.1 onwards. * @param p_int1 ASCII character that represents the virtual key code. - * @param p_int2 Virtual Key Code - * @param p_float Modifiers being held down (bitfield) + * @param p_int2 See @ref VST_VKEY for the full list. + * @param p_float A bitfield with any of @ref VST_VKEY_MODIFIER. * @return @ref VST_STATUS_TRUE if we used the input, otherwise @ref VST_STATUS_FALSE - * @todo */ VST_EFFECT_OPCODE_3C = 0x3C, /** @sa VST_EFFECT_OPCODE_3C */