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
Calibran
Guest





PostPosted: Tue Oct 28, 2008 2:27 pm    Post subject: Capitalize letters after a sec press Reply with quote

I feel kinda lonely on this thread.
My modest line is too modest to work, and is even redundant. Cool start.

aCkRiTe has dug up and pointed this script, thank you aCkRiTe and thank you for the author

Code:


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Capitalize letters after 1 second hold
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

#SingleInstance Force
#Persistent
#NoEnv
SendMode, Input
SetBatchLines, -1

KeyIsDown = 0
UpperDelay = 1000
UpperDelay *= -1
Return

KeyDown(key)
   {
        Global KeyIsDown
        Global LastKey
        If (KeyIsDown < 1 or Key <> LastKey)
           {
                KeyIsDown := True
                LastKey := Key
                Send %Key%
                SetKeyDelay, 65535
                SetTimer, ReplaceWithUpper, %UpperDelay%
           }
        Return
   }

KeyUp(Key)
   {
        Global KeyIsDown
        Global LastKey
        SetTimer, ReplaceWithUpper, Off
        KeyIsDown := False
        Return
   }

ReplaceWithUpper:
SetKeyDelay, -1
Send {Backspace}+%LastKey%
Return

a:: KeyDown("a")
b:: KeyDown("b")
c:: KeyDown("c")
d:: KeyDown("d")
e:: KeyDown("e")
f:: KeyDown("f")
g:: KeyDown("g")
h:: KeyDown("h")
i:: KeyDown("i")
j:: KeyDown("j")
k:: KeyDown("k")
l:: KeyDown("l")
m:: KeyDown("m")
n:: KeyDown("n")
o:: KeyDown("o")
p:: KeyDown("p")
q:: KeyDown("q")
r:: KeyDown("r")
s:: KeyDown("s")
t:: KeyDown("t")
u:: KeyDown("u")
v:: KeyDown("v")
w:: KeyDown("w")
x:: KeyDown("x")
y:: KeyDown("y")
z:: KeyDown("z")

a Up:: KeyUp("a")
b Up:: KeyUp("b")
c Up:: KeyUp("c")
d Up:: KeyUp("d")
e Up:: KeyUp("e")
f Up:: KeyUp("f")
g Up:: KeyUp("g")
h Up:: KeyUp("h")
i Up:: KeyUp("i")
j Up:: KeyUp("j")
k Up:: KeyUp("k")
l Up:: KeyUp("l")
m Up:: KeyUp("m")
n Up:: KeyUp("n")
o Up:: KeyUp("o")
p Up:: KeyUp("p")
q Up:: KeyUp("q")
r Up:: KeyUp("r")
s Up:: KeyUp("s")
t Up:: KeyUp("t")
u Up:: KeyUp("u")
v Up:: KeyUp("v")
w Up:: KeyUp("w")
x Up:: KeyUp("x")
y Up:: KeyUp("y")
z Up:: KeyUp("z")



But I'm at a loss to make it compatible with Markus script.
Any idea please?
Back to top
hugov



Joined: 27 May 2007
Posts: 2477

PostPosted: Fri Oct 31, 2008 1:56 pm    Post subject: Reply with quote

Edit3 - yet another attempt
Code:
#SingleInstance

