27# if defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__) >= 303
28# define VKM_API __attribute__((visibility("default")))
30# define VKM_API __declspec(dllexport)
381#define VKM_KEY_MOD_CTRL VKM_KEY_MOD_LCTRL
383#define VKM_KEY_MOD_SHIFT VKM_KEY_MOD_LSHIFT
385#define VKM_KEY_MOD_ALT VKM_KEY_MOD_LALT
387#define VKM_KEY_MOD_GUI VKM_KEY_MOD_LGUI
struct vkm_context vkm_context
Virtual device context structure used by the VKM framework.
Definition vkm.h:52
vkm_error_code
Error code list.
Definition vkm.h:80
@ VKM_ERROR_NO_CHANGE
Definition vkm.h:106
@ VKM_ERROR_OUT_OF_MEMORY
Definition vkm.h:91
@ VKM_ERROR_UNKNOWN
Definition vkm.h:85
@ VKM_ERROR_EVENT
Definition vkm.h:103
@ VKM_ERROR_NOT_READY
Definition vkm.h:88
@ VKM_ERROR_NOT_SUPPORTED
Definition vkm.h:97
@ VKM_ERROR_DEV_FAILURE
Definition vkm.h:100
@ VKM_SUCCESS
Definition vkm.h:82
@ VKM_ERROR_INVALID_PARAM
Definition vkm.h:94
VKM_API bool vkm_is_ready(vkm_context *ctx)
check if VKM is started and ready
VKM_API vkm_result vkm_keyboard_send(vkm_context *ctx, vkm_key key, vkm_key_modifiers modifiers, vkm_key_state state)
Send a single keyboard event.
int32_t vkm_result
Return type used by VKM API functions.
Definition vkm.h:57
VKM_API vkm_result vkm_mouse_move(vkm_context *ctx, int dx, int dy)
Move the mouse by the specified amount.
VKM_API vkm_result vkm_start(vkm_context *ctx)
Start any virtual keyboard/mouse devices on the platform.
VKM_API vkm_result vkm_mouse_scroll(vkm_context *ctx, vkm_mouse_scroll_direction dir)
Scroll the mouse wheel.
VKM_API vkm_result vkm_init(vkm_context **ctx)
Initialize the VKM library.
vkm_feature
Feature identifiers for vkm_feature_supported.
Definition vkm.h:65
@ VKM_FEAT_MOUSE
Definition vkm.h:66
@ VKM_FEAT_KEYBOARD
Definition vkm.h:69
@ VKM_FEAT_KEYBOARD_MODIFIERS
Definition vkm.h:72
vkm_button_state
Button state.
Definition vkm.h:175
@ VKM_BUTTON_RELEASED
Definition vkm.h:177
@ VKM_BUTTON_PRESSED
Definition vkm.h:180
VKM_API bool vkm_feature_supported(vkm_feature feat)
Check if a particular feature is enabled on this platform.
vkm_key_state
Physical key action (press or release) for vkm_keyboard_send.
Definition vkm.h:395
@ VKM_KEY_STATE_PRESSED
Definition vkm.h:397
@ VKM_KEY_STATE_RELEASED
Definition vkm.h:396
@ VKM_KEY_STATE_MAX
Definition vkm.h:398
vkm_option
Option list.
Definition vkm.h:131
@ VKM_OPT_DEVICE_NAME
Set the virtual device name in the system.
Definition vkm.h:166
@ VKM_OPT_HI_RES_SCROLL
Set the high resolution scrolling behavior of the mouse.
Definition vkm.h:142
@ VKM_OPT_HORIZONTAL_SCROLL
Enable or disable horizontal scrolling of the mouse.
Definition vkm.h:155
VKM_API const char * vkm_strerror(vkm_result code)
Return a short description for a vkm_result / vkm_error_code value.
VKM_API vkm_result vkm_set_option(vkm_context *ctx, vkm_option option,...)
Set an option flag for VKM.
vkm_key
Physical key identifiers (USB HID keyboard/keypad page, usage page 0x07)
Definition vkm.h:232
@ VKM_KEY_A
Definition vkm.h:235
@ VKM_KEY_CAPS_LOCK
Definition vkm.h:291
@ VKM_KEY_HOME
Definition vkm.h:311
@ VKM_KEY_KEYPAD_5
Definition vkm.h:332
@ VKM_KEY_F1
Definition vkm.h:293
@ VKM_KEY_LEFT_GUI
Definition vkm.h:347
@ VKM_KEY_RIGHT_SHIFT
Definition vkm.h:349
@ VKM_KEY_PAUSE
Definition vkm.h:308
@ VKM_KEY_M
Definition vkm.h:247
@ VKM_KEY_KEYPAD_MULTIPLY
Definition vkm.h:324
@ VKM_KEY_TAB
Definition vkm.h:276
@ VKM_KEY_KEYPAD_3
Definition vkm.h:330
@ VKM_KEY_KEYPAD_ENTER
Definition vkm.h:327
@ VKM_KEY_PAGE_UP
Definition vkm.h:312
@ VKM_KEY_X
Definition vkm.h:258
@ VKM_KEY_KEYPAD_NUM_LOCK
Definition vkm.h:322
@ VKM_KEY_F5
Definition vkm.h:297
@ VKM_KEY_PRINT_SCREEN
Definition vkm.h:306
@ VKM_KEY_0
Definition vkm.h:271
@ VKM_KEY_F4
Definition vkm.h:296
@ VKM_KEY_RIGHT_BRACKET
Definition vkm.h:281
@ VKM_KEY_V
Definition vkm.h:256
@ VKM_KEY_NONUS_HASH
Definition vkm.h:283
@ VKM_KEY_SLASH
Definition vkm.h:289
@ VKM_KEY_C
Definition vkm.h:237
@ VKM_KEY_4
Definition vkm.h:265
@ VKM_KEY_O
Definition vkm.h:249
@ VKM_KEY_SCROLL_LOCK
Definition vkm.h:307
@ VKM_KEY_D
Definition vkm.h:238
@ VKM_KEY_END
Definition vkm.h:314
@ VKM_KEY_R
Definition vkm.h:252
@ VKM_KEY_8
Definition vkm.h:269
@ VKM_KEY_H
Definition vkm.h:242
@ VKM_KEY_F7
Definition vkm.h:299
@ VKM_KEY_PAGE_DOWN
Definition vkm.h:315
@ VKM_KEY_7
Definition vkm.h:268
@ VKM_KEY_INSERT
Definition vkm.h:310
@ VKM_KEY_N
Definition vkm.h:248
@ VKM_KEY_3
Definition vkm.h:264
@ VKM_KEY_APOSTROPHE
Definition vkm.h:285
@ VKM_KEY_F2
Definition vkm.h:294
@ VKM_KEY_MINUS
Definition vkm.h:278
@ VKM_KEY_KEYPAD_DIVIDE
Definition vkm.h:323
@ VKM_KEY_F10
Definition vkm.h:302
@ VKM_KEY_MAX
Definition vkm.h:353
@ VKM_KEY_KEYPAD_9
Definition vkm.h:336
@ VKM_KEY_KEYPAD_COMMA
Definition vkm.h:342
@ VKM_KEY_S
Definition vkm.h:253
@ VKM_KEY_KEYPAD_2
Definition vkm.h:329
@ VKM_KEY_LEFT_CTRL
Definition vkm.h:344
@ VKM_KEY_INTL_BACKSLASH
Definition vkm.h:339
@ VKM_KEY_APPLICATION
Definition vkm.h:340
@ VKM_KEY_UP_ARROW
Definition vkm.h:320
@ VKM_KEY_5
Definition vkm.h:266
@ VKM_KEY_F3
Definition vkm.h:295
@ VKM_KEY_KEYPAD_PLUS
Definition vkm.h:326
@ VKM_KEY_B
Definition vkm.h:236
@ VKM_KEY_I
Definition vkm.h:243
@ VKM_KEY_E
Definition vkm.h:239
@ VKM_KEY_F11
Definition vkm.h:303
@ VKM_KEY_KEYPAD_6
Definition vkm.h:333
@ VKM_KEY_RIGHT_ALT
Definition vkm.h:350
@ VKM_KEY_RIGHT_GUI
Definition vkm.h:351
@ VKM_KEY_T
Definition vkm.h:254
@ VKM_KEY_EQUAL
Definition vkm.h:279
@ VKM_KEY_Y
Definition vkm.h:259
@ VKM_KEY_9
Definition vkm.h:270
@ VKM_KEY_U
Definition vkm.h:255
@ VKM_KEY_F12
Definition vkm.h:304
@ VKM_KEY_LEFT_SHIFT
Definition vkm.h:345
@ VKM_KEY_L
Definition vkm.h:246
@ VKM_KEY_KEYPAD_DECIMAL
Definition vkm.h:338
@ VKM_KEY_6
Definition vkm.h:267
@ VKM_KEY_KEYPAD_7
Definition vkm.h:334
@ VKM_KEY_2
Definition vkm.h:263
@ VKM_KEY_J
Definition vkm.h:244
@ VKM_KEY_ENTER
Definition vkm.h:273
@ VKM_KEY_W
Definition vkm.h:257
@ VKM_KEY_F9
Definition vkm.h:301
@ VKM_KEY_SPACE
Definition vkm.h:277
@ VKM_KEY_DOWN_ARROW
Definition vkm.h:319
@ VKM_KEY_RIGHT_CTRL
Definition vkm.h:348
@ VKM_KEY_KEYPAD_MINUS
Definition vkm.h:325
@ VKM_KEY_Q
Definition vkm.h:251
@ VKM_KEY_ESCAPE
Definition vkm.h:274
@ VKM_KEY_KEYPAD_1
Definition vkm.h:328
@ VKM_KEY_COMMA
Definition vkm.h:287
@ VKM_KEY_NONE
Definition vkm.h:233
@ VKM_KEY_DELETE_FORWARD
Definition vkm.h:313
@ VKM_KEY_G
Definition vkm.h:241
@ VKM_KEY_F8
Definition vkm.h:300
@ VKM_KEY_LEFT_BRACKET
Definition vkm.h:280
@ VKM_KEY_F
Definition vkm.h:240
@ VKM_KEY_RIGHT_ARROW
Definition vkm.h:317
@ VKM_KEY_BACKSPACE
Definition vkm.h:275
@ VKM_KEY_GRAVE_ACCENT
Definition vkm.h:286
@ VKM_KEY_KEYPAD_4
Definition vkm.h:331
@ VKM_KEY_F6
Definition vkm.h:298
@ VKM_KEY_KEYPAD_0
Definition vkm.h:337
@ VKM_KEY_PERIOD
Definition vkm.h:288
@ VKM_KEY_K
Definition vkm.h:245
@ VKM_KEY_P
Definition vkm.h:250
@ VKM_KEY_BACKSLASH
Definition vkm.h:282
@ VKM_KEY_SEMICOLON
Definition vkm.h:284
@ VKM_KEY_LEFT_ALT
Definition vkm.h:346
@ VKM_KEY_Z
Definition vkm.h:260
@ VKM_KEY_LEFT_ARROW
Definition vkm.h:318
@ VKM_KEY_KEYPAD_8
Definition vkm.h:335
@ VKM_KEY_1
Definition vkm.h:262
VKM_API void vkm_exit(vkm_context *ctx)
Exit the VKM library and free up any resources used.
vkm_mouse_button
Mouse button identifiers.
Definition vkm.h:189
@ VKM_MOUSE_BTN_RIGHT
Definition vkm.h:194
@ VKM_MOUSE_BTN_LEFT
Definition vkm.h:191
@ VKM_MOUSE_BTN_MIDDLE
Definition vkm.h:197
VKM_API vkm_result vkm_reset(vkm_context *ctx)
Release all virtual keys and mouse buttons that are still down.
vkm_mouse_scroll_direction
Scroll directions.
Definition vkm.h:206
@ VKM_MOUSE_SCROLL_RIGHT
Definition vkm.h:217
@ VKM_MOUSE_SCROLL_DOWN
Definition vkm.h:211
@ VKM_MOUSE_SCROLL_LEFT
Definition vkm.h:214
@ VKM_MOUSE_SCROLL_UP
Definition vkm.h:208
VKM_API bool vkm_platform_supported(void)
Check if VKM is supported on this platform.
VKM_API vkm_result vkm_mouse_click(vkm_context *ctx, vkm_mouse_button button, vkm_button_state state)
Click the mouse button.
VKM_API vkm_result vkm_sync(vkm_context *ctx)
Send a sync packet to the OS.
vkm_key_modifiers
Modifier bitmask for vkm_keyboard_send.
Definition vkm.h:367
@ VKM_KEY_MOD_RSHIFT
Definition vkm.h:375
@ VKM_KEY_MOD_LALT
Definition vkm.h:372
@ VKM_KEY_MOD_LCTRL
Definition vkm.h:370
@ VKM_KEY_MOD_LSHIFT
Definition vkm.h:371
@ VKM_KEY_MOD_RGUI
Definition vkm.h:377
@ VKM_KEY_MOD_NONE
Definition vkm.h:368
@ VKM_KEY_MOD_RCTRL
Definition vkm.h:374
@ VKM_KEY_MOD_RALT
Definition vkm.h:376
@ VKM_KEY_MOD_LGUI
Definition vkm.h:373