| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321 | 
							- /******************************************************************************
 
-     Copyright (C) 2014-2015 by Ruwen Hahn <[email protected]>
 
-     This program is free software: you can redistribute it and/or modify
 
-     it under the terms of the GNU General Public License as published by
 
-     the Free Software Foundation, either version 2 of the License, or
 
-     (at your option) any later version.
 
-     This program is distributed in the hope that it will be useful,
 
-     but WITHOUT ANY WARRANTY; without even the implied warranty of
 
-     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
-     GNU General Public License for more details.
 
-     You should have received a copy of the GNU General Public License
 
-     along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
- ******************************************************************************/
 
- #pragma once
 
- #ifdef __cplusplus
 
- extern "C" {
 
- #endif
 
- typedef size_t obs_hotkey_id;
 
- typedef size_t obs_hotkey_pair_id;
 
- #ifndef SWIG
 
- #define OBS_INVALID_HOTKEY_ID (~(obs_hotkey_id)0)
 
- #define OBS_INVALID_HOTKEY_PAIR_ID (~(obs_hotkey_pair_id)0)
 
- #else
 
- const size_t OBS_INVALID_HOTKEY_ID = (size_t)-1;
 
- const size_t OBS_INVALID_HOTKEY_PAIR_ID = (size_t)-1;
 
- #endif
 
- #define XINPUT_MOUSE_LEN 33
 
- enum obs_key {
 
- #define OBS_HOTKEY(x) x,
 
- #include "obs-hotkeys.h"
 
- #undef OBS_HOTKEY
 
- 	OBS_KEY_LAST_VALUE //not an actual key
 
- };
 
- typedef enum obs_key obs_key_t;
 
- struct obs_key_combination {
 
- 	uint32_t modifiers;
 
- 	obs_key_t key;
 
- };
 
- typedef struct obs_key_combination obs_key_combination_t;
 
- typedef struct obs_hotkey obs_hotkey_t;
 
- typedef struct obs_hotkey_binding obs_hotkey_binding_t;
 
- enum obs_hotkey_registerer_type {
 
- 	OBS_HOTKEY_REGISTERER_FRONTEND,
 
- 	OBS_HOTKEY_REGISTERER_SOURCE,
 
- 	OBS_HOTKEY_REGISTERER_OUTPUT,
 
- 	OBS_HOTKEY_REGISTERER_ENCODER,
 
- 	OBS_HOTKEY_REGISTERER_SERVICE,
 
- };
 
- typedef enum obs_hotkey_registerer_type obs_hotkey_registerer_t;
 
- /* getter functions */
 
- EXPORT obs_hotkey_id obs_hotkey_get_id(const obs_hotkey_t *key);
 
- EXPORT const char *obs_hotkey_get_name(const obs_hotkey_t *key);
 
- EXPORT const char *obs_hotkey_get_description(const obs_hotkey_t *key);
 
- EXPORT obs_hotkey_registerer_t
 
- obs_hotkey_get_registerer_type(const obs_hotkey_t *key);
 
- EXPORT void *obs_hotkey_get_registerer(const obs_hotkey_t *key);
 
- EXPORT obs_hotkey_id obs_hotkey_get_pair_partner_id(const obs_hotkey_t *key);
 
- EXPORT obs_key_combination_t
 
- obs_hotkey_binding_get_key_combination(obs_hotkey_binding_t *binding);
 
- EXPORT obs_hotkey_id
 
- obs_hotkey_binding_get_hotkey_id(obs_hotkey_binding_t *binding);
 
- EXPORT obs_hotkey_t *
 
- obs_hotkey_binding_get_hotkey(obs_hotkey_binding_t *binding);
 
- /* setter functions */
 
- EXPORT void obs_hotkey_set_name(obs_hotkey_id id, const char *name);
 
- EXPORT void obs_hotkey_set_description(obs_hotkey_id id, const char *desc);
 
- EXPORT void obs_hotkey_pair_set_names(obs_hotkey_pair_id id, const char *name0,
 
- 				      const char *name1);
 
- EXPORT void obs_hotkey_pair_set_descriptions(obs_hotkey_pair_id id,
 
- 					     const char *desc0,
 
- 					     const char *desc1);
 
- #ifndef SWIG
 
- struct obs_hotkeys_translations {
 
- 	const char *insert;
 
- 	const char *del;
 
- 	const char *home;
 
- 	const char *end;
 
- 	const char *page_up;
 
- 	const char *page_down;
 
- 	const char *num_lock;
 
- 	const char *scroll_lock;
 
- 	const char *caps_lock;
 
- 	const char *backspace;
 
- 	const char *tab;
 
- 	const char *print;
 
- 	const char *pause;
 
- 	const char *left;
 
- 	const char *right;
 
- 	const char *up;
 
- 	const char *down;
 
- 	const char *shift;
 
- 	const char *alt;
 
- 	const char *control;
 
- 	const char *meta; /* windows/super key */
 
- 	const char *menu;
 
- 	const char *space;
 
- 	const char *numpad_num; /* For example, "Numpad %1" */
 
- 	const char *numpad_divide;
 
- 	const char *numpad_multiply;
 
- 	const char *numpad_minus;
 
- 	const char *numpad_plus;
 
- 	const char *numpad_decimal;
 
- 	const char *apple_keypad_num; /* For example, "%1 (Keypad)" */
 
- 	const char *apple_keypad_divide;
 
- 	const char *apple_keypad_multiply;
 
- 	const char *apple_keypad_minus;
 
- 	const char *apple_keypad_plus;
 
- 	const char *apple_keypad_decimal;
 
- 	const char *apple_keypad_equal;
 
- 	const char *mouse_num; /* For example, "Mouse %1" */
 
- 	const char *escape;
 
- };
 
- /* This function is an optional way to provide translations for specific keys
 
-  * that may not have translations.  If the operating system can provide
 
-  * translations for these keys, it will use the operating system's translation
 
-  * over these translations.  If no translations are specified, it will use
 
-  * the default English translations for that specific operating system. */
 
- EXPORT void
 
- obs_hotkeys_set_translations_s(struct obs_hotkeys_translations *translations,
 
- 			       size_t size);
 
- #endif
 
- #define obs_hotkeys_set_translations(translations) \
 
- 	obs_hotkeys_set_translations_s(            \
 
- 		translations, sizeof(struct obs_hotkeys_translations))
 
- EXPORT void
 
- obs_hotkeys_set_audio_hotkeys_translations(const char *mute, const char *unmute,
 
- 					   const char *push_to_mute,
 
- 					   const char *push_to_talk);
 
- EXPORT void obs_hotkeys_set_sceneitem_hotkeys_translations(const char *show,
 
- 							   const char *hide);
 
- /* registering hotkeys (giving hotkeys a name and a function) */
 
- typedef void (*obs_hotkey_func)(void *data, obs_hotkey_id id,
 
- 				obs_hotkey_t *hotkey, bool pressed);
 
- EXPORT obs_hotkey_id obs_hotkey_register_frontend(const char *name,
 
- 						  const char *description,
 
- 						  obs_hotkey_func func,
 
- 						  void *data);
 
- EXPORT obs_hotkey_id obs_hotkey_register_encoder(obs_encoder_t *encoder,
 
- 						 const char *name,
 
- 						 const char *description,
 
- 						 obs_hotkey_func func,
 
- 						 void *data);
 
- EXPORT obs_hotkey_id obs_hotkey_register_output(obs_output_t *output,
 
- 						const char *name,
 
- 						const char *description,
 
- 						obs_hotkey_func func,
 
- 						void *data);
 
- EXPORT obs_hotkey_id obs_hotkey_register_service(obs_service_t *service,
 
- 						 const char *name,
 
- 						 const char *description,
 
- 						 obs_hotkey_func func,
 
- 						 void *data);
 
- EXPORT obs_hotkey_id obs_hotkey_register_source(obs_source_t *source,
 
- 						const char *name,
 
- 						const char *description,
 
- 						obs_hotkey_func func,
 
- 						void *data);
 
- typedef bool (*obs_hotkey_active_func)(void *data, obs_hotkey_pair_id id,
 
- 				       obs_hotkey_t *hotkey, bool pressed);
 
- EXPORT obs_hotkey_pair_id obs_hotkey_pair_register_frontend(
 
- 	const char *name0, const char *description0, const char *name1,
 
- 	const char *description1, obs_hotkey_active_func func0,
 
- 	obs_hotkey_active_func func1, void *data0, void *data1);
 
- EXPORT obs_hotkey_pair_id obs_hotkey_pair_register_encoder(
 
- 	obs_encoder_t *encoder, const char *name0, const char *description0,
 
- 	const char *name1, const char *description1,
 
- 	obs_hotkey_active_func func0, obs_hotkey_active_func func1, void *data0,
 
- 	void *data1);
 
- EXPORT obs_hotkey_pair_id obs_hotkey_pair_register_output(
 
- 	obs_output_t *output, const char *name0, const char *description0,
 
- 	const char *name1, const char *description1,
 
- 	obs_hotkey_active_func func0, obs_hotkey_active_func func1, void *data0,
 
- 	void *data1);
 
- EXPORT obs_hotkey_pair_id obs_hotkey_pair_register_service(
 
- 	obs_service_t *service, const char *name0, const char *description0,
 
- 	const char *name1, const char *description1,
 
- 	obs_hotkey_active_func func0, obs_hotkey_active_func func1, void *data0,
 
- 	void *data1);
 
- EXPORT obs_hotkey_pair_id obs_hotkey_pair_register_source(
 
- 	obs_source_t *source, const char *name0, const char *description0,
 
- 	const char *name1, const char *description1,
 
- 	obs_hotkey_active_func func0, obs_hotkey_active_func func1, void *data0,
 
- 	void *data1);
 
- EXPORT void obs_hotkey_unregister(obs_hotkey_id id);
 
- EXPORT void obs_hotkey_pair_unregister(obs_hotkey_pair_id id);
 
- /* loading hotkeys (associating a hotkey with a physical key and modifiers) */
 
- EXPORT void obs_hotkey_load_bindings(obs_hotkey_id id,
 
- 				     obs_key_combination_t *combinations,
 
- 				     size_t num);
 
- EXPORT void obs_hotkey_load(obs_hotkey_id id, obs_data_array_t *data);
 
- EXPORT void obs_hotkeys_load_encoder(obs_encoder_t *encoder,
 
- 				     obs_data_t *hotkeys);
 
- EXPORT void obs_hotkeys_load_output(obs_output_t *output, obs_data_t *hotkeys);
 
- EXPORT void obs_hotkeys_load_service(obs_service_t *service,
 
- 				     obs_data_t *hotkeys);
 
- EXPORT void obs_hotkeys_load_source(obs_source_t *source, obs_data_t *hotkeys);
 
- EXPORT void obs_hotkey_pair_load(obs_hotkey_pair_id id, obs_data_array_t *data0,
 
- 				 obs_data_array_t *data1);
 
- EXPORT obs_data_array_t *obs_hotkey_save(obs_hotkey_id id);
 
- EXPORT void obs_hotkey_pair_save(obs_hotkey_pair_id id,
 
- 				 obs_data_array_t **p_data0,
 
- 				 obs_data_array_t **p_data1);
 
- EXPORT obs_data_t *obs_hotkeys_save_encoder(obs_encoder_t *encoder);
 
- EXPORT obs_data_t *obs_hotkeys_save_output(obs_output_t *output);
 
- EXPORT obs_data_t *obs_hotkeys_save_service(obs_service_t *service);
 
- EXPORT obs_data_t *obs_hotkeys_save_source(obs_source_t *source);
 
- /* enumerating hotkeys */
 
- typedef bool (*obs_hotkey_enum_func)(void *data, obs_hotkey_id id,
 
- 				     obs_hotkey_t *key);
 
- EXPORT void obs_enum_hotkeys(obs_hotkey_enum_func func, void *data);
 
- /* enumerating bindings */
 
- typedef bool (*obs_hotkey_binding_enum_func)(void *data, size_t idx,
 
- 					     obs_hotkey_binding_t *binding);
 
- EXPORT void obs_enum_hotkey_bindings(obs_hotkey_binding_enum_func func,
 
- 				     void *data);
 
- /* hotkey event control */
 
- EXPORT void obs_hotkey_inject_event(obs_key_combination_t hotkey, bool pressed);
 
- EXPORT void obs_hotkey_enable_background_press(bool enable);
 
- OBS_DEPRECATED EXPORT void obs_hotkey_enable_strict_modifiers(bool enable);
 
- /* hotkey callback routing (trigger callbacks through e.g. a UI thread) */
 
- typedef void (*obs_hotkey_callback_router_func)(void *data, obs_hotkey_id id,
 
- 						bool pressed);
 
- EXPORT void
 
- obs_hotkey_set_callback_routing_func(obs_hotkey_callback_router_func func,
 
- 				     void *data);
 
- EXPORT void obs_hotkey_trigger_routed_callback(obs_hotkey_id id, bool pressed);
 
- /* hotkey callbacks won't be processed if callback rerouting is enabled and no
 
-  * router func is set */
 
- EXPORT void obs_hotkey_enable_callback_rerouting(bool enable);
 
- /* misc */
 
- typedef void (*obs_hotkey_atomic_update_func)(void *);
 
- EXPORT void obs_hotkey_update_atomic(obs_hotkey_atomic_update_func func,
 
- 				     void *data);
 
- struct dstr;
 
- EXPORT void obs_key_to_str(obs_key_t key, struct dstr *str);
 
- EXPORT void obs_key_combination_to_str(obs_key_combination_t key,
 
- 				       struct dstr *str);
 
- EXPORT obs_key_t obs_key_from_virtual_key(int code);
 
- EXPORT int obs_key_to_virtual_key(obs_key_t key);
 
- EXPORT const char *obs_key_to_name(obs_key_t key);
 
- EXPORT obs_key_t obs_key_from_name(const char *name);
 
- static inline bool obs_key_combination_is_empty(obs_key_combination_t combo)
 
- {
 
- 	return !combo.modifiers && combo.key == OBS_KEY_NONE;
 
- }
 
- #ifdef __cplusplus
 
- }
 
- #endif
 
 
  |