summaryrefslogtreecommitdiff
path: root/src/w32fns.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/w32fns.c')
-rw-r--r--src/w32fns.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/w32fns.c b/src/w32fns.c
index 7bb96891d05..a840f0e1227 100644
--- a/src/w32fns.c
+++ b/src/w32fns.c
@@ -4448,7 +4448,10 @@ w32_wnd_proc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
int size, i;
W32Msg wmsg;
HIMC context = get_ime_context_fn (hwnd);
- wmsg.dwModifiers = w32_get_key_modifiers (wParam, lParam);
+ wmsg.dwModifiers =
+ w32_ignore_modifiers_on_IME_input
+ ? 0
+ : w32_get_key_modifiers (wParam, lParam);
/* Get buffer size. */
size = get_composition_string_fn (context, GCS_RESULTSTR, NULL, 0);
buffer = alloca (size);
@@ -10614,6 +10617,15 @@ tip frame. */);
doc: /* Non-nil means don't display the abort dialog when aborting. */);
w32_disable_abort_dialog = 0;
+ DEFVAR_BOOL ("w32-ignore-modifiers-on-IME-input",
+ w32_ignore_modifiers_on_IME_input,
+ doc: /* Whether to ignore modifier keys when processing input with IME.
+Some MS-Windows input methods use modifier keys such as Ctrl or Alt to input
+characters, in which case applying the modifiers will change the input.
+The default value of this variable is therefore t, to ignore modifier
+keys when IME input is received. */);
+ w32_ignore_modifiers_on_IME_input = true;
+
#if 0 /* TODO: Port to W32 */
defsubr (&Sx_change_window_property);
defsubr (&Sx_delete_window_property);