 
         if (!collection) return;
 
-        switch (event.keyCode)
+        // If rtl layout, need to swap LEFT for RIGHT so correct action
+        // is done.
+        var keyCode:int = mapKeycodeForLayoutDirection(event);
+                
+        switch (keyCode)
         {
             case Keyboard.UP:
             case Keyboard.DOWN:
             {
-                moveSelectionVertically(event.keyCode,
+                moveSelectionVertically(keyCode,
                                         event.shiftKey, 
                                         event.ctrlKey);
                 event.stopPropagation();

            {
                if (direction == TileBaseDirection.VERTICAL)
                {
                    moveSelectionHorizontally(event.keyCode, 
                                              event.shiftKey, 
                                              event.ctrlKey);
                }
                else
                {
                    moveSelectionVertically(event.keyCode, 
                                            event.shiftKey, 
                                            event.ctrlKey);
                }

            case Keyboard.LEFT:
            case Keyboard.RIGHT:
            {
                moveSelectionHorizontally(keyCode, 
                                          event.shiftKey, 
                                          event.ctrlKey);
                event.stopPropagation();
