Frequently Asked Questions
When in solution explorer, after your new project has been created, do the
1. Locate your form. It is usually called form1.cs
2. Press ENTER on this file to open it in the forms designer.
3. Press CONTROL+W, then CONTROL+X to bring up the toolbox.
4. Use the arrow keys to find the control you want (button, textbox, listbox...), then press ENTER on the control name
to drop it on the form.
5. If you haven't done so, go to Window>doc as tabbed document, then press ENTER.
6. Press CONTROL+F4 to close the toolbox.
7. Press TAB until you select the control you just added to the form.
8. Use the arrow keys to move the control around the form. This simulates dragging it around with the mouse.
Note: You can check the status bar for the controls position by using your screen reader's status bar reading command. The JAWS read status bar command is INSERT+PAGEDOWN). The result will look something like 80, 60. 80 is the number of pixels from the left edge of the form's border, and 60 is the number of pixels the control is from the top edge of the form's border.
When you are satisfied with the control's position, press F4 to open the control's properties window. Fill out the form whatever way is needed, then close it with CONTROL+F4, assuming you have it set as a tabbed document.
Here is the complete default keybindings for visual studio 2010:
http://access2science.com is a site that contains math accessibility information.
http://www.bbc.co.uk/schools/gcsebitesize/maths/ is a web site for learning math.
Thanks to TJ for contributing this to the program-l e-mail group.
You are getting the message:
csc.exe is not recognized as an internal or external command, operable program or a batch file...
All this message really means is that the system cannot find the program requested, because it is not in the current path of directories it checks.
There are many ways to add a directory to the path. I will show you the one that I use.
Step 1: open a command prompt. To do this, hold down the Windows key and press the letter R on systems older than Vista. In Vista and newer, hit the Windows key. Once you have an edit box focused, type cmd and press Enter.
At the command line, enter the command: cls
This will clear the screen and make it easier to work with later.
Step 2: enter cd \
This will take you to the root directory of drive c:
To verify this, look at the bottom of the screen. It should look something like: c:\>
C:\> is the working command prompt.
Step 3: enter md cSharp
This will create a working directory called cSharp. Md stands for make directory.
We will use this directory to store the results of some later commands.
Step 4: enter dir /s csc.exe
Dir is the dos directory command. It will give a listing of the files in a directory.
/s is an argument telling the dir command to search the current directory and all subdirectories for a given file.
csc.exe - is the c# compiler. In our case it is the requested file.
If you look at the screen, you will see a listing of all of the directories that have a csc.exe file within the current working directory, which is the root.
It is hard to work with the data that is on the screen. The next step will save the important data to a file that will make it easier to work with.
Step 5: enter dir /s /b csc.exe > c:\cSharp\csc.lst
This is the same command that you entered in step 4, but the results are now
reduced to the bare minimum by using the /b argument and being directed or "piped" to a file named csc.lst. That file is in the working directory that you created earlier: c:\cSharp
Step 6: enter cd cSharp
This means change directory. Now the working directory is c:\CSharp.
Your prompt should now look something like c:\cSharp>
Step 7: open the file csc.lst with your favorite text editor
The path to the file is: c:\cSharp\csc.lst
One thing you could do is type: start notepad csc.lst. This will start notepad and load the csc.lst file.
Note: there are different versions of the ms .net framework on your system
Each version will contain a csc.exe file. I choose to use the latest version on my system. That was:
Step 8: remove the filename: csc.exe from the directory path that points to the C# compiler you want to use.
Using your text editor, remove the "\csc.exe" from the end of the ms .net frame work path.
Your line should look something like this:
This is the directory that needs to be added to the system path.
Copy this line to the clipboard.
Save the file for further use.
Step 9: Go back to the command line and enter echo %path%
This will display your current path. It is to this path that the results of step 9 must be added.
Step 10: open your text editor to a new file and enter the following:
rem add to the current path
set old_path = %path%
set path = %old_path%;
Paste the copied line to the set path statement above after the ;
The path statement should look something like this:
set path = %old_path%;c:\Windows\Microsoft.NET\Framework\v4.0.30319
Add this line to the file:
Save the file as: add2path.cmd
Step 11: review the batch file you created. It should look similar to this:
rem add to the current path
set old_path = %path%
set path = %old_path%;c:\Windows\Microsoft.NET\Framework\v4.0.30319
Step 12: From the command line, enter add2path.cmd
You should see the current path, which should now include the added .net frame work directory
Step 13: enter cls to clear the screen
Step 14: enter csc.exe
If all goes well, you should see the options that can be used with the csc.exe compiler.
You should now be able to run csc.exe from any of your directories without getting the dreaded error:
Csc.exe is not recognized as an internal or external command, operable program or a batch file...
http://www.cplusplus.com. This site contains both non-technical and technical material
about the C++ language. There is also material about the C language here.
If you want to learn about Win32 programming, check out http://www.winprog.org/.
Blind Geeks -- Where Blind People Learn Programming
BlindWebbers -- List for blind and visually impaired web authors
dev-accessibility -- Accessibility of Mozilla products to those with disabilities
Dolphin Scripting Forum -- Discuss scripting speech, braille, or magnification with Supernova
GW-Scripting -- Discussion list for information regarding the development and use of Window-Eyes scripts
JAWSScripts -- For scripting and configuring JAWS
LibLouis and LibLouisXML -- List for the discussion and development of the liblouis and liblouisxml braille translation, back-translation, and formatting
NVDA Developers -- List for development of the Nonvisual Desktop Access screen reader
Open A11y of the Linux Foundation
program-l -- Discussion group for visually impaired computer programmers
Lion's World Services For the Blind has a curriculum called Enterprise Solutions Programming -- a 10-month course which prepares clients to work in a wide
range of programming environments including .NET and others. Exams for Microsoft Certified Professional Developer (MCPD) are offered through the program.
Nonvisual Desktop Access
This answer intentionally excludes Integrated Development Environments (IDE's).
Sodbeans is being developed at
To contribute to the community, it is helpful to know one or more of the following languages:
* Bash schell scripting. This may be the easiest language to learn in Linux, and it is very powerful. Bash scripts are used throughout most Linux systems
to control practically everything.
Bash Guide for Beginners
Main Page - Linux Shell Scripting Tutorial - A Beginner's handbook
GNU Bash Reference Manual
* C. Most programs in Linux are written in C, including atk, at-spi, and speech-dispatcher, which are used for connecting screen readers to the system.
Speakup, and GTK+, the Gnome GUI library, are also written in C.
* Python. Many programs in Gnome are written in Python and use the pygtk bindings if they need GUIs. Orca, the Gnome screen reader, is written entirely
* C++. Some applications, like espeak, the default TTS engine, are written in C++. Some GUI engines, like Qt and wxWidgets, are also in C++.
Before developing on Linux, make sure you like programming. Linux is considered by many hackers to be the happiest place to code. It is a wonderful operating
system (OS) for hackers, where you will experience freedom unlike anything in Windows. However, unless you absolutely love programming, Linux may just
drive you nuts.
There are suggestions elsewhere in this FAQ for getting started in programming on Windows, which you should probably follow first. Right now, while Linux
is fairly accessible, it's currently better for blind programmers than for general blind users. Once you feel you've learned enough to start contributing,
then feel free to jump right into almost any Linux project. There are literally thousands of them, and being blind will not hold you back from contributing
in most cases.
Decide how you want to interact with Linux. For example, if you're going to use JAWS to controll a shell, JAWS email lists can help. If you want to boot
directly into a Linux console and do your work there, you can get help on the speakup list. If you want to use the Gnome desktop, the Vinux mailing list
is friendly to newbie questions, and generally can help you get started. If you want to help improve Linux accessibility, the Vinux project is looking
You can use a screen reader on another computer to log into any distro remotely, and then use it accessibly in a console mode session. Some mainstream distros
can be made to come up talking, without sighted assistance. There are blind programmers who love Debian, Arch, Knoppix, and Gentoo, for example. Ubuntu
Lucid currently holds a small lead over other main-stream distros in terms of default accessibility on the Gnome desktop, though more experience hackers
often prefer other distros.
Specialized distros for the blind are also available. For beginning computer users, you probably can't beat Knoppix Adrian, which boots into a talking menu.
It can be downloaded from mirrors like the one at
There are other distros for the blind, but Vinux may have the most users at present, available at
Being based on Ubuntu Lucid helps the Vinux community feed improvements they make into a mainstream distro quickly.
Linux has just about every kind of programming environment. There is not, however, a solid and highly integrated IDE like Visual Studio, though progress
is being made on Eclipse accessibility, and other IDEs are also progressing.
Blind programmers on Linux are encouraged to learn to control it through a shell, like bash, which is similar to a Windows command shell, but better. You
can log in from a Windows box and make Linux do just about anything remotely. You can also boot into Linux directly, and control it from the command line
using console readers like Speakup, available at
or Yasr, available at
Shells are highly accessible, through programs like Speakup, and most programming is done directly in shell-based editors. The GNU debugger also works
well in a shell.
Alternatively, you can boot into Gnome, the most popular Linux desktop, and use the Orca screen reader.
Orca works with FireFox, mail, Open Office, and various GUI-based administration utilities. Gnome is fairly accessible, but not as good as Windows or Mac
Check out the Gnome Desktop Accessibility Guide at http://library.gnome.org/users/gnome-access-guide/stable/index.html.en
Many blind programmers prefer the Emacspeak environment, which is a powerful audio desktop built on top of emacs, available at
In Linux, you have many choices, and are free to choose what works best for you. You can also improve any part of the system, and working with open source
communities, you can make them better.
NSIS (Nullsoft Scriptable Install System)
Install Python from
Install the wxPython package for creating accessible GUIs from
For Windows development, install the Python for Windows extensions at
Also install py2exe, a package for building stand-alone executables from
Alternatively, install ActivePython from http://www.activestate.com/activepython/downloads/. ActivePython comes with some Windows extensions and ActiveState's PyPM, which you can use to easily install, upgrade, and remove Python packages and modules.
You can also get Portable Python, from http://www.portablepython.com/. Portable Python is a Python distribution made to be installed for various operating systems that you can take anywhere and use.
In Python, code indentation is syntactically required rather than stylistically optional. The EdSharp editor includes features that help screen reader
users manage indentation efficiently. EdSharp is available at
Install the Java Development Kit (JDK) from
Also there is the Java Access Bridge (JAB), which should be installed for each Java Virtual Machine (JVM) on your computer. A direct download URL for the
Eclipse is an accessible IDE especially tailored for Java development. It is available from
Also there is the Standard Widget Toolkit (SWT), a Java package that produces accessible GUIs on Windows and Linux. SWT comes with Eclipse.
AutoIt is a Visual Basic-like language that is freely available from
In case this helps beginners, here is a list of 36 fruit basket
programs that Jamal did over several years. The programming language and
GUI framework are given for each project, which is contained in a zip
A fruit basket program is intended as a simple but nontrivial graphical user interface (GUI), exhibiting how a developer may employ a particular programming
language and platform, and how a user may experience the result. The length and complexity of code may be considered from a developer standpoint; the accessibility
and performance of the program may be considered from a user standpoint.
Basically, the user interface contains an edit box for entering a fruit name (e.g, apple), a listbox for collecting the fruit (the basket), and buttons
to add or delete items. Obviously, such a program is not inherently useful, but it does offer an informative example of a development approach, with comparisons
possible to other programs meeting the same criteria. Fruit basket samples are available for many development approaches.
Other programs and the fruit basket specification are also
available at http://www.FruitBasketDemos.org
Boo and WinForms
C++ and WinForms
C># and WinForms
C# 3.0 and WinForms
C#, WinForms, and a database of either MS Access or SQLite
C#, WinForms, and a database of MS SQL Server Compact Edition
C++ and wxWidgets
Euphoria and Win32
Flex, Flash Player, and either ActionScript or MSXML
F# and WinForms
IronPython and WinForms
IronRuby and WinForms
Java and SWT
JScript and WinForms
Groovy, Java, JRuby, Jython, or Scala and SWT
Lua and wxWidgets
C# or VB, WinForms, and Multiple Document Interface (MDI)
Nemerle and WinForms
PowerBASIC and Dynamic Dialog Tools
Perl and wxWidgets
Perl.NET and WinForms
PowerShell and WinForms
Python and wxWidgets
Python, wxWidgets, and Layout by Code
Python.NET and WinForms
Ruby and wxWidgets
Ruby.NET and WinForms
Visual Basic and WinForms
Visual Basic, WinForms, and Layout by Code (LbC)
MS Visual J# and WinForms
WinBatch and Dialog Engine
C# or Visual Basic and (WPF)
C# or Visual Basic and wx.NET
A collection of tips has been gathered from blind programming lists, called "Nonvisual Development with .NET," posted at
VS comes in various versions with increasing amounts of developer tools and corresponding costs. The "Express Editions" may be freely downloaded and used,
even in commercial projects. Each Express Edition is oriented to a particular language or platform: C#, Visual Basic, Visual C++, or Visual Web Developer
(for developing web sites with ASP.NET). These are available at
Blind programmers have developed a set of JAWS scripts for Visual Studio (VS), which work with either VS 2005 or VS 2008. They do not work with VS 2010,
which uses Windows Presentation Foundation (WPF) controls rather than Windows Forms controls.
The executable installer for the scripts works with 64-bit Windows and Windows 7, as well as earlier versions of Windows. It is available at
Pick your JAWS version in the installer dialog -- the default is the latest version found on your computer. Otherwise, just press Enter to accept all defaults
of that dialog.
A zip archive is also available for a manual install at
Documentation for the scripts is in the file msenv2005.htm. It gives steps for manual installation. It also includes a list of hotkeys and a tutorial on
developing a fruit basket program with C# and VS.
Sharp Develop is an open source, cross platform IDE for .NET languages, available at
Eclipse is an open source, cross-platform IDE for Java and other languages, available at
A plug in for C# development with Eclipse is called Emonic, available at
C#, Visual Basic, and JScript .NET command-line compilers are part of the .NET Framework 2.0 Software Development Kit (SDK), which is freely available at
Later versions of the .NET Framework include these command-line compilers in the distribution of the Framework, itself. Usually, a shortcut is put on the
Windows Start Menu for opening a command prompt with PATH and other environment variables set so that these tools are found when run. You could also search
your hard disk for the C# compiler, csc.exe, and then add its directory to your search path.