AutoHotkey Community

It is currently May 26th, 2012, 9:25 pm

All times are UTC [ DST ]




Post new topic Reply to topic  [ 164 posts ]  Go to page Previous  1 ... 4, 5, 6, 7, 8, 9, 10, 11  Next
Author Message
 Post subject:
PostPosted: June 8th, 2009, 7:52 am 
Offline

Joined: May 27th, 2007, 9:41 am
Posts: 4999
Anonymous wrote:
edit 3 works better if you add two lines in the loop defining the hotkeys
Thanks I've added it to the script, otherwise someone might overlook it.

_________________
AHK FAQ
TF : Text files & strings lib, TF Forum


Report this post
Top
 Profile  
Reply with quote  
PostPosted: June 9th, 2009, 3:15 pm 
jonny wrote:
One-handed typing as a theory has been floating around for a long time. In fact, the first prototypes of the mouse were tested while using a one-handed keyboard, which usually mirrors both sides onto one. For more information on one-handed typing and the Half-qwerty layout I used for this, visit this link. There are already programs that do this, but I have yet to find a free one. Of course, if you really like this, you might consider a half-qwerty keyboard, a true half-keyboard, or a more exotic (and more proprietary) Frogpad.

What this script does is it remaps the spacebar to be a modifier. When space is held, the keyboard is inverted, with the line of symmetry between g and h. Thus, e would become i, b would become n, p would become q, and so on. If the spacebar is depressed and released without pressing any other keys, a single space is sent. Modifier keys such as shift or control can be used in conjuction with Half-qwerty.

Code:
; Many thanks to Chris for helping me out with this script.

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

; These keys are optional, but they may help if you are typing on the left-hand side.
CapsLock::Send, {BackSpace}
Space & CapsLock::Send, {Enter}

; If spacebar didn't modify anything, send a real space keystroke upon release.
space::
Send {space}
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


Sorry but I don't quite understand why somebody wouldn't use the easiest one-handed typing system (one finger actually) that is the one that every GSM phone has incorporated. I'm talking about T9 or Predicitive Text who has a really nice algorythm, needs no practice 'cos we all know how to use it and it minimizes the keys that need to be pressed. This reduces not only our muscles fatigue but also for the materials used for the keyboard. We could label our keypad as in cell phones, have the t9 algorythm incorporated via ahk and that's it. You can have a wearable computer running this way now. Am I wrong? What do you think? Great forum btw (I'm a newbe sorry if this wasn't the way to put it)


Report this post
Top
  
Reply with quote  
 Post subject: Two things
PostPosted: June 9th, 2009, 6:36 pm 
Offline

Joined: May 24th, 2009, 1:23 pm
Posts: 89
Location: Bærum, Norway
You're really describing two things:
- The T9 algorithm itself, which basically works like IntelliSense(?), FastFox and probably many other available programs out there. It's probably a good idea for typing text, and for coding too.

- Single-finger input, which is a horrible idea as it leads to fatigue and is slow. Even when using multiple fingers on the pad you'll do a lot of same-finger repeats. The fastest text messagers find themselves beaten in speed contests against morse coders... and morse isn't particularly fast.

We had a discussion at the Colemak forum about the best layout for a mobile phone text pad and I think improvements were made, but it's still a pretty hopeless system. Chorded input can be made a lot faster, but it's hard to learn so most people wouldn't be bothered I guess. Stenographic typists using chorded input can make well over 300 Words Per Minute which is simply amazing. I think that mobile devices should've allowed for chording. A row of modifier buttons along the side of the phone would've been interesting.

_________________
Better burden you cannot carry than man-wisdom much -- Hávamál


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: July 4th, 2009, 4:53 am 
Excellent! Not difficult to pick up at all!


Report this post
Top
  
Reply with quote  
PostPosted: July 24th, 2009, 5:50 pm 
Offline

Joined: July 24th, 2009, 5:39 pm
Posts: 6
Location: New England, USA
Hey guys, this is great. I have a full half-qwerty keyboard on my desktop, but this is a great alternative for my laptop.
However, I can do one big shortcut on my desktop that I cannot figure out with scripting: Alt-enter using the capslock key, to open a new tab in firefox.
I've tried as many permutations as I can think of along these lines:
Alt & CapsLock::send {!enter}

It's really too bad two modifiers w/ space are not allowed, I'd love to
+Space & Tab::del
and other ctrl mods for [, ], \, =
Is this sort of feature planned?

Thanks for your help! Esp. with the CAD mods, LCamera, very helpful.
~C


Report this post
Top
 Profile  
Reply with quote  
PostPosted: July 24th, 2009, 6:14 pm 
Offline

Joined: May 27th, 2007, 9:41 am
Posts: 4999
CovenStine wrote:
Alt-enter using the capslock key, to open a new tab in firefox.
Did you try {alt down}{enter}{alt up} or if it is specifically for Firefox only you can try ^t as control-t will open a new tab as well.

_________________
AHK FAQ
TF : Text files & strings lib, TF Forum


Report this post
Top
 Profile  
Reply with quote  
 Post subject: Awesome!
PostPosted: July 24th, 2009, 7:01 pm 
Offline

Joined: July 24th, 2009, 5:39 pm
Posts: 6
Location: New England, USA
True, ctrl-t opens a new tab, but alt-enter opens the search or address field (whichever the cursor is in) in a new tab, and focuses it.
But, as you probably guessed, I'm no programmer, and your solution works wonderfully, hugo.
Now I need to adjust to using alt and shift to get {,},\ and =
Thanks for such a great resource!
~C


Report this post
Top
 Profile  
Reply with quote  
PostPosted: July 25th, 2009, 6:00 pm 
Offline

Joined: May 24th, 2009, 1:23 pm
Posts: 89
Location: Bærum, Norway
CovenStine wrote:
I've tried as many permutations as I can think of along these lines:
Alt & CapsLock::send {!enter}
+Space & Tab::del


For the first one: I think you should use CapsLock & LAlt for instance, and it's '!{Enter}' not '{!Enter}'.

For the second one: Just check the shift key state and if it isn't down pass the key on. Or get fancy and create a hidden window named 'ShiftIsDown' whenever the Shift key is down, and then create #IfWinExist type hotkeys.

_________________
Better burden you cannot carry than man-wisdom much -- Hávamál


Report this post
Top
 Profile  
Reply with quote  
PostPosted: July 26th, 2009, 12:27 pm 
Hi

I really like this - so started combining it with some other suff I like.

Maybe someone can use my combinations.

Pip

NOTE - I'm only a novice, so don't expect any cool tricks, all I've done is take other peoples' work and mix it together ;)


Code:
#SingleInstance force
SendMode Input
CapsValue = 0
AltValue = 0
CtrlValue = 0
WinValue = 0
HeightofF2 := A_ScreenHeight - 200
XPosOfF2 := 0
   
Menu Tray, Tip, One-handed keyboard
Menu Tray, Add, Instructions, InstructionRoutine
Menu Tray, Add, On Screen Keyboard, OSKRoutine
Menu Tray, Add, Turn on/off, SuspendRoutine
Menu Tray, Add,
;Menu Tray, Add, Original idea, PDFRoutine
Menu Tray, Add,
Menu Tray, Add, E&xit, MenuExit
Menu Tray, NoStandard

original := "``" . "12345qwertasdfgzxcvb"
mirrored := "'"  . "09876poiuy;lkjh/.,mn"
Loop % StrLen(original)
{
  c1 := SubStr(original, A_Index, 1)
  c2 := SubStr(mirrored, A_Index, 1)
  Hotkey Space & %c1%, DoHotkey
  Hotkey Space & %c2%, DoHotkey
}
return

SuspendRoutine:
Suspend
Return

