# keys.ini
#
# keyboard binding initialization
#
# comments must have # in the first column
# blank lines OK
#
# Format:
# mode key mask function
#
# mode must be one of FIRST_PERSON, THIRD_PERSON, EDIT, EDIT_AVATAR, or CONVERSATION
# key must be upper case, or SPACE, HOME, END, PGUP, PGDN, LEFT, RIGHT, UP, DOWN,
#     or one of ,.;'[]
# mask must be NONE, SHIFT, ALT, ALT_SHIFT.
# Control is reserved for user commands.
# function must be a function named in llkeyboard.cpp

FIRST_PERSON	A		NONE		slide_left
FIRST_PERSON	D		NONE		slide_right
FIRST_PERSON	W		NONE		push_forward
FIRST_PERSON	S		NONE		push_backward
FIRST_PERSON	E		NONE		jump
FIRST_PERSON	C		NONE		push_down
FIRST_PERSON	F		NONE		toggle_fly

FIRST_PERSON	LEFT		NONE		slide_left
FIRST_PERSON	RIGHT		NONE		slide_right
FIRST_PERSON	UP		NONE		push_forward
FIRST_PERSON	DOWN		NONE		push_backward
FIRST_PERSON	PGUP		NONE		jump
FIRST_PERSON	PGDN		NONE		push_down
FIRST_PERSON	HOME		NONE		toggle_fly

FIRST_PERSON	PAD_LEFT	NONE		slide_left
FIRST_PERSON	PAD_RIGHT	NONE		slide_right
FIRST_PERSON	PAD_UP		NONE		push_forward
FIRST_PERSON	PAD_DOWN	NONE		push_backward
FIRST_PERSON	PAD_PGUP	NONE		jump
FIRST_PERSON	PAD_PGDN	NONE		push_down
FIRST_PERSON	PAD_HOME	NONE		toggle_fly
FIRST_PERSON	PAD_CENTER	NONE		stop_moving
FIRST_PERSON	PAD_ENTER	NONE		start_chat
FIRST_PERSON	PAD_DIVIDE	NONE		start_gesture

FIRST_PERSON	A		SHIFT		slide_left
FIRST_PERSON	D		SHIFT		slide_right
FIRST_PERSON	W		SHIFT		push_forward
FIRST_PERSON	S		SHIFT		push_backward
FIRST_PERSON	E		SHIFT		jump
FIRST_PERSON	C		SHIFT		toggle_down
FIRST_PERSON	F		SHIFT		toggle_fly

FIRST_PERSON	SPACE		NONE		stop_moving
FIRST_PERSON	ENTER		NONE		start_chat
FIRST_PERSON	DIVIDE		NONE		start_gesture
FIRST_PERSON	/		NONE		start_gesture

FIRST_PERSON	LEFT		SHIFT		slide_left
FIRST_PERSON	RIGHT		SHIFT		slide_right
FIRST_PERSON	UP		SHIFT		push_forward
FIRST_PERSON	DOWN		SHIFT		push_backward
FIRST_PERSON	PGUP		SHIFT		jump
FIRST_PERSON	PGDN		SHIFT		toggle_down

FIRST_PERSON	PAD_LEFT	SHIFT		slide_left
FIRST_PERSON	PAD_RIGHT	SHIFT		slide_right
FIRST_PERSON	PAD_UP		SHIFT		push_forward
FIRST_PERSON	PAD_DOWN	SHIFT		push_backward
FIRST_PERSON	PAD_PGUP	SHIFT		jump
FIRST_PERSON	PAD_PGDN	SHIFT		toggle_down
FIRST_PERSON	PAD_HOME	SHIFT		toggle_fly
FIRST_PERSON	PAD_ENTER	SHIFT		start_chat
FIRST_PERSON	PAD_DIVIDE	SHIFT		start_gesture

