AutoHotkey Homepage AutoHotkey Community
Let's help each other out
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Half-QWERTY: One-handed Typing
Goto page Previous  1, 2, 3, 4, 5, 6, 7, 8, 9  Next
 
Post new topic   Reply to topic    AutoHotkey Community Forum Index -> Scripts & Functions
View previous topic :: View next topic  
Author Message
Chris
Site Admin


Joined: 02 Mar 2004
Posts: 10667

PostPosted: Thu Mar 31, 2005 8:45 pm    Post subject: Reply with quote

Thanks for clarifying. I'm sure someone could help you do that. If you describe its importance and what you might use it for, that might help attract a volunteer.
Back to top
View user's profile Send private message Send e-mail
Assistive Tech
Guest





PostPosted: Fri Apr 01, 2005 7:39 pm    Post subject: Reason Reply with quote

One of the difficulties of one handed typing is knowing what keys to press. If the user could see the layout reversed when they press the space-bar they would have an easier time hitting the right key.

Assistive Tech
Back to top
jonny



Joined: 13 Nov 2004
Posts: 2952
Location: Minnesota

PostPosted: Sat Apr 02, 2005 3:59 am    Post subject: Reply with quote

I used to actually use this, and my experience was that it was ridiculously easy to remember and use after a few hours. Have you actually tried learning it without visual assistance yet?
Back to top
View user's profile Send private message
shader



Joined: 29 Oct 2004
Posts: 41

PostPosted: Sun Apr 03, 2005 7:12 pm    Post subject: Reply with quote

Great!! The only pros I've encountered are than you cant do Alt hotkeys(to acces menus), they are activated/deactivated at the same time.
Back to top
View user's profile Send private message Send e-mail
Assistive Tech
Guest





PostPosted: Wed Apr 06, 2005 9:48 pm    Post subject: Mouse button / Shift Key Reply with quote

A one hand typist can be very fast if they have enough use of the less able hand to operate the SHIFT key. If they cannot, then they get slowed down. My thought is to have these put the track ball on the floor, and have it be the SHIFT. This was modified from the remapping code.

Assistive Tech

Code:
Menu, TRAY, Tip, MiddleShift
Menu, Tray, NoStandard
Menu, Tray, Add, &About
Menu, Tray, Add
Menu, Tray, Add, &Instructions
Menu, Tray, Add, &Suspend
Menu, Tray, Add
Menu, Tray, Add, &Exit


MsgBox, 4,MiddleShift, Do you want to use the Middle Mouse Button as a Shift key?
IfMsgBox, No
   ExitApp

*MButton:: ; The asterisk makes the remapping more complete on XP/2k/NT.
Send, {Shift down}
KeyWait, MButton ; Wait for the key to be released.
Send, {Shift up}
Return

