blob: 3bbf71b5e2a39fff0a775c6b375b1aa0e5dbc60f [file] [log] [blame]
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Braille display access private API.
namespace brailleDisplayPrivate {
// Braille display keyboard command.
enum KeyCommand {
line_up,
line_down,
pan_left,
pan_right,
top,
bottom,
routing,
secondary_routing,
dots,
chord,
standard_key
};
// A keyboard event. This is not a standard keyboard event because
// braille display keyboards look significantly different from standard
// keyboards.
dictionary KeyEvent {
KeyCommand command;
// 0-based display position for commands that involve a routing key.
long? displayPosition;
// Braille dot keys that were pressed, stored in the low-order bits.
// Dot 1 is stored in bit 0, dot2 in bit 1, etc.
long? brailleDots;
// DOM keyboard event code. This is present when command is standard_key
// and the braille display event represents a non-alphanumeric key such
// as an arrow key or function key.
// The value is as defined by the |code| property in
// http://www.w3.org/TR/uievents/#keyboard-event-interface
DOMString? standardKeyCode;
// DOM keyboard event character value. This is present if the
// braille key event corresponds to a character.
DOMString? standardKeyChar;
// Whether the space key was pressed.
boolean? spaceKey;
// Whether the alt key was pressed.
boolean? altKey;
// Whether the shift key was pressed.
boolean? shiftKey;
// Whether the ctrl key was pressed.
boolean? ctrlKey;
};
// The current braille display state.
dictionary DisplayState {
// Whether a braille display is currently available.
boolean available;
// Number of rows of braille cells on the currently connected display.
long? textRowCount;
// Number of columns of braille cells on the currently connected display.
long? textColumnCount;
};
callback DisplayStateCallback = void(DisplayState result);
interface Functions {
// Gets the current display state.
static void getDisplayState(DisplayStateCallback callback);
// Write the given dot patterns to the display. The buffer contains one
// byte for each braille cell on the display, starting from the leftmost
// cell. Each byte contains a bit pattern indicating which dots should be
// raised in the corresponding cell with the low-order bit representing
// dot 1 and so on until bit 7 which corresponds to dot 8. If the number
// of bytes in the buffer is not equal to the display size, the buffer
// will either be clipped or padded with blank cells on the right. The
// buffer is a 2D array compressed into 1D. The |columns| and |rows|
// parameters give the original 2D dimensions of the buffer. To access
// an element cells[r][c], simply access cells[r * columns + c].
static void writeDots(ArrayBuffer cells, long columns, long rows);
};
interface Events {
// Fired when a braille display is connected or disconnected.
static void onDisplayStateChanged(DisplayState state);
// Fired when an input event is received from the display.
static void onKeyEvent(KeyEvent event);
};
};