Maker Day at ATIA 2025 - UNC-Project-Open-AAC/OS-DPI GitHub Wiki

Welcome to Choose Your Own AAC Adventure!

Join us as we promote Makers' interactions with the open-source AAC research design/development platform called the Open-Source Design and Programmer Interface (OS-DPI), situated for use within an inclusive design community.

Everything you need to Choose Your Own AAC Adventure is here, whether you choose to start from scratch or work from an existing user interface (UI) design listed below.  Also, all aspects of the OS-DPI are available on our public repository in GitHub for you to refer to any time after Maker Day.

Have an idea for a novel UI? Post and share it with the larger community!

Getting Started

1. Download the Maker Day folder here.

This folder contains all the resources that you will need to create each of the four UI destinations (i.e. spreadsheet and media). We’ve also included the completed UIs as .osdpi files so that you can skip ahead to the end of the adventure and realize the final destination. Or, you may choose to open a completed UI and start there.

2. Pick your destination.

3. Optional Step: Create a Github account.

  • Join the OS-DPI Repository by signing up for a Github account is optional for Maker Day, but having one will allow you to be able to interact with this inclusive community by creating discussion posts, commenting on other projects, asking for help with a design, etc.

4. Begin adventuring!

Destination: Visual scene display

Step 1: Open a new OS-DPI window.

Step 2: Upload the spreadsheet for the VSD UI.

  • File --> Load sheet
  • Select bedroom_VSD.xslx file from OS-DPI_Maker_Day_Resources.zip folder

Step 3: Upload the content (media).

  • File --> Load media
  • Select the images for the UI within the OS-DPI_Maker_Day_Resources.zip folder

Step 4: Create VSD in Layout.

  1. Click on the Layout tab
  2. Select Add --> Stack
  3. Select Add --> VSD
  4. The image and the hotspots should now appear on the left side of the OS-DPI window

Step 5: Add Speech.

  1. Select the Actions tab
  2. Add --> Action
  3. Fill out the boxes in this way:
  • under Origin, type vsd
  • leave Conditions blank
  • under State, type $speak
  • under New Value, type #speak
  1. Check to see that the speech is working by clicking on any hotspot within the VSD.

Optional Step: Change the voice.

  1. Click on Layout
  2. Click on the dropdown Speech
  3. A box will open and you can select from any voices available on your machine. Want a voice that's not currently available?

Bonus Adventure: See if you can problem solve this step before asking a Project Open team member for assistance!

Step 6: Check to be sure the UI is functioning properly.

  1. On your keyboard, hold option + D (Alt + D for Windows) so that the UI fills the screen.
  2. The same command (option + D) will close the full screen and return to the designer interface.

Step 7: Add a new hotspot.

  1. Look at the bedroom image.
  2. Hover the cursor where you want the left corner of the box to begin. Tip: aim for the garland on the wall.
  3. When you have the cursor where you want the box to start, note those x and y coordinates.
  4. Go to the spreadsheet.
  5. In Row 5, column E, insert the x coordinate.
  6. In Row 5, column F, insert the y coordinate.
  1. To figure out width (w) move your cursor across screen until you are at the point where you want your hotspot to end.
  • Note the x coordinate.
  • Subtract the x coordinate in the spreadsheet from this number.
  • Enter in sheet row 5, column G.

8. To figure out height (h) repeat the previous step, find the location where you want the lower right corner of the hotspot to be.

  • Subtract y coordinate in spreadsheet from the y coordinate of your cursor.
  • Enter in sheet row 5, column H.

Step 8: Sync the changes in the spreadsheet with the UI.

  • Save the spreadsheet.
  • Return to OS-DPI file in the browser.
  • Select File --> Reload sheet

Congratulations! You made it to the VSD destination! Show off your work with the larger community!

Destination: Static universal core board

Step 1: Open a new OS-DPI window.

To create this core board, you’ll first need to upload the spreadsheet where the data is maintained and the content/media (the symbols).

