(Vw32_pass_lwindow_to_system):
(Vw32_pass_rwindow_to_system):
(Vw32_lwindow_modifier):
(Vw32_rwindow_modifier):
(Vw32_apps_modifier):
(Vw32_enable_num_lock):
(Vw32_enable_caps_lock):
(Vw32_scroll_lock_modifier): New variables.
(modifier_set): Return toggle state for Scroll Lock.
(w32_key_to_modifier): New function. Returns chosen modifier bit
for given key.
(w32_get_modifiers): Returns modifier flags for
non-keyboard input events.
(construct_console_modifiers): Renamed from construct_modifiers;
recognize Windows and Apps keys as modifiers.
(w32_get_key_modifiers): New function. Returns modifier flags for
keyboard input events.
(map_keypad_keys): Make non-static. Use second arg as extended
flag.
(w32_grabbed_keys): New variable.
(HOTKEY, HOTKEY_ID, HOTKEY_VK_CODE, HOTKEY_MODIFIERS): New macros.
(register_hot_keys):
(unregister_hot_keys):
(lookup_vk_code):
(w32_parse_hot_key):
(Fw32_register_hot_key):
(Fw32_unregister_hot_key):
(Fw32_registered_hot_keys):
(Fw32_reconstruct_hot_key): New functions to support hotkeys.
(post_character_message): New function.
(w32_msg_pump): Handle new messages for using hotkeys and changing
keyboard layout/language.
(w32_wnd_proc): Major rework of keyboard input handling:
optionally recognize Windows keys and Apps key as modifiers;
optionally treat NumLock, CapsLock and ScrollLock as function
keys; let system translate keystrokes to characters to avoid
system bugs relating to dead-key handling; preserve shift
distinction for control characters; forward keyboard
layout/language changes to lisp; detect and convert hot-key events
to normal keystrokes.
(syms_of_w32fns): Register new functions and variables.
(w32_last_error): New function for use in debugging.
(map_keypad_keys):
(Vw32_enable_caps_lock):
(Vw32_enable_num_lock):
(Vw32_pass_lwindow_to_system):
(Vw32_pass_rwindow_to_system):
(Vw32_lwindow_modifier):
(Vw32_rwindow_modifier):
(Vw32_apps_modifier):
(Vw32_scroll_lock_modifier):
(w32_key_to_modifier): Add externs.
(w32_kbd_mods_to_emacs): Recognize Windows keys, Apps key, and
Scroll Lock as potential modifiers; exclude numpad keys from
effect by CapsLock; act on Vw32_enable_caps_lock; remove obsolete
code.
(is_dead_key): Copy from w32fns.c.
(w32_kbd_patch_key): Comment attempt to improve handling of
dead-keys, and system bug relating to same on Windows NT. Work
around the bug by calling ToUnicode and then converting to the
correct codepage.
(map_virt_key): Removed obsolete variable.
(lispy_function_keys): Add extern.
(key_event): Major rework of keyboard input handling: optionally
recognize Windows keys and Apps key as modifiers; optionally treat
NumLock, CapsLock and ScrollLock as function keys; let system
translate keystrokes to characters to avoid system bugs relating
to dead-key handling; preserve shift distinction for control
characters. Remove some obsolete code.
composition char ID more strictly.
(Fcmpchar_component): Call cmpchar_component with NOERROR arg
zero.
(Fcmpchar_cmp_rule): If CHARACTER should be composed relatively,
return 255.
(Fcompose_string): Signal error if STR contains a rule-based
composition character.
varidity of multibyte form.
(update_charset_table): Check validity of BYTES. Don't set
bytes_by_char_head here.
(init_charset_once): Set bytes_by_char_head completely.
(CHECK_BYTE_COMBINING_FOR_INSERT): Call byte_combining_error.
(insert_from_string_1): Set *(GPT_ADDR) to 0 before calling
CHECK_BYTE_COMBINING_FOR_INSERT.
(insert_from_buffer_1): Likewise.
(adjust_after_replace): Check the posibility of inhibitted byte
combining correctly.
(replace_range): Before signaling an error for inhibitted byte
combining, recover the buffer in a safe state.
(del_range_2): Check the posibility of inhibitted byte combining
correctly.