Control & Space::Suspend
Space & CapsLock::Send {Enter}
Space & Tab::Send {Backspace}
Space & {::Send {Tab}
Space & \::Send ?

+Space::Send {Space}
Space::Send {Space}
 
; Define special key combos here (took them from RG's mod):
^1::Send {Home}
^2::Send {End}
^3::Send {Del}

; General purpose
DoHotkey:
  StringRight ThisKey, A_ThisHotkey, 1
  i1 := InStr(original, ThisKey)
  i2 := InStr(mirrored, ThisKey)
  If (i1+i2 = 0) {
    MirrorKey := ThisKey
  } Else If (i1 > 0) {
    MirrorKey := SubStr(mirrored, i1, 1)
  } Else {
    MirrorKey := SubStr(original, i2, 1)
  }
 
  Modifiers := ""
  If (GetKeyState("LWin") || GetKeyState("RWin")) {
    Modifiers .= "#"
  }
  If (GetKeyState("Control")) {
    Modifiers .= "^"
  }
  If (GetKeyState("Alt")) {
    Modifiers .= "!"
  }
  If (GetKeyState("Shift") + GetKeyState("CapsLock", "T") = 1) {
    ; only add if Shift is held OR CapsLock is on (XOR) (both held down would result in value of 2)
    Modifiers .= "+"
  }
  Send %Modifiers%{%MirrorKey%}
return

;PDFRoutine:
;FileInstall, Half-keyboard-InfoSheet.pdf, Half-keyboard-InfoSheet.pdf
;IfExist Half-keyboard-InfoSheet.pdf
;   Run, Half-keyboard-InfoSheet.pdf, , Max
;Return


Space & F1::
Sleep 100
IfWinExist, SPACE and F1 to TOGGLE ON/OFF
   Gui 7: Destroy
Else
{
Gui 7: Destroy
Gui 7: font, s8
Gui 7: +LastFound +AlwaysOnTop ;+ToolWindow
Gui 7: Color, White
;WinSet, TransColor, White 230
Gui 7:Add, GroupBox, x11 y0 w10 h20 , -
Gui 7:Add, Button, x10 y15 w20 h20 gSendApost1, ``
Gui 7:Add, GroupBox, x31 y0 w10 h20 , 0
Gui 7:Add, Button, x30 y15 w20 h20 gSend1, 1
Gui 7:Add, GroupBox, x51 y0 w10 h20 , 9
Gui 7:Add, Button, x50 y15 w20 h20 gSend2, 2
Gui 7:Add, GroupBox, x71 y0 w10 h20 , 8
Gui 7:Add, Button, x70 y15 w20 h20 gSend3, 3
Gui 7:Add, GroupBox, x91 y0 w10 h20 , 7
Gui 7:Add, Button, x90 y15 w20 h20 gSend4, 4
Gui 7:Add, GroupBox, x111 y0 w10 h20 , 6
Gui 7:Add, Button, x110 y15 w20 h20 gSend5, 5

Gui 7:Add, GroupBox, x151 y0 w10 h20 , 5
Gui 7:Add, Button, x150 y15 w20 h20 gSend6, 6
Gui 7:Add, GroupBox, x171 y0 w10 h20 , 4
Gui 7:Add, Button, x170 y15 w20 h20 gSend7, 7
Gui 7:Add, GroupBox, x191 y0 w10 h20 , 3
Gui 7:Add, Button, x190 y15 w20 h20 gSend8, 8
Gui 7:Add, GroupBox, x211 y0 w10 h20 , 2
Gui 7:Add, Button, x210 y15 w20 h20 gSend9, 9
Gui 7:Add, GroupBox, x231 y0 w10 h20 , 1
Gui 7:Add, Button, x230 y15 w20 h20 gSend0, 0
Gui 7:Add, Button, x250 y15 w20 h20 gSendMinus, -
Gui 7:Add, Button, x270 y15 w20 h20 gSendEquals, =
Gui 7:Add, Button, x290 y15 w30 h20 gSendBS, <-

Gui 7:Add, GroupBox, x11 y35 w10 h20 , <-
Gui 7:Add, Button, x10 y50 w30 h20 gSendTab, ->
Gui 7:Add, GroupBox, x41 y35 w10 h20 , P
Gui 7:Add, Button, x40 y50 w20 h20 gSendQ, Q
Gui 7:Add, GroupBox, x61 y35 w10 h20 , O
Gui 7:Add, Button, x60 y50 w20 h20 gSendW, W
Gui 7:Add, GroupBox, x81 y35 w10 h20 , I
Gui 7:Add, Button, x80 y50 w20 h20 gSendE, E
Gui 7:Add, GroupBox, x101 y35 w10 h20 , U
Gui 7:Add, Button, x100 y50 w20 h20 gSendR, R
Gui 7:Add, GroupBox, x121 y35 w10 h20 , Y
Gui 7:Add, Button, x120 y50 w20 h20 gSendT, T

Gui 7:Add, GroupBox, x161 y35 w10 h20 , T
Gui 7:Add, Button, x160 y50 w20 h20 gSendY, Y
Gui 7:Add, GroupBox, x181 y35 w10 h20 , R
Gui 7:Add, Button, x180 y50 w20 h20 gSendU, U
Gui 7:Add, GroupBox, x201 y35 w10 h20 , E
Gui 7:Add, Button, x200 y50 w20 h20 gSendI, I
Gui 7:Add, GroupBox, x221 y35 w10 h20 , W
Gui 7:Add, Button, x220 y50 w20 h20 gSendO, O
Gui 7:Add, GroupBox, x241 y35 w10 h20 , Q
Gui 7:Add, Button, x240 y50 w20 h20 gSendP, P
Gui 7:Add, GroupBox, x261 y35 w10 h20 , ->
Gui 7:Add, Button, x260 y50 w20 h20 gSendOpSqrBracket, [
Gui 7:Add, Button, x280 y50 w20 h20 gSendClSqrBracket, ]
Gui 7:Add, Button, x300 y50 w20 h30 gSendReturn, <|

Gui 7:Add, GroupBox, x11 y70 w10 h20 , Ent
Gui 7:Add, Button, x10 y85 w40 h20 gSendShift, CAPS
Gui 7:Add, GroupBox, x51 y70 w10 h20 , `;
Gui 7:Add, Button, x50 y85 w20 h20 gSendA, A
Gui 7:Add, GroupBox, x71 y70 w10 h20 , L
Gui 7:Add, Button, x70 y85 w20 h20 gSendS, S
Gui 7:Add, GroupBox, x91 y70 w10 h20 , K
Gui 7:Add, Button, x90 y85 w20 h20 gSendD, D
Gui 7:Add, GroupBox, x111 y70 w10 h20 , J
Gui 7:Add, Button, x110 y85 w20 h20 gSendF, F
Gui 7:Add, GroupBox, x131 y70 w10 h20 , H
Gui 7:Add, Button, x130 y85 w20 h20 gSendG, G

Gui 7:Add, GroupBox, x171 y70 w10 h20 , G
Gui 7:Add, Button, x170 y85 w20 h20 gSendH, H
Gui 7:Add, GroupBox, x191 y70 w10 h20 , F
Gui 7:Add, Button, x190 y85 w20 h20 gSendJ, J
Gui 7:Add, GroupBox, x211 y70 w10 h20 , D
Gui 7:Add, Button, x210 y85 w20 h20 gSendK, K
Gui 7:Add, GroupBox, x231 y70 w10 h20 , S
Gui 7:Add, Button, x230 y85 w20 h20 gSendL, L
Gui 7:Add, GroupBox, x251 y70 w10 h20 , A
Gui 7:Add, Button, x250 y85 w20 h20 gSendSemi, `;
Gui 7:Add, GroupBox, x271 y70 w10 h20 , ``
Gui 7:Add, Button, x270 y85 w20 h20 gSendApos2, `'
Gui 7:Add, Button, x290 y85 w20 h20 gSendAsh, #

Gui 7:Add, Button, x10 y120 w30 h20 gSendShift, Shift
Gui 7:Add, GroupBox, x41 y105 w10 h20 , ?
Gui 7:Add, Button, x40 y120 w20 h20 gSendBackSlash, \
Gui 7:Add, GroupBox, x61 y105 w10 h20 , /
Gui 7:Add, Button, x60 y120 w20 h20 gSendZ, Z
Gui 7:Add, GroupBox, x81 y105 w10 h20 , .
Gui 7:Add, Button, x80 y120 w20 h20 gSendX, X
Gui 7:Add, GroupBox, x101 y105 w10 h20 , `,
Gui 7:Add, Button, x100 y120 w20 h20 gSendC, C
Gui 7:Add, GroupBox, x121 y105 w10 h20 , M
Gui 7:Add, Button, x120 y120 w20 h20 gSendV, V
Gui 7:Add, GroupBox, x141 y105 w10 h20 , N
Gui 7:Add, Button, x140 y120 w20 h20 gSendB, B
Gui 7:Add, GroupBox, x181 y105 w10 h20 , B
Gui 7:Add, Button, x180 y120 w20 h20 gSendN, N
Gui 7:Add, GroupBox, x201 y105 w10 h20 , V
Gui 7:Add, Button, x200 y120 w20 h20 gSendM, M
Gui 7:Add, GroupBox, x221 y105 w10 h20 , C
Gui 7:Add, Button, x220 y120 w20 h20 gSendComma, ,
Gui 7:Add, GroupBox, x241 y105 w10 h20 , X
Gui 7:Add, Button, x240 y120 w20 h20 gSendFullStop, .
Gui 7:Add, GroupBox, x261 y105 w10 h20 , Z
Gui 7:Add, Button, x260 y120 w20 h20 gSendForwardSlash, /
Gui 7:Add, Button, x280 y120 w40 h20 gSendShift, Shift

HeightofF1 := A_ScreenHeight - 195
Gui 7:Show, x0 y%HeightofF1% h145 w330 NoActivate, SPACE and F1 to TOGGLE ON/OFF
}
Return



Space & F2::
OSKRoutine:
Sleep 100
IfWinExist, SPACE and F2 to TOGGLE ON/OFF
   Gui 7: Destroy
Else
{
Gui 7: Destroy
Gui 7: +LastFound +AlwaysOnTop ;+ToolWindow
Gui 7: font, s8
Gui 7: Color, White
;WinSet, TransColor, White 230
Gui 7:Add, Button, x10 y10 w30 h20 gSendEsc, Esc
Gui 7:Add, Button, x45 y10 w20 h20 gSendF1, F1
Gui 7:Add, Button, x65 y10 w20 h20 gSendF2, F2
Gui 7:Add, Button, x85 y10 w20 h20 gSendF3, F3
Gui 7:Add, Button, x105 y10 w20 h20 gSendF4, F4
Gui 7:Add, Button, x125 y10 w20 h20 gSendF5, F5
Gui 7:Add, Button, x145 y10 w20 h20 gSendF6, F6
Gui 7:Add, Button, x165 y10 w20 h20 gSendF7, F7
Gui 7:Add, Button, x185 y10 w20 h20 gSendF8, F8
Gui 7:Add, Button, x205 y10 w20 h20 gSendF9, F9
Gui 7:Add, Button, x225 y10 w26 h20 gSendF10, F10
Gui 7:Add, Button, x251 y10 w26 h20 gSendF11, F11
Gui 7:Add, Button, x277 y10 w26 h20 gSendF12, F12

Gui 7:Add, Button, x10 y40 w20 h20 gSendApost1, ``
Gui 7:Add, Button, x30 y40 w20 h20 gSend1, 1
Gui 7:Add, Button, x50 y40 w20 h20 gSend2, 2
Gui 7:Add, Button, x70 y40 w20 h20 gSend3, 3
Gui 7:Add, Button, x90 y40 w20 h20 gSend4, 4
Gui 7:Add, Button, x110 y40 w20 h20 gSend5, 5
Gui 7:Add, Button, x130 y40 w20 h20 gSend6, 6
Gui 7:Add, Button, x150 y40 w20 h20 gSend7, 7
Gui 7:Add, Button, x170 y40 w20 h20 gSend8, 8
Gui 7:Add, Button, x190 y40 w20 h20 gSend9, 9
Gui 7:Add, Button, x210 y40 w20 h20 gSend0, 0
Gui 7:Add, Button, x230 y40 w20 h20 gSendMinus, -
Gui 7:Add, Button, x250 y40 w20 h20 gSendEquals, =
Gui 7:Add, Button, x270 y40 w30 h20 gSendBS, <-
Gui 7:Add, Button, x10 y60 w30 h20 gSendTab, |->
Gui 7:Add, Button, x40 y60 w20 h20 gSendQ, q
Gui 7:Add, Button, x60 y60 w20 h20 gSendW, w
Gui 7:Add, Button, x80 y60 w20 h20 gSendE, e
Gui 7:Add, Button, x100 y60 w20 h20 gSendR, r
Gui 7:Add, Button, x120 y60 w20 h20 gSendT, t
Gui 7:Add, Button, x140 y60 w20 h20 gSendY, y
Gui 7:Add, Button, x160 y60 w20 h20 gSendU, u
Gui 7:Add, Button, x180 y60 w20 h20 gSendI, i
Gui 7:Add, Button, x200 y60 w20 h20 gSendO, o
Gui 7:Add, Button, x220 y60 w20 h20 gSendP, p
Gui 7:Add, Button, x240 y60 w20 h20 gSendOpSqrBracket, [
Gui 7:Add, Button, x260 y60 w20 h20 gSendClSqrBracket, ]
Gui 7:Add, Button, x280 y60 w20 h20 gSendReturn, <|
Gui 7:Add, Button, x10 y80 w40 h20 gSendChangeShift, CAPS ;Using as shift
Gui 7:Add, Button, x50 y80 w20 h20 gSendA, a
Gui 7:Add, Button, x70 y80 w20 h20 gSendS, s
Gui 7:Add, Button, x90 y80 w20 h20 gSendD, d
Gui 7:Add, Button, x110 y80 w20 h20 gSendF, f
Gui 7:Add, Button, x130 y80 w20 h20 gSendG, g
Gui 7:Add, Button, x150 y80 w20 h20 gSendH, h
Gui 7:Add, Button, x170 y80 w20 h20 gSendJ, j
Gui 7:Add, Button, x190 y80 w20 h20 gSendK, k
Gui 7:Add, Button, x210 y80 w20 h20 gSendL, l
Gui 7:Add, Button, x230 y80 w20 h20 gSendSemi, `;
Gui 7:Add, Button, x250 y80 w20 h20 gSendApos2, '
Gui 7:Add, Button, x270 y80 w20 h20 gSendAsh, #
Gui 7:Add, Button, x10 y100 w30 h20 gSendChangeShift, Shift
Gui 7:Add, Button, x40 y100 w20 h20 gSendBackSlash, \
Gui 7:Add, Button, x60 y100 w20 h20 gSendZ, z
Gui 7:Add, Button, x80 y100 w20 h20 gSendX, x
Gui 7:Add, Button, x100 y100 w20 h20 gSendC, c
Gui 7:Add, Button, x120 y100 w20 h20 gSendV, v
Gui 7:Add, Button, x140 y100 w20 h20 gSendB, b
Gui 7:Add, Button, x160 y100 w20 h20 gSendN, n
Gui 7:Add, Button, x180 y100 w20 h20 gSendM, m
Gui 7:Add, Button, x200 y100 w20 h20 gSendComma, `,
Gui 7:Add, Button, x220 y100 w20 h20 gSendFullStop, .
Gui 7:Add, Button, x240 y100 w20 h20 gSendForwardSlash, /
Gui 7:Add, Button, x260 y100 w40 h20 gSendShift, Shift

Gui 7:Add, Button, x10 y120 w30 h20 gSendChangeCtrl, Ctrl
Gui 7:Add, Button, x40 y120 w30 h20 gSendLWin, Win
Gui 7:Add, Button, x70 y120 w30 h20 gSendChangeAlt, Text
Gui 7:Add, Button, x100 y120 w75 h20 gSendSpace, SPACE
Gui 7:Add, Button, x175 y120 w30 h20 gSendRAlt, Alt
Gui 7:Add, Button, x205 y120 w30 h20 gSendRWin, Win
Gui 7:Add, Button, x235 y120 w35 h20 gSendApps, Apps
Gui 7:Add, Button, x270 y120 w30 h20 gSendRCtrl, Ctrl

Gui 7:Add, Button, x310 y40 w35 h20 gSendIns, Ins
Gui 7:Add, Button, x345 y40 w37 h20 gSendHome, Home
Gui 7:Add, Button, x382 y40 w35 h20 gSendPUp, P-Up
Gui 7:Add, Button, x310 y60 w35 h20 gSendDel, Del
Gui 7:Add, Button, x345 y60 w37 h20 gSendEnd, End
Gui 7:Add, Button, x382 y60 w35 h20 gSendPDown, P-Do

Gui 7:Add, Button, x325 y80 w36 h20 gSendCopy, Copy
Gui 7:Add, Button, x361 y80 w36 h20 gSendPaste, Paste

Gui 7:Add, Button, x345 y100 w37 h20 gSendUp, Up
Gui 7:Add, Button, x310 y120 w35 h20 gSendLeft, Left
Gui 7:Add, Button, x345 y120 w37 h20 gSendDown, Down
Gui 7:Add, Button, x382 y120 w35 h20 gSendRight, Right

Gui 7:Add, Button, x310 y10 w35 h20 gSendPrScr, PrScr
Gui 7:Add, Button, x345 y10 w35 h20 gSendScroll, Scroll
Gui 7:Add, Button, x380 y10 w38 h20 gSendPause, Pause

Gui 7:Show, x%XPosOfF2% y%HeightofF2% h150 w428 NoActivate, SPACE and F2 to TOGGLE ON/OFF
}
Return

InstructionRoutine:
Msgbox Hold SPACE to use reflected keyboard`nSPACE & F1 = Show corresponding keys`n`nAdditional keys (for left hand):`nCTRL & 1 = HOME`nCTRL & 2 = END`nCTRL & 3 = DELETE `n`nSPACE and F2 = On-screen keyboard`n`nCTRL & SPACE = TURN ON/OFF`n`nSticky Keys (On-screen Keyboard):`nALT, CTRL, SHIFT and WIN`nClick RIGHT HAND version`nLEFT HAND version = additional keyboards
Return

MenuExit:
  ExitApp
return

SendApost1:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "``")
Return

Send1:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "1")
Return

Send2:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "2")
Return

Send3:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "3")
Return

Send4:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "4")
Return

Send5:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "5")
Return

Send6:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "6")
Return

Send7:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "7")
Return

Send8:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "8")
Return

Send9:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "9")
Return

Send0:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "0")
Return

SendMinus:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "-")
Return

SendEquals:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "=")
Return

SendBS:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "{BS}")
Return

SendTab:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "{Tab}")
Return

SendQ:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "q")
Return

SendW:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "w")
Return

SendE:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "e")
Return

SendR:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "r")
Return

SendT:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "t")
Return

SendY:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "y")
Return

SendU:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "u")
Return

SendI:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "i")
Return

SendO:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "o")
Return

SendP:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "p")
Return

SendOpSqrBracket:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "[")
Return

SendClSqrBracket:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "]")
Return

SendReturn:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "{Enter}")
Return

SendCaps:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "{CapsLock}")
Return

SendA:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "a")
Return

SendS:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "s")
Return

SendD:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "d")
Return

SendF:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "f")
Return

SendG:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "g")
Return

SendH:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "h")
Return

SendJ:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "j")
Return

SendK:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "k")
Return

SendL:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "l")
Return

SendSemi:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "`;")
Return

SendApos2:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "'")
Return

;;;;;;;;;;
;;;;;;;;;;
;PROBLEM WITH ASH
;;;;;;;;;;
;;;;;;;;;;
SendAsh:
send !{Esc}
sendRaw, #
;SendValue(CapsValue, AltValue, CtrlValue, WinValue, "#")
Return

SendShift:
CapsValue := !CapsValue
TraytipInformation(AltValue, CtrlValue, CapsValue, WinValue)
Return

SendBackSlash:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "\")
Return

SendZ:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "z")
Return

