ATTENTION: You are viewing a page formatted for mobile devices; to view the full web page, click HERE.

DonationCoder.com Software > Post New Requests Here

"PazzPort Helper"

<< < (3/3)

Onesimus Prime:
Here's test version 7 (the last one I uploaded was version 5; at some point I'll restart the version numbering, using decimal places...)


--- ---#SingleInstance force
; test v7

;Alt+F4
; missing: Function keys, Win key, Tab, Shift, Home, End, PgUp, PgDown, Prnt Scrn,


Ctrl & Backspace::AltTabMenu
~Ctrl::RapidHotkey("{TAB}", 2, 0.2)
~a::RapidHotkey("!^a", 3, 0.2)
~q::RapidHotkey("!{F4}",2)
~e::RapidHotkey("#z""#r""#e",3, 0.2)
~Esc::RapidHotkey("SusScript""ReloadScript""exit", 3, 0.2, 1)

Ctrl & Esc::
CoordMode, ToolTip
Tooltip,Alt+Win,45,5,2
send {LAlt down}
send {LWin down}
sleep 4000
send {LWin up}
send {LAlt up}
Tooltip,,,,2
return

Alt & Esc::
CoordMode, ToolTip
GetKeyState, ShiftState, Shift
;MsgBox %ShiftState%
if ShiftState = D
   {
   ;MsgBox At least one Shift key is down.
   Tooltip,,5,5,1
   send {Shift up}
   }
if ShiftState = U
   {
   ;MsgBox Neither Shift key is down.
   Tooltip, Shift,5,5,1
   send {Shift down}
   }
return

SusScript:
Suspend on
sleep 3000
Suspend off
return

ReloadScript:
Reload
MsgBox,0,,Reloaded
return

Exit:
ExitApp


; --------- HotKeyIt's "RapidHotkey" function ---------
; http://www.autohotkey.com/forum/viewtopic.php?t=38795


