as far as I know the kernel and X always chooses the highest possible resolution it has detected and which can be run. All possible resolutions are listed in /sys/class/graphics/fb0/modes
You can easily change the resolution of your current console (not X) by echoing the wanted resolution out of the possible ones to /sys/class/graphics/fb0/mode , e.g.
echo "V:800x600p-60" > /sys/class/graphics/fb0/mode
But it will not have any effect to the other consoles nor X. They will stay in the highest resolution chosen at system's startup.
To get the resolution on X changed the script at https://github.com/genesi/xorg-video-imx/issues/1#issuecomment-5768113
might help but it has to be run before X is started.
Hope it helps.
PS: Sorry I have no idea to your keyboard problems