MouseInverter (Aprilscherz)

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Tompazi
Beiträge: 211
Registriert: 22.09.2007 15:38

MouseInverter (Aprilscherz)

Beitrag von Tompazi »

Mein kleiner Aprilscherz
Dreht die Maus um wenn man mit der Maus (physikalisch) nach links fährt, fahrt die Maus (virtuell) nach rechts und umgekehrt. Beendet wird mit Escape, Nur Windows.

Code: Alles auswählen

; Title: MouseInverter.pb
; Demo: No
; GNU GPLv3orHigher
; PB 4.30
; Windows XP
; Description: Inverts mouse movement and swaps mousebuttons
;              WinAPIs(): GetAsyncKeyState
;                         SwapMouseButton
;                         SetCursorPos
;Author(s): Tompazi,

GetAsyncKeyState_(0) ; Empty Buffer

;Examine Desktopsize
ExamineDesktops()
 Width = DesktopWidth(0)
 Height = DesktopHeight(0)

;Examine Mouse Position
 X = DesktopMouseX()
 Y = DesktopMouseY()
 
 SwapMouseButton_(1) ;Swap Mousebuttons

Repeat
 
 Delay(1) ;relieve CPU
 
 ;Check mouse movement
 Repeat
  
  Delay(1) ;relieve CPU
  
  ;Examine New Mouse Position
   X_New = DesktopMouseX()
   Y_New = DesktopMouseY()
   
  ;Calculate difference
   X_DIFF = X - X_New
   Y_DIFF = Y - Y_New
   
 Until X_DIFF <> 0 Or Y_DIFF <> 0 ;Check if mouse was moved
 
 SetCursorPos_(X + X_DIFF,Y+Y_DIFF) ;Set the mouse at the new position
 
 ;Examine New Mouse Position
  X = DesktopMouseX()
  Y = DesktopMouseY()
 
 ;Keep the mouse away from the borders.
  If X =< 0
   X = 1
  ElseIf X => Width - 1
   X = Width -2
  EndIf
  If Y =< 0
   Y = 1
  ElseIf Y => Height - 1
   Y = Height -2
  EndIf
 
Until GetAsyncKeyState_(#VK_ESCAPE) ;has Escape been pushed?

SwapMouseButton_(0) ;Reswap Mousebuttons
  
End ;END
;-----------------------------------
; ShortVersion (30 Lines):
;  
; GetAsyncKeyState_(0)
; ExamineDesktops()
;  Width = DesktopWidth(0)
;  Height = DesktopHeight(0)
;  X = DesktopMouseX()
;  Y = DesktopMouseY()
;  SwapMouseButton_(1)
; Repeat
;  Delay(1)
;  Repeat
;   Delay(1)
;    X_New = DesktopMouseX()
;    Y_New = DesktopMouseY()
;    X_DIFF = X - X_New
;    Y_DIFF = Y - Y_New   
;  Until X_DIFF <> 0 Or Y_DIFF <> 0
;  SetCursorPos_(X + X_DIFF,Y+Y_DIFF)
;   X = DesktopMouseX()
;   Y = DesktopMouseY()
;   If X =< 0
;    X = 1
;   ElseIf X => Width - 1
;    X = Width -2
;   EndIf
;   If Y =< 0
;    Y = 1
;   ElseIf Y => Height - 1
;    Y = Height -2
;   EndIf
; Until GetAsyncKeyState_(#VK_ESCAPE)
; SwapMouseButton_(0)
Vielleicht findet ja noch wer dafür Verwendung :wink:

MfG Tompazi
Bild
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

:allright: Sehr nützlich, nur mit den vertauschten Mausbuttons hab ich Probleme :mrgreen:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Ruckelt aber wie Oma unterm Arm.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Tompazi
Beiträge: 211
Registriert: 22.09.2007 15:38

Beitrag von Tompazi »

DarkDragon hat geschrieben:Ruckelt aber wie Oma unterm Arm.
Also bei mir gehts flüssig falls du das meinst..

MfG Tompazi
Bild
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Tompazi hat geschrieben:
DarkDragon hat geschrieben:Ruckelt aber wie Oma unterm Arm.
Also bei mir gehts flüssig falls du das meinst..

MfG Tompazi
Bei mir zittert die Maus wenn ich sie bewege.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
cxAlex
Beiträge: 2111
Registriert: 26.06.2008 10:42

Beitrag von cxAlex »

Ich dreh durch, die Mausbuttons bleiben bei mir nach Ende des Programms immer noch vertauscht wie krieg ich das weg?!
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster

Bild

PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Beitrag von RSBasic »

Code: Alles auswählen

SwapMouseButton_(0)
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
teejex
Beiträge: 44
Registriert: 30.03.2009 17:55
Computerausstattung: PB4.40 Pro
C++: MinGW :)
Java: Eclipse :)
Notepad++ :)
--
Notebook/eher Mobile Workstation :D : Q9800 - nVidia - 4GB Ram - 500GB HD

Beitrag von teejex »

hi

ich finds lustig xD

interessant ist vor allem, wie schnell sich das gehirn anpasst:
nach ca 1min mit diesem programm hab ich mich shcon halb daran gewhönt - nur die vertauschten mausbuttons - daran muss ich mich noch assimilieren :-)

aber ansonsten: lustig xD

übrigens: scrollrad wurde nicht invertiert!

MfG

teejex
Tompazi
Beiträge: 211
Registriert: 22.09.2007 15:38

Beitrag von Tompazi »

cxAlex hat geschrieben:Ich dreh durch, die Mausbuttons bleiben bei mir nach Ende des Programms immer noch vertauscht wie krieg ich das weg?!
Nicht per "Kill Program" beenden sondern mit Escape ansonsten.

Code: Alles auswählen

SwapMouseButton_(0)
Vielleicht wärs etwas schwieriger zum umgewöhnen wenn nur eine Achse inventiert wird <)

MfG Tompazi
Bild
Andesdaf
Moderator
Beiträge: 2673
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Beitrag von Andesdaf »

bei mir ruckelt die sache auch ziemlich.
aber trotzdem witzig :allright:
Win11 x64 | PB 6.20
Antworten