Home | Blog | Software | Reviews and Features | Forum | Help | Donate | About us
topbanner_forum
  *

avatar image

Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
  • December 09, 2016, 10:57:29 PM
  • Proudly celebrating 10 years online.
  • Donate now to become a lifetime supporting member of the site and get a non-expiring license key for all of our programs.
  • donate

Author Topic: "PazzPort Helper"  (Read 5401 times)

Onesimus Prime

  • Charter Member
  • Joined in 2005
  • ***
  • default avatar
  • Posts: 15
    • View Profile
    • Donate to Member
"PazzPort Helper"
« on: May 17, 2010, 02:27:43 AM »


So I recently bought a little gadget called an iPazzPort (among other aliases) and am getting another as a present for someone.  Basically, this thing is a tiny wireless QWERTY keyboard and touchpad (picture here, review here).  I'm generally enjoying it; wouldn't want to do extensive typing on it at all, though.  But--I'm finding out just how spoiled I usually am in terms of navigation on a laptop.  This thing doesn't have a scroll region on the touchpad, and it's missing several important (to me) keys: Function keys, Win key, Tab, Shift, Home, End, PgUp, PgDown, Prnt Scrn, etc.  You can see the keyboard layout in the above picture.  Yep, no Alt+F4, no Alt+Tab, no Win+E, no Ctrl+Shift+End, etc. - all the shortcut keys that I normally use so often.

Especially since I'll be "gifting" one of these shortly, I'm trying to figure out a way to fill the void as far as navigation goes.  I've been messing around with a combination of the portable mouse gestures program StrokeIt and an AutoHotkey script.  My goal is to have something as simple, yet functional, as possible.  Here's what I was thinking so far, but if anyone has better ideas I don't mind scrapping this.  This has a lot of re-mapping to remember, which can just get confusing.  I'm a newbie at AHK and the below took me an embarrassing number of hours, so if someone else wants to start from scratch, I wouldn't mind that either...

#SingleInstance force

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


