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.

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().

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 }
void SDL_Fcitx_UpdateTextRect(SDL_Rect *rect)
static _SDL_IME_Reset SDL_IME_Reset_Real
Definition: SDL_ime.c:37
static _SDL_IME_UpdateTextRect SDL_IME_UpdateTextRect_Real
Definition: SDL_ime.c:39
static _SDL_IME_Quit SDL_IME_Quit_Real
Definition: SDL_ime.c:35
SDL_bool SDL_Fcitx_Init(void)
static _SDL_IME_ProcessKeyEvent SDL_IME_ProcessKeyEvent_Real
Definition: SDL_ime.c:38
void SDL_Fcitx_Reset(void)
static _SDL_IME_Init SDL_IME_Init_Real
Definition: SDL_ime.c:34
void SDL_Fcitx_PumpEvents(void)
#define SDL_getenv
#define NULL
Definition: begin_code.h:164
void SDL_Fcitx_Quit(void)
SDL_bool
Definition: SDL_stdinc.h:139
static _SDL_IME_SetFocus SDL_IME_SetFocus_Real
Definition: SDL_ime.c:36
SDL_bool SDL_Fcitx_ProcessKeyEvent(Uint32 keysym, Uint32 keycode)
void SDL_Fcitx_SetFocus(SDL_bool focused)
#define SDL_strcmp
static _SDL_IME_PumpEvents SDL_IME_PumpEvents_Real
Definition: SDL_ime.c:40
#define SDL_strstr

◆ SDL_IME_Init()

SDL_bool SDL_IME_Init ( void  )

Definition at line 86 of file SDL_ime.c.

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.

87 {
88  InitIME();
89 
90  if (SDL_IME_Init_Real) {
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 _SDL_IME_Reset SDL_IME_Reset_Real
Definition: SDL_ime.c:37
static _SDL_IME_UpdateTextRect SDL_IME_UpdateTextRect_Real
Definition: SDL_ime.c:39
static _SDL_IME_Quit SDL_IME_Quit_Real
Definition: SDL_ime.c:35
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
#define NULL
Definition: begin_code.h:164
static _SDL_IME_SetFocus SDL_IME_SetFocus_Real
Definition: SDL_ime.c:36
static _SDL_IME_PumpEvents SDL_IME_PumpEvents_Real
Definition: SDL_ime.c:40
static void InitIME()
Definition: SDL_ime.c:43

◆ SDL_IME_ProcessKeyEvent()

SDL_bool SDL_IME_ProcessKeyEvent ( Uint32  keysym,
Uint32  keycode 
)

Definition at line 130 of file SDL_ime.c.

References SDL_FALSE, and SDL_IME_ProcessKeyEvent_Real.

131 {
133  return SDL_IME_ProcessKeyEvent_Real(keysym, keycode);
134 
135  return SDL_FALSE;
136 }
static _SDL_IME_ProcessKeyEvent SDL_IME_ProcessKeyEvent_Real
Definition: SDL_ime.c:38

◆ SDL_IME_PumpEvents()

void SDL_IME_PumpEvents ( void  )

Definition at line 146 of file SDL_ime.c.

References SDL_IME_PumpEvents_Real.

147 {
150 }
static _SDL_IME_PumpEvents SDL_IME_PumpEvents_Real
Definition: SDL_ime.c:40

◆ SDL_IME_Quit()

void SDL_IME_Quit ( void  )

Definition at line 109 of file SDL_ime.c.

References SDL_IME_Quit_Real.

110 {
111  if (SDL_IME_Quit_Real)
113 }
static _SDL_IME_Quit SDL_IME_Quit_Real
Definition: SDL_ime.c:35

◆ SDL_IME_Reset()

void SDL_IME_Reset ( void  )

Definition at line 123 of file SDL_ime.c.

References SDL_IME_Reset_Real.

124 {
125  if (SDL_IME_Reset_Real)
127 }
static _SDL_IME_Reset SDL_IME_Reset_Real
Definition: SDL_ime.c:37

◆ SDL_IME_SetFocus()

void SDL_IME_SetFocus ( SDL_bool  focused)

Definition at line 116 of file SDL_ime.c.

References SDL_IME_SetFocus_Real.

117 {
119  SDL_IME_SetFocus_Real(focused);
120 }
static _SDL_IME_SetFocus SDL_IME_SetFocus_Real
Definition: SDL_ime.c:36

◆ SDL_IME_UpdateTextRect()

void SDL_IME_UpdateTextRect ( SDL_Rect rect)

Definition at line 139 of file SDL_ime.c.

References SDL_IME_UpdateTextRect_Real.

140 {
143 }
static _SDL_IME_UpdateTextRect SDL_IME_UpdateTextRect_Real
Definition: SDL_ime.c:39

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().