mirror of
https://github.com/NixOS/mobile-nixos.git
synced 2024-09-11 12:05:26 +03:00
boot/misc: Add script to generate linux input event codes
This commit is contained in:
parent
0037614821
commit
65d570144f
53
boot/misc/generate_evdev_data.rb
Executable file
53
boot/misc/generate_evdev_data.rb
Executable file
@ -0,0 +1,53 @@
|
|||||||
|
#!/usr/bin/env nix-shell
|
||||||
|
#!nix-shell --packages linuxHeaders ruby -i ruby
|
||||||
|
|
||||||
|
# This script can be used to update the input_event_codes ruby file.
|
||||||
|
# The file is intended to be committed and updated as needed.
|
||||||
|
# At worst, an outdated file will lack *newly introduced* identifiers.
|
||||||
|
# This is not much of an issue when most of the kernels for this
|
||||||
|
# project are of older vintage!
|
||||||
|
# On the same idea, using newer headers is never an issue with "kernel
|
||||||
|
# header files". In this particular instance, at worst you're looking
|
||||||
|
# for an identifier the kernel does not know about, so it will never
|
||||||
|
# return it.
|
||||||
|
|
||||||
|
HEADERS = ENV["buildInputs"].split(/\s+/).grep(/linux-headers/).first
|
||||||
|
INPUT_CODES = File.join(HEADERS, "/include/linux/input-event-codes.h")
|
||||||
|
|
||||||
|
parsed = File.read(INPUT_CODES).lines.grep(/^#define/).map do |line|
|
||||||
|
line.split("/*").first.sub(/^#define/, "").strip.split(/\s+/, 2)
|
||||||
|
end.reject { |pair| pair.first.match(/^_/) }
|
||||||
|
|
||||||
|
mod = <<~EOF
|
||||||
|
# This is generated by `generate_evdev_data.rb`.
|
||||||
|
# If an update is needed, simply run the script.
|
||||||
|
module Linux
|
||||||
|
module InputEventCodes
|
||||||
|
#{
|
||||||
|
parsed.map do |pair|
|
||||||
|
name, value = pair
|
||||||
|
%Q{ #{name} = #{value}}
|
||||||
|
end.join("\n")
|
||||||
|
}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# Verify it works
|
||||||
|
eval mod
|
||||||
|
|
||||||
|
# A bit of additional checks
|
||||||
|
{
|
||||||
|
EV_KEY: 1,
|
||||||
|
KEY_Q: 16,
|
||||||
|
KEY_VOLUMEUP: 115,
|
||||||
|
}.each do |k, v|
|
||||||
|
actual = Linux::InputEventCodes.const_get(k)
|
||||||
|
unless actual == v
|
||||||
|
raise "The module probably is not right. #{k} != #{v} // #{k} = #{actual}"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
path = File.join(__dir__(), "..", "lib/linux/input_event_codes.rb")
|
||||||
|
File.write(path, mod)
|
||||||
|
puts "Wrote '#{path}'."
|
Loading…
Reference in New Issue
Block a user