&About:
MsgBox, ,About, MiddleShift Version 0.9 `nCreated by Joel Turmo`n`nDistrubute as Beerware
Return

&Instructions:
MsgBox, This program was written to provide one-handed keyboarders the ability to press the shift key with their foot.  `n`nIt require a mouse like the Kensington Expert mouse to have one of the buttons reprogrammed to act as a middle mouse button.
Return 

&Suspend:
Suspend
Menu, Tray, ToggleCheck, &Suspend
Return

&Exit:
ExitApp
Back to top
Guest






PostPosted: Tue Apr 19, 2005 5:16 am    Post subject: Reply with quote

This is great stuff. I had modified my Microsoft Keyboard Layout so that all Ctrl + Alt mirrored the keyboard and the shift modifier worked but it screwed with any kind of macros when they had to paste something.

Anyway, I don't think space bar is the way to go. I use a mouse thumb key as ctrl + alt, so I can still use shift and if I let go of it, I don't have to worry about the key entering anything. On the right hand is easier as well because you are not anchored with the left.

The problem I am having with making a script similar to this is that once I have, say the "f" key bound to mirror itself and also shift mirror it self, if I bind anything more to it (such as for making the left hand keys equal a numpad key and arrow and home keys) then the keys won't work when the modifier is held down. It will work the first time but needs a subsequent depress in order to work again, instead of working when held down the whole time.

So, I just made another ahk file and this works great but I would like to consolidate them. What I need is to be able to have at least 4 modifer buttons for the whole left side of the keyboard that will work when depressed, so that I no longer need the right side of the keyboard at all.

Any ideas?
Back to top
Chris
Site Admin


Joined: 02 Mar 2004
Posts: 10667

PostPosted: Wed Apr 20, 2005 9:13 pm    Post subject: Reply with quote

Quote:
if I bind anything more to it (such as for making the left hand keys equal a numpad key and arrow and home keys) then the keys won't work when the modifier is held down. It will work the first time but needs a subsequent depress in order to work again, instead of working when held down the whole time.
Adding the line #InstallKeybdHook to the top of the combined script might fix this, but it's a long shot.

If you can't get it working, I'd probably have to see the complete combined script so that I could experiment with it a little. If you want, you can mail it to support@autohotkey.com
Back to top
View user's profile Send private message Send e-mail
Guest






PostPosted: Sat Apr 23, 2005 12:04 am    Post subject: Reply with quote

Here are the two scripts that I am using with two different EXE's.

The first is the qwerty version. I use my main mouse thumb button bound to Ctrl+Alt so that it works with holding shift as well and I don't have to worry about modifiers and the like.

The second script is the Numpad/Arrow Keys/Everything else. I use the second thumb button (Logitech MX510 Mouse bound to F9) to use homerow as a numpad and the top finger button (bound to F11) for arrow keys etc. I also have it so when you don't press another key with F9 and F11 (again, bound to mouse keys: F10 caused me problems for some reason but the main goal was to use a key my mouse could handle and that wouldn't lay down any typing) it sends Enter and Backspace (most important right hand keys). And you can hold down the thumb and scroll up for a series of Backspaces and scroll down for a series of Returns (nice for editing).

I just started using this program and am not very good at programming but this is working for me and may help some other people to think differently about using the keyboard. I just ordered this keyboard in black:



... and also ordered it so that the usb part comes out of the middle (or rightside of keyboard section) so I don't need the extreme right side (numpad etc.) at all. It was only around $170, much less than the "Half-Keyboard" and I can use the right side when I need it and have the right side right next to the mouse so I don't have to make a 1 foot jump from the right side of my keyboard to the mouse. Using the space-bar as the modifier is really not the way to go in my opinion and the "Half-Keyboard" is commited to this.

I used a program called keytweak to change the capslock key to a numpadenter so that my capslock won't activate ever. This is important for me because I use Dragon NaturallySpeaking and it has a bug that will constantly turn on and off the capslock key when you are editing with it. The capslock key is pretty unuseful anyways and this has saved me a lot of woe. I haven't tried using AutoHotKey to disable the caps in this way as it has allready been done in the registry for now.

Anyways, I tried so many program demos and almost wasted money on products that would not touch what this does. I have been researching this solution for a couple months (off and on) and finally, this result is working greatly. Great program and community! Glad I stumbled upon it finally.

So, here are the scripts. I am still editing them constantly as I go along to find the best placement for every key. If someone can find a solution to using one combined script to do the following that would be cool. It does technically all work together but only for the first key combination pressed. You have to repress all the keys for each key you want to modify, instead of being able to hold down the thumb button and press several keys without having to repress the thumb button each time.

If you can offer any other tips or tricks we could incorporate into this, I would appreciate it. Let's throw some more ideas around. You could also use you right mouse button as a modifier or a foot pedal.

Quote:
!WheelUp::Send,{Left}
!WheelDown::Send,{Right}
^WheelUp::Send,^{Left}
^WheelDown::Send,^{Right}
+WheelUp::Send,+{Left}
+WheelDown::Send,+{Right}
^!WheelUp::Send,{BS}
^!WheelDown::Send,{Enter}
^+WheelUp::Send,^+{Left}
^+WheelDown::Send,^+{Right}
^!+WheelUp::Send,^{Home}
^!+WheelDown::Send,^{End}

^!Tab::Send,{BS}
^!Space::Send,{Enter}

^!`::Send,-
^!1::Send,0
^!2::Send,9
^!3::Send,8
^!4::Send,7
^!5::Send,6
^!q::Send,p
^!w::Send,o
^!e::Send,i
^!r::Send,u
^!t::Send,y
^!a::Send,;
^!s::Send,l
^!d::Send,k
^!f::Send,j
^!g::Send,h
^!z::Send,/l
^!x::Send,.
^!c::Send,,
^!v::Send,m
^!b::Send,n

