author | llornkcor <llornkcor> | 2002-04-24 19:37:47 (UTC) |
---|---|---|
committer | llornkcor <llornkcor> | 2002-04-24 19:37:47 (UTC) |
commit | feaa245515b0746f6f70f590411c38e0a54c88ee (patch) (unidiff) | |
tree | 352ab6e61ea8e773d9f08f77db0ca36984c62c1d | |
parent | 17eb865ad8248b1f47c565b074b9b6bbbd44935b (diff) | |
download | opie-feaa245515b0746f6f70f590411c38e0a54c88ee.zip opie-feaa245515b0746f6f70f590411c38e0a54c88ee.tar.gz opie-feaa245515b0746f6f70f590411c38e0a54c88ee.tar.bz2 |
enable keyclicks and touchsound on zaurus
-rw-r--r-- | library/custom-sharp.h | 33 |
1 files changed, 18 insertions, 15 deletions
diff --git a/library/custom-sharp.h b/library/custom-sharp.h index f65d474..08f8a6f 100644 --- a/library/custom-sharp.h +++ b/library/custom-sharp.h | |||
@@ -10,138 +10,141 @@ | |||
10 | ** | 10 | ** |
11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | 11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | 12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
13 | ** | 13 | ** |
14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. | 14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. |
15 | ** | 15 | ** |
16 | ** Contact info@trolltech.com if any conditions of this licensing are | 16 | ** Contact info@trolltech.com if any conditions of this licensing are |
17 | ** not clear to you. | 17 | ** not clear to you. |
18 | ** | 18 | ** |
19 | **********************************************************************/ | 19 | **********************************************************************/ |
20 | 20 | ||
21 | #define QPE_OWNAPM | 21 | #define QPE_OWNAPM |
22 | #define QPE_HAVE_TOGGLELIGHT | 22 | #define QPE_HAVE_TOGGLELIGHT |
23 | #define QPE_NOCIBAUD | 23 | #define QPE_NOCIBAUD |
24 | #define QPE_STARTMENU | 24 | #define QPE_STARTMENU |
25 | #include <asm/sharp_apm.h> | 25 | #include <asm/sharp_apm.h> |
26 | #ifndef APM_IOC_BATTERY_BACK_CHK | 26 | #ifndef APM_IOC_BATTERY_BACK_CHK |
27 | #define APM_IOC_BATTERY_BACK_CHK _IO(APM_IOC_MAGIC, 32) | 27 | #define APM_IOC_BATTERY_BACK_CHK _IO(APM_IOC_MAGIC, 32) |
28 | #endif | 28 | #endif |
29 | #ifndef APM_IOC_BATTERY_MAIN_CHK | 29 | #ifndef APM_IOC_BATTERY_MAIN_CHK |
30 | #define APM_IOC_BATTERY_MAIN_CHK _IO(APM_IOC_MAGIC, 33) | 30 | #define APM_IOC_BATTERY_MAIN_CHK _IO(APM_IOC_MAGIC, 33) |
31 | #endif | 31 | #endif |
32 | 32 | ||
33 | #include <unistd.h> | 33 | #include <unistd.h> |
34 | #include <stdio.h> | 34 | #include <stdio.h> |
35 | #include <signal.h> | 35 | #include <signal.h> |
36 | #include <fcntl.h> | 36 | #include <fcntl.h> |
37 | #include <sys/ioctl.h> | 37 | #include <sys/ioctl.h> |
38 | 38 | ||
39 | #define SHARP_DEV_IOCTL_COMMAND_START 0x5680 | 39 | #define SHARP_DEV_IOCTL_COMMAND_START 0x5680 |
40 | 40 | ||
41 | /* --- for SHARP_BUZZER device --- */ | 41 | /* --- for SHARP_BUZZER device --- */ |
42 | #defineSHARP_BUZZER_IOCTL_START (SHARP_DEV_IOCTL_COMMAND_START) | 42 | #define SHARP_BUZZER_IOCTL_START (SHARP_DEV_IOCTL_COMMAND_START) |
43 | #define SHARP_BUZZER_MAKESOUND (SHARP_BUZZER_IOCTL_START) | 43 | #define SHARP_BUZZER_MAKESOUND (SHARP_BUZZER_IOCTL_START) |
44 | #define SHARP_BUZZER_SETVOLUME (SHARP_BUZZER_IOCTL_START+1) | 44 | #define SHARP_BUZZER_SETVOLUME (SHARP_BUZZER_IOCTL_START+1) |
45 | #define SHARP_BUZZER_GETVOLUME (SHARP_BUZZER_IOCTL_START+2) | 45 | #define SHARP_BUZZER_GETVOLUME (SHARP_BUZZER_IOCTL_START+2) |
46 | #define SHARP_BUZZER_ISSUPPORTED (SHARP_BUZZER_IOCTL_START+3) | 46 | #define SHARP_BUZZER_ISSUPPORTED (SHARP_BUZZER_IOCTL_START+3) |
47 | #define SHARP_BUZZER_SETMUTE (SHARP_BUZZER_IOCTL_START+4) | 47 | #define SHARP_BUZZER_SETMUTE (SHARP_BUZZER_IOCTL_START+4) |
48 | #define SHARP_BUZZER_STOPSOUND (SHARP_BUZZER_IOCTL_START+5) | 48 | #define SHARP_BUZZER_STOPSOUND (SHARP_BUZZER_IOCTL_START+5) |
49 | 49 | ||
50 | #define SHARP_BUZ_TOUCHSOUND 1 /* touch panel sound */ | 50 | #define SHARP_BUZ_TOUCHSOUND 1 /* touch panel sound */ |
51 | #define SHARP_BUZ_KEYSOUND 2 /* key sound */ | 51 | #define SHARP_BUZ_KEYSOUND 2 /* key sound */ |
52 | #define SHARP_PDA_ILLCLICKSOUND 3 /* illegal click */ | 52 | #define SHARP_PDA_ILLCLICKSOUND 3 /* illegal click */ |
53 | #define SHARP_PDA_WARNSOUND 4 /* warning occurred */ | 53 | #define SHARP_PDA_WARNSOUND 4 /* warning occurred */ |
54 | #define SHARP_PDA_ERRORSOUND 5 /* error occurred */ | 54 | #define SHARP_PDA_ERRORSOUND 5 /* error occurred */ |
55 | #define SHARP_PDA_CRITICALSOUND 6 /* critical error occurred */ | 55 | #define SHARP_PDA_CRITICALSOUND 6 /* critical error occurred */ |
56 | #define SHARP_PDA_SYSSTARTSOUND 7 /* system start */ | 56 | #define SHARP_PDA_SYSSTARTSOUND 7 /* system start */ |
57 | #define SHARP_PDA_SYSTEMENDSOUND 8 /* system shutdown */ | 57 | #define SHARP_PDA_SYSTEMENDSOUND 8 /* system shutdown */ |
58 | #define SHARP_PDA_APPSTART 9 /* application start */ | 58 | #define SHARP_PDA_APPSTART 9 /* application start */ |
59 | #define SHARP_PDA_APPQUIT 10 /* application ends */ | 59 | #define SHARP_PDA_APPQUIT 10 /* application ends */ |
60 | #define SHARP_BUZ_SCHEDULE_ALARM 11 /* schedule alarm */ | 60 | #define SHARP_BUZ_SCHEDULE_ALARM 11 /* schedule alarm */ |
61 | #define SHARP_BUZ_DAILY_ALARM 12 /* daily alarm */ | 61 | #define SHARP_BUZ_DAILY_ALARM 12 /* daily alarm */ |
62 | #define SHARP_BUZ_GOT_PHONE_CALL 13 /* phone call sound */ | 62 | #define SHARP_BUZ_GOT_PHONE_CALL 13 /* phone call sound */ |
63 | #define SHARP_BUZ_GOT_MAIL 14 /* mail sound */ | 63 | #define SHARP_BUZ_GOT_MAIL 14 /* mail sound */ |
64 | 64 | ||
65 | 65 | ||
66 | #define CUSTOM_BUZZER( sound ) \ | 66 | #define CUSTOM_BUZZER( sound ) \ |
67 | { \ | 67 | { \ |
68 | static int fd = open( "/dev/sharp_buz", O_RDWR|O_NONBLOCK ); \ | 68 | static int fd = open( "/dev/sharp_buz", O_RDWR|O_NONBLOCK ); \ |
69 | ioctl( fd, SHARP_BUZZER_MAKESOUND, sound ); \ | 69 | ioctl( fd, SHARP_BUZZER_MAKESOUND, sound ); \ |
70 | } | 70 | } |
71 | 71 | ||
72 | #define CUSTOM_SOUND_ALARM CUSTOM_BUZZER( SHARP_BUZ_SCHEDULE_ALARM ) | 72 | #define CUSTOM_SOUND_ALARM CUSTOM_BUZZER( SHARP_BUZ_SCHEDULE_ALARM ) |
73 | #define CUSTOM_SOUND_KEYCLICK CUSTOM_BUZZER( SHARP_BUZ_KEYSOUND ) | ||
74 | #define CUSTOM_SOUND_TOUCH CUSTOM_BUZZER( SHARP_BUZ_TOUCHSOUND ) | ||
75 | |||
73 | 76 | ||
74 | #include <sys/ioctl.h> | 77 | #include <sys/ioctl.h> |
75 | #include <asm/sharp_char.h> | 78 | #include <asm/sharp_char.h> |
76 | 79 | ||
77 | // a bit awkward, as this value is defined in emailclient.cpp aswell... | 80 | // a bit awkward, as this value is defined in emailclient.cpp aswell... |
78 | #define LED_MAIL 0 | 81 | #define LED_MAIL 0 |
79 | #define SHARP_LED_MAIL 9 | 82 | #define SHARP_LED_MAIL 9 |
80 | 83 | ||
81 | #define CUSTOM_LEDS( led, status ) \ | 84 | #define CUSTOM_LEDS( led, status ) \ |
82 | { \ | 85 | { \ |
83 | if ( led == LED_MAIL ) \ | 86 | if ( led == LED_MAIL ) \ |
84 | led = SHARP_LED_MAIL; \ | 87 | led = SHARP_LED_MAIL; \ |
85 | static int fd = open( "/dev/sharp_led", O_RDWR|O_NONBLOCK ); \ | 88 | static int fd = open( "/dev/sharp_led", O_RDWR|O_NONBLOCK ); \ |
86 | sharp_led_status leds; \ | 89 | sharp_led_status leds; \ |
87 | memset(&leds, 0, sizeof(leds)); \ | 90 | memset(&leds, 0, sizeof(leds)); \ |
88 | leds.which = led; \ | 91 | leds.which = led; \ |
89 | leds.status = status; \ | 92 | leds.status = status; \ |
90 | ioctl( fd, SHARP_LED_SETSTATUS, (char*)&leds ); \ | 93 | ioctl( fd, SHARP_LED_SETSTATUS, (char*)&leds ); \ |
91 | } | 94 | } |
92 | 95 | ||
93 | #define QPE_HAVE_MEMALERTER | 96 | #define QPE_HAVE_MEMALERTER |
94 | 97 | ||
95 | #define QPE_MEMALERTER_IMPL \ | 98 | #define QPE_MEMALERTER_IMPL \ |
96 | static void sig_handler(int sig) \ | 99 | static void sig_handler(int sig) \ |
97 | { \ | 100 | { \ |
98 | switch (sig) { \ | 101 | switch (sig) { \ |
99 | case SIGHUP: \ | 102 | case SIGHUP: \ |
100 | memstate = VeryLow; \ | 103 | memstate = VeryLow; \ |
101 | break; \ | 104 | break; \ |
102 | case SIGUSR1: \ | 105 | case SIGUSR1: \ |
103 | memstate = Normal; \ | 106 | memstate = Normal; \ |
104 | break; \ | 107 | break; \ |
105 | case SIGUSR2: \ | 108 | case SIGUSR2: \ |
106 | memstate = Low; \ | 109 | memstate = Low; \ |
107 | break; \ | 110 | break; \ |
108 | } \ | 111 | } \ |
109 | } \ | 112 | } \ |
110 | static void initMemalerter() \ | 113 | static void initMemalerter() \ |
111 | { \ | 114 | { \ |
112 | struct sigaction sa; \ | 115 | struct sigaction sa; \ |
113 | memset(&sa, '\0', sizeof sa); \ | 116 | memset(&sa, '\0', sizeof sa); \ |
114 | sa.sa_handler = sig_handler; \ | 117 | sa.sa_handler = sig_handler; \ |
115 | sa.sa_flags = SA_RESTART; \ | 118 | sa.sa_flags = SA_RESTART; \ |
116 | if (sigaction(SIGHUP, &sa, NULL) < 0) { \ | 119 | if (sigaction(SIGHUP, &sa, NULL) < 0) { \ |
117 | return; \ | 120 | return; \ |
118 | } \ | 121 | } \ |
119 | if (sigaction(SIGUSR1, &sa, NULL) < 0) { \ | 122 | if (sigaction(SIGUSR1, &sa, NULL) < 0) { \ |
120 | return; \ | 123 | return; \ |
121 | } \ | 124 | } \ |
122 | if (sigaction(SIGUSR2, &sa, NULL) < 0) { \ | 125 | if (sigaction(SIGUSR2, &sa, NULL) < 0) { \ |
123 | return; \ | 126 | return; \ |
124 | } \ | 127 | } \ |
125 | FILE *fo = fopen("/proc/sys/vm/freepg_signal_proc", "w"); \ | 128 | FILE *fo = fopen("/proc/sys/vm/freepg_signal_proc", "w"); \ |
126 | \ | 129 | \ |
127 | if (!fo) \ | 130 | if (!fo) \ |
128 | return; \ | 131 | return; \ |
129 | fprintf(fo, "qpe\n"); \ | 132 | fprintf(fo, "qpe\n"); \ |
130 | fclose(fo); \ | 133 | fclose(fo); \ |
131 | } | 134 | } |
132 | 135 | ||
133 | #define QPE_INITIAL_NUMLOCK_STATE \ | 136 | #define QPE_INITIAL_NUMLOCK_STATE \ |
134 | { \ | 137 | { \ |
135 | bool numLock = FALSE; \ | 138 | bool numLock = FALSE; \ |
136 | sharp_kbdctl_modifstat st; \ | 139 | sharp_kbdctl_modifstat st; \ |
137 | int dev = ::open("/dev/sharp_kbdctl", O_RDWR); \ | 140 | int dev = ::open("/dev/sharp_kbdctl", O_RDWR); \ |
138 | if( dev >= 0 ) { \ | 141 | if( dev >= 0 ) { \ |
139 | memset(&st, 0, sizeof(st)); \ | 142 | memset(&st, 0, sizeof(st)); \ |
140 | st.which = 3; \ | 143 | st.which = 3; \ |
141 | int ret = ioctl(dev, SHARP_KBDCTL_GETMODIFSTAT, (char*)&st); \ | 144 | int ret = ioctl(dev, SHARP_KBDCTL_GETMODIFSTAT, (char*)&st); \ |
142 | if( !ret ) \ | 145 | if( !ret ) \ |
143 | numLock = (bool)st.stat; \ | 146 | numLock = (bool)st.stat; \ |
144 | ::close(dev); \ | 147 | ::close(dev); \ |
145 | } \ | 148 | } \ |
146 | return numLock; \ | 149 | return numLock; \ |
147 | } | 150 | } |