I ended up using gparted on a linux box to shrink my data partition on my mem card and added a swap partition. Once the swap partition is added, you can either add the swap partition to /etc/fstab, or run `swapon <partition dev name>`, and it'll stay till you reboot. Run `free` to test if it worked, you should see available swap space. That solved random crashing for me at any rate.
by whom does the keyboard work normally? and what are your settings?