Merge pull request #72370 from bruvzg/dead_xim
[X11] Add support for dead keys without active IME. Fix IME focus and cleanup.
This commit is contained in:
commit
39b53f730a
30 changed files with 384 additions and 64 deletions
|
@ -1,7 +1,7 @@
|
|||
// This file is generated. Do not edit!
|
||||
// see https://github.com/hpvb/dynload-wrapper for details
|
||||
// generated by ../dynload-wrapper/generate-wrapper.py 0.3 on 2023-01-12 10:26:13
|
||||
// flags: ../dynload-wrapper/generate-wrapper.py --include ./thirdparty/linuxbsd_headers/alsa/asoundlib.h --sys-include "thirdparty/linuxbsd_headers/alsa/asoundlib.h" --soname libasound.so.2 --init-name asound --omit-prefix snd_pcm_sw_params_set_tstamp_type --omit-prefix snd_pcm_status_get_audio_htstamp_report --omit-prefix snd_pcm_sw_params_get_tstamp_type --omit-prefix snd_pcm_status_set_audio_htstamp_config --output-header ./drivers/alsa/asound-so_wrap.h --output-implementation ./drivers/alsa/asound-so_wrap.c
|
||||
// generated by generate-wrapper.py 0.3 on 2023-01-12 10:26:13
|
||||
// flags: generate-wrapper.py --include ./thirdparty/linuxbsd_headers/alsa/asoundlib.h --sys-include "thirdparty/linuxbsd_headers/alsa/asoundlib.h" --soname libasound.so.2 --init-name asound --omit-prefix snd_pcm_sw_params_set_tstamp_type --omit-prefix snd_pcm_status_get_audio_htstamp_report --omit-prefix snd_pcm_sw_params_get_tstamp_type --omit-prefix snd_pcm_status_set_audio_htstamp_config --output-header ./drivers/alsa/asound-so_wrap.h --output-implementation ./drivers/alsa/asound-so_wrap.c
|
||||
//
|
||||
#include <stdint.h>
|
||||
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
#define DYLIBLOAD_WRAPPER_ASOUND
|
||||
// This file is generated. Do not edit!
|
||||
// see https://github.com/hpvb/dynload-wrapper for details
|
||||
// generated by ../dynload-wrapper/generate-wrapper.py 0.3 on 2023-01-12 10:26:13
|
||||
// flags: ../dynload-wrapper/generate-wrapper.py --include ./thirdparty/linuxbsd_headers/alsa/asoundlib.h --sys-include "thirdparty/linuxbsd_headers/alsa/asoundlib.h" --soname libasound.so.2 --init-name asound --omit-prefix snd_pcm_sw_params_set_tstamp_type --omit-prefix snd_pcm_status_get_audio_htstamp_report --omit-prefix snd_pcm_sw_params_get_tstamp_type --omit-prefix snd_pcm_status_set_audio_htstamp_config --output-header ./drivers/alsa/asound-so_wrap.h --output-implementation ./drivers/alsa/asound-so_wrap.c
|
||||
// generated by generate-wrapper.py 0.3 on 2023-01-12 10:26:13
|
||||
// flags: generate-wrapper.py --include ./thirdparty/linuxbsd_headers/alsa/asoundlib.h --sys-include "thirdparty/linuxbsd_headers/alsa/asoundlib.h" --soname libasound.so.2 --init-name asound --omit-prefix snd_pcm_sw_params_set_tstamp_type --omit-prefix snd_pcm_status_get_audio_htstamp_report --omit-prefix snd_pcm_sw_params_get_tstamp_type --omit-prefix snd_pcm_status_set_audio_htstamp_config --output-header ./drivers/alsa/asound-so_wrap.h --output-implementation ./drivers/alsa/asound-so_wrap.c
|
||||
//
|
||||
#include <stdint.h>
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// This file is generated. Do not edit!
|
||||
// see https://github.com/hpvb/dynload-wrapper for details
|
||||
// generated by ../dynload-wrapper/generate-wrapper.py 0.3 on 2023-01-12 10:26:29
|
||||
// flags: ../dynload-wrapper/generate-wrapper.py --include ./thirdparty/linuxbsd_headers/pulse/pulseaudio.h --sys-include "thirdparty/linuxbsd_headers/pulse/pulseaudio.h" --soname libpulse.so.0 --omit-prefix _pa_ --init-name pulse --output-header ./drivers/pulseaudio/pulse-so_wrap.h --output-implementation ./drivers/pulseaudio/pulse-so_wrap.c
|
||||
// generated by generate-wrapper.py 0.3 on 2023-01-12 10:26:29
|
||||
// flags: generate-wrapper.py --include ./thirdparty/linuxbsd_headers/pulse/pulseaudio.h --sys-include "thirdparty/linuxbsd_headers/pulse/pulseaudio.h" --soname libpulse.so.0 --omit-prefix _pa_ --init-name pulse --output-header ./drivers/pulseaudio/pulse-so_wrap.h --output-implementation ./drivers/pulseaudio/pulse-so_wrap.c
|
||||
//
|
||||
#include <stdint.h>
|
||||
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
#define DYLIBLOAD_WRAPPER_PULSE
|
||||
// This file is generated. Do not edit!
|
||||
// see https://github.com/hpvb/dynload-wrapper for details
|
||||
// generated by ../dynload-wrapper/generate-wrapper.py 0.3 on 2023-01-12 10:26:29
|
||||
// flags: ../dynload-wrapper/generate-wrapper.py --include ./thirdparty/linuxbsd_headers/pulse/pulseaudio.h --sys-include "thirdparty/linuxbsd_headers/pulse/pulseaudio.h" --soname libpulse.so.0 --omit-prefix _pa_ --init-name pulse --output-header ./drivers/pulseaudio/pulse-so_wrap.h --output-implementation ./drivers/pulseaudio/pulse-so_wrap.c
|
||||
// generated by generate-wrapper.py 0.3 on 2023-01-12 10:26:29
|
||||
// flags: generate-wrapper.py --include ./thirdparty/linuxbsd_headers/pulse/pulseaudio.h --sys-include "thirdparty/linuxbsd_headers/pulse/pulseaudio.h" --soname libpulse.so.0 --omit-prefix _pa_ --init-name pulse --output-header ./drivers/pulseaudio/pulse-so_wrap.h --output-implementation ./drivers/pulseaudio/pulse-so_wrap.c
|
||||
//
|
||||
#include <stdint.h>
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// This file is generated. Do not edit!
|
||||
// see https://github.com/hpvb/dynload-wrapper for details
|
||||
// generated by ../dynload-wrapper/generate-wrapper.py 0.3 on 2023-01-12 10:26:35
|
||||
// flags: ../dynload-wrapper/generate-wrapper.py --include ./thirdparty/linuxbsd_headers/dbus/dbus.h --sys-include "thirdparty/linuxbsd_headers/dbus/dbus.h" --soname libdbus-1.so.3 --init-name dbus --output-header ./platform/linuxbsd/dbus-so_wrap.h --output-implementation ./platform/linuxbsd/dbus-so_wrap.c
|
||||
// generated by generate-wrapper.py 0.3 on 2023-01-12 10:26:35
|
||||
// flags: generate-wrapper.py --include ./thirdparty/linuxbsd_headers/dbus/dbus.h --sys-include "thirdparty/linuxbsd_headers/dbus/dbus.h" --soname libdbus-1.so.3 --init-name dbus --output-header ./platform/linuxbsd/dbus-so_wrap.h --output-implementation ./platform/linuxbsd/dbus-so_wrap.c
|
||||
//
|
||||
#include <stdint.h>
|
||||
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
#define DYLIBLOAD_WRAPPER_DBUS
|
||||
// This file is generated. Do not edit!
|
||||
// see https://github.com/hpvb/dynload-wrapper for details
|
||||
// generated by ../dynload-wrapper/generate-wrapper.py 0.3 on 2023-01-12 10:26:35
|
||||
// flags: ../dynload-wrapper/generate-wrapper.py --include ./thirdparty/linuxbsd_headers/dbus/dbus.h --sys-include "thirdparty/linuxbsd_headers/dbus/dbus.h" --soname libdbus-1.so.3 --init-name dbus --output-header ./platform/linuxbsd/dbus-so_wrap.h --output-implementation ./platform/linuxbsd/dbus-so_wrap.c
|
||||
// generated by generate-wrapper.py 0.3 on 2023-01-12 10:26:35
|
||||
// flags: generate-wrapper.py --include ./thirdparty/linuxbsd_headers/dbus/dbus.h --sys-include "thirdparty/linuxbsd_headers/dbus/dbus.h" --soname libdbus-1.so.3 --init-name dbus --output-header ./platform/linuxbsd/dbus-so_wrap.h --output-implementation ./platform/linuxbsd/dbus-so_wrap.c
|
||||
//
|
||||
#include <stdint.h>
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// This file is generated. Do not edit!
|
||||
// see https://github.com/hpvb/dynload-wrapper for details
|
||||
// generated by ../dynload-wrapper/generate-wrapper.py 0.3 on 2023-01-12 10:15:54
|
||||
// flags: ../dynload-wrapper/generate-wrapper.py --include ./thirdparty/linuxbsd_headers/fontconfig/fontconfig.h --sys-include "thirdparty/linuxbsd_headers/fontconfig/fontconfig.h" --soname libfontconfig.so.1 --init-name fontconfig --omit-prefix FcCharSetFirst --omit-prefix FcCharSetNext --output-header ./platform/linuxbsd/fontconfig-so_wrap.h --output-implementation ./platform/linuxbsd/fontconfig-so_wrap.c
|
||||
// generated by generate-wrapper.py 0.3 on 2023-01-12 10:15:54
|
||||
// flags: generate-wrapper.py --include ./thirdparty/linuxbsd_headers/fontconfig/fontconfig.h --sys-include "thirdparty/linuxbsd_headers/fontconfig/fontconfig.h" --soname libfontconfig.so.1 --init-name fontconfig --omit-prefix FcCharSetFirst --omit-prefix FcCharSetNext --output-header ./platform/linuxbsd/fontconfig-so_wrap.h --output-implementation ./platform/linuxbsd/fontconfig-so_wrap.c
|
||||
//
|
||||
#include <stdint.h>
|
||||
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
#define DYLIBLOAD_WRAPPER_FONTCONFIG
|
||||
// This file is generated. Do not edit!
|
||||
// see https://github.com/hpvb/dynload-wrapper for details
|
||||
// generated by ../dynload-wrapper/generate-wrapper.py 0.3 on 2023-01-12 10:15:54
|
||||
// flags: ../dynload-wrapper/generate-wrapper.py --include ./thirdparty/linuxbsd_headers/fontconfig/fontconfig.h --sys-include "thirdparty/linuxbsd_headers/fontconfig/fontconfig.h" --soname libfontconfig.so.1 --init-name fontconfig --omit-prefix FcCharSetFirst --omit-prefix FcCharSetNext --output-header ./platform/linuxbsd/fontconfig-so_wrap.h --output-implementation ./platform/linuxbsd/fontconfig-so_wrap.c
|
||||
// generated by generate-wrapper.py 0.3 on 2023-01-12 10:15:54
|
||||
// flags: generate-wrapper.py --include ./thirdparty/linuxbsd_headers/fontconfig/fontconfig.h --sys-include "thirdparty/linuxbsd_headers/fontconfig/fontconfig.h" --soname libfontconfig.so.1 --init-name fontconfig --omit-prefix FcCharSetFirst --omit-prefix FcCharSetNext --output-header ./platform/linuxbsd/fontconfig-so_wrap.h --output-implementation ./platform/linuxbsd/fontconfig-so_wrap.c
|
||||
//
|
||||
#include <stdint.h>
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// This file is generated. Do not edit!
|
||||
// see https://github.com/hpvb/dynload-wrapper for details
|
||||
// generated by ../dynload-wrapper/generate-wrapper.py 0.3 on 2023-01-12 10:23:01
|
||||
// flags: ../dynload-wrapper/generate-wrapper.py --include ./thirdparty/linuxbsd_headers/udev/libudev.h --sys-include "thirdparty/linuxbsd_headers/udev/libudev.h" --soname libudev.so.1 --init-name libudev --omit-prefix gnu_ --output-header ./platform/linuxbsd/libudev-so_wrap.h --output-implementation ./platform/linuxbsd/libudev-so_wrap.c
|
||||
// generated by generate-wrapper.py 0.3 on 2023-01-12 10:23:01
|
||||
// flags: generate-wrapper.py --include ./thirdparty/linuxbsd_headers/udev/libudev.h --sys-include "thirdparty/linuxbsd_headers/udev/libudev.h" --soname libudev.so.1 --init-name libudev --omit-prefix gnu_ --output-header ./platform/linuxbsd/libudev-so_wrap.h --output-implementation ./platform/linuxbsd/libudev-so_wrap.c
|
||||
//
|
||||
#include <stdint.h>
|
||||
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
#define DYLIBLOAD_WRAPPER_LIBUDEV
|
||||
// This file is generated. Do not edit!
|
||||
// see https://github.com/hpvb/dynload-wrapper for details
|
||||
// generated by ../dynload-wrapper/generate-wrapper.py 0.3 on 2023-01-12 10:23:01
|
||||
// flags: ../dynload-wrapper/generate-wrapper.py --include ./thirdparty/linuxbsd_headers/udev/libudev.h --sys-include "thirdparty/linuxbsd_headers/udev/libudev.h" --soname libudev.so.1 --init-name libudev --omit-prefix gnu_ --output-header ./platform/linuxbsd/libudev-so_wrap.h --output-implementation ./platform/linuxbsd/libudev-so_wrap.c
|
||||
// generated by generate-wrapper.py 0.3 on 2023-01-12 10:23:01
|
||||
// flags: generate-wrapper.py --include ./thirdparty/linuxbsd_headers/udev/libudev.h --sys-include "thirdparty/linuxbsd_headers/udev/libudev.h" --soname libudev.so.1 --init-name libudev --omit-prefix gnu_ --output-header ./platform/linuxbsd/libudev-so_wrap.h --output-implementation ./platform/linuxbsd/libudev-so_wrap.c
|
||||
//
|
||||
#include <stdint.h>
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// This file is generated. Do not edit!
|
||||
// see https://github.com/hpvb/dynload-wrapper for details
|
||||
// generated by ../dynload-wrapper/generate-wrapper.py 0.3 on 2023-01-12 10:07:46
|
||||
// flags: ../dynload-wrapper/generate-wrapper.py --include ./thirdparty/linuxbsd_headers/speechd/libspeechd.h --sys-include "thirdparty/linuxbsd_headers/speechd/libspeechd.h" --soname libspeechd.so.2 --init-name speechd --omit-prefix spd_get_client_list --output-header ./platform/linuxbsd/speechd-so_wrap.h --output-implementation ./platform/linuxbsd/speechd-so_wrap.c
|
||||
// generated by generate-wrapper.py 0.3 on 2023-01-12 10:07:46
|
||||
// flags: generate-wrapper.py --include ./thirdparty/linuxbsd_headers/speechd/libspeechd.h --sys-include "thirdparty/linuxbsd_headers/speechd/libspeechd.h" --soname libspeechd.so.2 --init-name speechd --omit-prefix spd_get_client_list --output-header ./platform/linuxbsd/speechd-so_wrap.h --output-implementation ./platform/linuxbsd/speechd-so_wrap.c
|
||||
//
|
||||
#include <stdint.h>
|
||||
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
#define DYLIBLOAD_WRAPPER_SPEECHD
|
||||
// This file is generated. Do not edit!
|
||||
// see https://github.com/hpvb/dynload-wrapper for details
|
||||
// generated by ../dynload-wrapper/generate-wrapper.py 0.3 on 2023-01-12 10:07:46
|
||||
// flags: ../dynload-wrapper/generate-wrapper.py --include ./thirdparty/linuxbsd_headers/speechd/libspeechd.h --sys-include "thirdparty/linuxbsd_headers/speechd/libspeechd.h" --soname libspeechd.so.2 --init-name speechd --omit-prefix spd_get_client_list --output-header ./platform/linuxbsd/speechd-so_wrap.h --output-implementation ./platform/linuxbsd/speechd-so_wrap.c
|
||||
// generated by generate-wrapper.py 0.3 on 2023-01-12 10:07:46
|
||||
// flags: generate-wrapper.py --include ./thirdparty/linuxbsd_headers/speechd/libspeechd.h --sys-include "thirdparty/linuxbsd_headers/speechd/libspeechd.h" --soname libspeechd.so.2 --init-name speechd --omit-prefix spd_get_client_list --output-header ./platform/linuxbsd/speechd-so_wrap.h --output-implementation ./platform/linuxbsd/speechd-so_wrap.c
|
||||
//
|
||||
#include <stdint.h>
|
||||
|
||||
|
|
|
@ -1324,14 +1324,20 @@ void DisplayServerX11::delete_sub_window(WindowID p_id) {
|
|||
}
|
||||
#endif
|
||||
|
||||
XDestroyWindow(x11_display, wd.x11_xim_window);
|
||||
|
||||
XUnmapWindow(x11_display, wd.x11_window);
|
||||
XDestroyWindow(x11_display, wd.x11_window);
|
||||
if (wd.xic) {
|
||||
XDestroyIC(wd.xic);
|
||||
wd.xic = nullptr;
|
||||
}
|
||||
XDestroyWindow(x11_display, wd.x11_xim_window);
|
||||
if (xkb_loaded) {
|
||||
if (wd.xkb_state) {
|
||||
xkb_compose_state_unref(wd.xkb_state);
|
||||
wd.xkb_state = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
XUnmapWindow(x11_display, wd.x11_window);
|
||||
XDestroyWindow(x11_display, wd.x11_window);
|
||||
|
||||
windows.erase(p_id);
|
||||
}
|
||||
|
@ -1610,7 +1616,7 @@ void DisplayServerX11::window_set_transient(WindowID p_window, WindowID p_parent
|
|||
// a subwindow and its parent are both destroyed.
|
||||
if (!wd_window.no_focus && !wd_window.is_popup && wd_window.focused) {
|
||||
if ((xwa.map_state == IsViewable) && !wd_parent.no_focus && !wd_window.is_popup) {
|
||||
XSetInputFocus(x11_display, wd_parent.x11_window, RevertToParent, CurrentTime);
|
||||
XSetInputFocus(x11_display, wd_parent.x11_window, RevertToPointerRoot, CurrentTime);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
@ -2515,7 +2521,7 @@ void DisplayServerX11::window_set_ime_active(const bool p_active, WindowID p_win
|
|||
XSync(x11_display, False);
|
||||
XGetWindowAttributes(x11_display, wd.x11_xim_window, &xwa);
|
||||
if (xwa.map_state == IsViewable) {
|
||||
XSetInputFocus(x11_display, wd.x11_xim_window, RevertToPointerRoot, CurrentTime);
|
||||
XSetInputFocus(x11_display, wd.x11_xim_window, RevertToParent, CurrentTime);
|
||||
}
|
||||
XSetICFocus(wd.xic);
|
||||
} else {
|
||||
|
@ -2936,7 +2942,7 @@ void DisplayServerX11::_handle_key_event(WindowID p_window, XKeyEvent *p_event,
|
|||
XLookupString(&xkeyevent_no_mod, nullptr, 0, &keysym_keycode, nullptr);
|
||||
|
||||
String keysym;
|
||||
if (xkb_keysym_to_utf32 && xkb_keysym_to_upper) {
|
||||
if (xkb_loaded) {
|
||||
KeySym keysym_unicode_nm = 0; // keysym used to find unicode
|
||||
XLookupString(&xkeyevent_no_mod, nullptr, 0, &keysym_unicode_nm, nullptr);
|
||||
keysym = String::chr(xkb_keysym_to_utf32(xkb_keysym_to_upper(keysym_unicode_nm)));
|
||||
|
@ -3029,6 +3035,64 @@ void DisplayServerX11::_handle_key_event(WindowID p_window, XKeyEvent *p_event,
|
|||
}
|
||||
} while (status == XBufferOverflow);
|
||||
#endif
|
||||
} else if (xkeyevent->type == KeyPress && wd.xkb_state && xkb_loaded) {
|
||||
xkb_compose_feed_result res = xkb_compose_state_feed(wd.xkb_state, keysym_unicode);
|
||||
if (res == XKB_COMPOSE_FEED_ACCEPTED) {
|
||||
if (xkb_compose_state_get_status(wd.xkb_state) == XKB_COMPOSE_COMPOSED) {
|
||||
bool keypress = xkeyevent->type == KeyPress;
|
||||
Key keycode = KeyMappingX11::get_keycode(keysym_keycode);
|
||||
Key physical_keycode = KeyMappingX11::get_scancode(xkeyevent->keycode);
|
||||
|
||||
if (keycode >= Key::A + 32 && keycode <= Key::Z + 32) {
|
||||
keycode -= 'a' - 'A';
|
||||
}
|
||||
|
||||
char str_xkb[256] = {};
|
||||
int str_xkb_size = xkb_compose_state_get_utf8(wd.xkb_state, str_xkb, 255);
|
||||
|
||||
String tmp;
|
||||
tmp.parse_utf8(str_xkb, str_xkb_size);
|
||||
for (int i = 0; i < tmp.length(); i++) {
|
||||
Ref<InputEventKey> k;
|
||||
k.instantiate();
|
||||
if (physical_keycode == Key::NONE && keycode == Key::NONE && tmp[i] == 0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (keycode == Key::NONE) {
|
||||
keycode = (Key)physical_keycode;
|
||||
}
|
||||
|
||||
_get_key_modifier_state(xkeyevent->state, k);
|
||||
|
||||
k->set_window_id(p_window);
|
||||
k->set_pressed(keypress);
|
||||
|
||||
k->set_keycode(keycode);
|
||||
k->set_physical_keycode(physical_keycode);
|
||||
if (!keysym.is_empty()) {
|
||||
k->set_key_label(fix_key_label(keysym[0], keycode));
|
||||
} else {
|
||||
k->set_key_label(keycode);
|
||||
}
|
||||
if (keypress) {
|
||||
k->set_unicode(fix_unicode(tmp[i]));
|
||||
}
|
||||
|
||||
k->set_echo(false);
|
||||
|
||||
if (k->get_keycode() == Key::BACKTAB) {
|
||||
//make it consistent across platforms.
|
||||
k->set_keycode(Key::TAB);
|
||||
k->set_physical_keycode(Key::TAB);
|
||||
k->set_shift_pressed(true);
|
||||
}
|
||||
|
||||
Input::get_singleton()->parse_input_event(k);
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Phase 2, obtain a Godot keycode from the keysym */
|
||||
|
@ -4866,6 +4930,10 @@ DisplayServerX11::WindowID DisplayServerX11::_create_window(WindowMode p_mode, V
|
|||
|
||||
wd.x11_xim_window = XCreateWindow(x11_display, wd.x11_window, 0, 0, 1, 1, 0, CopyFromParent, InputOnly, CopyFromParent, CWEventMask, &window_attributes_ime);
|
||||
|
||||
if (dead_tbl && xkb_loaded) {
|
||||
wd.xkb_state = xkb_compose_state_new(dead_tbl, XKB_COMPOSE_STATE_NO_FLAGS);
|
||||
}
|
||||
|
||||
// Enable receiving notification when the window is initialized (MapNotify)
|
||||
// so the focus can be set at the right time.
|
||||
if (!wd.no_focus && !wd.is_popup) {
|
||||
|
@ -5145,7 +5213,7 @@ DisplayServerX11::DisplayServerX11(const String &p_rendering_driver, WindowMode
|
|||
ERR_FAIL_MSG("Can't load XCursor dynamically.");
|
||||
}
|
||||
|
||||
initialize_xkbcommon(dylibloader_verbose); // Optional, used for key_label.
|
||||
xkb_loaded = (initialize_xkbcommon(dylibloader_verbose) == 0);
|
||||
|
||||
if (initialize_xext(dylibloader_verbose) != 0) {
|
||||
r_error = ERR_UNAVAILABLE;
|
||||
|
@ -5172,6 +5240,23 @@ DisplayServerX11::DisplayServerX11(const String &p_rendering_driver, WindowMode
|
|||
ERR_FAIL_MSG("Can't load Xinput2 dynamically.");
|
||||
}
|
||||
|
||||
if (xkb_loaded) {
|
||||
xkb_ctx = xkb_context_new(XKB_CONTEXT_NO_FLAGS);
|
||||
if (xkb_ctx) {
|
||||
const char *locale = getenv("LC_ALL");
|
||||
if (!locale || !*locale) {
|
||||
locale = getenv("LC_CTYPE");
|
||||
}
|
||||
if (!locale || !*locale) {
|
||||
locale = getenv("LANG");
|
||||
}
|
||||
if (!locale || !*locale) {
|
||||
locale = "C";
|
||||
}
|
||||
dead_tbl = xkb_compose_table_new_from_locale(xkb_ctx, locale, XKB_COMPOSE_COMPILE_NO_FLAGS);
|
||||
}
|
||||
}
|
||||
|
||||
Input::get_singleton()->set_event_dispatch_function(_dispatch_input_events);
|
||||
|
||||
r_error = OK;
|
||||
|
@ -5612,10 +5697,26 @@ DisplayServerX11::~DisplayServerX11() {
|
|||
XDestroyIC(wd.xic);
|
||||
wd.xic = nullptr;
|
||||
}
|
||||
XDestroyWindow(x11_display, wd.x11_xim_window);
|
||||
if (xkb_loaded) {
|
||||
if (wd.xkb_state) {
|
||||
xkb_compose_state_unref(wd.xkb_state);
|
||||
wd.xkb_state = nullptr;
|
||||
}
|
||||
}
|
||||
XUnmapWindow(x11_display, wd.x11_window);
|
||||
XDestroyWindow(x11_display, wd.x11_window);
|
||||
}
|
||||
|
||||
if (xkb_loaded) {
|
||||
if (dead_tbl) {
|
||||
xkb_compose_table_unref(dead_tbl);
|
||||
}
|
||||
if (xkb_ctx) {
|
||||
xkb_context_unref(xkb_ctx);
|
||||
}
|
||||
}
|
||||
|
||||
//destroy drivers
|
||||
#if defined(VULKAN_ENABLED)
|
||||
if (rendering_device_vulkan) {
|
||||
|
|
|
@ -142,6 +142,7 @@ class DisplayServerX11 : public DisplayServer {
|
|||
bool ime_active = false;
|
||||
bool ime_in_progress = false;
|
||||
bool ime_suppress_next_keyup = false;
|
||||
xkb_compose_state *xkb_state = nullptr;
|
||||
|
||||
Size2i min_size;
|
||||
Size2i max_size;
|
||||
|
@ -185,6 +186,10 @@ class DisplayServerX11 : public DisplayServer {
|
|||
Point2i im_selection;
|
||||
String im_text;
|
||||
|
||||
bool xkb_loaded = false;
|
||||
xkb_context *xkb_ctx = nullptr;
|
||||
xkb_compose_table *dead_tbl = nullptr;
|
||||
|
||||
HashMap<WindowID, WindowData> windows;
|
||||
|
||||
unsigned int last_mouse_monitor_mask = 0;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// This file is generated. Do not edit!
|
||||
// see https://github.com/hpvb/dynload-wrapper for details
|
||||
// generated by ../dynload-wrapper/generate-wrapper.py 0.3 on 2023-01-23 15:09:53
|
||||
// flags: ../dynload-wrapper/generate-wrapper.py --include ./thirdparty/linuxbsd_headers/X11/Xcursor/Xcursor.h --sys-include "thirdparty/linuxbsd_headers/X11/Xcursor/Xcursor.h" --soname libXcursor.so.1 --init-name xcursor --output-header ./platform/linuxbsd/x11/dynwrappers/xcursor-so_wrap.h --output-implementation ./platform/linuxbsd/x11/dynwrappers/xcursor-so_wrap.c
|
||||
// generated by generate-wrapper.py 0.3 on 2023-01-23 15:09:53
|
||||
// flags: generate-wrapper.py --include ./thirdparty/linuxbsd_headers/X11/Xcursor/Xcursor.h --sys-include "thirdparty/linuxbsd_headers/X11/Xcursor/Xcursor.h" --soname libXcursor.so.1 --init-name xcursor --output-header ./platform/linuxbsd/x11/dynwrappers/xcursor-so_wrap.h --output-implementation ./platform/linuxbsd/x11/dynwrappers/xcursor-so_wrap.c
|
||||
//
|
||||
// NOTE: Generated from Xcursor 1.2.0.
|
||||
// This has been handpatched to workaround some issues with the generator that
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
#define DYLIBLOAD_WRAPPER_XCURSOR
|
||||
// This file is generated. Do not edit!
|
||||
// see https://github.com/hpvb/dynload-wrapper for details
|
||||
// generated by ../dynload-wrapper/generate-wrapper.py 0.3 on 2023-01-23 15:09:53
|
||||
// flags: ../dynload-wrapper/generate-wrapper.py --include ./thirdparty/linuxbsd_headers/X11/Xcursor/Xcursor.h --sys-include "thirdparty/linuxbsd_headers/X11/Xcursor/Xcursor.h" --soname libXcursor.so.1 --init-name xcursor --output-header ./platform/linuxbsd/x11/dynwrappers/xcursor-so_wrap.h --output-implementation ./platform/linuxbsd/x11/dynwrappers/xcursor-so_wrap.c
|
||||
// generated by generate-wrapper.py 0.3 on 2023-01-23 15:09:53
|
||||
// flags: generate-wrapper.py --include ./thirdparty/linuxbsd_headers/X11/Xcursor/Xcursor.h --sys-include "thirdparty/linuxbsd_headers/X11/Xcursor/Xcursor.h" --soname libXcursor.so.1 --init-name xcursor --output-header ./platform/linuxbsd/x11/dynwrappers/xcursor-so_wrap.h --output-implementation ./platform/linuxbsd/x11/dynwrappers/xcursor-so_wrap.c
|
||||
//
|
||||
// NOTE: Generated from Xcursor 1.2.0.
|
||||
// This has been handpatched to workaround some issues with the generator that
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// This file is generated. Do not edit!
|
||||
// see https://github.com/hpvb/dynload-wrapper for details
|
||||
// generated by ../dynload-wrapper/generate-wrapper.py 0.3 on 2023-01-23 15:11:29
|
||||
// flags: ../dynload-wrapper/generate-wrapper.py --sys-include "thirdparty/linuxbsd_headers/X11/extensions/Xext.h" --include ./thirdparty/linuxbsd_headers/X11/extensions/shape.h --sys-include "thirdparty/linuxbsd_headers/X11/extensions/shape.h" --soname libXext.so.6 --init-name xext --output-header ./platform/linuxbsd/x11/dynwrappers/xext-so_wrap.h --output-implementation ./platform/linuxbsd/x11/dynwrappers/xext-so_wrap.c
|
||||
// generated by generate-wrapper.py 0.3 on 2023-01-23 15:11:29
|
||||
// flags: generate-wrapper.py --sys-include "thirdparty/linuxbsd_headers/X11/extensions/Xext.h" --include ./thirdparty/linuxbsd_headers/X11/extensions/shape.h --sys-include "thirdparty/linuxbsd_headers/X11/extensions/shape.h" --soname libXext.so.6 --init-name xext --output-header ./platform/linuxbsd/x11/dynwrappers/xext-so_wrap.h --output-implementation ./platform/linuxbsd/x11/dynwrappers/xext-so_wrap.c
|
||||
//
|
||||
// NOTE: Generated from Xext 1.3.5.
|
||||
// This has been handpatched to workaround some issues with the generator that
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
#define DYLIBLOAD_WRAPPER_XEXT
|
||||
// This file is generated. Do not edit!
|
||||
// see https://github.com/hpvb/dynload-wrapper for details
|
||||
// generated by ../dynload-wrapper/generate-wrapper.py 0.3 on 2023-01-23 15:11:29
|
||||
// flags: ../dynload-wrapper/generate-wrapper.py --sys-include "thirdparty/linuxbsd_headers/X11/extensions/Xext.h" --include ./thirdparty/linuxbsd_headers/X11/extensions/shape.h --sys-include "thirdparty/linuxbsd_headers/X11/extensions/shape.h" --soname libXext.so.6 --init-name xext --output-header ./platform/linuxbsd/x11/dynwrappers/xext-so_wrap.h --output-implementation ./platform/linuxbsd/x11/dynwrappers/xext-so_wrap.c
|
||||
// generated by generate-wrapper.py 0.3 on 2023-01-23 15:11:29
|
||||
// flags: generate-wrapper.py --sys-include "thirdparty/linuxbsd_headers/X11/extensions/Xext.h" --include ./thirdparty/linuxbsd_headers/X11/extensions/shape.h --sys-include "thirdparty/linuxbsd_headers/X11/extensions/shape.h" --soname libXext.so.6 --init-name xext --output-header ./platform/linuxbsd/x11/dynwrappers/xext-so_wrap.h --output-implementation ./platform/linuxbsd/x11/dynwrappers/xext-so_wrap.c
|
||||
//
|
||||
// NOTE: Generated from Xext 1.3.5.
|
||||
// This has been handpatched to workaround some issues with the generator that
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// This file is generated. Do not edit!
|
||||
// see https://github.com/hpvb/dynload-wrapper for details
|
||||
// generated by ../dynload-wrapper/generate-wrapper.py 0.3 on 2023-01-23 15:11:35
|
||||
// flags: ../dynload-wrapper/generate-wrapper.py --include ./thirdparty/linuxbsd_headers/X11/extensions/Xinerama.h --sys-include "thirdparty/linuxbsd_headers/X11/extensions/Xinerama.h" --soname libXinerama.so.1 --init-name xinerama --output-header ./platform/linuxbsd/x11/dynwrappers/xinerama-so_wrap.h --output-implementation ./platform/linuxbsd/x11/dynwrappers/xinerama-so_wrap.c
|
||||
// generated by generate-wrapper.py 0.3 on 2023-01-23 15:11:35
|
||||
// flags: generate-wrapper.py --include ./thirdparty/linuxbsd_headers/X11/extensions/Xinerama.h --sys-include "thirdparty/linuxbsd_headers/X11/extensions/Xinerama.h" --soname libXinerama.so.1 --init-name xinerama --output-header ./platform/linuxbsd/x11/dynwrappers/xinerama-so_wrap.h --output-implementation ./platform/linuxbsd/x11/dynwrappers/xinerama-so_wrap.c
|
||||
//
|
||||
// NOTE: Generated from Xinerama 1.1.4.
|
||||
// This has been handpatched to workaround some issues with the generator that
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
#define DYLIBLOAD_WRAPPER_XINERAMA
|
||||
// This file is generated. Do not edit!
|
||||
// see https://github.com/hpvb/dynload-wrapper for details
|
||||
// generated by ../dynload-wrapper/generate-wrapper.py 0.3 on 2023-01-23 15:11:35
|
||||
// flags: ../dynload-wrapper/generate-wrapper.py --include ./thirdparty/linuxbsd_headers/X11/extensions/Xinerama.h --sys-include "thirdparty/linuxbsd_headers/X11/extensions/Xinerama.h" --soname libXinerama.so.1 --init-name xinerama --output-header ./platform/linuxbsd/x11/dynwrappers/xinerama-so_wrap.h --output-implementation ./platform/linuxbsd/x11/dynwrappers/xinerama-so_wrap.c
|
||||
// generated by generate-wrapper.py 0.3 on 2023-01-23 15:11:35
|
||||
// flags: generate-wrapper.py --include ./thirdparty/linuxbsd_headers/X11/extensions/Xinerama.h --sys-include "thirdparty/linuxbsd_headers/X11/extensions/Xinerama.h" --soname libXinerama.so.1 --init-name xinerama --output-header ./platform/linuxbsd/x11/dynwrappers/xinerama-so_wrap.h --output-implementation ./platform/linuxbsd/x11/dynwrappers/xinerama-so_wrap.c
|
||||
//
|
||||
// NOTE: Generated from Xinerama 1.1.4.
|
||||
// This has been handpatched to workaround some issues with the generator that
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// This file is generated. Do not edit!
|
||||
// see https://github.com/hpvb/dynload-wrapper for details
|
||||
// generated by ../dynload-wrapper/generate-wrapper.py 0.3 on 2023-01-23 15:12:16
|
||||
// flags: ../dynload-wrapper/generate-wrapper.py --include ./thirdparty/linuxbsd_headers/X11/extensions/XInput2.h --sys-include "thirdparty/linuxbsd_headers/X11/extensions/XInput2.h" --soname libXi.so.6 --init-name xinput2 --output-header ./platform/linuxbsd/x11/dynwrappers/xinput2-so_wrap.h --output-implementation ./platform/linuxbsd/x11/dynwrappers/xinput2-so_wrap.c
|
||||
// generated by generate-wrapper.py 0.3 on 2023-01-23 15:12:16
|
||||
// flags: generate-wrapper.py --include ./thirdparty/linuxbsd_headers/X11/extensions/XInput2.h --sys-include "thirdparty/linuxbsd_headers/X11/extensions/XInput2.h" --soname libXi.so.6 --init-name xinput2 --output-header ./platform/linuxbsd/x11/dynwrappers/xinput2-so_wrap.h --output-implementation ./platform/linuxbsd/x11/dynwrappers/xinput2-so_wrap.c
|
||||
//
|
||||
// NOTE: Generated from Xi 1.7.10.
|
||||
// This has been handpatched to workaround some issues with the generator that
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
#define DYLIBLOAD_WRAPPER_XINPUT2
|
||||
// This file is generated. Do not edit!
|
||||
// see https://github.com/hpvb/dynload-wrapper for details
|
||||
// generated by ../dynload-wrapper/generate-wrapper.py 0.3 on 2023-01-23 15:12:16
|
||||
// flags: ../dynload-wrapper/generate-wrapper.py --include ./thirdparty/linuxbsd_headers/X11/extensions/XInput2.h --sys-include "thirdparty/linuxbsd_headers/X11/extensions/XInput2.h" --soname libXi.so.6 --init-name xinput2 --output-header ./platform/linuxbsd/x11/dynwrappers/xinput2-so_wrap.h --output-implementation ./platform/linuxbsd/x11/dynwrappers/xinput2-so_wrap.c
|
||||
// generated by generate-wrapper.py 0.3 on 2023-01-23 15:12:16
|
||||
// flags: generate-wrapper.py --include ./thirdparty/linuxbsd_headers/X11/extensions/XInput2.h --sys-include "thirdparty/linuxbsd_headers/X11/extensions/XInput2.h" --soname libXi.so.6 --init-name xinput2 --output-header ./platform/linuxbsd/x11/dynwrappers/xinput2-so_wrap.h --output-implementation ./platform/linuxbsd/x11/dynwrappers/xinput2-so_wrap.c
|
||||
//
|
||||
// NOTE: Generated from Xi 1.7.10.
|
||||
// This has been handpatched to workaround some issues with the generator that
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// This file is generated. Do not edit!
|
||||
// see https://github.com/hpvb/dynload-wrapper for details
|
||||
// generated by ../dynload-wrapper/generate-wrapper.py 0.3 on 2023-01-23 15:13:26
|
||||
// flags: ../dynload-wrapper/generate-wrapper.py --include ./thirdparty/linuxbsd_headers/X11/Xlib.h --include ./thirdparty/linuxbsd_headers/X11/Xutil.h --include ./thirdparty/linuxbsd_headers/X11/XKBlib.h --sys-include "thirdparty/linuxbsd_headers/X11/Xlib.h" --sys-include "thirdparty/linuxbsd_headers/X11/Xutil.h" --sys-include "thirdparty/linuxbsd_headers/X11/XKBlib.h" --soname libX11.so.6 --init-name xlib --omit-prefix XkbGetDeviceIndicatorState --omit-prefix XkbAddSymInterpret --output-header ./platform/linuxbsd/x11/dynwrappers/xlib-so_wrap.h --output-implementation ./platform/linuxbsd/x11/dynwrappers/xlib-so_wrap.c~
|
||||
// generated by generate-wrapper.py 0.3 on 2023-01-23 15:13:26
|
||||
// flags: generate-wrapper.py --include ./thirdparty/linuxbsd_headers/X11/Xlib.h --include ./thirdparty/linuxbsd_headers/X11/Xutil.h --include ./thirdparty/linuxbsd_headers/X11/XKBlib.h --sys-include "thirdparty/linuxbsd_headers/X11/Xlib.h" --sys-include "thirdparty/linuxbsd_headers/X11/Xutil.h" --sys-include "thirdparty/linuxbsd_headers/X11/XKBlib.h" --soname libX11.so.6 --init-name xlib --omit-prefix XkbGetDeviceIndicatorState --omit-prefix XkbAddSymInterpret --output-header ./platform/linuxbsd/x11/dynwrappers/xlib-so_wrap.h --output-implementation ./platform/linuxbsd/x11/dynwrappers/xlib-so_wrap.c~
|
||||
//
|
||||
// NOTE: Generated from Xlib 1.6.9.
|
||||
// This has been handpatched to workaround some issues with the generator that
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
#define DYLIBLOAD_WRAPPER_XLIB
|
||||
// This file is generated. Do not edit!
|
||||
// see https://github.com/hpvb/dynload-wrapper for details
|
||||
// generated by ../dynload-wrapper/generate-wrapper.py 0.3 on 2023-01-23 15:13:26
|
||||
// flags: ../dynload-wrapper/generate-wrapper.py --include ./thirdparty/linuxbsd_headers/X11/Xlib.h --include ./thirdparty/linuxbsd_headers/X11/Xutil.h --include ./thirdparty/linuxbsd_headers/X11/XKBlib.h --sys-include "thirdparty/linuxbsd_headers/X11/Xlib.h" --sys-include "thirdparty/linuxbsd_headers/X11/Xutil.h" --sys-include "thirdparty/linuxbsd_headers/X11/XKBlib.h" --soname libX11.so.6 --init-name xlib --omit-prefix XkbGetDeviceIndicatorState --omit-prefix XkbAddSymInterpret --output-header ./platform/linuxbsd/x11/dynwrappers/xlib-so_wrap.h --output-implementation ./platform/linuxbsd/x11/dynwrappers/xlib-so_wrap.c~
|
||||
// generated by generate-wrapper.py 0.3 on 2023-01-23 15:13:26
|
||||
// flags: generate-wrapper.py --include ./thirdparty/linuxbsd_headers/X11/Xlib.h --include ./thirdparty/linuxbsd_headers/X11/Xutil.h --include ./thirdparty/linuxbsd_headers/X11/XKBlib.h --sys-include "thirdparty/linuxbsd_headers/X11/Xlib.h" --sys-include "thirdparty/linuxbsd_headers/X11/Xutil.h" --sys-include "thirdparty/linuxbsd_headers/X11/XKBlib.h" --soname libX11.so.6 --init-name xlib --omit-prefix XkbGetDeviceIndicatorState --omit-prefix XkbAddSymInterpret --output-header ./platform/linuxbsd/x11/dynwrappers/xlib-so_wrap.h --output-implementation ./platform/linuxbsd/x11/dynwrappers/xlib-so_wrap.c~
|
||||
//
|
||||
// NOTE: Generated from Xlib 1.6.9.
|
||||
// This has been handpatched to workaround some issues with the generator that
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// This file is generated. Do not edit!
|
||||
// see https://github.com/hpvb/dynload-wrapper for details
|
||||
// generated by ../dynload-wrapper/generate-wrapper.py 0.3 on 2023-01-23 15:13:54
|
||||
// flags: ../dynload-wrapper/generate-wrapper.py --include ./thirdparty/linuxbsd_headers/X11/extensions/Xrandr.h --sys-include "thirdparty/linuxbsd_headers/X11/extensions/Xrandr.h" --soname libXrandr.so.2 --init-name xrandr --output-header ./platform/linuxbsd/x11/dynwrappers/xrandr-so_wrap.h --output-implementation ./platform/linuxbsd/x11/dynwrappers/xrandr-so_wrap.c
|
||||
// generated by generate-wrapper.py 0.3 on 2023-01-23 15:13:54
|
||||
// flags: generate-wrapper.py --include ./thirdparty/linuxbsd_headers/X11/extensions/Xrandr.h --sys-include "thirdparty/linuxbsd_headers/X11/extensions/Xrandr.h" --soname libXrandr.so.2 --init-name xrandr --output-header ./platform/linuxbsd/x11/dynwrappers/xrandr-so_wrap.h --output-implementation ./platform/linuxbsd/x11/dynwrappers/xrandr-so_wrap.c
|
||||
//
|
||||
// NOTE: Generated from Xrandr 1.5.2.
|
||||
// This has been handpatched to workaround some issues with the generator that
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
#define DYLIBLOAD_WRAPPER_XRANDR
|
||||
// This file is generated. Do not edit!
|
||||
// see https://github.com/hpvb/dynload-wrapper for details
|
||||
// generated by ../dynload-wrapper/generate-wrapper.py 0.3 on 2023-01-23 15:13:54
|
||||
// flags: ../dynload-wrapper/generate-wrapper.py --include ./thirdparty/linuxbsd_headers/X11/extensions/Xrandr.h --sys-include "thirdparty/linuxbsd_headers/X11/extensions/Xrandr.h" --soname libXrandr.so.2 --init-name xrandr --output-header ./platform/linuxbsd/x11/dynwrappers/xrandr-so_wrap.h --output-implementation ./platform/linuxbsd/x11/dynwrappers/xrandr-so_wrap.c
|
||||
// generated by generate-wrapper.py 0.3 on 2023-01-23 15:13:54
|
||||
// flags: generate-wrapper.py --include ./thirdparty/linuxbsd_headers/X11/extensions/Xrandr.h --sys-include "thirdparty/linuxbsd_headers/X11/extensions/Xrandr.h" --soname libXrandr.so.2 --init-name xrandr --output-header ./platform/linuxbsd/x11/dynwrappers/xrandr-so_wrap.h --output-implementation ./platform/linuxbsd/x11/dynwrappers/xrandr-so_wrap.c
|
||||
//
|
||||
// NOTE: Generated from Xrandr 1.5.2.
|
||||
// This has been handpatched to workaround some issues with the generator that
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// This file is generated. Do not edit!
|
||||
// see https://github.com/hpvb/dynload-wrapper for details
|
||||
// generated by ../dynload-wrapper/generate-wrapper.py 0.3 on 2023-01-23 15:14:14
|
||||
// flags: ../dynload-wrapper/generate-wrapper.py --include ./thirdparty/linuxbsd_headers/X11/extensions/Xrender.h --sys-include "thirdparty/linuxbsd_headers/X11/extensions/Xrender.h" --soname libXrender.so.1 --init-name xrender --output-header ./platform/linuxbsd/x11/dynwrappers/xrender-so_wrap.h --output-implementation ./platform/linuxbsd/x11/dynwrappers/xrender-so_wrap.c~
|
||||
// generated by generate-wrapper.py 0.3 on 2023-01-23 15:14:14
|
||||
// flags: generate-wrapper.py --include ./thirdparty/linuxbsd_headers/X11/extensions/Xrender.h --sys-include "thirdparty/linuxbsd_headers/X11/extensions/Xrender.h" --soname libXrender.so.1 --init-name xrender --output-header ./platform/linuxbsd/x11/dynwrappers/xrender-so_wrap.h --output-implementation ./platform/linuxbsd/x11/dynwrappers/xrender-so_wrap.c~
|
||||
//
|
||||
// NOTE: Generated from Xrender 0.9.10.
|
||||
// This has been handpatched to workaround some issues with the generator that
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
#define DYLIBLOAD_WRAPPER_XRENDER
|
||||
// This file is generated. Do not edit!
|
||||
// see https://github.com/hpvb/dynload-wrapper for details
|
||||
// generated by ../dynload-wrapper/generate-wrapper.py 0.3 on 2023-01-23 15:14:14
|
||||
// flags: ../dynload-wrapper/generate-wrapper.py --include ./thirdparty/linuxbsd_headers/X11/extensions/Xrender.h --sys-include "thirdparty/linuxbsd_headers/X11/extensions/Xrender.h" --soname libXrender.so.1 --init-name xrender --output-header ./platform/linuxbsd/x11/dynwrappers/xrender-so_wrap.h --output-implementation ./platform/linuxbsd/x11/dynwrappers/xrender-so_wrap.c~
|
||||
// generated by generate-wrapper.py 0.3 on 2023-01-23 15:14:14
|
||||
// flags: generate-wrapper.py --include ./thirdparty/linuxbsd_headers/X11/extensions/Xrender.h --sys-include "thirdparty/linuxbsd_headers/X11/extensions/Xrender.h" --soname libXrender.so.1 --init-name xrender --output-header ./platform/linuxbsd/x11/dynwrappers/xrender-so_wrap.h --output-implementation ./platform/linuxbsd/x11/dynwrappers/xrender-so_wrap.c~
|
||||
//
|
||||
// NOTE: Generated from Xrender 0.9.10.
|
||||
// This has been handpatched to workaround some issues with the generator that
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// This file is generated. Do not edit!
|
||||
// see https://github.com/hpvb/dynload-wrapper for details
|
||||
// generated by ../dynload-wrapper/generate-wrapper.py 0.3 on 2023-01-23 15:14:21
|
||||
// flags: ../dynload-wrapper/generate-wrapper.py --include ./thirdparty/linuxbsd_headers/xkbcommon/xkbcommon.h --sys-include "./thirdparty/linuxbsd_headers/xkbcommon/xkbcommon.h" --soname libxkbcommon.so.0 --init-name xkbcommon --output-header ./platform/linuxbsd/x11/dynwrappers/xkbcommon-so_wrap.h --output-implementation ./platform/linuxbsd/x11/dynwrappers/xkbcommon-so_wrap.c
|
||||
// generated by generate-wrapper.py 0.3 on 2023-01-30 10:40:26
|
||||
// flags: generate-wrapper.py --include ./thirdparty/linuxbsd_headers/xkbcommon/xkbcommon.h --include ./thirdparty/linuxbsd_headers/xkbcommon/xkbcommon-compose.h --include ./thirdparty/linuxbsd_headers/xkbcommon/xkbcommon-keysyms.h --sys-include "./thirdparty/linuxbsd_headers/xkbcommon/xkbcommon.h" --sys-include "./thirdparty/linuxbsd_headers/xkbcommon/xkbcommon-compose.h" --sys-include "./thirdparty/linuxbsd_headers/xkbcommon/xkbcommon-keysyms.h" --soname libxkbcommon.so.0 --init-name xkbcommon --output-header ./platform/linuxbsd/xkbcommon-so_wrap.h --output-implementation ./platform/linuxbsd/xkbcommon-so_wrap.c
|
||||
//
|
||||
#include <stdint.h>
|
||||
|
||||
|
@ -81,7 +81,23 @@
|
|||
#define xkb_state_layout_index_is_active xkb_state_layout_index_is_active_dylibloader_orig_xkbcommon
|
||||
#define xkb_state_led_name_is_active xkb_state_led_name_is_active_dylibloader_orig_xkbcommon
|
||||
#define xkb_state_led_index_is_active xkb_state_led_index_is_active_dylibloader_orig_xkbcommon
|
||||
#define xkb_compose_table_new_from_locale xkb_compose_table_new_from_locale_dylibloader_orig_xkbcommon
|
||||
#define xkb_compose_table_new_from_file xkb_compose_table_new_from_file_dylibloader_orig_xkbcommon
|
||||
#define xkb_compose_table_new_from_buffer xkb_compose_table_new_from_buffer_dylibloader_orig_xkbcommon
|
||||
#define xkb_compose_table_ref xkb_compose_table_ref_dylibloader_orig_xkbcommon
|
||||
#define xkb_compose_table_unref xkb_compose_table_unref_dylibloader_orig_xkbcommon
|
||||
#define xkb_compose_state_new xkb_compose_state_new_dylibloader_orig_xkbcommon
|
||||
#define xkb_compose_state_ref xkb_compose_state_ref_dylibloader_orig_xkbcommon
|
||||
#define xkb_compose_state_unref xkb_compose_state_unref_dylibloader_orig_xkbcommon
|
||||
#define xkb_compose_state_get_compose_table xkb_compose_state_get_compose_table_dylibloader_orig_xkbcommon
|
||||
#define xkb_compose_state_feed xkb_compose_state_feed_dylibloader_orig_xkbcommon
|
||||
#define xkb_compose_state_reset xkb_compose_state_reset_dylibloader_orig_xkbcommon
|
||||
#define xkb_compose_state_get_status xkb_compose_state_get_status_dylibloader_orig_xkbcommon
|
||||
#define xkb_compose_state_get_utf8 xkb_compose_state_get_utf8_dylibloader_orig_xkbcommon
|
||||
#define xkb_compose_state_get_one_sym xkb_compose_state_get_one_sym_dylibloader_orig_xkbcommon
|
||||
#include "./thirdparty/linuxbsd_headers/xkbcommon/xkbcommon.h"
|
||||
#include "./thirdparty/linuxbsd_headers/xkbcommon/xkbcommon-compose.h"
|
||||
#include "./thirdparty/linuxbsd_headers/xkbcommon/xkbcommon-keysyms.h"
|
||||
#undef xkb_keysym_get_name
|
||||
#undef xkb_keysym_from_name
|
||||
#undef xkb_keysym_to_utf8
|
||||
|
@ -158,6 +174,20 @@
|
|||
#undef xkb_state_layout_index_is_active
|
||||
#undef xkb_state_led_name_is_active
|
||||
#undef xkb_state_led_index_is_active
|
||||
#undef xkb_compose_table_new_from_locale
|
||||
#undef xkb_compose_table_new_from_file
|
||||
#undef xkb_compose_table_new_from_buffer
|
||||
#undef xkb_compose_table_ref
|
||||
#undef xkb_compose_table_unref
|
||||
#undef xkb_compose_state_new
|
||||
#undef xkb_compose_state_ref
|
||||
#undef xkb_compose_state_unref
|
||||
#undef xkb_compose_state_get_compose_table
|
||||
#undef xkb_compose_state_feed
|
||||
#undef xkb_compose_state_reset
|
||||
#undef xkb_compose_state_get_status
|
||||
#undef xkb_compose_state_get_utf8
|
||||
#undef xkb_compose_state_get_one_sym
|
||||
#include <dlfcn.h>
|
||||
#include <stdio.h>
|
||||
int (*xkb_keysym_get_name_dylibloader_wrapper_xkbcommon)( xkb_keysym_t, char*, size_t);
|
||||
|
@ -236,6 +266,20 @@ int (*xkb_state_layout_name_is_active_dylibloader_wrapper_xkbcommon)(struct xkb_
|
|||
int (*xkb_state_layout_index_is_active_dylibloader_wrapper_xkbcommon)(struct xkb_state*, xkb_layout_index_t,enum xkb_state_component);
|
||||
int (*xkb_state_led_name_is_active_dylibloader_wrapper_xkbcommon)(struct xkb_state*,const char*);
|
||||
int (*xkb_state_led_index_is_active_dylibloader_wrapper_xkbcommon)(struct xkb_state*, xkb_led_index_t);
|
||||
struct xkb_compose_table* (*xkb_compose_table_new_from_locale_dylibloader_wrapper_xkbcommon)(struct xkb_context*,const char*,enum xkb_compose_compile_flags);
|
||||
struct xkb_compose_table* (*xkb_compose_table_new_from_file_dylibloader_wrapper_xkbcommon)(struct xkb_context*, FILE*,const char*,enum xkb_compose_format,enum xkb_compose_compile_flags);
|
||||
struct xkb_compose_table* (*xkb_compose_table_new_from_buffer_dylibloader_wrapper_xkbcommon)(struct xkb_context*,const char*, size_t,const char*,enum xkb_compose_format,enum xkb_compose_compile_flags);
|
||||
struct xkb_compose_table* (*xkb_compose_table_ref_dylibloader_wrapper_xkbcommon)(struct xkb_compose_table*);
|
||||
void (*xkb_compose_table_unref_dylibloader_wrapper_xkbcommon)(struct xkb_compose_table*);
|
||||
struct xkb_compose_state* (*xkb_compose_state_new_dylibloader_wrapper_xkbcommon)(struct xkb_compose_table*,enum xkb_compose_state_flags);
|
||||
struct xkb_compose_state* (*xkb_compose_state_ref_dylibloader_wrapper_xkbcommon)(struct xkb_compose_state*);
|
||||
void (*xkb_compose_state_unref_dylibloader_wrapper_xkbcommon)(struct xkb_compose_state*);
|
||||
struct xkb_compose_table* (*xkb_compose_state_get_compose_table_dylibloader_wrapper_xkbcommon)(struct xkb_compose_state*);
|
||||
enum xkb_compose_feed_result (*xkb_compose_state_feed_dylibloader_wrapper_xkbcommon)(struct xkb_compose_state*, xkb_keysym_t);
|
||||
void (*xkb_compose_state_reset_dylibloader_wrapper_xkbcommon)(struct xkb_compose_state*);
|
||||
enum xkb_compose_status (*xkb_compose_state_get_status_dylibloader_wrapper_xkbcommon)(struct xkb_compose_state*);
|
||||
int (*xkb_compose_state_get_utf8_dylibloader_wrapper_xkbcommon)(struct xkb_compose_state*, char*, size_t);
|
||||
xkb_keysym_t (*xkb_compose_state_get_one_sym_dylibloader_wrapper_xkbcommon)(struct xkb_compose_state*);
|
||||
int initialize_xkbcommon(int verbose) {
|
||||
void *handle;
|
||||
char *error;
|
||||
|
@ -855,5 +899,117 @@ int initialize_xkbcommon(int verbose) {
|
|||
fprintf(stderr, "%s\n", error);
|
||||
}
|
||||
}
|
||||
// xkb_compose_table_new_from_locale
|
||||
*(void **) (&xkb_compose_table_new_from_locale_dylibloader_wrapper_xkbcommon) = dlsym(handle, "xkb_compose_table_new_from_locale");
|
||||
if (verbose) {
|
||||
error = dlerror();
|
||||
if (error != NULL) {
|
||||
fprintf(stderr, "%s\n", error);
|
||||
}
|
||||
}
|
||||
// xkb_compose_table_new_from_file
|
||||
*(void **) (&xkb_compose_table_new_from_file_dylibloader_wrapper_xkbcommon) = dlsym(handle, "xkb_compose_table_new_from_file");
|
||||
if (verbose) {
|
||||
error = dlerror();
|
||||
if (error != NULL) {
|
||||
fprintf(stderr, "%s\n", error);
|
||||
}
|
||||
}
|
||||
// xkb_compose_table_new_from_buffer
|
||||
*(void **) (&xkb_compose_table_new_from_buffer_dylibloader_wrapper_xkbcommon) = dlsym(handle, "xkb_compose_table_new_from_buffer");
|
||||
if (verbose) {
|
||||
error = dlerror();
|
||||
if (error != NULL) {
|
||||
fprintf(stderr, "%s\n", error);
|
||||
}
|
||||
}
|
||||
// xkb_compose_table_ref
|
||||
*(void **) (&xkb_compose_table_ref_dylibloader_wrapper_xkbcommon) = dlsym(handle, "xkb_compose_table_ref");
|
||||
if (verbose) {
|
||||
error = dlerror();
|
||||
if (error != NULL) {
|
||||
fprintf(stderr, "%s\n", error);
|
||||
}
|
||||
}
|
||||
// xkb_compose_table_unref
|
||||
*(void **) (&xkb_compose_table_unref_dylibloader_wrapper_xkbcommon) = dlsym(handle, "xkb_compose_table_unref");
|
||||
if (verbose) {
|
||||
error = dlerror();
|
||||
if (error != NULL) {
|
||||
fprintf(stderr, "%s\n", error);
|
||||
}
|
||||
}
|
||||
// xkb_compose_state_new
|
||||
*(void **) (&xkb_compose_state_new_dylibloader_wrapper_xkbcommon) = dlsym(handle, "xkb_compose_state_new");
|
||||
if (verbose) {
|
||||
error = dlerror();
|
||||
if (error != NULL) {
|
||||
fprintf(stderr, "%s\n", error);
|
||||
}
|
||||
}
|
||||
// xkb_compose_state_ref
|
||||
*(void **) (&xkb_compose_state_ref_dylibloader_wrapper_xkbcommon) = dlsym(handle, "xkb_compose_state_ref");
|
||||
if (verbose) {
|
||||
error = dlerror();
|
||||
if (error != NULL) {
|
||||
fprintf(stderr, "%s\n", error);
|
||||
}
|
||||
}
|
||||
// xkb_compose_state_unref
|
||||
*(void **) (&xkb_compose_state_unref_dylibloader_wrapper_xkbcommon) = dlsym(handle, "xkb_compose_state_unref");
|
||||
if (verbose) {
|
||||
error = dlerror();
|
||||
if (error != NULL) {
|
||||
fprintf(stderr, "%s\n", error);
|
||||
}
|
||||
}
|
||||
// xkb_compose_state_get_compose_table
|
||||
*(void **) (&xkb_compose_state_get_compose_table_dylibloader_wrapper_xkbcommon) = dlsym(handle, "xkb_compose_state_get_compose_table");
|
||||
if (verbose) {
|
||||
error = dlerror();
|
||||
if (error != NULL) {
|
||||
fprintf(stderr, "%s\n", error);
|
||||
}
|
||||
}
|
||||
// xkb_compose_state_feed
|
||||
*(void **) (&xkb_compose_state_feed_dylibloader_wrapper_xkbcommon) = dlsym(handle, "xkb_compose_state_feed");
|
||||
if (verbose) {
|
||||
error = dlerror();
|
||||
if (error != NULL) {
|
||||
fprintf(stderr, "%s\n", error);
|
||||
}
|
||||
}
|
||||
// xkb_compose_state_reset
|
||||
*(void **) (&xkb_compose_state_reset_dylibloader_wrapper_xkbcommon) = dlsym(handle, "xkb_compose_state_reset");
|
||||
if (verbose) {
|
||||
error = dlerror();
|
||||
if (error != NULL) {
|
||||
fprintf(stderr, "%s\n", error);
|
||||
}
|
||||
}
|
||||
// xkb_compose_state_get_status
|
||||
*(void **) (&xkb_compose_state_get_status_dylibloader_wrapper_xkbcommon) = dlsym(handle, "xkb_compose_state_get_status");
|
||||
if (verbose) {
|
||||
error = dlerror();
|
||||
if (error != NULL) {
|
||||
fprintf(stderr, "%s\n", error);
|
||||
}
|
||||
}
|
||||
// xkb_compose_state_get_utf8
|
||||
*(void **) (&xkb_compose_state_get_utf8_dylibloader_wrapper_xkbcommon) = dlsym(handle, "xkb_compose_state_get_utf8");
|
||||
if (verbose) {
|
||||
error = dlerror();
|
||||
if (error != NULL) {
|
||||
fprintf(stderr, "%s\n", error);
|
||||
}
|
||||
}
|
||||
// xkb_compose_state_get_one_sym
|
||||
*(void **) (&xkb_compose_state_get_one_sym_dylibloader_wrapper_xkbcommon) = dlsym(handle, "xkb_compose_state_get_one_sym");
|
||||
if (verbose) {
|
||||
error = dlerror();
|
||||
if (error != NULL) {
|
||||
fprintf(stderr, "%s\n", error);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
#define DYLIBLOAD_WRAPPER_XKBCOMMON
|
||||
// This file is generated. Do not edit!
|
||||
// see https://github.com/hpvb/dynload-wrapper for details
|
||||
// generated by ../dynload-wrapper/generate-wrapper.py 0.3 on 2023-01-23 15:14:21
|
||||
// flags: ../dynload-wrapper/generate-wrapper.py --include ./thirdparty/linuxbsd_headers/xkbcommon/xkbcommon.h --sys-include "./thirdparty/linuxbsd_headers/xkbcommon/xkbcommon.h" --soname libxkbcommon.so.0 --init-name xkbcommon --output-header ./platform/linuxbsd/x11/dynwrappers/xkbcommon-so_wrap.h --output-implementation ./platform/linuxbsd/x11/dynwrappers/xkbcommon-so_wrap.c
|
||||
// generated by generate-wrapper.py 0.3 on 2023-01-30 10:40:26
|
||||
// flags: generate-wrapper.py --include ./thirdparty/linuxbsd_headers/xkbcommon/xkbcommon.h --include ./thirdparty/linuxbsd_headers/xkbcommon/xkbcommon-compose.h --include ./thirdparty/linuxbsd_headers/xkbcommon/xkbcommon-keysyms.h --sys-include "./thirdparty/linuxbsd_headers/xkbcommon/xkbcommon.h" --sys-include "./thirdparty/linuxbsd_headers/xkbcommon/xkbcommon-compose.h" --sys-include "./thirdparty/linuxbsd_headers/xkbcommon/xkbcommon-keysyms.h" --soname libxkbcommon.so.0 --init-name xkbcommon --output-header ./platform/linuxbsd/xkbcommon-so_wrap.h --output-implementation ./platform/linuxbsd/xkbcommon-so_wrap.c
|
||||
//
|
||||
#include <stdint.h>
|
||||
|
||||
|
@ -83,7 +83,23 @@
|
|||
#define xkb_state_layout_index_is_active xkb_state_layout_index_is_active_dylibloader_orig_xkbcommon
|
||||
#define xkb_state_led_name_is_active xkb_state_led_name_is_active_dylibloader_orig_xkbcommon
|
||||
#define xkb_state_led_index_is_active xkb_state_led_index_is_active_dylibloader_orig_xkbcommon
|
||||
#define xkb_compose_table_new_from_locale xkb_compose_table_new_from_locale_dylibloader_orig_xkbcommon
|
||||
#define xkb_compose_table_new_from_file xkb_compose_table_new_from_file_dylibloader_orig_xkbcommon
|
||||
#define xkb_compose_table_new_from_buffer xkb_compose_table_new_from_buffer_dylibloader_orig_xkbcommon
|
||||
#define xkb_compose_table_ref xkb_compose_table_ref_dylibloader_orig_xkbcommon
|
||||
#define xkb_compose_table_unref xkb_compose_table_unref_dylibloader_orig_xkbcommon
|
||||
#define xkb_compose_state_new xkb_compose_state_new_dylibloader_orig_xkbcommon
|
||||
#define xkb_compose_state_ref xkb_compose_state_ref_dylibloader_orig_xkbcommon
|
||||
#define xkb_compose_state_unref xkb_compose_state_unref_dylibloader_orig_xkbcommon
|
||||
#define xkb_compose_state_get_compose_table xkb_compose_state_get_compose_table_dylibloader_orig_xkbcommon
|
||||
#define xkb_compose_state_feed xkb_compose_state_feed_dylibloader_orig_xkbcommon
|
||||
#define xkb_compose_state_reset xkb_compose_state_reset_dylibloader_orig_xkbcommon
|
||||
#define xkb_compose_state_get_status xkb_compose_state_get_status_dylibloader_orig_xkbcommon
|
||||
#define xkb_compose_state_get_utf8 xkb_compose_state_get_utf8_dylibloader_orig_xkbcommon
|
||||
#define xkb_compose_state_get_one_sym xkb_compose_state_get_one_sym_dylibloader_orig_xkbcommon
|
||||
#include "./thirdparty/linuxbsd_headers/xkbcommon/xkbcommon.h"
|
||||
#include "./thirdparty/linuxbsd_headers/xkbcommon/xkbcommon-compose.h"
|
||||
#include "./thirdparty/linuxbsd_headers/xkbcommon/xkbcommon-keysyms.h"
|
||||
#undef xkb_keysym_get_name
|
||||
#undef xkb_keysym_from_name
|
||||
#undef xkb_keysym_to_utf8
|
||||
|
@ -160,6 +176,20 @@
|
|||
#undef xkb_state_layout_index_is_active
|
||||
#undef xkb_state_led_name_is_active
|
||||
#undef xkb_state_led_index_is_active
|
||||
#undef xkb_compose_table_new_from_locale
|
||||
#undef xkb_compose_table_new_from_file
|
||||
#undef xkb_compose_table_new_from_buffer
|
||||
#undef xkb_compose_table_ref
|
||||
#undef xkb_compose_table_unref
|
||||
#undef xkb_compose_state_new
|
||||
#undef xkb_compose_state_ref
|
||||
#undef xkb_compose_state_unref
|
||||
#undef xkb_compose_state_get_compose_table
|
||||
#undef xkb_compose_state_feed
|
||||
#undef xkb_compose_state_reset
|
||||
#undef xkb_compose_state_get_status
|
||||
#undef xkb_compose_state_get_utf8
|
||||
#undef xkb_compose_state_get_one_sym
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
@ -239,6 +269,20 @@ extern "C" {
|
|||
#define xkb_state_layout_index_is_active xkb_state_layout_index_is_active_dylibloader_wrapper_xkbcommon
|
||||
#define xkb_state_led_name_is_active xkb_state_led_name_is_active_dylibloader_wrapper_xkbcommon
|
||||
#define xkb_state_led_index_is_active xkb_state_led_index_is_active_dylibloader_wrapper_xkbcommon
|
||||
#define xkb_compose_table_new_from_locale xkb_compose_table_new_from_locale_dylibloader_wrapper_xkbcommon
|
||||
#define xkb_compose_table_new_from_file xkb_compose_table_new_from_file_dylibloader_wrapper_xkbcommon
|
||||
#define xkb_compose_table_new_from_buffer xkb_compose_table_new_from_buffer_dylibloader_wrapper_xkbcommon
|
||||
#define xkb_compose_table_ref xkb_compose_table_ref_dylibloader_wrapper_xkbcommon
|
||||
#define xkb_compose_table_unref xkb_compose_table_unref_dylibloader_wrapper_xkbcommon
|
||||
#define xkb_compose_state_new xkb_compose_state_new_dylibloader_wrapper_xkbcommon
|
||||
#define xkb_compose_state_ref xkb_compose_state_ref_dylibloader_wrapper_xkbcommon
|
||||
#define xkb_compose_state_unref xkb_compose_state_unref_dylibloader_wrapper_xkbcommon
|
||||
#define xkb_compose_state_get_compose_table xkb_compose_state_get_compose_table_dylibloader_wrapper_xkbcommon
|
||||
#define xkb_compose_state_feed xkb_compose_state_feed_dylibloader_wrapper_xkbcommon
|
||||
#define xkb_compose_state_reset xkb_compose_state_reset_dylibloader_wrapper_xkbcommon
|
||||
#define xkb_compose_state_get_status xkb_compose_state_get_status_dylibloader_wrapper_xkbcommon
|
||||
#define xkb_compose_state_get_utf8 xkb_compose_state_get_utf8_dylibloader_wrapper_xkbcommon
|
||||
#define xkb_compose_state_get_one_sym xkb_compose_state_get_one_sym_dylibloader_wrapper_xkbcommon
|
||||
extern int (*xkb_keysym_get_name_dylibloader_wrapper_xkbcommon)( xkb_keysym_t, char*, size_t);
|
||||
extern xkb_keysym_t (*xkb_keysym_from_name_dylibloader_wrapper_xkbcommon)(const char*,enum xkb_keysym_flags);
|
||||
extern int (*xkb_keysym_to_utf8_dylibloader_wrapper_xkbcommon)( xkb_keysym_t, char*, size_t);
|
||||
|
@ -315,6 +359,20 @@ extern int (*xkb_state_layout_name_is_active_dylibloader_wrapper_xkbcommon)(stru
|
|||
extern int (*xkb_state_layout_index_is_active_dylibloader_wrapper_xkbcommon)(struct xkb_state*, xkb_layout_index_t,enum xkb_state_component);
|
||||
extern int (*xkb_state_led_name_is_active_dylibloader_wrapper_xkbcommon)(struct xkb_state*,const char*);
|
||||
extern int (*xkb_state_led_index_is_active_dylibloader_wrapper_xkbcommon)(struct xkb_state*, xkb_led_index_t);
|
||||
extern struct xkb_compose_table* (*xkb_compose_table_new_from_locale_dylibloader_wrapper_xkbcommon)(struct xkb_context*,const char*,enum xkb_compose_compile_flags);
|
||||
extern struct xkb_compose_table* (*xkb_compose_table_new_from_file_dylibloader_wrapper_xkbcommon)(struct xkb_context*, FILE*,const char*,enum xkb_compose_format,enum xkb_compose_compile_flags);
|
||||
extern struct xkb_compose_table* (*xkb_compose_table_new_from_buffer_dylibloader_wrapper_xkbcommon)(struct xkb_context*,const char*, size_t,const char*,enum xkb_compose_format,enum xkb_compose_compile_flags);
|
||||
extern struct xkb_compose_table* (*xkb_compose_table_ref_dylibloader_wrapper_xkbcommon)(struct xkb_compose_table*);
|
||||
extern void (*xkb_compose_table_unref_dylibloader_wrapper_xkbcommon)(struct xkb_compose_table*);
|
||||
extern struct xkb_compose_state* (*xkb_compose_state_new_dylibloader_wrapper_xkbcommon)(struct xkb_compose_table*,enum xkb_compose_state_flags);
|
||||
extern struct xkb_compose_state* (*xkb_compose_state_ref_dylibloader_wrapper_xkbcommon)(struct xkb_compose_state*);
|
||||
extern void (*xkb_compose_state_unref_dylibloader_wrapper_xkbcommon)(struct xkb_compose_state*);
|
||||
extern struct xkb_compose_table* (*xkb_compose_state_get_compose_table_dylibloader_wrapper_xkbcommon)(struct xkb_compose_state*);
|
||||
extern enum xkb_compose_feed_result (*xkb_compose_state_feed_dylibloader_wrapper_xkbcommon)(struct xkb_compose_state*, xkb_keysym_t);
|
||||
extern void (*xkb_compose_state_reset_dylibloader_wrapper_xkbcommon)(struct xkb_compose_state*);
|
||||
extern enum xkb_compose_status (*xkb_compose_state_get_status_dylibloader_wrapper_xkbcommon)(struct xkb_compose_state*);
|
||||
extern int (*xkb_compose_state_get_utf8_dylibloader_wrapper_xkbcommon)(struct xkb_compose_state*, char*, size_t);
|
||||
extern xkb_keysym_t (*xkb_compose_state_get_one_sym_dylibloader_wrapper_xkbcommon)(struct xkb_compose_state*);
|
||||
int initialize_xkbcommon(int verbose);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue