Note - this gamepad script uses a PS/2 style gamepad to play on Poker Stars or Full Tilt. The 4 configs I have are 1) Poker Stars with default window sizes 2) Poker Stars with minimum sized windows 3) Poker Room (sadly no longer accepting US Players and 4) Full Tilt classic style

I use this Logitech Dual Action Gamepad ($20 at Walmart, Best Buy etc), but other similar gamepads should work too.

http://www.logitech.com/index.cfm/products/details/US/EN,CRID=2225,CONTENTID=6951

Here is an autohotkey script I wrote for complete mouseless poker.

Open multiple tables and put them around the edges of your screen.

The gamepad buttons will do the following -

The direction pad will say 4 different chat messages.

The bottom left joystick left/right axis will move the NL slider betting amount, while pushing it up/down will scroll through a document.

The bottom right joystick provides a second way to select the 4 game windows.

At the top of the script its easy to modify your screen dimensions, the 4 chat messages and predefined NL bet amounts you want to use. The bet_on variable can be set to determine how gamepad buttons 5-8 function.

Perhaps someone will find this useful. Good Luck...

ahub64@cardplayer.com

; AutoHotKey script for PokerStars using a Logitech Dual Action Gamepad
; Hopefully this is easy to read and modify for other gamepads and poker sites


screenwide = 1280  ;  right click desktop, click Settings to get screen dimensions
screentall = 800

tchat = ty  ; predefined chat messages for top left direction pad
rchat = nh
lchat = vnh
bchat = lol

bet5 = 2    ; NL bet amounts for buttons 5-8 on the gamepad and F keys 5-8 on keyboard
bet6 = 4    
bet7 = 6
bet8 = 9999 ;  make bet8 big enough and you'll go all-in.  
            ;  bet8 also makes you press Bet button to confirm (other 3 are automatic)

bet_on = 1  ; if = 0  then buttons 5-8 navigate to different 4 different corners
            ;         same as bottom right joystick 
            ; if = 1  then buttons 5-8 will bet NL amounts defined above

snum = 100  ; the AHK sleep time (in ms) after each action and loop cycle
            ; Can adjust to change performance, cpu usage

site = 4    ; 1 = pokerstars default window size  2 = stars smallest window size
            ; 3 = pokerroom   4 = full tilt

Process, Priority, , High  ;  better performance

