entrada do scanner de código de barras redirecionamento para widget específico no linux

StackOverflow https://stackoverflow.com/questions/868853

  •  22-08-2019
  •  | 
  •  

Pergunta

Eu tenho um scanner de código de barras Symbol LS2208 e funciona bem na minha caixa de linux (Kubuntu 8.10 Intrepid Ibex). Sempre que você digitalizar um código de barras scanner (conectado a uma porta USB) envia a leitura para onde quer que o cursor do texto é. Gostaria de redirecionar todas as leituras do scanner para um widget específico na minha aplicação (ou seja, um texto controle de edição). Como eu posso fazer isso? Embora eu uso C ++ com Qt GUI código de exemplo biblioteca é bem-vinda em qualquer biblioteca de língua ou GUI.

Foi útil?

Solução

Eu não sei a resposta, mas aqui estão algumas sugestões para descobrir quais são suas opções:

  1. Instale um filtro de eventos em QCoreApplication :: exemplo () (ou Reimplementar QCoreApplication :: notificar ())
  2. Em manipulador de filtro de eventos, saída cada evento à procura de qualquer coisa útil:

    void eventFilter(QObject *obj, QEvent *evt) {
        qDebug() << obj << evt;
    }
    
  3. Examine a saída de depuração para determinar quais eventos são acionados pelo scanner.

qDebug () entende praticamente todos os tipos e deve dar-lhe a saída razoável que lhe permitirá dizer se o que está vindo em como eventos de teclado ou alguma outra coisa.

Outras dicas

Isso pode ser complicado em que a maioria dos scanners de código de barras também são conhecidos como cunhas de teclado. Eles funcionam como um teclado e teclas de empurrão para o fluxo de eventos, de modo a ser tão indistinguível de um teclado quanto possível. Isso contribui para a maior compatibilidade.

Muitos scanners de código de barras USB publicar-se como um ponto de extremidade HID e, em seguida, para todos os efeitos, eles são teclados.

Há uma série de coisas que você pode tentar fazer - muitos scanners são configuráveis ??para permitir que eles vomitar em um prefixo e sufixo em torno dos dados de código de barras. Se você pode testar para isso, você acabou de enviar a string para o lugar certo. Esta é intragável em que você tem que metaprograma o scanner. Normalmente, isso é feito com um conjunto especial de códigos de barras. Aqui está um link para o manual do seu scanner. Na página 249, há códigos de barras para metaprogramação o prefixo e sufixo.

Você pode querer descobrir como ser um cliente para os eventos HID e redirecionar os eventos de scanner onde quiser. Eu nunca tentei fazer isso no Linux. É uma dor no Windows e OS 9 era Mac (a última vez que joguei com USB extensivamente).

Parece que há um problema com a resposta aceita. A entrada vai ser processado por tudo o que é considerada a aplicação ativa. Assim, se alguém traz um navegador web e, em seguida, começa a digitalizar códigos de barras, a entrada vai para o navegador da web e não a aplicação. O aplicativo desejado não vai mesmo ver os eventos.

Se o aplicativo estiver ativo, você pode interceptar os eventos e, eventualmente, descobrir quais são provenientes do scanner de código de barras. Em seguida, o widget apropriado pode ser ativado para receber a entrada.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top