Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
It takes significant resources to maintain and advance pasco. If you'd like to help keep pasco active and open-source please consider supporting it through one of the methods below.
Our development and research all cost money. If you can spare the cash, we have a few ways to help us keep the lights on.
We accept memberships through our Patreon account. These monthly donations are the ideal financial contribution since they're a bit more dependable and we can roughly predict the monthly amount. (not yet released)
Please donate to us via JustGiving. Small or large donations welcome!
Whether squashing bugs, optimizing the codebase, increasing test coverage, or adding new features, submitting pull-requests through GitHub is extremely valuable.
No technical skills? Not enough time for a pull-request? No problem! We have plenty of user guides and documentation that could use some extra attention. Fix spelling, add code examples, help organize, write new articles, or just check for broken links... it all helps.
pasco is a worldwide project. Our team and users are spread out across the globe and often speak different languages. If you do too, we'd love to get pasco translated into your native tongue. It's easy, and each new translation opens the door to a huge number of new users.
This one is surprisingly underutilized. If you encounter a bug within pasco, no matter how small, we would love to hear about it. With such a small team, it's difficult for us to test every commit. Sometimes after we update a small snippet of code, a totally different piece of code breaks elsewhere. More people using and testing the software is always good, but if no one reports the issues they come across then it may not get fixed!
Have a few followers on Twitter? A quick post mentioning our @AceCentre account goes a long way. We've even been known to re-tweet some of our favorite shout-outs. And be sure to follow us to get the most up-to-date info on new features, releases, and sneak-peeks.
One sentence. Even that was a sentence and it was only two words! If you're a fan of pasco, we'd love to hear why with a short endorsement. Shoot us an email, Tweet, or Slack message. And if you'd like to have your testimonial on our website be sure to include your name, title, company, and picture.
Our small team truly appreciates every contribution made by our community: user stories, feature requests, bug reports, and especially pull requests!. If you have any questions please reach out to our Core team at AceCentre.
So you use pasco? Like what we are doing? Got a real problem that needs fixing but don't understand all this code stuff? Please get in touch. We will try and help - but please note; this is very much a open source, and fundraised project. If you can please consider donating the project
This is the home to the project. Please fork and make changes on this project going forward.
Before we get into the full-blown "proper" way to do a pull request, let's quickly cover an easier method you can use for small fixes. This way is especailly useful for fixing quick typos in the docs, but is not as safe for code changes since it bypasses validation and linting.
Sign in to GitHub
Go to the file you want to edit (eg: this page)
Click the pencil icon to "Edit this file"
Make any changes
Describe and submit your changes within "Propose file change"
That's it! GitHub will create a fork of the project for you and submit the change to a new branch in that fork. Just remember to submit separate pull requests when solving different problems.
Loosely based on this great Gist by Chaser324
We like to keep a tight flow when working with GitHub to make sure we have a clear history and accountability of what changes were made and when. Working with Git, and especially the GitHub specific features like forking and creating pull requests, can be quite daunting for new users.
To help you out in your Git(Hub) adventures, we've put together the (fairly standard) flow of contributing to an open source repo.
Whether you're working on the API or the App, you will need to have your own copy of the codebase to work on. Head to the repo of the project you want to help out with and hit the Fork button. This will create a full copy of the whole project for you on your own account.
To work on this copy, you can install the project locally according to the normal installation instructions, substituting the name acecentre
with the name of your github account.
If you're doing more work than just a tiny fix, it's a good idea to keep your fork up to date with the "live" or upstream repo. This is the main acecentre repo that contains the latest code. If you don't keep your fork up to date with the upstream one, you'll run into conflicts pretty fast. These conflicts will arise when you made a change in a file that changed in the upstream repo in the meantime.
When using git on the command line, you often pull and push to origin
. You might have seen this term in certain commands, like
or
In this case, the word origin
is refered to as a remote. It's basically nothing more than a name for the full git url you cloned the project from:
is equal to
A local git repo can have multiple remotes. While it's not very common to push your code to multiple repo's, it's very useful when working on open source projects. It allows you to add the upstream repo as another remote, making it possible to fetch the latest changes straight into your local project.
When you want to update your fork with the latest changes from the upstream project, you first have to fetch all the (new) branches and commits by running
When all the changes are fetched, you can checkout the branch you want to update and merge in the changes.
If you haven't made any commits on the branch you're updating, git will update your branch without complaints. If you have created commits in the meantime, git will step by step apply all the commits from upstream and try to add in the commit you made in the meantime. It is very plausible that conflicts arise at this stage. When you've changed something that also changed on the upstream, git requires you to resolve the conflict yourself before being able to move on.
Conflicts You should always favor changes on upstream over your local ones.
Whenever you begin working on a bugfix or new feature, make sure to create a new branch. This makes sure that your changes are organized and separated from the master branch, so you can submit and manage your pull requests for separate fixes/features more easily.
Up-to-date Make sure to update your master branch with the one from upstream, so you're certain you start with the latest version of the project!
Prior to opening your pull request, you might want to update your branch a final time, so it can immediately be merged into the master branch of upstream.
Make sure to check if your branch is up to date with the
master
branch of upstream. An outdated branch makes it near impossible for the maintainers of acecentre to check and review the pull request and will most likely result in a delayed merge.
Once you've commited and pushed all the changes on your branch to your fork on GitHub, head over to GitHub, select your branch and hit the pull request button.
You can still push new commits to a pull request that already has been opened. This way, you can fix certain comments reviewers might have left.
Please allow the maintainers of upstream to push commits to your fork by leaving the "Allow edits from maintainers" option turned on. This allows our Core Team to help out in your PR! :::
The main thing to be aware of when submitting a new acecentre feature request, is our rule on edge-cases. To keep the acecentre core codebase as clean and simple as possible we will only consider adding features that at least 80% of our user-base will use. If we feel that less than 80% of our users will find the feature valuable then we will not implement it. Instead, those edge-case features should be added as Extensions.
Before adding a new request, you should also first search to see if it has already been submitted. All feature requests should include the enhancement
label, so you can filter by that. And remember to also check closed issues since your feature might have already been submitted in the past and either rejected or already implemented.
Also, if you want to see the most highly requested features you can sort by :+1:
(the thumbs-up emoji).
If your idea passes the 80/20 test and has not already been submitted, then we'd love to hear it! Submit a new issue using the Feature Request template and be sure to include the enhancement
label. It's important to completely fill our the template with as much useful information as possible so that we can properly review your request. If you have screenshots, designs, code samples, or any other helpful assets be sure to include those too!
You can also vote on existing feature requests. As mentioned above, the :+1:
and :-1:
are used for sorting, so adding one of these reactions to the GitHub issue will cast a vote that helps us better identify the most desired (or undesired) features. And remember to add a comment if you have additional thoughts to help clarify or improve the request.
Our core team is always working hard to implement the most highly-requested community features, but we're a small team. If you need the feature faster than we can provide it, or simply want to help improve the acecentre platform, we'd love to receive a pull-request from you!
Bi-Lingual. Small Thumb movement in 4 directions
Said is a 45-year-old man who lives at home with his wife. Said and his wife are Kurdish and have lived in the UK for 10 years.. Said speaks and understands English, his wife has limited English and speaks to Said in Kurdish. He has Motor Neurone Disease which has now affected his speech to the point others can no longer understand him. His eyesight is poor. He still operates a TV remote by holding the remote between his thumb and forefinger – but can only operate the 4 way TV controls. He wants to spell out whole words and communicate his care needs with carers. He has tried eyegaze technology in the past but this has not been successful.
Bi-lingual. High-Contrast requirements
Fen is a 56-year-old woman who lives in the UK, she is a first-generation immigrant from China. She has had a brainstem stroke limiting her physical skills to a small thumb movement. It is not clear what Fen can see – her family and care staff feel she can hear better than she can see. Prior to her accident she spoke and understood verbal Chinese (Mandarin) well with her family members. Fen now lives in a care home where staff are English speaking. Fen would like to make her care needs known to staff and her family would like to communicate further with her. Fen has begun to use a partner assisted auditory scanning system using a paper-based book put together with her family. As this system is in Chinese it is not accessible to care staff.
English speaking child with developing vocabulary
Joel is a 6-year-old boy who has a significant visual impairment and physical difficulties. He lives at home with his Mum, Dad, baby brother and dog. His family speak both Portuguese and English. He has trialled some AAC by auditory fishing (dragging his hand across a device and hearing a cue about what is underneath it) and selecting with a switch – but this has proven difficult. He can activate a switch well with his head. He has begun to use a partner assisted scanning book with his mother e.g to choose activities to play with; to make comments like telling his mum he loves her.
Enable or disable the 4-way navigation tool. Remember - you can reposition this just by dragging it - and resize it by pressing and holding on the tool - then dragging one of the corners. Have a watch of this video to see how it works.
There are currently three options;
1 switch - Auto-Scan
2+ switches
Wheel (NB: Experimental!)
Switch access works by mapping keyboard keys to different actions. A box which allows one or several switches to be plugged in and then connect to the device is then needed. Be aware that for pasco we are looking at switch boxes that support keyboard presses without any additional software. Some (such as the JoyCable and the Crick USB switch box) emulate a joystick button which won't work. Also switch boxes such as the Hook+ won't work either unless you follow our guide on how to use iOS switch scanning with pasco. The following currently work with pasco on iOS:
By default switch access is set to Manual - which would allow someone to use the on-screen navigation tool - or use 4 switches to navigate the currently active language tree. For example the arrow keys - up, down, left & right - would allow someone to access the tree. Equally, the keys a (left), s (down), d (right), w (up) can be used. Lastly the keys 1 and 2 would allow a user to go left and right in the tree.
Automatic scanning, often called "1 switch scanning" allows a user with one switch to navigate pasco. The computer moves through each item so the user doesn't have to - and only selects the one they want when ready.
Be aware - you need to select which switch key selects (moves forward) - which you can do in the option "Switch key to select items". There are then some options you can configure:
Loops (Default: 3)
The number of times the automatic scan runs through each level of the tree before stopping.
Delay at first item (ms) (Default: 1000 ms)
It is sometimes useful to have a delay at the first item in each level of the branch to help someone to time their switch press.
Auto-scanning delay (ms) (Default: 3000 ms)
The time the scanner moves from one item to a next automatically. Want it to scan quicker/faster? Move it down. Want it to scan slower? Move it up.
Here you can choose your switches (keys) and what should do what action. Select the action (e.g. in Automatic/1-switch scanning you will need to just select the "Select item" action). Then add your key. Remove any keypresses that you don't want to be used by pressing the red cross.
By turning this on it stops the user selecting a large number of items in the tree before hearing the cue. You can change the default time here.
You probably want to keep it under 500ms other wise it can feel laggy
This feature stops the switches being responded to if they are hit within this timeframe. So for example, if a user presses a switch and hits immediately afterwards - pasco will ignore this second press if it is within the timeframe. Some
We will add additional 'helpers' (actions that alter the tree) here - but for now we only have one helper:
It's really useful for single switch scanners to get back a branch if they need to. This adds the option of 'Back' to the end of each Branch, at the beginning of each branch or not at all.
The cue voice - often called the private voice is the synthesised voice that is designed for the communication user to hear. Ideally this would be to a headphone or quiet speaker that only the communication aid user can hear.
Choose your voice and the related volume, pitch and rate (speed) of the voice as you wish. Note there is a plus symbol - this allows people who are using more than one language to add a different synthesised voice for that language. Note there is a line on each slider. This defines the default position so you can reset it if you ever slide this by accident.
The main voice - often called the public voice is the synthesised voice that is designed for the communication partner(s) to hear. This is often an amplified speaker.
Choose your voice and the related volume, pitch and rate (speed) of the voice as you wish. Note there is a plus symbol - this allows people who are using more than one language to add a different synthesised voice for that language.
For many people who are visually impaired its useful to 'hear' the items at each selected branch. This is like someone who is using their eyes to visually scan the interface. It give the user a fast way of scanning the items. If you turn this on we recommend making as fast as you can before the voice becomes hard to understand.
This won't increase the speed of any recorded messages. Note: This option is only available for automatic scanning.
This area defines how the application looks and feels.
Adjust the font size of the text shown in pasco
There are a number of themes - some designed for people with a visual impairment - to aid easier reading of the text
To change the language of the app (the menus and the configuration text) you can change it here.
This doesn't automatically change the language of the trees/vocabulary. For that you will have to use something like google translate.
Allows a user to switch the current active Tree. This means you could have one tree for social chat, another with spelling and another for a particular school or workplace. But more importantly it allows you to switch between a English only tree and a foreign language tree. More information, including how a user can switch without going into the configuration screen can be read here.
Pasco has some example vocabularies installed which you can load up. Select the tree, Press "load selected"", then "Save Tree".
Here you can export or import your vocabulary file as a zip file - or a OBF file - to be used in different AAC programmes.
Because you can have different "Trees" (Vocabularies) in pasco - you need to choose which tree you are working on, edit the tree - and then Save it when you are ready. If you want to make a new Tree - press new. More information on editing the trees can be found here
Below are solutions to some common issues that you may experience when working with pasco.
Premium Support AceCentre is a charity, and we are providing this as-is. If you need something urgently and can pay, we ask you to donate to us - or another developer to help fix your problem
Its fair to say we haven't nailed bluetooth speakers yet. Its tough
Press and hold the small arrow in the bottom right of the keyboard.
Yes. Annoyingly there is no tab key on iPads/iPhones etc. So what to do? Follow these steps to make a keyboard replacement
Tap on the edit button
Using the navigation menu - navigate to the node you want to edit
Tap the down arrow to go down, the right arrow to go into a sub tree element for example
Edit the text in the node.
Note that if you put text in brackets after the word - this will be the cue text. Other text is read out loud as the main text. For example My care (care)
will have the cue of care and read outloud My care
Hit the Save button (top right) when done.
Here is a quick video demonstrating this:
Tap on the edit button
Using the navigation menu - navigate to the part where you want to add a new element - or list of elements
So tap down to go down - right - to go into a sub tree element.
Use the Green Plus or Red Minus icons to add or remove elements
So pressing a plus above the selected element will add a new element above, pressing it below will add an item below - and right - will add a new sub-element.
Equally removing an item is easy by pressing the delete button.
There is no revert or undo! Be careful with the delete tool!
Hit save when done
Here is a quick video demonstrating this:
With the quick edit mode you can also add or remove audio recordings. Pasco is unique in that you can have an audio recording for the cue - and main item.
The "vocabulary" for pasco is stored as a text file. You can read - and write this text file in a number of applications outside of pasco. We use our own internal format for this - but its based on a text file format used across the internet called Markdown. The app supports "ATX" style and standard markdown lists formats.
For example. This is a standard layout:
and you don't need to use -
dashes if you don't wish e.g.
Be super careful with the use of tabs - and spaces. The lines have to have the right spacing to be read by pasco correctly. You can use tabs - or spaces but to make your life easier - try and use the same throughout. Confused? Read this tip on how to do this correctly!
ATX formats use 1-6 hash characters at the start of the line, corresponding to header levels 1-6. For example this is the same vocabulary file using ATX style headings:
Background on the markdown format we use
Pasco's language file is based on markdown - and the work by others who use markdown for mindmaps. See https://brettterpstra.com/2013/08/18/markdown-to-mind-map/ for where this inspiration came from
A nice and simple way of making pasco trees is to use a mindmap editor that exports in this markdown format. We have some details on how to do this using an app called mindnode here.
As well as the basic format - we use some basic formatting tricks:
Cue message. The main message is the first item. The cue is anything in brackets. e.g. My phrases (phrases)
will say "My Phrases" out loud but give the cue as "phrases"
Meta-data commands. We can add additional functionality, for example a way of switching which is the current active tree, using a recorded audio file - or controlling a internet enabled device such as a light switch - using these commands. e.g. Go Back <meta data-back-n-branch="1">
will control pasco to go back a level. For more information on all the commands you can use please read the documentation here.
You can either edit the text file directly in the app (go to Settings -> Vocabulary -> Edit Tree) - or in a seperate text file app and then paste it into this text area. A video demonstrating the two approaches is seen below.
As well as having its own vocabulary format, Pasco supports an open standard of vocabulary called the Open Board format. More information on this format can be seen here. Apps that support the format can be seen here.
The easiest way to get up-and-running is with the iOS app, as it has all the features available. Alternatively have a play with the version online here - just note features like splitting the audio channels or recording sound recordings aren't supported.
pasco is a web app and iOS app currently. Here are the features and quick overview that which features work where:
Feature | iOS | Web |
---|---|---|
So for the full-feature verison of pasco look at using it on a iOS device (iPhone, iPod Touch, iPad).
If you need switch scanning you will also need a compatible switch interface. Pasco is designed to work natively with switch interface boxes that support space and enter - or arrow keys. This includes: Pretorian Applicator and iSwitch, Origin Instruments Tapio, Ablenet's Blue2 switch and the Tecla. For all these switch interfaces you need to put it into a mode that supports pressing 'space' and 'enter' keys.
You can use other switch interfaces designed to work purely with Apple's own switch scanning system such as the hook+. Using these gives you the advantage of being able to use the entire device for scanning - and pasco's own features - BUT you need to be aware of how to create a switch recipe and the user having the ability of changing to this recipe when they are ready. Follow this guide if you wish to do this.
If you wish to use a second speaker - we recommend right now to use a wired headphone - and just the device's own internal speaker.
Want a nice simple speaker that you can put in the headrest of a chair? Look for 'Pillow' speakers
When you first load pasco you will see a quick setup screen. It should look a little like this
Depending on which device you are using these screens may look slightly different - and depending on whether you have your screen in potrtait or landscape. But all the same options should be available.
For a full guide on all of the configuration options read this guide. The options seen on this screen are seen below:
Locale Which language are you wanting the app to be setup in? Changing this will change the language of all the menu items and configuration buttons.
Choose an example tree "Trees" are what other communication apps call "Pagesets" or "Gridsets" or similar. We call them "Trees" in pasco because it defines how language is navigated - like an ever expanding network of branches. Here we have some example trees to get you started. Choose one to see some examples of pasco.
Automatic Scanning or Manual. Choose Manual if you want to try it out without a switch - or if you wish to try it with two or more switches. If you want to use it with one switch select Automatic scanning. When you do this, make sure your switch is set to Enter
Cue Voice is the voice to hear the auditory cue. Typically a user may hear what they can select right now with a cue (sometimes called Private voice). You can choose the voice, the rate, pitch and volume of this voice. You can try an example of the settings by pressing the Green play button
Main Voice is the voice that others will hear - typically the communication partner. Sometimes people amplify this using a secondary speaker. In other software this has typically been called the Public Voice.
Once you have pressed the Green "Start" button at the bottom of the quick setup screen - or you click on the small "Play" icon anywhere else in the app you should see a screen a little like this below.
The screen has two main components. The grey navigation bar at the top where you can access "Configuration", "Help" and "Edit" options, and the main language display area.
Let's now give you a quick overview of the parts of the screen.
The navigation menu (see left) is a small 4-way directional navigational tool to allow a communication partner to navigate the currently loaded language tree. Pressing up - moves up in the current branch, down - moves down and left will move into the next branch - if available - or select the current item. Right will go back a level - if there is a level to go to.
Although originally designed for the communication partner we have found some clients who have a small thumb movement to be able to use this
Simply press and hold and then release. It can take a little while to work out the timing. When you release you are looking for a dotted line to appear around the cursor (see right above). By dragging the corners you can resize the menu - larger or smaller. Want to get it back to the default size? Hit the reset button in the middle when in this resizing mode.
To move the menu press and hold on it as above and simply drag it to somewhere you need it on-screen
Pressing the edit button (the small pencil icon in the grey bar at the top of the screen) gives you access to a language editor.
Want to stop someone accessing these buttons? Check out Guided Access on iOS. Its a really neat built-in way to hide elements on the screen and lock a user into a app. Read about how to set it up her
When in edit mode - select an item in your language and press the small green plus signs to add an item or the red minus sign to remove an item. Simply write your message. If you want a different cue for the item simply type it in brackets. E.g. If you wanted the main message to be hello, how are you?
but the cue to be hi
you could write in your box hello, how are you?(hi)
You can't view cues or advanced meta-data commands in edit mode We want to make pasco as simple to use as possible. By providing some other means to view the cue would make this messy. So right now you can just listen for the cue - and edit if you don't like what you hear
Note it can be difficult to navigate to somewhere else in your tree on iOS - so do have the Navigation menu available to you when using this mode - it really helps!
As well as adding or removing phrases you can also add or remove recorded messages on iOS. To do this - select an item and you should see a small "spanner" item at the top right of the dotted area around the word/phrase selected. Tap this and you can now press the record button to add your own recorded main or cue voice.
👍 You've successfully installed and setup pasco!
😞 Got a problem? Dang! See our troubleshooting guide.
These Docs will help get you up-and-running quickly, guide you through advanced features, and explain the concepts that make pasco so unique.
pasco is an open-source unique communication solution aimed at individuals who have a physical and visual impairment.
Note we definitely aren't trying to make something that already exists. There are many solutions those less visually impaired or with greater physical access can use - and should use! However if you want a purely auditory scanning interface you may want some features that these options struggle to provide as they try and meet the needs of a greater selection of indviduals. So what can we provide in pasco for auditory scanning?
Lets imagine you want a auditory cue in one language - but output your main "voice" in another. Thats difficult to do right now in many commercial solutions
If you want rapid 'pre' auditory scan - a auditory cue that is like quickly visually scanning the interface in front of you
You want a recorded audio file (e.g. someones actual voice) for the main spoken output - and a different recorded audio file for the cue.
Because the language file doesnt have pictures why can't you just write out somones list of phrases and messages in a text file?
you want a way of scanning in-app in a special way - but be able to use the entire device too - not just in a really slow in-efficient way that is great for all other apps - but not communication.
as well as simple text files wouldnt it be great to import and export to different communication apps? After all, your language is yours not a software companies.
To import OBZ formats - select the Import tool found at Settings -> Vocabulary -> Tools -> Import to import your format.
Cue / Main voice splitting between headphone and speaker
✅
❎
Import/Export of Vocab tree
✅
✅
Offline support
✅
✅
In-App Editing
✅
✅
In-App Voice Recording
✅
❎
Adjustable font size and Colour Themes
✅
✅
Switch Access (1-4)
✅
✅
On-Screen navigation tool, Resizable and Draggable
✅
✅