# 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		push_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	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		push_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		push_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		push_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	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		push_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		push_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			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

# 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		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