THIRD_PERSON	A		NONE		turn_left
THIRD_PERSON	D		NONE		turn_right
THIRD_PERSON	A		SHIFT		slide_left
THIRD_PERSON	D		SHIFT		slide_right
THIRD_PERSON	W		NONE		push_forward
THIRD_PERSON	S		NONE		push_backward
THIRD_PERSON	W		SHIFT		push_forward
THIRD_PERSON	S		SHIFT		push_backward
THIRD_PERSON	E		NONE		jump
THIRD_PERSON	C		NONE		push_down
THIRD_PERSON	E		SHIFT		jump
THIRD_PERSON	C		SHIFT		toggle_down

THIRD_PERSON	F		NONE		toggle_fly
THIRD_PERSON	F		SHIFT		toggle_fly

THIRD_PERSON	SPACE		NONE		stop_moving
THIRD_PERSON	ENTER		NONE		start_chat
THIRD_PERSON	DIVIDE		NONE		start_gesture
THIRD_PERSON	/		NONE		start_gesture

THIRD_PERSON	LEFT		NONE		turn_left
THIRD_PERSON	LEFT		SHIFT		slide_left
THIRD_PERSON	RIGHT		NONE		turn_right
THIRD_PERSON	RIGHT		SHIFT		slide_right
THIRD_PERSON	UP		NONE		push_forward
THIRD_PERSON	DOWN		NONE		push_backward
THIRD_PERSON	UP		SHIFT		push_forward
THIRD_PERSON	DOWN		SHIFT		push_backward
THIRD_PERSON	PGUP		NONE		jump
THIRD_PERSON	PGDN		NONE		push_down
THIRD_PERSON	PGUP		SHIFT		jump
THIRD_PERSON	PGDN		SHIFT		toggle_down
THIRD_PERSON	HOME		SHIFT		toggle_fly
THIRD_PERSON	HOME		NONE		toggle_fly

THIRD_PERSON	PAD_LEFT	NONE		turn_left
THIRD_PERSON	PAD_LEFT	SHIFT		slide_left
THIRD_PERSON	PAD_RIGHT	NONE		turn_right
THIRD_PERSON	PAD_RIGHT	SHIFT		slide_right
THIRD_PERSON	PAD_UP		NONE		push_forward
THIRD_PERSON	PAD_DOWN	NONE		push_backward
THIRD_PERSON	PAD_UP		SHIFT		push_forward
THIRD_PERSON	PAD_DOWN	SHIFT		push_backward
THIRD_PERSON	PAD_PGUP	NONE		jump
THIRD_PERSON	PAD_PGDN	NONE		push_down
THIRD_PERSON	PAD_PGUP	SHIFT		jump
THIRD_PERSON	PAD_PGDN	SHIFT		toggle_down
THIRD_PERSON	PAD_HOME	NONE		toggle_fly
THIRD_PERSON	PAD_HOME	SHIFT		toggle_fly
THIRD_PERSON	PAD_CENTER	NONE		stop_moving
THIRD_PERSON	PAD_CENTER	SHIFT		stop_moving
THIRD_PERSON	PAD_ENTER	NONE		start_chat
THIRD_PERSON	PAD_ENTER	SHIFT		start_chat
THIRD_PERSON	PAD_DIVIDE	NONE		start_gesture
THIRD_PERSON	PAD_DIVIDE	SHIFT		start_gesture

# Camera controls in third person on Alt
THIRD_PERSON	LEFT		ALT		spin_around_cw
THIRD_PERSON	RIGHT		ALT		spin_around_ccw
THIRD_PERSON	UP		ALT		move_forward
THIRD_PERSON	DOWN		ALT		move_backward
THIRD_PERSON	PGUP		ALT		spin_over
THIRD_PERSON	PGDN		ALT		spin_under

THIRD_PERSON	A		ALT		spin_around_cw
THIRD_PERSON	D		ALT		spin_around_ccw
THIRD_PERSON	W		ALT		move_forward
THIRD_PERSON	S		ALT		move_backward
THIRD_PERSON	E		ALT		spin_over
THIRD_PERSON	C		ALT		spin_under