; HalfKeyboard invented by Matias Corporation between 1992 and 1996
; Originally coded in AutoHotkey by jonny in 2004
; Many thanks to Chris for helping him out with this script.
; Capslock hacks and `~ remap to '" by Watcher
; This implementation was done by mbirth in 2007
;
; mixed with "Capitalize letters after 1 second hold" at request of Calibran
; http://www.autohotkey.com/forum/post-228311.html#228311
; just tested very briefly so try at your own peril :-)

KeyIsDown = 0
UpperDelay = 1000
UpperDelay *= -1

Menu Tray, Icon, HalfKeyboard.ico
Menu Tray, Tip, HalfKeyboard emulator
Menu Tray, Add, E&xit, MenuExit
Menu Tray, NoStandard
FileInstall HK_dn.gif, HalfKeyboard_help.gif

RegRead KLang, HKEY_CURRENT_USER, Keyboard Layout\Preload, 1
StringRight KLang, KLang, 4
If (!KLang)
  KLang := A_Language

If (KLang = "0407") {
  ; 0407 DE_de QWERTZ mirror set
  original := "^12345qwertasdfgyxcvb"
  mirrored := "ß09876poiuzölkjh-.,mn"
} Else If (KLang = "040c" || KLang = "040C") {
  ; 040c FR_fr AZERTY mirror set         
  original := "²&é" . """" . "'(azertqsdfgwxcvb"   ; split up string for better
  mirrored := ")àç" . "_"  . "è-poiuymlkjh!:;,n"   ; human readability
} Else {
  ; 0409 US_us QWERTY mirror set
  original := "``" . "12345qwertasdfgzxcvb"   ; split up string for better
  mirrored := "'"  . "09876poiuy;lkjh/.,mn"   ; human readability
}


; Now define all hotkeys
Loop % StrLen(original)
{
  c1 := SubStr(original, A_Index, 1)
  c2 := SubStr(mirrored, A_Index, 1)
  Hotkey Space & %c1%, DoHotkey
  Hotkey Space & %c2%, DoHotkey
  Hotkey %c1%, KeyDown
 Hotkey %c1% UP, KeyUP
   Hotkey %c2%, KeyDown ; see post by guest below seems to improve the script haven't tried this myself so comment these two lines if it doesn't work
 Hotkey %c2% UP, KeyUP ;

}

return


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

; Not exactly mirror but as close as we can get, Capslock enter, Tab backspace.
Space & CapsLock::Send {Enter}
Space & Tab::Send {Backspace}

; If spacebar didn't modify anything, send a real space keystroke upon release.
+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:
  StartTime := A_TickCount
  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 .= "+"
  }

/*
  KeyWait, %ThisKey%, T1
  Send %Modifiers%{%MirrorKey%}
  If (A_TickCount - StartTime >= 1000)
     {
        StringUpper, MirrorKey, MirrorKey
   Send {Backspace}+%MirrorKey%
*/

If (KeyIsDown < 1 or ThisKey <> LastKey)
          {
               KeyIsDown := True
               LastKey := ThisKey
               Send %Modifiers%{%MirrorKey%}
               SetKeyDelay, 65535
               SetTimer, ReplaceWithUpperMirror, %UpperDelay%
          }

Return

Space & F1::
  ; Help-screen using SplashImage
  CoordMode Caret, Screen
  y := A_CaretY + 20
  If (y > A_ScreenHeight-100)
    y := A_CaretY - 20 - 100
  SplashImage HalfKeyboard_help.gif, B X%A_CaretX% Y%y%
  Sleep 5000
  SplashImage OFF
return

MenuExit:
  ExitApp
Return

KeyDown:
   Key:=A_ThisHotkey
        If (KeyIsDown < 1 or Key <> LastKey)
           {
                KeyIsDown := True
                LastKey := Key
                Send %Key%
                SetKeyDelay, 65535
                SetTimer, ReplaceWithUpper, %UpperDelay%
           }
        Return

KeyUp:
   Key:=A_ThisHotkey
        SetTimer, ReplaceWithUpper, Off
        SetTimer, ReplaceWithUpperMirror, Off
        KeyIsDown := False
        Return

ReplaceWithUpper:
SetKeyDelay, -1
Send {Backspace}+%LastKey%
Return

ReplaceWithUpperMirror:
SetKeyDelay, -1
Send {Backspace}+%MirrorKey%
Return

Edit3a: See post by guest below for
Code:
  Hotkey %c2%, KeyDown
  Hotkey %c2% UP, KeyUP
- tip June 8 2009
_________________
Tut 4 Newbies
TF : Text file & string lib, TF Forum


Last edited by hugov on Mon Jun 08, 2009 7:52 am; edited 5 times in total
Back to top
View user's profile Send private message Visit poster's website
Calibran
Guest





PostPosted: Fri Oct 31, 2008 4:13 pm    Post subject: Auto Upcase Press Reply with quote

Thank you for your work HugoV, this is close to perfection.

It works fine without space bar, but on mirrored upper keys it prints a second letter, in lower case.

I'm no programmer and don't know what to do about it, but I'd sure appreciate any help.
Back to top
hugov



Joined: 27 May 2007
Posts: 2477

PostPosted: Fri Oct 31, 2008 4:55 pm    Post subject: Reply with quote

removed: script didn't perform as desired
_________________
Tut 4 Newbies
TF : Text file & string lib, TF Forum


Last edited by hugov on Tue Nov 04, 2008 11:47 am; edited 1 time in total
Back to top
View user's profile Send private message Visit poster's website
Calibran
Guest





PostPosted: Mon Nov 03, 2008 12:13 am    Post subject: Reply with quote

HugoV, I've tested and re-tested your second edit, but it always doubles the pressed letter on key-up. Works fine on direct instances, but duplicates on mirrored ones.

I'm pretty sure there's an easier way to do it - easier than the long string of remapped keys. By grabbing the key just before being printed, as it's in a variable, it might be possible to put it through an 'if' that's going to test how long it's been pressed, and then capitalize it with something along the line of the mirroring string.

I don't know how to program it, I just got the idea, but I have a hunch the whole capitalization story might hold in a little scripted paragraph.

Let me know if you got any idea...
Back to top
hugov



Joined: 27 May 2007
Posts: 2477

PostPosted: Tue Nov 04, 2008 11:46 am    Post subject: Reply with quote

Bump. Try Edit3 above.
_________________
Tut 4 Newbies
TF : Text file & string lib, TF Forum
Back to top
View user's profile Send private message Visit poster's website
saseith
Guest





PostPosted: Thu Nov 06, 2008 12:48 am    Post subject: Thank You Reply with quote

Thank you very much for posting this great script. I broke my left hand about 4 weeks ago and this has been a lifesaver. I am using Jonny's original version of the script and I can type around 30-40 wpm on this now (though I type more like 80-100 two handed). As a computer science master's student this has been pretty much essential. Thank you again.
Back to top
Calibran
Guest





PostPosted: Sun Nov 09, 2008 1:31 pm    Post subject: Reply with quote

HugoV, I've tested the edit 3 and it does a lot of funny things.
I'm going away for a couple of weeks and I'll draft a proper bug report when I return.
Back to top
Guest2
Guest





PostPosted: Fri Nov 21, 2008 6:21 pm    Post subject: Thank you Reply with quote

just wanted to say thank you for this

I'm using it right now
Back to top
Calibran
Guest





PostPosted: Tue Dec 16, 2008 4:43 am    Post subject: Half Keyb Capitalization Issue Reply with quote

HugoV, sorry was away longer than I thought.
Any way I look at the edit 3 it does not work. It just doesn't. Maybe it's not doable. Ah well, thanks for trying anyway.
Best to you!
Back to top
hugov



Joined: 27 May 2007
Posts: 2477

PostPosted: Tue Dec 16, 2008 5:08 pm    Post subject: Reply with quote

The Odd thing is that I have TYPED
this with edit3 withOUT problems.

Running WinXP, US keyboard/layout.

Sorry it doesn't work for you.
_________________
Tut 4 Newbies
TF : Text file & string lib, TF Forum
Back to top
View user's profile Send private message Visit poster's website
kdoske



Joined: 17 Dec 2008
Posts: 49

PostPosted: Wed Dec 17, 2008 6:14 am    Post subject: Reply with quote

this is really great guys. I am typing one handed at this very moment. Im not really sure what problems you other guys are having but the edit three script works great for me. unfortunately my typing is pretty slow but i can see it getting better pretty quick. I love this and just wanted to say thanks for all the hours put into it.
Back to top
View user's profile Send private message
Calibran
Guest





PostPosted: Sat Dec 20, 2008 3:24 am    Post subject: Reply with quote

Ok so, I probably got a clash between the edit 3 and another script (I got a lot running).
I'm flying away this morning (after a white night, yes), and get back in a month. I'll fix it then. Let you know the outcome.

I'm delighted you got it to work HugoV. I look forward to using it. Thanks a lot for your expertise.
Back to top
drowhunter



Joined: 28 Dec 2008
Posts: 2

PostPosted: Mon Dec 29, 2008 3:31 am    Post subject: Reply with quote

i just stimbled across this thread and thought
how perfect this script is for use with this!

http://www.belkin.com/pressroom/releases/uploads/10_04_07n52te.html
Back to top
View user's profile Send private message
Guest






PostPosted: Mon Jun 08, 2009 12:03 am    Post subject: Reply with quote

edit 3 works better if you add two lines in the loop defining the hotkeys
Code:

  Hotkey %c2%, KeyDown
  Hotkey %c2% UP, KeyUP
Back to top
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 6 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