Make number row into symbols row by default

As a programmer I find myself typing symbols a lot more often than I do numbers. So it would be nice if the numbers row on the keyboard produced symbols by default.

The end results should be: 6 would produce ^ and Shift+6 would give 6.

I tried switching to Dvorak for a while but the combination of a steep learning curve and a looming deadline don't make that an attractive solution.

Ideally I'd like to this on Windows as well but let's focus on Debian as it's my main dev machine.

From what I find on the web the "shift lock" feature, activated by rapidly hitting the Shift button does exactly that on Windows, but I couldn't find any *nix reference.

Edit: Ideally the solution shouldn't interfere with non-num row keys such as [ but if it does I can live with it (as { is more common in C than [).


Solution 1:

From your question I understand that you only need certain keys to be working exactly as when Pressing shift and vice versa. For this you can build your own Custom Keyboard Layout. For this you can download Microsoft Keyboard Layout Creator MSKLC and then use it to create custom layout for your system. Also after building the custom layout It should ask you to install the created layout so choose YES to go to that folder where the Installer is and install your custom layout. Also you need to restart your system after Building your custom layout. After this you only Need to activate it from the Control Panel.

Go to (For Windows 8)

  1. Press Windows button + I (To open the Settings Charms menu)
  2. Click on Keyboard button (Lower right corner)
  3. You should see your custom Layout
  4. Select it
  5. And now your Custom layout will be activated

Also For a full tutorial on MSKLC you can get it here and here. See both tuts if any problems occur.

Solution 2:

From the thread Reversing role of pressing shift+number comes this xmodmap file :

keycode  10 = exclam 1 exclam 1
keycode  11 = at 2 at 2
keycode  12 = numbersign 3 numbersign 3
keycode  13 = dollar 4 dollar 4
keycode  14 = percent 5 percent 5
keycode  15 = asciicircum 6 asciicircum 6
keycode  16 = ampersand 7 ampersand 7
keycode  17 = asterisk 8 asterisk 8
keycode  18 = parenleft 9 parenleft 9
keycode  19 = parenright 0 parenright 0

See the above link for more information on using this file.