^!+`::Send,_
^!+1::Send,)
^!+2::Send,(
^!+3::Send,*
^!+4::Send,&
^!+5::Send,^
^!+q::Send,P
^!+w::Send,O
^!+e::Send,I
^!+r::Send,U
^!+t::Send,Y
^!+a::Send,:
^!+s::Send,L
^!+d::Send,K
^!+f::Send,J
^!+g::Send,H
^!+z::Send,?
^!+x::Send,>
^!+c::Send,<
^!+v::Send,M
^!+b::Send,N


Quote:
^!NumpadEnter::Send,'
^!+NumpadEnter::Send,"

F9 & WheelUp::Send,{Up}
F9 & WheelDown::Send,{Down}

F9::Send,{Enter}
F9 & Tab::Send,{Enter}
F9 & Capslock::Send,{Enter}
F9 & Ctrl::Send,{Enter}
F9 & Numpadenter::Send,{Enter}
F9 & Shift::Send,{Enter}

F9 & Alt::Send,.
F9 & Space::Send,0
F9 & w::Send,7
F9 & e::Send,8
F9 & r::Send,9
F9 & s::Send,4
F9 & d::Send,5
F9 & f::Send,6
F9 & x::Send,1
F9 & c::Send,2
F9 & v::Send,3
F9 & q::Send,_
F9 & z::Send,/
F9 & a::Send,{+}
F9 & t::Send,-
F9 & g::Send,=
F9 & b::Send,\

F11::Send,{BS}
F11 & Space::Send,{Enter}
F11 & e::Send,{Up}
F11 & d::Send,{Down}
F11 & s::Send,{Left}
F11 & f::Send,{Right}
F11 & w::Send,^{Left}
F11 & r::Send,^{Right}
F11 & a::Send,^+{Left}
F11 & g::Send,^+{Right}
F11 & z::Send,^z
F11 & x::Send,^x
F11 & c::Send,^c
F11 & v::Send,^v
F11 & t::Send,{End}
F11 & q::Send,{Home}
F11 & b::Send,+{End}
Back to top
Chris
Site Admin


Joined: 02 Mar 2004
Posts: 10667

PostPosted: Sat Apr 23, 2005 1:45 pm    Post subject: Reply with quote

Quote:
I used a program called keytweak to change the capslock key to a numpadenter so that my capslock won't activate ever.
The following should also work in case you evern need an alternative that can re-enable your Capslock key without rebooting:

SetCapslockState, AlwaysOff
Capslock::Send {NumpadEnter}

Quote:
You have to repress all the keys for each key you want to modify, instead of being able to hold down the thumb button and press several keys without having to repress the thumb button each time.
I merged the two scripts and they seem to work without this symptom you described. For example, I can hold down Control+Alt and then type "qwe" and get "poi". However, I'm using the real Ctrl-Alt, not a mouse to simulate it, so maybe there is a difference somehow.

Thanks for posting your scripts, which will hopefully help others with similar goals.
Back to top
View user's profile Send private message Send e-mail
RG



Joined: 09 Feb 2005
Posts: 17
Location: United States

PostPosted: Tue May 31, 2005 3:18 am    Post subject: Great Script! Reply with quote

I'm still tweaking this script: I remapped the following keys for convenience:

Enter key --> Capslock Key
Backspace --> ` key (backquote)
Home --> CTRL+1
End --> CTRL+2
Delete --> CTRL+3

