SDL 2.0
SDL_ime.c File Reference
#include "SDL_ime.h"
#include "SDL_ibus.h"
#include "SDL_fcitx.h"
+ Include dependency graph for SDL_ime.c:

Go to the source code of this file.

Typedefs

typedef SDL_bool(* _SDL_IME_Init) ()
 
typedef void(* _SDL_IME_Quit) ()
 
typedef void(* _SDL_IME_SetFocus) (SDL_bool)
 
typedef void(* _SDL_IME_Reset) ()
 
typedef SDL_bool(* _SDL_IME_ProcessKeyEvent) (Uint32, Uint32)
 
typedef void(* _SDL_IME_UpdateTextRect) (SDL_Rect *)
 
typedef void(* _SDL_IME_PumpEvents) ()
 

Functions

static void InitIME ()
 
SDL_bool SDL_IME_Init (void)
 
void SDL_IME_Quit (void)
 
void SDL_IME_SetFocus (SDL_bool focused)
 
void SDL_IME_Reset (void)
 
SDL_bool SDL_IME_ProcessKeyEvent (Uint32 keysym, Uint32 keycode)
 
void SDL_IME_UpdateTextRect (SDL_Rect *rect)
 
void SDL_IME_PumpEvents ()
 

Variables

static _SDL_IME_Init SDL_IME_Init_Real = NULL
 
static _SDL_IME_Quit SDL_IME_Quit_Real = NULL
 
static _SDL_IME_SetFocus SDL_IME_SetFocus_Real = NULL
 
static _SDL_IME_Reset SDL_IME_Reset_Real = NULL
 
static _SDL_IME_ProcessKeyEvent SDL_IME_ProcessKeyEvent_Real = NULL
 
static _SDL_IME_UpdateTextRect SDL_IME_UpdateTextRect_Real = NULL
 
static _SDL_IME_PumpEvents SDL_IME_PumpEvents_Real = NULL
 

Typedef Documentation

◆ _SDL_IME_Init

typedef SDL_bool(* _SDL_IME_Init) ()

Definition at line 26 of file SDL_ime.c.

◆ _SDL_IME_ProcessKeyEvent

typedef SDL_bool(* _SDL_IME_ProcessKeyEvent) (Uint32, Uint32)

Definition at line 30 of file SDL_ime.c.

◆ _SDL_IME_PumpEvents

typedef void(* _SDL_IME_PumpEvents) ()

Definition at line 32 of file SDL_ime.c.

◆ _SDL_IME_Quit

typedef void(* _SDL_IME_Quit) ()

Definition at line 27 of file SDL_ime.c.

◆ _SDL_IME_Reset

typedef void(* _SDL_IME_Reset) ()

Definition at line 29 of file SDL_ime.c.

◆ _SDL_IME_SetFocus

typedef void(* _SDL_IME_SetFocus) (SDL_bool)

Definition at line 28 of file SDL_ime.c.

◆ _SDL_IME_UpdateTextRect

typedef void(* _SDL_IME_UpdateTextRect) (SDL_Rect *)

Definition at line 31 of file SDL_ime.c.

Function Documentation

◆ InitIME()

static void InitIME ( )
static

Definition at line 43 of file SDL_ime.c.

44{
45 static SDL_bool inited = SDL_FALSE;
46#ifdef HAVE_FCITX_FRONTEND_H
47 const char *im_module = SDL_getenv("SDL_IM_MODULE");
48 const char *xmodifiers = SDL_getenv("XMODIFIERS");
49#endif
50
51 if (inited == SDL_TRUE)
52 return;
53
54 inited = SDL_TRUE;
55
56 /* See if fcitx IME support is being requested */
57#ifdef HAVE_FCITX_FRONTEND_H
58 if (!SDL_IME_Init_Real &&
59 ((im_module && SDL_strcmp(im_module, "fcitx") == 0) ||
60 (!im_module && xmodifiers && SDL_strstr(xmodifiers, "@im=fcitx") != NULL))) {
68 }
69#endif /* HAVE_FCITX_FRONTEND_H */
70
71 /* default to IBus */
72#ifdef HAVE_IBUS_IBUS_H
73 if (!SDL_IME_Init_Real) {
74 SDL_IME_Init_Real = SDL_IBus_Init;
75 SDL_IME_Quit_Real = SDL_IBus_Quit;
76 SDL_IME_SetFocus_Real = SDL_IBus_SetFocus;
77 SDL_IME_Reset_Real = SDL_IBus_Reset;
78 SDL_IME_ProcessKeyEvent_Real = SDL_IBus_ProcessKeyEvent;
79 SDL_IME_UpdateTextRect_Real = SDL_IBus_UpdateTextRect;
80 SDL_IME_PumpEvents_Real = SDL_IBus_PumpEvents;
81 }
82#endif /* HAVE_IBUS_IBUS_H */
83}
#define SDL_getenv
#define SDL_strcmp
#define SDL_strstr
void SDL_Fcitx_SetFocus(SDL_bool focused)
void SDL_Fcitx_PumpEvents(void)
void SDL_Fcitx_Quit(void)
SDL_bool SDL_Fcitx_Init(void)
void SDL_Fcitx_Reset(void)
void SDL_Fcitx_UpdateTextRect(SDL_Rect *rect)
SDL_bool SDL_Fcitx_ProcessKeyEvent(Uint32 keysym, Uint32 keycode)
static _SDL_IME_SetFocus SDL_IME_SetFocus_Real
Definition: SDL_ime.c:36
static _SDL_IME_ProcessKeyEvent SDL_IME_ProcessKeyEvent_Real
Definition: SDL_ime.c:38
static _SDL_IME_Init SDL_IME_Init_Real
Definition: SDL_ime.c:34
static _SDL_IME_Reset SDL_IME_Reset_Real
Definition: SDL_ime.c:37
static _SDL_IME_Quit SDL_IME_Quit_Real
Definition: SDL_ime.c:35
static _SDL_IME_PumpEvents SDL_IME_PumpEvents_Real
Definition: SDL_ime.c:40
static _SDL_IME_UpdateTextRect SDL_IME_UpdateTextRect_Real
Definition: SDL_ime.c:39
SDL_bool
Definition: SDL_stdinc.h:162
@ SDL_TRUE
Definition: SDL_stdinc.h:164
@ SDL_FALSE
Definition: SDL_stdinc.h:163
#define NULL
Definition: begin_code.h:167

