Used range#checkStartOfBlock and range#moveToClosestEditablePosition instead of CKEDITOR.dom.walker to make the procedure bulletproof and maintainable (boguses, non-editables, etc.).
Changed lister event: keyup -> key, so it is executed later than other existing key listeners.