Author: Felipe

Sensor de impressão digital do Dell funcionando no Linux Mint

O passo a passo apresentado a seguir funcionou na minha configuração (Laptop Dell Latitude 5530 com Linux Mint 22.11 – Cinnamon Kernel 6.8.0-53-generic), não tenho certeza se funcionaria em um cenário diferente. Tente por sua conta e risco.

A primeira coisa que você precisa fazer é verificar se o seu sensor de impressão digital é visto pelo sistema ou não. Abra um Terminal e execute o seguinte:

$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
...
Bus 001 Device 005: ID 0a5c:5843 Broadcom Corp. 58200

A última linha representa o sensor de impressão digital. Se você tiver o mesmo modelo poderá usar os drivers fornecidos pela Dell/Broadcom em: http://dell.archive.canonical.com/updates/pool/public/libf/libfprint-2-tod1-broadcom/
Na data desta escrita, o arquivo mais recente é libfprint-2-tod1-broadcom_5.12.018-0ubuntu1~22.04.01_amd64.deb, que eu baixei e instalei com os seguintes comandos:

$ wget http://dell.archive.canonical.com/updates/pool/public/libf/libfprint-2-tod1-broadcom/libfprint-2-tod1-broadcom_5.12.018-0ubuntu1~22.04.01_amd64.deb
$ chmod u+x libfprint-2-tod1-broadcom_5.12.018-0ubuntu1~22.04.01_amd64.deb
$ sudo dpkg -i libfprint-2-tod1-broadcom_5.12.018-0ubuntu1~22.04.01_amd64.deb

Agora reinicie seu laptop.
Uma vez de volta, você pode registrar uma impressão digital usando o comando fprintd-enroll. Por padrão, este comando registrará a impressão digital como o dedo médio direito, mas você pode alterá-lo passando o argumento -f seguido pelo nome do dedo selecionado. O comando espera que você coloque sua impressão digital várias vezes sobre o sensor, como quando você registra uma nova no seu telefone. Após várias leituras você receberá a mensagem enroll-completed.

$ fprintd-enroll -f right-index-finger
Using device /net/reactivated/Fprint/Device/0
Enrolling right-index-finger finger.
Enroll result: enroll-stage-passed
...
Enroll result: enroll-stage-passed
Enroll result: enroll-stage-passed
Enroll result: enroll-completed

Se quiser registrar mais dedos basta repetir o passo anterior quantas vezes forem necessárias, mas lembre-se de mudar o nome do dedo.

Agora, para habilitar o recurso de leitura de impressão digital em todo o sistema, você deve chamar:

$ sudo pam-auth-update

O que traz a seguinte tela:

Use as setas para cima e para baixo para mover o seletor vermelho para a linha onde você lê Fingerprint authentication. Pressione a barra de espaço para habilitá-la [*], pressione tab para pular para o OK e pressione Enter para confirmar.

Agora, você poderá usar sua impressão digital para tudo: login, comandos no terminal e na interface gráfica. Se o sistema não reconhecer sua impressão digital ou você levar alguns segundos para reagir, pedirá então a sua senha.

Explore os diferentes comandos fprintd como fprintd-delete, fprintd-list, fprintd-verify, você pode respectivamente excluir, listar ou testar as impressões digitais registradas.

Este artigo é baseado na solução fornecida para outro modelo Dell neste sub-reddit: https://www.reddit.com/r/Dell/comments/qjabef/happy_fingerprint_driver_available_for_ubuntu/

Defina layouts de teclado separados para seu laptops com um teclado USB externo

Imagine este cenário: você tem um laptop com um teclado layout US que usa diariamente em sua mesa de escritório em casa. Vários dias por semana, você trabalha no escritório da empresa, que tem uma configuração agradável com duas telas extras, um mouse e um teclado. Tudo parece bem até você começar a digitar e ver caracteres estranhos aparecendo — com “z” em vez de “y”. Você percebe que o teclado da sua mesa tem um layout DE! “Sem problema”, você pensa, “vou apenas instalar um novo layout de teclado e alterná-lo quando estiver no escritório.” Simples o suficiente, até você desconectar seu laptop para uma reunião: troca de layout necessária. De volta à sua mesa: outra troca. Dez minutos depois, você está em outra sala com um teclado USB diferente — desta vez com layout US. E justamente quando você configurou tudo corretamente enquanto conectado, você precisa digitar no teclado do laptop!

Este cenário pode se tornar frustrante com o tempo. No entanto, você pode evitar essas dores de cabeça aproveitando a flexibilidade do Linux para automatizar o processo, eliminando a necessidade de gerenciá-lo manualmente.