if site = 1   ;  pokerstars default size
{
  fold1 = 450
  fold2 = 510
  fold3 = 450
  fold4 = 530
  call1 = 600
  call2 = 530
  call3 = 600
  call4 = 510
  bet1 = 680
  bet2 = 530
  nlwin1 = 635
  nlwin2 = 480
  t0 = 2
  tl1 = 75
  tr1 = 105
  bl1 = 50
  br1 = 50
  nlrb1 = 410
  nlrb2 = 80
  nlrb3 = 250
  nlrb4 = 50
  nlrb5 = 90
  nlrb6 = 230
  nlrb7 = 100
  nlrb8 = 430
  nlrb9 = 180
  nlrb10 = 100
  ap1 = 15
  ap2 = 422
  cb1 = 15
  cb2 = 474
  slidel1 = 410
  slidel2 = 300
  slider1 = 470
  slider2 = 300
  edge = 5
}
else if site = 2  ;  pokerstars smallest size
{
  fold1 = 260
  fold2 = 315
  fold3 = 260
  fold4 = 330
  call1 = 340
  call2 = 330
  call3 = 340
  call4 = 315
  bet1 = 420
  bet2 = 330
  nlwin1 = 380
  nlwin2 = 300
  t0 = 2
  tl1 = 75
  tr1 = 105
  bl1 = 50
  br1 = 50
  nlrb1 = 240
  nlrb2 = 60
  nlrb3 = 270
  nlrb4 = 50
  nlrb5 = 90
  nlrb6 = 230
  nlrb7 = 100
  nlrb8 = 430
  nlrb9 = 180
  nlrb10 = 100
  ap1 = 15
  ap2 = 268
  cb1 = 15
  cb2 = 300
  slidel1 = 410
  slidel2 = 300
  slider1 = 470
  slider2 = 300
  edge = 5
}
else if site = 3  ;  pokerroom default size
{
  fold1 = 180
  fold2 = 500
  fold3 = 180
  fold4 = 550
  call1 = 300
  call2 = 530
  call3 = 300
  call4 = 500
  bet1 = 425
  bet2 = 500
  nlwin1 = 425
  nlwin2 = 550
  t0 = 1
  tl1 = 5
  tr1 = 105
  bl1 = 50
  br1 = 50
  nlrb1 = 80
  nlrb2 = 480
  nlrb3 = 80
  nlrb4 = 570
  nlrb5 = 220
  nlrb6 = 560
  nlrb7 = 80
  nlrb8 = 480
  nlrb9 = 180
  nlrb10 = 100
  ap1 = 80
  ap2 = 480
  cb1 = 570
  cb2 = 580
  slidel1 = 185
  slidel2 = 545
  slider1 = 375
  slider2 = 545
  edge = 5
}
else if site = 4  ;  full tilt
{
  fold1 = 500
  fold2 = 530
  fold3 = 530
  fold4 = 560
  call1 = 600
  call2 = 530
  call3 = 630
  call4 = 560
  bet1 = 750
  bet2 = 550
  nlwin1 = 695
  nlwin2 = 475
  t0 = 1
  tl1 = 5
  tr1 = 105
  bl1 = 50
  br1 = 50
  nlrb1 = 40
  nlrb2 = 40
  nlrb3 = 55
  nlrb4 = 222
  nlrb5 = 100
  nlrb6 = 300
  nlrb7 = 80
  nlrb8 = 480
  nlrb9 = 180
  nlrb10 = 100
  ap1 = 15
  ap2 = 480
  cb1 = 10
  cb2 = 510
  slidel1 = 667  ;  full tilt doens't have slider buttons
  slidel2 = 476
  slider1 = 667
  slider2 = 476
  edge = 5
}


; Auto-detect the joystick number

if JoystickNumber <= 0
{
        Loop 32  ; Query each joystick number to find out which ones exist.
        {
                GetKeyState, JoyName, %A_Index%JoyName
                if JoyName <>
                {
                        JoystickNumber = %A_Index%
                        break
                }
        }
        if JoystickNumber <= 0
        {
                MsgBox The system does not appear to have any joysticks.
                ExitApp
        }
}

GetKeyState, joy_buttons, %JoystickNumber%JoyButtons
GetKeyState, joy_info, %JoystickNumber%JoyInfo

; the big loop that never ends

