SlideShare a Scribd company logo
What's inside the input stack?
🐁
Kernel Recipes 2017
About me:
Benjamin Tissoires (irc: bentiss)
• Software engineer at Red Hat
• kernel hid-multitouch maintainer, hid core
co-maintainer
• also gives bad advice for the upper input stack
About the other guy:
Peter Hutterer (irc: whot)
• Software engineer at Red Hat
• libinput maintainer
• Maintainer of the X.Org input stack, and evdev,
synaptics, ... drivers
• (99% of the time, 'we' means him and I)
Isn't it working already?
Kernel Recipes 2017 - What's inside the input stack? - Benjamain Tissoires
Problem is:
hardware makers can be creative
Kernel Recipes 2017 - What's inside the input stack? - Benjamain Tissoires
Kernel Recipes 2017 - What's inside the input stack? - Benjamain Tissoires
And usage is changing
Kernel Recipes 2017 - What's inside the input stack? - Benjamain Tissoires
Outline:
• Introduction
• Input architecture
• Talking about a bunch of devices
• A little bit about security
Everything you never wanted to
know about 'how input works'
Components:
• Kernel
• libinput
• "Wayland" or Xorg
• toolkit
• application
Kernel:
• knows about protocols (HID, RMI4, ...)
• knows about transport layer (USB, PS/2,
SMBus, I2C, etc...)
• talks evdev
Libinput:
• because input is "easy"
• relies on libevdev
• does fancy things like gestures
• has a global view of the input devices
Compositor (or Xorg):
• loads libinput
• pass incoming events to the right client
Toolkits:
• relies on [see previous slides]
• does fancy things like gestures too
Applications:
• do something useful (hopefully)
The good, the bad and the ugly
(of input devices)
Keyboards
Page left blank
Actually no...
the Caps Lock LED in a TTY is
broken since UTF-8 support in
the kernel
Actually no...
the Caps Lock LED in a TTY is
broken since UTF-8 support in
the kernel
pro tip: add /etc/udev/rules.d/99-kbd.rules
ACTION=="add", 
SUBSYSTEM=="leds", 
ENV{DEVPATH}=="*/input*::capslock", 
ATTR{trigger}="kbd-ctrlllock"
Mice
(for the kernel)
Not much to add...
.
(for the kernel)
Not much to add...
except libratbag
libratbag:
A thing to configure gaming mice
• fun project to hack on
• allows for reverse engineering without
the pain of breaking the kernel
• supports many gaming devices:
Logitech, Roccat, G-Skill, Razer (in progress)
Touchpads
Most are still using PS/2
story time: T440
story time: T440
story time: T450
story time: T450
A little bit about security
(with a red background)
CVEs?:
• yes, but only a few
• one notable was regarding the ChromeBook injecting
HID event through a web application
MouseJack
MouseJack:
Congrats, your mouse is IoT ready!
http://www.mousejack.com/
.
MouseJack:
Congrats, your mouse is IoT ready!
http://www.mousejack.com/
You have to update it
Summary:
• Input architecture
• some devices still need some care
• security is also involved
Credits
• PS/2 keyboard: CC BY Matthijs Kooijman
• G600 Gaming Mouse: all rights reserved, Logitech
• Lenovo X1 Carbon: CC BY-SA 2.0 Stannate
• Lenovo Yoga Tablet 3 Pro: all rights reserved, Lenovo
Thanks!
benjamin.tissoires@(gmail|redhat).com
IRC: bentiss @freenode @gimpnet
Summary:
• Input architecture
• some devices still need some care
• security is also involved

More Related Content

