Configurando os sensores capacitivos do notebook Positivo C15 no seu Linux preferido

Os sensores capacitivos são estes da figura abaixo, que abrem aplicativos específicos, de acordo com a configuração que você queira:

image

Os sensores capacitivos são pseudo-teclas numeradas como 1, 2 e 3 e funcionam sob o mesmo princípio das telas de smartphones: sensibilidade ao toque, que dispensa o clique mecânico tradicional.

Não fazem parte do teclado físico convencional, mas são áreas demarcadas na carcaça do aparelho, servindo de atalhos rápidos para funções como abrir o navegador, acessar o YouTube ou iniciar o Netflix.

Embaixo desses botões, há um circuito com eletrodos que geram um campo elétrico constante e de baixa intensidade. Quando se encosta o dedo, o corpo humano — excelente condutor de eletricidade — absorve parte da carga elétrica, alterando a capacitância local do circuito.

O controlador interno do notebook detecta instantaneamente essa variação de energia elétrica e a interpreta como um comando de pressão, acionando o atalho correspondente sem que o usuário precise exercer força física ou afundar uma tecla.

É tudo uma questão de controle

O controlador HTIX5288, responsável pela tecnologia comercialmente chamada de “Smart Touch”, no notebook Positivo Motion C15, é um circuito integrado especializado no gerenciamento de interfaces táteis capacitivas multipropósito; reconhecido pelo kernel pelas funções lógicas como Mouse, Keypad e Touchpad.

O mesmo chip processa diferentes tipos de interações físicas no notebook: navegação do cursor e gestos multi-toque, interpreta os comandos de clique simulados (mouse) e decodifica os acionamentos das smart touch como pressionamentos de teclado convencionais (Keypad).

Quando o usuário toca em uma das teclas “Smart Touch”, o HTIX5288 mede a variação de capacitância e converte o sinal analógico em um código digital, correspondente a uma tecla física, enviando-o para o nó de evento correto, para que o sistema operacional execute a abertura dos aplicativos integrados.

Já falamos demais…

A primeira coisa a fazer é rodar o comando abaixo, no terminal:

lspci (fragmento)

00:16.0 Signal processing controller: Intel Corporation Celeron/Pentium Silver Processor I2C 0 (rev 06)
00:16.1 Signal processing controller: Intel Corporation Celeron/Pentium Silver Processor I2C 1 (rev 06)
00:16.2 Signal processing controller: Intel Corporation Celeron/Pentium Silver Processor I2C 2 (rev 06)
00:17.3 Signal processing controller: Intel Corporation Celeron/Pentium Silver Processor I2C 7 (rev 06)

Essas linhas mostram os controladores de barramento I2C (Inter-Integrated Circuit) nativos do processador Intel. O chip HTIX5288 (Smart Touch) está conectado fisicamente a uma dessas portas I2C, geralmente mapeadas via ACPI, na BIOS do notebook.

É por isso que o Linux consegue criar os nós /dev/input/eventX para ele: o kernel conversa com o controlador I2C da Intel, que por sua vez faz a ponte de comunicação com o chip da HTIX.

Um comando importante que nos ajudará no terminal é o evtest, para depurar os dispositivos de entrada em tempo real, perfeito para monitorar o comportamento do controlador HTIX5288 e suas teclas capacitivas “Smart Touch”.

Ele faz uma varredura no diretório /dev/input/ e exibe uma lista numerada dos dispositivos de entrada capturados pelo kernel. É nessa tela inicial que você verá as três linhas associadas ao chip HTIX5288 (Mouse, Keypad e Touchpad):

O programa então solicita que você digite o número correspondente ao dispositivo que deseja monitorar. Para testar especificamente os sensores das teclas capacitivas 1, 2 e 3, selecione o número atrelado ao nó Keypad denominado event6.

Assim que o dispositivo é selecionado, o evtest entra em modo de monitoramento contínuo e lista todos os códigos de teclas (keycodes) que aquele sensor é fisicamente capaz de enviar.

Quando você encosta o dedo na tecla capacitiva 1, 2 ou 3, o terminal imediatamente “imprime” linhas de código que descrevem o evento exato que acabou de acontecer. Então vamos lá:

sudo apt install evtest keyd keyd-application-mapper

sudo evtest (fragmento)

/dev/input/event5: HTIX5288:00 093A:0255 Mouse
/dev/input/event6: HTIX5288:00 093A:0255 Keypad
/dev/input/event7: HTIX5288:00 093A:0255 Touchpad
Select the device event number [0-16]: 6

