AutoHotkey: With Alt - \ always to root: Difference between revisions

From TotalcmdWiki
Jump to navigation Jump to search
(modified to work also from within archives)
(Added category AutoHotkey scripts)
Line 56: Line 56:


{{translated|AutoHotkey: Mit ALT - \ ins Wurzelverzeichnis|AutoHotkey}}
{{translated|AutoHotkey: Mit ALT - \ ins Wurzelverzeichnis|AutoHotkey}}
[[Category:AutoHotkey scripts|With Alt - \ always to root]]

Revision as of 19:00, 1 June 2008

If you are working with 'softlocked' Tabs (locked but dir change allowed) it's most time useful to change with [Ctrl]+[\] to the root of the locked Tab instead root of the drive. You can achieve this with the key LockedGoToDriveRoot=0 in the wincmd.ini.


However, sometimes it is useful to go instead to the root of the drive. That's what this script is for:


;Alt \ leads to root of drive
!\::
IfWinActive ahk_class TTOTAL_CMD
    {
; activate the command line
    PostMessage, 1075, 4003, , , ahk_class TTOTAL_CMD
; type cd \
    sendraw, cd \
;   send it
    send, {ENTER}
    }
return


Here's a variant by ND, which ensures that the script is only launched when one of the TC panels is active and which leaves the command-line history unmodified (tested in TC 5.50 and TC 7.01 on WinXP SP2)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;! \brief  pressing Alt+\\ should land in drive root rather than tab root
;
;  Assumes that the panel title-paths are accessible (TMyPanel5/TMyPanel9)
;
;  Computes the number of different parts separated by \\,
;  then goes-up the appropriate number of parent dirs (cm_GoToParent)
;
#IfWinActive, ahk_class TTOTAL_CMD
~!\::
  ; only when the actual TC panels are active
  ControlGetFocus, tcFocus
  If(  RegExMatch( tcFocus, "^TMyListBox1$" )  )
    tcPath = TMyPanel9
  Else
  If(  RegExMatch( tcFocus, "^TMyListBox2$" )  )
    tcPath = TMyPanel5
  Else
    Return

  ControlGetText,  tcStatus,  %tcPath%
  RegExReplace(  tcStatus,  "[^\\>]+",  "$1",  tcBack  )

  tcBack--  ; minus the drive root itself
  If(  RegExMatch( tcStatus, "^.\\[^\\]" )  )
    tcBack--  ; minus the server root for network drives

  If(  tcBack > 0  )
    Loop, %tcBack%
      PostMessage, 1075, 2002  ; cm_GoToParent
Return



Back to AutoHotkey