Accessibility

Still Under Construction…

Sasi Sir's Paper

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.
2998161161_10fd66fd9d_o.png

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License