AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / ubuntu / Perguntas / 1540423
Accepted
Jason Williams
Jason Williams
Asked: 2025-02-04 04:51:45 +0800 CST2025-02-04 04:51:45 +0800 CST 2025-02-04 04:51:45 +0800 CST

Detecção de eventos no modo tablet no HP Spectre x360

  • 772

Tenho um laptop conversível 2 em 1 (HP Spectre x360) que estou usando com o Ubuntu 24.04. Mais ou menos tudo funciona muito bem de fábrica: a tela sensível ao toque funciona bem, e se eu dobrar o computador completamente no "modo tablet", o teclado na tela aparece quando preciso, ou posso chamá-lo manualmente deslizando de baixo para cima na tela.

Gostaria de fazer um pouco mais e executar um script quando o computador for alternado para o modo tablet ou não. O SO sabe claramente em que modo está, já que o teclado na tela só aparece quando a tela é dobrada para o modo tablet, mas não tenho ideia de como obter essas informações, muito menos acionar um script quando o modo muda.

Editar: Eu instalei evteste, por meio de um processo de tentativa e erro, rastreei até um evento em /dev/input/event11. No entanto, não tenho ideia de como observar esse evento e executar um script quando ele dispara. Alguma orientação?

Aqui está o resultado de evtest /dev/input/event11quando coloquei o computador no modo tablet e depois saí dele:

Input driver version is 1.0.1
Input device ID: bus 0x19 vendor 0x0 product 0x0 version 0x0
Input device name: "Intel Virtual Switches"
Supported events:
  Event type 0 (EV_SYN)
  Event type 5 (EV_SW)
    Event code 1 (SW_TABLET_MODE) state 0
Properties:
Testing ... (interrupt to exit)
Event: time 1738791097.627387, type 5 (EV_SW), code 1 (SW_TABLET_MODE), value 1
Event: time 1738791097.627387, -------------- SYN_REPORT ------------
Event: time 1738791102.134017, type 5 (EV_SW), code 1 (SW_TABLET_MODE), value 0
Event: time 1738791102.134017, -------------- SYN_REPORT ------------
24.04
  • 2 2 respostas
  • 57 Views

2 respostas

  • Voted
  1. waltinator
    2025-02-04T05:12:06+08:002025-02-04T05:12:06+08:00

    Use o udevsistema, leia man -k udev;man udevadm. Da udevadm manpágina:

       udevadm [--debug] [--version] [--help]
    
       udevadm info [options] [devpath]
    
       udevadm trigger [options] [devpath]
    
       udevadm settle [options]
    
       udevadm control option
    
       udevadm monitor [options]
    
       udevadm test [options] devpath
    
       udevadm test-builtin [options] command devpath
    
       udevadm verify [options...] [file...]
    
       udevadm cat [options...] [file...]
    
       udevadm wait [options] device|syspath
    
       udevadm lock [options] command
    

    Use sudo udevadm monitorpara ver quais eventos acontecem ao entrar/sair do modo tablet.

    • 1
  2. Best Answer
    Jason Williams
    2025-02-07T00:08:55+08:002025-02-07T00:08:55+08:00

    A solução que funcionou para mim - por enquanto - acabou sendo a detecção do modo Tablet e os scripts de configuração para Linux .

    É um script escrito em Ruby que observa a saída libinput debug-events --device /dev/input/event11(no caso do meu HP Spectre x360) e reage quando observa uma alteração.

    Para meus propósitos, planejo criar um script bash que funcione da mesma forma, com base no exemplo abaixo (créditos aos usuários dos fóruns do arch). Adicionei meu usuário ao grupo "input" para me permitir acesso ao dispositivo de entrada, embora eu acredite que possa haver uma maneira de usar regras do udev para me dar acesso apenas ao dispositivo que realmente preciso.

    #!/bin/bash
    #
    #Check if it's in tablet mode
    libinput debug-events --device /dev/input/event11 | while read line; do
        mode=$(echo "$line" | grep -o 'state [0-9]' | awk '{print $2}')
        if [ "$mode" = "1" ]; then
            echo "We're in tablet mode"
        else 
            echo "We're in laptop mode"
        fi
    done
    
    • 0

relate perguntas

  • Problemas ao instalar 24.04

  • Nenhum clique pode ser feito em todo o canto superior direito de um aplicativo maximizado no Ubuntu 24.04

  • Tenho uma dúvida sobre como baixar a versão do Ubuntu entre LTS e básica

  • 24.04 Textos LTS não aparecem até passar o mouse

  • A boutique de software não pode ser iniciada no Ubuntu24.04 LTS

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Existe um comando para listar todos os usuários? Também para adicionar, excluir, modificar usuários, no terminal?

    • 9 respostas
  • Marko Smith

    Como excluir um diretório não vazio no Terminal?

    • 4 respostas
  • Marko Smith

    Como descompactar um arquivo zip do Terminal?

    • 9 respostas
  • Marko Smith

    Como instalo um arquivo .deb por meio da linha de comando?

    • 11 respostas
  • Marko Smith

    Como instalo um arquivo .tar.gz (ou .tar.bz2)?

    • 14 respostas
  • Marko Smith

    Como listar todos os pacotes instalados

    • 24 respostas
  • Martin Hope
    Flimm Como posso usar o docker sem sudo? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    led-Zepp Como faço para salvar a saída do terminal em um arquivo? 2014-02-15 11:49:07 +0800 CST
  • Martin Hope
    ubuntu-nerd Como descompactar um arquivo zip do Terminal? 2011-12-11 20:37:54 +0800 CST
  • Martin Hope
    TheXed Como instalo um arquivo .deb por meio da linha de comando? 2011-05-07 09:40:28 +0800 CST
  • Martin Hope
    Ivan Como listar todos os pacotes instalados 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    David Barry Como determino o tamanho total de um diretório (pasta) na linha de comando? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher "Os seguintes pacotes foram retidos:" Por que e como resolvo isso? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford Como os PPAs podem ser removidos? 2010-07-30 01:09:42 +0800 CST

Hot tag

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve