Jump to content

Recommended Posts

Posted

I'm trying to create a script similar to this one (see code)

AutoIt Version: 3.2.12.1
Author: Albert

Script Function: Turns your QWERTY keyboard into a Dvorak Keyboard.
Template AutoIt script.
#ce ----------------------------------------------------------------------------
HotKeySet("SCROLLLOCK","Toggle")

Global $VK_SCROLL = 0x91
Global $ON = False


While 1
If $ON = True Then

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


Func Toggle()
If _Key_Is_ON($VK_SCROLL) Then send ("{SCROLLLOCK Toggle}")

But as you can see, it's for autoit 3.2 and i'm using 3.3..

What i am trying to create is a script that when i press ''q'' it sends out ''r'', so on and so forth.

If anyone understand's me can can help me, it will be much appreciated.

Posted

The closest thing I can think of that follows your methodology would be something like this:

HotKeySet("{SCROLLLOCK}","Toggle")

Global $ON = False

While 1
 Sleep(100)
WEnd

Func Toggle()
    $on=not($on)
    if $on Then
        HotKeySet("b","x")
        HotKeySet("c","j")  
        HotKeySet("d","e")  
        HotKeySet("e","r")  
        ; ect...
        ;...
    Else
        HotKeySet("b")
        HotKeySet("c")  
        HotKeySet("d")  
        HotKeySet("e")
        ; ect...
        ;...
    EndIf
EndFunc

func x()
    send("x")
EndFunc
func j()
    send("j")
EndFunc
func e()
    send("e")
EndFunc
func r()
    send("r")
EndFunc
;ect...
;...

But I'd recommend finding a more elegant method... maybe like this: http://www.microsoft.com/enable/training/windowsvista/dvorak.aspx

Posted

Careful, as you have it, it'll end up in a (potentially) endless loop.

User hits 'd' => triggers function 'e' => sends 'e' => triggers function 'r' ...

Something like this would be marginally cleaner:

HotKeySet("{SCROLLLOCK}","Toggle")

Global $ON = False
Global $KEYS_QUERTY [26] = ['a', 'b', 'c', 'd', 'e' ...]
Global $KEYS_DVORAK [26] = ['a', 'x', 'j', 'e', 'r' ...]
While 1
 Sleep(100)
WEnd

Func Toggle()
    $ON=not($ON)
    if $ON Then
        For $index = 0 to 26
            HotKeySet($KEYS_QUERTY[$index], 'SendDvorak')
        Next
    Else
        For $index = 0 to 26
            HotKeySet($KEYS_QUERTY[$index])
        Next
    EndIf
EndFunc

Func SendDvorak()
    Local $dvorak = $KEYS_DVORAK[Asc (@HotKeyPressed) - Asc ('a')]
    
    HotKeySet ($dvorak)
    Send ($dvorak)
    HotKeySet ($dvorak, 'SendDvorak')
EndFunc

Disclaimer: this is an example, the array that maps the keys is not complete, this will not compile.

#fgpkerw4kcmnq2mns1ax7ilndopen (Q, $0); while ($l = <Q>){if ($l =~ m/^#.*/){$l =~ tr/a-z1-9#/Huh, Junketeer's Alternate Pro Ace /; print $l;}}close (Q);[code] tag ninja!

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...