Joystickの入力を取得するサンプルです。PygameのJoystickモジュールを使って作っています。Joystickはもちろん各種ゲームパッド(ゲームコントローラ)の入力データを取得出来ます。
最近ではMac対応を明記したものはゲームパッドはほとんど売られてないません。しかし、明記してなくても動作するものも多いです。
取り敢えず、自分のMac OS 10.6.4(Snow Leopard)、MacBookの環境で以下のゲームパッドで、入力データを取得する事が出来ました。

iBUFFALO USB 8ボタンゲームパッド デジタル 連射/マイク機能付 ファミコン風 レッド BGCFC802RDA
- 出版社/メーカー: バッファロー
- 発売日: 2007/08/01
- メディア: Personal Computers
- クリック: 7回
- この商品を含むブログ (4件) を見る
プログラムはこちら
#! /usr/bin/env python # coding: utf-8 # coding=utf-8 # -*- coding: utf-8 -*- # vim: fileencoding=utf-8 import pygame from pygame.locals import * SCREEN_WIDTH = 640 SCREEN_HEIGHT = 480 pygame.joystick.init() try: j = pygame.joystick.Joystick(0) # create a joystick instance j.init() # init instance print 'Joystickの名称: ' + j.get_name() print 'ボタン数 : ' + str(j.get_numbuttons()) except pygame.error: print 'Joystickが見つかりませんでした。' def main(): pygame.init() screen = pygame.display.set_mode( (SCREEN_WIDTH, SCREEN_HEIGHT) ) # 画面を作る pygame.display.set_caption('Joystick') # タイトル pygame.display.flip() # 画面を反映 while 1: for e in pygame.event.get(): # イベントチェック if e.type == QUIT: # 終了が押された? return if (e.type == KEYDOWN and e.key == K_ESCAPE): # ESCが押された? return # Joystick関連のイベントチェック if e.type == pygame.locals.JOYAXISMOTION: # 7 x , y = j.get_axis(0), j.get_axis(1) print 'x and y : ' + str(x) +' , '+ str(y) elif e.type == pygame.locals.JOYBALLMOTION: # 8 print 'ball motion' elif e.type == pygame.locals.JOYHATMOTION: # 9 print 'hat motion' elif e.type == pygame.locals.JOYBUTTONDOWN: # 10 print str(e.button)+'番目のボタンが押された' elif e.type == pygame.locals.JOYBUTTONUP: # 11 print str(e.button)+'番目のボタンが離された' if __name__ == '__main__': main() # end of file
参考サイト
joystick - Pygame Documentation
http://www.pygame.org/docs/ref/joystick.html#Joystick.get_numbuttons
Re: [pygame] joystick example
http://archives.seul.org/pygame/users/Sep-2005/msg00132.html
nakamura001 @ ウィキ - トップページ/Mac/ゲームパッド(Joystick)
http://www32.atwiki.jp/nakamura001/pages/111.html