; `::Tab
Ctrl & Backspace::AltTabMenu
~t::RapidHotkey("{TAB}",3, 0.2)
~a::RapidHotkey("!^a", 3, 0.2)
~q::RapidHotkey("#zqdir{Enter}""!{F4}",2)
~e::RapidHotkey("#z""#r""#e",3, 0.2)
~Esc::RapidHotkey("SusScript""ReloadScript""exit", 3, 0.2, 1) ;Press Esc 5 times rapidly to exit this script

Ctrl & Esc::
send {LAlt down}
send {LWin down}
sleep 1500
send {LWin up}
send {LAlt up}
return

Alt & Esc::
send {Shift down}
sleep 3000
send {Shift up}
return

SusScript:
Suspend on
sleep 3000
Suspend off
return

ReloadScript:
Reload
MsgBox,0,,Reloaded
return

Exit:
ExitApp


; ------- HotKeyIt's "RapidHotkey" function --------

RapidHotkey(keystroke, times="", delay=0.15, 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 = 1
   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, "[\*\~\$\#\+\!\^]")
   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|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%)
   static lastkey
   tout := timeout/1000
   key := RegExReplace(A_ThisHotKey,"[\*\~\$\#\+\!\^]")
   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
   }
}

So far my "strategy" has been to use not-likely-used key combinations (e.g. Ctrl+Esc), or multiple key presses with the RapidHotkey function.  But there are only so many unused key combinations, and I don't know that they might do something horrible in some programs.  And RapidHotkey uses backspace to clear the triggering text entry, which of course causes something else entirely in an Explorer or Internet Explorer window.  Plus it's hard to remember, potentially unreliable if the iPazzPort/my fingers are finicky, etc.  One of the other things I was doing is to send "down" messages for certain unavailable modifier keys, sleep for a few seconds to give me time for key combinations, then send the "up" messages.  Again, there are probably better, more efficient, more easily remembered ways of doing that? 

Help!    :)

nudone

  • Cody's Creator
  • Columnist
  • Joined in 2005
  • ***
  • Posts: 4,117
    • View Profile
    • Donate to Member
Re: "PazzPort Helper"
« Reply #1 on: May 17, 2010, 03:24:05 AM »
i've got one of these keypads. i never expected it to have the keys missing that it has - but, i don't use it for much more than navigating around a media player pc.

i'd not thought of using autohotkey to fill in the gaps so i'll try out your script and see if there is anything that comes to mind for improvements.

Onesimus Prime

  • Charter Member
  • Joined in 2005
  • ***
  • default avatar
  • Posts: 15
    • View Profile
    • Donate to Member
Re: "PazzPort Helper"
« Reply #2 on: May 17, 2010, 03:52:58 AM »
I guess one "missing piece" from the description of my "solution" above is a fairly extensively configured instance of Executor, also portable.  I have lots of Alt+Win+___ hotkeys defined, plus I can always type the first few letters of something and rely on autocomplete.  So Alt+Win is one of the combos I'm trying to reclaim here...

A description of what the script does so far (which is not that much) might be helpful:
Ctrl+Esc = simulate holding down Alt+Win for 3 seconds; I can then hit just one alphanumeric key to use one of my hotkeys mentioned above
Alt+Esc = simulate holding Shift down for 3 seconds
Ctrl + Backspace - call the AltTabMenu, which can then be navigated using the arrow keys, Enter to accept, Esc to cancel
"t" 3x (3 times) = Tab
"a" 3x = Ctrl+Alt+A (shortcut key for Keepass' autofill feature)
"e" - 2x = Executor, 3x = Windows' Run dialogue, 4x = My Computer
"q" - 2x = launch Q-Dir via Executor, 3x = quit focused application (Alt+F4)
Esc - 3x = suspend this AHK script, 4x = reload this script, 5x = exit this script

rjbull

  • Charter Member
  • Joined in 2005
  • ***
  • default avatar
  • Posts: 2,927
    • View Profile
    • Donate to Member
Re: "PazzPort Helper"
« Reply #3 on: May 17, 2010, 03:12:18 PM »
Would mouser's TapTap Hotkey Extender work?
Quote
It monitors for certain unusual hotkey combinations not supported by most programs (like doubletap right shift key). When such hotkey combinations are detected, TapTap will simulate a normal hotkey that the user has configured.

Onesimus Prime

  • Charter Member
  • Joined in 2005
  • ***
  • default avatar
  • Posts: 15
    • View Profile
    • Donate to Member
Re: "PazzPort Helper"
« Reply #4 on: May 17, 2010, 05:52:58 PM »
Well, it's interesting, as is OkayKeybees (linked to from mouser's page).  But
1) TapTap only seems to accept single- or double-tap, not as configurable as HotKeyIt's RapidHotkey function;
2) I think the temporary holding-down of certain hotkeys might be an important part of flexibility in this.  Maybe even some sort of Shift lock/toggle thing, where I click one place in a document, toggle Shift-lock on, click another place to highlight everything in between, toggle Shift-lock off. 

And part of my underlying question is, is this whole approach too complex?  Is there some out-of-the-box thinker who can say "Wait, what about this way that's easier to both implement for the developer and remember for the end-user?"  And I'd say, "Huh, never thought of that!"

rjbull

  • Charter Member
  • Joined in 2005
  • ***
  • default avatar
  • Posts: 2,927
    • View Profile
    • Donate to Member
Re: "PazzPort Helper"
« Reply #5 on: May 18, 2010, 03:00:41 PM »
1) TapTap only seems to accept single- or double-tap, not as configurable as HotKeyIt's RapidHotkey function;

It looks like it should allow you to define taps to take the place of keys missing from your keyboard, which is more or less what I thought you meant.

Quote
2) I think the temporary holding-down of certain hotkeys might be an important part of flexibility in this.  Maybe even some sort of Shift lock/toggle thing, where I click one place in a document, toggle Shift-lock on, click another place to highlight everything in between, toggle Shift-lock off.  

You've practically reinvented WordStar there - see, e.g., A Writer's Word Processor by SF author Robert Sawyer.  Meanwhile, other hotkey utilities you might check out include HotKeyP and HotKeyz (both freeware), especially the latter, which knows about keyboard redefinition.  Both can stack multiple commands from a single hotkey, including menus.

Quote
And part of my underlying question is, is this whole approach too complex?  Is there some out-of-the-box thinker who can say "Wait, what about this way that's easier to both implement for the developer and remember for the end-user?"  And I'd say, "Huh, never thought of that!"

If you hadn't requested simplicity I would have suggested PowerPro  ;)

Onesimus Prime

  • Charter Member
  • Joined in 2005
  • ***
  • default avatar
  • Posts: 15
    • View Profile
    • Donate to Member
Re: "PazzPort Helper"
« Reply #6 on: May 18, 2010, 03:14:37 PM »
Thanks, I'll look into all that...

Here's the current version of the above script (yep, still playing with that too):

#SingleInstance force

;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 3000
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="", delay=0.15, 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 = 1
   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, "[\*\~\$\#\+\!\^]")
   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|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%)
   static lastkey
   tout := timeout/1000
   key := RegExReplace(A_ThisHotKey,"[\*\~\$\#\+\!\^]")
   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
   }
}

nudone

  • Cody's Creator
  • Columnist
  • Joined in 2005
  • ***
  • Posts: 4,117
    • View Profile
    • Donate to Member
Re: "PazzPort Helper"
« Reply #7 on: May 19, 2010, 04:30:57 AM »
(still not had chance to use your script.)

perhaps the only way you can improve any of this is to make it easy to remember how to use. or make it very intuitive. not sure what that could mean, or if it's necessary.

Onesimus Prime

  • Charter Member
  • Joined in 2005
  • ***
  • default avatar
  • Posts: 15
    • View Profile
    • Donate to Member
Re: "PazzPort Helper"
« Reply #8 on: May 19, 2010, 09:05:14 AM »
Found a small bug in the RapidHotkeys function; new version of my script coming soon...

"perhaps the only way you can improve any of this is to make it easy to remember how to use. or make it very intuitive. not sure...if it's necessary."  It probably is; a person can only conveniently remember so many key combinations!  Simplicity/intuitiveness (perhaps with expanded functionality) is part of what I'm hoping someone else has a brainstorm about!

nudone

  • Cody's Creator
  • Columnist
  • Joined in 2005
  • ***
  • Posts: 4,117
    • View Profile
    • Donate to Member
Re: "PazzPort Helper"
« Reply #9 on: May 22, 2010, 01:33:25 PM »
okay, i'm now testing the script out - could you upload the correct version, please.

i'll then try to come up with some recommendations - if there are any. might just be my own personal preferences though.

Onesimus Prime

  • Charter Member
  • Joined in 2005
  • ***
  • default avatar
  • Posts: 15
    • View Profile
    • Donate to Member
Re: "PazzPort Helper"
« Reply #10 on: May 23, 2010, 03:27:54 AM »
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

  • Charter Member
  • Joined in 2005
  • ***
  • default avatar
  • Posts: 15
    • View Profile
    • Donate to Member
Re: "PazzPort Helper"
« Reply #11 on: May 23, 2010, 10:31:21 AM »
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

  • Charter Member
  • Joined in 2005
  • ***
  • default avatar
  • Posts: 2,927
    • View Profile
    • Donate to Member
Re: "PazzPort Helper"
« Reply #12 on: May 23, 2010, 11:43:17 AM »
Any other important/common ones to consider?

F10 usually activates the menus.

nudone

  • Cody's Creator
  • Columnist
  • Joined in 2005
  • ***
  • Posts: 4,117
    • View Profile
    • Donate to Member
Re: "PazzPort Helper"
« Reply #13 on: May 24, 2010, 05:45:00 AM »
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.
« Last Edit: May 24, 2010, 05:56:45 AM by nudone »