PDF
Kernel Recipes 2017 - The Serial Device Bus - Johan Hovold
PDF
Kernel Recipes 2017 - HDMI CEC: Status Report - Hans Verkuil
PDF
Kernel Recipes 2017 - An introduction to the Linux DRM subsystem - Maxime Ripard
PPTX
Alessandro Abbruzzetti - Kernal64
PDF
Kernel Recipes 2013 - Overview display in the Linux kernel
PDF
ELC-E 2019 Device tree, past, present, future
PDF
Elc Europe 2020 : u-boot- porting and maintaining a bootloader for a multimed...
PPTX
Audible Objects
Kernel Recipes 2017 - The Serial Device Bus - Johan Hovold
Kernel Recipes 2017 - HDMI CEC: Status Report - Hans Verkuil
Kernel Recipes 2017 - An introduction to the Linux DRM subsystem - Maxime Ripard
Alessandro Abbruzzetti - Kernal64
Kernel Recipes 2013 - Overview display in the Linux kernel
ELC-E 2019 Device tree, past, present, future
Elc Europe 2020 : u-boot- porting and maintaining a bootloader for a multimed...
Audible Objects

What's hot (20)

PDF
Linux Conference Australia 2018 : Device Tree, past, present, future
PDF
ELC North America 2021 Introduction to pin muxing and gpio control under linux
PDF
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
PDF
Interacting with Intel Edison
PDF
Claudio Scordino - Handling mixed criticality on embedded multi-core systems
PDF
Lee 2020 what the clock !
PPTX
Getting started with Intel IoT Developer Kit
PDF
Kernel Recipes 2013 - Conditional boot
PPTX
Redteaming HID attacks
PDF
LAS16-100K1: Welcome Keynote
PDF
Tools for FPGA Development
PDF
Using SoC Vendor HALs in the Zephyr Project - SFO17-112
PDF
Jagan Teki - U-boot from scratch
PDF
BUD17-400: Secure Data Path with OPTEE
PPTX
Allwinner Kernel Upstreaming Experiences
PDF
Deploy STM32 family on Zephyr - SFO17-102
PPTX
Upstream Allwinner ARM SoC (sunxi) Support
PDF
ELC-E 2016 Neil Armstrong - No, it's never too late to upstream your legacy l...
PDF
Build your own embedded linux distributions by yocto project
PDF
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
Linux Conference Australia 2018 : Device Tree, past, present, future
ELC North America 2021 Introduction to pin muxing and gpio control under linux
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Interacting with Intel Edison
Claudio Scordino - Handling mixed criticality on embedded multi-core systems
Lee 2020 what the clock !
Getting started with Intel IoT Developer Kit
Kernel Recipes 2013 - Conditional boot
Redteaming HID attacks
LAS16-100K1: Welcome Keynote
Tools for FPGA Development
Using SoC Vendor HALs in the Zephyr Project - SFO17-112
Jagan Teki - U-boot from scratch
BUD17-400: Secure Data Path with OPTEE
Allwinner Kernel Upstreaming Experiences
Deploy STM32 family on Zephyr - SFO17-102
Upstream Allwinner ARM SoC (sunxi) Support
ELC-E 2016 Neil Armstrong - No, it's never too late to upstream your legacy l...
Build your own embedded linux distributions by yocto project
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
Ad

Similar to Kernel Recipes 2017 - What's inside the input stack? - Benjamain Tissoires (20)

PDF
Hardware hacking
PDF
Micro-controllers (PIC) based Application Development
PDF
PDF
FRDM-KL46Z_Hands-On_Presentation_v02
PPTX
Basin Input output Software explained
PDF
computer archtecture lab, computer hardware , problem and solutons in computer
ODP
Embedded controls
PDF
Raspberry Pi IoT In C 2nd Edition Harry Fairhead
PDF
Intro to the raspberry pi board
PDF
Getting Started With Raspberry Pi - UCSD 2013
PPT
16 supporting io devices
PPT
Hackintosh BarcampKL
PDF
Dv5 amd
PDF
Identifying and Supporting 'X-compatible' Hardware Blocks
PPT
Ch3 input devices.
PDF
BadUSB, and what you should do about it
DOCX
Computer Hardware and Networking Tutorial for beginners
PDF
Arduino - Learning.pdf
PPTX
Embedded Systems Overview
PPTX
Motherboard
Hardware hacking
Micro-controllers (PIC) based Application Development
FRDM-KL46Z_Hands-On_Presentation_v02
Basin Input output Software explained
computer archtecture lab, computer hardware , problem and solutons in computer
Embedded controls
Raspberry Pi IoT In C 2nd Edition Harry Fairhead
Intro to the raspberry pi board
Getting Started With Raspberry Pi - UCSD 2013
16 supporting io devices
Hackintosh BarcampKL
Dv5 amd
Identifying and Supporting 'X-compatible' Hardware Blocks
Ch3 input devices.
BadUSB, and what you should do about it
Computer Hardware and Networking Tutorial for beginners
Arduino - Learning.pdf
Embedded Systems Overview
Motherboard
Ad