Digitamos o “6”, que nos interessa no momento. Aí ele mostras todos os códigos de teclas, como explicado acima (fragmento):

Input driver version is 1.0.1
Input device ID: bus 0x18 vendor 0x93a product 0x255 version 0x100
Input device name: "HTIX5288:00 093A:0255 Keypad"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 1 (KEY_ESC)
    Event code 2 (KEY_1)
    Event code 3 (KEY_2)
    Event code 4 (KEY_3)
    Event code 5 (KEY_4)
    Event code 6 (KEY_5)
    Event code 7 (KEY_6)
    Properties:
   Testing ... (interrupt to exit)

Chegando no “Testing … (interrupt to exit)” você passa o dedo nas três teclas do smart touch. Aparecerão as linhas abaixo que nos interessam (fragmento):

Event: time 1779319487.061994, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7006c
Event: time 1779319487.061994, type 1 (EV_KEY), code 187 (KEY_F17), value 1
Event: time 1779319486.747296, -------------- SYN_REPORT ------------

Event: time 1779319486.747296, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7006d
Event: time 1779319486.747296, type 1 (EV_KEY), code 188 (KEY_F18), value 1
Event: time 1779319486.747296, -------------- SYN_REPORT ------------

Event: time 1779319486.697121, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7006e
Event: time 1779319486.697121, type 1 (EV_KEY), code 189 (KEY_F19), value 0
Event: time 1779319486.697121, -------------- SYN_REPORT ------------

Percebam que identificamos três teclas, F17, F18 e F19. São chaves “invisíveis” e raramente utilizadas, sem qualquer possibilidade de alterar o mapeamento das teclas F1 a F12, do teclado mecânico do notebook. Ao tocar nos botões de cima para baixo, o sistema gera estes três sinais:

Botão 1 (Superior): KEY_F17 (Código scancode: 7006e)
Botão 2 (Meio): KEY_F18 (Código scancode: 7006d)
Botão 3 (Inferior): KEY_F19 (Código scancode: 7006c)

O X11 e o Wayland ignoram nativamente qualquer tecla de função acima de F12, vinda de um submódulo que não seja o teclado principal. Mas continuemos, criando um arquivo de configuração do teclado/sensor:

sudo nano /etc/keyd/default.conf

Com o conteúdo abaixo:

[ids]
# Filtrando apenas o sub-dispositivo de teclado do chip HTIX
093A:0255:ddbf9831

[main]
# Se tocar rápido (deslizar), não faz nada. Se segurar por 300ms, dispara o atalho.
f17 = timeout(noop, 300, C-A-f7)
f18 = timeout(noop, 300, C-A-f8)
f19 = timeout(noop, 300, C-A-f9)

Salve o arquivo e ative o serviço do keyd:

sudo systemctl enable keyd --now

Ao colocar 093a:0255:ddbf9831, você amarrou o keyd especificamente e unicamente ao sub-dispositivo que gera os botões (/dev/input/event6). O Touchpad (event7) e o Mouse (event5) desse mesmo chip ficarão completamente livres e intocados pelo sistema, eliminando o travamento do USB e do teclado físico:

sudo keyd.rvaiya monitor (fragmento)

device added: 093a:0255:ddbf9831 HTIX5288:00 093A:0255 Keypad (/dev/input/event6)`

Após ativar o keyd, quando você for nas “Configurações de Atalhos” da sua distro para adicionar um personalizado, ao encostar o dedo no Sensor 1, a interface gráfica registrará o comando como se você tivesse pressionado Ctrl + Alt + F7. Aí basta associar o app que deseja!

Indo aos finalmentes…

Abri as “Configurações de Teclado” → “Adicionar atalho personalizado” do Cinnamon:

Criei um para abrir o Libreoffice Writer:

Agora defino uma tecla para iniciá-lo. Neste tutorial será a F17. Basta clicar em “não atribuído” e correr o dedo na F17, que é a de cima. Lembrando que você deve correr o dedo do sensor [1] ao [3] e depois voltar e parar no [1]. Aí abre o app que você deseja.

Não testei com appimage, flatpak ou snap. Creio que se deva copiar os comandos existentes no menu iniciar.. Mas deixo pra vocês porque quebrei muito a cabeça para fazer esse tutorial.

:stuck_out_tongue_winking_eye:

1 curtida