Code:

capslock::
     send,{Return}
     return

`::
     send,{Backspace}
     return

^1::
     send,{Home}
     return

^2::
     send,{End}
     return

^3::
     send,{Del}
     return




Things to do:
#1: I can't decide how to map keys like [ ] - = and \
If you're a programmer or if you use the command line much, these keys are a MUST. But where to put them on the lefthand side?
I suppose ALT+1, ALT+2, etc. might work...
But that means more memorization.

#2: It would be nice to figure out some other key whic was easier to hit than spacebar to flip the keyboard. I like Assistive Tech's idea of a foot switch. But it sounds too hardware-dependent. I also like the idea presented here of holding down mouse button(s) to flip the keyboard.

Overall I love this script. I've been wanting to do something like this for a long time but never got around to it. Thanks for writing a useful piece of code!

My only problem is that if my spacebar is pressed too far on the left side, it sticks and doesn't depress smoothly. I've got a Microsoft (gasp!) Natural Keyboard Pro, so go figure. Smile

Here's the entire script for convenience, with my modifications...
Code:

; Autohotkey.com forum: http://autohotkey.com/forum/viewtopic.php?t=1326
; Many thanks to Chris for helping me out with this script.

; Modified by RG


mirror_1 = 0
mirror_2 = 9
mirror_3 = 8
mirror_4 = 7
mirror_5 = 6
mirror_q = p
mirror_w = o
mirror_e = i
mirror_r = u
mirror_t = y
mirror_a = `;
mirror_s = l
mirror_d = k
mirror_f = j
mirror_g = h
mirror_z = /
mirror_x = .
mirror_c = ,
mirror_v = m
mirror_b = n
mirror_6 = 5
mirror_7 = 4
mirror_8 = 3
mirror_9 = 2
mirror_0 = 1
mirror_y = t
mirror_u = r
mirror_i = e
mirror_o = w
mirror_p = q
mirror_h = g
mirror_j = f
mirror_k = d
mirror_l = s
mirror_n = b
mirror_m = v

return


; This key may help, as the space-on-up may get annoying, especially if you type fast.
Control & Space::Suspend

`::
   Send,{Backspace}
   return

Shift & Space::send,{space}
     
space::
   Send {space}
   return


CapsLock::
   Send,{Return}
   return

space & Capslock::
   Send,{'}
   return

space & +Capslock::
   Send,{"}
   return   

^1::
   Send,{home}
   return

^2::
   Send,{end}
   return

^3::
   Send,{Del}
   return


space & 1::
space & 2::
space & 3::
space & 4::
space & 5::
space & q::
space & w::
space & e::
space & r::
space & t::
space & a::
space & s::
space & d::
space & f::
space & g::
space & z::
space & x::
space & c::
space & v::
space & b::
space & `;::
space & ,::
space & .::
space & /::
space & 6::
space & 7::
space & 8::
space & 9::
space & 0::
space & y::
space & u::
space & i::
space & o::
space & p::
space & h::
space & j::
space & k::
space & l::
space & n::
space & m::


