---
permanent: true
thumbnail: https://repository-images.githubusercontent.com/641897294/732cab44-fc8a-4d85-8a66-00a0be9ad745
tags:
  - tools
  - stub
visibility: public
aliases:
  - Bndr.js
modified: 2026-01-08T14:50:58.147Z
content_id: wncgYXp09-jXmKownkaAw
---

::hero
![](https://repository-images.githubusercontent.com/641897294/732cab44-fc8a-4d85-8a66-00a0be9ad745)
::

# Bndr

![](https://raw.githubusercontent.com/baku89/bndr-js/refs/heads/main/screenshot.gif)

![](https://wp.baku89.com/wp-content/uploads/2025/08/bndr.svg){style="width: 100px;"}

[GitHub](https://github.com/baku89/bndr-js)

**Bndr** /ˈbaɪndɚ/ is a library designed to compose events from various user inputs and chain filters in a monadic manner, integrating them into a single event object. It accommodates input devices such as mice🖱️, styluses🖊️, touch inputs👆, keyboards⌨️, [MIDI](https://developer.mozilla.org/en-US/docs/Web/API/Web_MIDI_API) controllers🎹, and [gamepads](https://developer.mozilla.org/en-US/docs/Web/API/Gamepad_API)🎮. Developed and maintained by [Baku Hashimoto](https://baku89.com).

Potential use cases for this library include:

- ⚡️ Associating user inputs with arbitrary triggers for VJing
- 🎨 Introducing manual operations in generative art.

To get a feel for how it works, please try out [this demo](https://baku89.github.io/bndr-js/).

## Supported Parameters

- 👆 Pointer (mouse, stylus, touch)
  - All parameters supported in [PointerEvent](https://developer.mozilla.org/en-US/docs/Web/API/Pointer_events). (pressure, tilt, multi-touch)
- ⌨️ Keyboard
- 🎹 MIDI
  - CC and velocity
- 🎮 Gamepad
  - Vendor-specific button name support: JoyCon, PS5 Controller

---

# Memo

![](https://scrapbox.io/files/6517cfa2fa3de0001cc67de5.png)

https://github.com/baku89/bndr-js

- インターフェースからの入力、フィルター、組み合わせを、モナド合成として扱うライブラリ。
- ソフトウェア操作のアサイン機能をマウスやキーボードショートカットに限らず抽象化することで、[[アクセシビリティ]]面の寄与が出来るんでないか、という思惑もあったりする