SendX:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "x")
Return

SendC:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "c")
Return

SendV:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "v")
Return

SendB:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "b")
Return

SendN:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "n")
Return

SendM:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "m")
Return

SendComma:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, ",")
Return

SendFullStop:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, ".")
Return

SendForwardSlash:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "/")
Return

SendEsc:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "{Esc}")
Return

SendF1:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "{F1}")
Return

SendF2:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "{F2}")
Return

SendF3:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "{F3}")
Return

SendF4:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "{F4}")
Return

SendF5:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "{F5}")
Return

SendF6:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "{F6}")
Return

SendF7:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "{F7}")
Return

SendF8:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "{F8}")
Return

SendF9:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "{F9}")
Return

SendF10:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "{F10}")
Return

SendF11:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "{F11}")
Return

SendF12:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "{F12}")
Return

SendRCtrl:
CtrlValue := !CtrlValue
TraytipInformation(AltValue, CtrlValue, CapsValue, WinValue)
Return

SendRWin:
WinValue := !WinValue
TraytipInformation(AltValue, CtrlValue, CapsValue, WinValue)
Return

SendRAlt:
AltValue := !AltValue
TraytipInformation(AltValue, CtrlValue, CapsValue, WinValue)
Return

SendSpace:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "{space}")
Return

SendLAlt:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "{RAlt}")
Return