Veja como configurei meu sistema para corresponder automaticamente o layout do teclado a qualquer teclado que esteja em uso. Minha configuração atual é:

  • Dell Latitude 5530 (layout US-int)
  • Teclado USB: Roccat Vulcan Pro TKL (layout DE)
  • Linux Mint 22.11 Cinnamon, Kernel 6.8.0-53-generic”

TL;DR

Vá para o meu github, copie todos os arquivos e execute o script de instalação. Ele fará tudo para você:
https://github.com/felipeheuer/usb_kb_layout

Script de detecção de teclado e alteração de layout

Identifique o nome do seu teclado USB.

$ xinput -list | grep "keyboard"
⎣ Virtual core keyboard                   	id=3	[master keyboard (2)]
    ↳ Virtual core XTEST keyboard             	id=5	[slave  keyboard (3)]
...
    ↳ ROCCAT ROCCAT Vulcan Pro TKL Consumer Control	id=12	[slave  keyboard (3)]
    ↳ ROCCAT ROCCAT Vulcan Pro TKL            	id=13	[slave  keyboard (3)]
    ↳ ROCCAT ROCCAT Vulcan Pro TKL            	id=14	[slave  keyboard (3)]
    ↳ ROCCAT ROCCAT Vulcan Pro TKL System Control	id=15	[slave  keyboard (3)]

Anote o nome do seu teclado (ignore as entradas com ‘Control’ no nome).

Certifique-se de que todos os arquivos e pastas que você criar aqui sejam de propriedade do root e tenham as permissões de execução adequadas.

Crie um novo script em /opt/usb_kb_layout/usb_kb_layout.sh com o seguinte conteúdo. Lembre-se de atualizar os valores kb_model_usb, kb_layout_usb e user_name.

#!/bin/bash

# this script sets a new layout for the selected keyboard
# <https://github.com/felipeheuer/usb_kb_layout>

# !!! update the following lines with your keyboard and user information
kb_model_usb="ROCCAT Vulcan Pro TKL"
kb_layout_usb="-layout de -variant legacy"
user_name="username"
# !!! no need to update bellow this line

log_enable=1
log_file=/var/log/usb_kb_layout.log
script_file=$(basename "${BASH_SOURCE[0]}")
update_laptop_kb=1

function log() {
    if [ $log_enable -eq 1 ]; then
        echo "$(date) $1" >> "$log_file"
    fi
}

function get_kb_id() {
    xinput -list | grep "keyboard" | grep "${1}"| grep -v "Control" | sed -n "s/.*id=\\([0-9]*\\).*/\\1/p" | sort -nr
}

# ------ script start ------
for pid in $(pidof -x "${script_file}"); do
    if [ $pid != $$ ]; then
        # stop the script if it's already running
        exit 1
    fi
done

log "Start"
kb_model="Virtual core keyboard"
kb_layout="-layout us -variant intl"

DISPLAY=":0.0"
HOME=/home/$user_name
XAUTHORITY=$HOME/.Xauthority
export DISPLAY XAUTHORITY HOME

sleep 1s

usbkbd_id=$(get_kb_id "$kb_model_usb")
if [ "${usbkbd_id}" ]; then
    if [ $update_laptop_kb -eq 1 ]; then
        kb_laptop_id=$(get_kb_id "$kb_model")
        setxkbmap -verbose -device $kb_laptop_id $kb_layout
        log "${kb_model} updated with '${kb_layout}', id: $kb_laptop_id"
    fi

    for kb_id in $usbkbd_id; do
        if [ "${kb_id}" ]; then
            setxkbmap -verbose -device $kb_id $kb_layout_usb
            log "${kb_model_usb} updated with '${kb_layout_usb}', id: $kb_id"
        fi
    done
fi
log "Done"

exit 0

Embora o script funcione quando executado manualmente, você precisaria executá-lo cada vez que conectar seu teclado USB. Para automação completa, podemos usar o sistema udev para acionar o script automaticamente quando você conectar seu teclado. Usando os códigos de fornecedor e produto do dispositivo, podemos garantir que o script seja executado apenas quando seu teclado específico estiver conectado.

$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
...
Bus 003 Device 024: ID 1e7d:311a ROCCAT ROCCAT Vulcan Pro TKL

O código 1e7d:311a consiste em duas partes: o ID do fornecedor à esquerda e o ID do produto à direita.

Agora crie um novo arquivo de regra em /etc/udev/rules.d/99-usb-keyboard.rules

ATTRS{idVendor}=="1e7d", ATTRS{idProduct}=="311a", ACTION=="bind", OWNER="username", RUN+="/opt/usb_kb_layout/usb_kb_layout_wrapper.sh"