More from Anne Nicolas (20)

PDF
Kernel Recipes 2019 - Driving the industry toward upstream first
PDF
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
PDF
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
PDF
Kernel Recipes 2019 - Metrics are money
PDF
Kernel Recipes 2019 - Kernel documentation: past, present, and future
PDF
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
PDF
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
PDF
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
PDF
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
PDF
Embedded Recipes 2019 - Making embedded graphics less special
PDF
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
PDF
Embedded Recipes 2019 - Testing firmware the devops way
PDF
Embedded Recipes 2019 - Herd your socs become a matchmaker
PDF
Embedded Recipes 2019 - LLVM / Clang integration
PDF
Embedded Recipes 2019 - Introduction to JTAG debugging
PDF
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all started
PDF
Kernel Recipes 2019 - Suricata and XDP
PDF
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
PDF
Kernel Recipes 2019 - Formal modeling made easy
PDF
Kernel Recipes 2019 - CVEs are dead, long live the CVE!
Kernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
Kernel Recipes 2019 - Metrics are money
Kernel Recipes 2019 - Kernel documentation: past, present, and future
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
Embedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
Embedded Recipes 2019 - Testing firmware the devops way
Embedded Recipes 2019 - Herd your socs become a matchmaker
Embedded Recipes 2019 - LLVM / Clang integration
Embedded Recipes 2019 - Introduction to JTAG debugging
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all started
Kernel Recipes 2019 - Suricata and XDP
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
Kernel Recipes 2019 - Formal modeling made easy
Kernel Recipes 2019 - CVEs are dead, long live the CVE!

Recently uploaded (20)

PDF
Heart disease approach using modified random forest and particle swarm optimi...
PDF
gpt5_lecture_notes_comprehensive_20250812015547.pdf
PDF
Web App vs Mobile App What Should You Build First.pdf
PDF
Mushroom cultivation and it's methods.pdf
PDF
From MVP to Full-Scale Product A Startup’s Software Journey.pdf
PPTX
Group 1 Presentation -Planning and Decision Making .pptx
PPTX
A Presentation on Artificial Intelligence
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PPTX
Tartificialntelligence_presentation.pptx
PDF
Hybrid model detection and classification of lung cancer
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
Hindi spoken digit analysis for native and non-native speakers
PDF
Univ-Connecticut-ChatGPT-Presentaion.pdf
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
NewMind AI Weekly Chronicles - August'25-Week II
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Transform Your ITIL® 4 & ITSM Strategy with AI in 2025.pdf
PDF
project resource management chapter-09.pdf
PPTX
A Presentation on Touch Screen Technology
Heart disease approach using modified random forest and particle swarm optimi...
gpt5_lecture_notes_comprehensive_20250812015547.pdf
Web App vs Mobile App What Should You Build First.pdf
Mushroom cultivation and it's methods.pdf
From MVP to Full-Scale Product A Startup’s Software Journey.pdf
Group 1 Presentation -Planning and Decision Making .pptx
A Presentation on Artificial Intelligence
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Tartificialntelligence_presentation.pptx
Hybrid model detection and classification of lung cancer
MIND Revenue Release Quarter 2 2025 Press Release
Hindi spoken digit analysis for native and non-native speakers
Univ-Connecticut-ChatGPT-Presentaion.pdf
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
NewMind AI Weekly Chronicles - August'25-Week II
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Encapsulation_ Review paper, used for researhc scholars
Transform Your ITIL® 4 & ITSM Strategy with AI in 2025.pdf
project resource management chapter-09.pdf
A Presentation on Touch Screen Technology

Kernel Recipes 2017 - What's inside the input stack? - Benjamain Tissoires