Step 2: Upload the spreadsheet for the UI.

  1. File --> Load sheet
  2. Select Static_Universal_Core.xlsx from OS-DPI_Maker_Day_Resources.zip folder--> Open

Step 3: Load Content (media).

  1. Select File --> Load Media
  2. Select ARASAAC_Open_Source from OS-DPI_Maker_Day_Resources.zip folder --> select all files --> Open

The words and the symbols needed for this UI have been loaded into the system, (even though you do not see any changes occur yet). Now let’s design the page to display this content.

Step 4: Design the page.

  1. Go to Layout tab
  2. Select Add --> Grid

The loaded words and symbols should display in your UI. Now let’s program an action to speak when each button is selected.

Step 5: Program a speak action.

  1. Go to Actions tab
  2. Select Add --> Action
  3. Go to Origin box --> type ‘grid’
  4. Go to State box --> type $Speak
  5. Go to New value box --> type #label  

That’s it! Great work, you’ve created a simple, 36 location UI, that speaks. Show off your work in GitHub!

Destination: English-Mandarin core board

Embarking on this AAC adventure will take you through the steps to create a core board that toggles between English and Mandarin. The completed core board is provided for you. Your challenge is to make it toggle between English and Mandarin.

Step One: Upload the English-Mandarin UI in OS-DPI.

  1. Open a new OS-DPI window.
  2. File —> Import
  3. Select English_grid.zip from the OS-DPI_Maker_Day_Resources folder.

You should now see the core board, complete with symbols, on the left side of the screen. The next step is to edit the spreadsheet where the data is managed to create a new button to toggle between English and Mandarin symbols.

Step Two: Edit the spreadsheet.

  1. Open the sheet English-Mandarin_grid_demol.xlsx within the OS-DPI_Maker_Day_Resources folder. 
  2. In the sheet labeled Home, type ‘Mandarin’ in the cell at row 52/column E.  
  3. Add a new sheet with the label ‘Mandarin’. 
  4. Copy and paste the content from sheet Home to sheet Mandarin
  5. Insert the translation for each word in the label column. Or you can translate the entire column using the Google Translate function.  

Note: You can translate to any language! See this Google Sheet as an example. This function works in the webpage version of Sheets only.  

  1. In the Mandarin sheet, type ‘English’ into the spreadsheet in row 52/column E. 
  2. Save the sheet. 
  3. In the OS-DPI window, select File --> Reload/Load Sheet

The Mandarin toggle button now appears in the left bottom corner of the UI grid. Now, we need to create some actions for the button.

Step Three: Add the Mandarin Tab and Grid.

  1. Go to Layout tab
  2. Select Tab Control tabs (listed under Display)
  3.  Select Add  → Tab 
  4. Click on the new Tab that appeared at the bottom of the Layout list
  5.  Select the Name box and change the name to Mandarin
  6.  Within the Mandarin Tab, Select Add  → Grid 
  7.  Select Add -> Filter
  • From the #Field drop-down, choose sheetName
  • From the Operator drop-down, select Equals
  • Select the Value box and type ‘Mandarin’ 8. Select Add --> Filter
  • From the #Field drop-down, choose #role
  • From the Operator drop-down, select Equals
  • Select the Value box and type ‘$role’

The UI now has a layout, but it doesn’t do everything it needs to. The next step is to program actions into the design.

Step Four: Add Actions.

  1. Go to the Actions tab
  2. Select Add --> Action
  • In the Origin box, type hp
  • In the Conditions box, type label = ‘Mandarin’
  • In the State box, type $tabControl
  • For New value, type ‘lower’
  1. Select Add --> Action
  • In the Origin box, type Mandarin
  • In the Conditions box, type label = ‘English
  • In the State box, type $tabControl
  • For New value, type ‘home’

