---
title: Screen Actions and Values
description: "Learn about the various screen actions and bar values used in the controller support expansion for Ren'Py for better controller support."
url: "https://feniksdev.com/tool/screen-actions-and-values/"
updated: "2025-02-09"
category: Controller Support Expansion
---

# Screen Actions and Values

There are several screen actions included across the Controller Support Expansion for Ren'Py. They are linked here on this page for convenience.

If you haven't picked up the tool yet, you can do so here:

[https://itch.io/embed/2766391?bg_color=21212d&fg_color=f7f7ed&link_color=f93c3e&border_color=ff8335](https://itch.io/embed/2766391?bg_color=21212d&fg_color=f7f7ed&link_color=f93c3e&border_color=ff8335)

   **Contents**  [hide](#)     [Virtual Cursor](#Virtual_Cursor)  [MoveVirtualCursor(id, x, y, duration=0, warper=None)](#MoveVirtualCursorid_x_y_duration0_warperNone)  [Virtual Keyboard](#Virtual_Keyboard)  [InputLetter(id, letter, layer=None)](#InputLetterid_letter_layerNone)  [ShowOnscreenInput(screen=None, transition=None, *args, **kwargs)](#ShowOnscreenInputscreenNone_transitionNone_args_kwargs)  [UniversalInputToggle(id, **kwargs)](#UniversalInputToggleid_kwargs)  [Controller Configuration & Layout](#Controller_Configuration_Layout)  [SetStickInversion(stick, axis, value)](#SetStickInversionstick_axis_value)  [ToggleStickInversion(stick, axis)](#ToggleStickInversionstick_axis)  [CycleControllerLayout(reverse=False)](#CycleControllerLayoutreverseFalse)  [SetControllerLayout(layout)](#SetControllerLayoutlayout)  [Other](#Other)  [SetFocus(screen, id, layer="screens")](#SetFocusscreen_id_layerscreens)  [Bar Values](#Bar_Values)  [StickDeadzoneAdjustment(stick="left")](#StickDeadzoneAdjustmentstickleft)  [StickSensitivityAdjustment(stick="left")](#StickSensitivityAdjustmentstickleft)

## Virtual Cursor

### MoveVirtualCursor(id, x, y, duration=0, warper=None)

A screen action which will move the virtual cursor to the provided location. See the docs for [Virtual Cursors](https://feniksdev.com/tool/virtual-cursor/#MoveVirtualCursorid_x_y_duration0_warperNone).

## Virtual Keyboard

### InputLetter(id, letter, layer=None)

InputLetter is a screen action which can be used to add a letter to a ControllerInput. See the docs for the [Virtual Keyboard](https://feniksdev.com/tool/virtual-keyboard/#InputLetterid_letter_layerNone).

### ShowOnscreenInput(screen=None, transition=None, *args, **kwargs)

A screen action which will show an onscreen keyboard for controller input. See the docs for the [Virtual Keyboard](https://feniksdev.com/tool/virtual-keyboard/#ShowOnscreenInputscreenNone_transitionNone_args_kwargs).

### UniversalInputToggle(id, **kwargs)

UniversalInputToggle is a screen action which can be used to toggle the provided InputValue if the player is using mouse and keyboard, or if the player is using a controller, it will show the virtual keyboard to enter input via ShowOnscreenInput. See the docs for the [Virtual Keyboard](https://feniksdev.com/tool/virtual-keyboard/#UniversalInputToggleid_kwargs).

## Controller Configuration & Layout

### SetStickInversion(stick, axis, value)

A screen action which sets the provided stick's axis's inversion to the given value. In other words, something like `SetStickInversion("left", "x", True)` inverts the x axis of the left stick.

`stick` is one of "left" or "right". Which controller stick to invert the axis of.

`axis` is one of "x" or "y". Which axis to invert.

`value` is one of True or False. True means the axis is inverted (e.g. left becomes right and right becomes left). False means the axis is normal (left is left and right is right).

### ToggleStickInversion(stick, axis)

As with SetStickInversion above, except it toggles the inversion on and off rather than setting it to one specific value.

### CycleControllerLayout(reverse=False)

An action that cycles between the different controller layouts ("xbox", "playstation", "nintendo", "steam", and "generic"). `reverse=True` cycles through in reverse order.

### SetControllerLayout(layout)

An action that directly sets the controller layout to the provided `layout`. `layout` must be one of "xbox", "playstation", "nintendo", "steam", or "generic".

## Other

### SetFocus(screen, id, layer="screens")

A screen action wrapper for [renpy.set_focus](https://www.renpy.org/doc/html/screen_python.html#renpy.set_focus). Takes the string name of a screen (e.g. `"main_menu"`) and the ID of a displayable to focus on that screen, and focuses that displayable.

## Bar Values

### StickDeadzoneAdjustment(stick="left")

A [Bar Value](https://www.renpy.org/doc/html/screen_actions.html#bar-values) which modifies the dead zone for the provided stick. `stick` is one of "left" or "right" depending on which stick's dead zone is being adjusted. This can be provided on a bar e.g.

```renpy
controller_bar value StickDeadzoneAdjustment("left")
```

See also: [Controller Bar](https://feniksdev.com/tool/controller-bar/)

### StickSensitivityAdjustment(stick="left")

A [Bar Value](https://www.renpy.org/doc/html/screen_actions.html#bar-values) which modifies the sensitivity multiplier of the provided stick. `stick` is one of "left" or "right" depending on which stick's sensitivity multiplier is being adjusted. This can be provided on a bar e.g.

```renpy
controller_bar value StickSensitivityAdjustment("right")
```

See also: [Controller Bar](https://feniksdev.com/tool/controller-bar/)
