Ally IDE is a web-based, accessible Python IDE for non-visual programming. It is still a research prototype and may have bugs. It is tested in Chrome Web browser with NVDA and VoiceOver screen readers.
Ally IDE has five components: two editors, two views, and an output window. The shortcut to select each component is Control plus a number from one to five. Each component serves a special purpose and is well-integrated to minimize the need for visual cues during programming.
The first editor is a plain Text Editor, which is similar to writing code in a Notepad or TextEdit. The shortcut to select Text Editor is Control + 1. The second editor is a spreadsheet-like interface to read and write code in grid cells. We call it Grid Editor (shortcut: Control + 2). The user can seamlessly transition between Text and Table Editors to read/write codes.
Code Tree view (shortcut: Control + 3) shows the hierarchy of the current source code in a Tree. This tree is read-only, which allows safe and faster navigation of code. Bookmarks view (shortcut: Control + 4) shows the saved bookmarks. Users can create a bookmark at any statements from either Text Editor, Grid Editor, or Code Tree view and access them later from the Bookmark view.
Code Output window (shortcut: Control + 5) shows the textual output. To compile/run the code, a user presses ALT + ENTER.
Context Menu (shortcut: Control + 0) provides a list of helpful information, such as the current line and scope, frequently used actions like bookmarking a line, and changing the default settings. Finally, Ally Editor provides different audio cues to keep the user informed and oriented at all times.
The following sections describe each component and associated shortcuts in detail.Back to Table of Contents
|Control + 0||Open Context Menu or Right-click menu|
|Control + 1||Switch to Text Editor. The cursor is set at the current line|
|Control + 2||Switch to Grid Editor. The cursor is set at the current line|
|Control + 3||Switch to Tree View. The cursor is set at the current line|
|Control + 4||Switch to Bookmarks View. The cursor is set at the first item in the Bookmarks list|
|Control + 5||Switch to Code Output Window|
|Control + l||Announce the line number, level of the statement, and the name of the view at the current cursor|
|Control + g||Go to a particular line. A user types the line number and presses ENTER to commit|
|ALT + ENTER||Compile or Run the code. The cursor is taken to the output window by default|
|Shortcut Key||Text Editor||Grid Editor||Code Tree View||Bookmarks View||Code Output Window|
|UP Arrow||Move the cursor to previous line||Go to the cell above the current cell at the same column||Go to the previous sibling node (if any)||Go to the previous bookmark (if any)||Move the cursor to previous line|
|DOWN Arrow||Move the cursor to next line||Go to the cell below the current cell at the same column||Go to the next sibling node (if any)||Go to the next bookmark (if any)||Move the cursor to next line|
|LEFT Arrow||Move the cursor to previous character||Go to the left cell in the same row of the current cell||Go to the parent node (if any)||No Action||Move the cursor to previous character|
|RIGHT Arrow||Move the cursor to next character||Go to the right cell in the same row of the current cell||Go to the first child of a node (if any) and expand the node if collapsed.||No Action||Move the cursor to next character|
|ENTER||Create a new line. If current line is empty, then ignore||Make a cell editable (if allowed)||Expand or collapse a node (if applicable)||No Action||No Action|
|BACKSPACE||Remove the character (or indetation) at the cursor position.||In Navigation mode, remove the current statement cell and the corresponding row. Block Statements and the first stamentent inside a block cannot be removed. Cursor will point to the statement cell in the previous row.||No Action||No Action||No Action|
|ESCAPE||No Action||Make a statement cell non-editable, or dismiss the suggestion drop-down||No Action||No Action||No Action|
|DELETE||Delete the character at the cursor position||Delete the character in a statement cell while editing||No Action||Delete the selected bookmark||No Action|
|PAGE UP||Move cursor to the first line||From an Empty cell, go to the nearest Statement cell or Indentation cell in the upward direction at the same level. From an Indentation cell, go to the Statement cell that creates the indentation. From a Statement cell, skip over consecutive statement cells or Blank Cells in the upward direction at the same level.||No Action||No Action||No Action|
|PAGE DOWN||Move cursor to the last line||From an Empty cell or Indentation Cell, go to the nearest Statement cell in the downward direction at the same level. From a Statement cell, skip over consecutive Statement cells, Indentation Cells or Blank Cells in the downward direction at the same level.||No Action||No Action||No Action|
|HOME||Move cursor to the start of current line||From an Empty cell, go to the Statement cell in the same row. From a Statement cell or Indentation cell, go to the Line Number cell in the same row.||Go to the first line||No Action||No Action|
|END||Move cursor to the end of current line||From an Indentation cell or Line Number cell, go to the Statement cell in the same row. From a Statement cell, Empty cell, go to the Right Most cell in the same row.||Go to the last line||No Action||No Action|
Ally IDE provides a real-time error cue (a beep sound) when editing the code in Grid Editor to indicate a syntax error. This cue is provided when the current editing cell contains a syntax error and the user tries to go out of Edit mode or create a new cell by pressing Enter. In addition, a periodical error alert every 45 seconds (configurable) will notify the user of any error with a prompt, e.g., 'Error at Line 3'. The user can disable these cues from the Settings. A list of other audio cues is described in the following table.
|Making a cell editable/Going to the child node or statement|
|Making a cell non-editable/Going to the parent statement or node|
|Hitting a table boundary|
|Navigating with arrows|
|Editing a table cell|
|Auto-completing a block|
|Switching Editors or Views|
|Code is executing|