btn = "button"

btn( index, [player] )
index a button number or button symbol (see chart below)
player (optional) a player number (0-7)

If you hold the button down, this will act like it is rapidly pressed.

For multiplayer games, you will need to include player numbers (0-7).

These are the button indexes you can use:

Button Number Glyph
Left 0 shift+L
Right 1 shift+R
Up 2 shift+U
Down 3 shift+D
O 4 shift+O
X 5 shift+X

For Example:

if btn(0) then x-=1 end  --left
if btn(1) then x+=1 end  --right
if btn(2) then y-=1 end  --up
if btn(3) then y+=1 end  --down

It is common to see this simple style of button detection and player movement in PICO-8 games. We check if the default direction buttons are pressed using the button numbers (0-3), then if any of those are true, then we subtract or add to the X and Y position appropriately. 

(Remember: The Y-axis is the opposite from what you might assume. Subtract to move upwards, and add to move downwards.)

Button Glyphs

These are the glyphs or symbols that are used inside of the PICO-8 code editor. These button glyphs can actually replace the button numbers when using the btn() function.

This is what that code will look like inside of PICO-8, with the buttons appearing as glyphs:

Here is what the glyphs look like oustide of PICO-8:

function _update()

	if btn(⬅️) then x-=1 end --left
	if btn(➡️) then x+=1 end --right
	if btn(⬆️) then y-=1 end --up
	if btn(⬇️) then y+=1 end --down
	if btn(🅾) then a=true end--o
	if btn(❎) then b=true end--x


You can copy the code you find on this site, even if it uses these button glyphs, and paste it into PICO-8.

Multiplayer Games

In order to detect the button input for a multiplayer game, you will need to include the second argument for the player number.

btn( button_number, player_number )

If you understand how to use tables and loops, you can use these to help you write less code, even when you need to check for buttons of multiple players. For example, you can use a for loop to check the same button inputs for each player in one block of code:


for i=0, num_players-1 do
	if btn(0,i) then
		--left button pressed
		--i = which player

One thing to keep in mind is that the player-index used in this function's second argument starts at 0, not 1. So player 1 is index 0 and player 8 is index 7. This is why the above loop starts at zero, and ends at one less than the total number of players.

Player Count 1 2 3 4 5 6 7 8
Index Number 0 1 2 3 4 5 6 7


17 Oct 2023