SendLWin:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "{RWin}")
Return

SendApps:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "{AppsKey}")
Return

SendIns:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "{Ins}")
Return

SendHome:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "{Home}")
Return

SendPUp:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "{PgUp}")
Return

SendDel:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "{Del}")
Return

SendEnd:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "{End}")
Return

SendPDown:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "{PgDn}")
Return

SendUp:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "{Up}")
Return

SendLeft:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "{Left}")
Return

SendRight:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "{Right}")
Return

SendDown:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "{Down}")
Return

SendPrScr:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "{PrintScreen}")
Return

SendScroll:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "{Scroll}")
Return

SendPause:
SendValue(CapsValue, AltValue, CtrlValue, WinValue, "{Pause}")
Return


;;;;;;;;;;;;
;;;;;;;;;;;;
;;Caps
;;;;;;;;;;;;
;;;;;;;;;;;;
SendCAPApost1:
SendValue(1, AltValue, CtrlValue, WinValue, "``")
Return

SendCAP1:
SendValue(1, AltValue, CtrlValue, WinValue, "1")
Return

SendCAP2:
SendValue(1, AltValue, CtrlValue, WinValue, "2")
Return

SendCAP3:
SendValue(1, AltValue, CtrlValue, WinValue, "3")
Return

SendCAP4:
SendValue(1, AltValue, CtrlValue, WinValue, "4")
Return

SendCAP5:
SendValue(1, AltValue, CtrlValue, WinValue, "5")
Return

SendCAP6:
SendValue(1, AltValue, CtrlValue, WinValue, "6")
Return

