linux kernel input: mouse, teclado, joystick

17
Kernel Linux Input

Upload: marcos-paulo-de-souza

Post on 12-Apr-2017

181 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Linux Kernel Input: mouse, teclado, joystick

Kernel LinuxInput

Page 2: Linux Kernel Input: mouse, teclado, joystick

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

Page 3: Linux Kernel Input: mouse, teclado, joystick

Agenda● O que é o kernel

● Device Drivers

● Classes de drivers

● Input

● HID

● Juntando tudo

● Referências

Page 4: Linux Kernel Input: mouse, teclado, joystick

O que é o kernel● Gerenciador de recursos

● Provê recursos os programas quando requisitado

● Controle de acessos

● A camada abaixo dele “da choque”

Page 5: Linux Kernel Input: mouse, teclado, joystick

Device Drivers● Conhecem o dispositivo em sua intimidade

● 70% do código do kernel são drivers

Page 6: Linux Kernel Input: mouse, teclado, joystick

Classes de drivers● Subdivisões dos drivers

● Servem para descrever o propósito do

driver

● Facilidade em encontrar um device

específico

Page 7: Linux Kernel Input: mouse, teclado, joystick

Classes de drivers

Page 8: Linux Kernel Input: mouse, teclado, joystick

Classes de drivers

Page 9: Linux Kernel Input: mouse, teclado, joystick

InputCamada base para toda interação de “entrada” do kernel:

● Mouse

● Teclado

● Force feedback

● LEDs dos input devices

● Tablets

● Touch screen

Page 10: Linux Kernel Input: mouse, teclado, joystick

InputPara mouse e teclado, input utiliza os protocolos para interagir diretamente com o

device:

● PS/2

● RMI4

● I2C

● AT

● USB

● Bluetooth

● ...

Page 11: Linux Kernel Input: mouse, teclado, joystick

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

Page 12: Linux Kernel Input: mouse, teclado, joystick

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

Page 13: Linux Kernel Input: mouse, teclado, joystick

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

Page 14: Linux Kernel Input: mouse, teclado, joystick

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

Page 16: Linux Kernel Input: mouse, teclado, joystick

Dúvidas

Page 17: Linux Kernel Input: mouse, teclado, joystick

Obrigado!Contato:

● Email: marcos.souza.org@gmail

● Twitter: @omarcossouza

● Github: github.com/marcosps