Atualize o arquivo de regra com os IDs de fornecedor e produto do seu dispositivo e seu nome de usuário (usando o mesmo nome de usuário do script anterior).

Observe que o parâmetro RUN não chama nosso script original diretamente, mas chama usb_kb_layout_wrapper. Este wrapper é necessário porque as regras udev exigem execução de script assíncrona. O wrapper chamará nosso script original com o parâmetro &. Crie este wrapper em /opt/usb_kb_layout/usb_kb_layout_wrapper.sh.

#!/bin/bash

# this is a wrapper script so udev can call the main script non-blocking
# <https://github.com/felipeheuer/usb_kb_layout>

/opt/usb_kb_layout/usb_kb_layout.sh &

Agora, toda vez que você conectar seu teclado USB, o script de atualização de layout será executado automaticamente.

Para automação completa, você também vai querer que o script seja executado quando você fizer login no sistema. Isso pode ser feito adicionando um script chamado start_usb_kb_layout.sh a /etc/profile.d/.

#!/bin/bash

# this is a startup script so your keyboard gets updated on boot
# <https://github.com/felipeheuer/usb_kb_layout>

if [ -f /opt/usb_kb_layout/usb_kb_layout_wrapper.sh ]; then
  . /opt/usb_kb_layout/usb_kb_layout_wrapper.sh
fi

Seus teclados agora devem estar funcionando com seus respectivos layouts, eliminando a necessidade de alternar manualmente as configurações de idioma do teclado do sistema.

Se você tiver algum problema, verifique o arquivo de log usado pelo script principal.

$ cat /var/log/usb_kb_layout.log
Fri Mar  7 08:15:26 CET 2025 Start
Fri Mar  7 08:15:27 CET 2025 Virtual core keyboard updated with '-layout us -variant intl', id: 3
Fri Mar  7 08:1

Esse post foi inspirado por uma pesquisa feita em diversos locais:

  1. https://askubuntu.com/questions/1414404/how-to-change-keyboard-layout-when-usb-keyboard-connected
  2. https://askubuntu.com/questions/337411/how-to-permanently-assign-a-different-keyboard-layout-to-a-usb-keyboard
  3. https://askubuntu.com/questions/337351/two-keyboards-two-language-layouts
  4. https://askubuntu.com/questions/337411/how-to-permanently-assign-a-different-keyboard-layout-to-a-usb-keyboard?noredirect=1&lq=1
  5. https://unix.stackexchange.com/questions/99085/save-setxkbmap-settings
  6. https://forum.endeavouros.com/t/unable-to-permanently-set-setxkbmap/34612/4
  7. https://gist.github.com/mierzejk/c71d9c110a74844a41906337d22caff6#file-setting-xinput-properties-of-pointing-devices-having-indistinct-names-md
  8. https://unix.stackexchange.com/questions/612686/udev-not-running-xinput-command-inside-script

Layout de Teclado: use letras BR no teclado alemão

Pra quem tem teclado no layout alemão mas quer usar as deadkeys existentes no layout BR eu vou mostrar uma solução para Windows 10 e outra para Ubuntu 20.04!

Com eles você poderá utilizar todos os acentos (til, cedilha, craze, etc…).

Windows 10

Criei este layout personalizado com a ferramenta da Microsoft chamada Microsoft Keyboard Layout Creator.

Apesar de mostrar as etapas para o Windows 10 este layout é compatível com versões anteriores, basta encontrar o caminho certo até a opção de idiomas dentro do Painel de Controle.

Instalação:

  • Baixar o zip e descompactá-lo em qualquer pasta;
  • Rodar o setup.exe;
  • Ir até as configurações de idioma de entrada do Windows e selecionar como layout de teclado o Deustch mit BR;
    • No Windows 10 você deverá clicar no Iniciar e digitar na pesquisa: Idioma (ou Language)
    • Na parte de Idiomas Preferidos selecione o primeiro da lista e clique em Opções
    • Na parte de Teclado, clique em Adicionar
    • Selecione o layout Deustch mit BR
Teclado BR_DE Win10
Size: 251 kB
Version: 1.0
Published: December 8, 2020

Linux Ubuntu 20.04

Antigamente existia um padrão de teclado chamado German (legacy) que possuía todas as deadkeys necessárias para o pt-br. Vou mostrar como criar esse padrão novamente editando dois arquivos do sistema (vou deixar também ambos disponíveis para download no zip abaixo).

Outras versões do Ubuntu, e provavelmente do Linux, deverão operar similarmente ao Ubuntu 20.04, então basta procurar os arquivos abaixo (ou os similares) e realizar as mesmas modificações.

Lembre-se de que para editar os arquivos abaixo será necessário acesso root.

