 |
AutoHotkey Community Wir helfen uns gegenseitig aus der Patsche
|
| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Autor |
Nachricht |
rien-ne-va-plus
Anmeldedatum: 02.03.2008 Beiträge: 26 Wohnort: Berlin
|
Verfasst am: So März 02, 2008 9:07 pm Titel: Rechte Maustaste für Secondary Modus - DragDrop Problem |
|
|
Hi,
ich wusste nicht, wie ich mein Problem am besten in den Titel packe, aber ich versuchs mal zu erklären:
Ich habe ein simples Skript geschrieben, mit dem ich bei gedrückter rechter Maustaste mit dem Mausrad die Lautstärke regulieren kann (Hoch/Runter und Mute beim Drücken). Mein Problem ist, dass ich die rechte Maustaste jetzt nicht mehr für Draf&Drop Aktionen unter Windows benutzen kann. Hat da jemand ne Idee für nen Workaround?
| Code: | RButton::
SecMode = 1
SecUse = 0
Return
$WheelUp::
If SecMode
{
Send {Volume_Up}
SecUse = 1
}
Else
Send {WheelUp}
Return
$WheelDown::
If SecMode
{
Send {Volume_Down}
SecUse = 1
}
Else
Send {WheelDown}
Return
RButton Up::
SecMode = 0
If(SecUse = 0)
{
Send {RButton}
}
Return
LButton::
If SecMode
{
Send {F5}
SecUse = 1
}
Else
{
Send {LButton Down}
}
Return
LButton Up::
Send {LButton Up}
Return
|
danke
rien |
|
| Nach oben |
|
 |
Dbof
Anmeldedatum: 10.01.2008 Beiträge: 253 Wohnort: C:\
|
Verfasst am: So März 02, 2008 9:14 pm Titel: |
|
|
| Zitat: | ~ =When the hotkey fires, its key's native function will not be blocked (hidden from the system). In both of the below examples, the user's click of the mouse button will be sent to the active window:
~RButton::MsgBox You clicked the right mouse button.
~RButton & C::MsgBox You pressed C while holding down the right mouse button.Notes: 1) Unlike the other prefix symbols, the tilde prefix is allowed to be present on some of a hotkey's variants but absent on others; 2) Special hotkeys that are substitutes for alt-tab always ignore the tilde prefix; 3) The tilde prefix is ignored on Windows 95/98/ME |
MfG, Dbof _________________ mein spontanes ControlSend - Tutorial:
http://de.autohotkey.com/forum/viewtopic.php?p=25173#25173 |
|
| Nach oben |
|
 |
rien-ne-va-plus
Anmeldedatum: 02.03.2008 Beiträge: 26 Wohnort: Berlin
|
Verfasst am: So März 02, 2008 9:20 pm Titel: |
|
|
danke,
das funktioniert soweit, natürlich öffnet sich jetzt immer das kontextmenü...
aber ich schätze man kann nicht alles haben, oder kennt jemand noch einen anderen lösungsansatz?
mfg
rien |
|
| Nach oben |
|
 |
Dbof
Anmeldedatum: 10.01.2008 Beiträge: 253 Wohnort: C:\
|
Verfasst am: So März 02, 2008 9:22 pm Titel: |
|
|
Wolltest du denn nicht, dass der Drag&Drop wieder funktioniert? Unter Windows wird beim Drag&Drop mit rechter Maustaste doch immer ein Kontektmenü geöffnet, oder irre ich mich in meiner Aussage ? _________________ mein spontanes ControlSend - Tutorial:
http://de.autohotkey.com/forum/viewtopic.php?p=25173#25173 |
|
| Nach oben |
|
 |
