@jjlmoya/utils-hardware 1.3.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/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/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
|
@@ -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-gamepad-online';
|
|
6
|
+
const title = 'Test Gamepad e Controller Online';
|
|
7
|
+
const description = 'Testa il tuo controller Xbox, PlayStation o PC. Visualizza zone morte, drift degli analogici e pulsanti.';
|
|
8
|
+
|
|
9
|
+
const faqData = [
|
|
10
|
+
{
|
|
11
|
+
question: "Cos'è il Drift degli Analogici?",
|
|
12
|
+
answer: "Il drift si verifica quando il controller registra un movimento senza che l'analogico venga toccato. È causato dall'usura dei potenziometri interni, che inviano un falso segnale elettrico in una direzione costante.",
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
question: 'Come posso risolvere il drift tramite software?',
|
|
16
|
+
answer: 'Se il drift è lieve, puoi configurare una "Zona Morta" (Deadzone) più ampia nelle impostazioni del gioco. Questo ignora i piccoli movimenti dell\'analogico al centro.',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
question: 'È compatibile con i controller PS5, Xbox e Switch?',
|
|
20
|
+
answer: "Sì. Il nostro strumento utilizza la Gamepad API standard dei browser moderni, che rileva quasi tutti i controller collegati via USB o Bluetooth, inclusi DualSense, DualShock 4 e controller Xbox.",
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
question: 'Perché il browser non rileva il mio controller?',
|
|
24
|
+
answer: "Per sicurezza, i browser attivano il gamepad solo dopo la pressione del primo pulsante. Se non appare, premi un pulsante qualsiasi (come A o X) e assicurati di non essere in modalità incognito rigorosa.",
|
|
25
|
+
},
|
|
26
|
+
];
|
|
27
|
+
|
|
28
|
+
const howToData = [
|
|
29
|
+
{
|
|
30
|
+
name: 'Collega il controller',
|
|
31
|
+
text: 'Collega il tuo gamepad tramite USB o associalo via Bluetooth al tuo computer.',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
name: 'Attiva il rilevamento',
|
|
35
|
+
text: 'Muovi gli analogici o premi un pulsante qualsiasi affinché il browser riconosca il dispositivo collegato.',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: 'Testa le zone morte',
|
|
39
|
+
text: 'Rilascia gli analogici e osserva gli assi sullo schermo. Se i valori non sono a 0.0000, hai un leggero drift.',
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: 'Verifica pulsanti e vibrazione',
|
|
43
|
+
text: 'Premi ogni pulsante e grilletto. Gli indicatori visivi dovrebbero illuminarsi e, se il tuo controller lo supporta, puoi testare il motore di vibrazione.',
|
|
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: 'it',
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
export const content: ToolLocaleContent<TestMandoUI> = {
|
|
82
|
+
slug,
|
|
83
|
+
title,
|
|
84
|
+
description,
|
|
85
|
+
faqTitle: 'Domande Frequenti',
|
|
86
|
+
faq: faqData,
|
|
87
|
+
bibliographyTitle: 'Riferimenti Tecnici',
|
|
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 Gamepad Online: Rileva Drift e Problemi agli Analogici',
|
|
104
|
+
level: 2,
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
type: 'paragraph',
|
|
108
|
+
html: 'Strumento gratuito per testare controller Xbox, PlayStation, Switch e altri. Visualizza zone morte, rileva il drift e testa la vibrazione.',
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
type: 'title',
|
|
112
|
+
text: "Cos'è il Drift degli Analogici",
|
|
113
|
+
level: 3,
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
type: 'paragraph',
|
|
117
|
+
html: "Il drift è un difetto comune negli analogici dove la levetta registra un movimento senza essere toccata. È causato dall'usura dei potenziometri interni.",
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
type: 'title',
|
|
121
|
+
text: 'Compatibilità Controller',
|
|
122
|
+
level: 3,
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
type: 'paragraph',
|
|
126
|
+
html: 'Compatibile con Xbox One, Xbox Series X/S, PlayStation 4, PlayStation 5 (DualSense), Nintendo Switch Pro e praticamente qualsiasi gamepad USB o Bluetooth moderno.',
|
|
127
|
+
},
|
|
128
|
+
],
|
|
129
|
+
ui: {
|
|
130
|
+
badge: 'Test Input',
|
|
131
|
+
title: 'Test Gamepad e Controller',
|
|
132
|
+
description: 'Testa il tuo controller e rileva eventuali problemi.',
|
|
133
|
+
connectionMessage: 'Collega il tuo dispositivo USB o Bluetooth',
|
|
134
|
+
connectionStatus: 'Connesso',
|
|
135
|
+
axisLabel: 'Assi',
|
|
136
|
+
buttonsLabel: 'Pulsanti',
|
|
137
|
+
vibrationTitle: 'Test Vibrazione',
|
|
138
|
+
vibrationDescription: 'Richiede il supporto del browser e un gamepad compatibile.',
|
|
139
|
+
vibrationLow: 'Bassa (Rumble)',
|
|
140
|
+
vibrationHigh: 'Alta (Buzz)',
|
|
141
|
+
eventHistoryTitle: 'Cronologia Eventi',
|
|
142
|
+
eventHistoryClear: 'Cancella',
|
|
143
|
+
eventWaiting: 'In attesa di eventi...',
|
|
144
|
+
gameStartBtn: 'INIZIA SFIDA',
|
|
145
|
+
gameControllerWarning: 'Collega un gamepad o usa la tastiera',
|
|
146
|
+
gameTimer: 'Timer',
|
|
147
|
+
gameScore: 'Punteggio',
|
|
148
|
+
gameInstruction: 'Premi velocemente',
|
|
149
|
+
gameCompleted: 'Sfida Completata',
|
|
150
|
+
gameNewRecord: 'NUOVO RECORD',
|
|
151
|
+
gameRestartBtn: 'Riprova',
|
|
152
|
+
gameFeedback: 'Sei una leggenda dei pulsanti',
|
|
153
|
+
gameIntroTitlePre: 'Riflessi da ',
|
|
154
|
+
gameIntroHighlight: 'Pro Gamer',
|
|
155
|
+
gameIntroTitlePost: '?',
|
|
156
|
+
gameIntroDescPre: 'Testa la latenza del tuo controller e la tua velocità di reazione. Hai ',
|
|
157
|
+
gameIntroDescSeconds: '30 secondi',
|
|
158
|
+
gameIntroDescPost: ' per dominare i pulsanti.',
|
|
159
|
+
gameShareBtn: 'CONDIVIDI RANGO',
|
|
160
|
+
gameLogConnected: 'Connesso',
|
|
161
|
+
gameLogDisconnected: 'Disconnesso',
|
|
162
|
+
gameLogCleared: 'Log cancellato...',
|
|
163
|
+
gameLogBtnPrefix: 'Pulsante',
|
|
164
|
+
gameVibNotSupported: 'Vibrazione non supportata.',
|
|
165
|
+
gameVibLow: 'Bassa',
|
|
166
|
+
gameVibHigh: 'Alta',
|
|
167
|
+
gameMoveStick: 'MUOVI ANALOGICO',
|
|
168
|
+
gamePress: 'PREMI',
|
|
169
|
+
rankLegendaryName: 'LEGGENDARIO',
|
|
170
|
+
rankLegendaryDesc: 'Le tue dita si muovono alla velocità del suono.',
|
|
171
|
+
rankLegendaryFlavor: 'Il mio controller sta volando!',
|
|
172
|
+
rankProName: 'PRO GAMER',
|
|
173
|
+
rankProDesc: 'Hai riflessi d\'acciaio e un controller ben calibrato.',
|
|
174
|
+
rankProFlavor: 'Il mio controller sta volando!',
|
|
175
|
+
rankGamerName: 'GAMER',
|
|
176
|
+
rankGamerDesc: 'Niente male, ma ti serve più pratica per il gioco competitivo.',
|
|
177
|
+
rankGamerFlavor: 'Quasi preso!',
|
|
178
|
+
rankNoobName: 'NOOB',
|
|
179
|
+
rankNoobDesc: 'Sei sicuro di aver acceso il controller?',
|
|
180
|
+
rankNoobFlavor: 'Il controller ce l\'ha con me!',
|
|
181
|
+
gameShareText: 'Riesci a battermi?',
|
|
182
|
+
gameShareScorePrefix: 'Ho fatto',
|
|
183
|
+
gameShareScoreSuffix: 'punti',
|
|
184
|
+
gameShareTitle: 'Test Gamepad 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 = 'gamepad-test';
|
|
6
|
+
const title = 'オンライン・ゲームパッド&コントローラーテスト';
|
|
7
|
+
const description = 'Xbox、PlayStation、PCコントローラーをテストします。デッドゾーン、スティックのドリフト、ボタンの動作を可視化。';
|
|
8
|
+
|
|
9
|
+
const faqData = [
|
|
10
|
+
{
|
|
11
|
+
question: 'ジョイスティックのドリフト現象とは何ですか?',
|
|
12
|
+
answer: 'ドリフトとは、スティックに触れていないのにコントローラーが動きを感知してしまう現象です。内部のポテンショメータが摩耗し、一定方向に誤った電気信号を送ることで発生します。',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
question: 'ソフトウェアでドリフトを修正することはできますか?',
|
|
16
|
+
answer: 'ドリフトが軽微な場合は、ゲーム設定で「デッドゾーン(遊び)」を大きく設定することで解消できます。これにより、中央付近の小さな微動を無視するようにします。',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
question: 'PS5、Xbox、Switchのコントローラーに対応していますか?',
|
|
20
|
+
answer: 'はい。当ツールは最新ブラウザの標準Gamepad APIを使用しており、DualSense、DualShock 4、Xboxコントローラーなど、USBまたはBluetoothで接続されたほぼすべてのコントローラーを検出します。',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
question: 'ブラウザがコントローラーを検出しません。',
|
|
24
|
+
answer: 'セキュリティ上の理由から、ブラウザは最初のボタン入力があるまでゲームパッドを有効にしません。表示されない場合は、いずれかのボタン(AやXなど)を押し、シークレットモードの設定を確認してください。',
|
|
25
|
+
},
|
|
26
|
+
];
|
|
27
|
+
|
|
28
|
+
const howToData = [
|
|
29
|
+
{
|
|
30
|
+
name: 'コントローラーを接続する',
|
|
31
|
+
text: 'USBで接続するか、Bluetoothでコンピュータとペアリングしてください。',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
name: '検出を有効にする',
|
|
35
|
+
text: 'スティックを動かすか、いずれかのボタンを押してブラウザにデバイスを認識させます。',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: 'デッドゾーンをテストする',
|
|
39
|
+
text: 'スティックから手を離し、画面上の軸を確認します。数値が 0.0000 でない場合は、わずかなドリフトが発生しています。',
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: 'ボタンと振動を確認する',
|
|
43
|
+
text: '各ボタンとトリガーを押してください。視覚的なインジケータが点灯し、対応デバイスであれば振動機能もテストできます。',
|
|
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: 'ja',
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
export const content: ToolLocaleContent<TestMandoUI> = {
|
|
82
|
+
slug,
|
|
83
|
+
title,
|
|
84
|
+
description,
|
|
85
|
+
faqTitle: 'よくある質問',
|
|
86
|
+
faq: faqData,
|
|
87
|
+
bibliographyTitle: '技術リファレンス',
|
|
88
|
+
bibliography: [
|
|
89
|
+
{
|
|
90
|
+
name: 'Gamepad API 標準 - 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: 'オンライン・ゲームパッドテスト:ドリフトとスティックの問題を検出',
|
|
104
|
+
level: 2,
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
type: 'paragraph',
|
|
108
|
+
html: 'Xbox、PlayStation、Switchなどのコントローラーを無料テスト。デッドゾーンの可視化、ドリフト検出、振動テスト。',
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
type: 'title',
|
|
112
|
+
text: 'ジョイスティックのドリフトとは',
|
|
113
|
+
level: 3,
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
type: 'paragraph',
|
|
117
|
+
html: 'ドリフトは、触れていないのにアナログスティックが動きを登録してしまう一般的な不具合です。内部のポテンショメータの摩耗が原因です。',
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
type: 'title',
|
|
121
|
+
text: '対応コントローラー',
|
|
122
|
+
level: 3,
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
type: 'paragraph',
|
|
126
|
+
html: 'Xbox One、Xbox Series X/S、PlayStation 4、PlayStation 5 (DualSense)、Nintendo Switch Pro、およびほぼすべての最新のUSB/Bluetoothゲームパッドに対応。',
|
|
127
|
+
},
|
|
128
|
+
],
|
|
129
|
+
ui: {
|
|
130
|
+
badge: '入力テスト',
|
|
131
|
+
title: 'ゲームパッド&コントローラーテスト',
|
|
132
|
+
description: 'コントローラーをテストして不具合を検出します。',
|
|
133
|
+
connectionMessage: 'USBまたはBluetoothデバイスを接続してください',
|
|
134
|
+
connectionStatus: '接続中',
|
|
135
|
+
axisLabel: 'スティック軸',
|
|
136
|
+
buttonsLabel: 'ボタン',
|
|
137
|
+
vibrationTitle: '振動テスト',
|
|
138
|
+
vibrationDescription: 'ブラウザのサポートと対応するゲームパッドが必要です。',
|
|
139
|
+
vibrationLow: '弱 (Rumble)',
|
|
140
|
+
vibrationHigh: '強 (Buzz)',
|
|
141
|
+
eventHistoryTitle: 'イベント履歴',
|
|
142
|
+
eventHistoryClear: 'クリア',
|
|
143
|
+
eventWaiting: 'イベントを待機中...',
|
|
144
|
+
gameStartBtn: 'チャレンジ開始',
|
|
145
|
+
gameControllerWarning: 'ゲームパッドを接続するか、キーボードを使用してください',
|
|
146
|
+
gameTimer: 'タイム',
|
|
147
|
+
gameScore: 'スコア',
|
|
148
|
+
gameInstruction: '連打しろ!',
|
|
149
|
+
gameCompleted: 'チャレンジ完了',
|
|
150
|
+
gameNewRecord: '新記録達成!',
|
|
151
|
+
gameRestartBtn: 'リトライ',
|
|
152
|
+
gameFeedback: '君はボタン連打のレジェンドだ',
|
|
153
|
+
gameIntroTitlePre: 'プロゲーマー級の',
|
|
154
|
+
gameIntroHighlight: '反射神経',
|
|
155
|
+
gameIntroTitlePost: '?',
|
|
156
|
+
gameIntroDescPre: 'コントローラーの遅延と君の反応速度をテスト。制限時間は',
|
|
157
|
+
gameIntroDescSeconds: '30秒',
|
|
158
|
+
gameIntroDescPost: '。すべてのボタンをマスターしよう。',
|
|
159
|
+
gameShareBtn: 'ランクをシェア',
|
|
160
|
+
gameLogConnected: '接続完了',
|
|
161
|
+
gameLogDisconnected: '切断されました',
|
|
162
|
+
gameLogCleared: 'ログをクリアしました...',
|
|
163
|
+
gameLogBtnPrefix: 'ボタン',
|
|
164
|
+
gameVibNotSupported: '振動機能はサポートされていません。',
|
|
165
|
+
gameVibLow: '弱',
|
|
166
|
+
gameVibHigh: '強',
|
|
167
|
+
gameMoveStick: 'スティックを動かせ',
|
|
168
|
+
gamePress: '押せ!',
|
|
169
|
+
rankLegendaryName: 'レジェンダリー',
|
|
170
|
+
rankLegendaryDesc: '君の指は音速を超えている。',
|
|
171
|
+
rankLegendaryFlavor: 'コントローラーが火を吹くぜ!',
|
|
172
|
+
rankProName: 'プロゲーマー',
|
|
173
|
+
rankProDesc: '鋼の反射神経と完璧に調整された操作性。',
|
|
174
|
+
rankProFlavor: 'コントローラーが火を吹くぜ!',
|
|
175
|
+
rankGamerName: 'ゲーマー',
|
|
176
|
+
rankGamerDesc: '悪くない。でも競技レベルにはもっと練習が必要だ。',
|
|
177
|
+
rankGamerFlavor: 'あと少しだった!',
|
|
178
|
+
rankNoobName: 'ヌーブ',
|
|
179
|
+
rankNoobDesc: '本当にコントローラーの電源入ってる?',
|
|
180
|
+
rankNoobFlavor: 'コントローラーの調子が悪かっただけだし!',
|
|
181
|
+
gameShareText: '僕の記録を抜けるかな?',
|
|
182
|
+
gameShareScorePrefix: 'スコア:',
|
|
183
|
+
gameShareScoreSuffix: 'ヒット',
|
|
184
|
+
gameShareTitle: 'オンライン・ゲームパッドテスト',
|
|
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 = 'gamepad-test';
|
|
6
|
+
const title = '온라인 게임패드 및 컨트롤러 테스트';
|
|
7
|
+
const description = 'Xbox, PlayStation 또는 PC 컨트롤러를 테스트하세요. 데드존, 조이스틱 드리프트 및 버튼 입력을 시각화합니다.';
|
|
8
|
+
|
|
9
|
+
const faqData = [
|
|
10
|
+
{
|
|
11
|
+
question: '조이스틱 드리프트(Drift) 현상이란 무엇인가요?',
|
|
12
|
+
answer: '드리프트는 조이스틱을 만지지 않았는데도 컨트롤러가 움직임을 감지하는 현상입니다. 내부 가변저항(potentiometer)의 마모로 인해 일정한 방향으로 잘못된 전기 신호를 보내면서 발생합니다.',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
question: '소프트웨어로 드리프트를 해결할 수 있나요?',
|
|
16
|
+
answer: '드리프트가 미미한 경우 게임 설정에서 "데드존(Dead Zone)"을 더 크게 설정하여 해결할 수 있습니다. 이는 중앙부의 미세한 스틱 움직임을 무시하도록 합니다.',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
question: 'PS5, Xbox, Switch 컨트롤러와 호환되나요?',
|
|
20
|
+
answer: '네. 당사의 도구는 최신 브라우저의 표준 Gamepad API를 사용하여 DualSense, DualShock 4, Xbox 컨트롤러 등 USB 또는 블루투스로 연결된 거의 모든 컨트롤러를 감지합니다.',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
question: '브라우저가 컨트롤러를 감지하지 못합니다.',
|
|
24
|
+
answer: '보안상의 이유로 브라우저는 첫 번째 버튼 입력이 있을 때까지 게임패드를 활성화하지 않습니다. 표시되지 않는다면 아무 버튼(A 또는 X 등)이나 누르고 시크릿 모드 설정을 확인하세요.',
|
|
25
|
+
},
|
|
26
|
+
];
|
|
27
|
+
|
|
28
|
+
const howToData = [
|
|
29
|
+
{
|
|
30
|
+
name: '컨트롤러 연결',
|
|
31
|
+
text: '컨트롤러를 USB로 연결하거나 컴퓨터와 블루투스로 페어링하세요.',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
name: '감지 활성화',
|
|
35
|
+
text: '브라우저가 장치를 인식할 수 있도록 조이스틱을 움직이거나 아무 버튼이나 누르세요.',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: '데드존 테스트',
|
|
39
|
+
text: '조이스틱을 놓고 화면의 축 값을 확인하세요. 값이 0.0000이 아니라면 미세한 드리프트가 있는 것입니다.',
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: '버튼 및 진동 확인',
|
|
43
|
+
text: '모든 버튼과 트리거를 눌러보세요. 시각적 표시등이 켜져야 하며, 지원되는 컨트롤러라면 진동 모터도 테스트할 수 있습니다.',
|
|
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: 'ko',
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
export const content: ToolLocaleContent<TestMandoUI> = {
|
|
82
|
+
slug,
|
|
83
|
+
title,
|
|
84
|
+
description,
|
|
85
|
+
faqTitle: '자주 묻는 질문',
|
|
86
|
+
faq: faqData,
|
|
87
|
+
bibliographyTitle: '기술 참조',
|
|
88
|
+
bibliography: [
|
|
89
|
+
{
|
|
90
|
+
name: 'Gamepad API 표준 - 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: '온라인 게임패드 테스트: 드리프트 및 스틱 불량 감지',
|
|
104
|
+
level: 2,
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
type: 'paragraph',
|
|
108
|
+
html: 'Xbox, PlayStation, Switch 등 모든 컨트롤러 무료 테스트. 데드존 시각화, 드리프트 감지 및 진동 테스트 기능을 제공합니다.',
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
type: 'title',
|
|
112
|
+
text: '조이스틱 드리프트란 무엇인가',
|
|
113
|
+
level: 3,
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
type: 'paragraph',
|
|
117
|
+
html: '드리프트는 아날로그 스틱을 만지지 않아도 움직임이 입력되는 흔한 결함입니다. 내부 부품의 마모가 주된 원인입니다.',
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
type: 'title',
|
|
121
|
+
text: '컨트롤러 호환성',
|
|
122
|
+
level: 3,
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
type: 'paragraph',
|
|
126
|
+
html: 'Xbox One, Xbox Series X/S, PS4, PS5(DualSense), 닌텐도 스위치 프로콘 및 거의 모든 현대적 USB/블루투스 게임패드와 호환됩니다.',
|
|
127
|
+
},
|
|
128
|
+
],
|
|
129
|
+
ui: {
|
|
130
|
+
badge: '입력 테스트',
|
|
131
|
+
title: '게임패드 및 컨트롤러 테스트',
|
|
132
|
+
description: '컨트롤러를 테스트하고 결함을 찾아보세요.',
|
|
133
|
+
connectionMessage: 'USB 또는 블루투스 장치를 연결하세요',
|
|
134
|
+
connectionStatus: '연결됨',
|
|
135
|
+
axisLabel: '스틱 축',
|
|
136
|
+
buttonsLabel: '버튼',
|
|
137
|
+
vibrationTitle: '진동 테스트',
|
|
138
|
+
vibrationDescription: '브라우저 지원 및 호환 가능한 게임패드가 필요합니다.',
|
|
139
|
+
vibrationLow: '낮음 (Rumble)',
|
|
140
|
+
vibrationHigh: '높음 (Buzz)',
|
|
141
|
+
eventHistoryTitle: '이벤트 기록',
|
|
142
|
+
eventHistoryClear: '지우기',
|
|
143
|
+
eventWaiting: '이벤트를 기다리는 중...',
|
|
144
|
+
gameStartBtn: '챌린지 시작',
|
|
145
|
+
gameControllerWarning: '게임패드를 연결하거나 키보드를 사용하세요',
|
|
146
|
+
gameTimer: '타이머',
|
|
147
|
+
gameScore: '점수',
|
|
148
|
+
gameInstruction: '빨리 누르세요',
|
|
149
|
+
gameCompleted: '챌린지 완료',
|
|
150
|
+
gameNewRecord: '신기록 달성!',
|
|
151
|
+
gameRestartBtn: '다시 시도',
|
|
152
|
+
gameFeedback: '당신은 버튼의 전설입니다',
|
|
153
|
+
gameIntroTitlePre: '프로 게이머급 ',
|
|
154
|
+
gameIntroHighlight: '반사신경',
|
|
155
|
+
gameIntroTitlePost: '?',
|
|
156
|
+
gameIntroDescPre: '컨트롤러 로딩 지연과 반응 속도를 테스트합니다. ',
|
|
157
|
+
gameIntroDescSeconds: '30초',
|
|
158
|
+
gameIntroDescPost: ' 동안 버튼을 마스터하세요.',
|
|
159
|
+
gameShareBtn: '랭킹 공유',
|
|
160
|
+
gameLogConnected: '연결됨',
|
|
161
|
+
gameLogDisconnected: '연결 끊김',
|
|
162
|
+
gameLogCleared: '로그 삭제됨...',
|
|
163
|
+
gameLogBtnPrefix: '버튼',
|
|
164
|
+
gameVibNotSupported: '진동이 지원되지 않습니다.',
|
|
165
|
+
gameVibLow: '낮음',
|
|
166
|
+
gameVibHigh: '높음',
|
|
167
|
+
gameMoveStick: '스틱을 움직이세요',
|
|
168
|
+
gamePress: '누르기',
|
|
169
|
+
rankLegendaryName: '전설 (LEGENDARY)',
|
|
170
|
+
rankLegendaryDesc: '당신의 손가락은 음속으로 움직입니다.',
|
|
171
|
+
rankLegendaryFlavor: '컨트롤러가 날아다녀요!',
|
|
172
|
+
rankProName: '프로 (PRO GAMER)',
|
|
173
|
+
rankProDesc: '강철 같은 반사신경과 잘 보정된 컨트롤러를 가졌군요.',
|
|
174
|
+
rankProFlavor: '컨트롤러가 날아다녀요!',
|
|
175
|
+
rankGamerName: '게이머 (GAMER)',
|
|
176
|
+
rankGamerDesc: '나쁘지 않네요, 하지만 경쟁전을 위해서는 더 많은 연습이 필요합니다.',
|
|
177
|
+
rankGamerFlavor: '거의 다 왔어요!',
|
|
178
|
+
rankNoobName: '뉴비 (NOOB)',
|
|
179
|
+
rankNoobDesc: '컨트롤러 전원이 켜져 있는지 확인해 보셨나요?',
|
|
180
|
+
rankNoobFlavor: '컨트롤러 상태가 안 좋았을 뿐이에요!',
|
|
181
|
+
gameShareText: '저를 이길 수 있나요?',
|
|
182
|
+
gameShareScorePrefix: '제 점수는',
|
|
183
|
+
gameShareScoreSuffix: '점입니다',
|
|
184
|
+
gameShareTitle: '온라인 게임패드 테스트',
|
|
185
|
+
},
|
|
186
|
+
};
|