@jjlmoya/utils-hardware 1.2.0 → 1.5.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.
- package/package.json +2 -1
- package/src/tests/faq_count.test.ts +1 -1
- package/src/tests/i18n_coverage.test.ts +36 -0
- package/src/tests/locale_completeness.test.ts +1 -1
- package/src/tests/slug_uniqueness.test.ts +81 -0
- package/src/tests/title_quality.test.ts +1 -1
- package/src/tool/batteryHealthEstimator/i18n/de.ts +158 -0
- package/src/tool/batteryHealthEstimator/i18n/id.ts +158 -0
- package/src/tool/batteryHealthEstimator/i18n/it.ts +158 -0
- package/src/tool/batteryHealthEstimator/i18n/ja.ts +158 -0
- package/src/tool/batteryHealthEstimator/i18n/ko.ts +158 -0
- package/src/tool/batteryHealthEstimator/i18n/nl.ts +158 -0
- package/src/tool/batteryHealthEstimator/i18n/pl.ts +158 -0
- package/src/tool/batteryHealthEstimator/i18n/pt.ts +158 -0
- package/src/tool/batteryHealthEstimator/i18n/ru.ts +158 -0
- package/src/tool/batteryHealthEstimator/i18n/sv.ts +158 -0
- package/src/tool/batteryHealthEstimator/i18n/tr.ts +158 -0
- package/src/tool/batteryHealthEstimator/i18n/zh.ts +158 -0
- package/src/tool/batteryHealthEstimator/index.ts +15 -7
- package/src/tool/deadPixelTest/i18n/de.ts +218 -0
- package/src/tool/deadPixelTest/i18n/id.ts +218 -0
- package/src/tool/deadPixelTest/i18n/it.ts +218 -0
- package/src/tool/deadPixelTest/i18n/ja.ts +218 -0
- package/src/tool/deadPixelTest/i18n/ko.ts +218 -0
- package/src/tool/deadPixelTest/i18n/nl.ts +218 -0
- package/src/tool/deadPixelTest/i18n/pl.ts +218 -0
- package/src/tool/deadPixelTest/i18n/pt.ts +218 -0
- package/src/tool/deadPixelTest/i18n/ru.ts +218 -0
- package/src/tool/deadPixelTest/i18n/sv.ts +218 -0
- package/src/tool/deadPixelTest/i18n/tr.ts +218 -0
- package/src/tool/deadPixelTest/i18n/zh.ts +217 -0
- package/src/tool/deadPixelTest/index.ts +15 -7
- package/src/tool/gamepadTest/i18n/de.ts +186 -0
- package/src/tool/gamepadTest/i18n/id.ts +186 -0
- package/src/tool/gamepadTest/i18n/it.ts +186 -0
- package/src/tool/gamepadTest/i18n/ja.ts +186 -0
- package/src/tool/gamepadTest/i18n/ko.ts +186 -0
- package/src/tool/gamepadTest/i18n/nl.ts +186 -0
- package/src/tool/gamepadTest/i18n/pl.ts +186 -0
- package/src/tool/gamepadTest/i18n/pt.ts +186 -0
- package/src/tool/gamepadTest/i18n/ru.ts +186 -0
- package/src/tool/gamepadTest/i18n/sv.ts +186 -0
- package/src/tool/gamepadTest/i18n/tr.ts +186 -0
- package/src/tool/gamepadTest/i18n/zh.ts +186 -0
- package/src/tool/gamepadTest/index.ts +15 -7
- package/src/tool/gamepadVibrationTester/i18n/de.ts +155 -0
- package/src/tool/gamepadVibrationTester/i18n/id.ts +155 -0
- package/src/tool/gamepadVibrationTester/i18n/it.ts +155 -0
- package/src/tool/gamepadVibrationTester/i18n/ja.ts +155 -0
- package/src/tool/gamepadVibrationTester/i18n/ko.ts +155 -0
- package/src/tool/gamepadVibrationTester/i18n/nl.ts +155 -0
- package/src/tool/gamepadVibrationTester/i18n/pl.ts +155 -0
- package/src/tool/gamepadVibrationTester/i18n/pt.ts +155 -0
- package/src/tool/gamepadVibrationTester/i18n/ru.ts +155 -0
- package/src/tool/gamepadVibrationTester/i18n/sv.ts +155 -0
- package/src/tool/gamepadVibrationTester/i18n/tr.ts +155 -0
- package/src/tool/gamepadVibrationTester/i18n/zh.ts +155 -0
- package/src/tool/gamepadVibrationTester/index.ts +15 -7
- package/src/tool/keyboardTest/i18n/de.ts +146 -0
- package/src/tool/keyboardTest/i18n/id.ts +146 -0
- package/src/tool/keyboardTest/i18n/it.ts +146 -0
- package/src/tool/keyboardTest/i18n/ja.ts +146 -0
- package/src/tool/keyboardTest/i18n/ko.ts +146 -0
- package/src/tool/keyboardTest/i18n/nl.ts +146 -0
- package/src/tool/keyboardTest/i18n/pl.ts +146 -0
- package/src/tool/keyboardTest/i18n/pt.ts +146 -0
- package/src/tool/keyboardTest/i18n/ru.ts +146 -0
- package/src/tool/keyboardTest/i18n/sv.ts +146 -0
- package/src/tool/keyboardTest/i18n/tr.ts +146 -0
- package/src/tool/keyboardTest/i18n/zh.ts +146 -0
- package/src/tool/keyboardTest/index.ts +15 -7
- package/src/tool/mousePollingTest/component.astro +1 -1
- package/src/tool/mousePollingTest/i18n/de.ts +135 -0
- package/src/tool/mousePollingTest/i18n/id.ts +135 -0
- package/src/tool/mousePollingTest/i18n/it.ts +135 -0
- package/src/tool/mousePollingTest/i18n/ja.ts +135 -0
- package/src/tool/mousePollingTest/i18n/ko.ts +135 -0
- package/src/tool/mousePollingTest/i18n/nl.ts +135 -0
- package/src/tool/mousePollingTest/i18n/pl.ts +135 -0
- package/src/tool/mousePollingTest/i18n/pt.ts +135 -0
- package/src/tool/mousePollingTest/i18n/ru.ts +135 -0
- package/src/tool/mousePollingTest/i18n/sv.ts +135 -0
- package/src/tool/mousePollingTest/i18n/tr.ts +135 -0
- package/src/tool/mousePollingTest/i18n/zh.ts +135 -0
- package/src/tool/mousePollingTest/index.ts +15 -7
- package/src/tool/mousePollingTest/logic/RatonManager.ts +90 -51
- package/src/tool/mousePollingTest/logic/StatisticalFilter.ts +17 -25
- package/src/tool/toneGenerator/i18n/de.ts +146 -0
- package/src/tool/toneGenerator/i18n/id.ts +146 -0
- package/src/tool/toneGenerator/i18n/it.ts +146 -0
- package/src/tool/toneGenerator/i18n/ja.ts +146 -0
- package/src/tool/toneGenerator/i18n/ko.ts +146 -0
- package/src/tool/toneGenerator/i18n/nl.ts +146 -0
- package/src/tool/toneGenerator/i18n/pl.ts +146 -0
- package/src/tool/toneGenerator/i18n/pt.ts +146 -0
- package/src/tool/toneGenerator/i18n/ru.ts +146 -0
- package/src/tool/toneGenerator/i18n/sv.ts +146 -0
- package/src/tool/toneGenerator/i18n/tr.ts +146 -0
- package/src/tool/toneGenerator/i18n/zh.ts +146 -0
- package/src/tool/toneGenerator/index.ts +15 -7
- package/src/types.ts +1 -1
- package/src/tool/mousePollingTest/worker/mouseWorker.ts +0 -50
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { TestMandoUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
const slug = 'gamepad-test-online';
|
|
6
|
+
const title = 'Online Gamepad & Controller Test';
|
|
7
|
+
const description = 'Test je Xbox, PlayStation of PC controller. Visualiseer dead zones, joystick drift en knoppen.';
|
|
8
|
+
|
|
9
|
+
const faqData = [
|
|
10
|
+
{
|
|
11
|
+
question: 'Wat is Joystick Drift?',
|
|
12
|
+
answer: 'Drift treedt op wanneer de controller beweging registreert zonder dat de joystick wordt aangeraakt. Het wordt veroorzaakt door slijtage aan de interne potentiometers, die een vals elektrisch signaal in een constante richting sturen.',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
question: 'Hoe kan ik drift via software oplossen?',
|
|
16
|
+
answer: 'Als de drift mild is, kun je een grotere "Dead Zone" (Deadzone) configureren in je game-instellingen. Dit negeert kleine joystickbewegingen in het midden.',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
question: 'Is het compatibel met PS5, Xbox en Switch controllers?',
|
|
20
|
+
answer: 'Ja. Onze tool maakt gebruik van de standaard Gamepad API van moderne browsers, die vrijwel elke via USB of Bluetooth aangesloten controller detecteert, inclusief DualSense, DualShock 4 en Xbox-controllers.',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
question: 'Waarom detecteert de browser mijn controller niet?',
|
|
24
|
+
answer: 'Uit veiligheidsoverwegingen schakelen browsers de gamepad pas in na de eerste druk op een knop. Als deze niet verschijnt, druk dan op een willekeurige knop (zoals A of X) en zorg ervoor dat je niet in de strikte incognitomodus zit.',
|
|
25
|
+
},
|
|
26
|
+
];
|
|
27
|
+
|
|
28
|
+
const howToData = [
|
|
29
|
+
{
|
|
30
|
+
name: 'Sluit de controller aan',
|
|
31
|
+
text: 'Sluit je gamepad aan via USB of koppel deze via Bluetooth met je computer.',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
name: 'Activeer detectie',
|
|
35
|
+
text: 'Beweeg de joysticks of druk op een willekeurige knop zodat de browser het aangesloten apparaat herkent.',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: 'Test dead zones',
|
|
39
|
+
text: 'Laat de joysticks los en observeer de assen op het scherm. Als de waarden niet op 0.0000 staan, heb je lichte drift.',
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: 'Controleer knoppen en vibratie',
|
|
43
|
+
text: 'Druk op elke knop en trigger. De visuele indicatoren moeten oplichten en als je controller dit ondersteunt, kun je de vibratiemotor testen.',
|
|
44
|
+
},
|
|
45
|
+
];
|
|
46
|
+
|
|
47
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
48
|
+
'@context': 'https://schema.org',
|
|
49
|
+
'@type': 'FAQPage',
|
|
50
|
+
mainEntity: faqData.map((item) => ({
|
|
51
|
+
'@type': 'Question',
|
|
52
|
+
name: item.question,
|
|
53
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
54
|
+
})),
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
const howToSchema: WithContext<HowTo> = {
|
|
58
|
+
'@context': 'https://schema.org',
|
|
59
|
+
'@type': 'HowTo',
|
|
60
|
+
name: title,
|
|
61
|
+
description,
|
|
62
|
+
step: howToData.map((step, i) => ({
|
|
63
|
+
'@type': 'HowToStep',
|
|
64
|
+
position: i + 1,
|
|
65
|
+
name: step.name,
|
|
66
|
+
text: step.text,
|
|
67
|
+
})),
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
71
|
+
'@context': 'https://schema.org',
|
|
72
|
+
'@type': 'SoftwareApplication',
|
|
73
|
+
name: title,
|
|
74
|
+
description,
|
|
75
|
+
applicationCategory: 'UtilityApplication',
|
|
76
|
+
operatingSystem: 'All',
|
|
77
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
78
|
+
inLanguage: 'nl',
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
export const content: ToolLocaleContent<TestMandoUI> = {
|
|
82
|
+
slug,
|
|
83
|
+
title,
|
|
84
|
+
description,
|
|
85
|
+
faqTitle: 'Veelgestelde Vragen',
|
|
86
|
+
faq: faqData,
|
|
87
|
+
bibliographyTitle: 'Technische Referenties',
|
|
88
|
+
bibliography: [
|
|
89
|
+
{
|
|
90
|
+
name: 'Gamepad API Standard - W3C',
|
|
91
|
+
url: 'https://w3c.github.io/gamepad/',
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
name: 'Vibration API - MDN Web Docs',
|
|
95
|
+
url: 'https://developer.mozilla.org/en-US/docs/Web/API/Vibration_API',
|
|
96
|
+
},
|
|
97
|
+
],
|
|
98
|
+
howTo: howToData,
|
|
99
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
100
|
+
seo: [
|
|
101
|
+
{
|
|
102
|
+
type: 'title',
|
|
103
|
+
text: 'Online Gamepad Test: Detecteer Drift en Joystick Problemen',
|
|
104
|
+
level: 2,
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
type: 'paragraph',
|
|
108
|
+
html: 'Gratis tool om Xbox, PlayStation, Switch en andere controllers te testen. Visualiseer dead zones, detecteer drift en test vibratie.',
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
type: 'title',
|
|
112
|
+
text: 'Wat is Joystick Drift',
|
|
113
|
+
level: 3,
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
type: 'paragraph',
|
|
117
|
+
html: 'Drift is een veelvoorkomend defect bij analoge joysticks waarbij de stick beweging registreert zonder te worden aangeraakt. Het wordt veroorzaakt door slijtage aan de interne potentiometers.',
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
type: 'title',
|
|
121
|
+
text: 'Controller Compatibiliteit',
|
|
122
|
+
level: 3,
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
type: 'paragraph',
|
|
126
|
+
html: 'Compatibel met Xbox One, Xbox Series X/S, PlayStation 4, PlayStation 5 (DualSense), Nintendo Switch Pro en vrijwel elke moderne USB of Bluetooth gamepad.',
|
|
127
|
+
},
|
|
128
|
+
],
|
|
129
|
+
ui: {
|
|
130
|
+
badge: 'Input Test',
|
|
131
|
+
title: 'Gamepad en Controller Test',
|
|
132
|
+
description: 'Test je controller en detecteer problemen.',
|
|
133
|
+
connectionMessage: 'Sluit je USB- of Bluetooth-apparaat aan',
|
|
134
|
+
connectionStatus: 'Verbonden',
|
|
135
|
+
axisLabel: 'Assen',
|
|
136
|
+
buttonsLabel: 'Knoppen',
|
|
137
|
+
vibrationTitle: 'Vibratie Test',
|
|
138
|
+
vibrationDescription: 'Vereist browserondersteuning en een compatibele gamepad.',
|
|
139
|
+
vibrationLow: 'Laag (Rumble)',
|
|
140
|
+
vibrationHigh: 'Hoog (Buzz)',
|
|
141
|
+
eventHistoryTitle: 'Gebeurtenisgeschiedenis',
|
|
142
|
+
eventHistoryClear: 'Wissen',
|
|
143
|
+
eventWaiting: 'Wachten op gebeurtenissen...',
|
|
144
|
+
gameStartBtn: 'START CHALLENGE',
|
|
145
|
+
gameControllerWarning: 'Sluit een gamepad aan of gebruik het toetsenbord',
|
|
146
|
+
gameTimer: 'Timer',
|
|
147
|
+
gameScore: 'Score',
|
|
148
|
+
gameInstruction: 'Snel drukken',
|
|
149
|
+
gameCompleted: 'Challenge voltooid',
|
|
150
|
+
gameNewRecord: 'NIEUW RECORD',
|
|
151
|
+
gameRestartBtn: 'Opnieuw proberen',
|
|
152
|
+
gameFeedback: 'Je bent een knoppen-legende',
|
|
153
|
+
gameIntroTitlePre: 'Pro Gamer ',
|
|
154
|
+
gameIntroHighlight: 'Reflexen',
|
|
155
|
+
gameIntroTitlePost: '?',
|
|
156
|
+
gameIntroDescPre: 'Test de latentie en reactiesnelheid van je controller. Je hebt ',
|
|
157
|
+
gameIntroDescSeconds: '30 seconden',
|
|
158
|
+
gameIntroDescPost: ' om de knoppen onder de knie te krijgen.',
|
|
159
|
+
gameShareBtn: 'DEEL RANK',
|
|
160
|
+
gameLogConnected: 'Verbonden',
|
|
161
|
+
gameLogDisconnected: 'Verbinding verbroken',
|
|
162
|
+
gameLogCleared: 'Log gewist...',
|
|
163
|
+
gameLogBtnPrefix: 'Knop',
|
|
164
|
+
gameVibNotSupported: 'Vibratie niet ondersteund.',
|
|
165
|
+
gameVibLow: 'Laag',
|
|
166
|
+
gameVibHigh: 'Hoog',
|
|
167
|
+
gameMoveStick: 'BEWEEG STICK',
|
|
168
|
+
gamePress: 'DRUKKEN',
|
|
169
|
+
rankLegendaryName: 'LEGENDARISCH',
|
|
170
|
+
rankLegendaryDesc: 'Je vingers bewegen met de snelheid van het geluid.',
|
|
171
|
+
rankLegendaryFlavor: 'Mijn controller vliegt!',
|
|
172
|
+
rankProName: 'PRO GAMER',
|
|
173
|
+
rankProDesc: 'Je hebt stalen reflexen en een goed gekalibreerde controller.',
|
|
174
|
+
rankProFlavor: 'Mijn controller vliegt!',
|
|
175
|
+
rankGamerName: 'GAMER',
|
|
176
|
+
rankGamerDesc: 'Niet slecht, maar je hebt meer oefening nodig voor competitief spel.',
|
|
177
|
+
rankGamerFlavor: 'Bijna gelukt!',
|
|
178
|
+
rankNoobName: 'NOOB',
|
|
179
|
+
rankNoobDesc: 'Weet je zeker dat de controller aan staat?',
|
|
180
|
+
rankNoobFlavor: 'De controller heeft het op me gemunt!',
|
|
181
|
+
gameShareText: 'Kun je mij verslaan?',
|
|
182
|
+
gameShareScorePrefix: 'Ik heb',
|
|
183
|
+
gameShareScoreSuffix: 'punten gehaald',
|
|
184
|
+
gameShareTitle: 'Online Gamepad Test',
|
|
185
|
+
},
|
|
186
|
+
};
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { TestMandoUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
const slug = 'test-pada-online';
|
|
6
|
+
const title = 'Test Padów i Kontrolerów Online';
|
|
7
|
+
const description = 'Przetestuj swój kontroler Xbox, PlayStation lub PC. Wizualizuj martwe strefy, drift analogów i przyciski.';
|
|
8
|
+
|
|
9
|
+
const faqData = [
|
|
10
|
+
{
|
|
11
|
+
question: 'Co to jest Drift Analoga?',
|
|
12
|
+
answer: 'Drift występuje, gdy kontroler rejestruje ruch bez dotykania drążka. Jest on spowodowany zużyciem wewnętrznych potencjometrów, które wysyłają błędny sygnał elektryczny w stałym kierunku.',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
question: 'Jak mogę naprawić drift za pomocą oprogramowania?',
|
|
16
|
+
answer: 'Jeśli drift jest niewielki, możesz skonfigurować większą "Martwą Strefę" (Dead Zone) w ustawieniach gry. Spowoduje to ignorowanie małych ruchów drążka w jego centralnym położeniu.',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
question: 'Czy narzędzie jest kompatybilne z padami PS5, Xbox i Switch?',
|
|
20
|
+
answer: 'Tak. Nasze narzędzie korzysta ze standardowego interfejsu Gamepad API nowoczesnych przeglądarek, który wykrywa prawie każdy kontroler podłączony przez USB lub Bluetooth, w tym DualSense, DualShock 4 i kontrolery Xbox.',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
question: 'Dlaczego przeglądarka nie wykrywa mojego kontrolera?',
|
|
24
|
+
answer: 'Ze względów bezpieczeństwa przeglądarki aktywują obsługę pada dopiero po naciśnięciu pierwszego przycisku. Jeśli pad się nie pojawia, naciśnij dowolny przycisk (np. A lub X) i upewnij się, że nie korzystasz z rygorystycznego trybu incognito.',
|
|
25
|
+
},
|
|
26
|
+
];
|
|
27
|
+
|
|
28
|
+
const howToData = [
|
|
29
|
+
{
|
|
30
|
+
name: 'Podłącz kontroler',
|
|
31
|
+
text: 'Podłącz pad przez USB lub sparuj go przez Bluetooth ze swoim komputerem.',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
name: 'Aktywuj wykrywanie',
|
|
35
|
+
text: 'Poruszaj drążkami lub naciśnij dowolny przycisk, aby przeglądarka rozpoznała podłączone urządzenie.',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: 'Przetestuj martwe strefy',
|
|
39
|
+
text: 'Puść drążki i obserwuj osie na ekranie. Jeśli wartości nie wynoszą 0.0000, masz niewielki drift.',
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: 'Zweryfikuj przyciski i wibracje',
|
|
43
|
+
text: 'Naciśnij każdy przycisk i spust. Wskaźniki wizualne powinny się zaświecić, a jeśli Twój kontroler to obsługuje, możesz przetestować silnik wibracji.',
|
|
44
|
+
},
|
|
45
|
+
];
|
|
46
|
+
|
|
47
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
48
|
+
'@context': 'https://schema.org',
|
|
49
|
+
'@type': 'FAQPage',
|
|
50
|
+
mainEntity: faqData.map((item) => ({
|
|
51
|
+
'@type': 'Question',
|
|
52
|
+
name: item.question,
|
|
53
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
54
|
+
})),
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
const howToSchema: WithContext<HowTo> = {
|
|
58
|
+
'@context': 'https://schema.org',
|
|
59
|
+
'@type': 'HowTo',
|
|
60
|
+
name: title,
|
|
61
|
+
description,
|
|
62
|
+
step: howToData.map((step, i) => ({
|
|
63
|
+
'@type': 'HowToStep',
|
|
64
|
+
position: i + 1,
|
|
65
|
+
name: step.name,
|
|
66
|
+
text: step.text,
|
|
67
|
+
})),
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
71
|
+
'@context': 'https://schema.org',
|
|
72
|
+
'@type': 'SoftwareApplication',
|
|
73
|
+
name: title,
|
|
74
|
+
description,
|
|
75
|
+
applicationCategory: 'UtilityApplication',
|
|
76
|
+
operatingSystem: 'All',
|
|
77
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
78
|
+
inLanguage: 'pl',
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
export const content: ToolLocaleContent<TestMandoUI> = {
|
|
82
|
+
slug,
|
|
83
|
+
title,
|
|
84
|
+
description,
|
|
85
|
+
faqTitle: 'Często Zadawane Pytania',
|
|
86
|
+
faq: faqData,
|
|
87
|
+
bibliographyTitle: 'Referencje Techniczne',
|
|
88
|
+
bibliography: [
|
|
89
|
+
{
|
|
90
|
+
name: 'Gamepad API Standard - W3C',
|
|
91
|
+
url: 'https://w3c.github.io/gamepad/',
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
name: 'Vibration API - MDN Web Docs',
|
|
95
|
+
url: 'https://developer.mozilla.org/en-US/docs/Web/API/Vibration_API',
|
|
96
|
+
},
|
|
97
|
+
],
|
|
98
|
+
howTo: howToData,
|
|
99
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
100
|
+
seo: [
|
|
101
|
+
{
|
|
102
|
+
type: 'title',
|
|
103
|
+
text: 'Test Padów Online: Wykryj Drift i Problemy z Analogami',
|
|
104
|
+
level: 2,
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
type: 'paragraph',
|
|
108
|
+
html: 'Darmowe narzędzie do testowania kontrolerów Xbox, PlayStation, Switch i innych. Wizualizuj martwe strefy, wykrywaj drift i testuj wibracje.',
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
type: 'title',
|
|
112
|
+
text: 'Co to jest Drift Analoga',
|
|
113
|
+
level: 3,
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
type: 'paragraph',
|
|
117
|
+
html: 'Drift to częsta wada drążków analogowych, w której rejestrowany jest ruch bez dotykania analogu. Jest on spowodowany zużyciem wewnętrznych potencjometrów.',
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
type: 'title',
|
|
121
|
+
text: 'Kompatybilność Kontrolerów',
|
|
122
|
+
level: 3,
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
type: 'paragraph',
|
|
126
|
+
html: 'Kompatybilny z Xbox One, Xbox Series X/S, PlayStation 4, PlayStation 5 (DualSense), Nintendo Switch Pro i praktycznie każdym nowoczesnym padem USB lub Bluetooth.',
|
|
127
|
+
},
|
|
128
|
+
],
|
|
129
|
+
ui: {
|
|
130
|
+
badge: 'Test Wejścia',
|
|
131
|
+
title: 'Test Padów i Kontrolerów',
|
|
132
|
+
description: 'Przetestuj swój kontroler i wykryj problemy.',
|
|
133
|
+
connectionMessage: 'Podłącz urządzenie USB lub Bluetooth',
|
|
134
|
+
connectionStatus: 'Połączono',
|
|
135
|
+
axisLabel: 'Osie',
|
|
136
|
+
buttonsLabel: 'Przyciski',
|
|
137
|
+
vibrationTitle: 'Test Wibracji',
|
|
138
|
+
vibrationDescription: 'Wymaga obsługi przez przeglądarkę i kompatybilnego pada.',
|
|
139
|
+
vibrationLow: 'Niskie (Rumble)',
|
|
140
|
+
vibrationHigh: 'Wysokie (Buzz)',
|
|
141
|
+
eventHistoryTitle: 'Historia Zdarzeń',
|
|
142
|
+
eventHistoryClear: 'Wyczyść',
|
|
143
|
+
eventWaiting: 'Oczekiwanie na zdarzenia...',
|
|
144
|
+
gameStartBtn: 'ROZPOCZNIJ WYZWANIE',
|
|
145
|
+
gameControllerWarning: 'Podłącz pad lub użyj klawiatury',
|
|
146
|
+
gameTimer: 'Czas',
|
|
147
|
+
gameScore: 'Wynik',
|
|
148
|
+
gameInstruction: 'Naciskaj szybko',
|
|
149
|
+
gameCompleted: 'Wyzwanie Ukończone',
|
|
150
|
+
gameNewRecord: 'NOWY REKORD',
|
|
151
|
+
gameRestartBtn: 'Spróbuj ponownie',
|
|
152
|
+
gameFeedback: 'Jesteś legendą przycisków',
|
|
153
|
+
gameIntroTitlePre: 'Refleks ',
|
|
154
|
+
gameIntroHighlight: 'Pro Gamera',
|
|
155
|
+
gameIntroTitlePost: '?',
|
|
156
|
+
gameIntroDescPre: 'Przetestuj opóźnienie kontrolera i swoją szybkość reakcji. Masz ',
|
|
157
|
+
gameIntroDescSeconds: '30 sekund',
|
|
158
|
+
gameIntroDescPost: ', aby opanować przyciski.',
|
|
159
|
+
gameShareBtn: 'UDOSTĘPNIJ RANGĘ',
|
|
160
|
+
gameLogConnected: 'Połączono',
|
|
161
|
+
gameLogDisconnected: 'Rozłączono',
|
|
162
|
+
gameLogCleared: 'Log wyczyszczony...',
|
|
163
|
+
gameLogBtnPrefix: 'Przycisk',
|
|
164
|
+
gameVibNotSupported: 'Wibracje nieobsługiwane.',
|
|
165
|
+
gameVibLow: 'Niskie',
|
|
166
|
+
gameVibHigh: 'Wysokie',
|
|
167
|
+
gameMoveStick: 'RUSZ ANALOGIEM',
|
|
168
|
+
gamePress: 'NACIŚNIJ',
|
|
169
|
+
rankLegendaryName: 'LEGENDARNY',
|
|
170
|
+
rankLegendaryDesc: 'Twoje palce poruszają się z prędkością dźwięku.',
|
|
171
|
+
rankLegendaryFlavor: 'Mój pad lata!',
|
|
172
|
+
rankProName: 'PRO GAMER',
|
|
173
|
+
rankProDesc: 'Masz stalowy refleks i dobrze skalibrowany kontroler.',
|
|
174
|
+
rankProFlavor: 'Mój pad lata!',
|
|
175
|
+
rankGamerName: 'GAMER',
|
|
176
|
+
rankGamerDesc: 'Nieźle, ale potrzebujesz więcej praktyki w grach rankingowych.',
|
|
177
|
+
rankGamerFlavor: 'Prawie się udało!',
|
|
178
|
+
rankNoobName: 'NOOB',
|
|
179
|
+
rankNoobDesc: 'Na pewno masz włączony kontroler?',
|
|
180
|
+
rankNoobFlavor: 'Ten kontroler mnie nie słucha!',
|
|
181
|
+
gameShareText: 'Pobijesz mnie?',
|
|
182
|
+
gameShareScorePrefix: 'Mój wynik to',
|
|
183
|
+
gameShareScoreSuffix: 'trafień',
|
|
184
|
+
gameShareTitle: 'Test Padów Online',
|
|
185
|
+
},
|
|
186
|
+
};
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { TestMandoUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
const slug = 'teste-gamepad-online';
|
|
6
|
+
const title = 'Teste de Gamepad e Comando Online';
|
|
7
|
+
const description = 'Teste o seu comando de Xbox, PlayStation ou PC. Visualize zonas mortas, drift do joystick e botões.';
|
|
8
|
+
|
|
9
|
+
const faqData = [
|
|
10
|
+
{
|
|
11
|
+
question: 'O que é o Drift do Joystick?',
|
|
12
|
+
answer: 'O drift ocorre quando o comando regista movimento sem que o joystick seja tocado. É causado pelo desgaste nos potenciómetros internos, que enviam um sinal elétrico falso numa direção constante.',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
question: 'Como posso corrigir o drift através de software?',
|
|
16
|
+
answer: 'Se o drift for ligeiro, pode configurar uma "Zona Morta" (Dead Zone) maior nas definições do seu jogo. Isto ignora pequenos movimentos do joystick no centro.',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
question: 'É compatível com comandos de PS5, Xbox e Switch?',
|
|
20
|
+
answer: 'Sim. A nossa ferramenta utiliza a Gamepad API padrão dos navegadores modernos, que deteta quase qualquer comando ligado via USB ou Bluetooth, incluindo DualSense, DualShock 4 e comandos Xbox.',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
question: 'Porque é que o navegador não deteta o meu comando?',
|
|
24
|
+
answer: 'Por segurança, os navegadores apenas ativam o gamepad após o primeiro premir de um botão. Se não aparecer, prima qualquer botão (como A ou X) e certifique-se de que não está no modo de navegação anónima estrito.',
|
|
25
|
+
},
|
|
26
|
+
];
|
|
27
|
+
|
|
28
|
+
const howToData = [
|
|
29
|
+
{
|
|
30
|
+
name: 'Ligar o comando',
|
|
31
|
+
text: 'Ligue o seu gamepad via USB ou emparelhe-o por Bluetooth com o seu computador.',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
name: 'Ativar a deteção',
|
|
35
|
+
text: 'Mova os joysticks ou prima qualquer botão para que o navegador reconheça o dispositivo ligado.',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: 'Testar zonas mortas',
|
|
39
|
+
text: 'Solte os joysticks e observe os eixos no ecrã. Se os valores não estiverem em 0.0000, tem um ligeiro drift.',
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: 'Verificar botões e vibração',
|
|
43
|
+
text: 'Prima cada botão e gatilho. Os indicadores visuais devem acender-se e, se o seu comando o suportar, pode testar o motor de vibração.',
|
|
44
|
+
},
|
|
45
|
+
];
|
|
46
|
+
|
|
47
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
48
|
+
'@context': 'https://schema.org',
|
|
49
|
+
'@type': 'FAQPage',
|
|
50
|
+
mainEntity: faqData.map((item) => ({
|
|
51
|
+
'@type': 'Question',
|
|
52
|
+
name: item.question,
|
|
53
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
54
|
+
})),
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
const howToSchema: WithContext<HowTo> = {
|
|
58
|
+
'@context': 'https://schema.org',
|
|
59
|
+
'@type': 'HowTo',
|
|
60
|
+
name: title,
|
|
61
|
+
description,
|
|
62
|
+
step: howToData.map((step, i) => ({
|
|
63
|
+
'@type': 'HowToStep',
|
|
64
|
+
position: i + 1,
|
|
65
|
+
name: step.name,
|
|
66
|
+
text: step.text,
|
|
67
|
+
})),
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
71
|
+
'@context': 'https://schema.org',
|
|
72
|
+
'@type': 'SoftwareApplication',
|
|
73
|
+
name: title,
|
|
74
|
+
description,
|
|
75
|
+
applicationCategory: 'UtilityApplication',
|
|
76
|
+
operatingSystem: 'All',
|
|
77
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
78
|
+
inLanguage: 'pt',
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
export const content: ToolLocaleContent<TestMandoUI> = {
|
|
82
|
+
slug,
|
|
83
|
+
title,
|
|
84
|
+
description,
|
|
85
|
+
faqTitle: 'Perguntas Frequentes',
|
|
86
|
+
faq: faqData,
|
|
87
|
+
bibliographyTitle: 'Referências Técnicas',
|
|
88
|
+
bibliography: [
|
|
89
|
+
{
|
|
90
|
+
name: 'Gamepad API Standard - W3C',
|
|
91
|
+
url: 'https://w3c.github.io/gamepad/',
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
name: 'Vibration API - MDN Web Docs',
|
|
95
|
+
url: 'https://developer.mozilla.org/en-US/docs/Web/API/Vibration_API',
|
|
96
|
+
},
|
|
97
|
+
],
|
|
98
|
+
howTo: howToData,
|
|
99
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
100
|
+
seo: [
|
|
101
|
+
{
|
|
102
|
+
type: 'title',
|
|
103
|
+
text: 'Teste de Gamepad Online: Detete Drift e Problemas de Joystick',
|
|
104
|
+
level: 2,
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
type: 'paragraph',
|
|
108
|
+
html: 'Ferramenta gratuita para testar comandos de Xbox, PlayStation, Switch e outros. Visualize zonas mortas, detete drift e teste a vibração.',
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
type: 'title',
|
|
112
|
+
text: 'O que é o Drift do Joystick',
|
|
113
|
+
level: 3,
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
type: 'paragraph',
|
|
117
|
+
html: 'O drift é um defeito comum em joysticks analógicos onde o stick regista movimento sem ser tocado. É causado pelo desgaste nos potenciómetros internos.',
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
type: 'title',
|
|
121
|
+
text: 'Compatibilidade de Comandos',
|
|
122
|
+
level: 3,
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
type: 'paragraph',
|
|
126
|
+
html: 'Compatível com Xbox One, Xbox Series X/S, PlayStation 4, PlayStation 5 (DualSense), Nintendo Switch Pro e praticamente qualquer gamepad USB ou Bluetooth moderno.',
|
|
127
|
+
},
|
|
128
|
+
],
|
|
129
|
+
ui: {
|
|
130
|
+
badge: 'Teste de Input',
|
|
131
|
+
title: 'Teste de Gamepad e Comando',
|
|
132
|
+
description: 'Teste o seu comando e detete problemas.',
|
|
133
|
+
connectionMessage: 'Ligue o seu dispositivo USB ou Bluetooth',
|
|
134
|
+
connectionStatus: 'Ligado',
|
|
135
|
+
axisLabel: 'Eixos',
|
|
136
|
+
buttonsLabel: 'Botões',
|
|
137
|
+
vibrationTitle: 'Teste de Vibração',
|
|
138
|
+
vibrationDescription: 'Requer suporte do navegador e um gamepad compatível.',
|
|
139
|
+
vibrationLow: 'Baixa (Rumble)',
|
|
140
|
+
vibrationHigh: 'Alta (Buzz)',
|
|
141
|
+
eventHistoryTitle: 'Histórico de Eventos',
|
|
142
|
+
eventHistoryClear: 'Limpar',
|
|
143
|
+
eventWaiting: 'A aguardar eventos...',
|
|
144
|
+
gameStartBtn: 'INICIAR DESAFIO',
|
|
145
|
+
gameControllerWarning: 'Ligue um gamepad ou use o teclado',
|
|
146
|
+
gameTimer: 'Temporizador',
|
|
147
|
+
gameScore: 'Pontuação',
|
|
148
|
+
gameInstruction: 'Prima rápido',
|
|
149
|
+
gameCompleted: 'Desafio Concluído',
|
|
150
|
+
gameNewRecord: 'NOVO RECORDE',
|
|
151
|
+
gameRestartBtn: 'Repetir',
|
|
152
|
+
gameFeedback: 'És uma lenda dos botões',
|
|
153
|
+
gameIntroTitlePre: 'Reflexos de ',
|
|
154
|
+
gameIntroHighlight: 'Pro Gamer',
|
|
155
|
+
gameIntroTitlePost: '?',
|
|
156
|
+
gameIntroDescPre: 'Teste a latência do seu comando e a sua velocidade de reação. Tem ',
|
|
157
|
+
gameIntroDescSeconds: '30 segundos',
|
|
158
|
+
gameIntroDescPost: ' para dominar os botões.',
|
|
159
|
+
gameShareBtn: 'PARTILHAR RATING',
|
|
160
|
+
gameLogConnected: 'Ligado',
|
|
161
|
+
gameLogDisconnected: 'Desligado',
|
|
162
|
+
gameLogCleared: 'Log limpo...',
|
|
163
|
+
gameLogBtnPrefix: 'Botão',
|
|
164
|
+
gameVibNotSupported: 'Vibração não suportada.',
|
|
165
|
+
gameVibLow: 'Baixa',
|
|
166
|
+
gameVibHigh: 'Alta',
|
|
167
|
+
gameMoveStick: 'MOVER STICK',
|
|
168
|
+
gamePress: 'PREMIR',
|
|
169
|
+
rankLegendaryName: 'LENDÁRIO',
|
|
170
|
+
rankLegendaryDesc: 'Os teus dedos movem-se à velocidade do som.',
|
|
171
|
+
rankLegendaryFlavor: 'O meu comando está a voar!',
|
|
172
|
+
rankProName: 'PRO GAMER',
|
|
173
|
+
rankProDesc: 'Tens reflexos de aço e um comando bem calibrado.',
|
|
174
|
+
rankProFlavor: 'O meu comando está a voar!',
|
|
175
|
+
rankGamerName: 'GAMER',
|
|
176
|
+
rankGamerDesc: 'Nada mau, mas precisas de mais prática para o jogo competitivo.',
|
|
177
|
+
rankGamerFlavor: 'Quase lá!',
|
|
178
|
+
rankNoobName: 'NOOB',
|
|
179
|
+
rankNoobDesc: 'Tens a certeza de que tens o comando ligado?',
|
|
180
|
+
rankNoobFlavor: 'O comando está contra mim!',
|
|
181
|
+
gameShareText: 'Consegues vencer-me?',
|
|
182
|
+
gameShareScorePrefix: 'Consegui',
|
|
183
|
+
gameShareScoreSuffix: 'toques',
|
|
184
|
+
gameShareTitle: 'Teste de Gamepad Online',
|
|
185
|
+
},
|
|
186
|
+
};
|