rien-ne-va-plus
Anmeldedatum: 02.03.2008 Beiträge: 26 Wohnort: Berlin
|
Verfasst am: So März 02, 2008 9:35 pm Titel: |
|
|
jo, aber wenn ich die rechte maustaste benutze, um die lautstärke zu verändern (d.h. während der gedrückten rechten maustaste wird das mausrad gedreht) dann soll sich das menü nicht öffnen.
bzw, dann muss drag und drop natürlich auch nicht funktionieren. wenn das mausrad nicht benutzt wird soll die rechte maustaste regulär funktionieren.
ist das möglich?
mfg
rien |
|
| Nach oben |
|
 |
denick
Anmeldedatum: 15.09.2006 Beiträge: 1073 Wohnort: Berlin
|
Verfasst am: Mo März 03, 2008 7:08 am Titel: |
|
|
Moin,
manchmal ist es leichter als gedacht:
| Code: | RButton & WheelUp::
MsgBox, Send {Volume_Up}
Return
RButton & WheelDown::
MsgBox, Send {Volume_Up}
Return
RButton & LButton::
MsgBox, Send {F5}
Return
RButton Up::
Send, {RButton}
Return
|
_________________ Hilfe zur Hilfe
(de)nick |
|
| Nach oben |
|
 |
rien-ne-va-plus
Anmeldedatum: 02.03.2008 Beiträge: 26 Wohnort: Berlin
|
Verfasst am: Mo März 03, 2008 5:40 pm Titel: |
|
|
Danke, das ist schonmal das gleiche in einfacher.
Bloß leider kann ich die rechte Maustaste immernoch nicht als reguläre Drag&Drop Maustaste benutzen wenn das Skript läuft, irgendwie wird das geblockt.
MfG
rien |
|
| Nach oben |
|
 |
ruespe
Anmeldedatum: 10.02.2008 Beiträge: 28
|
Verfasst am: Mo März 03, 2008 8:33 pm Titel: |
|
|
| Komisch. Bei mir funktionierts genau so. |
|
| Nach oben |
|
 |
rien-ne-va-plus
Anmeldedatum: 02.03.2008 Beiträge: 26 Wohnort: Berlin
|
Verfasst am: Mo März 03, 2008 10:52 pm Titel: |
|
|
ernsthaft? muss ich noch irgendetwas zusätzlich hinzufügen? ich habe nur diesen text in eine datei kopiert und das skript ausgeführt. wenn ich jetzt auf ein desktopobjekt klicke wird dieses nicht markiert und ich kann es nicht verschieben.
wenn ich das skript ausschalte funktioniert das ohne probleme, das wird daran liegen, dass der rechtsklick abgefangen wird. mit tilde wird der rechtsklick zwar durchgereicht, ich habe aber ein rechtsklickmenü selbst wenn ich nur die lautstärke ändern will-
muss man hier einen komplexeren workaround schreiben?
mfg
rien |
|
| Nach oben |
|
 |
denick
Anmeldedatum: 15.09.2006 Beiträge: 1073 Wohnort: Berlin
|
Verfasst am: Di März 04, 2008 8:01 am Titel: |
|
|
Moin,
ich hatte wohl das Problem mit dem "Drag&Drop" nicht wirklich verstanden. Und ich habe keine Ahnung, wie man das "Drag&Drop" aktiv halten könnte, ohne dass auch die Kontextmenüfunktion aktiv bleibt. Beide werden ja durch dieselben Ereignisse (rechts down, rechts up) ausgelöst. _________________ Hilfe zur Hilfe
(de)nick |
|
| Nach oben |
|
 |