References NULL, SDL_FALSE, SDL_Fcitx_Init(), SDL_Fcitx_ProcessKeyEvent(), SDL_Fcitx_PumpEvents(), SDL_Fcitx_Quit(), SDL_Fcitx_Reset(), SDL_Fcitx_SetFocus(), SDL_Fcitx_UpdateTextRect(), SDL_getenv, SDL_IME_Init_Real, SDL_IME_ProcessKeyEvent_Real, SDL_IME_PumpEvents_Real, SDL_IME_Quit_Real, SDL_IME_Reset_Real, SDL_IME_SetFocus_Real, SDL_IME_UpdateTextRect_Real, SDL_strcmp, SDL_strstr, and SDL_TRUE.

Referenced by SDL_IME_Init().

◆ SDL_IME_Init()

SDL_bool SDL_IME_Init ( void  )

Definition at line 86 of file SDL_ime.c.

87{
88 InitIME();
89
91 if (SDL_IME_Init_Real()) {
92 return SDL_TRUE;
93 }
94
95 /* uhoh, the IME implementation's init failed! Disable IME support. */
103 }
104
105 return SDL_FALSE;
106}
static void InitIME()
Definition: SDL_ime.c:43

References InitIME(), NULL, SDL_FALSE, SDL_IME_Init_Real, SDL_IME_ProcessKeyEvent_Real, SDL_IME_PumpEvents_Real, SDL_IME_Quit_Real, SDL_IME_Reset_Real, SDL_IME_SetFocus_Real, SDL_IME_UpdateTextRect_Real, and SDL_TRUE.

◆ SDL_IME_ProcessKeyEvent()

SDL_bool SDL_IME_ProcessKeyEvent ( Uint32  keysym,
Uint32  keycode 
)

Definition at line 130 of file SDL_ime.c.

131{
133 return SDL_IME_ProcessKeyEvent_Real(keysym, keycode);
134
135 return SDL_FALSE;
136}

References SDL_FALSE, and SDL_IME_ProcessKeyEvent_Real.

◆ SDL_IME_PumpEvents()

void SDL_IME_PumpEvents ( void  )

Definition at line 146 of file SDL_ime.c.

References SDL_IME_PumpEvents_Real.

◆ SDL_IME_Quit()

void SDL_IME_Quit ( void  )

Definition at line 109 of file SDL_ime.c.

110{
113}

References SDL_IME_Quit_Real.

◆ SDL_IME_Reset()

void SDL_IME_Reset ( void  )

Definition at line 123 of file SDL_ime.c.

124{
127}

References SDL_IME_Reset_Real.

◆ SDL_IME_SetFocus()

void SDL_IME_SetFocus ( SDL_bool  focused)

Definition at line 116 of file SDL_ime.c.

117{
119 SDL_IME_SetFocus_Real(focused);
120}

References SDL_IME_SetFocus_Real.

◆ SDL_IME_UpdateTextRect()

void SDL_IME_UpdateTextRect ( SDL_Rect rect)

Definition at line 139 of file SDL_ime.c.

140{
143}
SDL_Rect rect
Definition: testrelative.c:27

References rect, and SDL_IME_UpdateTextRect_Real.

Variable Documentation

◆ SDL_IME_Init_Real

_SDL_IME_Init SDL_IME_Init_Real = NULL
static

Definition at line 34 of file SDL_ime.c.

Referenced by InitIME(), and SDL_IME_Init().

◆ SDL_IME_ProcessKeyEvent_Real

_SDL_IME_ProcessKeyEvent SDL_IME_ProcessKeyEvent_Real = NULL
static

Definition at line 38 of file SDL_ime.c.

Referenced by InitIME(), SDL_IME_Init(), and SDL_IME_ProcessKeyEvent().

◆ SDL_IME_PumpEvents_Real

_SDL_IME_PumpEvents SDL_IME_PumpEvents_Real = NULL
static

Definition at line 40 of file SDL_ime.c.

Referenced by InitIME(), SDL_IME_Init(), and SDL_IME_PumpEvents().

◆ SDL_IME_Quit_Real

_SDL_IME_Quit SDL_IME_Quit_Real = NULL
static

Definition at line 35 of file SDL_ime.c.

Referenced by InitIME(), SDL_IME_Init(), and SDL_IME_Quit().

◆ SDL_IME_Reset_Real

_SDL_IME_Reset SDL_IME_Reset_Real = NULL
static

Definition at line 37 of file SDL_ime.c.

Referenced by InitIME(), SDL_IME_Init(), and SDL_IME_Reset().

◆ SDL_IME_SetFocus_Real

_SDL_IME_SetFocus SDL_IME_SetFocus_Real = NULL
static

Definition at line 36 of file SDL_ime.c.

Referenced by InitIME(), SDL_IME_Init(), and SDL_IME_SetFocus().

◆ SDL_IME_UpdateTextRect_Real

_SDL_IME_UpdateTextRect SDL_IME_UpdateTextRect_Real = NULL
static

Definition at line 39 of file SDL_ime.c.

Referenced by InitIME(), SDL_IME_Init(), and SDL_IME_UpdateTextRect().