@jjlmoya/utils-hardware 1.18.0 → 1.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/package.json +1 -1
  2. package/src/category/index.ts +3 -1
  3. package/src/entries.ts +7 -1
  4. package/src/index.ts +2 -0
  5. package/src/tests/locale_completeness.test.ts +2 -2
  6. package/src/tests/pagespeed_best_practices.test.ts +198 -0
  7. package/src/tests/tool_validation.test.ts +2 -2
  8. package/src/tool/batteryHealthEstimator/component.astro +3 -3
  9. package/src/tool/gamepadTest/component.astro +4 -3
  10. package/src/tool/gamepadVibrationTester/component.astro +3 -3
  11. package/src/tool/keyboardTest/component.astro +6 -1
  12. package/src/tool/monitorGhostingTest/bibliography.astro +14 -0
  13. package/src/tool/monitorGhostingTest/bibliography.ts +20 -0
  14. package/src/tool/monitorGhostingTest/component.astro +156 -0
  15. package/src/tool/monitorGhostingTest/entry.ts +29 -0
  16. package/src/tool/monitorGhostingTest/i18n/de.ts +293 -0
  17. package/src/tool/monitorGhostingTest/i18n/en.ts +293 -0
  18. package/src/tool/monitorGhostingTest/i18n/es.ts +293 -0
  19. package/src/tool/monitorGhostingTest/i18n/fr.ts +293 -0
  20. package/src/tool/monitorGhostingTest/i18n/id.ts +293 -0
  21. package/src/tool/monitorGhostingTest/i18n/it.ts +293 -0
  22. package/src/tool/monitorGhostingTest/i18n/ja.ts +293 -0
  23. package/src/tool/monitorGhostingTest/i18n/ko.ts +293 -0
  24. package/src/tool/monitorGhostingTest/i18n/nl.ts +293 -0
  25. package/src/tool/monitorGhostingTest/i18n/pl.ts +293 -0
  26. package/src/tool/monitorGhostingTest/i18n/pt.ts +293 -0
  27. package/src/tool/monitorGhostingTest/i18n/ru.ts +293 -0
  28. package/src/tool/monitorGhostingTest/i18n/sv.ts +293 -0
  29. package/src/tool/monitorGhostingTest/i18n/tr.ts +293 -0
  30. package/src/tool/monitorGhostingTest/i18n/zh.ts +293 -0
  31. package/src/tool/monitorGhostingTest/index.ts +9 -0
  32. package/src/tool/monitorGhostingTest/logic.ts +195 -0
  33. package/src/tool/monitorGhostingTest/monitor-ghosting-test.css +546 -0
  34. package/src/tool/monitorGhostingTest/seo.astro +15 -0
  35. package/src/tool/monitorGhostingTest/ui.ts +30 -0
  36. package/src/tool/mouseDoubleClickTest/bibliography.astro +14 -0
  37. package/src/tool/mouseDoubleClickTest/bibliography.ts +16 -0
  38. package/src/tool/mouseDoubleClickTest/component.astro +135 -0
  39. package/src/tool/mouseDoubleClickTest/entry.ts +29 -0
  40. package/src/tool/mouseDoubleClickTest/i18n/de.ts +274 -0
  41. package/src/tool/mouseDoubleClickTest/i18n/en.ts +274 -0
  42. package/src/tool/mouseDoubleClickTest/i18n/es.ts +274 -0
  43. package/src/tool/mouseDoubleClickTest/i18n/fr.ts +274 -0
  44. package/src/tool/mouseDoubleClickTest/i18n/id.ts +285 -0
  45. package/src/tool/mouseDoubleClickTest/i18n/it.ts +274 -0
  46. package/src/tool/mouseDoubleClickTest/i18n/ja.ts +274 -0
  47. package/src/tool/mouseDoubleClickTest/i18n/ko.ts +274 -0
  48. package/src/tool/mouseDoubleClickTest/i18n/nl.ts +274 -0
  49. package/src/tool/mouseDoubleClickTest/i18n/pl.ts +274 -0
  50. package/src/tool/mouseDoubleClickTest/i18n/pt.ts +274 -0
  51. package/src/tool/mouseDoubleClickTest/i18n/ru.ts +274 -0
  52. package/src/tool/mouseDoubleClickTest/i18n/sv.ts +274 -0
  53. package/src/tool/mouseDoubleClickTest/i18n/tr.ts +274 -0
  54. package/src/tool/mouseDoubleClickTest/i18n/zh.ts +274 -0
  55. package/src/tool/mouseDoubleClickTest/index.ts +9 -0
  56. package/src/tool/mouseDoubleClickTest/logic.ts +258 -0
  57. package/src/tool/mouseDoubleClickTest/mouse-double-click-test.css +488 -0
  58. package/src/tool/mouseDoubleClickTest/seo.astro +15 -0
  59. package/src/tool/mouseDoubleClickTest/ui.ts +26 -0
  60. package/src/tool/mousePollingTest/logic/RatonManager.ts +6 -6
  61. package/src/tool/toneGenerator/component.astro +7 -7
  62. package/src/tools.ts +3 -2