rien-ne-va-plus
Anmeldedatum: 02.03.2008 Beiträge: 26 Wohnort: Berlin
|
Verfasst am: Di März 04, 2008 4:29 pm Titel: |
|
|
ok, so wie du es beschreibst habe ich mich vielleicht etwas unverständlich ausgedrückt. ich will natürlich, dass auch die kontextmenüfunktion erhalten bleibt. allerdings nicht, wenn gleichzeitig mit gedrückter rechter maustaste das mausrad bedient wurde.
ich denke hier ist die schwierigkeit. es ist kein problem den rechtsklick abzufangen, dann wartet man bis die rechte maustaste losgelassen wird, checkt ob derzeit eine andere (skriptrelevante) taste gedrückt wurde (mausrad) und entscheidet dann, ob der klick durchkommen soll oder nicht.
die schwierigkeit scheint mir das drag&drop mit der rechten maustaste zu sein, weil man hier bei rbutton up ebenfalls rbuttonup auslösen muss. evtl muss man die drag&drop funktion per skript heimlich nachziehen, dass wäre natürlich insofern suboptimal als man nicht sieht, wohin man seine objekte zieht...
je mehr ich darüber nachdenke, desto mehr denke ich, dass das was ich will nicht möglich ist, weil man ja erst bei rbutton up weiß, ob jetzt eine zusatzfunktion betätigt wurde oder nicht. da ist der drag&drop vorgang aber schon beendet.
vielleicht hat ja noch jemand eine idee.
mfg
rien |
|
| Nach oben |
|
 |
denick
Anmeldedatum: 15.09.2006 Beiträge: 1073 Wohnort: Berlin
|
Verfasst am: Di März 04, 2008 5:00 pm Titel: |
|
|
Moin,
unmöglich ist es nicht, man kann beim Versuch, es zu realisieren, aber ziemlich viele Fehler machen. Das hier scheint jetzt aber ziemlich stabil zu laufen:
| Code: | #NoEnv
SetBatchLines, -1
SendMode, Input
Time := 500 ; Wartezeit nach Rechtsklick auf Aktionen
Timer := 50 ; Intervall des Timeraufrufs
Start := 0
Aktion := False
HotKeys("Off")
HotKey, $RButton Up, Off
Return
; ------------------------------------------------------------------------------
$RButton::
ToolTip
HotKeys("On")
Aktion := False
Start := 0
SetTimer, Check_RButton, %Timer%
Return
; ------------------------------------------------------------------------------
$RButton Up::
HotKey, %A_ThisHotkey%, Off
Click, Up Right
ToolTip
Return
; ------------------------------------------------------------------------------
$WheelUp::
Aktion := True
ToolTip, Send {Volume_Up}
Start := 0
Return
; ------------------------------------------------------------------------------
$WheelDown::
Aktion := True
ToolTip, Send {Volume_Down}
Start := 0
Return
; ------------------------------------------------------------------------------
$LButton::
Aktion := True
ToolTip, Send {F5}
Start := 0
Return
; ------------------------------------------------------------------------------
Check_RButton:
If (Start = 0) {
Start := A_TickCount
}
If (!GetKeyState("RButton", "P")) {
SetTimer, Check_RButton, Off
HotKeys("Off")
ToolTip
If (!Aktion) {
Click, Right
}
} Else {
If (A_TickCount - Start > Time) {
ToolTip
SetTimer, Check_RButton, Off
HotKeys("Off")
If (!Aktion) {
Click, Down Right
HotKey, $RButton Up, On
}
}
}
Return
; ------------------------------------------------------------------------------
HotKeys(OnOff) {
Global
HotKey, $WheelUp, %OnOff%
HotKey, $WheelDown, %OnOff%
HotKey, $LButton, %OnOff%
} |
Beim Drag&Drop gibt es allerdings die in Time angegebene Verzögerung, bis der Rechtsklick zugreift. Und auf meinem aktuellen System zusätzlich manchmal merkwürdige Interaktionen mit der Taskleiste.
Na ja, immerhin etwas! _________________ Hilfe zur Hilfe
(de)nick |
|
| Nach oben |
|
 |
halweg
Anmeldedatum: 05.01.2006 Beiträge: 782 Wohnort: Dresden
|
Verfasst am: Di März 04, 2008 5:03 pm Titel: |
|
|
Ich habe bei mir die linke obere Mauszusatztaste auf CTRL gelegt. Damit kann ich zum Beispiel in Word oder Excel durch Drücken dieser Taste und Bewegen des Mausrades den Zoom ändern.
Wenn du zwei zusätzliche Daumentasten hast, hast du m.E. auch genügend Möglichkeiten, über Modifier wie SHIFT und CTRL dem Mausrad Sonderfunktionen zu geben.
Mit ein Paar Tricks schaffst des sogar, die Modifier-Funktion der beiden Daumentasten parallel zum Auslösen zusätzlicher und sogar mehrfacher Befehle zu nutzen (s. mein Codebeispiel im anderen Thread). meld dich, falls du Codeschnipsel für diese Kombination "Dauerdrücken" und "Einmal-/Mehrfachklicken" brauchst. |
|
| Nach oben |
|
 |
