Assuming you still cannot boot Ubuntu normally, try accessing Ubuntu in one of these ways.
First, a second or two after your BIOS screen blanks (if you have one), CTRL-ALT-DEL twice to recycle the boot (or cycle the power off, although that's not generally a nice way to treat the computer). This may disrupt Grub, in which case it may start with a 'recordfail' marker the next time and display the menu. Boot into Ubuntu.
If you don't want to disrupt power during boot (understandable) boot the LiveCD and mount your Ubuntu partition. For this post, I'll assume it's sda5.
We will put the 'keystatus' check in /etc/grub.d/40_custom so it is always incorporated into the menu regardless of what OSs Grub finds.
sudo mount /dev/sda5 /mnt
gksu gedit /mnt/etc/default/grub /mnt/boot/grub/grub.cfg /mnt/etc/grub.d/40_custom
In /mnt/boot/grub/grub.cfg, add this to the bottom so it's there for the next boot:
GRUB_HIDDEN_TIMEOUT=5 # Just to give you a chance to stop the boot
GRUB_HIDDEN_TIMEOUT_QUIET=false # This is supposed to provide a countdown timer, but it's currently broken in G2. But try it anyway in case it's fixed.
Copy the same thing to /mnt/etc/grub.d/40_custom. Add it below the existing lines to ensure the keystatus check is performed.
if keystatus; then
if keystatus --shift; then
if sleep$verbose --interruptible 3 ; then
Save all the files, reboot (without the CD). If things work, "sudo update-grub". The 40_custom file should be executable by default, and after you run the update the keystatus check code should still be near the bottom of the grub.cfg file. (After updating, it will be in the 40_custom section of grub.cfg. If it isn't, check to make sure /etc/grub.d/40_custom is an executable file).