; Determine the mirror key, if there is one:
if A_ThisHotkey = space & `;
   MirrorKey = a
else if A_ThisHotkey = space & ,
   MirrorKey = c
else if A_ThisHotkey = space & .
   MirrorKey = x
else if A_ThisHotkey = space & /
   MirrorKey = z
else  ; To avoid runtime errors due to invalid var names, do this part last.
{
   StringRight, ThisKey, A_ThisHotkey, 1
   StringTrimRight, MirrorKey, mirror_%ThisKey%, 0  ; Retrieve "array" element.
   if MirrorKey =  ; No mirror, script probably needs adjustment.
      return
}

Modifiers =
GetKeyState, state1, LWin
GetKeyState, state2, RWin
state = %state1%%state2%
if state <> UU  ; At least one Windows key is down.
   Modifiers = %Modifiers%#
GetKeyState, state1, Control
if state1 = D
   Modifiers = %Modifiers%^
GetKeyState, state1, Alt
if state1 = D
   Modifiers = %Modifiers%!
GetKeyState, state1, Shift
if state1 = D
   Modifiers = %Modifiers%+
Send %Modifiers%{%MirrorKey%}
return

_________________
RG
Back to top
View user's profile Send private message
RG



Joined: 09 Feb 2005
Posts: 17
Location: United States

PostPosted: Tue May 31, 2005 4:10 pm    Post subject: Problem: the ' key Reply with quote

Here's a problem. I wanted to map the ' character to Capslock. However, if I enter the following, AHK gives an error "Shift & Capslock is not a valid hotkey name..."
Code:

Space & Capslock::send,'
Space & Shift & Capslock::send,"


And if I use the + modifier instead, the ' is never recognized, always " instead:
Code:

Space & Capslock::send,'
Space & +Capslock::send,"

the " is always sent, regardless of whether the SHIFT is depressed or not.

Question Question Question
_________________
RG
Back to top
View user's profile Send private message
jonny



Joined: 13 Nov 2004
Posts: 2952
Location: Minnesota

PostPosted: Tue May 31, 2005 4:28 pm    Post subject: Reply with quote

Hotkeys with two or more non-modifiers are not officially supported yet; you would have to add in the last non-modifier(s) using something like KeyWait or GetKeyState.
Back to top
View user's profile Send private message
Decarlo110



Joined: 15 Dec 2004
Posts: 303
Location: United States

PostPosted: Thu Jun 02, 2005 5:57 am    Post subject: Reply with quote

RG wrote:

I also like the idea presented here of holding down mouse button(s) to flip the keyboard.


Solution:
Code:

; Autohotkey.com forum: http://autohotkey.com/forum/viewtopic.php?t=1326
; Many thanks to Chris for helping me out with this script.

; Modified by RG and Dec

mirror_1 = 0
mirror_2 = 9
mirror_3 = 8
mirror_4 = 7
mirror_5 = 6
mirror_q = p
mirror_w = o
mirror_e = i
mirror_r = u
mirror_t = y
mirror_a = `;
mirror_s = l
mirror_d = k
mirror_f = j
mirror_g = h
mirror_z = /
mirror_x = .
mirror_c = ,
mirror_v = m
mirror_b = n
mirror_6 = 5
mirror_7 = 4
mirror_8 = 3
mirror_9 = 2
mirror_0 = 1
mirror_y = t
mirror_u = r
mirror_i = e
mirror_o = w
mirror_p = q
mirror_h = g
mirror_j = f
mirror_k = d
mirror_l = s
mirror_n = b
mirror_m = v

return


; This key may help, as the space-on-up may get annoying, especially if you type fast.
Control & Space::Suspend

`::
   Send,{Backspace}
   return

Shift & Space::send,{space}
     
space::
   Send {space}
   return

CapsLock::
   Send,{Return}
   return

space & Capslock::
   Send '       ; dont use brackets
   return

+Capslock::
   Send "       ; dont use brackets
   return   

^1::
   Send,{home}
   return

^2::
   Send,{end}
   return

^3::
   Send,{Del}
   return

~LButton::       ; substitute with preferred key throughout
   sleep 200      ; necessary to avoid keywait overlap
   KeyWait, LButton, D t0.4
   If ErrorLevel=0
         State0=D2
   else State0=D1
   KeyWait, LButton
   State0=
   return


1::
2::
3::
4::
5::
q::
w::
e::
r::
t::
a::
s::
d::
f::
g::
z::
x::
c::
v::
b::
`;::
,::
.::
/::
6::
7::
8::
9::
0::
y::
u::
i::
o::
p::
h::
j::
k::
l::
n::
m::