rien-ne-va-plus
Anmeldedatum: 02.03.2008 Beiträge: 26 Wohnort: Berlin
|
Verfasst am: Di März 04, 2008 7:14 pm Titel: |
|
|
@denick: danke, dass du dir die mühe gemacht hast, das skript zu schreiben. ich hatte die gleiche idee mit dem kurzen zeitlichen abwarten, hatte aber noch nicht begonnen, das skript dazu zu schreiben. ich sehe ein, dass es keine andere möglichkeit gibt, diese idee umzusetzen.
@halweg: meine beiden daumentasten sind ja inwzischen schon doppelt belegt, mit normalem klick (vor/zurück) und bei gedrückt halten mit itunes weiter/zurück - meinst du dass könnte man noch ausweiten, damit ich die rechte-maustaste-problematik umgehe? ich wollte das ganze so intuitiv wie möglich lassen...
mfg
rien |
|
| Nach oben |
|
 |
halweg
Anmeldedatum: 05.01.2006 Beiträge: 782 Wohnort: Dresden
|
Verfasst am: Di März 04, 2008 10:59 pm Titel: |
|
|
| rien-ne-va-plus hat Folgendes geschrieben: | | daumentasten sind ja inwzischen schon doppelt belegt, mit normalem klick (vor/zurück) und bei gedrückt halten mit itunes weiter/zurück - meinst du dass könnte man noch ausweiten, damit ich die rechte-maustaste-problematik umgehe? ich wollte das ganze so intuitiv wie möglich lassen... |
Grundsätzlich: es ist tatsächlich äußerst wichtig, dass alle Tastenkombis schön intuitiv sind. Sonst blickts du irgendwann wirklich nicht mehr durch.
Aber nach meinen Erfahrungen spricht nichts dagegen, der gleichen Taste in verschiedenen Programmen ähnliche Funktionen zu geben. Also Vor / zurück im Browser (falls du "vor" überhaupt brauchst) und weiter/zurück in itunes und dann je nach Kontext die eine oder andere Funktion auslösen.
Dann hättest du schon wieder ein paar Möglichkeiten mehr gewonnen.
Bei mir habe ich aber irgenwann festgelegt, dass die 5 Mausknöpfe nur bei Aktionen zum Einsatz kommen, wo die Mauspositon oder das aktive Fenster eine Rolle spielen. Alles andere lege ich auf eine meiner 25 selbstbemalten zusätzlichen Tasten am Microsoft Keyboard. Lediglich die "zurück" Funktion ist "kontextabhängig" und liegt deshalb auf der mittleren Maustaste.
Ja und dann kann man tatsächlich zwischen gedrückt-halten-und-nebenbei-eine-Taste-bedienen und gedrückt-halten-und-loslassen unterscheiden ...
Wichtig für dich ist vielleicht, zu überlegen, ob du deine selbst gemachten Tastenbelegungen einmal am Tag oder einmal in 5 Minuten brauchst und ob du in einem Jahr 5 oder 50 Tastenbelegungen haben wirst. Davon hängt dann ab, wie intuitiv alles sein muss, ob du ein Keyboard mit mehr Tasten brauchst und vor allem, wieviel Aufwand sich für das Ganze lohnt.
Es sei denn du wirst Programmierer als Leidenschaft - das sind die Jungs hier im Forum, die, wenn du ein winzigkleines Problem hast dir sofort 500 Zeilen Programm schreiben  |
|
| Nach oben |
|
 |
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|