public Interactable.Result keyboardInteraction(Key key)
    {
        try {
            switch(key.getKind())
            {
                case ArrowDown:
                    return Result.NEXT_INTERACTABLE_DOWN;
                    
                case Tab:
                case ArrowRight:
                    return Result.NEXT_INTERACTABLE_RIGHT;

                case ArrowUp:
                    return Result.PREVIOUS_INTERACTABLE_UP;
                    
                case ReverseTab:
                case ArrowLeft:
                    return Result.PREVIOUS_INTERACTABLE_LEFT;

                case Enter:
                    onActivated();
                    break;

                default:
                    if(key.getCharacter() == ' ' || key.getCharacter() == 'x')
                        onActivated();
                    break;
            }
            return Result.DO_NOTHING;
        }
        finally {
            invalidate();
        }
    }