mouse.c 962 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #include "u.h"
  2. #include "../port/lib.h"
  3. #include "mem.h"
  4. #include "dat.h"
  5. #include "fns.h"
  6. #include "../port/error.h"
  7. #include "io.h"
  8. #define Image IMAGE
  9. #include <draw.h>
  10. #include <memdraw.h>
  11. #include <cursor.h>
  12. #include "screen.h"
  13. enum {
  14. Button1 = 0x1;
  15. Button2 = 0x2;
  16. Button3 = 0x4;
  17. };
  18. int buttons;
  19. Point position;
  20. static void
  21. mousevent(void) {
  22. static int curbuttons;
  23. static Point curposition;
  24. if (buttons == curbuttons && eqpt(position, curposition))
  25. return;
  26. /* generate a mouse event */
  27. curbuttons = buttons;
  28. curposition = position;
  29. }
  30. void
  31. buttonevent(int event) {
  32. switch (event) {
  33. case 0x02:
  34. /* Button 2 down */
  35. buttons |= Button2;
  36. mousevent();
  37. break;
  38. case 0x82:
  39. /* Button 2 up */
  40. buttons &= ~Button2;
  41. mousevent();
  42. break;
  43. case 0x03:
  44. /* Button 3 down */
  45. buttons |= Button3;
  46. mousevent();
  47. break;
  48. case 0x83:
  49. /* Button 3 up */
  50. buttons &= ~Button3;
  51. mousevent();
  52. break;
  53. default:
  54. /* other buttons */
  55. }
  56. }