OLED, são úteis? O que fazem?

O OLED é uma telinha opcional em cima da controladora que mostra o que está acontecendo no teclado: a camada ativa, o Caps Lock, a velocidade de digitação, a bateria e o Bluetooth nos teclados sem fio, ou só um logo. Ele não muda como o teclado digita, mas ajuda bastante a saber em que camada você está, principalmente no começo.

O que é o OLED do teclado?

É uma tela pequena e monocromática, de 128 x 32 pixels, que fica em cima da controladora. Corne, Lily58 e Sofle têm lugar para um OLED em cada metade.

Ele é opcional: o teclado funciona igual sem ele. Quem decide o que aparece na tela é o firmware, QMK nos teclados com fio e ZMK nos sem fio.

Ilustração da metade esquerda de um Lily58 com o OLED destacado em cima da controladora e, ampliada, a tela mostrando a camada atual, o Caps Lock ligado e a velocidade de digitação em WPM.
O OLED fica em cima da controladora e mostra o estado do teclado.

O que o OLED pode mostrar?

Quase tudo o que cabe em 128 x 32 pixels. Os usos mais comuns são:

Seis exemplos de tela de OLED: camada atual, Caps Lock e Num Lock, velocidade de digitação em WPM, bateria e Bluetooth no teclado sem fio, um logo ou desenho fixo e uma animação que reage à digitação.
Exemplos do que dá para mostrar no OLED.
  • Camada atual: o nome da camada que está ativa, como Base, Números ou Símbolos.
  • Caps Lock e Num Lock: muitos teclados split não têm LED para isso, e o OLED faz esse papel.
  • Velocidade (WPM): quantas palavras por minuto você está digitando, ao vivo.
  • Bateria e Bluetooth: nos teclados sem fio, a carga de cada metade, o perfil Bluetooth em uso e se está conectado por USB ou Bluetooth.
  • Logo ou desenho: uma imagem fixa, como o logo da sua marca ou um pixel art.
  • Animação: desenhos que se mexem e reagem quando você digita.

OLED é útil? Vale a pena?

Depende de como você usa o teclado. Ele ajuda mais em algumas situações do que em outras.

  • Vale a pena se você está aprendendo a usar camadas: ver qual camada está ativa evita muito erro de digitação nas primeiras semanas.
  • Vale a pena para ver o Caps Lock, já que a maioria dos splits não tem LED.
  • Vale a pena no teclado sem fio para ver a bateria de cada metade e qual perfil Bluetooth está em uso.
  • Faz menos diferença depois que você decora as camadas: muita gente quase não olha mais para a tela.

Quais as desvantagens do OLED?

O OLED ajuda, mas tem um custo. Antes de pedir o seu, vale conhecer os pontos fracos.

  • Consumo de energia: no teclado sem fio, a tela acesa é um dos itens que mais gastam a bateria. Com o OLED, a bateria dura bem menos do que sem ele. Dá para simular a diferença no ZMK Power Profiler.
  • Bateria pequena: os teclados sem fio costumam usar baterias de 130 a 150 mAh. Dá para usar uma bateria maior, mas o teclado pode ficar mais alto e mais volumoso.
  • Marcas na tela (burn-in): uma imagem parada por muito tempo pode marcar o OLED.
  • Fragilidade: a tela é um vidro fino, que pode trincar com uma pancada ou se for apertado.
  • Pouca informação na metade direita do ZMK: lá aparece só a bateria e a conexão.

Cuidados com o OLED

O OLED é durável, mas pede alguns cuidados.

  • Marcas na tela (burn-in): uma imagem parada por muito tempo pode marcar o OLED. Por isso o QMK e o ZMK apagam a tela depois de um tempo sem uso.
  • Vidro frágil: a tela é um vidro fino. Não aperte nem apoie peso em cima dela; a tampa de acrílico protege no dia a dia.
  • Bateria: no teclado sem fio, a tela acesa reduz a duração da bateria.

Como configurar o OLED no QMK?

Nos teclados da Tupinikeebs com QMK, o OLED já vem configurado no firmware Vial. O app do Vial não muda o que aparece na tela: para mudar, é preciso editar o firmware no QMK CLI e gravar de novo, como explicado no guia de QMK e Vial.

