Add controller functionality to your JavaScript game.

  • By Bar Hatsor
  • Last update: Dec 31, 2022
  • Comments: 1

Joycon.js

Add controller functionality to your JavaScript game.

License Minified size

Get it

Add this line to the <body>:

<script src="https://cdn.cde.run/Joycon.min.js"></script>

Here's a demo.

API

Buttons

const controllers = Joycon.controllers;

controllers.on.press('start', (value) => {

  console.log('pressed start!', value); // value is 0 to 1

});

Button can be a, b, x, y, start, left-trigger, etc. (full list below)

Joystick

const controllers = Joycon.controllers;

controllers.on.move('left-joystick', (value) => {

  console.log('moved left joystick!', value.x, value.y); // value is -1 to 1 down/right

});

Also right-joystick.

Controller connect

const controllers = Joycon.controllers;

controllers.on.connect((controller) => {

  console.log('controller connected!', controller);

});

controllers.on.disconnect((controller) => {

  console.log('controller disconnected!', controller);

});

Vibrate

const controllers = Joycon.controllers;

// preset can be mild, medium or strong
controllers.vibrate({ preset: 'medium' }, 250); // -> time in ms

// or you can choose your own values
controllers.vibrate({
  mildMotorIntensity: 0.5,
  strongMotorIntensity: 0.5
}, 250);

Remove listener

const controllers = Joycon.controllers;

controllers.removeListener('left-trigger');

Remove Joystick move listeners with left-joystick-move.
Remove controller connect listeners with controller-connect.

Button list

Buttons:
a left-shoulder select dpad-up home
b right-shoulder start dpad-down share
x left-trigger left-joystick dpad-left
y right-trigger right-joystick dpad-right

See above on how to use these.

License

MIT


Thanks for coming by! <3

Github

https://github.com/barhatsor/joycon.js

Comments(1)

  • 1

    Support Joystick intensity

    I don't know if the underlying API allows it but, it would be nice to have a joystick orientation intensitiy between 0 and 1.

    Being half pushed would be 0,5