View
180
Download
0
Category
Preview:
Citation preview
Kernel LinuxInput
Quem sou eu● Marcos Paulo de Souza - Prazer :)
● Bacharel em Ciência da Computação pela FURB
● Engenheiro de Software
● Contribuidor do LibreOffice
● Contribuidor do Kernel Linux
Agenda● O que é o kernel
● Device Drivers
● Classes de drivers
● Input
● HID
● Juntando tudo
● Referências
O que é o kernel● Gerenciador de recursos
● Provê recursos os programas quando requisitado
● Controle de acessos
● A camada abaixo dele “da choque”
Device Drivers● Conhecem o dispositivo em sua intimidade
● 70% do código do kernel são drivers
Classes de drivers● Subdivisões dos drivers
● Servem para descrever o propósito do
driver
● Facilidade em encontrar um device
específico
Classes de drivers
Classes de drivers
InputCamada base para toda interação de “entrada” do kernel:
● Mouse
● Teclado
● Force feedback
● LEDs dos input devices
● Tablets
● Touch screen
InputPara mouse e teclado, input utiliza os protocolos para interagir diretamente com o
device:
● PS/2
● RMI4
● I2C
● AT
● USB
● Bluetooth
● ...
Input -> hidhid == Human Interface Devices
● Utiliza as interfaces do input
● Mapeia entrada/saída para o kernel de devices como um controle
● Exemplos de drivers HID
○ DragonRise controller
○ PS{2,3,4} controller
○ Nintendo Wii/WiiU devices
○ IR controller
Input - evdev● Cada device manipulado pelo input tem eventos relacionados a ele
● Esses eventos podem ser “lidos” por um programa e então efetuar
● Emuladores conseguem pegar eventos de controles e então envia-los para o jogo
Input - uinput - libevdev● Permite manipular o subsistema de input da camada do usuário
● Com ele, é possível criar um “device virtual”, possibilitando enviar eventos para o
Servidor de Tela (X11 ou Wayland)
● Libevdev serve para facilitar o setup do uinput, podendo de forma fácil monitorar
e enviar eventos
Juntando tudoO que conseguimos fazer com isso tudo?
● Ler e emitir eventos
● Emitir force feedback (para controles)
● Criar devices virtuais para utilizar como controles
● Se divertir
Referências● http://lxr.free-electrons.com/source/Documentation/hid/
● http://lxr.free-electrons.com/source/Documentation/input/
● https://www.freedesktop.org/software/systemd/man/libudev.html
● https://www.freedesktop.org/software/libevdev/doc/latest/
● http://thiemonge.org/getting-started-with-uinput
● http://who-t.blogspot.com.br/2016/05/the-difference-between-uinput-and-evdev.html
● https://github.com/marcosps/kernel_experiments/blob/master/userspace/evdev_libudev.c
Dúvidas
Obrigado!Contato:
● Email: marcos.souza.org@gmail
● Twitter: @omarcossouza
● Github: github.com/marcosps
Recommended