/* Prototypes for functions defined in
keyboard.c
 */

extern int interrupt_input_blocked;

extern int interrupt_input_pending;

extern int Qdisabled;

extern int Qdisabled_command_hook;

extern int recent_keys_index;

extern int total_keys;

extern int recent_keys;

extern int this_command_keys;

extern int this_command_key_count;

extern int menu_prompting;

extern int menu_prompt_more_char;

extern int getcjmp[14];

extern int waiting_for_input;

extern int echoing;

extern int immediate_quit;

extern int Vhelp_char;

extern int Vhelp_form;

extern int Vprefix_help_command;

extern int Vmenu_bar_final_items;

extern int quit_char;

extern int Voverriding_local_map;

extern int command_loop_level;

extern int num_input_keys;

extern int last_command_char;

extern int last_nonmenu_event;

extern int last_input_char;

extern int Vunread_command_events;

extern int unread_command_char;

extern int unread_switch_frame;

extern int extra_keyboard_modifiers;

extern int meta_prefix_char;

extern int last_non_minibuf_size;

extern int Vauto_save_timeout;

extern int num_input_chars;

extern int num_nonmacro_input_chars;

extern int auto_save_interval;

extern int last_auto_save;

extern int last_command;

extern int this_command;

extern int last_point_position;

extern int last_point_position_buffer;

extern int Vlast_event_frame;

extern unsigned long last_event_timestamp;

extern int Qself_insert_command;

extern int Qforward_char;

extern int Qbackward_char;

extern int Qundefined;

extern int read_key_sequence_cmd;

extern int Vtop_level;

extern int Vkeyboard_translate_table;

extern int Vkey_translation_map;

extern int Vdeactivate_mark;

extern int Vlucid_menu_bar_dirty_flag;

extern int Qrecompute_lucid_menubar;

extern int Qactivate_menubar_hook;

extern int Qpre_command_hook;

extern int Qpost_command_hook;

extern int Vpre_command_hook;

extern int Vpost_command_hook;

extern int Qcommand_hook_internal;

extern int Vcommand_hook_internal;

extern struct __iobuf * dribble;

extern int input_pending;

extern int meta_key;

extern struct input_event kbd_buffer[256];

extern int kbd_buffer_frame_or_window;

extern struct input_event * kbd_fetch_ptr;

extern struct input_event volatile * kbd_store_ptr;

extern int do_mouse_tracking;

extern int mouse_moved;

extern int Qmouse_movement;

extern int Qscroll_bar_movement;

extern int Qswitch_frame;

extern int Qfunction_key;

extern int Qmouse_click;

extern int Qevent_kind;

extern int Qevent_symbol_elements;

extern int Qmenu_enable;

extern int Qevent_symbol_element_mask;

extern int Qmodifier_cache;

extern int Qmode_line;

extern int Qvertical_line;

extern int Qvertical_scroll_bar;

extern int Qmenu_bar;

extern int Qmenu_enable;

extern int Qextended_command_history;

extern int Qpolling_period;

extern struct timeval * input_available_clear_time;

extern int interrupt_input;

extern int interrupts_deferred;

extern int flow_control;

extern void (* keyboard_init_hook)(void);

extern int echo_keystrokes;

extern int immediate_echo;

extern char echobuf[300];

extern char * echoptr;

extern int cannot_suspend;

int echo_prompt(char * str);

int echo_char(int c);

int echo_dash(void);

int echo(void);

int cancel_echoing(void);

int echo_length(void);

void echo_truncate(int len);

void add_command_key(int key);

int recursive_edit_1(void);

int record_auto_save(void);

int force_auto_save_soon(void);

extern struct Lisp_Subr Srecursive_edit;

int Frecursive_edit(void);

int recursive_edit_unwind(int buffer);

int cmd_error(int data);

int command_loop(void);

int command_loop_2(void);

int top_level_2(void);

int top_level_1(void);

extern struct Lisp_Subr Stop_level;

int Ftop_level(void);

extern struct Lisp_Subr Sexit_recursive_edit;

int Fexit_recursive_edit(void);

extern struct Lisp_Subr Sabort_recursive_edit;

int Fabort_recursive_edit(void);

int command_loop_1(void);

void safe_run_hooks(int * hook);

extern int polling_period;

extern int poll_suppress_count;

int start_polling(void);

int stop_polling(void);

void set_poll_suppress_count(int count);

int bind_polling_period(int n);