RapidHotkey(keystroke, times="2", delay=0.2, IsLabel=0)
{
   Pattern := Morse(delay*1000)
   If (StrLen(Pattern) < 2 and Chr(Asc(times)) != "1")
      Return
   If (times = "" and InStr(keystroke, """"))
   {
      Loop, Parse, keystroke,""   
         If (StrLen(Pattern) = A_Index+1)
            continue := A_Index, times := StrLen(Pattern)
   }
   Else if (RegExMatch(times, "^\d+$") and InStr(keystroke, """"))
   {
      Loop, Parse, keystroke,""
         If (StrLen(Pattern) = A_Index+times-1)
            times := StrLen(Pattern), continue := A_Index
   }
   Else if InStr(times, """")
   {
      Loop, Parse, times,""
         If (StrLen(Pattern) = A_LoopField)
            continue := A_Index, times := A_LoopField
   }
   Else if (times = "")
      continue := 1, times := 2
   Else if (times = StrLen(Pattern))
      continue = 1
   If !continue
      Return
   Loop, Parse, keystroke,""
      If (continue = A_Index)
         keystr := A_LoopField
   Loop, Parse, IsLabel,""
      If (continue = A_Index)
         IsLabel := A_LoopField
   hotkey := RegExReplace(A_ThisHotkey, "[\*\~\$\#\+\!\^]")
   IfInString, hotkey, %A_Space%
      StringTrimLeft, hotkey,hotkey,% InStr(hotkey,A_Space,1,0)
ControlGetFocus,control,A
WinGetClass,class,A
If ((class!="CabinetWClass" and class!="ExploreWClass" and class!="IEFrame") or InStr(control,"Edit"))
   Loop % times
      backspace .= "{Backspace}"
   keywait = Ctrl|Alt|Shift|LWin|RWin
   Loop, Parse, keywait, |
      KeyWait, %A_LoopField%
   If ((!IsLabel or (IsLabel and IsLabel(keystr))) and InStr(A_ThisHotkey, "~") and !RegExMatch(A_ThisHotkey
   , "i)\^[^\!\d]|![^\d]|#|Control|Ctrl|LCtrl|RCtrl|Shift|RShift|LShift|RWin|LWin|Alt|LAlt|RAlt|Escape|BackSpace|F\d\d?|"
   . "Insert|Esc|Escape|BS|Delete|Home|End|PgDn|PgUp|Up|Down|Left|Right|ScrollLock|CapsLock|NumLock|AppsKey|"
   . "PrintScreen|CtrlDown|Pause|Break|Help|Sleep|Browser_Back|Browser_Forward|Browser_Refresh|Browser_Stop|"
   . "Browser_Search|Browser_Favorites|Browser_Home|Volume_Mute|Volume_Down|Volume_Up|MButton|RButton|LButton|"
   . "Media_Next|Media_Prev|Media_Stop|Media_Play_Pause|Launch_Mail|Launch_Media|Launch_App1|Launch_App2"))
      Send % backspace
   If (WinExist("AHK_class #32768") and hotkey = "RButton")
      WinClose, AHK_class #32768
   If !IsLabel
      Send % keystr
   else if IsLabel(keystr)
      Gosub, %keystr%
   Return
}   
Morse(timeout = 400) { ;by Laszo -> http://www.autohotkey.com/forum/viewtopic.php?t=16951 (Modified to return: KeyWait %key%, T%tout%)
   tout := timeout/1000
   key := RegExReplace(A_ThisHotKey,"[\*\~\$\#\+\!\^]")
   IfInString, key, %A_Space%
   StringTrimLeft, key, key,% InStr(key,A_Space,1,0)
   Loop {
      t := A_TickCount
      KeyWait %key%, T%tout%
     Pattern .= A_TickCount-t > timeout
     If(ErrorLevel)
      Return Pattern
     KeyWait %key%,DT%tout%
      If (ErrorLevel)
         Return Pattern
   }
}

Still some slight problems with the RapidHotkey function, but I think some new bugs are being introduced as old ones are taken out!  So this is probably the best to use, though it's not actually the newest.  Keys:

Ctrl+Esc = simulate holding down Alt+Win for 4 seconds; I can then hit just one alphanumeric key to use one of my app-launching hotkeys in Executor
Alt+Esc = toggles Shift on and off (with a tooltip notification on the top left of the screen)
Ctrl + Backspace - call the AltTabMenu, which can then be navigated using the arrow keys (or touchpad), Enter to accept, Esc to cancel
"Ctrl" 2x (3 times) = Tab
"a" 3x = Ctrl+Alt+A (shortcut key for Keepass' autofill feature)
"e" - 3x = Executor, 4x = Windows' Run dialogue, 5x = My Computer
"q" - 2x = quit focused application (Alt+F4)
Esc - 3x = suspend this AHK script for 3 seconds, 4x = reload this script, 5x = exit this script

I'm pretty convinced by now that the mouse gestures program StrokeIt, or something similar, will be an important part of an iPazzPort solution (TPFC entry linked, not program's homepage).  Attached to this post is the "Actions" folder (zipped) that I'm using with a few additions that I find helpful (up-stroke for PgUp, down for PgDn, down-left for home, down-right for end, up-left to go back a tab in IE, up-right to go forward a tab, S to start a slideshow in PowerPoint, reverse-S to start from current slide, N to make a new folder in Windows Explorer, maybe more to come?)  Just replace the "Actions" folder that comes with the program (not Default\Actions though!)  I haven't asked StrokeIt's developer about redistribution or anything, so that's why I'm attaching only the Actions folder.  Sorry to make the process harder on anyone wanting to test!

As mentioned above, I also use Executor as a portable launcher (it go off either hotkeys or text autocompletion, kinda like in the Vista menu), but I figure that's more personalized, and everyone may need to configure that for their own needs, if they even choose to use it.

Hope this project is helpful to others, and that I'll be able to get some good feedback toward improving this stuff!  Thanks!

Onesimus Prime:
One of the things missing, of course, are the Fu;nction keys.  What common uses do those have in various apps?  In other words (in part), which do I most need to worry about including substitutions for?

F1 = help (personally, I rarely use this)
F2 = rename (can probably be gotten to by right-clicking)
F5 = run (PowerPoint, some programming environments)
F11 = super-full-screen (Windows Explorer, Internet Explorer, etc.)

Any other important/common ones to consider?

rjbull:
Any other important/common ones to consider?-Onesimus Prime (May 23, 2010, 10:31 AM)
--- End quote ---

F10 usually activates the menus.

nudone:
i think i'll have to just keep my eye on your development and progress with the script as i really can't get to grips with typing with the iPazzPort keyboard. i only use mine for for controlling a few functions with KMPLayer (and navigating around the desktop and windows explorer), so i haven't the patience to use the tiny keys beyond that. you must be a very determined soul to try and keep typing with the device - i think i'd just grab a full size keyboard.  :)

i don't like admitting defeat so soon, though, so i'll try and give things another go when i can.

the only thoughts i have at the moment is that i'd maybe try to add a popup menu to a hotkey. the menu would then just list the keys and functions you don't require all the time, e.g. the function keys. but, if trying to remember lots of hotkey combinations isn't a problem then there's little point using a menu instead.

beyond that, i like the idea of the rapid keys, i just wonder if there's another way. if so, maybe i'll try to write a script and upload it.

edit:
i've been messing about using the script a bit more. i think the rapid key idea works very well as it's so difficult to try and hit two key combinations - which you had, obviously, already realised. maybe i'll try and use that with the KMPLayer controls - if so, i'll say how things go.

Navigation

[0] Message Index

[*] Previous page

Go to full version