Loop
{

  JoystickNumber = 0
          Loop 32  ; Query each joystick number to find out which ones exist.
          {
                  GetKeyState, JoyName, %A_Index%JoyName
                  if JoyName <>
                  {
                          JoystickNumber = %A_Index%
                          break
                  }
          }
          if JoystickNumber <= 0
          {
                  MsgBox The system does not appear to have any joysticks.
                  ExitApp
          }



        buttons_down =
        Loop, %joy_buttons%
        {
                GetKeyState, joy%a_index%, %JoystickNumber%joy%a_index%
                if joy%a_index% = D
                        buttons_down = B%a_index%#
        }
        GetKeyState, joyx, %JoystickNumber%JoyX
        axis_info = X%joyx%
        xnum = %joyx%
        GetKeyState, joyy, %JoystickNumber%JoyY
        ynum = %joyy%
        IfInString, joy_info, Z
        {
                GetKeyState, joyz, %JoystickNumber%JoyZ
                znum = %joyz%
        }
        IfInString, joy_info, R
        {
                GetKeyState, joyr, %JoystickNumber%JoyR
                rnum = %joyr%
        }
        IfInString, joy_info, U
        {
                GetKeyState, joyu, %JoystickNumber%JoyU
                unum = %joyu%
        }
        IfInString, joy_info, V
        {
                GetKeyState, joyv, %JoystickNumber%JoyV
                vnum = %joyv%
        }
        IfInString, joy_info, P
        {
                GetKeyState, joyp, %JoystickNumber%JoyPOV
                pnum = %joyp%
        }

; function keys

        if site <> 3  ;  pokerroom has its own Fkeys
        {
           GetKeyState, stateF2, F2, P ; Fold
           if stateF2 = D ;
           {
               Coordmode, Mouse, Relative
               MouseClick, left, fold1, fold2
               MouseClick, left, fold3, fold4
           } 
           GetKeyState, stateF3, F3, P ; Check/Call
           if stateF3 = D ;
           {
               Coordmode, Mouse, Relative
               MouseClick, left, call1, call2
               MouseClick, left, call3, call4
               sleep, snum
           } 
           GetKeyState, stateF4, F4, P ; Bet/Raise
           if stateF4 = D ;
           {
               Coordmode, Mouse, Relative
               MouseClick, left, bet1, bet2
               sleep, snum
           }
        } 
        GetKeyState, stateF5, F5, P ; bet #5
        if stateF5 = D ;
        {
            Coordmode, Mouse, Relative
            MouseClick, left, nlwin1, nlwin2
            Send {DEL 8} 
            Send %bet5%{Enter}
            if site = 3
            {
               Coordmode, Mouse, Relative
               MouseClick, left, bet1, bet2
            }
            sleep, snum
        } 
        GetKeyState, stateF6, F6, P ; bet #6
        if stateF6 = D ;
        {
            Coordmode, Mouse, Relative
            MouseClick, left, nlwin1, nlwin2
            Send {DEL 8} 
            Send %bet6%{Enter}
            if site = 3
            {
               Coordmode, Mouse, Relative
               MouseClick, left, bet1, bet2
            }
            sleep, snum
        } 
        GetKeyState, stateF7, F7, P ; bet #7
        if stateF7 = D ;
        {
            Coordmode, Mouse, Relative
            MouseClick, left, nlwin1, nlwin2
            Send {DEL 8} 
            Send %bet7%{Enter}
            if site = 3
            {
               Coordmode, Mouse, Relative
               MouseClick, left, bet1, bet2
            }
            sleep, snum
        } 
        GetKeyState, stateF8, F8, P ; bet #8
        if stateF8 = D ;
        {
            Coordmode, Mouse, Relative
            MouseClick, left, nlwin1, nlwin2
            Send {DEL 8} 
            Send %bet8%
            if site = 3
            {
               Coordmode, Mouse, Relative
               MouseClick, left, bet1, bet2
            }
            sleep, snum
        } 
        GetKeyState, stateF9, F9, P ; NL Rebuy
        if stateF9 = D ;
        {
            Coordmode, Mouse, Relative
            MouseClick, left, nlrb1, nlrb2
            sleep, 400
            MouseClick, left, nlrb3, nlrb4
            Sleep, 400
            MouseClick, left, nlrb5, nlrb6
            if site <> 4
            {
               MouseClick, left, nlrb7, nlrb8
               if site <> 3
               {
                  Sleep, 400
                  MouseClick, left, nlrb9, nlrb10
               }
            }
            sleep, snum
        } 
        GetKeyState, stateF10, F10, P ; auto-post blinds
        if stateF10 = D ;
        {
            Coordmode, Mouse, Relative
            MouseClick, left, ap1, ap2
            sleep, snum
            if site = 3
            {
               MouseClick, left, 280, 525
               sleep, 500
               MouseClick, left, ap1, ap2
               sleep, snum
            }
        }
        GetKeyState, stateF11, F11, P ; clear NL bet amt
        if stateF11 = D ;
        {
            Coordmode, Mouse, Relative
            MouseClick, left, nlwin1, nlwin2
            Send {DEL 8} 
            sleep, snum
        } 

; gamepad buttons

        If buttons_down = B1# ;  Fold
        {
            Coordmode, Mouse, Relative
            MouseClick, left, fold1, fold2
            MouseClick, left, fold3, fold4
            sleep, snum
        }
        else if buttons_down = B2# ;  Check/Call
        {
            Coordmode, Mouse, Relative
            MouseClick, left, call1, call2
            MouseClick, left, call3, call4
            sleep, snum
        }
        else if buttons_down = B3# ;  Bet/Raise
        {
            Coordmode, Mouse, Relative
            MouseClick, left, bet1, bet2
            sleep, snum
        }
        else if buttons_down = B4# ;  Clear NL Bet Amount
        {
            Coordmode, Mouse, Relative
            MouseClick, left, nlwin1, nlwin2
            Send {DEL 8} 
            sleep, snum
        }
        else if buttons_down = B5# ;  Top Left
        {
            if bet_on = 0 ;
            {
                Coordmode, Mouse, Screen
                MouseClick, left, edge, tl1, t0
                sleep, snum
            }
            else if bet_on = 1 ;
            {
                Coordmode, Mouse, Relative
                MouseClick, left, nlwin1, nlwin2
                Send {DEL 8} 
                Send %bet5%{Enter}
                if site = 3
                {
                   Coordmode, Mouse, Relative
                   MouseClick, left, bet1, bet2
                }
                sleep, snum
            } 
        }
        else if buttons_down = B6# ;  Top Right
        {
            if bet_on = 0 ;
            {
                Coordmode, Mouse, Screen
                MouseClick, left, screenwide-edge-200, tr1, t0
                sleep, snum
            }
            else if bet_on = 1 ;
            {
                Coordmode, Mouse, Relative
                MouseClick, left, nlwin1, nlwin2
                Send {DEL 8} 
                Send %bet6%{Enter}
                if site = 3 ;
                {
                   Coordmode, Mouse, Relative
                   MouseClick, left, bet1, bet2
                }
                sleep, snum
            } 
        }
        else if buttons_down = B7# ;  Bottom Left
        {
            if bet_on = 0 ;
            {
                Coordmode, Mouse, Screen
                MouseClick, left, edge, screentall-bl1, t0
                sleep, snum
            }
            else if bet_on = 1 ;
            {
                Coordmode, Mouse, Relative
                MouseClick, left, nlwin1, nlwin2
                Send {DEL 8} 
                Send %bet7%{Enter}
                if site = 3
                {
                   Coordmode, Mouse, Relative
                   MouseClick, left, bet1, bet2
                }
                sleep, snum
            } 
        }
        else if buttons_down = B8# ;  Bottom Right
        {
            if bet_on = 0 ;
            {
                Coordmode, Mouse, Screen
                MouseClick, left, screenwide-edge, screentall-br1, t0
                sleep, snum
            }
            else if bet_on = 1 ;
            {
                Coordmode, Mouse, Relative
                if site = 4 ;  full tilt, make it a  bet pot btn, everybody else go all in
                {
                  MouseClick, left, 730,450
                  sleep, snum
                  MouseClick, left, bet1, bet2
                }
                else if site <> 4
                { 
                  MouseClick, left, nlwin1, nlwin2
                  Send {DEL 8} 
                  Send %bet8%
                  if site = 3
                  {
                     Coordmode, Mouse, Relative
                     MouseClick, left, bet1, bet2
                  }
                }
                sleep, snum
            } 
        }
        else if buttons_down = B9# ;  NL Rebuy
        {
            Coordmode, Mouse, Relative
            MouseClick, left, nlrb1, nlrb2
            sleep, 700
            MouseClick, left, nlrb3, nlrb4
            Sleep, 700
            MouseClick, left, nlrb5, nlrb6
            if site <> 4
            {
               Sleep, 200
               MouseClick, left, nlrb7, nlrb8
               Sleep, 700
               MouseClick, left, nlrb9, nlrb10
            }
            sleep, snum
        }
        else if buttons_down = B10# ;  Auto-post Blinds
        {
            Coordmode, Mouse, Relative
            MouseClick, left, ap1, ap2
            sleep, snum
            if site = 3
            {
               sleep, 500
               MouseClick, left, 280, 525
               sleep, 500
               MouseClick, left, ap1, ap2
               sleep, snum
            }
        }
        else if buttons_down = B11# ;  Switch Apps
        {
            Send, {ALTDOWN}{SHIFTDOWN}{TAB}{ALTUP}{SHIFTUP}
            sleep, snum
        }
        else if buttons_down = B12# ;  Switch Apps
        {
            Send, {ALTDOWN}{TAB}{ALTUP}
            sleep, snum
        }

; bottom right joystick for window selection

        else If (znum < 30) and (rnum < 30)  ;  top left
        {
            Coordmode, Mouse, Screen
            MouseClick, left, edge+150, tl1, t0
            sleep, snum
        }
        else If (znum > 40 and znum < 60) and (rnum < 30)  ;  top middle
        {
            Coordmode, Mouse, Screen
            MouseClick, left, screenwide / 2, tl1, t0
            sleep, snum
        }
        else If (znum > 70) and (rnum < 30)  ;  top right
        {
            Coordmode, Mouse, Screen
            MouseClick, left, screenwide-250, tl1, t0
            sleep, snum
        }
        else If (znum < 30) and (rnum > 40 and rnum < 60)  ;  middle left
        {
            Coordmode, Mouse, Screen
            MouseClick, left, 30, 175, t0
            sleep, snum
        }
        else If (znum > 70) and (rnum > 40 and rnum < 60)  ;  middle right
        {
            Coordmode, Mouse, Screen
            MouseClick, left, screenwide - edge - 75 , 175, t0
            sleep, snum
        }
        else If (znum < 30) and (rnum > 70)  ;  bottom left
        {
            Coordmode, Mouse, Screen
            MouseClick, left, edge, screentall-bl1, t0
            sleep, snum
        }
        else If (znum > 40 and znum < 60) and (rnum > 70)  ;  bottom middle
        {
            Coordmode, Mouse, Screen
            MouseClick, left, screenwide / 2, screentall-bl1, t0
            sleep, snum
        }
        else If (znum > 70) and (rnum > 70)  ;  bottom right
        {
            Coordmode, Mouse, Screen
            MouseClick, left, screenwide-edge, screentall-br1, t0
            sleep, snum
        }

; top left direction pad for chat

        else If pnum = 0  ;  top
        {
            Coordmode, Mouse, Relative
            MouseClick, left, cb1, cb2
            MouseClick, left, cb1, cb2
            Send {DEL 12} 
            Send %tchat%{Enter}
            sleep, snum
        }
        else If pnum = 9000  ;  right
        {
            Coordmode, Mouse, Relative
            MouseClick, left, cb1, cb2
            MouseClick, left, cb1, cb2
            Send {DEL 12} 
            Send %rchat%{Enter}
            sleep, snum
        }
        else If pnum = 18000  ;  bottom
        {
            Coordmode, Mouse, Relative
            MouseClick, left, cb1, cb2
            MouseClick, left, cb1, cb2
            Send {DEL 12} 
            Send %bchat%{Enter}
            sleep, snum
        }
        else If pnum = 27000  ;  left
        {
            Coordmode, Mouse, Relative
            MouseClick, left, cb1, cb2
            MouseClick, left, cb1, cb2
            Send {DEL 12} 
            Send %lchat%{Enter}
            sleep, snum
        }

; bottom left joystick  up/down for scrolling (ie web browsing), left/right for NL slider

        else if ynum < 30 ; scroll up
        {
            Send {PgUp}
            sleep, snum
        }
        else if ynum > 70 ; scroll down
        {
            Send {PgDn}
            sleep, snum
        }
        else If xnum < 30 ; NL slider left
        {
            Coordmode, Mouse, Relative
            MouseClick, left, slidel1, slidel2
            sleep, snum
        }
        else If xnum > 70 ; NL slider right
        {
            Coordmode, Mouse, Relative
            MouseClick, left, slider1, slider2
            sleep, snum
        }

sleep, snum

} ; the end of the big loop

return

; not bad eh?  12/07/2006

PokerGamePad (last edited 2006-12-17 00:02:01 by pool-138-89-86-237)