4. Select Add --> Action

  • In the Origin box, type Mandarin
  • Leave the Conditions box empty
  • In the State box, type $Display
  • In the New value, type add_word(#display)
  • With the above Action highlighted, select Add --> Update
  • In the State box, type $toSay
  • For New value, type add_word(#display)

The UI now toggles between English and Mandarin but does not have the speech programmed.

Step Five: Program Speech.

  1. Go to Layout tab
  2. Click on Speech
  3. In the Voice dropdown box, scroll and select Yu-Shu (Mandarin voice).

Note: Your machine may have a different selection of voices depending on what is already downloaded and available

You did it! You created a core board that toggles between two languages in OS-DPI. Show off your work in GitHub!

Destination: Keyboard

To create this keyboard, you’ll first need to upload the spreadsheet where the data for this UI is maintained. 

  1. Open a new OS-DPI window 
  2. File --> Load Sheet 
  3. Select keyboard.xlsx from the OS-DPI_Maker_Day_Resources.zip folder

The letters, punctuation, and list of words to be used for prediction have now been loaded into the system, now let’s design the UI to display this content.

  1. Go to Layout tab 
  2. Select Add --> Stack
  3. With the Stack highlighted, select Add --> Display 
  4. Adjust the Scale to 0.3 
  5. With Stack highlighted, select Add --> Grid 
  6. Select the Name box and change the name to predict 

The loaded letters and punctation should display in your UI. Next, we’ll add another grid to display the prediction content.

  10. With Stack highlighted, select Add --> Grid

  1. Select the Name box and change the name to kb (for keyboard

You’ll notice that the letters and punctation is showing up for both grids. We need to further define the grids using a “Filter” to indicate which content should be presented in each grid.

  1. Select the predict grid
  2. Select Add --> Filter  
  • From the #Field drop-down, choose #sheetName
  • From the Operator drop-down, select Equals 
  • Select the Value box and type ‘predict’
  1. Select Add --> Filter 
  • From the #Field drop-down, choose #label
  • From the Operator drop-down, choose Starts with
  • Select the Value box and type $prefix 
  1. Select the Fill items checkbox.  
  2. Adjust the Rows to 1 and Columns to 5  
  3. Adjust the Scale to 0.20 
  4. Select the kb grid  
  5. Select Add --> Filter  
  • From the #Field drop-down, choose #sheetName
  • From the Operator drop-down, select Equals 
  • Select the Value box and type ‘kb’ 
  1. Select Add --> Filter 
  • From the Field Drop-down, choose #case 
  • From the Operator drop-down, choose equals 
  • Select the Value box and type $case 

Next, let’s add a SPACE button. 

  21. Select Page in the Layout tab 

  1. Select Add --> Button 

  2. Open the Button options 

  3. Change the label to SPACE 

  4. Change the Name to SPACE 

  5. Choose Background and change to Pinkish Gray 

  6. Adjust the scale to 0.2 

OK, content has been loaded, the Layout is set, now that’s make it work by programming the Actions. 

  1. Go to the Actions tab 
  2. Select Add --> Action 
  • In the Origin box, type init 
  • In the State box, type $case 
  • For New value, type ‘lower’ 
  1. Select Add --> Update 
  • In the State box, type $prefix 
  • For New value, type ‘’ 

The above steps initiate the UI to load with the lower case keyboard and set the prefix state to empty.  

  1. Go to the Actions tab 
  2. Select Add --> Action 
  • In the Origin box, type SPACE 
  • In the State box, type $Display 
  • In the New Value box, type add_letter (‘ ’) 
  1. Select Add --> Update 
  • In the State box, type $prefix 
  • In the New Value box, type ‘’ 

You have programmed the SPACE button to add a space and reset the prediction buttons by setting the prefix state to empty. Next let’s make the Shift button toggle between Upper and Lower case.

  1. Select Add --> Action 
  • In the Origin box, type kb 
  • In the Conditions box, type #label=’SHIFT’ 
  • In the State box, type $case 
  • For the New Value box, type #newcase 
  1. Select Add --> Action 
  • In the Origin box, type kb 
  • In the Conditions box, type #label=’Speak’ 
  • In the State box, type $Speak 
  • For the New Value box, type $Display 
  1. Select Add --> Action 
  • In the Origin box, type kb 
  • In the Conditions box, type #label=’Clear’ 
  • In the State box, type $Display 
  • In the New Value box, type ‘’ 
  1. Select Add --> Update
  • In the State box, type $prefix 
  • In the *New Value box, type ‘’ 
  1. Select Add --> Action 
  • In the Origin box, type kb 
  • In the Conditions box, type #label=’Delete’
  • In the State box, type $Display 
  • In the New Value box, type replace_last_letter (‘’) 
  1. Select Add --> Action 
  • In the Origin box, type kb 
  • In the Conditions box, type #label=’Delete’ 
  • In the State box, type $prefix 
  • In the New Value box, type replace_last_letter (‘’) 
  1. Select Add --> Action  
  • In the Origin box, type kb 
  • In the State box, type $Display 
  • In the New Value box, type add_letter (#label)
  1. Select Add --> Action  
  • In the Origin box, type kb 
  • In the State box, type $prefix 
  • In the New Value box, type add_letter (‘#label) 
  1. Select Add --> Action 
  • In the Origin box, type predict  
  • In the State box, type $Display 
  • In the New Value box, type replace_last(#label + ‘ ‘) 
  1. Select Add --> Action 
  • In the Origin box, type predict 
  • In the State box, type $prefix 
  • In the New Value box, type ‘’     Use the screenshot below to help you fill in the Actions, or to double-check your work.

You did it! You created a keyboard in OS-DPI. Nice work! Show off your work in GitHub!

Destination: Group Scanning

This AAC journey will take you through setting up a group scanning pattern for the static universal core board example.   The scanning pattern will be by group, then row, then linear. The groups are defined in the spreadsheet data.

Step One: Upload the static universal core board UI.

  1. Open a new OS-DPI window
  2. File --> Import
  3. Select 4 group scan.osdpi from the OS-DPI_Maker_Day_Resources folder

Step Two: Open the spreadsheet.

1. Open the sheet Static_universal_core_group_scan.xlsx within the OS-DPI_Maker_Day_Resources folder

Open the spreadsheet and you will see how the data for this UI are arranged:

  • Group 1 includes the words and symbols in rows 1-3 and columns 1-3
  • Group 2 includes the words and symbols in row 1-3, columns 4-6
  • Group 3 includes the words and symbols in rows 4-6, columns 1-3
  • Group 4 includes the words and symbols in rows 4-6, columns 4-6.

Step Three: Setting the scan pattern.

  1. Go to the Patterns tab
  2. Select File --> Add Pattern
  3. Name the pattern,** 4 group scan**
  4. Set the Cue to yellow overlay
  5. Select Add --> Group
  6. Name the group, 4 group
  7. Select Add --> Selector
  8. Select Add --> Group By
  9. Choose #group
  10. Set the Cue to red overlay
  11. Select Add --> Order By
  12. Choose #group

Step Four: Setting the scanning method.

  1. Select Add --> Method 1. Name the method, 2 step scan
  2. Select the Active box.
  3. Set the Pattern to 4 group scan

Next, we’ll set the keyboard keys to function as the selectors (or switches) for our 2-step scanning.

Step Five: Set keyboard keys.

  1. Select Add --> Key Handler
  2. Select Key Up (to indicate the key will be activated when it is released versus when it is first pressed).
  3. Select Add --> Key Condition
  4. In the Keys box, press Enter/Return on your keyboard to edit
  5. Select the right arrow key on your keyboard. This key will be used as the step 1 selector.
  6. Select Add --> Response
  7. Choose next
  8. Select Add --> Key Handler
  9. Select Key Up (to indicate the key will be activated when it is released versus when it is first pressed).
  10. Select Add --> Key Condition
  11. In the Keys box, press Enter/Return on your keyboard to edit
  12. Select the Space bar on your keyboard. This key will be used as the step 2 selector.
  13. Select Add --> Response
  14. Choose activate

Test out the scan pattern and using the right arrow to move to the next, and the space bar to activate.

You did it! You set up a group scanning pattern on a static board in OS-DPI. Nice work! Show off your work in GitHub!