THIRD_PERSON	PAD_LEFT	ALT		spin_around_cw
THIRD_PERSON	PAD_RIGHT	ALT		spin_around_ccw
THIRD_PERSON	PAD_UP		ALT		move_forward
THIRD_PERSON	PAD_DOWN	ALT		move_backward
THIRD_PERSON	PAD_PGUP	ALT		spin_over
THIRD_PERSON	PAD_PGDN	ALT		spin_under
THIRD_PERSON	PAD_ENTER	ALT		start_chat
THIRD_PERSON	PAD_DIVIDE	ALT		start_gesture

# mimic alt zoom behavior with keyboard only
THIRD_PERSON	A		CTL_ALT		spin_around_cw
THIRD_PERSON	D		CTL_ALT		spin_around_ccw
THIRD_PERSON	W		CTL_ALT		spin_over
THIRD_PERSON	S		CTL_ALT		spin_under
THIRD_PERSON	E		CTL_ALT		spin_over
THIRD_PERSON	C		CTL_ALT		spin_under

THIRD_PERSON	LEFT		CTL_ALT		spin_around_cw
THIRD_PERSON	RIGHT		CTL_ALT		spin_around_ccw
THIRD_PERSON	UP		CTL_ALT		spin_over
THIRD_PERSON	DOWN		CTL_ALT		spin_under
THIRD_PERSON	PGUP		CTL_ALT		spin_over
THIRD_PERSON	PGDN		CTL_ALT		spin_under

THIRD_PERSON	PAD_LEFT	CTL_ALT		spin_around_cw
THIRD_PERSON	PAD_RIGHT	CTL_ALT		spin_around_ccw
THIRD_PERSON	PAD_UP		CTL_ALT		spin_over
THIRD_PERSON	PAD_DOWN	CTL_ALT		spin_under
THIRD_PERSON	PAD_PGUP	CTL_ALT		spin_over
THIRD_PERSON	PAD_PGDN	CTL_ALT		spin_under
THIRD_PERSON	PAD_ENTER	CTL_ALT		start_chat
THIRD_PERSON	PAD_DIVIDE	CTL_ALT		start_gesture

# Therefore pan on Alt-Shift
THIRD_PERSON	A		CTL_ALT_SHIFT	pan_left
THIRD_PERSON	D		CTL_ALT_SHIFT	pan_right
THIRD_PERSON	W		CTL_ALT_SHIFT	pan_up
THIRD_PERSON	S		CTL_ALT_SHIFT	pan_down

THIRD_PERSON	LEFT		CTL_ALT_SHIFT	pan_left
THIRD_PERSON	RIGHT		CTL_ALT_SHIFT	pan_right
THIRD_PERSON	UP		CTL_ALT_SHIFT	pan_up
THIRD_PERSON	DOWN		CTL_ALT_SHIFT	pan_down

THIRD_PERSON	PAD_LEFT	CTL_ALT_SHIFT	pan_left
THIRD_PERSON	PAD_RIGHT	CTL_ALT_SHIFT	pan_right
THIRD_PERSON	PAD_UP		CTL_ALT_SHIFT	pan_up
THIRD_PERSON	PAD_DOWN	CTL_ALT_SHIFT	pan_down
THIRD_PERSON	PAD_ENTER	CTL_ALT_SHIFT	start_chat
THIRD_PERSON	PAD_DIVIDE	CTL_ALT_SHIFT	start_gesture

# Basic editing camera control
EDIT		A		NONE		spin_around_cw
EDIT		D		NONE		spin_around_ccw
EDIT		W		NONE		move_forward
EDIT		S		NONE		move_backward
EDIT		E		NONE		spin_over
EDIT		C		NONE		spin_under
EDIT		ENTER		NONE		start_chat
EDIT		DIVIDE		NONE		start_gesture
EDIT		/		NONE		start_gesture
EDIT		PAD_ENTER	NONE		start_chat
EDIT		PAD_DIVIDE	NONE		start_gesture

