    class
    	EV_WEL_KEY_CONVERSION

    General
    	cluster: implementation_mswin
    	description:
    		"Eiffel Vision WEL key conversion. Provides a function
    		for WEL to vision2 conversion and for vision2 to WEL conversion."

    Ancestors
    	EV_KEY_CONSTANTS
    	WEL_VK_CONSTANTS

    Queries
    	Key_0: INTEGER_32
    	Key_1: INTEGER_32
    	Key_2: INTEGER_32
    	Key_3: INTEGER_32
    	Key_4: INTEGER_32
    	Key_5: INTEGER_32
    	Key_6: INTEGER_32
    	Key_7: INTEGER_32
    	Key_8: INTEGER_32
    	Key_9: INTEGER_32
    	Key_a: INTEGER_32
    	Key_alt: INTEGER_32
    	Key_b: INTEGER_32
    	Key_back_space: INTEGER_32
    	Key_backquote: INTEGER_32
    	Key_backslash: INTEGER_32
    	Key_c: INTEGER_32
    	Key_caps_lock: INTEGER_32
    	Key_close_bracket: INTEGER_32
    	key_code_from_key_string (key_string: STRING_GENERAL): INTEGER_32
    	key_code_from_wel (a_wel_code: INTEGER_32): INTEGER_32
    	key_code_to_wel (a_key_code: INTEGER_32): INTEGER_32
    	Key_comma: INTEGER_32
    	Key_ctrl: INTEGER_32
    	Key_d: INTEGER_32
    	Key_dash: INTEGER_32
    	Key_delete: INTEGER_32
    	Key_down: INTEGER_32
    	Key_e: INTEGER_32
    	Key_end: INTEGER_32
    	Key_enter: INTEGER_32
    	Key_equal: INTEGER_32
    	Key_escape: INTEGER_32
    	Key_f: INTEGER_32
    	Key_f1: INTEGER_32
    	Key_f10: INTEGER_32
    	Key_f11: INTEGER_32
    	Key_f12: INTEGER_32
    	Key_f2: INTEGER_32
    	Key_f3: INTEGER_32
    	Key_f4: INTEGER_32
    	Key_f5: INTEGER_32
    	Key_f6: INTEGER_32
    	Key_f7: INTEGER_32
    	Key_f8: INTEGER_32
    	Key_f9: INTEGER_32
    	Key_g: INTEGER_32
    	Key_h: INTEGER_32
    	Key_home: INTEGER_32
    	Key_i: INTEGER_32
    	Key_insert: INTEGER_32
    	Key_j: INTEGER_32
    	Key_k: INTEGER_32
    	Key_l: INTEGER_32
    	Key_left: INTEGER_32
    	Key_left_meta: INTEGER_32
    	Key_m: INTEGER_32
    	Key_menu: INTEGER_32
    	Key_n: INTEGER_32
    	Key_num_lock: INTEGER_32
    	Key_numpad_0: INTEGER_32
    	Key_numpad_1: INTEGER_32
    	Key_numpad_2: INTEGER_32
    	Key_numpad_3: INTEGER_32
    	Key_numpad_4: INTEGER_32
    	Key_numpad_5: INTEGER_32
    	Key_numpad_6: INTEGER_32
    	Key_numpad_7: INTEGER_32
    	Key_numpad_8: INTEGER_32
    	Key_numpad_9: INTEGER_32
    	Key_numpad_add: INTEGER_32
    	Key_numpad_decimal: INTEGER_32
    	Key_numpad_divide: INTEGER_32
    	Key_numpad_multiply: INTEGER_32
    	Key_numpad_subtract: INTEGER_32
    	Key_o: INTEGER_32
    	Key_open_bracket: INTEGER_32
    	Key_p: INTEGER_32
    	Key_page_down: INTEGER_32
    	Key_page_up: INTEGER_32
    	Key_pause: INTEGER_32
    	Key_period: INTEGER_32
    	Key_q: INTEGER_32
    	Key_quote: INTEGER_32
    	Key_r: INTEGER_32
    	Key_right: INTEGER_32
    	Key_right_meta: INTEGER_32
    	Key_s: INTEGER_32
    	Key_scroll_lock: INTEGER_32
    	Key_semicolon: INTEGER_32
    	Key_shift: INTEGER_32
    	Key_slash: INTEGER_32
    	Key_space: INTEGER_32
    	Key_strings: ARRAY [STRING_32]
    	Key_t: INTEGER_32
    	Key_tab: INTEGER_32
    	Key_u: INTEGER_32
    	Key_up: INTEGER_32
    	Key_v: INTEGER_32
    	Key_w: INTEGER_32
    	Key_x: INTEGER_32
    	Key_y: INTEGER_32
    	Key_z: INTEGER_32
    	valid_key_code (a_code: INTEGER_32): BOOLEAN
    	valid_wel_code (a_wel_code: INTEGER_32): BOOLEAN
    	Vk_0: INTEGER_32
    	Vk_1: INTEGER_32
    	Vk_2: INTEGER_32
    	Vk_3: INTEGER_32
    	Vk_4: INTEGER_32
    	Vk_5: INTEGER_32
    	Vk_6: INTEGER_32
    	Vk_7: INTEGER_32
    	Vk_8: INTEGER_32
    	Vk_9: INTEGER_32
    	Vk_a: INTEGER_32
    	Vk_add: INTEGER_32
    	Vk_alt: INTEGER_32
    	Vk_apps: INTEGER_32
    	Vk_b: INTEGER_32
    	Vk_back: INTEGER_32
    	Vk_c: INTEGER_32
    	Vk_cancel: INTEGER_32
    	Vk_capital: INTEGER_32
    	Vk_clear: INTEGER_32
    	Vk_control: INTEGER_32
    	Vk_d: INTEGER_32
    	Vk_decimal: INTEGER_32
    	Vk_delete: INTEGER_32
    	Vk_divide: INTEGER_32
    	Vk_down: INTEGER_32
    	Vk_e: INTEGER_32
    	Vk_end: INTEGER_32
    	Vk_escape: INTEGER_32
    	Vk_execute: INTEGER_32
    	Vk_f: INTEGER_32
    	Vk_f1: INTEGER_32
    	Vk_f10: INTEGER_32
    	Vk_f11: INTEGER_32
    	Vk_f12: INTEGER_32
    	Vk_f13: INTEGER_32
    	Vk_f14: INTEGER_32
    	Vk_f15: INTEGER_32
    	Vk_f16: INTEGER_32
    	Vk_f17: INTEGER_32
    	Vk_f18: INTEGER_32
    	Vk_f19: INTEGER_32
    	Vk_f2: INTEGER_32
    	Vk_f20: INTEGER_32
    	Vk_f21: INTEGER_32
    	Vk_f22: INTEGER_32
    	Vk_f23: INTEGER_32
    	Vk_f24: INTEGER_32
    	Vk_f3: INTEGER_32
    	Vk_f4: INTEGER_32
    	Vk_f5: INTEGER_32
    	Vk_f6: INTEGER_32
    	Vk_f7: INTEGER_32
    	Vk_f8: INTEGER_32
    	Vk_f9: INTEGER_32
    	Vk_g: INTEGER_32
    	Vk_h: INTEGER_32
    	Vk_help: INTEGER_32
    	Vk_home: INTEGER_32
    	Vk_i: INTEGER_32
    	Vk_insert: INTEGER_32
    	Vk_j: INTEGER_32
    	Vk_k: INTEGER_32
    	Vk_l: INTEGER_32
    	Vk_lbutton: INTEGER_32
    	Vk_lcontrol: INTEGER_32
    	Vk_left: INTEGER_32
    	Vk_lmenu: INTEGER_32
    	Vk_lshift: INTEGER_32
    	Vk_m: INTEGER_32
    	Vk_mbutton: INTEGER_32
    	Vk_menu: INTEGER_32
    	Vk_multiply: INTEGER_32
    	Vk_n: INTEGER_32
    	Vk_next: INTEGER_32
    	Vk_numlock: INTEGER_32
    	Vk_numpad0: INTEGER_32
    	Vk_numpad1: INTEGER_32
    	Vk_numpad2: INTEGER_32
    	Vk_numpad3: INTEGER_32
    	Vk_numpad4: INTEGER_32
    	Vk_numpad5: INTEGER_32
    	Vk_numpad6: INTEGER_32
    	Vk_numpad7: INTEGER_32
    	Vk_numpad8: INTEGER_32
    	Vk_numpad9: INTEGER_32
    	Vk_o: INTEGER_32
    	Vk_p: INTEGER_32
    	Vk_pause: INTEGER_32
    	Vk_print: INTEGER_32
    	Vk_prior: INTEGER_32
    	Vk_q: INTEGER_32
    	Vk_r: INTEGER_32
    	Vk_rbutton: INTEGER_32
    	Vk_rcontrol: INTEGER_32
    	Vk_return: INTEGER_32
    	Vk_right: INTEGER_32
    	Vk_rmenu: INTEGER_32
    	Vk_rshift: INTEGER_32
    	Vk_s: INTEGER_32
    	Vk_scroll: INTEGER_32
    	Vk_select: INTEGER_32
    	Vk_separator: INTEGER_32
    	Vk_shift: INTEGER_32
    	Vk_snapshot: INTEGER_32
    	Vk_space: INTEGER_32
    	Vk_subtract: INTEGER_32
    	Vk_t: INTEGER_32
    	Vk_tab: INTEGER_32
    	Vk_u: INTEGER_32
    	Vk_up: INTEGER_32
    	Vk_v: INTEGER_32
    	Vk_w: INTEGER_32
    	Vk_x: INTEGER_32
    	Vk_y: INTEGER_32
    	Vk_z: INTEGER_32