Q: How do I make xbindkeys not stop the original function of my key? I don't remember where or how I got this script, but it works perfectly... Apart from making me unable to use my middle mouse button.
;;   This configuration is guile based.

;;   http://www.gnu.org/software/guile/guile.html
;; Scroll Up
(define (first-binding)
    "First binding"
    (xbindkey-function '("b:2") b3-second-binding)
)
(define (reset-first-binding)
    "reset first binding"
    #(ungrab-all-keys)
    #(remove-all-keys)
)
(define (b3-second-binding)
    "Button Extra Functions"
    (reset-first-binding)
;; Every Trigger
(xbindkey-function '("b:4")
    (lambda ()
        (reset-first-binding)
        (run-command "pactl -- set-sink-volume 0 +5%")
        #(run-command "killall xbindkeys; xbindkeys")
    )
)
(xbindkey-function '("b:5")
    (lambda ()
        (reset-first-binding)
        (run-command "pactl -- set-sink-volume 0 -5%")
        #(run-command "killall xbindkeys; xbindkeys")
    )
)
;; Release of key
(xbindkey-function '(release "b:2")
    (lambda ()
        (reset-first-binding)
        #(run-command "xdotool key mouse 2")
        (run-command "killall xbindkeys; xbindkeys")
    )
)

(first-binding) 
(this makes it that while mouse3 (middle mouse) is down, and you scroll, it changes volume)
The file extension is .scm and I am not sure what any of this does. I tried changing things around, but it didn't do much. My goal is to have the binds, AND my mouse wheel button.

A: Check this out: https://github.com/mrtgenet/xbindkeys-guile-mouse-altkeys-and-more/blob/main/.xbindkeysrc.scm
Note the
(define actionperformed 0)

at the beginning of the file and then the
(set! actionperformed 1)

as last instruction of each secong-binding function.
And the reset-first-binding function is then:

(define (reset-first-binding)
"Reset first binding"
   (ungrab-all-keys)
   (remove-all-keys)
   ;; Set Action Performed state back to 0
   (set! actionperformed 0)
   ;; Forcefully release all modifier keys!
   (run-command "xdotool keyup ctrl keyup alt keyup shift keyup super&")
   (first-binding)
   (grab-all-keys)
)

This may not be the complete solution but I hope this helps :)