EDIT		LEFT		NONE		spin_around_cw
EDIT		RIGHT		NONE		spin_around_ccw
EDIT		UP		NONE		move_forward
EDIT		DOWN		NONE		move_backward
EDIT		PGUP		NONE		spin_over
EDIT		PGDN		NONE		spin_under

EDIT		A		SHIFT		pan_left
EDIT		D		SHIFT		pan_right
EDIT		W		SHIFT		pan_up
EDIT		S		SHIFT		pan_down

EDIT		LEFT		SHIFT		pan_left
EDIT		RIGHT		SHIFT		pan_right
EDIT		UP		SHIFT		pan_up
EDIT		DOWN		SHIFT		pan_down

# Walking works with ALT held down.
EDIT		A		ALT		slide_left
EDIT		D		ALT		slide_right
EDIT		W		ALT		push_forward
EDIT		S		ALT		push_backward
EDIT		E		ALT		jump
EDIT		C		ALT		push_down

EDIT		LEFT		ALT		slide_left
EDIT		RIGHT		ALT		slide_right
EDIT		UP		ALT		push_forward
EDIT		DOWN		ALT		push_backward
EDIT		PGUP		ALT		jump
EDIT		PGDN		ALT		push_down
EDIT		HOME		ALT		toggle_fly

EDIT		PAD_LEFT	ALT		slide_left
EDIT		PAD_RIGHT	ALT		slide_right
EDIT		PAD_UP		ALT		push_forward
EDIT		PAD_DOWN	ALT		push_backward
EDIT		PAD_PGUP	ALT		jump
EDIT		PAD_PGDN	ALT		push_down
EDIT		PAD_ENTER	ALT		start_chat
EDIT		PAD_DIVIDE	ALT		start_gesture

SITTING		A		ALT		spin_around_cw
SITTING		D		ALT		spin_around_ccw
SITTING		W		ALT		move_forward
SITTING		S		ALT		move_backward
SITTING		E		ALT		spin_over_sitting
SITTING		C		ALT		spin_under_sitting

SITTING		LEFT		ALT		spin_around_cw
SITTING		RIGHT		ALT		spin_around_ccw
SITTING		UP		ALT		move_forward
SITTING		DOWN		ALT		move_backward
SITTING		PGUP		ALT		spin_over
SITTING		PGDN		ALT		spin_under

SITTING		A		CTL_ALT		spin_around_cw
SITTING 	D		CTL_ALT		spin_around_ccw
SITTING		W		CTL_ALT		spin_over
SITTING		S		CTL_ALT		spin_under
SITTING 	E		CTL_ALT		spin_over
SITTING		C		CTL_ALT		spin_under

SITTING		LEFT		CTL_ALT		spin_around_cw
SITTING		RIGHT		CTL_ALT		spin_around_ccw
SITTING		UP		CTL_ALT		spin_over
SITTING		DOWN		CTL_ALT		spin_under
SITTING		PGUP		CTL_ALT		spin_over
SITTING		PGDN		CTL_ALT		spin_under


SITTING		A		NONE		spin_around_cw_sitting
SITTING		D		NONE		spin_around_ccw_sitting
SITTING		W		NONE		move_forward_sitting
SITTING		S		NONE		move_backward_sitting
SITTING		E		NONE		spin_over_sitting
SITTING		C		NONE		spin_under_sitting

SITTING		LEFT		NONE		spin_around_cw_sitting
SITTING		RIGHT		NONE		spin_around_ccw_sitting
SITTING		UP		NONE		move_forward_sitting
SITTING		DOWN		NONE		move_backward_sitting
SITTING		PGUP		NONE		spin_over_sitting
SITTING		PGDN		NONE		spin_under_sitting