Duas telas de OLED no QMK: a metade com o cabo USB mostra a camada, o Caps Lock e a velocidade em WPM; a outra metade mostra um logo. Abaixo, as duas peças do código: OLED_ENABLE no rules.mk e a função oled_task_user no keymap.c.
No QMK, cada metade pode mostrar uma coisa diferente.
  1. No arquivo rules.mk do seu keymap, ligue o OLED com OLED_ENABLE = yes. Para mostrar a velocidade, adicione também WPM_ENABLE = yes.
  2. No keymap.c, crie a função bool oled_task_user(void). Tudo o que ela escrever com oled_write_P aparece na tela, e ela roda o tempo todo.
  3. Para mostrar a camada, use get_highest_layer(layer_state); para o Caps Lock, host_keyboard_led_state().caps_lock; para a velocidade, get_current_wpm().
  4. Para mostrar coisas diferentes em cada metade, use is_keyboard_master(): por exemplo, a metade com o cabo USB mostra o status e a outra mostra um logo.
  5. Se o texto aparecer de lado ou de cabeça para baixo, gire a tela na função oled_init_user, retornando OLED_ROTATION_90, OLED_ROTATION_180 ou OLED_ROTATION_270.
  6. Compile e grave o firmware nas duas metades.

Como colocar um logo ou animação no QMK?

Converta a sua imagem para o formato do OLED com o image2cpp ou o QMK Logo Editor. Eles geram um array em C que você cola no keymap.c e desenha com oled_write_raw_P.

Uma animação é só uma sequência dessas imagens (frames) trocadas a cada poucos milissegundos com um timer. Dá para fazer ela andar mais rápido quanto maior o WPM.

Para mudar quanto tempo a tela fica acesa sem uso, defina OLED_TIMEOUT no config.h, em milissegundos. O padrão é 60000 (1 minuto).

Como configurar o OLED no ZMK?

No ZMK, o OLED já tem uma tela de status pronta: é só ligar. A metade esquerda (central) mostra a bateria, o perfil Bluetooth ou USB e a camada atual; a metade direita (periférica) mostra só a bateria e se está conectada, porque quem processa as teclas e as camadas é a esquerda.

Duas telas de OLED no ZMK: a metade esquerda (central) mostra a bateria, o perfil Bluetooth, a camada atual e o WPM; a metade direita (periférica) mostra só a bateria e se está conectada. Abaixo, as opções CONFIG_ZMK_DISPLAY e CONFIG_ZMK_WIDGET_WPM_STATUS.
A tela de status do ZMK: completa na esquerda, só bateria e conexão na direita.
  1. No seu repositório zmk-config, abra o arquivo .conf do teclado, por exemplo config/corne.conf ou config/lily58.conf.
  2. Adicione a linha CONFIG_ZMK_DISPLAY=y.
  3. Para mostrar também a velocidade de digitação, adicione CONFIG_ZMK_WIDGET_WPM_STATUS=y.
  4. Faça o commit: o GitHub Actions compila o firmware novo. Baixe e grave nas duas metades, como explicado no guia de ZMK.

Dá para mudar a tela no ZMK?

Sim. O ZMK aceita telas customizadas com a opção CONFIG_ZMK_DISPLAY_STATUS_SCREEN_CUSTOM, desenhadas com a biblioteca LVGL, e a comunidade tem módulos prontos com desenhos e animações que você adiciona ao zmk-config. É mais trabalhoso que no QMK, mas possível.

Alguns teclados sem fio usam a nice!view no lugar do OLED: uma tela de memória que fica sempre ligada e gasta bem menos bateria.

OLED gasta bateria?

No teclado com fio, não faz diferença: a energia vem do cabo USB.

No teclado sem fio, sim: a tela acesa é um dos itens que mais gastam a bateria. O ZMK apaga a tela quando o teclado fica parado (opção CONFIG_ZMK_DISPLAY_BLANK_ON_IDLE, ligada por padrão), o que ajuda. Se a bateria está acabando rápido, desligar o OLED é a primeira coisa a testar.

Os teclados sem fio costumam usar baterias de 130 a 150 mAh, que cabem no case sem deixar o teclado alto. Dá para usar uma bateria maior e ganhar autonomia, mas o teclado pode ficar mais alto e mais volumoso.

Para ter uma ideia de quanto tempo a bateria dura com e sem o OLED, use o ZMK Power Profiler: você escolhe a bateria, a tela e o seu uso, e ele estima a duração.

Onde aprender mais?

Estes são os guias e documentações oficiais sobre o OLED.