Still Under Construction…
Some unclassified Accessibility links
Some useful Links to quick start on Accessibility:
1. vision problems
Vision:
URL: http://www.children-special-needs.org/vision_therapy/esophoria_reading.html
URL: http://www.webaim.org/articles/visual/blind.php
Low Vision:
URL: http://www.webaim.org/articles/visual/lowvision.php
color Blindness
URL: http://www.webaim.org/articles/visual/colorblind.php
Vischeck:- An online tool showing you what things look like to someone who is color blind.
URL:- http://www.vischeck.com/vischeck/ ,
URL: http://www.vischeck.com/vischeck/vischeckURL.php
2. Hearing Problems:
Captioning: Closed Captioning etc.
URL: http://www.w3.org/TR/SMIL-access/
3. Motor Problems:
Types:
URL: http://www.webaim.org/articles/motor/motordisabilities.php
Assitive Devices:
URL: http://www.webaim.org/articles/motor/assistive.php
4. United Nations Statistics Divison: (Human functioning and disability) (Countrywise)
URL: http://unstats.un.org/unsd/demographic/sconcerns/disability/disab2.asp
5. Site of Rehabilitation Council of India:
URL: http://rehabcouncil.nic.in/index.htm, http://rehabcouncil.nic.in/advertisement.htm
URL: http://rehabcouncil.nic.in/helpsite.htm
6. Disability India Network:
URL: http://www.disabilityindia.org/
7. National Institute For Mentally Handicapped:
URL: http://www.nimhindia.org/
8. Usability Survey Report of Indian State Governments Web Portals:
URL: http://www.disabilityindia.org/surveyreporttable.cfm
URL: http://www.disabilityindia.org/usabilitysurveyreport.cfm
9. Section 508:
URL: http://www.section508.gov/
URL: http://www.section508.gov/index.cfm?FuseAction=Content&ID=12
URL: http://www.at.ufl.edu/accessibility/accessibility_cd/Law/index.html
10. Accessibility and E-learning
URL: http://www.accesselearning.net/
URL: http://www.teachability.strath.ac.uk/chapter_7/tableofcontents7.html
11. Disability Access Symbols
URL: http://www.gag.org/resources/das.php
12. Article: Motivating a Reluctant Writer (Predictive Writing)
URL: http://www2.edc.org/NCIP/library/wp/motiv.htm
13. Article: Enabling a Student with Developmental Delays (Predictive Writing)
URL: http://www2.edc.org/NCIP/library/wp/Hoeffel.htm
14. Article: Improving access to recording and presentation(Predictive Writing)
URL: http://schools.becta.org.uk/index.php?section=tl&catcode=as_chr_02&rid=4322
15: Online Book: Dive Into Accessibility: 30 days to a more accessible web site
URL: http://diveintoaccessibility.org/
16. Some Companies Who are working on Accessibility in India
AccessAbility:
URL: http://accessability.co.in/?gclid=CJqOhdKTuIwCFRxHXgodMkI3Kw
BarrierBreak Technologies
URL: http://www.barrierbreak.com/
Net System Informatics
URL: http://n-syst.com/?tcsrc=www.training-classes.com
17. Web Accessibility initiative:
URL: http://www.w3.org/WAI/
18. Speech:
URL: http://www.webaim.org/articles/auditory/
URL: http://msdn2.microsoft.com/en-us/library/ms817993.aspx
Gnopernicus
URL: http://www.baum.ro/gnopernicus.html
freetts
URL: freetts.sourceforge.net/
festival:
URL: http://www.cstr.ed.ac.uk/projects/festival/
Sphinx4:
URL: http://cmusphinx.sourceforge.net/sphinx4/
19 Gnome Accessibility Project: (For Desktop Accessibility)
URL: http://developer.gnome.org/projects/gap/
20. Cognitive Disbility:
URL: http://www.webaim.org/articles/cognitive/
21. User Interface Design Perspectives:
URL: http://www.webaim.org/articles/userperspective/
URL: http://www.webaim.org/articles/design/
URL: http://www.webaim.org/techniques/fonts/
URL: http://www.webaim.org/techniques/images/
URL: http://www.webaim.org/techniques/frames/
URL: http://www.webaim.org/techniques/textlayout/
URL: http://www.webaim.org/techniques/tables/
URL: http://www.webaim.org/techniques/keyboard/
22. Google's Accessible Web Search for the Visually Impaired
URL : http://labs.google.com/accessible/
Sample code to write a very basic Assistive Technology on GNOME desktop (Sorry! because I have skipped some details…)
Here is a sample Code which can be used to understand how to write Assistive Technology applications:
This application uses swing text entry to enter text in Gedit first text widget….
NewWindow.java
import javax.swing.*; import javax.swing.event.*; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; public class NewWindow extends JFrame { /** * */ private static final long serialVersionUID = 1L; public JTextArea textArea= new JTextArea(); public JScrollPane textAreaScrollPane = new JScrollPane(textArea, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); public JButton button = new JButton("Click me"); JPanel panel = new JPanel(); public static native void storeandExecuteResult(String result,int length); ///* static{ //System.setProperty("java.library.path", "/usr/lib/"); System.loadLibrary("NewWindowLib"); } /**/ public static void main(String args[]){ NewWindow newWindow= new NewWindow(); } NewWindow(){ textArea.addCaretListener(new CaretListener() { public void caretUpdate(CaretEvent e) { String myText=textArea.getText(); int myTextLength=myText.length(); storeandExecuteResult(myText,myTextLength); } }); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { storeandExecuteResult("Hello",5); } }); panel.setLayout(new BoxLayout(panel, BoxLayout.LINE_AXIS)); panel.add(textAreaScrollPane); panel.add(button); this.add(panel); this.setBounds(100, 100, 200, 200); //this.setFocusableWindowState(false); this.setEnabled(true); this.setAlwaysOnTop(true); this.setVisible(true); } }
NewWindowLib.c
#include"NewWindow.h" void initializeSPI(){ int init_error,num_apps; init_error=SPI_init(); putenv("GTK_MODULES=gail:atk-bridge"); putenv("GNOME_ACCESSIBILITY=1"); if(init_error){ printf("Error in initialising SPI\n"); //return init_error; //exit(0); } } Accessible * getFirstTextContext(Accessible * handle){ Accessible * textContext, *tmp; int i,num_child; if(strcmp(Accessible_getRoleName(handle),"text")==0) return handle; num_child=Accessible_getChildCount(handle); if(num_child==0)return NULL; for(i=0; i<num_child; i++){ tmp=Accessible_getChildAtIndex(handle,i); textContext=getFirstTextContext(tmp); if(strcmp(Accessible_getRoleName(textContext),"text")==0){ Accessible_unref(handle); return textContext; } Accessible_unref(tmp); Accessible_unref(textContext); } return NULL; }//getFirstTextContext JNIEXPORT void JNICALL Java_NewWindow_storeandExecuteResult(JNIEnv *env , jclass cls, jstring string , jint size){ int init_error,num_apps; int num_child; Accessible * desktop; Accessible * handle,* child; AccessibleText * textContext; AccessibleText * textAccessible; int i=0; char * textAttributes,*text; char * name; char * moretext; long startoffset=0,diffoffset=2; int charactercount; int i_iter=0; jchar * jcp; jboolean *hehe=NULL; putenv("GTK_MODULES=gail:atk-bridge"); putenv("GNOME_ACCESSIBILITY=1"); converted_string= (char *) malloc(1000); initializeSPI(); /* init_error=SPI_init(); if(init_error){ printf("Error in initialising SPI\n"); //return init_error; exit(0); } */ desktop=SPI_getDesktop(0); num_apps=Accessible_getChildCount(desktop); printf("The number of applications currently running in desktop are %d \n",num_apps); for(i=0; i<num_apps; i++){ child=Accessible_getChildAtIndex(desktop, i); if(!child)continue; name=(char *) malloc(1000); name=Accessible_getName(child); if(strcmp(name,"gedit")==0){ //Accessible_unref(child); break; } //Accessible_unref(child); SPI_freeString(name); } if(strcmp(name,"gedit")!=0){ printf("gedit not found quitting...............\n"); Accessible_unref(child); Accessible_unref(handle); Accessible_unref(desktop); } SPI_freeString(name); textContext=(AccessibleText *)getFirstTextContext(child); //textContext=(AccessibleText *)getFirstTextContext(child); name=Accessible_getRoleName(textContext); printf("The role name is %s\n",name); textAttributes=(char *) malloc(1000); text=(char *) malloc(1000); //textAttributes=(char *)AccessibleText_getAttributes(textContext,0,&startoffset,&diffoffset); printf("Editable/notEditable %d\n", Accessible_isEditableText(textContext)); startoffset=0; diffoffset=1; //textAccessible=Accessible_getText(textContext); textAccessible=Accessible_getEditableText(textContext); charactercount=AccessibleText_getCharacterCount(textAccessible); printf("The number of characters in the text are %d \n",charactercount); printf("Editable/notEditable %d\n", Accessible_isEditableText(textAccessible)); jcp=(jchar*)(*env)->GetStringChars(env,string,hehe); /*converted_string=(char *)malloc(size+1);*/ for(i_iter=0; i_iter<size+1; i_iter++){ converted_string[i_iter]=jcp[i_iter]; } converted_string[i_iter]='\0'; AccessibleEditableText_setTextContents(textAccessible,converted_string); SPI_freeString(name); Accessible_unref(child); Accessible_unref(desktop); }//
Now What ever you will enter in swing text area will also be reflected in Gedit text Area.