TELEMETRIA DE DIGITAÇÃO / REGISTO DE SESSÃO

Ler uma sessão de digitação como registo

Esta página relaciona duração, seleção de texto, verificações por carácter, fórmulas de métricas, estados do mapa de teclas, painel de dois jogadores e percurso de resultado público com o código visível no editor.

Abrir teste de digitação

Faixa de controlo da sessão

Antes de uma sessão, o editor expõe três seletores. São definições do editor, não rótulos sobre uma pessoa ou a sua digitação.

  • DURAÇÃO — 30 · 60 · 120

    O seletor oferece 30, 60 e 120 segundos. O valor inicial é 60 segundos.

  • DIFICULDADE — 3 CONJUNTOS

    O seletor oferece beginner, intermediate e expert. O valor inicial é intermediate.

  • MODO — SOLO · 2 JOGADORES

    O editor começa em solo. O outro painel visível é um modo de dois jogadores com entradas separadas.

Fonte e seleção de texto

Existem arrays de textos para cada idioma exibido e dificuldade. Na inicialização e novamente ao iniciar o teste, o editor usa Math.floor(Math.random() * texts.length) para obter uma entrada do array aplicável.

Relógio da sessão e pontos de término

O temporizador avança enquanto um teste está iniciado e não terminado. Uma sessão termina quando timeLeft === 0 ou quando uma entrada alcança o comprimento do texto atual.

01 · SOLO — O controlo Iniciar entra diretamente

No modo solo, o controlo Iniciar chama diretamente o percurso de início e depois foca a entrada solo.

02 · 2 JOGADORES — 3 → 2 → 1 antes das entradas

No modo de dois jogadores, o controlo Iniciar começa uma contagem 3–2–1. O percurso de início foca depois a entrada de Player 1.

03 · FIM — Tempo zero ou limite de texto

O percurso de fim é alcançado com timeLeft === 0 ou quando um comprimento de entrada chega pelo menos a currentText.length.

Painel de medição por carácter

Para uma entrada, o editor percorre caracteres por posição e verifica cada um contra currentText nessa posição. Posições coincidentes contribuem para correctChars; totalChars é o comprimento da entrada.

  • WPM — round((correctChars / 5) / elapsedMinutes)

    Calculado somente quando elapsedMinutes é superior a 0.

  • ACCURACY — round((correctChars / totalChars) * 100)

    Calculada somente quando totalChars é superior a 0.

  • PROGRESSO — round(currentIndex / currentText.length * 100)

    currentIndex segue o comprimento da entrada atual.

Mapa de teclas e registo de estado

Quando um carácter solo recém-adicionado tem carácter esperado, esse carácter esperado é convertido em minúscula e contado. Um erro é contado quando typedChar !== expectedChar.

TESTE ATUAL — Só mostrado com dados

O cartão do mapa de teclas do teste atual é renderizado somente quando os seus dados atuais de erros têm entradas.

ACUMULADO — typingSpeedTest_keyErrors

Na inicialização, o editor lê erros acumulados de teclas de localStorage sob typingSpeedTest_keyErrors. Num fim solo, os erros atuais são combinados e escritos sob essa chave.

REPOR — Remover a chave

O controlo de reposição remove typingSpeedTest_keyErrors e limpa o estado acumulado mostrado pela UI. O cartão acumulado só é renderizado quando existem dados.

Registo solo e painel de dois jogadores

Os modos visíveis usam estados de entrada distintos. O painel de dois jogadores é descrito aqui apenas como UI com duas entradas.

HISTÓRICO SOLO — No máximo cinco entradas UI

Um fim solo antepõe o resultado com [result, ...slice(0, 4)]. Este histórico é estado React usado na UI.

ENTRADAS DE JOGADOR — Campos acompanhados separadamente

Player 1 e Player 2 têm estado respetivo de entrada, índice, caracteres corretos, caracteres totais, WPM e accuracy.

RÓTULO FINAL — Ramo WPM

Num fim de dois jogadores, Player 1 vence somente quando player1Wpm > player2Wpm; Player 2 somente no caso inverso; caso contrário o resultado é tie.

Percurso opcional de resultado público

Depois de um fim solo, um valor WPM acima de 20 abre um diálogo. O campo de nome é opcional e tem máximo de 100 caracteres antes do envio.

DIÁLOGO — Nome opcional e envio

O diálogo envia WPM solo, accuracy, duração, dificuldade, idioma e nome aparado quando é introduzido.

ENTRADA DO SERVIDOR — Limites aceites

saveScore aceita WPM inteiro de pelo menos 0, accuracy inteira de 0 a 100, duração inteira, dificuldade beginner/intermediate/expert e idioma até 10 caracteres; o servidor insere o registo enviado.

LISTA PÚBLICA — Consulta idioma + dificuldade

A consulta de resultados filtra por idioma e dificuldade. A UI pede limit 10; a consulta ordena WPM descendente e depois accuracy descendente.

Notas de âmbito

  • Este registo descreve percursos e fórmulas do editor visíveis no código atual.
  • A seleção de texto é baseada em arrays e usa o idioma exibido e a dificuldade escolhida.
  • Um envio de resultado público é entrada de utilizador através do percurso de resultado; esta página não o trata como verificação.
  • A consulta de resultados tem filtros, ordem e limite UI indicados; esta página não declara que uma entrada aparecerá.

Continuar com ferramentas próximas

Cada ferramenta ligada tem os seus próprios controlos e percurso de resultado.

  • Roleta de decisões

    Defina entradas numa interface de roda separada e reveja o painel de seleção.

  • Jogar moeda

    Abra a interface de moeda separada para um resultado de duas faces.

  • Sudoku

    Abra uma interface de puzzle com grelha e controlos próprios.

Perguntas sobre o registo de sessão

Que controlos estão selecionados inicialmente?

Os valores iniciais são 60 segundos, dificuldade intermediate e modo solo. A duração oferece 30, 60 e 120 segundos; a dificuldade oferece beginner, intermediate e expert.

Como é escolhido um texto?

Para o idioma e dificuldade escolhidos, o editor toma uma entrada do array com Math.floor(Math.random() * texts.length) na inicialização e no início do teste.

Como são calculados WPM, accuracy e progresso?

WPM é round((correctChars / 5) / elapsedMinutes) quando elapsedMinutes é superior a 0. Accuracy é round((correctChars / totalChars) * 100) quando totalChars é superior a 0. Progresso é round(currentIndex / currentText.length * 100).

O que regista o mapa de teclas?

Para um carácter solo recém-adicionado, o carácter esperado é convertido em minúscula e contado. typedChar !== expectedChar incrementa o erro. Erros acumulados usam a chave localStorage typingSpeedTest_keyErrors e Repor remove essa chave.

O que envia o diálogo público?

Depois de um fim solo com WPM acima de 20, o diálogo pode enviar um nome opcional até 100 caracteres com os campos de resultado. O servidor aceita os limites inteiros e valores enum indicados e insere o registo enviado.

Abrir controlos de sessão de digitação

Escolha duração, dificuldade e modo no editor e depois reveja os estados por carácter e métricas visíveis.

Abrir teste de digitação