int make_ctrl_char(int c);

int read_char(int commandflag,
              int nmaps,
              int * maps,
              int prev_event,
              int * used_mouse_menu);

int print_help(int object);

int save_getcjmp(int * temp);

int restore_getcjmp(int * temp);

int tracking_off(int old_value);

extern struct Lisp_Subr Strack_mouse;

int Ftrack_mouse(int );

int readable_events(void);

extern int stop_character;

void kbd_buffer_store_event(register struct input_event * event);

int kbd_buffer_get_event(void);

void swallow_events(void);

extern int accent_key_syms;

extern int system_key_syms;

extern int func_key_syms;

extern int mouse_syms;

extern int Vsystem_key_alist;

extern int __far lispy_accent_codes[13];

extern char * __far lispy_accent_keys[13];

extern char * __far lispy_function_keys[256];

extern char * __far lispy_mouse_names[5];

extern int Qabove_handle;

extern int Qhandle;

extern int Qbelow_handle;

extern int * scroll_bar_parts[3];

extern int button_down_location;

extern int last_mouse_button;

extern int last_mouse_x;

extern int last_mouse_y;

extern unsigned long button_down_time;

extern int Vdouble_click_time;

extern int double_click_count;

int make_lispy_event(struct input_event * event);

int make_lispy_switch_frame(int frame);

int parse_modifiers_uncached(int symbol,
                             int * modifier_end);

int apply_modifiers_uncached(int modifiers,
                             char * base,
                             int base_len);

extern char * __far modifier_names[24];

extern int modifier_symbols;

int lispy_modifier_list(int modifiers);

int parse_modifiers(int symbol);

int apply_modifiers(int modifiers,
                    int base);

int reorder_modifiers(int symbol);

int modify_event_symbol(int symbol_num,
                        unsigned int modifiers,
                        int symbol_kind,
                        int name_alist,
                        char ** name_table,
                        int * symbol_table
,
                        int table_size);

void get_input_pending(int * addr);

int gobble_input(int expected);

int record_asynch_buffer_change(void);

int read_avail_input(int expected);

void reinvoke_input_signal(void);

int map_prompt(int map);

extern int menu_bar_items_vector;

extern int menu_bar_items_index;

int menu_bar_items(int old);

void menu_bar_one_keymap(int keymap);

int menu_bar_item_1(int arg);

void menu_bar_item(int key,
                   int item_string,
                   int def);

int read_char_x_menu_prompt(int nmaps,
                            int * maps,
                            int prev_event,
                            int * used_mouse_menu);

int read_char_minibuf_menu_prompt(int commandflag,
                                  int nmaps,
                                  int * maps);

int follow_key(int key,
               int nmaps,
               int * current,
               int * defs,
               int * next,
               int * case_converted);

int read_key_sequence(int * keybuf,
                      int bufsize,
                      int prompt);

extern struct Lisp_Subr Sread_key_sequence;

int Fread_key_sequence(int , int );

extern struct Lisp_Subr Scommand_execute;

int Fcommand_execute(int , int );

extern struct Lisp_Subr Sexecute_extended_command;

int Fexecute_extended_command(int );

int detect_input_pending(void);

int clear_input_pending(void);

extern struct Lisp_Subr Sinput_pending_p;

int Finput_pending_p(void);

extern struct Lisp_Subr Srecent_keys;

int Frecent_keys(void);

extern struct Lisp_Subr Sthis_command_keys;

int Fthis_command_keys(void);

extern struct Lisp_Subr Srecursion_depth;

int Frecursion_depth(void);

extern struct Lisp_Subr Sopen_dribble_file;

int Fopen_dribble_file(int );

extern struct Lisp_Subr Sdiscard_input;

int Fdiscard_input(void);

extern struct Lisp_Subr Ssuspend_emacs;

int Fsuspend_emacs(int );

int stuff_buffered_input(int stuffstring);

int set_waiting_for_input(struct timeval * time_to_clear);

int clear_waiting_for_input(void);

void interrupt_signal(void);

int quit_throw_to_read_char(void);

extern struct Lisp_Subr Sset_input_mode;

int Fset_input_mode(int , int , int , int );

extern struct Lisp_Subr Scurrent_input_mode;

int Fcurrent_input_mode(void);

int init_keyboard(void);

extern struct event_head head_table[3];

int syms_of_keyboard(void);

int keys_of_keyboard(void);

