joy_test.c
上传用户:xk288cn
上传日期:2007-05-28
资源大小:4876k
文件大小:1k
源码类别:

GIS编程

开发平台:

Visual C++

  1. /* Copyright (c) Mark J. Kilgard, 1997. */
  2. /* This program is freely distributable without licensing fees 
  3.    and is provided without guarantee or warrantee expressed or 
  4.    implied. This program is -not- in the public domain. */
  5. #include <stdio.h>
  6. #include <stdlib.h>
  7. #include <GL/glut.h>
  8. void
  9. joystick(unsigned int buttonMask, int x, int y, int z)
  10. {
  11.   printf("joy 0x%x, x=%d y=%d z=%dn", buttonMask, x, y, z);
  12. }
  13. void
  14. joyPoll(void)
  15. {
  16.   printf("forcen");
  17.   glutForceJoystickFunc();
  18. }
  19. void
  20. menu(int value)
  21. {
  22.   switch(value) {
  23.   case 1:
  24.     glutJoystickFunc(joystick, 100);
  25.     glutIdleFunc(NULL);
  26.     break;
  27.   case 2:
  28.     glutJoystickFunc(NULL, 0);
  29.     glutIdleFunc(NULL);
  30.     break;
  31.   case 3:
  32.     glutJoystickFunc(joystick, 0);
  33.     glutIdleFunc(joyPoll);
  34.     break;
  35.   }
  36. }
  37. void
  38. display(void)
  39. {
  40.   glClear(GL_COLOR_BUFFER_BIT);
  41.   glFlush();
  42. }
  43. void
  44. keyboard(unsigned char c, int x, int y)
  45. {
  46.   if (c == 27) exit(0);
  47. }
  48. int
  49. main(int argc, char **argv)
  50. {
  51.   glutInit(&argc, argv);
  52.   glutCreateWindow("joystick test");
  53.   glClearColor(0.29, 0.62, 1.0, 0.0);
  54.   glutDisplayFunc(display);
  55.   glutKeyboardFunc(keyboard);
  56.   glutCreateMenu(menu);
  57.   glutAddMenuEntry("Enable joystick callback", 1);
  58.   glutAddMenuEntry("Disable joystick callback", 2);
  59.   glutAddMenuEntry("Force joystick polling", 3);
  60.   glutAttachMenu(GLUT_RIGHT_BUTTON);
  61.   glutMainLoop();
  62.   return 0;             /* ANSI C requires main to return int. */
  63. }