Jump to content

Connect SuperML | Leeroopedia MCP: Equip your AI agents with best practices, code verification, and debugging knowledge. Powered by Leeroo — building Organizational Superintelligence. Contact us at founders@leeroo.com.

Implementation:Microsoft Playwright BidiInput

From Leeroopedia
Revision as of 11:35, 16 February 2026 by Admin (talk | contribs) (Auto-imported from implementations/Microsoft_Playwright_BidiInput.md)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Knowledge Sources
Domains BiDi, Input
Last Updated 2026-02-12 00:00 GMT

Overview

Concrete tool for dispatching keyboard and mouse input events via the WebDriver BiDi protocol provided by the Playwright library.

Description

The module provides `RawKeyboardImpl` and `RawMouseImpl` classes that implement Playwright's `input.RawKeyboard` and `input.RawMouse` interfaces using BiDi `input.performActions` commands. `RawKeyboardImpl` translates key names to BiDi key values using `getBidiKeyValue` and sends keyDown/keyUp action sequences. `RawMouseImpl` handles mouse move, down, up, and wheel events by constructing BiDi pointer action sequences with appropriate coordinates, button mappings, and modifier keys. Both classes route actions through a `BidiSession`.

Usage

Use BidiInput when Playwright needs to simulate keyboard and mouse input in BiDi-connected browsers (Firefox native BiDi or Chromium via BiDi-over-CDP).

Code Reference

Source Location

Signature

export class RawKeyboardImpl implements input.RawKeyboard {
  constructor(session: BidiSession);
  setSession(session: BidiSession): void;
  async keydown(progress: Progress, modifiers: Set<types.KeyboardModifier>, keyName: string, description: input.KeyDescription, autoRepeat: boolean): Promise<void>;
  async keyup(progress: Progress, modifiers: Set<types.KeyboardModifier>, keyName: string, description: input.KeyDescription): Promise<void>;
  async sendText(progress: Progress, text: string): Promise<void>;
}

export class RawMouseImpl implements input.RawMouse {
  constructor(session: BidiSession);
  setSession(session: BidiSession): void;
  async move(progress: Progress, x: number, y: number, button: types.MouseButton | 'none', buttons: Set<types.MouseButton>, modifiers: Set<types.KeyboardModifier>, forClick: boolean): Promise<void>;
  async down(progress: Progress, x: number, y: number, button: types.MouseButton, buttons: Set<types.MouseButton>, modifiers: Set<types.KeyboardModifier>, clickCount: number): Promise<void>;
  async up(progress: Progress, x: number, y: number, button: types.MouseButton, buttons: Set<types.MouseButton>, modifiers: Set<types.KeyboardModifier>, clickCount: number): Promise<void>;
  async wheel(progress: Progress, x: number, y: number, buttons: Set<types.MouseButton>, modifiers: Set<types.KeyboardModifier>, deltaX: number, deltaY: number): Promise<void>;
}

Import

import { RawKeyboardImpl, RawMouseImpl } from '../server/bidi/bidiInput';

I/O Contract

Inputs

Name Type Required Description
session BidiSession Yes The BiDi session for sending input commands
progress Progress Yes Progress tracker for cancellation and racing
keyName string Yes Name of the key to press/release
x, y number Yes Mouse coordinates for mouse actions
button types.MouseButton Yes Mouse button identifier
modifiers Set<types.KeyboardModifier> Yes Active keyboard modifiers (Shift, Control, etc.)

Outputs

Name Type Description
(side effect) void Input events dispatched to the browser via BiDi

Usage Examples

import { RawKeyboardImpl, RawMouseImpl } from '../server/bidi/bidiInput';

const keyboard = new RawKeyboardImpl(bidiSession);
await keyboard.keydown(progress, new Set(), 'Enter', keyDescription, false);
await keyboard.keyup(progress, new Set(), 'Enter', keyDescription);

const mouse = new RawMouseImpl(bidiSession);
await mouse.move(progress, 100, 200, 'none', new Set(), new Set(), false);
await mouse.down(progress, 100, 200, 'left', new Set(['left']), new Set(), 1);

Related Pages

Page Connections

Double-click a node to navigate. Hold to expand connections.
Principle
Implementation
Heuristic
Environment