mirror of
https://github.com/dualshock-tools/dualshock-tools.github.io.git
synced 2026-07-18 05:34:06 +03:00
Compare commits
13 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f643dbe005 | ||
|
|
b85f12eccd | ||
|
|
0aac1509aa | ||
|
|
5237c7ca46 | ||
|
|
b163a7d1d4 | ||
|
|
6f662c6a7a | ||
|
|
77b3cedfad | ||
|
|
1fa7066477 | ||
|
|
65376ea717 | ||
|
|
97317bd7b2 | ||
|
|
ef5b307046 | ||
|
|
9e359c9dcd | ||
|
|
152a11d7bc |
281
core.js
281
core.js
@@ -22,6 +22,10 @@ var last_written_finetune_data = []
|
||||
var finetune_visible = false
|
||||
var on_finetune_updating = false
|
||||
|
||||
// Global object to keep track of button states
|
||||
const ds_button_states = {
|
||||
// e.g. 'square': false, 'cross': false, ...
|
||||
};
|
||||
|
||||
// Alphabetical order
|
||||
var available_langs = {
|
||||
@@ -236,6 +240,7 @@ async function ds4_calibrate_range_begin() {
|
||||
try {
|
||||
// Begin
|
||||
await device.sendFeatureReport(0x90, alloc_req(0x90, [1,1,2]))
|
||||
await new Promise(r => setTimeout(r, 200));
|
||||
|
||||
// Assert
|
||||
data = await device.receiveFeatureReport(0x91)
|
||||
@@ -261,6 +266,7 @@ async function ds4_calibrate_range_end() {
|
||||
try {
|
||||
// Write
|
||||
await device.sendFeatureReport(0x90, alloc_req(0x90, [2,1,2]))
|
||||
await new Promise(r => setTimeout(r, 200));
|
||||
|
||||
data = await device.receiveFeatureReport(0x91)
|
||||
data2 = await device.receiveFeatureReport(0x92)
|
||||
@@ -289,6 +295,7 @@ async function ds4_calibrate_sticks_begin() {
|
||||
try {
|
||||
// Begin
|
||||
await device.sendFeatureReport(0x90, alloc_req(0x90, [1,1,1]))
|
||||
await new Promise(r => setTimeout(r, 200));
|
||||
|
||||
// Assert
|
||||
data = await device.receiveFeatureReport(0x91);
|
||||
@@ -316,6 +323,7 @@ async function ds4_calibrate_sticks_sample() {
|
||||
try {
|
||||
// Sample
|
||||
await device.sendFeatureReport(0x90, alloc_req(0x90, [3,1,1]))
|
||||
await new Promise(r => setTimeout(r, 200));
|
||||
|
||||
// Assert
|
||||
data = await device.receiveFeatureReport(0x91);
|
||||
@@ -342,6 +350,7 @@ async function ds4_calibrate_sticks_end() {
|
||||
try {
|
||||
// Write
|
||||
await device.sendFeatureReport(0x90, alloc_req(0x90, [2,1,1]))
|
||||
await new Promise(r => setTimeout(r, 200));
|
||||
|
||||
data = await device.receiveFeatureReport(0x91);
|
||||
data2 = await device.receiveFeatureReport(0x92);
|
||||
@@ -371,6 +380,7 @@ async function ds4_calibrate_sticks() {
|
||||
|
||||
// Begin
|
||||
await device.sendFeatureReport(0x90, alloc_req(0x90, [1,1,1]))
|
||||
await new Promise(r => setTimeout(r, 200));
|
||||
|
||||
// Assert
|
||||
let data = await device.receiveFeatureReport(0x91);
|
||||
@@ -384,11 +394,12 @@ async function ds4_calibrate_sticks() {
|
||||
}
|
||||
|
||||
set_progress(10);
|
||||
await new Promise(r => setTimeout(r, 100));
|
||||
await new Promise(r => setTimeout(r, 200));
|
||||
|
||||
for(var i=0;i<3;i++) {
|
||||
// Sample
|
||||
await device.sendFeatureReport(0x90, alloc_req(0x90, [3,1,1]))
|
||||
await new Promise(r => setTimeout(r, 200));
|
||||
|
||||
// Assert
|
||||
let data = await device.receiveFeatureReport(0x91);
|
||||
@@ -407,6 +418,7 @@ async function ds4_calibrate_sticks() {
|
||||
|
||||
// Write
|
||||
await device.sendFeatureReport(0x90, alloc_req(0x90, [2,1,1]))
|
||||
await new Promise(r => setTimeout(r, 200));
|
||||
if(data.getUint32(0, false) != 0x91010101 || data2.getUint32(0, false) != 0x920101FF) {
|
||||
let d1 = dec2hex32(data.getUint32(0, false));
|
||||
let d2 = dec2hex32(data2.getUint32(0, false));
|
||||
@@ -559,9 +571,15 @@ function ds5_color(x) {
|
||||
'07' : l('Volcanic Red'),
|
||||
'08' : l('Sterling Silver'),
|
||||
'09' : l('Cobalt Blue'),
|
||||
'10' : l('Chroma Teal'),
|
||||
'11' : l('Chroma Indigo'),
|
||||
'12' : l('Chroma Pearl'),
|
||||
'30' : l('30th Anniversary'),
|
||||
'Z1' : l('God of War Ragnarok'),
|
||||
'Z3' : l('Astro Bot')
|
||||
'Z2' : l('Spider-Man 2'),
|
||||
'Z3' : l('Astro Bot'),
|
||||
'Z4' : l('Fortnite'),
|
||||
'Z6' : l('The Last of Us')
|
||||
};
|
||||
|
||||
const colorCode = x.slice(4, 6);
|
||||
@@ -1124,11 +1142,29 @@ function welcome_accepted() {
|
||||
$("#welcomeModal").modal("hide");
|
||||
}
|
||||
|
||||
function init_svg_colors() {
|
||||
const lightBlue = '#7ecbff';
|
||||
const midBlue = '#3399cc';
|
||||
const controller = document.getElementById('Controller');
|
||||
set_svg_group_color(controller, lightBlue);
|
||||
|
||||
['Button_outlines', 'L3_outline', 'R3_outline', 'Trackpad_outline'].forEach(id => {
|
||||
const group = document.getElementById(id);
|
||||
set_svg_group_color(group, midBlue);
|
||||
});
|
||||
|
||||
['Button_infills', 'L3_infill', 'R3_infill', 'Trackpad_infill'].forEach(id => {
|
||||
const group = document.getElementById(id);
|
||||
set_svg_group_color(group, 'white');
|
||||
});
|
||||
}
|
||||
|
||||
function gboot() {
|
||||
gu = crypto.randomUUID();
|
||||
$("#infoshowall").hide();
|
||||
window.addEventListener('DOMContentLoaded', function() {
|
||||
lang_init();
|
||||
init_svg_colors();
|
||||
welcome_modal();
|
||||
$("#checkCircularity").on('change', on_circ_check_change);
|
||||
on_circ_check_change();
|
||||
@@ -1545,6 +1581,28 @@ function refresh_stick_pos() {
|
||||
$("#el-lbl").text(el);
|
||||
$("#er-lbl").text(er);
|
||||
}
|
||||
|
||||
// Move L3 and R3 SVG elements according to stick position
|
||||
try {
|
||||
// These values are tuned for the SVG's coordinate system and visual effect
|
||||
const max_stick_offset = 25;
|
||||
// L3 center in SVG coordinates (from path: cx=295.63, cy=461.03)
|
||||
const l3_cx = 295.63, l3_cy = 461.03;
|
||||
// R3 center in SVG coordinates (from path: cx=662.06, cy=419.78)
|
||||
const r3_cx = 662.06, r3_cy = 419.78;
|
||||
|
||||
const l3_x = l3_cx + plx * max_stick_offset;
|
||||
const l3_y = l3_cy + ply * max_stick_offset;
|
||||
const l3_group = document.querySelector('g#L3');
|
||||
l3_group?.setAttribute('transform', `translate(${l3_x - l3_cx},${l3_y - l3_cy}) scale(0.70)`);
|
||||
|
||||
const r3_x = r3_cx + prx * max_stick_offset;
|
||||
const r3_y = r3_cy + pry * max_stick_offset;
|
||||
const r3_group = document.querySelector('g#R3');
|
||||
r3_group?.setAttribute('transform', `translate(${r3_x - r3_cx},${r3_y - r3_cy}) scale(0.70)`);
|
||||
} catch (e) {
|
||||
// Fail silently if SVG not present
|
||||
}
|
||||
}
|
||||
|
||||
function circ_checked() { return $("#checkCircularity").is(':checked') }
|
||||
@@ -1639,6 +1697,177 @@ function update_battery_status(bat_capacity, cable_connected, is_charging, is_er
|
||||
}
|
||||
}
|
||||
|
||||
const DS4_BUTTON_MAP = [
|
||||
{ name: 'up', byte: 4, mask: 0x0 }, // Dpad handled separately
|
||||
{ name: 'right', byte: 4, mask: 0x1 },
|
||||
{ name: 'down', byte: 4, mask: 0x2 },
|
||||
{ name: 'left', byte: 4, mask: 0x3 },
|
||||
{ name: 'square', byte: 4, mask: 0x10, svg: 'Square' },
|
||||
{ name: 'cross', byte: 4, mask: 0x20, svg: 'Cross' },
|
||||
{ name: 'circle', byte: 4, mask: 0x40, svg: 'Circle' },
|
||||
{ name: 'triangle', byte: 4, mask: 0x80, svg: 'Triangle' },
|
||||
{ name: 'l1', byte: 5, mask: 0x01, svg: 'L1' },
|
||||
{ name: 'l2', byte: 5, mask: 0x04, svg: 'L2' }, // analog handled separately
|
||||
{ name: 'r1', byte: 5, mask: 0x02, svg: 'R1' },
|
||||
{ name: 'r2', byte: 5, mask: 0x08, svg: 'R2' }, // analog handled separately
|
||||
{ name: 'share', byte: 5, mask: 0x10, svg: 'Create' },
|
||||
{ name: 'options', byte: 5, mask: 0x20, svg: 'Options' },
|
||||
{ name: 'l3', byte: 5, mask: 0x40, svg: 'L3' },
|
||||
{ name: 'r3', byte: 5, mask: 0x80, svg: 'R3' },
|
||||
{ name: 'ps', byte: 6, mask: 0x01, svg: 'PS' },
|
||||
{ name: 'touchpad', byte: 6, mask: 0x02, svg: 'Trackpad' },
|
||||
// No mute button on DS4
|
||||
];
|
||||
|
||||
const DS5_BUTTON_MAP = [
|
||||
{ name: 'up', byte: 7, mask: 0x0 }, // Dpad handled separately
|
||||
{ name: 'right', byte: 7, mask: 0x1 },
|
||||
{ name: 'down', byte: 7, mask: 0x2 },
|
||||
{ name: 'left', byte: 7, mask: 0x3 },
|
||||
{ name: 'square', byte: 7, mask: 0x10, svg: 'Square' },
|
||||
{ name: 'cross', byte: 7, mask: 0x20, svg: 'Cross' },
|
||||
{ name: 'circle', byte: 7, mask: 0x40, svg: 'Circle' },
|
||||
{ name: 'triangle', byte: 7, mask: 0x80, svg: 'Triangle' },
|
||||
{ name: 'l1', byte: 8, mask: 0x01, svg: 'L1' },
|
||||
{ name: 'l2', byte: 4, mask: 0xff }, // analog handled separately
|
||||
{ name: 'r1', byte: 8, mask: 0x02, svg: 'R1' },
|
||||
{ name: 'r2', byte: 5, mask: 0xff }, // analog handled separately
|
||||
{ name: 'create', byte: 8, mask: 0x10, svg: 'Create' },
|
||||
{ name: 'options', byte: 8, mask: 0x20, svg: 'Options' },
|
||||
{ name: 'l3', byte: 8, mask: 0x40, svg: 'L3' },
|
||||
{ name: 'r3', byte: 8, mask: 0x80, svg: 'R3' },
|
||||
{ name: 'ps', byte: 9, mask: 0x01, svg: 'PS' },
|
||||
{ name: 'touchpad', byte: 9, mask: 0x02, svg: 'Trackpad' },
|
||||
{ name: 'mute', byte: 9, mask: 0x04, svg: 'Mute' },
|
||||
];
|
||||
|
||||
// Generic button processing for DS4/DS5
|
||||
function process_ds_buttons(data, BUTTON_MAP, dpad_byte, l2_analog_byte, r2_analog_byte) {
|
||||
if (!data || !data.data) return;
|
||||
|
||||
const pressedColor = '#1a237e'; // pleasing dark blue
|
||||
// L2/R2 analog infill
|
||||
[
|
||||
['l2', 'L2_infill', data.data.getUint8(l2_analog_byte)],
|
||||
['r2', 'R2_infill', data.data.getUint8(r2_analog_byte)]
|
||||
].forEach(([name, svg, val]) => {
|
||||
// Fade between white and pressedColor based on analog value
|
||||
const t = val / 255;
|
||||
const color = lerp_color('#ffffff', pressedColor, t);
|
||||
if(val != ds_button_states[name + '_analog']) {
|
||||
ds_button_states[name + '_analog'] = val;
|
||||
const infill = document.getElementById(svg);
|
||||
set_svg_group_color(infill, color);
|
||||
}
|
||||
});
|
||||
|
||||
// Dpad is a 4-bit hat value
|
||||
const hat = data.data.getUint8(dpad_byte) & 0x0F;
|
||||
const dpad_map = {
|
||||
up: (hat === 0 || hat === 1 || hat === 7),
|
||||
right: (hat === 1 || hat === 2 || hat === 3),
|
||||
down: (hat === 3 || hat === 4 || hat === 5),
|
||||
left: (hat === 5 || hat === 6 || hat === 7)
|
||||
};
|
||||
for (let dir of ['up', 'right', 'down', 'left']) {
|
||||
const pressed = dpad_map[dir];
|
||||
if (ds_button_states[dir] !== pressed) {
|
||||
ds_button_states[dir] = pressed;
|
||||
// Update SVG if present
|
||||
const group = document.getElementById(dir.charAt(0).toUpperCase() + dir.slice(1) + '_infill');
|
||||
set_svg_group_color(group, pressed ? pressedColor : 'white');
|
||||
}
|
||||
}
|
||||
|
||||
// Other buttons
|
||||
for (let btn of BUTTON_MAP) {
|
||||
if (['up', 'right', 'down', 'left'].includes(btn.name)) continue; // Dpad handled above
|
||||
const pressed = (data.data.getUint8(btn.byte) & btn.mask) !== 0;
|
||||
if (ds_button_states[btn.name] !== pressed) {
|
||||
ds_button_states[btn.name] = pressed;
|
||||
if (btn.svg) {
|
||||
const group = document.getElementById(btn.svg + '_infill');
|
||||
set_svg_group_color(group, pressed ? pressedColor : 'white');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function set_svg_group_color(group, color) {
|
||||
if (group) {
|
||||
let elements = group.querySelectorAll('path,rect,circle,ellipse,line,polyline,polygon');
|
||||
elements.forEach(el => {
|
||||
// Set up a smooth transition for fill and stroke if not already set
|
||||
if (!el.style.transition) {
|
||||
el.style.transition = 'fill 0.10s, stroke 0.10s';
|
||||
}
|
||||
el.setAttribute('fill', color);
|
||||
el.setAttribute('stroke', color);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// --- Touchpad overlay helpers ---
|
||||
function parse_touch_points(data, offset) {
|
||||
// Returns array of up to 2 points: {active, id, x, y}
|
||||
const points = [];
|
||||
for (let i = 0; i < 2; i++) {
|
||||
const base = offset + i * 4;
|
||||
const arr = [];
|
||||
for (let j = 0; j < 4; j++) arr.push(data.getUint8(base + j));
|
||||
const b0 = data.getUint8(base);
|
||||
const active = (b0 & 0x80) === 0; // 0 = finger down, 1 = up
|
||||
const id = b0 & 0x7F;
|
||||
const b1 = data.getUint8(base + 1);
|
||||
const b2 = data.getUint8(base + 2);
|
||||
const b3 = data.getUint8(base + 3);
|
||||
// x: 12 bits, y: 12 bits
|
||||
const x = ((b2 & 0x0F) << 8) | b1;
|
||||
const y = (b3 << 4) | (b2 >> 4);
|
||||
points.push({ active, id, x, y });
|
||||
}
|
||||
return points;
|
||||
}
|
||||
|
||||
let hasActiveTouchPoints = false;
|
||||
let trackpadBbox = undefined;
|
||||
|
||||
function update_touchpad_circles(points) {
|
||||
const hasActivePointsNow = points.some(pt => pt.active);
|
||||
if(!hasActivePointsNow && !hasActiveTouchPoints) return;
|
||||
|
||||
// Find the Trackpad_infill group in the SVG
|
||||
const svg = document.getElementById('controller-svg');
|
||||
const trackpad = svg?.querySelector('g#Trackpad_infill');
|
||||
if (!trackpad) return;
|
||||
|
||||
// Remove the previous touch points, if any
|
||||
trackpad.querySelectorAll('circle.ds-touch').forEach(c => c.remove());
|
||||
hasActiveTouchPoints = hasActivePointsNow;
|
||||
trackpadBbox = trackpadBbox ?? trackpad.querySelector('path')?.getBBox();
|
||||
|
||||
// Draw up to 2 circles
|
||||
points.forEach((pt, idx) => {
|
||||
if (!pt.active) return;
|
||||
// Map raw x/y to SVG
|
||||
// DS4/DS5 touchpad is 1920x943 units (raw values)
|
||||
const RAW_W = 1920, RAW_H = 943;
|
||||
const pointRadius = trackpadBbox.width * 0.05;
|
||||
const cx = trackpadBbox.x + pointRadius + (pt.x / RAW_W) * (trackpadBbox.width - pointRadius*2);
|
||||
const cy = trackpadBbox.y + pointRadius + (pt.y / RAW_H) * (trackpadBbox.height - pointRadius*2);
|
||||
const circle = document.createElementNS('http://www.w3.org/2000/svg', 'circle');
|
||||
circle.setAttribute('class', 'ds-touch');
|
||||
circle.setAttribute('cx', cx);
|
||||
circle.setAttribute('cy', cy);
|
||||
circle.setAttribute('r', pointRadius);
|
||||
circle.setAttribute('fill', idx === 0 ? '#2196f3' : '#e91e63');
|
||||
circle.setAttribute('fill-opacity', '0.5');
|
||||
circle.setAttribute('stroke', '#3399cc');
|
||||
circle.setAttribute('stroke-width', '4');
|
||||
trackpad.appendChild(circle);
|
||||
});
|
||||
}
|
||||
|
||||
function process_ds4_input(data) {
|
||||
var lx = data.data.getUint8(0);
|
||||
var ly = data.data.getUint8(1);
|
||||
@@ -1659,6 +1888,12 @@ function process_ds4_input(data) {
|
||||
refresh_sticks();
|
||||
}
|
||||
|
||||
// Use DS4 map: dpad byte 4, L2 analog 7, R2 analog 8
|
||||
process_ds_buttons(data, DS4_BUTTON_MAP, 4, 7, 8);
|
||||
|
||||
const points = parse_touch_points(data.data, 34);
|
||||
update_touchpad_circles(points);
|
||||
|
||||
// Read battery
|
||||
var bat = data.data.getUint8(29);
|
||||
var bat_data = bat & 0x0f;
|
||||
@@ -1718,6 +1953,12 @@ function process_ds_input(data) {
|
||||
refresh_finetune();
|
||||
}
|
||||
|
||||
// Use DS5 map: dpad byte 7, L2 analog 4, R2 analog 5
|
||||
process_ds_buttons(data, DS5_BUTTON_MAP, 7, 4, 5);
|
||||
|
||||
const points = parse_touch_points(data.data, 32);
|
||||
update_touchpad_circles(points);
|
||||
|
||||
var bat = data.data.getUint8(52);
|
||||
var bat_charge = bat & 0x0f;
|
||||
var bat_status = bat >> 4;
|
||||
@@ -1743,6 +1984,13 @@ function process_ds_input(data) {
|
||||
update_battery_status(bat_capacity, cable_connected, is_charging, is_error);
|
||||
}
|
||||
|
||||
function set_mute_visibility(show) {
|
||||
const muteOutline = document.getElementById('Mute_outline');
|
||||
const muteInfill = document.getElementById('Mute_infill');
|
||||
if (muteOutline) muteOutline.style.display = show ? '' : 'none';
|
||||
if (muteInfill) muteInfill.style.display = show ? '' : 'none';
|
||||
}
|
||||
|
||||
async function continue_connection(report) {
|
||||
try {
|
||||
device.oninputreport = null;
|
||||
@@ -1762,6 +2010,8 @@ async function continue_connection(report) {
|
||||
if(device.productId == 0x05c4) {
|
||||
$("#infoshowall").hide()
|
||||
$("#ds5finetune").hide()
|
||||
// Hide mute button for DS4
|
||||
set_mute_visibility(false);
|
||||
if(await ds4_info()) {
|
||||
connected = true;
|
||||
mode = 1;
|
||||
@@ -1771,6 +2021,8 @@ async function continue_connection(report) {
|
||||
} else if(device.productId == 0x09cc) {
|
||||
$("#infoshowall").hide()
|
||||
$("#ds5finetune").hide()
|
||||
// Hide mute button for DS4
|
||||
set_mute_visibility(false);
|
||||
if(await ds4_info()) {
|
||||
connected = true;
|
||||
mode = 1;
|
||||
@@ -1780,6 +2032,8 @@ async function continue_connection(report) {
|
||||
} else if(device.productId == 0x0ce6) {
|
||||
$("#infoshowall").show()
|
||||
$("#ds5finetune").show()
|
||||
// Show mute button for DS5
|
||||
set_mute_visibility(true);
|
||||
if(await ds5_info(false)) {
|
||||
connected = true;
|
||||
mode = 2;
|
||||
@@ -1789,6 +2043,8 @@ async function continue_connection(report) {
|
||||
} else if(device.productId == 0x0df2) {
|
||||
$("#infoshowall").show()
|
||||
$("#ds5finetune").show()
|
||||
// Show mute button for DS5 Edge
|
||||
set_mute_visibility(true);
|
||||
if(await ds5_info(true)) {
|
||||
connected = true;
|
||||
mode = 3;
|
||||
@@ -2352,3 +2608,24 @@ function lang_translate(target_file, target_lang, target_direction) {
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
function lerp_color(a, b, t) {
|
||||
// a, b: hex color strings, t: 0.0-1.0
|
||||
function hex2rgb(hex) {
|
||||
hex = hex.replace('#', '');
|
||||
if (hex.length === 3) hex = hex.split('').map(x => x + x).join('');
|
||||
const num = parseInt(hex, 16);
|
||||
return [(num >> 16) & 255, (num >> 8) & 255, num & 255];
|
||||
}
|
||||
function rgb2hex(r, g, b) {
|
||||
return '#' + [r, g, b].map(x => x.toString(16).padStart(2, '0')).join('');
|
||||
}
|
||||
const c1 = hex2rgb(a);
|
||||
const c2 = hex2rgb(b);
|
||||
const c = [
|
||||
Math.round(c1[0] + (c2[0] - c1[0]) * t),
|
||||
Math.round(c1[1] + (c2[1] - c1[1]) * t),
|
||||
Math.round(c1[2] + (c2[2] - c1[2]) * t)
|
||||
];
|
||||
return rgb2hex(c[0], c[1], c[2]);
|
||||
}
|
||||
|
||||
137
index.html
137
index.html
@@ -131,16 +131,129 @@ dl.row dd { font-family: monospace; }
|
||||
</div>
|
||||
|
||||
<div id="mainmenu" class="container" style="display: none;">
|
||||
<div class="row">
|
||||
<div class="row">
|
||||
<div class="col-md-6 col-sm-12">
|
||||
<div class="card text-bg-light" >
|
||||
<div class="card-header"><i class="fas fa-gamepad"></i> <span class="ds-i18n">Controller Info</span></div>
|
||||
<dl class="row px-3 py-2" id="fwinfo"></dl>
|
||||
<span id="infoshowall" class="pb-4 px-4 row">
|
||||
<button class="btn btn-outline-secondary" onclick="show_info_modal()"><i class="fas fa-plus me-1"></i> <span class="ds-i18n">Show all</span></button>
|
||||
</span>
|
||||
</div>
|
||||
<br>
|
||||
<div class="card text-bg-light" >
|
||||
<div class="card-header"><i class="fas fa-gamepad"></i> <span class="ds-i18n">Controller Info</span></div>
|
||||
<dl class="row px-3 py-2" id="fwinfo"></dl>
|
||||
<span id="infoshowall" class="pb-4 px-4 row">
|
||||
<button class="btn btn-outline-secondary" onclick="show_info_modal()"><i class="fas fa-plus me-1"></i> <span class="ds-i18n">Show all</span></button>
|
||||
</span>
|
||||
</div>
|
||||
<!-- DS5 Controller SVG below Controller Info box -->
|
||||
<div class="my-3 text-center mx-3">
|
||||
<!-- DualSense 5 Controller SVG inlined for button highlighting -->
|
||||
<svg id="controller-svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 518" style="width: 80%; height: auto; max-width: 80%;" stroke-width="1">
|
||||
<g id="Button_infills">
|
||||
<g id="Mute_infill" transform="translate(0,0.65) scale(0.70)">
|
||||
<path id="Mute_infill" d="M454.47,468.7c-6.47,0-12.69.04-18.75.14-.92.01-2.18.28-2.96,1.48-.56.85-.83,2.14-.8,3.81.03,2.24.41,3.3,3.67,3.32,4.47.03,8.94.02,13.41.02l5.53-.03c1.83,0,3.67,0,5.5-.01,4.41-.01,8.97-.03,13.46.04,3.68.09,4.03-1.61,4.06-3.62.02-1.47-.23-2.58-.76-3.39-.67-1.03-1.83-1.6-3.26-1.62-6.64-.08-12.98-.12-19.1-.12Z"/>
|
||||
</g>
|
||||
<g id="Down_infill" transform="translate(0,0.65) scale(0.70)">
|
||||
<path d="M177.4,357.17c-1.88,2.05-4.45,3.18-7.24,3.18h-22.91c-2.79,0-5.36-1.13-7.25-3.18-1.88-2.05-2.79-4.71-2.55-7.49l1.25-14.78c.43-5.04,2.71-9.71,6.42-13.16l9.04-8.39c1.21-1.12,2.74-1.68,4.27-1.68s2.98.54,4.18,1.61l9.44,8.45c3.87,3.47,6.24,8.23,6.68,13.4l1.23,14.55c.24,2.78-.67,5.44-2.56,7.49Z"/>
|
||||
</g>
|
||||
<g id="PS_infill" transform="translate(0,0.65) scale(0.70)">
|
||||
<path d="M455.41,437.59c11.37.03,20.87-9.06,21-20.1.14-11.24-9.39-20.97-20.61-21.05-11.23-.08-21,9.57-20.99,20.72,0,11.16,9.32,20.4,20.6,20.43Z"/>
|
||||
</g>
|
||||
<g id="Right_infill" transform="translate(0,0.65) scale(0.70)">
|
||||
<path d="M223.51,284.09v22.91c0,2.79-1.13,5.36-3.18,7.24-2.05,1.89-4.71,2.8-7.49,2.56l-14.55-1.23c-5.17-.44-9.93-2.81-13.39-6.68l-8.46-9.44c-2.17-2.43-2.14-6.06.07-8.45l8.4-9.04c3.44-3.71,8.11-5.99,13.15-6.42l14.78-1.25c2.78-.24,5.44.67,7.49,2.56,2.05,1.88,3.18,4.45,3.18,7.24Z"/>
|
||||
</g>
|
||||
<g id="Left_infill" transform="translate(0,0.65) scale(0.70)">
|
||||
<path d="M140.97,299.45l-8.46,9.44c-3.46,3.87-8.22,6.24-13.39,6.68l-14.55,1.23c-2.78.24-5.44-.67-7.49-2.56-2.05-1.88-3.18-4.45-3.18-7.24v-22.91c0-2.79,1.13-5.36,3.18-7.24,1.84-1.69,4.17-2.6,6.63-2.6.28,0,.57.01.86.04l14.78,1.25c5.04.43,9.71,2.71,13.15,6.42l8.4,9.04c2.21,2.39,2.24,6.02.07,8.45Z"/>
|
||||
</g>
|
||||
<g id="Up_infill" transform="translate(0,0.65) scale(0.70)">
|
||||
<path d="M179.96,241.41l-1.23,14.55c-.44,5.17-2.81,9.93-6.68,13.39l-9.44,8.46c-2.43,2.17-6.06,2.14-8.45-.07l-9.04-8.4c-3.71-3.44-5.99-8.11-6.42-13.15l-1.25-14.78c-.24-2.78.67-5.44,2.55-7.49,1.89-2.05,4.46-3.18,7.25-3.18h22.91c2.79,0,5.36,1.13,7.24,3.18,1.89,2.05,2.8,4.71,2.56,7.49Z"/>
|
||||
</g>
|
||||
<g id="Triangle_infill" transform="translate(0,0.65) scale(0.70)">
|
||||
<path d="M751.45,261.08c15.08-.01,26.75-11.5,26.73-26.31-.02-14.47-12.19-26.62-26.73-26.69-14.57-.07-26.65,11.99-26.66,26.63-.01,14.84,11.65,26.37,26.66,26.36Z"/>
|
||||
</g>
|
||||
<g id="Cross_infill" transform="translate(0,0.65) scale(0.70)">
|
||||
<path d="M750.93,379.05c15.44-.06,27.38-11.64,27.24-26.43-.13-14.28-12.84-26.83-26.99-26.3-14.58.55-26.43,12.2-26.39,26.91.04,14.23,11.83,25.88,26.14,25.82Z"/>
|
||||
</g>
|
||||
<g id="Circle_infill" transform="translate(0,0.65) scale(0.70)">
|
||||
<path d="M787.29,293.47c-.03,14.49,11.88,26.68,26.15,26.75,14.74.08,26.99-11.95,26.95-26.46-.04-14.51-12.12-26.34-27.04-26.48-14.04-.14-26.03,11.91-26.06,26.18Z"/>
|
||||
</g>
|
||||
<g id="Square_infill" transform="translate(0,0.65) scale(0.70)">
|
||||
<path d="M689.1,320.22c14.61.11,27.23-12.13,27.17-26.35-.06-14.09-12.36-26.44-26.54-26.66-14.42-.22-26.52,11.67-26.66,26.18-.13,14.49,11.74,26.73,26.03,26.83Z"/>
|
||||
</g>
|
||||
<g id="Options_infill" transform="translate(0,0.65) scale(0.70)">
|
||||
<path d="M691.58,199.27l-4.27,17.92c-.91,3.82-4.76,6.19-8.58,5.28-3.82-.91-6.19-4.76-5.28-8.58l4.27-17.92c.78-3.27,3.71-5.48,6.93-5.48.54,0,1.1.06,1.65.19,1.85.44,3.42,1.58,4.42,3.2s1.3,3.53.86,5.38Z"/>
|
||||
</g>
|
||||
<g id="Create_infill" transform="translate(0,0.65) scale(0.70)">
|
||||
<path d="M224.03,191.39c.55-.13,1.11-.19,1.65-.19,3.22,0,6.15,2.21,6.93,5.47l4.27,17.93c.44,1.85.13,3.76-.86,5.38-1,1.62-2.57,2.76-4.42,3.2-3.82.91-7.67-1.46-8.58-5.28l-4.27-17.92c-.91-3.82,1.46-7.67,5.28-8.58Z"/>
|
||||
</g>
|
||||
<g id="R2_infill" transform="translate(0,0.65) scale(0.70)">
|
||||
<path d="M800.14,115.88c-1.06,1.16-2.71,1.73-5.05,1.73-.01,0-.03,0-.04-.01-24.46-6.24-52.88-10.2-84.5-11.76h-.12c-4.19.08-7.09-.8-8.55-2.62-1.41-1.74-1.67-4.53-.77-8.29l.03-.15,9.87-67.57c3.29-14.17,13.23-21.12,30.28-21.12,2.57,0,5.31.16,8.22.47,13.16,1.54,22.93,6.87,29.86,16.29,2.6,3.53,4.67,7.72,6.16,12.44,7.81,24.72,11.55,46.61,15.88,71.95l.15.88c.41,3.61-.06,6.25-1.42,7.76Z"/>
|
||||
</g>
|
||||
<g id="L2_infill" transform="translate(0,0.65) scale(0.70)">
|
||||
<path d="M208.41,103.22c-1.47,1.82-4.36,2.7-8.55,2.62h-.12c-31.62,1.56-60.04,5.52-84.5,11.76-.01.01-.03.01-.04.01-2.34,0-4-.57-5.05-1.73-1.36-1.51-1.84-4.15-1.42-7.76l.15-.88c4.33-25.34,8.07-47.23,15.87-71.95,1.49-4.72,3.57-8.91,6.17-12.44,6.93-9.42,16.7-14.75,29.86-16.29,2.9-.31,5.64-.47,8.22-.47,17.05,0,26.98,6.95,30.28,21.12l9.87,67.57.03.15c.89,3.76.63,6.55-.77,8.29Z"/>
|
||||
</g>
|
||||
<g id="R1_infill" transform="translate(0,0.65) scale(0.70)">
|
||||
<path d="M805.8,173.73c-45.97-8.48-86.34-15.03-123.26-19.99,2.9-8.22,9.5-13.32,20.48-15.9,26.02-3.4,53.76,2.2,87.27,17.61.98.44,1.96.95,2.94,1.51,9.2,5.27,12.41,9.42,12.57,16.77Z"/>
|
||||
</g>
|
||||
<g id="L1_infill" transform="translate(0,0.65) scale(0.70)">
|
||||
<path d="M226.89,153.84c-42.76,6.62-84.3,13.1-123.56,19.27.76-6.19,2.09-12.15,27.86-22.29,28.7-10.58,37.26-12.24,70.44-13.64,2.49-.11,4.68,0,6.67.32,9.71,1.57,15.81,6.94,18.59,16.34Z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Outline" transform="translate(0,0.65) scale(0.70)">
|
||||
<g id="Controller">
|
||||
<path id="Controller_outline" d="M804.61,172.5s.09.02.13.02c-45.03-8.29-84.58-14.71-120.82-19.6.06,0,.12.02.17.02-.09.21-.14.44-.23.66-1.95.4-4.06.27-6,.85-.01-.01-.04-.03-.06-.05-.04-.13-.09-.26-.14-.39.02,0,.04,0,.07,0-4.87-.52-9.74-1.01-14.62-1.5-4.79-.46-9.6-.91-14.4-1.34h-.01s-.37-.05-.37-.05c-9.11-.83-18.27-1.58-27.45-2.28,0,.04,0,.08,0,.11,6.85.92,13.16,2.58,18.67,6.93,0,0-.01-.01-.02-.02,1.13.1,2.24.2,3.36.3,5.18,1.42,9.39,5.36,10.93,10.49,1.6,5.35,1.3,12.24-.9,20.47l-21.05,109.2c-4.19,26.12-19.01,37.08-42.82,41.56l-143.01.03-128.89-.03c-23.72-4.39-39.07-18.19-42.83-41.64l-2.11-10.93c-.29-2.09-.65-4.23-1.12-6.43l-12.19-62.64-5.57-28.92-.04-.19c-.09-.35-.16-.68-.25-1.03l-1.25-6.42s0-.03-.01-.04c-.67-4.99-.48-9.34.61-12.98,1.44-4.81,5.22-8.56,9.95-10.19,1.68-.14,3.36-.28,5.03-.42-.01,0-.02.02-.04.03.13-.02.26-.04.39-.06,1.51-.96,3.05-1.79,4.52-2.46,4.51-2.11,9.69-3.99,14.78-4.58-8.71.66-17.56,1.37-26.29,2.11l-1.11.09c-9.48.82-18.77,1.68-27.61,2.55l-.46.05s0-.01,0-.02c-.02.03-.03.06-.04.09-1.99.06-3.94-.42-5.98-.72,0-.03,0-.06-.01-.09.03,0,.06,0,.08-.01-41.23,6.38-81.95,12.73-121.09,18.88,0-.03.01-.07.02-.1l-5.76,1.61c-1.39.76-2.77,1.68-4.11,2.75-6.4,5.15-12.04,13.69-17.24,26.11-27.39,64.19-47.54,129.24-59.9,193.34C4.64,462.34-.21,530.22,3.08,597.4c2.41,40.48,7.54,66.82,16.62,85.41,9.85,20.12,24.59,31.39,46.4,35.45l39.76,12.39.33.07h.1c.97.12,1.93.18,2.86.18,13.63,0,18.84-11.41,21.55-19.96,27.65-75.71,49.02-130.11,67.27-171.19,8.52-19.59,24.3-29.11,48.23-29.11,3.5,0,7.23.21,11.11.63h.17c60.68,2.54,123.31,3.82,186.16,3.82,70.29,0,142.26-1.6,213.94-4.76,2.31-.2,4.59-.3,6.77-.3,23.28,0,39.64,11.03,50,33.68,26.25,62.96,48.44,119.86,67.83,173.94,3.28,8.94,9.45,13.47,18.32,13.47,1.52,0,3.14-.14,4.82-.4h.06s45.5-13.11,45.5-13.11c2-.48,4.05-1.09,6.27-1.86l.13-.04.72-.25v-.02c15.47-5.75,26.84-17.21,34.75-35,7.77-17.48,12.58-41.33,15.58-77.35,4.35-57.49-1.58-134.16-16.29-210.35-15.8-81.82-40.06-154.86-68.3-205.65-2.37-4.62-4.05-7.26-5.79-9.11-2.01-2.17-4.26-3.46-7.64-4.35,0-.05-.03.03-.04-.02M654.75,157.28c1.32.12,2.27.2,2.26.19,4.84.46,9.76.95,14.92,1.48-3.75,2.27-6.89,5.18-9.51,8.8-.01-.02-.01-.04-.02-.06-.81,1.03-1.56,2.12-2.23,3.26-.18-2.07-.53-4.04-1.07-5.86-.89-2.98-2.4-5.62-4.35-7.82ZM251.1,157.47l.22-.17.34-.03c-2.05,2.16-3.62,4.8-4.53,7.83-.29.95-.5,1.95-.69,2.98-.3-.5-.5-.83-.51-.82-2.55-3.31-5.76-6.16-9.46-8.41,4.54-.44,9.37-.89,14.63-1.37ZM63.74,711.34c-1.7,0-3.53-.26-5.45-.77l-.46-.09c-15.03-4.97-25.58-14.54-33.18-30.09-8.75-17.89-13.71-43.59-16.08-83.29C2.18,466.43,27.04,334.31,82.48,204.42c5.96-14.26,12.4-22.95,19.68-26.57,36.97-5.81,77.23-12.09,119.66-18.67,12.6,2.24,22,10.48,24.57,21.52.29,2.12.73,4.32,1.3,6.61l5.63,28.91,13.52,70.16c3.04,22.28-4.43,36.44-19.51,54.89-33.86,35.52-63.96,83.16-92.02,145.65-22.57,50.27-43.21,108.54-64.97,183.45-3.79,15.91-8.97,32.96-18.74,38.81-2.41,1.45-4.98,2.16-7.85,2.16ZM804.28,725.31c-1.3.21-2.54.31-3.7.31-6.47,0-10.8-3.22-13.23-9.84-19.36-54.03-41.59-111.02-67.97-174.28-11.21-24.52-29.78-36.96-55.17-36.96-2.28,0-4.64.1-6.97.3-71.45,3.15-143.25,4.75-213.42,4.75-62.79,0-125.39-1.28-185.99-3.8-3.91-.42-7.72-.63-11.32-.63-26.2,0-44.22,10.9-53.58,32.37-18.31,41.24-39.73,95.76-67.43,171.64-3.62,11.38-8.49,16.23-16.28,16.23-.66,0-1.36-.03-2.07-.1l-34.11-10.63c.47-.24.93-.49,1.38-.76,11.51-6.9,17.19-25.2,21.22-42.14,31.82-109.48,78.28-245.56,155.72-326.77l.12-.14c10.32-12.6,15.94-21.99,18.94-31.77.01.02.02.03.03.05l.04-.29c.47-1.24.83-2.6,1.14-4.03,5.82,18.4,22.43,32.57,45.18,34.56l129.25.04,143.13-.03h.24c23.32-2.05,38.12-13.14,44.92-33.72.1.51.2,1.01.32,1.53,3.02,14.37,11.49,26.24,20.3,37l.17.19c81.44,78.96,128.1,212.33,162.99,332.38,5.91,20.1,10.54,31.1,19.1,35.05l-32.95,9.49ZM902.84,602.66c-4.81,57.88-14.43,96.11-47.36,107.83-4.19,1.09-7.37,1.59-9.99,1.59-9.87,0-14.41-6.75-22.08-32.85-22.39-77.03-43.38-136.08-66.05-185.82-29.41-64.53-61.55-113.22-98.27-148.86-16.5-20.18-23.88-35.21-18.4-61.3l20.03-98.96c4.49-15.34,12.4-22.67,27.28-25.27,35.69,4.91,74.62,11.29,119,19.5h.07c5.65,1.12,7.18,2.15,11.82,11.17,60.68,109.11,92.4,301.63,83.95,412.97Z"/>
|
||||
<g id="Speaker_grill">
|
||||
<circle cx="420.29" cy="357.71" r="4.82"/>
|
||||
<circle cx="437.84" cy="357.71" r="4.82"/>
|
||||
<circle cx="455.38" cy="357.71" r="4.82"/>
|
||||
<circle cx="472.93" cy="357.71" r="4.82"/>
|
||||
<circle cx="490.47" cy="358.68" r="4.82"/>
|
||||
</g>
|
||||
<path id="L3_surround" d="M340.92,373.72c-12.1-11.94-28.56-18.52-46.36-18.52-1.03,0-2.06.02-3.11.06-16.56.69-32.12,7.92-43.82,20.35-11.43,12.15-17.66,28.1-17.11,43.7-.63,16.4,5.79,32.86,17.63,45.16,12.39,12.87,29.14,19.96,47.17,19.96h.13c17.75-.03,34.16-6.86,46.21-19.24,12.14-12.46,18.58-29.31,18.14-47.45-.41-16.77-7.12-32.41-18.9-44.04ZM296.63,478.55c-.35,0-.7,0-1.06,0-16.24,0-31.34-6.14-42.53-17.29-11.18-11.15-17.33-26.19-17.32-42.36.02-27.96,22.56-58.15,58.94-58.15h.29c16.72.07,32,6.28,43.02,17.47,10.8,10.97,16.65,25.88,16.48,41.98-.4,36.53-29.71,58.36-57.82,58.36Z"/>
|
||||
<path id="R3_surround" d="M617.17,355.14c-1.39,0-2.81.05-4.21.13-16.38,1.04-31.68,7.93-43.07,19.39-11.63,11.71-18.09,27.2-18.18,43.63-.1,18.38,6.27,34.57,18.42,46.8,12.21,12.3,29.46,19.38,47.3,19.41h.1c16.61,0,32.4-6.7,44.48-18.88,12.21-12.3,19.13-29.12,19-46.1.29-16.6-6.42-33.11-18.41-45.31-12.1-12.31-28.23-19.09-45.43-19.09ZM675.5,419.52c-.02,32.9-25.99,58.85-59.12,59.08h-.4c-15.55,0-30.85-6.54-41.96-17.95-11.2-11.5-17.15-26.51-16.74-42.27.84-32.25,26.93-57.61,59.4-57.74h.24c16.08,0,31.03,6.27,42.11,17.65,10.89,11.19,16.89,26.21,16.48,41.23Z"/>
|
||||
</g>
|
||||
<g id="Button_outlines">
|
||||
<path id="L1" d="M131.54,151.76c28.58-10.54,37.1-12.19,70.13-13.58.62-.03,1.21-.04,1.78-.04,1.7,0,3.23.11,4.69.35,8.92,1.44,14.64,6.2,17.45,14.54-.03,0-.06,0-.08.01,0,.03,0,.06.01.09,2.04.3,3.99.78,5.98.72.02-.03.03-.06.04-.09-3.07-11.83-10.65-18.79-22.53-20.72-1.76-.27-3.6-.41-5.61-.41-.63,0-1.28,0-1.95.04-5.25.22-9.69.44-13.55.68-23.59,1.48-33.63,4.15-58.32,13.26-1.9.75-3.55,1.43-5.01,2.05l-.16.07c-23.9,10.2-24.72,17.05-25.6,24.3-.02.13-.04.25-.05.38l5.76-1.61c.79-5.14,3.38-10.75,27.02-20.05Z"/>
|
||||
<path id="R1" d="M804.81,159.88c-2.27-2.33-5.34-4.53-9.35-6.83-1.04-.6-2.15-1.17-3.28-1.69-27.77-12.77-52.08-18.98-74.31-18.98-5.21,0-10.43.34-15.56,1.02l-.23.04c-13.31,3.1-21.29,9.84-24.35,20.58-.02,0-.04,0-.07,0,.05.13.1.26.14.39.02.02.05.03.06.05.49-.18,1-.3,1.52-.33,1.52-.11,3.01-.3,4.48-.51.01-.04.03-.08.05-.12.05-.18.11-.36.18-.54-.06,0-.12-.02-.17-.02,2.98-7.21,9.14-11.7,19.28-14.1,4.8-.62,9.73-.94,14.65-.94,21.43,0,44.99,6.05,72.03,18.48.91.41,1.84.89,2.85,1.47,8.44,4.83,11.54,8.54,12.01,14.69-.05,0-.09-.02-.13-.02.06.13.12.25.16.39.02.06.05.12.07.18,1.01.07,1.98.26,2.89.58.87-.31,1.74-.34,2.57-.15-.14-5.55-1.73-9.75-5.49-13.61Z"/>
|
||||
<path id="L2_outline" d="M115.16,122.1h.4l.52-.07.06-.02c24.15-6.19,52.33-10.12,83.69-11.68h.47c5.39,0,9.3-1.44,11.61-4.29,2.31-2.88,2.86-6.94,1.67-11.99l-9.91-67.79c-3.78-16.37-15.49-24.66-34.81-24.66-2.7,0-5.6.17-8.61.49-14.28,1.66-25.37,7.75-32.97,18.08-2.9,3.94-5.2,8.57-6.83,13.75-7.91,25.05-11.67,47.06-16.02,72.55l-.18,1.03c-.57,5.06.28,8.9,2.55,11.39,1.92,2.12,4.73,3.2,8.34,3.2ZM109.72,108.29l.15-.89c4.32-25.3,8.06-47.16,15.84-71.81,1.46-4.61,3.48-8.7,6.02-12.15,6.76-9.19,16.3-14.38,29.16-15.89,2.88-.31,5.61-.46,8.11-.46,16.53,0,26.12,6.66,29.29,20.26l9.88,67.62.04.18c.81,3.44.62,5.94-.57,7.43-1.21,1.5-3.65,2.25-7.25,2.25h-.69c-31.62,1.56-60.09,5.52-84.61,11.76-1.98-.02-3.35-.48-4.19-1.4-1.15-1.27-1.55-3.69-1.18-6.92Z"/>
|
||||
<path id="R2_outline" d="M709.98,110.34h.41c31.43,1.56,59.6,5.48,83.74,11.68l.06.02.53.07h.4c3.61,0,6.42-1.08,8.34-3.2,2.27-2.5,3.13-6.33,2.54-11.45l-.17-.97c-4.35-25.49-8.11-47.5-16.02-72.55-1.63-5.18-3.93-9.81-6.83-13.75-7.61-10.33-18.71-16.42-32.99-18.08-3-.33-5.89-.49-8.6-.49-19.32,0-31.03,8.3-34.82,24.74l-9.87,67.63c-1.21,5.13-.66,9.2,1.66,12.08,2.31,2.85,6.22,4.29,11.61,4.29ZM702.09,95.12l.04-.2,9.85-67.49c3.18-13.69,12.77-20.35,29.31-20.35,2.49,0,5.22.16,8.1.46,12.87,1.51,22.41,6.7,29.17,15.89,2.53,3.43,4.55,7.52,6.01,12.15,7.79,24.65,11.52,46.51,15.85,71.82l.14.83c.37,3.3-.03,5.71-1.17,6.97-.85.93-2.22,1.39-4.19,1.4-24.52-6.25-52.99-10.21-84.66-11.77h-.64c-3.56,0-6.07-.77-7.26-2.25-1.2-1.49-1.4-3.99-.56-7.47Z"/>
|
||||
<path id="Create_outline" d="M218.64,218.94c1.25,5.26,5.9,8.93,11.31,8.93.92,0,1.83-.11,2.69-.32,3.02-.72,5.57-2.57,7.2-5.22,1.63-2.65,2.13-5.76,1.41-8.77l-4.26-17.93c-1.25-5.26-5.9-8.93-11.31-8.93-.9,0-1.81.11-2.7.32-3.02.71-5.57,2.57-7.2,5.21-1.63,2.65-2.13,5.76-1.42,8.78l4.27,17.93ZM220.47,195.11c.86-1.4,2.21-2.37,3.79-2.75.46-.11.93-.16,1.42-.16,2.85,0,5.3,1.93,5.96,4.7l4.27,17.93c.38,1.59.11,3.23-.74,4.62-.86,1.4-2.21,2.38-3.8,2.75-.47.11-.94.17-1.42.17-2.85,0-5.3-1.94-5.96-4.71l-4.27-17.93c-.38-1.59-.11-3.23.75-4.62Z"/>
|
||||
<path id="Options_outline" d="M677.7,226.85c.91.21,1.82.32,2.69.32,5.4,0,10.05-3.68,11.3-8.94l4.27-17.92c.72-3.02.22-6.15-1.41-8.79-1.63-2.64-4.18-4.5-7.2-5.22-.88-.21-1.79-.31-2.69-.31-5.41,0-10.06,3.67-11.32,8.93l-4.27,17.93c-1.49,6.23,2.38,12.51,8.62,14.01ZM674.43,214.12l4.26-17.92c.66-2.77,3.11-4.71,5.96-4.71.5,0,.96.06,1.42.17,1.59.38,2.94,1.35,3.8,2.74.85,1.38,1.12,3.03.74,4.63l-4.26,17.92c-.66,2.77-3.11,4.71-5.96,4.71-.47,0-.95-.06-1.42-.17-1.59-.38-2.94-1.35-3.8-2.75-.86-1.39-1.12-3.04-.74-4.63Z"/>
|
||||
<path id="Left_outline" d="M99.81,321.31c1.27.35,2.6.53,3.93.53.42,0,.83-.02,1.25-.06l14.55-1.23c5.53-.47,10.68-2.71,14.76-6.39.68-.6,1.32-1.25,1.94-1.94l8.45-9.44c3.91-4.36,3.85-10.88-.13-15.18l-8.39-9.04c-4.29-4.63-10.11-7.47-16.4-8l-14.78-1.25c-4.13-.36-8.24,1.05-11.29,3.85s-4.8,6.79-4.8,10.93v22.91c0,4.14,1.75,8.12,4.8,10.93,1.75,1.61,3.85,2.76,6.11,3.38ZM93.9,284.09c0-2.79,1.13-5.36,3.18-7.24,1.84-1.69,4.17-2.6,6.63-2.6.28,0,.57.01.86.04l14.78,1.25c5.04.43,9.71,2.71,13.15,6.42l8.4,9.04c2.21,2.39,2.24,6.02.07,8.45l-8.46,9.44c-3.46,3.87-8.22,6.24-13.39,6.68l-14.55,1.23c-2.78.24-5.44-.67-7.49-2.56-2.05-1.88-3.18-4.45-3.18-7.24v-22.91Z"/>
|
||||
<path id="Right_outline" d="M172.85,287.6c-3.98,4.3-4.04,10.82-.14,15.18l8.27,9.23.19.21c4.32,4.83,10.25,7.78,16.7,8.33l14.55,1.23c.42.04.83.06,1.25.06,1.4,0,2.79-.2,4.12-.58,2.18-.64,4.22-1.76,5.92-3.33,3.05-2.81,4.8-6.79,4.8-10.93v-22.91c0-4.14-1.75-8.13-4.8-10.93-3.05-2.8-7.16-4.2-11.29-3.85l-14.78,1.25c-.74.06-1.48.16-2.2.28-2.7.47-5.27,1.36-7.65,2.64-2.43,1.31-4.64,3.01-6.55,5.08l-8.39,9.04ZM198.06,275.54l14.78-1.25c2.78-.24,5.44.67,7.49,2.56,2.05,1.88,3.18,4.45,3.18,7.24v22.91c0,2.79-1.13,5.36-3.18,7.24-2.05,1.89-4.71,2.8-7.49,2.56l-14.55-1.23c-5.17-.44-9.93-2.81-13.39-6.68l-8.46-9.44c-2.17-2.43-2.14-6.06.07-8.45l8.4-9.04c3.44-3.71,8.11-5.99,13.15-6.42Z"/>
|
||||
<path id="Down_outline" d="M183.71,334.71c-.13-1.61-.42-3.18-.84-4.71-.05-.16-.1-.32-.15-.47-.22-.68-.45-1.34-.69-2-1.43-3.61-3.69-6.87-6.65-9.52l-9.44-8.46c-4.36-3.9-10.88-3.85-15.18.14l-9.04,8.39c-1.05.97-2,2.01-2.85,3.12-2.94,3.82-4.74,8.41-5.15,13.28l-1.25,14.78c-.15,1.83.03,3.65.54,5.38.62,2.18,1.75,4.21,3.31,5.91,2.8,3.05,6.79,4.8,10.93,4.8h22.91c4.14,0,8.12-1.75,10.93-4.8,2.8-3.05,4.2-7.16,3.85-11.29l-1.23-14.55ZM177.4,357.17c-1.88,2.05-4.45,3.18-7.24,3.18h-22.91c-2.79,0-5.36-1.13-7.25-3.18-1.88-2.05-2.79-4.71-2.55-7.49l1.25-14.78c.43-5.04,2.71-9.71,6.42-13.16l9.04-8.39c1.21-1.12,2.74-1.68,4.27-1.68s2.98.54,4.18,1.61l9.44,8.45c3.87,3.47,6.24,8.23,6.68,13.4l1.23,14.55c.24,2.78-.67,5.44-2.56,7.49Z"/>
|
||||
<path id="Up_outline" d="M133.72,256.61c.48,5.73,2.88,11.07,6.81,15.22.38.41.78.8,1.19,1.18l9.04,8.39c2.18,2.02,4.92,3.03,7.67,3.03s5.36-.97,7.51-2.9l9.44-8.45c1.35-1.2,2.55-2.53,3.58-3.96,2.51-3.43,4.1-7.44,4.64-11.72.05-.34.08-.68.11-1.02l1.23-14.55c.35-4.13-1.05-8.24-3.85-11.29-2.81-3.05-6.79-4.8-10.93-4.8h-22.91c-4.14,0-8.13,1.75-10.93,4.8-1.53,1.66-2.64,3.64-3.27,5.76-.54,1.77-.74,3.65-.58,5.53l1.25,14.78ZM140,233.92c1.89-2.05,4.46-3.18,7.25-3.18h22.91c2.79,0,5.36,1.13,7.24,3.18,1.89,2.05,2.8,4.71,2.56,7.49l-1.23,14.55c-.44,5.17-2.81,9.93-6.68,13.39l-9.44,8.46c-2.43,2.17-6.06,2.14-8.45-.07l-9.04-8.4c-3.71-3.44-5.99-8.11-6.42-13.15l-1.25-14.78c-.24-2.78.67-5.44,2.55-7.49Z"/>
|
||||
<path id="Cross_outline" d="M751.82,321.39h-.11c-8.53,0-16.94,3.65-23.08,10.01-5.91,6.13-9.01,13.94-8.72,21.98.63,17.53,13.54,30.1,31.38,30.57h.03c17.47,0,31.35-13.6,31.6-30.96.12-8.05-3.19-16.1-9.08-22.09-5.9-6.01-13.93-9.48-22.02-9.51ZM770.09,370.25c-4.93,5-11.74,7.77-19.16,7.8h-.1c-13.76,0-24.99-11.14-25.03-24.82-.04-13.99,11.13-25.37,25.43-25.91.28-.01.56-.02.84-.02,13.25,0,24.99,11.83,25.12,25.32.06,6.67-2.46,12.93-7.09,17.63Z"/>
|
||||
<path id="Triangle_outline" d="M751.06,266c.21,0,.41,0,.62,0,8.36,0,16.79-3.45,22.54-9.22,5.71-5.73,8.72-13.49,8.69-22.44-.05-17.11-14.19-31.03-31.52-31.03h-.19c-17.15.1-31.24,14.15-31.4,31.3-.08,8.08,3.16,15.85,9.1,21.87,5.94,6.02,14.02,9.48,22.16,9.51ZM751.32,209.08h.12c13.93.07,25.71,11.83,25.73,25.69.01,6.89-2.62,13.27-7.4,17.98-4.79,4.71-11.3,7.31-18.35,7.32-6.99,0-13.47-2.6-18.25-7.33-4.77-4.72-7.4-11.13-7.39-18.03.01-14.13,11.47-25.63,25.53-25.63Z"/>
|
||||
<path id="Circle_outline" d="M791.23,272.06c-5.72,5.82-8.79,13.5-8.65,21.62.31,17.85,13.17,30.72,31.27,31.3.3,0,.6.01.9.01,16.35,0,30.24-14.13,30.33-30.86.05-8.44-3.12-16.31-8.92-22.14-5.91-5.94-13.96-9.21-22.68-9.21-8.47,0-16.37,3.3-22.25,9.28ZM839.39,293.77c.02,6.64-2.62,12.96-7.44,17.78-4.93,4.95-11.46,7.67-18.37,7.67,0,0-.14,0-.14,0-13.66-.07-25.18-11.87-25.15-25.75.03-13.65,11.4-25.19,24.83-25.19h.23c14.33.14,26.01,11.57,26.05,25.49Z"/>
|
||||
<path id="Square_outline" d="M691.99,262.62c-.79-.06-1.6-.09-2.38-.09-8.46,0-16.39,3.35-22.34,9.45-5.74,5.88-8.93,13.76-8.74,21.58-.29,17.51,12.78,31.02,30.42,31.42.26,0,.52,0,.78,0,17.09,0,30.37-12.98,30.9-30.18.51-16.54-12.34-30.97-28.64-32.18ZM707.82,311.38c-4.97,4.99-11.72,7.85-18.53,7.85,0,0-.18,0-.18,0-6.58-.05-12.82-2.74-17.59-7.59-4.87-4.95-7.51-11.43-7.45-18.24.13-13.89,11.46-25.19,25.26-25.19h.38c13.56.21,25.5,12.2,25.56,25.67.03,6.44-2.62,12.65-7.44,17.5Z"/>
|
||||
<path id="PS_outline" d="M455.4,442.49h.21c14.28-.12,25.41-11.31,25.35-25.47-.06-14.05-11.44-25.51-25.42-25.54-13.74,0-25.39,11.7-25.44,25.55-.03,6.72,2.63,13.09,7.46,17.95,4.82,4.84,11.16,7.51,17.84,7.51ZM441.75,403.34c3.78-3.75,8.85-5.9,13.92-5.9h.13c5.08.04,10.12,2.23,13.84,6.02,3.73,3.8,5.84,8.91,5.78,14.02-.13,10.54-9.08,19.11-20,19.11h0c-10.81-.02-19.6-8.74-19.6-19.43,0-5.03,2.17-10.07,5.94-13.82Z"/>
|
||||
<path id="Mute_outline" d="M474.24,464.3c-6.6-.06-13.03-.1-19.11-.1-6.51,0-12.67.04-18.82.11-2.55.03-4.67.99-6.15,2.77-1.4,1.7-2.12,4.04-2.07,6.78.07,3.52,1.54,7.73,8.15,7.76,2.64.01,5.27.02,7.91.02h11.06s1.74-.03,1.74-.03c0,0,7.44-.02,9.31-.02,2.62,0,5.25,0,7.86.04h.17c7.21,0,8.38-5.01,8.43-8,.05-2.57-.65-4.8-2.03-6.45-1.54-1.85-3.77-2.85-6.45-2.88ZM473.79,476.4h-2.19c-2.66-.05-2.76-.04-5.42-.04-1.84,0-10.97.03-10.97.03l-5.52.04h-5.9c-2.5,0-5,0-7.5-.02-.93,0-2.31-.66-2.33-2.29-.02-1.53-.18-2.63.18-3.31.57-1.06,1.65-1.24,2.25-1.25,6.08-.11,12.21-.17,18.74-.17,6.06,0,12.48.05,19.09.15,1.14.02,2.07.53,2.55,1.42.21.4.5,1.12.47,2.82-.02,1.47-.69,2.61-3.43,2.61Z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="translate(0,0.65) scale(0.70)">
|
||||
<g id="Trackpad_infill" >
|
||||
<path d="M452.27,328.53v-.02c40.22,0,80.43.07,120.65-.07,6.47-.02,13.17.01,19.36-1.58,19.32-4.99,29.59-18.18,33.51-36.6,7.44-34.93,15.37-69.99,21.95-105.09,1.8-9.6-.91-20.7-9.35-26.91-6.53-4.8-15.07-5.38-22.94-6-15.84-1.24-31.65-1.69-47.52-2.33-25.29-1.01-52.32-3.71-77.62-4-59.86-.67-117.65,1.12-177.41,5.09-10.18.68-20.91.48-30.97,2.12-12.6,2.05-25.72,12.82-22.5,31.32,2.97,17.08,7.65,34.26,11,51.28,3.72,18.85,7.61,37.68,11.08,56.58,2.33,12.67,8.64,23.23,19.04,30.56,9.97,7.03,21.64,5.61,33.14,5.62,39.53.06,79.06.02,118.6.02Z"/>
|
||||
</g>
|
||||
<g id="Trackpad_outline" >
|
||||
<path d="M272.25,153.56c-4.52,2.07-9.76,5.6-12.42,9.85-4.66,6.89-3.71,15.95-1.11,26.9l19.74,98.37c4.52,27.51,18.61,41.63,45.84,43.95h.12l235.94.06c-4.66-.08,4.33,0,9.56,0,35.3,0,49.5-11.1,56.07-37.73l20.44-101.35c4.26-16.93,3.93-29.59-6.87-37.71-6.24-4.92-13.49-6.41-21.4-7.26-52.97-4-107.12-6.03-161.4-6.03-.3,0-.6,0-.9,0-2.3-.01-4.58-.02-6.81-.02-.36,0-.72,0-1.08,0-.33,0-.66,0-1,0-3.06.02-6.18.05-9.34.09-48.92.43-98.66,2.47-148.15,6.11-5.85.15-12,2.31-17.24,4.76ZM641.07,192.4l-20.45,101.35c-6.01,24.35-18.98,33.44-50.41,33.44-3.02,0-6.24.2-9.64,0l-235.88-.06c-24.7-2.11-36.7-14.33-40.82-39.44l-19.79-98.56c-2.23-9.46-3.46-17.08.31-22.64,4.07-6.04,11.93-10.09,23.26-12.03,13.9-1.04,27.83-1.95,41.74-2.73,35.06-1.79,70.63-3.02,101.96-3.47.19,0,.38,0,.58,0,1.55-.02,3.08-.04,4.6-.06,6.53-.06,13.04-.09,19.54-.09,46.61.2,104.83,2.34,158.55,5.8,3.45.26,7.4.89,10.36,1.77,18.01,5.87,21.08,16.85,16.09,36.73Z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="L3" transform="translate(0,0.65) scale(0.70)">
|
||||
<g id="L3_infill">
|
||||
<path d="M295.63,461.03c23.36,0,41.53-17.87,41.57-40.86.03-23.53-18.65-42.27-42.16-42.27-23.09,0-41.82,18.55-41.83,41.45-.01,23.9,18.09,41.69,42.42,41.69Z"/>
|
||||
</g>
|
||||
<g id="L3_outline">
|
||||
<path d="M295.14,466.67c-26.36-.18-47.62-21.47-47.16-47.19.51-28.21,21.76-46.51,47.28-47.04,25.52-.53,47.65,22.07,47.37,47.25-.29,26.05-21.63,47.15-47.5,46.98ZM295.63,461.03c23.36,0,41.53-17.87,41.57-40.86.03-23.53-18.65-42.27-42.16-42.27-23.09,0-41.82,18.55-41.83,41.45-.01,23.9,18.09,41.69,42.42,41.69Z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="R3" transform="translate(0,0.65) scale(0.70)">
|
||||
<g id="R3_infill">
|
||||
<path d="M658.23,419.7c.55-22.76-17.76-41.19-40.35-41.72-23.43-.55-42.68,18.19-43.29,40.74-.65,23.92,18.7,41.15,39.11,42.46,25.96,1.66,44.96-18.72,44.52-41.48Z"/>
|
||||
</g>
|
||||
<g id="R3_outline">
|
||||
<path d="M664.07,419.78c-.01,26.37-21.16,47.39-47.6,47.32-26.19-.06-48.19-21.58-47.62-47.5.59-26.82,21.12-47.52,48.44-47.45,26.83.08,46.79,21.47,46.78,47.62ZM658.23,419.7c.55-22.76-17.76-41.19-40.35-41.72-23.43-.55-42.68,18.19-43.29,40.74-.65,23.92,18.7,41.15,39.11,42.46,25.96,1.66,44.96-18.72,44.52-41.48Z"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
<!-- alt="DualShock 5 Controller" -->
|
||||
</div>
|
||||
<br>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 col-sm-12" style="min-width: 330px;">
|
||||
@@ -495,7 +608,7 @@ dl.row dd { font-family: monospace; }
|
||||
<div class="row">
|
||||
<div class="col-lg-12 col-xl-6 py-3">
|
||||
<div class="card">
|
||||
<h5 class="card-header"><i class="fas fa-code"></i> Software</h5>
|
||||
<h5 class="card-header"><i class="fas fa-code"></i> <span class="ds-i18n">Software</span></h5>
|
||||
<div class="card-body">
|
||||
<dl class="row" id="fwinfoextra-fw"></dl>
|
||||
</div>
|
||||
@@ -503,7 +616,7 @@ dl.row dd { font-family: monospace; }
|
||||
</div>
|
||||
<div class="col-lg-12 col-xl-6 py-3">
|
||||
<div class="card">
|
||||
<h5 class="card-header"><i class="fas fa-microchip"></i> Hardware</h5>
|
||||
<h5 class="card-header"><i class="fas fa-microchip"></i> <span class="ds-i18n">Hardware</span></h5>
|
||||
<div class="card-body">
|
||||
<dl class="row" id="fwinfoextra-hw"></dl>
|
||||
</div>
|
||||
@@ -830,7 +943,7 @@ dl.row dd { font-family: monospace; }
|
||||
<div class="container">
|
||||
<footer>
|
||||
<div class="d-flex flex-column flex-sm-row justify-content-between py-4 my-4 border-top" id="footbody">
|
||||
<p><a target="_blank" href="https://github.com/dualshock-tools/dualshock-tools.github.io/commits/main/"><span class="ds-i18n">Version</span> 2.7</a> (2025-06-07) - <a href="#" class="ds-i18n" onclick="show_donate_modal();">Support this project</a> <span id="authorMsg"></span></p>
|
||||
<p><a target="_blank" href="https://github.com/dualshock-tools/dualshock-tools.github.io/commits/main/"><span class="ds-i18n">Version</span> 2.9</a> (2025-07-27) - <a href="#" class="ds-i18n" onclick="show_donate_modal();">Support this project</a> <span id="authorMsg"></span></p>
|
||||
|
||||
<ul class="list-unstyled d-flex">
|
||||
<li class="ms-3"><a class="link-body-emphasis" href="mailto:ds4@the.al" target="_blank"><svg class="bi" width="24" height="24"><use xlink:href="#mail"/></svg></a></li>
|
||||
|
||||
@@ -198,6 +198,9 @@
|
||||
"Cannot unlock": "",
|
||||
"Center X": "",
|
||||
"Center Y": "",
|
||||
"Chroma Indigo": "",
|
||||
"Chroma Pearl": "",
|
||||
"Chroma Teal": "",
|
||||
"Cobalt Blue": "",
|
||||
"Color": "",
|
||||
"Color detection thanks to": "",
|
||||
@@ -205,6 +208,7 @@
|
||||
"DualSense Edge Calibration": "",
|
||||
"Finetune stick calibration": "",
|
||||
"For more info or help, feel free to reach out on Discord.": "",
|
||||
"Fortnite": "",
|
||||
"Galactic Purple": "",
|
||||
"God of War Ragnarok": "",
|
||||
"Grey Camouflage": "",
|
||||
@@ -221,11 +225,13 @@
|
||||
"Right Module Barcode": "",
|
||||
"Right stick": "",
|
||||
"Save": "",
|
||||
"Spider-Man 2": "",
|
||||
"Starlight Blue": "",
|
||||
"Sterling Silver": "",
|
||||
"Support for calibrating DualSense Edge stick modules is now available as an <b>experimental feature</b>.": "",
|
||||
"Thank you for your generosity and support!": "",
|
||||
"The DualShock Calibration GUI does not currently support the DualSense Edge.": "",
|
||||
"The Last of Us": "",
|
||||
"This involves temporarily disabling write protection by applying <b>+1.8V</b> to a specific test point on each module.": "",
|
||||
"This is only for advanced users. If you're not sure what you're doing, please do not attempt it.": "",
|
||||
"This screen allows to finetune raw calibration data on your controller": "",
|
||||
|
||||
@@ -174,6 +174,9 @@
|
||||
"Cannot unlock": "",
|
||||
"Center X": "",
|
||||
"Center Y": "",
|
||||
"Chroma Indigo": "",
|
||||
"Chroma Pearl": "",
|
||||
"Chroma Teal": "",
|
||||
"Cobalt Blue": "",
|
||||
"Color": "",
|
||||
"Color detection thanks to": "",
|
||||
@@ -190,6 +193,7 @@
|
||||
"FW Version": "",
|
||||
"Finetune stick calibration": "",
|
||||
"For more info or help, feel free to reach out on Discord.": "",
|
||||
"Fortnite": "",
|
||||
"Galactic Purple": "",
|
||||
"God of War Ragnarok": "",
|
||||
"Grey Camouflage": "",
|
||||
@@ -215,11 +219,13 @@
|
||||
"Show all": "",
|
||||
"Software": "",
|
||||
"Spider FW Version": "",
|
||||
"Spider-Man 2": "",
|
||||
"Starlight Blue": "",
|
||||
"Sterling Silver": "",
|
||||
"Support for calibrating DualSense Edge stick modules is now available as an <b>experimental feature</b>.": "",
|
||||
"Thank you for your generosity and support!": "",
|
||||
"The DualShock Calibration GUI does not currently support the DualSense Edge.": "",
|
||||
"The Last of Us": "",
|
||||
"This involves temporarily disabling write protection by applying <b>+1.8V</b> to a specific test point on each module.": "",
|
||||
"This is only for advanced users. If you're not sure what you're doing, please do not attempt it.": "",
|
||||
"This screen allows to finetune raw calibration data on your controller": "",
|
||||
|
||||
@@ -160,6 +160,9 @@
|
||||
"Center X": "",
|
||||
"Center Y": "",
|
||||
"Changes saved successfully": "",
|
||||
"Chroma Indigo": "",
|
||||
"Chroma Pearl": "",
|
||||
"Chroma Teal": "",
|
||||
"Cobalt Blue": "",
|
||||
"Color": "",
|
||||
"Color detection thanks to": "",
|
||||
@@ -178,6 +181,7 @@
|
||||
"FW Version": "",
|
||||
"Finetune stick calibration": "",
|
||||
"For more info or help, feel free to reach out on Discord.": "",
|
||||
"Fortnite": "",
|
||||
"Galactic Purple": "",
|
||||
"God of War Ragnarok": "",
|
||||
"Grey Camouflage": "",
|
||||
@@ -210,12 +214,14 @@
|
||||
"Show all": "",
|
||||
"Software": "",
|
||||
"Spider FW Version": "",
|
||||
"Spider-Man 2": "",
|
||||
"Starlight Blue": "",
|
||||
"Sterling Silver": "",
|
||||
"Stickdrift is caused by a physical defect; namely dirt, worn potentiometer or in some cases a worn spring.": "",
|
||||
"Support for calibrating DualSense Edge stick modules is now available as an <b>experimental feature</b>.": "",
|
||||
"Thank you for your generosity and support!": "",
|
||||
"The DualShock Calibration GUI does not currently support the DualSense Edge.": "",
|
||||
"The Last of Us": "",
|
||||
"This involves temporarily disabling write protection by applying <b>+1.8V</b> to a specific test point on each module.": "",
|
||||
"This is only for advanced users. If you're not sure what you're doing, please do not attempt it.": "",
|
||||
"This issue happens because you have clicked \"Done\" immediately after starting a range calibration.": "",
|
||||
|
||||
@@ -196,6 +196,9 @@
|
||||
"Cannot lock": "",
|
||||
"Cannot store data into": "",
|
||||
"Cannot unlock": "",
|
||||
"Chroma Indigo": "",
|
||||
"Chroma Pearl": "",
|
||||
"Chroma Teal": "",
|
||||
"Cobalt Blue": "",
|
||||
"Color": "",
|
||||
"Color detection thanks to": "",
|
||||
@@ -205,6 +208,7 @@
|
||||
"FW Update Info": "",
|
||||
"FW Version": "",
|
||||
"For more info or help, feel free to reach out on Discord.": "",
|
||||
"Fortnite": "",
|
||||
"Galactic Purple": "",
|
||||
"God of War Ragnarok": "",
|
||||
"Grey Camouflage": "",
|
||||
@@ -221,9 +225,11 @@
|
||||
"Right Module Barcode": "",
|
||||
"SBL FW Version": "",
|
||||
"Spider FW Version": "",
|
||||
"Spider-Man 2": "",
|
||||
"Starlight Blue": "",
|
||||
"Sterling Silver": "",
|
||||
"Support for calibrating DualSense Edge stick modules is now available as an <b>experimental feature</b>.": "",
|
||||
"The Last of Us": "",
|
||||
"This involves temporarily disabling write protection by applying <b>+1.8V</b> to a specific test point on each module.": "",
|
||||
"This is only for advanced users. If you're not sure what you're doing, please do not attempt it.": "",
|
||||
"Touchpad FW Version": "",
|
||||
|
||||
@@ -160,6 +160,9 @@
|
||||
"Center X": "",
|
||||
"Center Y": "",
|
||||
"Changes saved successfully": "",
|
||||
"Chroma Indigo": "",
|
||||
"Chroma Pearl": "",
|
||||
"Chroma Teal": "",
|
||||
"Cobalt Blue": "",
|
||||
"Color": "",
|
||||
"Color detection thanks to": "",
|
||||
@@ -178,6 +181,7 @@
|
||||
"FW Version": "",
|
||||
"Finetune stick calibration": "",
|
||||
"For more info or help, feel free to reach out on Discord.": "",
|
||||
"Fortnite": "",
|
||||
"Galactic Purple": "",
|
||||
"God of War Ragnarok": "",
|
||||
"Grey Camouflage": "",
|
||||
@@ -210,12 +214,14 @@
|
||||
"Show all": "",
|
||||
"Software": "",
|
||||
"Spider FW Version": "",
|
||||
"Spider-Man 2": "",
|
||||
"Starlight Blue": "",
|
||||
"Sterling Silver": "",
|
||||
"Stickdrift is caused by a physical defect; namely dirt, worn potentiometer or in some cases a worn spring.": "",
|
||||
"Support for calibrating DualSense Edge stick modules is now available as an <b>experimental feature</b>.": "",
|
||||
"Thank you for your generosity and support!": "",
|
||||
"The DualShock Calibration GUI does not currently support the DualSense Edge.": "",
|
||||
"The Last of Us": "",
|
||||
"This involves temporarily disabling write protection by applying <b>+1.8V</b> to a specific test point on each module.": "",
|
||||
"This is only for advanced users. If you're not sure what you're doing, please do not attempt it.": "",
|
||||
"This issue happens because you have clicked \"Done\" immediately after starting a range calibration.": "",
|
||||
|
||||
@@ -23,19 +23,19 @@
|
||||
"Completed": "Terminé",
|
||||
"Welcome to the stick center-calibration wizard!": "Bienvenue dans l'assistant de calibrage de centrage du joystick !",
|
||||
"This tool will guide you in re-centering the analog sticks of your controller. It consists in four steps: you will be asked to move both sticks in a direction and release them.": "Cet outil va vous guider afin de recentrer les joysticks analogiques de votre manette. Il consiste en quatres étapes: il vous sera demandé de bouger les deux joysticks dans une direction puis de les relacher.",
|
||||
"Please be aware that, <i>;once the calibration is running, it cannot be canceled</i>;. Do not close this page or disconnect your controller until is completed.": "Veuillez noter <i>;qu’une fois le calibrage lancée, il n’est pas possible de l'annuler</i>;. Ne fermez pas cette page ou ne déconnectez pas la manette tant que le calibrage n’est pas terminée.",
|
||||
"Press <b>;Start</b>; to begin calibration.": "Appuyez sur <b>;Démarrer</b>; pour commencer le calibrage.",
|
||||
"Please move both sticks to the <b>;top-left corner</b>; and release them.": "Veuillez déplacer les deux joysticks <b>;en haut à gauche</b>; puis relachez-les.",
|
||||
"When the sticks are back in the center, press <b>;Continue</b>;.": "Une fois les deux joysticks recentrés, appuyez sur <b>;Continuer</b>;.",
|
||||
"Please move both sticks to the <b>;top-right corner</b>; and release them.": "Veuillez déplacer les deux joysticks <b>;en haut à droite</b>; puis relachez-les.",
|
||||
"Please move both sticks to the <b>;bottom-left corner</b>; and release them.": "Veuillez déplacer les deux joysticks <b>;en bas à gauche</b>; puis relachez-les.",
|
||||
"Please move both sticks to the <b>;bottom-right corner</b>; and release them.": "Veuillez déplacer les deux joysticks <b>;en bas à droite</b>; puis relachez-les.",
|
||||
"Please be aware that, <i>once the calibration is running, it cannot be canceled</i>. Do not close this page or disconnect your controller until is completed.": "Veuillez noter <i>qu'une fois le calibrage lancée, il n'est pas possible de l'annuler</i>. Ne fermez pas cette page ou ne déconnectez pas la manette tant que le calibrage n'est pas terminée.",
|
||||
"Press <b>Start</b> to begin calibration.": "Appuyez sur <b>Démarrer</b> pour commencer le calibrage.",
|
||||
"Please move both sticks to the <b>top-left corner</b> and release them.": "Veuillez déplacer les deux joysticks <b>en haut à gauche</b> puis relachez-les.",
|
||||
"When the sticks are back in the center, press <b>Continue</b>.": "Une fois les deux joysticks recentrés, appuyez sur <b>Continuer</b>.",
|
||||
"Please move both sticks to the <b>top-right corner</b> and release them.": "Veuillez déplacer les deux joysticks <b>en haut à droite</b> puis relachez-les.",
|
||||
"Please move both sticks to the <b>bottom-left corner</b> and release them.": "Veuillez déplacer les deux joysticks <b>en bas à gauche</b> puis relachez-les.",
|
||||
"Please move both sticks to the <b>bottom-right corner</b> and release them.": "Veuillez déplacer les deux joysticks <b>en bas à droite</b> puis relachez-les.",
|
||||
"Calibration completed successfully!": "Calibrage terminé avec succès !",
|
||||
"Next": "Suivant",
|
||||
"Recentering the controller sticks. ": "Recentrement des joysticks de la manette en cours. ",
|
||||
"Please do not close this window and do not disconnect your controller. ": "Veuillez ne pas fermer cette fenêtre et ne déconnectez pas votre manette. ",
|
||||
"Range calibration": "Calibrage de la portée du joystick",
|
||||
"<b>;The controller is now sampling data!</b>;": "<b>;La manette est maintenant en train d'échantillonner les données !</b>;",
|
||||
"<b>The controller is now sampling data!</b>": "<b>La manette est maintenant en train d'échantillonner les données !</b>",
|
||||
"Rotate the sticks slowly to cover the whole range. Press \"Done\" when completed.": "Faites tourner doucement les joysticks afin de couvrir toute leur portée. Appuyez sur \"Terminer\" une fois terminé.",
|
||||
"Done": "Terminer",
|
||||
"Hi, thank you for using this software.": "Salut, merci d'avoir utilisé cet outil.",
|
||||
@@ -160,6 +160,9 @@
|
||||
"Center X": "",
|
||||
"Center Y": "",
|
||||
"Changes saved successfully": "",
|
||||
"Chroma Indigo": "",
|
||||
"Chroma Pearl": "",
|
||||
"Chroma Teal": "",
|
||||
"Cobalt Blue": "",
|
||||
"Color": "",
|
||||
"Color detection thanks to": "",
|
||||
@@ -178,6 +181,7 @@
|
||||
"FW Version": "",
|
||||
"Finetune stick calibration": "",
|
||||
"For more info or help, feel free to reach out on Discord.": "",
|
||||
"Fortnite": "",
|
||||
"Galactic Purple": "",
|
||||
"God of War Ragnarok": "",
|
||||
"Grey Camouflage": "",
|
||||
@@ -210,12 +214,14 @@
|
||||
"Show all": "",
|
||||
"Software": "",
|
||||
"Spider FW Version": "",
|
||||
"Spider-Man 2": "",
|
||||
"Starlight Blue": "",
|
||||
"Sterling Silver": "",
|
||||
"Stickdrift is caused by a physical defect; namely dirt, worn potentiometer or in some cases a worn spring.": "",
|
||||
"Support for calibrating DualSense Edge stick modules is now available as an <b>experimental feature</b>.": "",
|
||||
"Thank you for your generosity and support!": "",
|
||||
"The DualShock Calibration GUI does not currently support the DualSense Edge.": "",
|
||||
"The Last of Us": "",
|
||||
"This involves temporarily disabling write protection by applying <b>+1.8V</b> to a specific test point on each module.": "",
|
||||
"This is only for advanced users. If you're not sure what you're doing, please do not attempt it.": "",
|
||||
"This issue happens because you have clicked \"Done\" immediately after starting a range calibration.": "",
|
||||
|
||||
@@ -222,18 +222,24 @@
|
||||
"Right Module Barcode": "Jobb modul vonalkódja",
|
||||
"left module": "bal modul",
|
||||
"right module": "jobb modul",
|
||||
"30th Anniversary": "",
|
||||
"Astro Bot": "",
|
||||
"Cobalt Blue": "",
|
||||
"Cosmic Red": "",
|
||||
"Galactic Purple": "",
|
||||
"God of War Ragnarok": "",
|
||||
"Grey Camouflage": "",
|
||||
"Midnight Black": "",
|
||||
"Nova Pink": "",
|
||||
"Starlight Blue": "",
|
||||
"Sterling Silver": "",
|
||||
"Volcanic Red": "",
|
||||
"White": "",
|
||||
"30th Anniversary": "30th Anniversary",
|
||||
"Astro Bot": "Astro Bot",
|
||||
"Cobalt Blue": "Cobalt Blue",
|
||||
"Cosmic Red": "Cosmic Red",
|
||||
"Galactic Purple": "Galactic Purple",
|
||||
"God of War Ragnarok": "God of War Ragnarok",
|
||||
"Grey Camouflage": "Grey Camouflage",
|
||||
"Midnight Black": "Midnight Black",
|
||||
"Nova Pink": "Nova Pink",
|
||||
"Starlight Blue": "Starlight Blue",
|
||||
"Sterling Silver": "Sterling Silver",
|
||||
"Volcanic Red": "Volcanic Red",
|
||||
"White": "Fehér",
|
||||
"Chroma Indigo": "",
|
||||
"Chroma Pearl": "",
|
||||
"Chroma Teal": "",
|
||||
"Fortnite": "",
|
||||
"Spider-Man 2": "",
|
||||
"The Last of Us": "",
|
||||
"": ""
|
||||
}
|
||||
@@ -236,5 +236,11 @@
|
||||
"Sterling Silver": "Sterling Silver",
|
||||
"Volcanic Red": "Volcanic Red",
|
||||
"White": "Original White",
|
||||
"Chroma Indigo": "Chroma Indigo",
|
||||
"Chroma Pearl": "Chroma Pearl",
|
||||
"Chroma Teal": "Chroma Teal",
|
||||
"Fortnite": "Fortnite",
|
||||
"Spider-Man 2": "Spider-Man 2",
|
||||
"The Last of Us": "The Last of Us",
|
||||
"": ""
|
||||
}
|
||||
|
||||
@@ -169,6 +169,9 @@
|
||||
"Cannot store data into": "",
|
||||
"Cannot unlock": "",
|
||||
"Changes saved successfully": "",
|
||||
"Chroma Indigo": "",
|
||||
"Chroma Pearl": "",
|
||||
"Chroma Teal": "",
|
||||
"Cobalt Blue": "",
|
||||
"Color": "",
|
||||
"Color detection thanks to": "",
|
||||
@@ -186,6 +189,7 @@
|
||||
"FW Update Info": "",
|
||||
"FW Version": "",
|
||||
"For more info or help, feel free to reach out on Discord.": "",
|
||||
"Fortnite": "",
|
||||
"Galactic Purple": "",
|
||||
"God of War Ragnarok": "",
|
||||
"Grey Camouflage": "",
|
||||
@@ -213,10 +217,12 @@
|
||||
"Show all": "",
|
||||
"Software": "",
|
||||
"Spider FW Version": "",
|
||||
"Spider-Man 2": "",
|
||||
"Starlight Blue": "",
|
||||
"Sterling Silver": "",
|
||||
"Stickdrift is caused by a physical defect; namely dirt, worn potentiometer or in some cases a worn spring.": "",
|
||||
"Support for calibrating DualSense Edge stick modules is now available as an <b>experimental feature</b>.": "",
|
||||
"The Last of Us": "",
|
||||
"This involves temporarily disabling write protection by applying <b>+1.8V</b> to a specific test point on each module.": "",
|
||||
"This is only for advanced users. If you're not sure what you're doing, please do not attempt it.": "",
|
||||
"This issue happens because you have clicked \"Done\" immediately after starting a range calibration.": "",
|
||||
|
||||
@@ -197,6 +197,9 @@
|
||||
"Cannot unlock": "",
|
||||
"Center X": "",
|
||||
"Center Y": "",
|
||||
"Chroma Indigo": "",
|
||||
"Chroma Pearl": "",
|
||||
"Chroma Teal": "",
|
||||
"Cobalt Blue": "",
|
||||
"Color": "",
|
||||
"Color detection thanks to": "",
|
||||
@@ -204,6 +207,7 @@
|
||||
"DualSense Edge Calibration": "",
|
||||
"Finetune stick calibration": "",
|
||||
"For more info or help, feel free to reach out on Discord.": "",
|
||||
"Fortnite": "",
|
||||
"Galactic Purple": "",
|
||||
"God of War Ragnarok": "",
|
||||
"Grey Camouflage": "",
|
||||
@@ -220,11 +224,13 @@
|
||||
"Right Module Barcode": "",
|
||||
"Right stick": "",
|
||||
"Save": "",
|
||||
"Spider-Man 2": "",
|
||||
"Starlight Blue": "",
|
||||
"Sterling Silver": "",
|
||||
"Support for calibrating DualSense Edge stick modules is now available as an <b>experimental feature</b>.": "",
|
||||
"Thank you for your generosity and support!": "",
|
||||
"The DualShock Calibration GUI does not currently support the DualSense Edge.": "",
|
||||
"The Last of Us": "",
|
||||
"This involves temporarily disabling write protection by applying <b>+1.8V</b> to a specific test point on each module.": "",
|
||||
"This is only for advanced users. If you're not sure what you're doing, please do not attempt it.": "",
|
||||
"This screen allows to finetune raw calibration data on your controller": "",
|
||||
|
||||
@@ -160,6 +160,9 @@
|
||||
"Center X": "",
|
||||
"Center Y": "",
|
||||
"Changes saved successfully": "",
|
||||
"Chroma Indigo": "",
|
||||
"Chroma Pearl": "",
|
||||
"Chroma Teal": "",
|
||||
"Cobalt Blue": "",
|
||||
"Color": "",
|
||||
"Color detection thanks to": "",
|
||||
@@ -178,6 +181,7 @@
|
||||
"FW Version": "",
|
||||
"Finetune stick calibration": "",
|
||||
"For more info or help, feel free to reach out on Discord.": "",
|
||||
"Fortnite": "",
|
||||
"Galactic Purple": "",
|
||||
"God of War Ragnarok": "",
|
||||
"Grey Camouflage": "",
|
||||
@@ -210,12 +214,14 @@
|
||||
"Show all": "",
|
||||
"Software": "",
|
||||
"Spider FW Version": "",
|
||||
"Spider-Man 2": "",
|
||||
"Starlight Blue": "",
|
||||
"Sterling Silver": "",
|
||||
"Stickdrift is caused by a physical defect; namely dirt, worn potentiometer or in some cases a worn spring.": "",
|
||||
"Support for calibrating DualSense Edge stick modules is now available as an <b>experimental feature</b>.": "",
|
||||
"Thank you for your generosity and support!": "",
|
||||
"The DualShock Calibration GUI does not currently support the DualSense Edge.": "",
|
||||
"The Last of Us": "",
|
||||
"This involves temporarily disabling write protection by applying <b>+1.8V</b> to a specific test point on each module.": "",
|
||||
"This is only for advanced users. If you're not sure what you're doing, please do not attempt it.": "",
|
||||
"This issue happens because you have clicked \"Done\" immediately after starting a range calibration.": "",
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
{
|
||||
".authorMsg": "Tłumaczenie na język polski wykonał - Marekk2k :)",
|
||||
".authorMsg": "Tłumaczenie na język polski wykonał <a href='https://github.com/Marekk2k'>Marekk</a>",
|
||||
"DualShock Calibration GUI": "DualShock Calibration GUI",
|
||||
"Unsupported browser. Please use a web browser with WebHID support (e.g. Chrome).": "Nie wspierana przeglądarka! Proszę użyć przeglądarki internetowej wpierającą WebHID (np. Chrome).",
|
||||
"Connect": "Połącz",
|
||||
"Connected to:": "Połączono z:",
|
||||
"Disconnect": "Rozłącz",
|
||||
"Disconnect": "Rozłącz kontroler",
|
||||
"Calibrate stick center": "Skalibruj centralny punkt drążków",
|
||||
"Calibrate stick range": "Skalibruj maksymalny zakres drążków",
|
||||
"Reset controller": "Zresetuj kontroler",
|
||||
@@ -100,7 +100,7 @@
|
||||
"Behind the scenes, this website is the culmination of one year of dedicated effort in reverse-engineering DualShock controllers for fun/hobby from a random guy on the internet.": "Za kulisami ta witryna internetowa jest wynikiem całorocznych wysiłków związanych z inżynierią wsteczną kontrolerów DualShock dla zabawy/hobby jakiegoś przypadkowego faceta w Internecie.",
|
||||
"Through": "Poprzez",
|
||||
"this research": "badania",
|
||||
", it was discovered that there exist some undocumented commands on DualShock controllers that can be sent via USB and are used during factory assembly process. If these commands are sent, the controller starts the recalibration of analog sticks.": "odkryto, że w kontrolerach DualShock znajdują się pewne nieudokumentowane polecenia, które można wysyłać przez USB i wykorzystywać w procesie produkcyjnym. Po wysłaniu tych poleceń sterownik rozpoczyna ponowną kalibrację drążków.",
|
||||
", it was discovered that there exist some undocumented commands on DualShock controllers that can be sent via USB and are used during factory assembly process. If these commands are sent, the controller starts the recalibration of analog sticks.": "odkryto, że w kontrolerach DualShock, oraz Dualsense znajdują się pewne nieudokumentowane polecenia, które można wysyłać poprzez USB i wykorzystywać je w procesie produkcyjnym. Po wysłaniu tych poleceń sterownik rozpoczyna ponowną kalibrację drążków.",
|
||||
"While the primary focus of this research wasn't initially centered on recalibration, it became apparent that a service offering this capability could greatly benefit numerous individuals. And thus, here we are.": "Chociaż początkowo główny nacisk w tych badaniach nie skupiał się na ponownej kalibracji, stało się jasne, że usługa oferująca taką możliwość może przynieść ogromne korzyści wielu osobom. I tak oto jesteśmy.",
|
||||
"Does the calibration remain effective during gameplay on PS4/PS5?": "Czy kalibracja pozostaje skuteczna podczas gry na PS4/PS5?",
|
||||
"Yes, if you tick the checkbox \"Write changes permanently in the controller\". In that case, the calibration is flashed directly in the controller firmware. This ensures that it remains in place regardless of the console it's connected to.": "Tak, jeśli zaznaczysz w checkbox \"Zapisz zmiany na stałe w kontrolerze\" W takim przypadku kalibracja zostanie wczytana bezpośrednio w oprogramowaniu sterownika. Dzięki temu pozostanie na swoim miejscu niezależnie od konsoli, do której jest podłączony.",
|
||||
@@ -134,8 +134,8 @@
|
||||
"This website uses analytics to improve the service.": "Ta strona korzysta z analiz w celu ulepszenia usług.",
|
||||
"Board Model": "Model płytki",
|
||||
"This feature is experimental.": "Ta funkcja jest eksperymentalna.",
|
||||
"Please let me know if the board model of your controller is not detected correctly.": "Proszę daj mi znać jaki model płytki kontrolera nie został wykryty poprawnie",
|
||||
"Board model detection thanks to": "Podziękowania dla osoby która wykryła model płytki",
|
||||
"Please let me know if the board model of your controller is not detected correctly.": "Jeżeli model płytki został wykryty błędnie prosimy o kontakt",
|
||||
"Board model detection thanks to": "Podziękowania dla osoby za funkcję wykrywania modelu płytki",
|
||||
"Please connect the device using a USB cable.": "Proszę podłącz urządzenie przy pomocy kabla USB.",
|
||||
"This DualSense controller has outdated firmware.": "Ten kontroler Dualsense posiada przestarzały firmware.",
|
||||
"Please update the firmware and try again.": "Proszę zaktualizuj firmware i spróbuj ponownie.",
|
||||
@@ -188,7 +188,7 @@
|
||||
"Show all": "Pokaż wszystko",
|
||||
"Finetune stick calibration": "Dokładna kalibracja drążków",
|
||||
"(beta)": "(beta)",
|
||||
"This screen allows to finetune raw calibration data on your controller": "Te okienko pozwala na dokładniejszą zmianę w danych o kalibracji w twoim kontrolerze",
|
||||
"This screen allows to finetune raw calibration data on your controller": "Te okienko pozwala na ustawianie dokładniejszych danych o kalibracji w twoim kontrolerze",
|
||||
"Left stick": "Lewy drążęk",
|
||||
"Right stick": "Prawy drążęk",
|
||||
"Center X": "Punkt X",
|
||||
@@ -199,42 +199,48 @@
|
||||
"I'm actively working on adding compatibility, the primary challenge lies in storing data into the stick modules.": "Aktywnie pracuję nad dodaniem kompatybilności, ale głównym wyzwaniem jest przechowywanie danych w modułach drążków.",
|
||||
"If this tool has been helpful to you or you want to see DualSense Edge support arrive faster, please consider supporting the project with a": "Jeśli uważasz że to narzędzie było dla ciebie pomocne, lub chcesz aby wsparcie DualSense Edge pojawiło się szybciej, rozważ wsparcie projektu poprzez",
|
||||
"Thank you for your generosity and support!": "Dziękujemy za hojność i wsparcie!",
|
||||
"30th Anniversary": "",
|
||||
"<b>Externally</b>: by applying +1.8V directly to the visible test point without opening the controller": "",
|
||||
"<b>Internally</b>: by soldering a wire from a +1.8V source to the write-protect TP.": "",
|
||||
"Astro Bot": "",
|
||||
"Calibration is being stored in the stick modules.": "",
|
||||
"Cannot lock": "",
|
||||
"Cannot store data into": "",
|
||||
"Cannot unlock": "",
|
||||
"Cobalt Blue": "",
|
||||
"Color": "",
|
||||
"Color detection thanks to": "",
|
||||
"Cosmic Red": "",
|
||||
"DualSense Edge Calibration": "",
|
||||
"For more info or help, feel free to reach out on Discord.": "",
|
||||
"Galactic Purple": "",
|
||||
"God of War Ragnarok": "",
|
||||
"Grey Camouflage": "",
|
||||
"If the calibration is not stored permanently, please double-check the wirings of the hardware mod.": "",
|
||||
"Left Module Barcode": "",
|
||||
"Midnight Black": "",
|
||||
"More details and images": "",
|
||||
"Nova Pink": "",
|
||||
"Please connect a DualShock 4, a DualSense or DualSense Edge controller to your computer and press Connect.": "",
|
||||
"Please note: the stick modules on the DS Edge <b>cannot be calibrated via software alone</b>.To store a custom calibration on the stick's internal memory, a <b>hardware modification</b> is required.": "",
|
||||
"Right Module Barcode": "",
|
||||
"Starlight Blue": "",
|
||||
"Sterling Silver": "",
|
||||
"Support for calibrating DualSense Edge stick modules is now available as an <b>experimental feature</b>.": "",
|
||||
"This involves temporarily disabling write protection by applying <b>+1.8V</b> to a specific test point on each module.": "",
|
||||
"This is only for advanced users. If you're not sure what you're doing, please do not attempt it.": "",
|
||||
"Volcanic Red": "",
|
||||
"We are not responsible for any damage caused by attempting this modification.": "",
|
||||
"White": "",
|
||||
"You can do this in two ways:": "",
|
||||
"here": "",
|
||||
"left module": "",
|
||||
"right module": "",
|
||||
"30th Anniversary": "30th Anniversary",
|
||||
"<b>Externally</b>: by applying +1.8V directly to the visible test point without opening the controller": "<b>Zewnętrznie</b>: poprzez podanie +1.8V bezpośrednio do widocznego punktu testowego bez otwierania kontrolera.",
|
||||
"<b>Internally</b>: by soldering a wire from a +1.8V source to the write-protect TP.": "<b>Wewnętrznie</b>: przez przylutowanie przewodu z źródła +1.8V do punktu testowego ochrony przed zapisem.",
|
||||
"Astro Bot": "Astro Bot",
|
||||
"Calibration is being stored in the stick modules.": "Kalibracja jest zapisywana w modułach drążków.",
|
||||
"Cannot lock": "Nie można zablokować",
|
||||
"Cannot store data into": "Nie można zachować informacji w",
|
||||
"Cannot unlock": "Nie można odblokować",
|
||||
"Cobalt Blue": "Cobalt Blue",
|
||||
"Color": "Kolor",
|
||||
"Color detection thanks to": "Podziękowania dla osoby za funkcję wykrywania kolorów",
|
||||
"Cosmic Red": "Cosmic Red",
|
||||
"DualSense Edge Calibration": "Kalibracja Dualsense Edge",
|
||||
"For more info or help, feel free to reach out on Discord.": "Aby uzyskać więcej informacji lub pomoc, skontaktuj się do nas na Discordzie",
|
||||
"Galactic Purple": "Galactic Purple",
|
||||
"God of War Ragnarok": "God of War Ragnarok",
|
||||
"Grey Camouflage": "Grey Camouflage",
|
||||
"If the calibration is not stored permanently, please double-check the wirings of the hardware mod.": "Jeżeli kalibracja nie została zachowana na stałe, prosimy o dwukrotnym sprawdzeniu ręcznie wykonanej modyfikacji",
|
||||
"Left Module Barcode": "Barcode lewego modułu",
|
||||
"Midnight Black": "Midnight Black",
|
||||
"More details and images": "Więcej szczegółów i zdjęć",
|
||||
"Nova Pink": "Nova Pink",
|
||||
"Please connect a DualShock 4, a DualSense or DualSense Edge controller to your computer and press Connect.": "Podłącz kontroler Dualshock 4, Dualsense, lub Dualsense Edge do komputera, i naciśnij opcję Połącz",
|
||||
"Please note: the stick modules on the DS Edge <b>cannot be calibrated via software alone</b>.To store a custom calibration on the stick's internal memory, a <b>hardware modification</b> is required.": "Uwaga: moduły drążków w DS Edge <b>nie mogą być kalibrowane wyłącznie za pomocą oprogramowania!</b>. Aby zapisać niestandardową kalibrację w wewnętrznej pamięci drążka, wymagana jest ręczna <b>modyfikacja sprzętowa</b>.",
|
||||
"Right Module Barcode": "Barcode prawego modułu",
|
||||
"Starlight Blue": "Starlight Blue",
|
||||
"Sterling Silver": "Sterling Silver",
|
||||
"Support for calibrating DualSense Edge stick modules is now available as an <b>experimental feature</b>.": "Wsparcie dla obsługi kalibrowania modułów drążków DualSense Edge jest teraz dostępna jako <b>funkcja eksperymentalna</b>.",
|
||||
"This involves temporarily disabling write protection by applying <b>+1.8V</b> to a specific test point on each module.": "Obejmuje to na tymczasowym wyłączeniu ochrony przed zapisem poprzez podanie <b>+1.8V</b> do określonego punktu testowego na każdym module.",
|
||||
"This is only for advanced users. If you're not sure what you're doing, please do not attempt it.": "Tylko dla zaawansowanych użytkowników. Jeśli nie jesteś pewien co robisz, proszę nie próbuj tego!",
|
||||
"Volcanic Red": "Volcanic Red",
|
||||
"We are not responsible for any damage caused by attempting this modification.": "Nie ponosimy odpowiedzialności za jakiekolwiek szkody spowodowane próbą tej modyfikacji.",
|
||||
"White": "White",
|
||||
"You can do this in two ways:": "Możesz to zrobić na 2 sposoby",
|
||||
"here": "tutaj",
|
||||
"left module": "lewy moduł",
|
||||
"right module": "prawy moduł",
|
||||
"Chroma Indigo": "",
|
||||
"Chroma Pearl": "",
|
||||
"Chroma Teal": "",
|
||||
"Fortnite": "",
|
||||
"Spider-Man 2": "",
|
||||
"The Last of Us": "",
|
||||
"": ""
|
||||
}
|
||||
@@ -174,6 +174,9 @@
|
||||
"Cannot unlock": "",
|
||||
"Center X": "",
|
||||
"Center Y": "",
|
||||
"Chroma Indigo": "",
|
||||
"Chroma Pearl": "",
|
||||
"Chroma Teal": "",
|
||||
"Cobalt Blue": "",
|
||||
"Color": "",
|
||||
"Color detection thanks to": "",
|
||||
@@ -190,6 +193,7 @@
|
||||
"FW Version": "",
|
||||
"Finetune stick calibration": "",
|
||||
"For more info or help, feel free to reach out on Discord.": "",
|
||||
"Fortnite": "",
|
||||
"Galactic Purple": "",
|
||||
"God of War Ragnarok": "",
|
||||
"Grey Camouflage": "",
|
||||
@@ -215,11 +219,13 @@
|
||||
"Show all": "",
|
||||
"Software": "",
|
||||
"Spider FW Version": "",
|
||||
"Spider-Man 2": "",
|
||||
"Starlight Blue": "",
|
||||
"Sterling Silver": "",
|
||||
"Support for calibrating DualSense Edge stick modules is now available as an <b>experimental feature</b>.": "",
|
||||
"Thank you for your generosity and support!": "",
|
||||
"The DualShock Calibration GUI does not currently support the DualSense Edge.": "",
|
||||
"The Last of Us": "",
|
||||
"This involves temporarily disabling write protection by applying <b>+1.8V</b> to a specific test point on each module.": "",
|
||||
"This is only for advanced users. If you're not sure what you're doing, please do not attempt it.": "",
|
||||
"This screen allows to finetune raw calibration data on your controller": "",
|
||||
|
||||
@@ -225,15 +225,21 @@
|
||||
"right module": "módulo direito",
|
||||
"30th Anniversary": "",
|
||||
"Astro Bot": "",
|
||||
"Chroma Indigo": "",
|
||||
"Chroma Pearl": "",
|
||||
"Chroma Teal": "",
|
||||
"Cobalt Blue": "",
|
||||
"Cosmic Red": "",
|
||||
"Fortnite": "",
|
||||
"Galactic Purple": "",
|
||||
"God of War Ragnarok": "",
|
||||
"Grey Camouflage": "",
|
||||
"Midnight Black": "",
|
||||
"Nova Pink": "",
|
||||
"Spider-Man 2": "",
|
||||
"Starlight Blue": "",
|
||||
"Sterling Silver": "",
|
||||
"The Last of Us": "",
|
||||
"Volcanic Red": "",
|
||||
"White": "",
|
||||
"": ""
|
||||
|
||||
@@ -206,12 +206,16 @@
|
||||
"Cannot lock": "",
|
||||
"Cannot store data into": "",
|
||||
"Cannot unlock": "",
|
||||
"Chroma Indigo": "",
|
||||
"Chroma Pearl": "",
|
||||
"Chroma Teal": "",
|
||||
"Cobalt Blue": "",
|
||||
"Color": "",
|
||||
"Color detection thanks to": "",
|
||||
"Cosmic Red": "",
|
||||
"DualSense Edge Calibration": "",
|
||||
"For more info or help, feel free to reach out on Discord.": "",
|
||||
"Fortnite": "",
|
||||
"Galactic Purple": "",
|
||||
"God of War Ragnarok": "",
|
||||
"Grey Camouflage": "",
|
||||
@@ -223,9 +227,11 @@
|
||||
"Please connect a DualShock 4, a DualSense or DualSense Edge controller to your computer and press Connect.": "",
|
||||
"Please note: the stick modules on the DS Edge <b>cannot be calibrated via software alone</b>.To store a custom calibration on the stick's internal memory, a <b>hardware modification</b> is required.": "",
|
||||
"Right Module Barcode": "",
|
||||
"Spider-Man 2": "",
|
||||
"Starlight Blue": "",
|
||||
"Sterling Silver": "",
|
||||
"Support for calibrating DualSense Edge stick modules is now available as an <b>experimental feature</b>.": "",
|
||||
"The Last of Us": "",
|
||||
"This involves temporarily disabling write protection by applying <b>+1.8V</b> to a specific test point on each module.": "",
|
||||
"This is only for advanced users. If you're not sure what you're doing, please do not attempt it.": "",
|
||||
"Volcanic Red": "",
|
||||
|
||||
132
lang/ru_ru.json
132
lang/ru_ru.json
@@ -1,5 +1,5 @@
|
||||
{
|
||||
".authorMsg": "- Перевод на Русский язык выполнен: <a href='https://www.youtube.com/channel/UC8pzDCIt_CUj8sa7cYgPzHQ'>Tamir-Teknik</a>",
|
||||
".authorMsg": "- Перевод на Русский язык выполнен: <a href='https://www.youtube.com/channel/UC8pzDCIt_CUj8sa7cYgPzHQ'>Tamir-Teknik. Дополнил Amnesia44</a>",
|
||||
"DualShock Calibration GUI": "Интерфейс калибровки DualShock",
|
||||
"Unsupported browser. Please use a web browser with WebHID support (e.g. Chrome).": "Неподдерживаемый браузер. Используйте браузер с поддержкой WebHID (например, Chrome).",
|
||||
"Connect": "Подключить",
|
||||
@@ -160,80 +160,86 @@
|
||||
"Error while saving changes:": "Ошибка при сохранении изменений:",
|
||||
"Save changes permanently": "Сохранить изменения навсегда",
|
||||
"Reboot controller": "Перезагрузить контроллер",
|
||||
"(beta)": "",
|
||||
"(beta)": "Бета",
|
||||
"<b>Externally</b>: by applying +1.8V directly to the visible test point without opening the controller": "<b>Снаружи</b>: подачей напряжения +1,8 В непосредственно на видимую тестовую точку (TP) без вскрытия корпуса контроллера.",
|
||||
"<b>Internally</b>: by soldering a wire from a +1.8V source to the write-protect TP.": "<b>Внутри</b>: припаяйте провод от +1,8 В к точке защиты от записи.",
|
||||
"Battery Barcode": "Штрих-код батареи",
|
||||
"Bluetooth Address": "Адрес Bluetooth",
|
||||
"Calibration is being stored in the stick modules.": "Калибровка сохраняется в модулях стиков",
|
||||
"Cancel": "Отмена",
|
||||
"Cannot lock": "Не удалось заблокировать",
|
||||
"Cannot store data into": "Не удалось сохранить данные",
|
||||
"Cannot unlock": "Не удалось разблокировать",
|
||||
"Center X": "Центр оси X",
|
||||
"Center Y": "Центр оси Y",
|
||||
"Color": "Цвет",
|
||||
"Color detection thanks to": "За определение цвета спасибо",
|
||||
"Controller Info": "Инфо контроллера",
|
||||
"Debug Info": "Дебаг-информация",
|
||||
"Debug buttons": "Отладка кнопок",
|
||||
"DualSense Edge Calibration": "Калибровка DualSense Edge",
|
||||
"FW Build Date": "Дата сборки ПО",
|
||||
"FW Series": "Серия ПО",
|
||||
"FW Type": "Тип ПО",
|
||||
"FW Update": "Обновление ПО",
|
||||
"FW Update Info": "Информация об обновлении ПО",
|
||||
"FW Version": "Версия ПО",
|
||||
"Finetune stick calibration": "Точная калибровка стиков",
|
||||
"For more info or help, feel free to reach out on Discord.": "Для получения помощи не стесняйтесь обращаться в Discord",
|
||||
"HW Model": "Модель устройства",
|
||||
"Hardware": "Аппаратная часть",
|
||||
"I'm actively working on adding compatibility, the primary challenge lies in storing data into the stick modules.": "Я активно работаю над добавлением совместимости, но основная проблема заключается в хранении данных в модулях стиков.",
|
||||
"If the calibration is not stored permanently, please double-check the wirings of the hardware mod.": "Если калибровка не сохраняется после перезагрузки, тщательно проверьте правильность подключения.",
|
||||
"If this tool has been helpful to you or you want to see DualSense Edge support arrive faster, please consider supporting the project with a": "Если этот инструмент был вам полезен или вы хотите, чтобы поддержка DualSense Edge появилась быстрее, пожалуйста, рассмотрите возможность поддержать проект —",
|
||||
"Left Module Barcode": "Штрих-код левого модуля",
|
||||
"Left stick": "Левый стик",
|
||||
"MCU Unique ID": "Уникальный MCU ID",
|
||||
"More details and images": "Больше деталей и изображения",
|
||||
"PCBA ID": "ID платы",
|
||||
"Please connect a DualShock 4, a DualSense or DualSense Edge controller to your computer and press Connect.": "Подключите контроллер DualShock 4, DualSense или DualSense Edge к компьютеру и нажмите кнопку Подключить",
|
||||
"Please note: the stick modules on the DS Edge <b>cannot be calibrated via software alone</b>.To store a custom calibration on the stick's internal memory, a <b>hardware modification</b> is required.": "Обратите внимание: модули стиков на контроллере Dualsense Edge <b>нельзя откалибровать только с помощью программного обеспечения</b>. Для сохранения пользовательской калибровки во внутренней памяти джойстика требуется <b>аппаратная модификация</b>.",
|
||||
"Right Module Barcode": "Штрих-код правого модуля",
|
||||
"Right stick": "Правый стик",
|
||||
"SBL FW Version": "Версия прошивки SBL",
|
||||
"Save": "Сохранить",
|
||||
"Serial Number": "Серийный номер",
|
||||
"Show all": "Показать все",
|
||||
"Software": "Программное обеспечение",
|
||||
"Spider FW Version": "Версия прошивки Spider",
|
||||
"Support for calibrating DualSense Edge stick modules is now available as an <b>experimental feature</b>.": "Поддержка калибровки модулей DualSense Edge теперь доступна в качестве <b>экспериментальной функции</b>",
|
||||
"Thank you for your generosity and support!": "Спасибо за вашу щедрость и поддержку",
|
||||
"The DualShock Calibration GUI does not currently support the DualSense Edge.": "В настоящее время графический интерфейс калибровки DualShock не поддерживает DualSense Edge.",
|
||||
"This involves temporarily disabling write protection by applying <b>+1.8V</b> to a specific test point on each module.": "Для этого необходимо временно отключить защиту от записи, подав напряжение <b>+1,8 В</b> на определенную контрольную точку на каждом модуле.",
|
||||
"This is only for advanced users. If you're not sure what you're doing, please do not attempt it.": "Только для продвинутых пользователей! Если вы не уверены ",
|
||||
"This screen allows to finetune raw calibration data on your controller": "На этом экране можно более точно откалибровать ваш контроллер",
|
||||
"Touchpad FW Version": "Версия прошивки тачпада",
|
||||
"Touchpad ID": "ID тачпада",
|
||||
"VCM Left Barcode": "Штрих-код левого VCM",
|
||||
"VCM Right Barcode": "Штрих-код правого VCM",
|
||||
"Venom FW Version": "Версия прошивки Venom",
|
||||
"We are not responsible for any damage caused by attempting this modification.": "Мы не несем ответсвенности за какой-либо причиненный ущерб данной модификацией",
|
||||
"You can do this in two ways:": "Это можно сделать двумя способами",
|
||||
"here": "здесь",
|
||||
"left module": "Левый модуль",
|
||||
"right module": "Правый модуль",
|
||||
"30th Anniversary": "",
|
||||
"<b>Externally</b>: by applying +1.8V directly to the visible test point without opening the controller": "",
|
||||
"<b>Internally</b>: by soldering a wire from a +1.8V source to the write-protect TP.": "",
|
||||
"Astro Bot": "",
|
||||
"Battery Barcode": "",
|
||||
"Bluetooth Address": "",
|
||||
"Calibration is being stored in the stick modules.": "",
|
||||
"Cancel": "",
|
||||
"Cannot lock": "",
|
||||
"Cannot store data into": "",
|
||||
"Cannot unlock": "",
|
||||
"Center X": "",
|
||||
"Center Y": "",
|
||||
"Chroma Indigo": "",
|
||||
"Chroma Pearl": "",
|
||||
"Chroma Teal": "",
|
||||
"Cobalt Blue": "",
|
||||
"Color": "",
|
||||
"Color detection thanks to": "",
|
||||
"Controller Info": "",
|
||||
"Cosmic Red": "",
|
||||
"Debug Info": "",
|
||||
"Debug buttons": "",
|
||||
"DualSense Edge Calibration": "",
|
||||
"FW Build Date": "",
|
||||
"FW Series": "",
|
||||
"FW Type": "",
|
||||
"FW Update": "",
|
||||
"FW Update Info": "",
|
||||
"FW Version": "",
|
||||
"Finetune stick calibration": "",
|
||||
"For more info or help, feel free to reach out on Discord.": "",
|
||||
"Fortnite": "",
|
||||
"Galactic Purple": "",
|
||||
"God of War Ragnarok": "",
|
||||
"Grey Camouflage": "",
|
||||
"HW Model": "",
|
||||
"Hardware": "",
|
||||
"I'm actively working on adding compatibility, the primary challenge lies in storing data into the stick modules.": "",
|
||||
"If the calibration is not stored permanently, please double-check the wirings of the hardware mod.": "",
|
||||
"If this tool has been helpful to you or you want to see DualSense Edge support arrive faster, please consider supporting the project with a": "",
|
||||
"Left Module Barcode": "",
|
||||
"Left stick": "",
|
||||
"MCU Unique ID": "",
|
||||
"Midnight Black": "",
|
||||
"More details and images": "",
|
||||
"Nova Pink": "",
|
||||
"PCBA ID": "",
|
||||
"Please connect a DualShock 4, a DualSense or DualSense Edge controller to your computer and press Connect.": "",
|
||||
"Please note: the stick modules on the DS Edge <b>cannot be calibrated via software alone</b>.To store a custom calibration on the stick's internal memory, a <b>hardware modification</b> is required.": "",
|
||||
"Right Module Barcode": "",
|
||||
"Right stick": "",
|
||||
"SBL FW Version": "",
|
||||
"Save": "",
|
||||
"Serial Number": "",
|
||||
"Show all": "",
|
||||
"Software": "",
|
||||
"Spider FW Version": "",
|
||||
"Spider-Man 2": "",
|
||||
"Starlight Blue": "",
|
||||
"Sterling Silver": "",
|
||||
"Support for calibrating DualSense Edge stick modules is now available as an <b>experimental feature</b>.": "",
|
||||
"Thank you for your generosity and support!": "",
|
||||
"The DualShock Calibration GUI does not currently support the DualSense Edge.": "",
|
||||
"This involves temporarily disabling write protection by applying <b>+1.8V</b> to a specific test point on each module.": "",
|
||||
"This is only for advanced users. If you're not sure what you're doing, please do not attempt it.": "",
|
||||
"This screen allows to finetune raw calibration data on your controller": "",
|
||||
"Touchpad FW Version": "",
|
||||
"Touchpad ID": "",
|
||||
"VCM Left Barcode": "",
|
||||
"VCM Right Barcode": "",
|
||||
"Venom FW Version": "",
|
||||
"The Last of Us": "",
|
||||
"Volcanic Red": "",
|
||||
"We are not responsible for any damage caused by attempting this modification.": "",
|
||||
"White": "",
|
||||
"You can do this in two ways:": "",
|
||||
"here": "",
|
||||
"left module": "",
|
||||
"right module": "",
|
||||
"": ""
|
||||
}
|
||||
@@ -174,6 +174,9 @@
|
||||
"Cannot unlock": "",
|
||||
"Center X": "",
|
||||
"Center Y": "",
|
||||
"Chroma Indigo": "",
|
||||
"Chroma Pearl": "",
|
||||
"Chroma Teal": "",
|
||||
"Cobalt Blue": "",
|
||||
"Color": "",
|
||||
"Color detection thanks to": "",
|
||||
@@ -190,6 +193,7 @@
|
||||
"FW Version": "",
|
||||
"Finetune stick calibration": "",
|
||||
"For more info or help, feel free to reach out on Discord.": "",
|
||||
"Fortnite": "",
|
||||
"Galactic Purple": "",
|
||||
"God of War Ragnarok": "",
|
||||
"Grey Camouflage": "",
|
||||
@@ -215,11 +219,13 @@
|
||||
"Show all": "",
|
||||
"Software": "",
|
||||
"Spider FW Version": "",
|
||||
"Spider-Man 2": "",
|
||||
"Starlight Blue": "",
|
||||
"Sterling Silver": "",
|
||||
"Support for calibrating DualSense Edge stick modules is now available as an <b>experimental feature</b>.": "",
|
||||
"Thank you for your generosity and support!": "",
|
||||
"The DualShock Calibration GUI does not currently support the DualSense Edge.": "",
|
||||
"The Last of Us": "",
|
||||
"This involves temporarily disabling write protection by applying <b>+1.8V</b> to a specific test point on each module.": "",
|
||||
"This is only for advanced users. If you're not sure what you're doing, please do not attempt it.": "",
|
||||
"This screen allows to finetune raw calibration data on your controller": "",
|
||||
|
||||
@@ -163,26 +163,26 @@
|
||||
"Reboot controller": "Перезавантажити контролер",
|
||||
"Controller Info": "Інформація про контролер",
|
||||
"Debug Info": "Інформація для налагодження",
|
||||
"Software": "ПЗ",
|
||||
"Hardware": "Апаратура",
|
||||
"FW Build Date": "Дата складання прошивки",
|
||||
"Software": "Програмне забезпечення",
|
||||
"Hardware": "Апаратне забезпечення",
|
||||
"FW Build Date": "Дата збірки прошивки",
|
||||
"FW Type": "Тип прошивки",
|
||||
"FW Series": "Серія прошивки",
|
||||
"FW Version": "Версія прошивки",
|
||||
"FW Update": "Оновлення прошивки",
|
||||
"FW Update Info": "Інформація про оновлення прошивки",
|
||||
"FW Update Info": "Інфо про оновлення прошивки",
|
||||
"SBL FW Version": "Версія прошивки SBL",
|
||||
"Venom FW Version": "Версія прошивки Venom",
|
||||
"Spider FW Version": "Версія прошивки Spider",
|
||||
"Touchpad FW Version": "Версія прошивки сенсорної панелі",
|
||||
"Touchpad FW Version": "Версія прошивки тачпаду",
|
||||
"Serial Number": "Серійний номер",
|
||||
"MCU Unique ID": "Унікальний ID MCU",
|
||||
"PCBA ID": "ID PCBA",
|
||||
"Battery Barcode": "Штрих-код батареї",
|
||||
"VCM Left Barcode": "Штрих-код VCM лівий",
|
||||
"VCM Right Barcode": "Штрих-код VCM правий",
|
||||
"HW Model": "Модель апаратного забезпечення",
|
||||
"Touchpad ID": "ID сенсорної панелі",
|
||||
"HW Model": "Апаратна модель",
|
||||
"Touchpad ID": "ID тачпаду",
|
||||
"Bluetooth Address": "Bluetooth адреса",
|
||||
"Show all": "Показати все",
|
||||
"(beta)": "(бета)",
|
||||
@@ -212,28 +212,34 @@
|
||||
"We are not responsible for any damage caused by attempting this modification.": "Ми не несемо відповідальності за будь-які пошкодження, спричинені спробами цієї модифікації.",
|
||||
"You can do this in two ways:": "Ви можете зробити це двома способами:",
|
||||
"here": "тут",
|
||||
"30th Anniversary": "",
|
||||
"Astro Bot": "",
|
||||
"Cannot lock": "",
|
||||
"Cannot store data into": "",
|
||||
"Cannot unlock": "",
|
||||
"Cobalt Blue": "",
|
||||
"Color": "",
|
||||
"Color detection thanks to": "",
|
||||
"Cosmic Red": "",
|
||||
"Galactic Purple": "",
|
||||
"God of War Ragnarok": "",
|
||||
"Grey Camouflage": "",
|
||||
"If the calibration is not stored permanently, please double-check the wirings of the hardware mod.": "",
|
||||
"Left Module Barcode": "",
|
||||
"Midnight Black": "",
|
||||
"Nova Pink": "",
|
||||
"Right Module Barcode": "",
|
||||
"Starlight Blue": "",
|
||||
"Sterling Silver": "",
|
||||
"Volcanic Red": "",
|
||||
"White": "",
|
||||
"left module": "",
|
||||
"right module": "",
|
||||
"30th Anniversary": "Обмежена серія до 30-тої річниці",
|
||||
"Astro Bot": "Обмежена серія Astro Bot",
|
||||
"Cannot lock": "Не вдалося заблокувати",
|
||||
"Cannot store data into": "Не вдалося зберегти дані в",
|
||||
"Cannot unlock": "Не вдалося розблокувати",
|
||||
"Cobalt Blue": "Кобальтово-синій",
|
||||
"Color": "Колір",
|
||||
"Color detection thanks to": "Розпізнавання кольору завдяки",
|
||||
"Cosmic Red": "Космічний червоний",
|
||||
"Galactic Purple": "Галактичний пурпуровий",
|
||||
"God of War Ragnarok": "Обмежена серія God of War: Ragnarok",
|
||||
"Grey Camouflage": "Сірий камуфляж",
|
||||
"If the calibration is not stored permanently, please double-check the wirings of the hardware mod.": "Якщо калібрування не зберігається постійно, будь ласка, перевірте підключення апаратної модифікації.",
|
||||
"Left Module Barcode": "Штрих-код лівого модуля",
|
||||
"Midnight Black": "Чорна ніч",
|
||||
"Nova Pink": "Рожевий «Нова зірка»",
|
||||
"Right Module Barcode": "Штрих-код правого модуля",
|
||||
"Starlight Blue": "Зоряний синій",
|
||||
"Sterling Silver": "Монетний срібний",
|
||||
"Volcanic Red": "Вулканічний червоний",
|
||||
"White": "Білий",
|
||||
"left module": "лівий модуль",
|
||||
"right module": "правий модуль",
|
||||
"Chroma Indigo": "Насичений індиго",
|
||||
"Chroma Pearl": "Насичений перлистий",
|
||||
"Chroma Teal": "Насичений синьо-зелений",
|
||||
"Fortnite": "Обмежена серія Fortnite",
|
||||
"Spider-Man 2": "Обмежена серія Spider-Man 2",
|
||||
"The Last of Us": "Обмежена серія The Last of Us",
|
||||
"": ""
|
||||
}
|
||||
}
|
||||
|
||||
@@ -223,18 +223,24 @@
|
||||
"Right Module Barcode": "右侧模块条形码",
|
||||
"left module": "左侧模块",
|
||||
"right module": "右侧模块",
|
||||
"30th Anniversary": "",
|
||||
"Astro Bot": "",
|
||||
"Cobalt Blue": "",
|
||||
"Cosmic Red": "",
|
||||
"Galactic Purple": "",
|
||||
"God of War Ragnarok": "",
|
||||
"Grey Camouflage": "",
|
||||
"Midnight Black": "",
|
||||
"Nova Pink": "",
|
||||
"Starlight Blue": "",
|
||||
"Sterling Silver": "",
|
||||
"Volcanic Red": "",
|
||||
"White": "",
|
||||
"30th Anniversary": "30周年纪念版",
|
||||
"Astro Bot": "宇宙机器人",
|
||||
"Cobalt Blue": "钴晶蓝",
|
||||
"Cosmic Red": "星辰红",
|
||||
"Galactic Purple": "银河紫",
|
||||
"God of War Ragnarok": "战神:诸神黄昏",
|
||||
"Grey Camouflage": "深灰迷彩",
|
||||
"Midnight Black": "午夜黑",
|
||||
"Nova Pink": "新星粉",
|
||||
"Starlight Blue": "星光蓝",
|
||||
"Sterling Silver": "亮灰银",
|
||||
"Volcanic Red": "火山红",
|
||||
"White": "白色",
|
||||
"Chroma Indigo": "净彩靛青",
|
||||
"Chroma Pearl": "净彩珠白",
|
||||
"Chroma Teal": "净彩凫绿",
|
||||
"Fortnite": "堡垒之夜",
|
||||
"Spider-Man 2": "漫威蜘蛛侠2",
|
||||
"The Last of Us": "最后生还者",
|
||||
"": ""
|
||||
}
|
||||
@@ -223,18 +223,24 @@
|
||||
"Venom FW Version": "Venom固件版本",
|
||||
"left module": "左側模塊",
|
||||
"right module": "右側模塊",
|
||||
"30th Anniversary": "",
|
||||
"Astro Bot": "",
|
||||
"Cobalt Blue": "",
|
||||
"Cosmic Red": "",
|
||||
"Galactic Purple": "",
|
||||
"God of War Ragnarok": "",
|
||||
"Grey Camouflage": "",
|
||||
"Midnight Black": "",
|
||||
"Nova Pink": "",
|
||||
"Starlight Blue": "",
|
||||
"Sterling Silver": "",
|
||||
"Volcanic Red": "",
|
||||
"White": "",
|
||||
"30th Anniversary": "30週年紀念版",
|
||||
"Astro Bot": "宇宙機器人",
|
||||
"Cobalt Blue": "鈷藍色",
|
||||
"Cosmic Red": "星塵紅",
|
||||
"Galactic Purple": "銀河紫",
|
||||
"God of War Ragnarok": "戰神:諸神黃昏",
|
||||
"Grey Camouflage": "深灰迷彩",
|
||||
"Midnight Black": "午夜黑",
|
||||
"Nova Pink": "星幻粉",
|
||||
"Starlight Blue": "星光藍",
|
||||
"Sterling Silver": "亮灰銀",
|
||||
"Volcanic Red": "火山紅",
|
||||
"White": "白色",
|
||||
"Chroma Indigo": "閃耀靛紫",
|
||||
"Chroma Pearl": "閃耀珍珠白",
|
||||
"Chroma Teal": "閃耀青",
|
||||
"Fortnite": "要塞英雄",
|
||||
"Spider-Man 2": "蜘蛛人2",
|
||||
"The Last of Us": "最後生還者",
|
||||
"": ""
|
||||
}
|
||||
73
scripts/process_lang.py
Executable file
73
scripts/process_lang.py
Executable file
@@ -0,0 +1,73 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
# (C) 2025 dualshock-tools
|
||||
#
|
||||
# This script can be used to add or remove a sentence from all the language
|
||||
# files. It's really simple and hacking: just edit this files adding lines
|
||||
# In the corresponsing fields (add, remove) and run it.
|
||||
#
|
||||
# Quick note: run it from the "root" directory of the project: it searches for
|
||||
# ./lang/ so the correct command should be `python3 scripts/process_lang.py`.
|
||||
|
||||
data = {
|
||||
"remove": [
|
||||
# Add here lines to remove from each language file
|
||||
],
|
||||
"add": [
|
||||
# Add here lines to add to each language file
|
||||
],
|
||||
}
|
||||
|
||||
## ---
|
||||
|
||||
import os, json
|
||||
|
||||
def process_file(filename):
|
||||
x = json.loads(open(filename, "r").read())
|
||||
|
||||
modified = False
|
||||
for i in data["remove"]:
|
||||
if i in x:
|
||||
del x[i]
|
||||
modified = True
|
||||
else:
|
||||
print("[REMOVE] %s: Cannot find '%s'" % (filename, i))
|
||||
for i in data["add"]:
|
||||
if i in x:
|
||||
print("[ADD] %s: '%s' already present" % (filename, i))
|
||||
else:
|
||||
x[i] = ""
|
||||
modified = True
|
||||
|
||||
del x[""]
|
||||
empties = []
|
||||
for i in x:
|
||||
if len(x[i].strip()) == 0:
|
||||
empties += [i]
|
||||
|
||||
empties = sorted(empties)
|
||||
|
||||
for i in empties:
|
||||
del x[i]
|
||||
|
||||
for i in empties:
|
||||
x[i] = ""
|
||||
|
||||
x[""] = ""
|
||||
|
||||
return (modified, json.dumps(x, indent=4, ensure_ascii=False))
|
||||
|
||||
|
||||
files = list(os.listdir("lang"))
|
||||
|
||||
for i in files:
|
||||
modified, new_file = process_file("lang/" + i)
|
||||
if not modified:
|
||||
print("%s: not modified" % (i, ))
|
||||
continue
|
||||
if len(new_file) < 100:
|
||||
print("%s: invalid content" % (i, ))
|
||||
continue
|
||||
print("%s: writing changes" % (i, ))
|
||||
|
||||
open("lang/" + i, "w").write(new_file)
|
||||
Reference in New Issue
Block a user