SITTING		PAD_LEFT	NONE		spin_around_cw_sitting
SITTING		PAD_RIGHT	NONE		spin_around_ccw_sitting
SITTING		PAD_UP		NONE		move_forward_sitting
SITTING		PAD_DOWN	NONE		move_backward_sitting
SITTING		PAD_PGUP	NONE		spin_over_sitting
SITTING		PAD_PGDN	NONE		spin_under_sitting
SITTING		PAD_CENTER	NONE		stop_moving
SITTING		PAD_ENTER	NONE		start_chat
SITTING		PAD_DIVIDE	NONE		start_gesture

# these are for passing controls when sitting on vehicles
SITTING		A		SHIFT		slide_left
SITTING		D		SHIFT		slide_right
SITTING		LEFT		SHIFT		slide_left
SITTING		RIGHT		SHIFT		slide_right

SITTING		PAD_LEFT	SHIFT		slide_left
SITTING		PAD_RIGHT	SHIFT		slide_right
SITTING		PAD_ENTER	SHIFT		start_chat
SITTING		PAD_DIVIDE	SHIFT		start_gesture

# pan on Alt-Shift
SITTING		A		CTL_ALT_SHIFT	pan_left
SITTING		D		CTL_ALT_SHIFT	pan_right
SITTING		W		CTL_ALT_SHIFT	pan_up
SITTING		S		CTL_ALT_SHIFT	pan_down

SITTING		LEFT		CTL_ALT_SHIFT	pan_left
SITTING		RIGHT		CTL_ALT_SHIFT	pan_right
SITTING		UP		CTL_ALT_SHIFT	pan_up
SITTING		DOWN		CTL_ALT_SHIFT	pan_down

SITTING		PAD_LEFT	CTL_ALT_SHIFT	pan_left
SITTING		PAD_RIGHT	CTL_ALT_SHIFT	pan_right
SITTING		PAD_UP		CTL_ALT_SHIFT	pan_up
SITTING		PAD_DOWN	CTL_ALT_SHIFT	pan_down
SITTING		PAD_ENTER	CTL_ALT_SHIFT	start_chat
SITTING		PAD_DIVIDE	CTL_ALT_SHIFT	start_gesture

SITTING		ENTER		NONE		start_chat
SITTING		DIVIDE		NONE		start_gesture
SITTING		/		NONE		start_gesture

# Avatar editing camera controls
EDIT_AVATAR	A		NONE		edit_avatar_spin_cw
EDIT_AVATAR	D		NONE		edit_avatar_spin_ccw
EDIT_AVATAR	W		NONE		edit_avatar_move_forward
EDIT_AVATAR	S		NONE		edit_avatar_move_backward
EDIT_AVATAR	E		NONE		edit_avatar_spin_over
EDIT_AVATAR	C		NONE		edit_avatar_spin_under
EDIT_AVATAR	LEFT		NONE		edit_avatar_spin_cw
EDIT_AVATAR	RIGHT		NONE		edit_avatar_spin_ccw
EDIT_AVATAR	UP		NONE		edit_avatar_move_forward
EDIT_AVATAR	DOWN		NONE		edit_avatar_move_backward
EDIT_AVATAR	PGUP		NONE		edit_avatar_spin_over
EDIT_AVATAR	PGDN		NONE		edit_avatar_spin_under
EDIT_AVATAR	ENTER		NONE		start_chat
EDIT_AVATAR	DIVIDE		NONE		start_gesture
EDIT_AVATAR	/		NONE		start_gesture
EDIT_AVATAR	PAD_LEFT	NONE		edit_avatar_spin_cw
EDIT_AVATAR	PAD_RIGHT	NONE		edit_avatar_spin_ccw
EDIT_AVATAR	PAD_UP		NONE		edit_avatar_move_forward
EDIT_AVATAR	PAD_DOWN	NONE		edit_avatar_move_backward
EDIT_AVATAR	PAD_PGUP	NONE		edit_avatar_spin_over
EDIT_AVATAR	PAD_PGDN	NONE		edit_avatar_spin_under
EDIT_AVATAR	PAD_ENTER	NONE		start_chat
EDIT_AVATAR	PAD_DIVIDE	NONE		start_gesture
