Skip to content
Go to file

Latest commit

* Make input field aria label more specific

We have an issue where on Android mobile devices, you need to use two fingers to tap on the input field to make the keyboard appear. It should only require one finger to tap, which it does on iOS. We don't have time right now to figure out why this isn't working, so, for the meantime, we want to update the aria label to communicate that if one finger tapping isn't working, try two fingers.

There is another issue, not addressed here, where the aria label doesn't seem to work when you tap on the input field. It only activates if you navigate to the input field via swipes. So sighted users who are on an android device and using talkback won't hear this instruction. I don't know when we're going to deal with that. I might have to do that before closing the associated ticket.

I also made some changes to how Tabbar is being imported because it was breaking the tests.

Git stats


Failed to load latest commit information.
Latest commit message
Commit time
Mar 3, 2020
Apr 20, 2016
Aug 19, 2016


Khan Academy's new expression editor for the mobile web. Used in the Perseus exercise framework to power math input and expression editing on small screens.

Built with React, Redux, MathQuill, Aphrodite, and more.

Try it yourself on Khan Academy. (Note: you'll need to enable mobile emulation, if you're accessing the site from a desktop browser.)

Getting started

  • Clone the project: git clone
  • Install dependencies: yarn install
  • Start the development server: yarn start

When you start the project you'll need to be on a device that supports touch or touch emulation to see the keyboard. The easiest way to get started is open the developer tools on Google Chrome.

Supported Features

  • Multiple keypad configurations, so as to accommodate a range of input types (i.e., fractions/mixed numbers, algebraic expressions).
  • Multi-page keypads, with swipeable page navigation.
  • Touch-and-drag interactions (as supported by the stock iOS and Android keypads).
  • A draggable cursor with a detached handle, for fine-grained control on touch devices.
  • Custom state transitions for the editing experience, to streamline expression entry.


A live demo is available via GitHub Pages. You can configure some of the keypad's behaviors, along with the set of active keys, via the editor.

Note that, as the input and keypad only respond to touch events, you'll need to enable mobile emulation (e.g., as supported by Chrome) in order to use the keypad in a desktop browser.

To run the demo locally, clone the repo, yarn install, yarn watch, and open the index.html page. The local behaviors can similarly be customized via the editor @ custom.html.


MIT License


math-input = react + redux + mathquill




No releases published


You can’t perform that action at this time.