Show:
                            /**
                            Mixes keyboard support into AutoCompleteList. By default, this module is not
                            loaded for iOS and Android devices.
                            
                            @module autocomplete
                            @submodule autocomplete-list-keys
                            **/
                            
                             // keyCode constants.
                            var KEY_DOWN  = 40,
                                KEY_ENTER = 13,
                                KEY_ESC   = 27,
                                KEY_TAB   = 9,
                                KEY_UP    = 38;
                            
                            function ListKeys() {
                                Y.after(this._bindKeys, this, 'bindUI');
                                this._initKeys();
                            }
                            
                            ListKeys.prototype = {
                                // -- Lifecycle Methods ----------------------------------------------------
                            
                                /**
                                Initializes keyboard command mappings.
                            
                                @method _initKeys
                                @protected
                                @for AutoCompleteList
                                **/
                                _initKeys: function () {
                                    var keys        = {},
                                        keysVisible = {};
                            
                                    // Register keyboard command handlers. _keys contains handlers that will
                                    // always be called; _keysVisible contains handlers that will only be
                                    // called when the list is visible.
                                    keys[KEY_DOWN] = this._keyDown;
                            
                                    keysVisible[KEY_ENTER] = this._keyEnter;
                                    keysVisible[KEY_ESC]   = this._keyEsc;
                                    keysVisible[KEY_TAB]   = this._keyTab;
                                    keysVisible[KEY_UP]    = this._keyUp;
                            
                                    this._keys        = keys;
                                    this._keysVisible = keysVisible;
                                },
                            
                                destructor: function () {
                                    this._unbindKeys();
                                },
                            
                                /**
                                Binds keyboard events.
                            
                                @method _bindKeys
                                @protected
                                **/
                                _bindKeys: function () {
                                    this._keyEvents = this._inputNode.on('keydown', this._onInputKey, this);
                                },
                            
                                /**
                                Unbinds keyboard events.
                            
                                @method _unbindKeys
                                @protected
                                **/
                                _unbindKeys: function () {
                                    this._keyEvents && this._keyEvents.detach();
                                    this._keyEvents = null;
                                },
                            
                                // -- Protected Methods ----------------------------------------------------
                            
                                /**
                                Called when the down arrow key is pressed.
                            
                                @method _keyDown
                                @protected
                                **/
                                _keyDown: function () {
                                    if (this.get('visible')) {
                                        this._activateNextItem();
                                    } else {
                                        this.show();
                                    }
                                },
                            
                                /**
                                Called when the enter key is pressed.
                            
                                @method _keyEnter
                                @protected
                                **/
                                _keyEnter: function (e) {
                                    var item = this.get('activeItem');
                            
                                    if (item) {
                                        this.selectItem(item, e);
                                    } else {
                                        // Don't prevent form submission when there's no active item.
                                        return false;
                                    }
                                },
                            
                                /**
                                Called when the escape key is pressed.
                            
                                @method _keyEsc
                                @protected
                                **/
                                _keyEsc: function () {
                                    this.hide();
                                },
                            
                                /**
                                Called when the tab key is pressed.
                            
                                @method _keyTab
                                @protected
                                **/
                                _keyTab: function (e) {
                                    var item;
                            
                                    if (this.get('tabSelect')) {
                                        item = this.get('activeItem');
                            
                                        if (item) {
                                            this.selectItem(item, e);
                                            return true;
                                        }
                                    }
                            
                                    return false;
                                },
                            
                                /**
                                Called when the up arrow key is pressed.
                            
                                @method _keyUp
                                @protected
                                **/
                                _keyUp: function () {
                                    this._activatePrevItem();
                                },
                            
                                // -- Protected Event Handlers ---------------------------------------------
                            
                                /**
                                Handles `inputNode` key events.
                            
                                @method _onInputKey
                                @param {EventTarget} e
                                @protected
                                **/
                                _onInputKey: function (e) {
                                    var handler,
                                        keyCode = e.keyCode;
                            
                                    this._lastInputKey = keyCode;
                            
                                    if (this.get('results').length) {
                                        handler = this._keys[keyCode];
                            
                                        if (!handler && this.get('visible')) {
                                            handler = this._keysVisible[keyCode];
                                        }
                            
                                        if (handler) {
                                            // A handler may return false to indicate that it doesn't wish
                                            // to prevent the default key behavior.
                                            if (handler.call(this, e) !== false) {
                                                e.preventDefault();
                                            }
                                        }
                                    }
                                }
                            };
                            
                            Y.Base.mix(Y.AutoCompleteList, [ListKeys]);