I was playing the recently released demo of Trials of Mana / Seiken Densetsu 3 Remake (for a funny review of the original, go here) and liking it splendidly, except for the camera controls. Those are restricted to the mouse movement with no option for customization. I like to play with both hands on the keyboard and to use the arrow keys for character movement, leaving WASD for camera instead. I tried a compromise using Windows Accessibility options but it's incompatible with the game. My last resort was a custom script in AutoHotKey to move the mouse with the keyboard, thus simulating keyboard camera controls. You can find the script below. It also works in The Elder Scrolls Online (ESO) - though I wouldn't recommend using it in online games.
Key assignments: it uses Delete/PageDown/Home/End as Left/Right/Up/Down camera. Alt+Ctrl+Shift+F2 to toggle the script on/off with sound feedback (for times when the Delete key is needed), and Alt+Ctrl+Shift+F3 to reload the script in case you are testing. You can customize your keys and other parameters changing the CONFIG_* lines. If you feel there's too much delay to when the camera starts responding, run "main.cpl @1" and reduce the keystroke repeat delay (affects all applications).
; --------------- YOUR CONFIG ---------------- ;
; reduce keystroke repeat delay with "main.cpl @1"
CONFIG_ACTIVE:=true
CONFIG_SPEED:=5
Hotkey, IfWinActive, Trials of Mana
CONFIG_TOGGLE_KEY := "!+^F2"
CONFIG_CAMERA_LEFT := "Del"
CONFIG_CAMERA_RIGHT := "PgDn"
CONFIG_CAMERA_UP := "Home"
CONFIG_CAMERA_DOWN := "End"
CONFIG_CAMERA_LEFT2 := CONFIG_CAMERA_LEFT
CONFIG_CAMERA_RIGHT2 := CONFIG_CAMERA_RIGHT
CONFIG_CAMERA_UP2 := CONFIG_CAMERA_UP
CONFIG_CAMERA_DOWN2 := CONFIG_CAMERA_DOWN
; ------------------- CODE ------------------- ;
AutoHotKeyParameters()
HotKey % CONFIG_TOGGLE_KEY, DO_TOGGLE_KEY
HotKey % CONFIG_CAMERA_LEFT , DO_CAMERA_LEFT
HotKey % CONFIG_CAMERA_RIGHT , DO_CAMERA_RIGHT
HotKey % CONFIG_CAMERA_UP , DO_CAMERA_UP
HotKey % CONFIG_CAMERA_DOWN , DO_CAMERA_DOWN
HotKey % CONFIG_CAMERA_LEFT2 , DO_CAMERA_LEFT
HotKey % CONFIG_CAMERA_RIGHT2 , DO_CAMERA_RIGHT
HotKey % CONFIG_CAMERA_UP2 , DO_CAMERA_UP
HotKey % CONFIG_CAMERA_DOWN2 , DO_CAMERA_DOWN
return
AutoHotKeyParameters()
{
HotKey, !+^F3, DO_RELOAD_KEY
CoordMode, Mouse, Client
SendMode Input
SetMouseDelay, -1, -1
SetKeyDelay, -1, -1
SetControlDelay, -1
SetWinDelay, -1
SetDefaultMouseSpeed, 0
}
DO_TOGGLE_KEY:
CONFIG_ACTIVE:=!CONFIG_ACTIVE
if (CONFIG_ACTIVE)
{
HotKey % CONFIG_CAMERA_LEFT , On
HotKey % CONFIG_CAMERA_RIGHT , On
HotKey % CONFIG_CAMERA_UP , On
HotKey % CONFIG_CAMERA_DOWN , On
HotKey % CONFIG_CAMERA_LEFT2 , On
HotKey % CONFIG_CAMERA_RIGHT2 , On
HotKey % CONFIG_CAMERA_UP2 , On
HotKey % CONFIG_CAMERA_DOWN2 , On
SoundPlay, %A_WinDir%\Media\notify.wav, WAIT
}
else
{
HotKey % CONFIG_CAMERA_LEFT , Off
HotKey % CONFIG_CAMERA_RIGHT , Off
HotKey % CONFIG_CAMERA_UP , Off
HotKey % CONFIG_CAMERA_DOWN , Off
HotKey % CONFIG_CAMERA_LEFT2 , Off
HotKey % CONFIG_CAMERA_RIGHT2 , Off
HotKey % CONFIG_CAMERA_UP2 , Off
HotKey % CONFIG_CAMERA_DOWN2 , Off
SoundPlay, %A_WinDir%\Media\chord.wav, WAIT
}
return
DO_RELOAD_KEY:
reload
return
DO_CAMERA_LEFT:
MouseGetPos, cx, cy
WinGetPos, , , winx, winy
if (cx=0)
DllCall("SetCursorPos", Int, A_ScreenWidth/2, Int, A_ScreenHeight/2)
else
MouseMove, 2*-CONFIG_SPEED, 0, 0, R
return
DO_CAMERA_RIGHT:
MouseGetPos, cx, cy
WinGetPos, , , winx, winy
if (cx>(winx*0.90))
DllCall("SetCursorPos", Int, A_ScreenWidth/2, Int, A_ScreenHeight/2)
else
MouseMove, 2*CONFIG_SPEED, 0, 0, R
return
DO_CAMERA_UP:
MouseGetPos, cx, cy
WinGetPos, , , winx, winy
if (cy=0)
DllCall("SetCursorPos", Int, A_ScreenWidth/2, Int, A_ScreenHeight/2)
else
MouseMove, 0, -CONFIG_SPEED, 0, R
return
DO_CAMERA_DOWN:
MouseGetPos, cx, cy
WinGetPos, , , winx, winy
if (cy>(winy*0.90))
DllCall("SetCursorPos", Int, A_ScreenWidth/2, Int, A_ScreenHeight/2)
else
MouseMove, 0, CONFIG_SPEED, 0, R
return