If you limit yourself to available OEM button codes, you can do it with a brain or macropump. It's basically a series of if statements....
if I/P 1 then dooembbutton(123)
if I/P 2 then dooembutton(456)
if I/P 3 and I/P 4 then dooembutton(789)
I think if you want to jog, you would have to have a multiplexing BOB with a matching plugin.