Mercurial > sdl-ios-xcode
comparison src/joystick/darwin/SDL_sysjoystick.c @ 617:86e0385b8f96
MacOS X joystick fix
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Sat, 03 May 2003 15:36:10 +0000 |
parents | a71ce390adeb |
children | 92080b127f82 |
comparison
equal
deleted
inserted
replaced
616:12c746afbc27 | 617:86e0385b8f96 |
---|---|
750 while (element) | 750 while (element) |
751 { | 751 { |
752 Uint8 pos = 0; | 752 Uint8 pos = 0; |
753 | 753 |
754 value = HIDGetElementValue(device, element); | 754 value = HIDGetElementValue(device, element); |
755 if (element->max == 3) /* 4 position hatswitch - scale up value */ | |
756 value *= 2; | |
757 else if (element->max != 7) /* Neither a 4 nor 8 positions - fall back to default position (centered) */ | |
758 value = -1; | |
755 switch(value) | 759 switch(value) |
756 { | 760 { |
757 case 0: | 761 case 0: |
758 pos = SDL_HAT_CENTERED; | 762 pos = SDL_HAT_UP; |
759 break; | 763 break; |
760 case 1: | 764 case 1: |
761 pos = SDL_HAT_UP; | 765 pos = SDL_HAT_RIGHTUP; |
762 break; | 766 break; |
763 case 2: | 767 case 2: |
764 pos = SDL_HAT_RIGHTUP; | 768 pos = SDL_HAT_RIGHT; |
765 break; | 769 break; |
766 case 3: | 770 case 3: |
767 pos = SDL_HAT_RIGHT; | 771 pos = SDL_HAT_RIGHTDOWN; |
768 break; | 772 break; |
769 case 4: | 773 case 4: |
770 pos = SDL_HAT_RIGHTDOWN; | 774 pos = SDL_HAT_DOWN; |
771 break; | 775 break; |
772 case 5: | 776 case 5: |
773 pos = SDL_HAT_DOWN; | 777 pos = SDL_HAT_LEFTDOWN; |
774 break; | 778 break; |
775 case 6: | 779 case 6: |
776 pos = SDL_HAT_LEFTDOWN; | 780 pos = SDL_HAT_LEFT; |
777 break; | 781 break; |
778 case 7: | 782 case 7: |
779 pos = SDL_HAT_LEFT; | 783 pos = SDL_HAT_LEFTUP; |
780 break; | 784 break; |
781 case 8: | 785 default: |
782 pos = SDL_HAT_LEFTUP; | 786 /* Every other value is mapped to center. We do that because some |
787 * joysticks use 8 and some 15 for this value, and apparently | |
788 * there are even more variants out there - so we try to be generous. | |
789 */ | |
790 pos = SDL_HAT_CENTERED; | |
783 break; | 791 break; |
784 } | 792 } |
785 if ( pos != joystick->hats[i] ) | 793 if ( pos != joystick->hats[i] ) |
786 SDL_PrivateJoystickHat(joystick, i, pos); | 794 SDL_PrivateJoystickHat(joystick, i, pos); |
787 element = element->pNext; | 795 element = element->pNext; |