Editando arquivo de símbolo:

Vá até /usr/share/X11/xkb/symbols e abra o arquivo chamado “de”.
Insira as seguintes linhas no final dele:

partial alphanumeric_keys
xkb_symbols "legacy" {
    // previous standard German layout with tilde as dead key

    include "de(basic)"
    name[Group1]="German (legacy)";

    key <AD12>	{ [      plus,   asterisk,   dead_tilde,  dead_macron ]	};
};

Salve e feche o arquivo.

Editando o arquivo de regras:

Vá até usr/share/X11/xkb/rules e abra o arquivo chamado “evdev.xml”.
Vá até a seguinte parte do arquivo:

    <layout>
      <configItem>
        <name>de</name>
        <!-- Keyboard indicator for German layouts -->
        <shortDescription>de</shortDescription>
        <description>German</description>
        <languageList>
          <iso639Id>deu</iso639Id>
        </languageList>
      </configItem>
      <variantList>

Logo após a tag <variantList>, adicione o seguinte bloco de código:

        <variant>
          <configItem>
            <name>legacy</name>
            <description>German (Legacy)</description>
          </configItem>
        </variant>

Salve e feche o arquivo.

Agora basta encerrar sua sessão e logar novamente.

Teclado BR_DE Ubuntu 20.04
Size: 30 kB
Version: 1.0
Published: December 9, 2020

DesligaAí! v4.0.0

Versão com novo layout e funcionalidades. Agora você pode:

  • Adicionar até 5 eventos independentes;
  • Programá-los de forma recorrente ou única;
  • Remover automaticamente da lista os eventos não-recorrentes que já executaram;
DesligaAí! 4.0.0
Size: 469 kB
Version: 4.0.0
Published: November 24, 2020

Versão nova a caminho!

Após a recuperação do site eu encontrei um antigo código-fonte, em estado bem adiantado, de uma versão nova que eu tinha planejado. Com meio caminho andado foi fácil e rápido terminá-la.

Agora estou finalizando alguns testes e devo lançá-la nos próximos dias.

Duas grande diferenças marcam esta versão:

  • Possibilidade de agendar até 5 eventos independentes;
  • Cada evento pode ser de disparo único ou recorrente, escolhendo os dias da semana em que ocorrerão.
Tela principal da nova versão.

Mais informações serão colocadas aqui nos próximos dias. Aguardem!

Site está de volta!

Depois de muitos anos o site foi reformulado e está ganhando alguma atenção. 🙌

Vamos ver se o programa também passa a ter alguma atencao e recebe uma nova versao.

Fiquem antenados! Assinem nossa newsletter para receber atualizações por email!

Sobre o DesligaAí!

Desliga Aí! é um software GRATUITO que foi criado no início dos anos 2000 por conta de uma necessidade pessoal. Com o tempo percebi que várias pessoas tinham o mesmo desejo de poder programar o computador para desligar num determinado horário e por isso resolvi publicá-lo.

Inicialmente foi lançado apenas no site Superdownloads, onde por anos foi o software mais baixado na categoria de Desligamento Automático. Tempos depois foi lançado a primeira versão do site.

Outras Versões

A partir da idéia do Desliga Aí! outras duas versões foram criadas: Desliga Aí! Sleep e Desliga Aí! 3.0 Beta.

O Desliga Aí! Sleep é uma versão resumida que funciona como um Sleep Timer (igual da TV) onde se escolhe um tempo restante para desligar o computador.

Já o Desliga Aí! 3.0 Beta é uma versão de testes de novo design.

Funcionalidades do DesligaAí! 2.0

Tela principal

Existem 3 opcões básicas no programa:

  1. Desligar o Monitor
  2. Desligar / Reiniciar / Logoff / Modo de Espera / Hibernar
  3. Mostrar Recado

Após ativar a(s) opcão(ões) desejada(s) basta selecionar um HORÁRIO e clicar em INICIA. A tela será minimizada para o lado do relógio do Windows e poderá ser restaurada por lá.

Você será informado em dois momentos antes de ocorrer as ações programadas: 5 minutos e 1 minuto. Assim poderá se programar e salvar qualquer trabalho pendente.

O Menu possui tela de Opcões, onde é possível:

  • Ativar inicializacao com o Windows;
  • Escolher se inicia o timer em pausa ou em execução;
  • Salvar os horários utilizados na memória.

ATENCAO: as ações Desligar, Reiniciar e Efetuar Logoff forçam o fechamento de qualquer programa, ocasionando perda de qualquer trabalho não salvo.

Compatibilidade

Compatível com todas as versões do Windows (95/98/98se/2000/XP/Vista/7/10)