88#include <processthreadsapi.h>
99#include <windows.h>
1010
11-
1211#define KeyMonitor_Starter () \
13- HANDLE hThread1 = CreateThread(NULL, 0, KeyMonitor, NULL, 0, NULL)
12+ HANDLE hThread1 = CreateThread(NULL, 0, KeyMonitor, NULL, 0, NULL)
1413#define KeyMonitor_Stoper () CloseHandle(hThread1);
1514#elif defined(__linux__ ) || defined(__gnu_linux__ )
1615#include <pthread.h>
1716#include <unistd.h>
1817#define KeyMonitor_Starter () \
19- system("stty -icanon"); \
20- pthread_attr_t attr; \
21- pthread_t tid; \
22- pthread_attr_init(&attr); \
23- pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); \
24- pthread_create(&tid, &attr, KeyMonitor, NULL);
18+ system("stty -icanon"); \
19+ pthread_attr_t attr; \
20+ pthread_t tid; \
21+ pthread_attr_init(&attr); \
22+ pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); \
23+ pthread_create(&tid, &attr, KeyMonitor, NULL);
2524#define KeyMonitor_Stoper () pthread_join(tid, NULL);
2625#elif defined(__APPLE__ )
2726#endif
@@ -35,76 +34,71 @@ void *
3534#endif
3635KeyMonitor (void * arg ) // Direction Control:w,s,a,d-->Up Down Left Right
3736{
38- char k ;
39- while (1 )
40- {
37+ char k ;
38+ while (1 ) {
4139#if defined(_WIN16 ) || defined(_WIN32 ) || defined(_WIN64 )
42- k = _getch ();
40+ k = _getch ();
4341#elif defined(__linux__ ) || defined(__gnu_linux__ )
44- k = getchar ();
42+ k = getchar ();
4543#elif defined(__APPLE__ )
4644#endif
47- switch (k )
48- {
49- case 'w' : // Up
50- {
51- directiontemp = 2 ;
52- break ;
53- }
54- case 's' : // Down
55- {
56- directiontemp = -2 ;
57- break ;
58- }
59- case 'a' : // Left
60- {
61- directiontemp = -1 ;
62- break ;
63- }
64- case 'd' : // Right
65- {
66- directiontemp = 1 ;
67- break ;
68- }
69- case 'j' : // SpeedUp
70- {
71- delay = delay * 4 / 5 ;
72- break ;
73- }
74- case 'k' : // SpeedDown
75- {
76- delay = delay * 5 / 4 ;
77- break ;
78- }
79- case 27 : // ESC
80- {
81- printf ("\nExit!\n" );
82- isPause = 0 ;
83- direction = 0 ;
84- directiontemp = 0 ;
45+ switch (k ) {
46+ case 'w' : // Up
47+ {
48+ directiontemp = 2 ;
49+ break ;
50+ }
51+ case 's' : // Down
52+ {
53+ directiontemp = -2 ;
54+ break ;
55+ }
56+ case 'a' : // Left
57+ {
58+ directiontemp = -1 ;
59+ break ;
60+ }
61+ case 'd' : // Right
62+ {
63+ directiontemp = 1 ;
64+ break ;
65+ }
66+ case 'j' : // SpeedUp
67+ {
68+ delay = delay * 4 / 5 ;
69+ break ;
70+ }
71+ case 'k' : // SpeedDown
72+ {
73+ delay = delay * 5 / 4 ;
74+ break ;
75+ }
76+ case 27 : // ESC
77+ {
78+ printf ("\nExit!\n" );
79+ isPause = 0 ;
80+ direction = 0 ;
81+ directiontemp = 0 ;
8582#if defined(_WIN16 ) || defined(_WIN32 ) || defined(_WIN64 )
86- return 0 ;
83+ return 0 ;
8784#elif defined(__linux__ ) || defined(__gnu_linux__ )
88- return NULL ;
85+ return NULL ;
8986#elif defined(__APPLE__ )
9087#endif
91- break ;
92- }
93- case ' ' : // Space
94- {
95- if (isPause )
96- {
97- printf ("\nContinue!\n" );
98- }
99- else
100- {
101- printf ("\nPause!\n" );
102- }
103- isPause = !isPause ;
104- break ;
105- }
106- }
88+ break ;
89+ }
90+ case ' ' : // Space
91+ {
92+ if (isPause ) {
93+ printf ("\nContinue!\n" );
94+ } else {
95+ printf ("\nPause!\n" );
96+ }
97+ isPause = !isPause ;
98+ break ;
99+ }
107100 }
101+ }
108102}
109103
110104#endif /* _KEYMONITOR_H */
0 commit comments