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 -
1) Fold (also F2 on the keyboard)
2) Check/Call (F3)
3) Bet/Raise (F4)
4) In a NL game will clear out the betting amount
5) Top Left window or predefined bet amount (F5)
6) Top Right window or predefined bet amount (F6)
7) Bottom Left window or predefined bet amount (F7)
8) Bottom Right window or predefined bet amount (F8) Full Tilt does Bet Pot
9) In a NL ring game will rebuy chips for the max buyin
10) Toggle the Auto-Post Blinds box on/off
11) Alt-Tab to next app
12) Shift-Alt-Tab to prev app
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...
; 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