SendCAP7:
SendValue(1, AltValue, CtrlValue, WinValue, "7")
Return

SendCAP8:
SendValue(1, AltValue, CtrlValue, WinValue, "8")
Return

SendCAP9:
SendValue(1, AltValue, CtrlValue, WinValue, "9")
Return

SendCAP0:
SendValue(1, AltValue, CtrlValue, WinValue, "0")
Return

SendCAPMinus:
SendValue(1, AltValue, CtrlValue, WinValue, "-")
Return

SendCAPTab:
SendValue(1, AltValue, CtrlValue, WinValue, "{Tab}")
Return

SendCAPEquals:
SendValue(1, AltValue, CtrlValue, WinValue, "=")
Return

SendCAPQ:
SendValue(1, AltValue, CtrlValue, WinValue, "q")
Return

SendCAPW:
SendValue(1, AltValue, CtrlValue, WinValue, "w")
Return

SendCAPE:
SendValue(1, AltValue, CtrlValue, WinValue, "e")
Return

SendCAPR:
SendValue(1, AltValue, CtrlValue, WinValue, "r")
Return

SendCAPT:
SendValue(1, AltValue, CtrlValue, WinValue, "t")
Return

SendCAPY:
SendValue(1, AltValue, CtrlValue, WinValue, "y")
Return

SendCAPU:
SendValue(1, AltValue, CtrlValue, WinValue, "u")
Return

SendCAPI:
SendValue(1, AltValue, CtrlValue, WinValue, "i")
Return

SendCAPO:
SendValue(1, AltValue, CtrlValue, WinValue, "o")
Return

SendCAPP:
SendValue(1, AltValue, CtrlValue, WinValue, "p")
Return

SendCAPOpSqrBracket:
SendValue(1, AltValue, CtrlValue, WinValue, "[")
Return

SendCAPClSqrBracket:
SendValue(1, AltValue, CtrlValue, WinValue, "]")
Return

SendCAPA:
SendValue(1, AltValue, CtrlValue, WinValue, "a")
Return

SendCAPletterS:
SendValue(1, AltValue, CtrlValue, WinValue, "s")
Return

SendCAPD:
SendValue(1, AltValue, CtrlValue, WinValue, "d")
Return

SendCAPF:
SendValue(1, AltValue, CtrlValue, WinValue, "f")
Return

SendCAPG:
SendValue(1, AltValue, CtrlValue, WinValue, "g")
Return

SendCAPH:
SendValue(1, AltValue, CtrlValue, WinValue, "h")
Return

SendCAPJ:
SendValue(1, AltValue, CtrlValue, WinValue, "j")
Return

SendCAPK:
SendValue(1, AltValue, CtrlValue, WinValue, "k")
Return

SendCAPL:
SendValue(1, AltValue, CtrlValue, WinValue, "l")
Return

SendCAPSemi:
SendValue(1, AltValue, CtrlValue, WinValue, "`;")
Return

SendCAPApos2:
SendValue(1, AltValue, CtrlValue, WinValue, "'")
Return

SendCAPAsh:
SendValue(1, AltValue, CtrlValue, WinValue, "~")
Return