@@ -0,0 +1,274 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { MouseDoubleClickTestUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
5
+
6
+ const slug = 'mouse-double-click-test';
7
+ const title = 'Mouse Double Click Test';
8
+ const description =
9
+ 'Test every mouse button and detect unwanted double-clicks, worn switches, and contact bounce with per-button timing in your browser.';
10
+
11
+ const faqData = [
12
+ {
13
+ question: 'What is a mouse double-click problem?',
14
+ answer:
15
+ 'A double-click problem happens when one physical press is reported as two clicks. It can affect the left button, right button, wheel click, or side buttons, and is usually caused by switch wear, contact bounce, firmware debounce settings, or wireless signal instability.',
16
+ },
17
+ {
18
+ question: 'What gap counts as suspicious?',
19
+ answer:
20
+ 'Very short gaps between clicks are suspicious because human double-clicks usually take more time. This tool starts at an 80 ms threshold, but you can adjust it depending on the mouse and your testing style.',
21
+ },
22
+ {
23
+ question: 'Can a browser prove the switch is broken?',
24
+ answer:
25
+ 'A browser cannot inspect the electrical switch directly, but it can record the click events your operating system receives. Repeated suspicious gaps during single-click testing are strong evidence of bounce or unwanted double-clicking.',
26
+ },
27
+ {
28
+ question: 'How should I test correctly?',
29
+ answer:
30
+ 'Click slowly and deliberately, aiming for single presses. If the suspicious counter rises even when you are not intentionally double-clicking, repeat the test on another USB port, another browser, and another computer if possible.',
31
+ },
32
+ ];
33
+
34
+ const howToData = [
35
+ {
36
+ name: 'Set the detection threshold',
37
+ text: 'Start with 80 ms. Lower it for strict switch-bounce detection or raise it if your device produces slightly wider accidental gaps.',
38
+ },
39
+ {
40
+ name: 'Click like a normal single-click',
41
+ text: 'Press each mouse button one click at a time over the mouse visual. Do not intentionally double-click during the first pass.',
42
+ },
43
+ {
44
+ name: 'Watch the suspicious counter',
45
+ text: 'If suspicious events appear while you are making single clicks, check which visual button was highlighted and compare it with the compact event chips.',
46
+ },
47
+ {
48
+ name: 'Compare with another device',
49
+ text: 'A healthy mouse should keep a high score under the same threshold. Comparing devices helps separate hardware faults from software settings.',
50
+ },
51
+ ];
52
+
53
+ const faqSchema: WithContext<FAQPage> = {
54
+ '@context': 'https://schema.org',
55
+ '@type': 'FAQPage',
56
+ mainEntity: faqData.map((item) => ({
57
+ '@type': 'Question',
58
+ name: item.question,
59
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
60
+ })),
61
+ };
62
+
63
+ const howToSchema: WithContext<HowTo> = {
64
+ '@context': 'https://schema.org',
65
+ '@type': 'HowTo',
66
+ name: title,
67
+ description,
68
+ step: howToData.map((step, i) => ({
69
+ '@type': 'HowToStep',
70
+ position: i + 1,
71
+ name: step.name,
72
+ text: step.text,
73
+ })),
74
+ };
75
+
76
+ const appSchema: WithContext<SoftwareApplication> = {
77
+ '@context': 'https://schema.org',
78
+ '@type': 'SoftwareApplication',
79
+ name: title,
80
+ description,
81
+ applicationCategory: 'UtilityApplication',
82
+ operatingSystem: 'All',
83
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' },
84
+ inLanguage: 'en',
85
+ };
86
+
87
+ export const content: ToolLocaleContent<MouseDoubleClickTestUI> = {
88
+ slug,
89
+ title,
90
+ description,
91
+ faq: faqData,
92
+ howTo: howToData,
93
+ schemas: [faqSchema, howToSchema, appSchema],
94
+ bibliography,
95
+ seo: [
96
+ {
97
+ type: 'title',
98
+ text: 'Mouse Double Click Test: Diagnose Button Bounce Online',
99
+ level: 2,
100
+ },
101
+ {
102
+ type: 'paragraph',
103
+ html: 'A mouse that double-clicks when you press once is not just annoying. It can open folders by accident, cancel drag-and-drop actions, fire two shots in a game, close browser tabs, or make right-click menus appear and disappear before you can use them. This online mouse double click test focuses on the useful diagnostic signal: <strong>the time gap between button events reported by your operating system</strong>.',
104
+ },
105
+ {
106
+ type: 'paragraph',
107
+ html: 'Unlike a basic click counter, this tool tracks every button independently: left click, right click, wheel click, browser back, and browser forward. That matters because a mouse can have a failing right button while the left button is still healthy, or a worn side button that only misfires after months of gaming or productivity shortcuts.',
108
+ },
109
+ {
110
+ type: 'title',
111
+ text: 'What This Mouse Button Test Measures',
112
+ level: 3,
113
+ },
114
+ {
115
+ type: 'paragraph',
116
+ html: 'When you press a mouse button, the browser receives a pointer event containing the button code. The tool stores the last timestamp for that same physical button and compares it with the next press of the same button. If the gap is shorter than your selected threshold, the event is marked as suspicious because a normal intentional second click usually takes longer.',
117
+ },
118
+ {
119
+ type: 'list',
120
+ items: [
121
+ 'Left button: useful for detecting accidental double-clicks when opening files, selecting text, or dragging windows',
122
+ 'Right button: useful when context menus flicker, open twice, or close immediately',
123
+ 'Wheel button: useful for mice where middle-click opens multiple tabs or fails after heavy browsing',
124
+ 'Back and Forward buttons: useful for gaming mice and productivity mice with side switches',
125
+ 'Per-button timing: avoids mixing a left click with a right click and calling it a false double-click',
126
+ ],
127
+ },
128
+ {
129
+ type: 'title',
130
+ text: 'Why Mice Start Double-Clicking',
131
+ level: 3,
132
+ },
133
+ {
134
+ type: 'paragraph',
135
+ html: 'Most mice use small mechanical switches under each button. When the switch contacts close, the metal can bounce electrically for a very short period before settling. The mouse firmware normally filters that noise with debounce logic. As the switch wears out, the bounce can become longer, noisier, or inconsistent, so the computer receives two button presses even though your finger made one physical press.',
136
+ },
137
+ {
138
+ type: 'paragraph',
139
+ html: 'Double-clicking is not always caused by the same thing. It may be mechanical switch wear, firmware debounce set too aggressively, dust or oxidation inside the switch, wireless packet instability, macro software, a damaged cable, or an operating system setting that makes accidental double-clicks easier to notice.',
140
+ },
141
+ {
142
+ type: 'table',
143
+ headers: ['Symptom', 'Likely Cause', 'What to Test'],
144
+ rows: [
145
+ ['One click opens files as if double-clicked', 'Left switch bounce or OS double-click speed confusion', 'Test Left with slow single presses at 80 ms'],
146
+ ['Right-click menu flashes or closes', 'Right switch bounce or software intercepting context menus', 'Test Right and disable mouse utilities temporarily'],
147
+ ['Middle-click opens two tabs', 'Wheel switch wear', 'Test Wheel with deliberate single presses'],
148
+ ['Back button jumps two pages', 'Side switch bounce or browser shortcut repeat', 'Test Back and Forward separately'],
149
+ ['Only happens wirelessly', 'Wireless interference, low battery, or receiver placement', 'Retest wired or move receiver closer'],
150
+ ],
151
+ },
152
+ {
153
+ type: 'title',
154
+ text: 'Choosing the Right Debounce Threshold',
155
+ level: 3,
156
+ },
157
+ {
158
+ type: 'paragraph',
159
+ html: 'The threshold is the maximum gap that this tool still considers suspicious. The default value, <strong>80 ms</strong>, is a practical middle ground: strict enough to catch many unwanted duplicate events, but not so aggressive that every normal deliberate double-click becomes a hardware failure.',
160
+ },
161
+ {
162
+ type: 'table',
163
+ headers: ['Threshold', 'Best For', 'How to Interpret It'],
164
+ rows: [
165
+ ['30-50 ms', 'Strict electrical bounce checks', 'Good for confirming very fast duplicate events from a worn switch'],
166
+ ['60-90 ms', 'General mouse double-click diagnosis', 'Best default range for most gaming and office mice'],
167
+ ['100-140 ms', 'Intermittent worn switches', 'Useful when the mouse sometimes creates wider accidental gaps'],
168
+ ['150-180 ms', 'Stress testing and weak switches', 'Use carefully, because fast intentional double-clicks can fall into this range'],
169
+ ],
170
+ },
171
+ {
172
+ type: 'title',
173
+ text: 'How to Run a Reliable Test',
174
+ level: 3,
175
+ },
176
+ {
177
+ type: 'paragraph',
178
+ html: 'For the first pass, do not intentionally double-click. Press each mouse button slowly and deliberately, one button at a time, while the cursor is over the mouse visual. A healthy switch should produce stable single events. If the suspicious counter increases during slow single presses, repeat the same button test several times to confirm the pattern.',
179
+ },
180
+ {
181
+ type: 'list',
182
+ items: [
183
+ 'Test Left for 20 to 30 slow presses, then Right, then Wheel, then side buttons',
184
+ 'Do not drag the mouse while testing button bounce, because movement can distract from the timing result',
185
+ 'If a button shows suspicious events, repeat the same test after changing USB port or browser',
186
+ 'For wireless mice, test with a fresh battery and the receiver close to the mouse',
187
+ 'If only one button fails repeatedly, the fault is probably that specific switch rather than the whole device',
188
+ ],
189
+ },
190
+ {
191
+ type: 'title',
192
+ text: 'Interpreting the Results',
193
+ level: 3,
194
+ },
195
+ {
196
+ type: 'table',
197
+ headers: ['Result', 'Meaning', 'Recommended Next Step'],
198
+ rows: [
199
+ ['0 suspicious events after many presses', 'The tested buttons look healthy under the selected threshold', 'Keep the default threshold or test again later if symptoms return'],
200
+ ['1 isolated suspicious event', 'Could be a real bounce or an accidental fast press', 'Repeat the same button slowly before drawing conclusions'],
201
+ ['Repeated suspicious events on one button', 'Strong sign of switch bounce or worn contacts', 'Test on another computer and document the result'],
202
+ ['Suspicious events on every button', 'Could be software, driver, macro utility, or browser environment', 'Disable mouse software and retest'],
203
+ ['Only wireless mode fails', 'Likely battery, receiver placement, or interference', 'Try wired mode or move the receiver closer'],
204
+ ],
205
+ },
206
+ {
207
+ type: 'paragraph',
208
+ html: 'The health score is a quick summary, not a final verdict. The most important evidence is <strong>which button</strong> produced suspicious events and whether the pattern repeats when you press that same button slowly. A single bad event during a rushed test is less meaningful than five suspicious right-click events during deliberate single presses.',
209
+ },
210
+ {
211
+ type: 'title',
212
+ text: 'Before You Replace the Mouse',
213
+ level: 3,
214
+ },
215
+ {
216
+ type: 'list',
217
+ items: [
218
+ 'Check whether your mouse software has a debounce-time setting and test again after changing it',
219
+ 'Disable macros, rapid-fire profiles, or button remapping utilities during diagnosis',
220
+ 'Try a different USB port, especially if you use a hub or front-panel connector',
221
+ 'For wireless mice, test with the dongle on an extension cable near the mouse pad',
222
+ 'Compare with another mouse on the same computer to separate hardware failure from software behavior',
223
+ ],
224
+ },
225
+ {
226
+ type: 'title',
227
+ text: 'Repair, Warranty, and Evidence',
228
+ level: 3,
229
+ },
230
+ {
231
+ type: 'paragraph',
232
+ html: 'If the fault is mechanical, cleaning the outside shell rarely fixes it permanently because the problem is inside the switch contacts. Some users replace the microswitch, but that requires soldering and is not worth it for every mouse. If the mouse is under warranty, repeated suspicious gaps on the same button are useful evidence when explaining the issue to support.',
233
+ },
234
+ {
235
+ type: 'paragraph',
236
+ html: 'For warranty claims, record a short screen capture while you press the failing button slowly. Make sure the event chips show the button label and the suspicious timing. This is clearer than saying "my mouse double-clicks sometimes" because it demonstrates the actual button and the approximate timing of the unwanted duplicate event.',
237
+ },
238
+ {
239
+ type: 'title',
240
+ text: 'Limitations of a Browser-Based Mouse Test',
241
+ level: 3,
242
+ },
243
+ {
244
+ type: 'paragraph',
245
+ html: 'This test measures the events that reach the browser. It cannot directly inspect the electrical waveform inside the switch, and it cannot bypass every driver, operating system, or vendor utility. That is still useful: if the browser receives duplicate events, your normal applications can receive them too. For engineering-level validation, hardware tools such as oscilloscopes or switch testers provide deeper evidence, but they are not necessary for most user diagnostics.',
246
+ },
247
+ ],
248
+ ui: {
249
+ badge: 'Switch Bounce Lab',
250
+ clickTarget: 'Button Matrix',
251
+ clickTargetHint: 'Press left, right, wheel, back, and forward',
252
+ totalClicks: 'Total',
253
+ suspiciousClicks: 'Suspicious',
254
+ fastestGap: 'Fastest gap',
255
+ healthScore: 'Health score',
256
+ thresholdLabel: 'Detection threshold',
257
+ thresholdUnit: 'ms',
258
+ cleanEvent: 'clean',
259
+ suspiciousEvent: 'suspect',
260
+ reset: 'Reset',
261
+ statusIdle: 'Press each mouse button to test it independently',
262
+ statusClean: 'No suspicious button bounce detected',
263
+ statusWarning: 'Suspicious bounce detected on a mouse button',
264
+ lastGap: 'Last event',
265
+ logTitle: 'Recent button events',
266
+ emptyLog: 'Press any mouse button over the mouse body.',
267
+ leftButton: 'Left',
268
+ middleButton: 'Wheel',
269
+ rightButton: 'Right',
270
+ backButton: 'Back',
271
+ forwardButton: 'Forward',
272
+ otherButton: 'Other',
273
+ },
274
+ };
@@ -0,0 +1,274 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { MouseDoubleClickTestUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
5
+
6
+ const slug = 'prueba-doble-clic-raton';
7
+ const title = 'Prueba de Doble Clic del Ratón';
8
+ const description =
9
+ 'Prueba cada botón del ratón y detecta dobles clics no deseados, interruptores desgastados y rebote de contactos con medición de tiempo por botón en tu navegador.';
10
+
11
+ const faqData = [
12
+ {
13
+ question: '¿Qué es un problema de doble clic del ratón?',
14
+ answer:
15
+ 'Un problema de doble clic ocurre cuando una pulsación física se registra como dos clics. Puede afectar al botón izquierdo, derecho, clic de rueda o botones laterales, y suele deberse al desgaste del interruptor, rebote de contactos, configuración de antirrebote del firmware o inestabilidad de la señal inalámbrica.',
16
+ },
17
+ {
18
+ question: '¿Qué intervalo se considera sospechoso?',
19
+ answer:
20
+ 'Los intervalos muy cortos entre clics son sospechosos porque los dobles clics humanos suelen tardar más. Esta herramienta comienza con un umbral de 80 ms, pero puedes ajustarlo según el ratón y tu estilo de prueba.',
21
+ },
22
+ {
23
+ question: '¿Puede un navegador demostrar que el interruptor está roto?',
24
+ answer:
25
+ 'Un navegador no puede inspeccionar directamente el interruptor eléctrico, pero puede registrar los eventos de clic que recibe el sistema operativo. Intervalos sospechosos repetidos durante pruebas de clic simple son una fuerte evidencia de rebote o doble clic no deseado.',
26
+ },
27
+ {
28
+ question: '¿Cómo debo probar correctamente?',
29
+ answer:
30
+ 'Haz clic lenta y deliberadamente, buscando pulsaciones simples. Si el contador de sospechosos aumenta incluso cuando no estás haciendo doble clic intencionadamente, repite la prueba en otro puerto USB, otro navegador y otro ordenador si es posible.',
31
+ },
32
+ ];
33
+
34
+ const howToData = [
35
+ {
36
+ name: 'Establece el umbral de detección',
37
+ text: 'Comienza con 80 ms. Bájalo para una detección estricta de rebotes o súbelo si tu dispositivo produce intervalos accidentales ligeramente más amplios.',
38
+ },
39
+ {
40
+ name: 'Haz clic como un clic simple normal',
41
+ text: 'Pulsa cada botón del ratón de uno en uno sobre la imagen del ratón. No hagas doble clic intencionadamente durante la primera pasada.',
42
+ },
43
+ {
44
+ name: 'Observa el contador de sospechosos',
45
+ text: 'Si aparecen eventos sospechosos mientras haces clics simples, comprueba qué botón visual se resaltó y compáralo con los chips de eventos.',
46
+ },
47
+ {
48
+ name: 'Compara con otro dispositivo',
49
+ text: 'Un ratón sano debería mantener una puntuación alta bajo el mismo umbral. Comparar dispositivos ayuda a distinguir fallos de hardware de configuraciones de software.',
50
+ },
51
+ ];
52
+
53
+ const faqSchema: WithContext<FAQPage> = {
54
+ '@context': 'https://schema.org',
55
+ '@type': 'FAQPage',
56
+ mainEntity: faqData.map((item) => ({
57
+ '@type': 'Question',
58
+ name: item.question,
59
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
60
+ })),
61
+ };
62
+
63
+ const howToSchema: WithContext<HowTo> = {
64
+ '@context': 'https://schema.org',
65
+ '@type': 'HowTo',
66
+ name: title,
67
+ description,
68
+ step: howToData.map((step, i) => ({
69
+ '@type': 'HowToStep',
70
+ position: i + 1,
71
+ name: step.name,
72
+ text: step.text,
73
+ })),
74
+ };
75
+
76
+ const appSchema: WithContext<SoftwareApplication> = {
77
+ '@context': 'https://schema.org',
78
+ '@type': 'SoftwareApplication',
79
+ name: title,
80
+ description,
81
+ applicationCategory: 'UtilityApplication',
82
+ operatingSystem: 'All',
83
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' },
84
+ inLanguage: 'es',
85
+ };
86
+
87
+ export const content: ToolLocaleContent<MouseDoubleClickTestUI> = {
88
+ slug,
89
+ title,
90
+ description,
91
+ faq: faqData,
92
+ howTo: howToData,
93
+ schemas: [faqSchema, howToSchema, appSchema],
94
+ bibliography,
95
+ seo: [
96
+ {
97
+ type: 'title',
98
+ text: 'Prueba de Doble Clic del Ratón: Diagnostica el Rebote de Botones Online',
99
+ level: 2,
100
+ },
101
+ {
102
+ type: 'paragraph',
103
+ html: 'Un ratón que hace doble clic cuando pulsas una vez no es solo molesto. Puede abrir carpetas por accidente, cancelar acciones de arrastrar y soltar, disparar dos veces en un juego, cerrar pestañas del navegador o hacer que los menús contextuales aparezcan y desaparezcan antes de que puedas usarlos. Esta prueba online de doble clic del ratón se centra en la señal diagnóstica útil: <strong>el intervalo de tiempo entre los eventos de botón reportados por tu sistema operativo</strong>.',
104
+ },
105
+ {
106
+ type: 'paragraph',
107
+ html: 'A diferencia de un simple contador de clics, esta herramienta registra cada botón de forma independiente: clic izquierdo, clic derecho, clic de rueda, retroceso y avance del navegador. Esto importa porque un ratón puede tener el botón derecho defectuoso mientras el izquierdo sigue sano, o un botón lateral desgastado que solo falla tras meses de uso en juegos o atajos de productividad.',
108
+ },
109
+ {
110
+ type: 'title',
111
+ text: 'Qué Mide Esta Prueba de Botones del Ratón',
112
+ level: 3,
113
+ },
114
+ {
115
+ type: 'paragraph',
116
+ html: 'Cuando pulsas un botón del ratón, el navegador recibe un evento de puntero con el código del botón. La herramienta almacena la última marca de tiempo de ese mismo botón físico y la compara con la siguiente pulsación del mismo botón. Si el intervalo es más corto que el umbral seleccionado, el evento se marca como sospechoso porque un segundo clic normal e intencionado suele tardar más.',
117
+ },
118
+ {
119
+ type: 'list',
120
+ items: [
121
+ 'Botón izquierdo: útil para detectar dobles clics accidentales al abrir archivos, seleccionar texto o arrastrar ventanas',
122
+ 'Botón derecho: útil cuando los menús contextuales parpadean, se abren dos veces o se cierran inmediatamente',
123
+ 'Botón de rueda: útil para ratones donde el clic central abre múltiples pestañas o falla tras una navegación intensa',
124
+ 'Botones de retroceso y avance: útiles para ratones gaming y de productividad con interruptores laterales',
125
+ 'Medición por botón: evita mezclar un clic izquierdo con un clic derecho y llamarlo falso doble clic',
126
+ ],
127
+ },
128
+ {
129
+ type: 'title',
130
+ text: 'Por Qué los Ratones Empiezan a Hacer Doble Clic',
131
+ level: 3,
132
+ },
133
+ {
134
+ type: 'paragraph',
135
+ html: 'La mayoría de los ratones usan pequeños interruptores mecánicos bajo cada botón. Cuando los contactos del interruptor se cierran, el metal puede rebotar eléctricamente durante un período muy breve antes de estabilizarse. El firmware del ratón normalmente filtra ese ruido con lógica antirrebote. A medida que el interruptor se desgasta, el rebote puede volverse más largo, más ruidoso o inconsistente, por lo que el ordenador recibe dos pulsaciones aunque tu dedo haya hecho una sola pulsación física.',
136
+ },
137
+ {
138
+ type: 'paragraph',
139
+ html: 'El doble clic no siempre tiene la misma causa. Puede ser desgaste mecánico del interruptor, antirrebote del firmware demasiado agresivo, polvo u oxidación dentro del interruptor, inestabilidad de paquetes inalámbricos, software de macros, un cable dañado o una configuración del sistema operativo que hace más notorios los dobles clics accidentales.',
140
+ },
141
+ {
142
+ type: 'table',
143
+ headers: ['Síntoma', 'Causa Probable', 'Qué Probar'],
144
+ rows: [
145
+ ['Un clic abre archivos como si fuera doble clic', 'Rebote del interruptor izquierdo o confusión de velocidad de doble clic del SO', 'Prueba Izquierdo con pulsaciones simples lentas a 80 ms'],
146
+ ['El menú de clic derecho parpadea o se cierra', 'Rebote del interruptor derecho o software que intercepta menús contextuales', 'Prueba Derecho y desactiva temporalmente las utilidades del ratón'],
147
+ ['El clic central abre dos pestañas', 'Desgaste del interruptor de rueda', 'Prueba Rueda con pulsaciones simples deliberadas'],
148
+ ['El botón de retroceso salta dos páginas', 'Rebote del interruptor lateral o repetición de atajo del navegador', 'Prueba Retroceso y Avance por separado'],
149
+ ['Solo ocurre de forma inalámbrica', 'Interferencia inalámbrica, batería baja o ubicación del receptor', 'Vuelve a probar con cable o acerca el receptor'],
150
+ ],
151
+ },
152
+ {
153
+ type: 'title',
154
+ text: 'Eligiendo el Umbral de Antirrebote Adecuado',
155
+ level: 3,
156
+ },
157
+ {
158
+ type: 'paragraph',
159
+ html: 'El umbral es el intervalo máximo que esta herramienta aún considera sospechoso. El valor predeterminado, <strong>80 ms</strong>, es un punto medio práctico: lo bastante estricto para detectar muchos eventos duplicados no deseados, pero no tan agresivo como para que cada doble clic deliberado normal se convierta en un fallo de hardware.',
160
+ },
161
+ {
162
+ type: 'table',
163
+ headers: ['Umbral', 'Ideal Para', 'Cómo Interpretarlo'],
164
+ rows: [
165
+ ['30-50 ms', 'Pruebas estrictas de rebote eléctrico', 'Bueno para confirmar eventos duplicados muy rápidos de un interruptor desgastado'],
166
+ ['60-90 ms', 'Diagnóstico general de doble clic del ratón', 'Mejor rango predeterminado para la mayoría de ratones gaming y de oficina'],
167
+ ['100-140 ms', 'Interruptores desgastados intermitentes', 'Útil cuando el ratón a veces crea intervalos accidentales más amplios'],
168
+ ['150-180 ms', 'Pruebas de estrés e interruptores débiles', 'Usar con cuidado, porque los dobles clics intencionados rápidos pueden caer en este rango'],
169
+ ],
170
+ },
171
+ {
172
+ type: 'title',
173
+ text: 'Cómo Realizar una Prueba Fiable',
174
+ level: 3,
175
+ },
176
+ {
177
+ type: 'paragraph',
178
+ html: 'En la primera pasada, no hagas doble clic intencionadamente. Pulsa cada botón del ratón lenta y deliberadamente, uno cada vez, con el cursor sobre la imagen del ratón. Un interruptor sano debería producir eventos simples estables. Si el contador de sospechosos aumenta durante pulsaciones simples lentas, repite la misma prueba de botón varias veces para confirmar el patrón.',
179
+ },
180
+ {
181
+ type: 'list',
182
+ items: [
183
+ 'Prueba Izquierdo con 20 a 30 pulsaciones lentas, luego Derecho, luego Rueda, luego los botones laterales',
184
+ 'No arrastres el ratón mientras pruebas el rebote de botones, ya que el movimiento puede distraer del resultado de tiempo',
185
+ 'Si un botón muestra eventos sospechosos, repite la misma prueba tras cambiar de puerto USB o navegador',
186
+ 'Para ratones inalámbricos, prueba con una batería nueva y el receptor cerca del ratón',
187
+ 'Si solo un botón falla repetidamente, el fallo probablemente está en ese interruptor específico y no en todo el dispositivo',
188
+ ],
189
+ },
190
+ {
191
+ type: 'title',
192
+ text: 'Interpretando los Resultados',
193
+ level: 3,
194
+ },
195
+ {
196
+ type: 'table',
197
+ headers: ['Resultado', 'Significado', 'Siguiente Paso Recomendado'],
198
+ rows: [
199
+ ['0 eventos sospechosos tras muchas pulsaciones', 'Los botones probados parecen sanos bajo el umbral seleccionado', 'Mantén el umbral predeterminado o vuelve a probar más tarde si los síntomas reaparecen'],
200
+ ['1 evento sospechoso aislado', 'Podría ser un rebote real o una pulsación rápida accidental', 'Repite el mismo botón lentamente antes de sacar conclusiones'],
201
+ ['Eventos sospechosos repetidos en un botón', 'Fuerte indicio de rebote de interruptor o contactos desgastados', 'Prueba en otro ordenador y documenta el resultado'],
202
+ ['Eventos sospechosos en cada botón', 'Podría ser software, controlador, utilidad de macros o entorno del navegador', 'Desactiva el software del ratón y vuelve a probar'],
203
+ ['Solo falla el modo inalámbrico', 'Probablemente batería, ubicación del receptor o interferencia', 'Prueba el modo con cable o acerca el receptor'],
204
+ ],
205
+ },
206
+ {
207
+ type: 'paragraph',
208
+ html: 'La puntuación de salud es un resumen rápido, no un veredicto final. La evidencia más importante es <strong>qué botón</strong> produjo eventos sospechosos y si el patrón se repite al pulsar ese mismo botón lentamente. Un solo evento malo durante una prueba apresurada es menos significativo que cinco eventos sospechosos de clic derecho durante pulsaciones simples deliberadas.',
209
+ },
210
+ {
211
+ type: 'title',
212
+ text: 'Antes de Reemplazar el Ratón',
213
+ level: 3,
214
+ },
215
+ {
216
+ type: 'list',
217
+ items: [
218
+ 'Comprueba si el software de tu ratón tiene un ajuste de tiempo de antirrebote y prueba de nuevo tras cambiarlo',
219
+ 'Desactiva macros, perfiles de disparo rápido o reasignaciones de botones durante el diagnóstico',
220
+ 'Prueba un puerto USB diferente, especialmente si usas un hub o conector del panel frontal',
221
+ 'Para ratones inalámbricos, prueba con el dongle en un cable extensor cerca de la alfombrilla',
222
+ 'Compara con otro ratón en el mismo ordenador para distinguir fallo de hardware de comportamiento de software',
223
+ ],
224
+ },
225
+ {
226
+ type: 'title',
227
+ text: 'Reparación, Garantía y Evidencias',
228
+ level: 3,
229
+ },
230
+ {
231
+ type: 'paragraph',
232
+ html: 'Si el fallo es mecánico, limpiar la carcasa exterior rara vez lo soluciona de forma permanente porque el problema está dentro de los contactos del interruptor. Algunos usuarios reemplazan el microinterruptor, pero eso requiere soldadura y no merece la pena para todos los ratones. Si el ratón está en garantía, los intervalos sospechosos repetidos en el mismo botón son una evidencia útil al explicar el problema al soporte.',
233
+ },
234
+ {
235
+ type: 'paragraph',
236
+ html: 'Para reclamaciones de garantía, graba una breve captura de pantalla mientras pulsas el botón defectuoso lentamente. Asegúrate de que los chips de eventos muestren la etiqueta del botón y el tiempo sospechoso. Esto es más claro que decir "mi ratón a veces hace doble clic" porque demuestra el botón real y el tiempo aproximado del evento duplicado no deseado.',
237
+ },
238
+ {
239
+ type: 'title',
240
+ text: 'Limitaciones de una Prueba de Ratón Basada en Navegador',
241
+ level: 3,
242
+ },
243
+ {
244
+ type: 'paragraph',
245
+ html: 'Esta prueba mide los eventos que llegan al navegador. No puede inspeccionar directamente la forma de onda eléctrica dentro del interruptor, y no puede eludir todos los controladores, sistemas operativos o utilidades del fabricante. Aun así es útil: si el navegador recibe eventos duplicados, tus aplicaciones normales también pueden recibirlos. Para una validación a nivel de ingeniería, herramientas de hardware como osciloscopios o probadores de interruptores proporcionan evidencia más profunda, pero no son necesarias para la mayoría de diagnósticos de usuario.',
246
+ },
247
+ ],
248
+ ui: {
249
+ badge: 'Laboratorio de Rebote',
250
+ clickTarget: 'Matriz de Botones',
251
+ clickTargetHint: 'Pulsa izquierdo, derecho, rueda, retroceso y avance',
252
+ totalClicks: 'Total',
253
+ suspiciousClicks: 'Sospechosos',
254
+ fastestGap: 'Intervalo más rápido',
255
+ healthScore: 'Puntuación de salud',
256
+ thresholdLabel: 'Umbral de detección',
257
+ thresholdUnit: 'ms',
258
+ cleanEvent: 'limpio',
259
+ suspiciousEvent: 'sospechoso',
260
+ reset: 'Reiniciar',
261
+ statusIdle: 'Pulsa cada botón del ratón para probarlo independientemente',
262
+ statusClean: 'No se detectó rebote de botón sospechoso',
263
+ statusWarning: 'Rebote sospechoso detectado en un botón del ratón',
264
+ lastGap: 'Último evento',
265
+ logTitle: 'Eventos de botón recientes',
266
+ emptyLog: 'Pulsa cualquier botón del ratón sobre el cuerpo del ratón.',
267
+ leftButton: 'Izquierdo',
268
+ middleButton: 'Rueda',
269
+ rightButton: 'Derecho',
270
+ backButton: 'Retroceso',
271
+ forwardButton: 'Avance',
272
+ otherButton: 'Otro',
273
+ },
274
+ };