if State0=D1       ; this block is for the primary configuration
{
   ; Determine the mirror key, if there is one:
   if A_ThisHotkey = `;
      MirrorKey = a
   else if A_ThisHotkey = ,
      MirrorKey = c
   else if A_ThisHotkey = .
      MirrorKey = x
   else if A_ThisHotkey = /
      MirrorKey = z
   else  ; To avoid runtime errors due to invalid var names, do this part last.
   {
      StringTrimRight, MirrorKey, mirror_%A_ThisHotkey%, 0  ; Retrieve "array" element.
      if MirrorKey =  ; No mirror, script probably needs adjustment.
         return
   }
}

;else if State0=D2       ; this block is for the secondary configuration
; uncomment this block if assigning a configuration to a double-click-hold
; {
;       [code goes here, parallel to the block above]
; }
; define the MirrorKey2 list for a second keyboard configuration

else return

Modifiers =
GetKeyState, state1, LWin
GetKeyState, state2, RWin
state = %state1%%state2%
if state <> UU  ; At least one Windows key is down.
   Modifiers = %Modifiers%#
GetKeyState, state1, Control
if state1 = D
   Modifiers = %Modifiers%^
GetKeyState, state1, Alt
if state1 = D
   Modifiers = %Modifiers%!
GetKeyState, state1, Shift
if state1 = D
   Modifiers = %Modifiers%+
Send %Modifiers%{%MirrorKey%}
return


RG wrote:

I can't decide how to map keys like [ ] - = and \


Using this modified script frees up the spacebar to modify and re-use any keys of your choice. You could also use the double-click secondary keyboard-config feature as well.
_________________
1) The Open Source Definition http://www.opensource.org/docs/definition_plain.php

2) Intuitive. Logical. Versatile. Adaptable. <<AutoHotkey>>
Back to top
View user's profile Send private message
lcamara



Joined: 20 Jul 2005
Posts: 6
Location: Kaneohe & Honolulu, HI

PostPosted: Wed Jul 20, 2005 11:09 pm    Post subject: typing with Caps Lock on Reply with quote

I want to use this with AutoCAD to type notes in our drawings, so I can keep my right hand on the mouse. It looks promising, but I've come across a significant roadblock:

While one of our clients requires mixed-case text, the industry standard (and our standard) is to use all capital letters. Consequently, we draft with the caps lock on.

I commented out the caps lock line, but when I'm using the space-bar to mirror the keys, I'm only getting lower-case letters. I notice that the Caps Lock light is flickering when I type the mirrored keys.

I tried doing it manually, but discovered that the hotkeys aren't case sensitive (when trying to map shift & A to something different than shift & a, I got an error saying it was already defined).

Any help on this would be appreciated.
_________________
Lionel Camara
KAI Hawaii, Inc. (Structural & Forensic Engineers)
Programmer, IT Guy, & Detailer
Back to top
View user's profile Send private message Visit poster's website
Chris
Site Admin


Joined: 02 Mar 2004
Posts: 10667

PostPosted: Thu Jul 21, 2005 4:18 am    Post subject: Reply with quote

I don't know for sure if it will solve this case, but try putting the following line near the top of the script:

SetStoreCapslockMode off
Back to top
View user's profile Send private message Send e-mail
Display posts from previous:   
Post new topic   Reply to topic    AutoHotkey Community Forum Index -> Scripts & Functions All times are GMT
Goto page Previous  1, 2, 3, 4, 5, 6, 7, 8, 9  Next
Page 2 of 9

 
Jump to:  
You can post new topics in this forum
You can reply to topics in this forum


Powered by phpBB © 2001, 2005 phpBB Group