Updated to include storage permissions.
Uses keywords for special characters now (e.g. backspace, tab, shift, etc) instead of illegible boxes.