Source: Jeff Keppinger to White Sox

NASHVILLE, Tenn. -- The Chicago White Sox have agreed to terms on a three-year, $12 million deal with free-agent infielder Jeff Keppinger, a source told ESPNChicago.com's Bruce Levine.

Most of Keppinger's experience is at second base, but that spot is occupied by Gordon Beckham. The 32-year old Keppinger has played 307 games at second, 145 at shortstop and 152 at third base, including 50 this past season with the Tampa Bay Rays.

The White Sox were not scared away, despite the fact that Keppinger suffered a broken leg last month while tripping on stairs at his home. The break, in his right fibula, was considered small and was repaired surgically.

Expectations are that Keppinger will be ready to start spring training on time in February, but might be asked to take it slow at first. He will benefit from a longer spring training as teams will report earlier because the World Baseball Classic is also this spring.

As a right-handed hitter, he is not an exact match for what the White Sox are looking for to balance out the offense.

Keppinger is a .288 career hitter over his eight-year major league career, with a .733 OPS. He had a .366 on-base percentage last season, 30 points over his career mark. He also hit a career-high nine home runs in 418 at-bats last season. His career best of 59 RBIs was in 2010 at Houston, where he received a career-high 575 at-bats.

Keppinger was a fourth-round pick by the Pittsburgh Pirates in the 2001 amateur draft and has played in the major leagues with the New York Mets, Kansas City Royals, Cincinnati Reds, Astros, San Francisco Giants and Rays.

ESPNChicago.com's Doug Padilla contributed to this report.