SendCAPBackSlash:
SendValue(1, AltValue, CtrlValue, WinValue, "\")
Return

SendCAPZ:
SendValue(1, AltValue, CtrlValue, WinValue, "z")
Return

SendCAPX:
SendValue(1, AltValue, CtrlValue, WinValue, "x")
Return

SendCAPC:
SendValue(1, AltValue, CtrlValue, WinValue, "c")
Return

SendCAPV:
SendValue(1, AltValue, CtrlValue, WinValue, "v")
Return

SendCAPB:
SendValue(1, AltValue, CtrlValue, WinValue, "b")
Return

SendCAPN:
SendValue(1, AltValue, CtrlValue, WinValue, "n")
Return

SendCAPM:
SendValue(1, AltValue, CtrlValue, WinValue, "m")
Return

SendCAPComma:
SendValue(1, AltValue, CtrlValue, WinValue, ",")
Return

SendCAPFullStop:
SendValue(1, AltValue, CtrlValue, WinValue, ".")
Return

SendCAPForwardSlash:
SendValue(1, AltValue, CtrlValue, WinValue, "/")
Return

SendCAPChangeShift:
WinGetPos, XPosOfF2, HeightofF2, , ,A
Goto, OSKRoutine
Return



;;;;;;;;;
;Special keyboard shortcuts
;;;;;;;;;
SendSelectAll:
SendValue(0, 0, 1, 0, "a")
Return

SendCut:
SendValue(0, 0, 1, 0, "x")
Return

SendCopy:
SendValue(0, 0, 1, 0, "c")
Return

SendPaste:
SendValue(0, 0, 1, 0, "v")
Return

SendUndo:
SendValue(0, 0, 1, 0, "z")
Return

SendRedo:
SendValue(0, 0, 1, 0, "y")
Return

SendCtrlF:
SendValue(0, 0, 1, 0, "f")
Return

SendCtrlR:
SendValue(0, 0, 1, 0, "r")
Return

SendCtrlG:
SendValue(0, 0, 1, 0, "g")
Return

SendCtrlH:
SendValue(0, 0, 1, 0, "h")
Return

SendCtrlW:
SendValue(0, 0, 1, 0, "w")
Return

SendCtrlS:
SendValue(0, 0, 1, 0, "s")
Return

SendCtrlO:
SendValue(0, 0, 1, 0, "o")
Return

SendCtrlP:
SendValue(0, 0, 1, 0, "p")
Return

SendCtrlN:
SendValue(0, 0, 1, 0, "n")
Return

SendCtrlL:
SendValue(0, 0, 1, 0, "l")
Return

SendCtrlI:
SendValue(0, 0, 1, 0, "i")
Return

SendCtrlE:
SendValue(0, 0, 1, 0, "e")
Return

SendCtrlB:
SendValue(0, 0, 1, 0, "b")
Return

Sendhttp:
SendValue(0, 0, 0, 0, "http://www.")
Return

SendBecause:
SendValue(0, 0, 0, 0, "because ")
Return

SendISpace:
SendValue(0, 0, 0, 0, "I ")
Return

SendYou:
SendValue(0, 0, 0, 0, "you ")
Return

SendIt:
SendValue(0, 0, 0, 0, "it ")
Return

SendThe:
SendValue(0, 0, 0, 0, "the ")
Return

SendOf:
SendValue(0, 0, 0, 0, "of ")
Return

SendTo:
SendValue(0, 0, 0, 0, "to ")
Return

SendAnd:
SendValue(0, 0, 0, 0, "and ")
Return

SendASpace:
SendValue(0, 0, 0, 0, "a ")
Return

SendIs:
SendValue(0, 0, 0, 0, "is ")
Return

SendIn:
SendValue(0, 0, 0, 0, "in ")
Return

SendSchool:
SendValue(0, 0, 0, 0, "school ")
Return

SendCollege:
SendValue(0, 0, 0, 0, "College ")
Return

SendLearn:
SendValue(0, 0, 0, 0, "learn ")
Return

SendTeach:
SendValue(0, 0, 0, 0, "teach ")
Return

SendTeacher:
SendValue(0, 0, 0, 0, "teacher ")
Return

SendLook:
SendValue(0, 0, 0, 0, "look ")
Return

SendListen:
SendValue(0, 0, 0, 0, "listen ")
Return

SendWatch:
SendValue(0, 0, 0, 0, "watch ")
Return

SendNotice:
SendValue(0, 0, 0, 0, "notice ")
Return

SendObserve:
SendValue(0, 0, 0, 0, "observe ")
Return

SendAccelerate:
SendValue(0, 0, 0, 0, "accelerate ")
Return

SendAppropriate:
SendValue(0, 0, 0, 0, "appropriate ")
Return

SendAppreciate:
SendValue(0, 0, 0, 0, "appreciate ")
Return

SendInformation:
SendValue(0, 0, 0, 0, "information ")
Return

SendIntervention:
SendValue(0, 0, 0, 0, "intervention ")
Return


CapitiliseHighlighted:
ClipSaved := ClipboardAll
Send, !{Esc}
Sleep 100
Send, ^c
Sleep 100
StringUpper, Clipboard, Clipboard
Sleep 100
Send, ^v
Sleep 100
Clipboard := ClipSaved
Return

;;;;;;;;;;
;;;;;;;;;;
;CTRL
;;;;;;;;;;
SendChangeShift:
WinGetPos, XPosOfF2, HeightofF2, , ,A
Gui 7: Destroy
Gui 7: +LastFound +AlwaysOnTop ;+ToolWindow
Gui 7: font, s8
Gui 7: Color, White
;WinSet, TransColor, White 230
Gui 7:Add, Button, x10 y10 w30 h20 gSendEsc, Esc
Gui 7:Add, Button, x45 y10 w20 h20 gSendF1, F1
Gui 7:Add, Button, x65 y10 w20 h20 gSendF2, F2
Gui 7:Add, Button, x85 y10 w20 h20 gSendF3, F3
Gui 7:Add, Button, x105 y10 w20 h20 gSendF4, F4
Gui 7:Add, Button, x125 y10 w20 h20 gSendF5, F5
Gui 7:Add, Button, x145 y10 w20 h20 gSendF6, F6
Gui 7:Add, Button, x165 y10 w20 h20 gSendF7, F7
Gui 7:Add, Button, x185 y10 w20 h20 gSendF8, F8
Gui 7:Add, Button, x205 y10 w20 h20 gSendF9, F9
Gui 7:Add, Button, x225 y10 w26 h20 gSendF10, F10
Gui 7:Add, Button, x251 y10 w26 h20 gSendF11, F11
Gui 7:Add, Button, x277 y10 w26 h20 gSendF12, F12

Gui 7:Add, Button, x10 y40 w20 h20 gSendCAPApost1, ¬
Gui 7:Add, Button, x30 y40 w20 h20 gSendCAP1, !
Gui 7:Add, Button, x50 y40 w20 h20 gSendCAP2, `"
Gui 7:Add, Button, x70 y40 w20 h20 gSendCAP3, £
Gui 7:Add, Button, x90 y40 w20 h20 gSendCAP4, $
Gui 7:Add, Button, x110 y40 w20 h20 gSendCAP5, `%
Gui 7:Add, Button, x130 y40 w20 h20 gSendCAP6, ^
Gui 7:Add, Button, x150 y40 w20 h20 gSendCAP7, &&
Gui 7:Add, Button, x170 y40 w20 h20 gSendCAP8, *
Gui 7:Add, Button, x190 y40 w20 h20 gSendCAP9, (
Gui 7:Add, Button, x210 y40 w20 h20 gSendCAP0, )
Gui 7:Add, Button, x230 y40 w20 h20 gSendCAPMinus, _
Gui 7:Add, Button, x250 y40 w20 h20 gSendCAPEquals, +
Gui 7:Add, Button, x270 y40 w30 h20 gSendBS, <-
Gui 7:Add, Button, x10 y60 w30 h20 gSendTab, |->
Gui 7:Add, Button, x40 y60 w20 h20 gSendCAPQ, Q
Gui 7:Add, Button, x60 y60 w20 h20 gSendCAPW, W
Gui 7:Add, Button, x80 y60 w20 h20 gSendCAPE, E
Gui 7:Add, Button, x100 y60 w20 h20 gSendCAPR, R
Gui 7:Add, Button, x120 y60 w20 h20 gSendCAPT, T
Gui 7:Add, Button, x140 y60 w20 h20 gSendCAPY, Y
Gui 7:Add, Button, x160 y60 w20 h20 gSendCAPU, U
Gui 7:Add, Button, x180 y60 w20 h20 gSendCAPI, I
Gui 7:Add, Button, x200 y60 w20 h20 gSendCAPO, O
Gui 7:Add, Button, x220 y60 w20 h20 gSendCAPP, P
Gui 7:Add, Button, x240 y60 w20 h20 gSendCAPOpSqrBracket, {
Gui 7:Add, Button, x260 y60 w20 h20 gSendCAPClSqrBracket, }
Gui 7:Add, Button, x280 y60 w20 h20 gSendReturn, <|
Gui 7:Add, Button, x10 y80 w40 h20 gSendCAPTab, <-|
Gui 7:Add, Button, x50 y80 w20 h20 gSendCAPA, A
Gui 7:Add, Button, x70 y80 w20 h20 gSendCAPletterS, S
Gui 7:Add, Button, x90 y80 w20 h20 gSendCAPD, D
Gui 7:Add, Button, x110 y80 w20 h20 gSendCAPF, F
Gui 7:Add, Button, x130 y80 w20 h20 gSendCAPG, G
Gui 7:Add, Button, x150 y80 w20 h20 gSendCAPH, H
Gui 7:Add, Button, x170 y80 w20 h20 gSendCAPJ, J
Gui 7:Add, Button, x190 y80 w20 h20 gSendCAPK, K
Gui 7:Add, Button, x210 y80 w20 h20 gSendCAPL, L
Gui 7:Add, Button, x230 y80 w20 h20 gSendCAPSemi, :
Gui 7:Add, Button, x250 y80 w20 h20 gSendCAPApos2, @
Gui 7:Add, Button, x270 y80 w20 h20 gSendCAPAsh, ~
Gui 7:Add, Button, x10 y100 w30 h20 gSendCAPChangeShift, Shift
Gui 7:Add, Button, x40 y100 w20 h20 gSendCAPBackSlash, |
Gui 7:Add, Button, x60 y100 w20 h20 gSendCAPZ, Z
Gui 7:Add, Button, x80 y100 w20 h20 gSendCAPX, X
Gui 7:Add, Button, x100 y100 w20 h20 gSendCAPC, C
Gui 7:Add, Button, x120 y100 w20 h20 gSendCAPV, V
Gui 7:Add, Button, x140 y100 w20 h20 gSendCAPB, B
Gui 7:Add, Button, x160 y100 w20 h20 gSendCAPN, N
Gui 7:Add, Button, x180 y100 w20 h20 gSendCAPM, M
Gui 7:Add, Button, x200 y100 w20 h20 gSendCAPComma, <
Gui 7:Add, Button, x220 y100 w20 h20 gSendCAPFullStop, >
Gui 7:Add, Button, x240 y100 w20 h20 gSendCAPForwardSlash, ?
Gui 7:Add, Button, x260 y100 w40 h20 gSendShift, Shift

Gui 7:Add, Button, x10 y120 w30 h20 gSendChangeCtrl, Ctrl
Gui 7:Add, Button, x40 y120 w30 h20 gSendLWin, Win
Gui 7:Add, Button, x70 y120 w30 h20 gSendChangeAlt, Text
Gui 7:Add, Button, x100 y120 w75 h20 gSendSpace, SPACE
Gui 7:Add, Button, x175 y120 w30 h20 gSendRAlt, Alt
Gui 7:Add, Button, x205 y120 w30 h20 gSendRWin, Win
Gui 7:Add, Button, x235 y120 w35 h20 gSendApps, Apps
Gui 7:Add, Button, x270 y120 w30 h20 gSendRCtrl, Ctrl

Gui 7:Add, Button, x310 y40 w35 h20 gSendIns, Ins
Gui 7:Add, Button, x345 y40 w37 h20 gSendHome, Home
Gui 7:Add, Button, x382 y40 w35 h20 gSendPUp, P-Up
Gui 7:Add, Button, x310 y60 w35 h20 gSendDel, Del
Gui 7:Add, Button, x345 y60 w37 h20 gSendEnd, End
Gui 7:Add, Button, x382 y60 w35 h20 gSendPDown, P-Do

Gui 7:Add, Button, x325 y80 w36 h20 gSendCopy, Copy
Gui 7:Add, Button, x361 y80 w36 h20 gSendPaste, Paste

Gui 7:Add, Button, x345 y100 w37 h20 gSendUp, Up
Gui 7:Add, Button, x310 y120 w35 h20 gSendLeft, Left
Gui 7:Add, Button, x345 y120 w37 h20 gSendDown, Down
Gui 7:Add, Button, x382 y120 w35 h20 gSendRight, Right

Gui 7:Add, Button, x310 y10 w35 h20 gSendPrScr, PrScr
Gui 7:Add, Button, x345 y10 w35 h20 gSendScroll, Scroll
Gui 7:Add, Button, x380 y10 w38 h20 gSendPause, Pause


Gui 7:Add, Text, cRed x310 y104 w35 h15 Center, SHIFT
Gui 7:Add, Text, cRed x382 y104 w35 h15 Center, MODE
Gui 7:Show, x%XPosOfF2% y%HeightofF2% h150 w428 NoActivate, SHIFT PRESSED - Click LEFT SHIFT to return to normal mode
Return

SendChangeCtrl:
WinGetPos, XPosOfF2, HeightofF2, , ,A
Gui 7: Destroy
Gui 7: +LastFound +AlwaysOnTop ;+ToolWindow
Gui 7: font, s8
Gui 7: Color, White
Gui 7:Add, Button, x10 y10 w130 h20 gSendEscapeShift, Return to normal mode

Gui 7:Add, Button, x10 y40 w90 h20 gSendSelectAll, Ctrl+A (Select all)
Gui 7:Add, Button, x10 y70 w90 h20 gSendCut, Ctrl+X (Cut)
Gui 7:Add, Button, x10 y90 w90 h20 gSendCopy, Ctrl+C (Copy)
Gui 7:Add, Button, x10 y110 w90 h20 gSendPaste, Ctrl+V (Paste)
Gui 7:Add, Button, x110 y40 w90 h20 gSendUndo, Ctrl+Z (Undo)
Gui 7:Add, Button, x110 y60 w90 h20 gSendRedo, Ctrl+Y (Redo)

;Gui 7:Add, Button, x110 y80 w90 h60 gSendCTRLDOWN, CTRL and Keyboard
Gui 7:Add, Button, x110 y100 w30 h20 gSendBS, <-
Gui 7:Add, Button, x140 y100 w60 h20 gSendReturn, Return
Gui 7:Add, Button, x110 y120 w90 h20 gSendSpace, SPACE

Gui 7:Add, Button, x210 y40 w50 h20 gSendCtrlF, Ctrl+F
Gui 7:Add, Button, x210 y60 w50 h20 gSendCtrlR, Ctrl+R
Gui 7:Add, Button, x210 y80 w50 h20 gSendCtrlG, Ctrl+G
Gui 7:Add, Button, x210 y100 w50 h20 gSendCtrlH, Ctrl+H
Gui 7:Add, Button, x210 y120 w50 h20 gSendCtrlW, Ctrl+W

Gui 7:Add, Button, x270 y40 w50 h20 gSendCtrlS, Ctrl+S
Gui 7:Add, Button, x270 y60 w50 h20 gSendCtrlO, Ctrl+O
Gui 7:Add, Button, x270 y80 w50 h20 gSendCtrlP, Ctrl+P
Gui 7:Add, Button, x270 y100 w50 h20 gSendCtrlN, Ctrl+N

Gui 7:Add, Button, x330 y40 w50 h20 gSendCtrlL, Ctrl+L
Gui 7:Add, Button, x330 y60 w50 h20 gSendCtrlI, Ctrl+I
Gui 7:Add, Button, x330 y80 w50 h20 gSendCtrlE, Ctrl+E
Gui 7:Add, Button, x330 y100 w50 h20 gSendCtrlB, Ctrl+B



Gui 7:Add, Text, cRed x160 y14 w200 h15 Center, LEFT CTRL MODE = Useful combinations
Gui 7:Show, x%XPosOfF2% y%HeightofF2% h150 w428 NoActivate, CTRL PRESSED - Click "Return to normal mode" to return to normal mode
Return

SendChangeAlt:
WinGetPos, XPosOfF2, HeightofF2, , ,A
Gui 7: Destroy
Gui 7: +LastFound +AlwaysOnTop ;+ToolWindow
Gui 7: font, s8
Gui 7: Color, White
Gui 7:Add, Button, x10 y10 w130 h20 gSendEscapeShift, Return to normal mode
Gui 7:Add, Text, cRed x160 y14 w200 h15 Center, LEFT ALT MODE = Key words

Gui 7:Add, Button, x10 y40 w70 h20 gSendhttp, http://www.
Gui 7:Add, Button, x10 y60 w50 h20 gSendBecause, because
Gui 7:Add, Button, x60 y60 w20 h20 gSendASpace, a
Gui 7:Add, Button, x10 y80 w20 h20 gSendISpace, I
Gui 7:Add, Button, x30 y80 w30 h20 gSendYou, you
Gui 7:Add, Button, x60 y80 w20 h20 gSendIt, it

Gui 7:Add, Button, x10 y100 w30 h20 gSendThe, the
Gui 7:Add, Button, x40 y100 w20 h20 gSendTo, to
Gui 7:Add, Button, x60 y100 w20 h20 gSendIn, in
Gui 7:Add, Button, x10 y120 w30 h20 gSendAnd, and
Gui 7:Add, Button, x40 y120 w20 h20 gSendOf, of
Gui 7:Add, Button, x60 y120 w20 h20 gSendIs, is

Gui 7:Add, Button, x90 y40 w50 h20 gSendSchool, school
Gui 7:Add, Button, x90 y60 w50 h20 gSendCollege, College
Gui 7:Add, Button, x90 y80 w50 h20 gSendLearn, learn
Gui 7:Add, Button, x90 y100 w50 h20 gSendTeach, teach
Gui 7:Add, Button, x90 y120 w50 h20 gSendTeacher, teacher

Gui 7:Add, Button, x150 y40 w50 h20 gSendLook, look
Gui 7:Add, Button, x150 y60 w50 h20 gSendListen, listen
Gui 7:Add, Button, x150 y80 w50 h20 gSendWatch, watch
Gui 7:Add, Button, x150 y100 w50 h20 gSendNotice, notice
Gui 7:Add, Button, x150 y120 w50 h20 gSendObserve, observe

Gui 7:Add, Button, x210 y40 w105 h20 gSendAccelerate, accelerate
Gui 7:Add, Button, x210 y60 w105 h20 gSendAppropriate, appropriate
Gui 7:Add, Button, x210 y80 w105 h20 gSendAppreciate, appreciate
Gui 7:Add, Button, x210 y100 w105 h20 gSendInformation, information
Gui 7:Add, Button, x210 y120 w105 h20 gSendIntervention, intervention

Gui 7:Add, Button, x325 y30 w30 h20 gSendBS, <-
Gui 7:Add, Button, x355 y30 w65 h20 gSendReturn, Return
Gui 7:Add, Button, x325 y50 w95 h20 gSendSpace, SPACE
Gui 7:Add, Button, x325 y80 w25 h20 gSendCut, Cut
Gui 7:Add, Button, x350 y80 w33 h20 gSendCopy, Copy
Gui 7:Add, Button, x383 y80 w37 h20 gSendPaste, Paste

Gui 7:Add, Button, x325 y110 w95 h30 gCapitiliseHighlighted, Capitalise Highlighed

Gui 7:Show, x%XPosOfF2% y%HeightofF2% h150 w428 NoActivate, Key Words - Click "Return to normal mode" to return to normal mode
Return

SendEscapeShift:
WinGetPos, XPosOfF2, HeightofF2, , ,A
Gui 7: Destroy
Goto, OSKRoutine
Return


SendValue(Caps, Alt, Ctrl, Win, Key)
{
Extra =
If Caps = 1
   Extra = +
If Alt = 1
   Extra = %Extra%!
If Ctrl = 1
   Extra = %Extra%^
If Win = 1
   Extra = %Extra%#

Send !{Esc} ;01 activate the previously active window
Send, %Extra%%Key%

CapsValue := 0
AltValue := 0
CtrlValue := 0
WinValue := 0
Caps = 0
Alt = 0
Ctrl = 0
Win = 0
}

TraytipInformation(AltValue, CtrlValue, CapsValue, WinValue)
{
TrayTip, StickyKey, AltKey CtrlKey Shift and WindowsKey are all down, , 1

If (AltValue = 1 && CtrlValue = 1 && CapsValue = 1 && WinValue = 0)
TrayTip, StickyKey, AltKey CtrlKey and Shift are down, , 1
If (AltValue = 1 && CtrlValue = 1 && CapsValue = 0 && WinValue = 1)
TrayTip, StickyKey, AltKey CtrlKey and WindowsKey are down, , 1
If (AltValue = 1 && CtrlValue = 0 && CapsValue = 1 && WinValue = 1)
TrayTip, StickyKey, AltKey Shift and WindowsKey are down, , 1
If (AltValue = 0 && CtrlValue = 1 && CapsValue = 1 && WinValue = 1)
TrayTip, StickyKey, CtrlKey Shift and WindowsKey are down, , 1

If (AltValue = 1 && CtrlValue = 1 && CapsValue = 0 && WinValue = 0)
TrayTip, StickyKey, AltKey and CtrlKey are down, , 1
If (AltValue = 1 && CtrlValue = 0 && CapsValue = 1 && WinValue = 0)
TrayTip, StickyKey, AltKey and Shift are down, , 1
If (AltValue = 0 && CtrlValue = 1 && CapsValue = 1 && WinValue = 0)
TrayTip, StickyKey, CtrlKey and Shift are down, , 1
If (AltValue = 1 && CtrlValue = 0 && CapsValue = 0 && WinValue = 1)
TrayTip, StickyKey, AltKey and WindowsKey are down, , 1
If (AltValue = 0 && CtrlValue = 1 && CapsValue = 0 && WinValue = 1)
TrayTip, StickyKey, CtrlKey and WindowsKey are down, , 1
If (AltValue = 0 && CtrlValue = 0 && CapsValue = 1 && WinValue = 1)
TrayTip, StickyKey, Shift and WindowsKey are down, , 1

If (AltValue = 1 && CtrlValue = 0 && CapsValue = 0 && WinValue = 0)
TrayTip, StickyKey, AltKey is down, , 1
If (AltValue = 0 && CtrlValue = 1 && CapsValue = 0 && WinValue = 0)
TrayTip, StickyKey, CtrlKey is down, , 1
If (AltValue = 0 && CtrlValue = 0 && CapsValue = 1 && WinValue = 0)
TrayTip, StickyKey, Shift is down, , 1
If (AltValue = 0 && CtrlValue = 0 && CapsValue = 0 && WinValue = 1)
TrayTip, StickyKey, WindowsKey is down, , 1

If (AltValue = 0 && CtrlValue = 0 && CapsValue = 0 && WinValue = 0)
TrayTip, StickyKey, Sickykeys are clear, , 1
}


Report this post
Top
  
Reply with quote  
 Post subject:
PostPosted: July 27th, 2009, 9:46 am 
Offline

Joined: May 24th, 2009, 1:23 pm
Posts: 89
Location: Bærum, Norway
Pip: To make that work for another keyboard layout such as Colemak, would you just have to change the 'original' and 'mirrored' variables, or is there something else in that program that might cause trouble?

Ah yes, you've not made it layout independent at all. Images and whatnot will be messed up. Too bad - for me. :)

I've been thinking about mirrored keyboarding in general, and I think that Colemak is a very suitable layout for it! While QWERTY isn't optimized for much of anything, Colemak is optimized for hand rolls which I think could work well with mirrored typing. I'd like to try it out a bit. Dvorak is a very good layout for two-handed typing but I fear the focus on hand alternation might lead to same-finger repeats if used for mirrored typing. Those are the worst.

Of course, August Dvorak cleverly designed separate right- and left-handed Dvorak 1-hand layouts in addition to the 2-hand one. But if mirrored typing works well, that'd be a much simpler way of learning a 1-hand typing method!

_________________
Better burden you cannot carry than man-wisdom much -- Hávamál


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: July 27th, 2009, 7:34 pm 
Offline

Joined: July 6th, 2009, 9:58 pm
Posts: 678
Looks awesome, I love the ideas, I immediately had a few for this,

I would love to see this where when you hold the modifier key it pops up the half-keyboard keymap (just the left side of the keyboard with the mirror keys on it), then when you hit a letter that letter is highlighted. Then when you release the modifier the GUI is hidden.

I think it would be 1000x easier to learn if you could see the keymap whenever you go to hit a letter.


Report this post
Top
 Profile  
Reply with quote  
 Post subject: Space and F1
PostPosted: July 28th, 2009, 1:02 am 
Did you try:

SPACE and F1

This shows the keyboard - with the "other hand" keys above it.

Not entirely what you asked for - but it is how I learned the key mapping
[btw - this also works as an OSK if you click it]

Pip


Report this post
Top
  
Reply with quote  
 Post subject: Space + Shift
PostPosted: August 3rd, 2009, 8:02 pm 
Offline

Joined: July 24th, 2009, 5:39 pm
Posts: 6
Location: New England, USA
Another bug-esque comment:
Space and shift. If you're holding shift (say, typing an acronym), and go to press a mirrored key you get a space and no shiftstate.
Example: Typing "I was KIA" turns into "I was DEA"
This can wreak havoc by causing a bunch of spaces if you do it right, too. (it can allow the spacebar to repeat)
Thoughts?


Report this post
Top
 Profile  
Reply with quote  
 Post subject: Worked fine for me
PostPosted: August 3rd, 2009, 10:08 pm 
Hi

This worked fine for me (hold down SPACE first):

Using the left hand...
Hold down SPACE and press SHIFT and E - to get I
Type "was" normally

Hold down SPACE and press:
SHIFT and D, then SHIFT and E

Let go of SPACE and press SHIFT and A normally to get:
KIA

Using the right hand...
Type "I" normally

Hold down SPACE and press O;l to get: was

Type "KI" normally - then hold down SPACE and press SHIFT and ; to get A

I could type "I was KIA" easily with either hand

Pip


Report this post
Top
  
Reply with quote  
 Post subject: Sure
PostPosted: August 4th, 2009, 12:30 pm 
Offline

Joined: July 24th, 2009, 5:39 pm
Posts: 6
Location: New England, USA
Oh sure, it CAN be done, but it's anything but natural, especially if you are someone who was a touch typist, and has lost the use of one hand... like myself.
I guess if I have to stop and think about it, it's not efficient, and when I get ' E' instead of 'I' as I've done three times typing this... you get the idea.


Report this post
Top
 Profile  
Reply with quote  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 164 posts ]  Go to page Previous  1 ... 4, 5, 6, 7, 8, 9, 10, 11  Next

All times are UTC [ DST ]


Who is online

Users browsing this forum: MSN [Bot] and 14 guests


You can post new topics in this forum
You can reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Powered by phpBB® Forum Software © phpBB Group