C “在哪里?”;来自name.h的键盘键;Linux systemd的udev使用过吗?

C “在哪里?”;来自name.h的键盘键;Linux systemd的udev使用过吗?,c,linux,keyboard,systemd,udev,C,Linux,Keyboard,Systemd,Udev,name.h中的键盘键由udev builtin keyboard.c引用,它是Linux systemd的udev源代码的一部分。它出现在udev builtin keyboard.c中的#include指令中 #include "keyboard-keys-from-name.h" 但是,name.h中的键盘键不附带systemd的焦油球。例如,以下链接中的tar球不包含name.h中的键盘键: name.h中的键盘键在哪里 注意,我排除了udev或systemd的非官方位置。 例如,L

name.h中的键盘键由
udev builtin keyboard.c
引用,它是Linux systemd的udev源代码的一部分。它出现在
udev builtin keyboard.c
中的
#include
指令中

#include "keyboard-keys-from-name.h"
但是,name.h中的
键盘键不附带systemd的焦油球。例如,以下链接中的tar球不包含name.h中的
键盘键:

name.h中的
键盘键在哪里

注意,我排除了udev或systemd的非官方位置。 例如,LFS团队在其udev LFS的LFS版本的name.h中提供了自己的
键盘键副本

"". 我从答案中排除此LFS版本。

它是在systemd源代码树中生成的。见:

src/udev/keyboard-keys-list.txt:
元(AM_V_at)元(MKDIR P)元(dir$@)
$(AM_V_GEN)$(CPP)$(CFLAGS)$(AM_CPPFLAGS)$(CPPFLAGS)$(CPPFLAGS)-dM-包括linux/input.h-$@
src/udev/keyboard-keys-from-name.gperf:src/udev/keyboard-keys-list.txt
$(AM_V_GEN)$(AWK)'BEGIN{print”结构键{const char*name;unsigned short id;};'print“%null strings”;print“%%”;}{print tolower(substr($$1,5)),“$$1}”<$>$@
src/udev/keyboard-keys-from-name.h:src/udev/keyboard-keys-from-name.gperf
$(AM_V_GPERF)$(GPERF)-L ANSI-C-t-N键盘\u查找\u键-H哈希\u键\u名称-p-C<$<>$@
这意味着
来自name的键盘键.h
是从
来自name.gperf的键盘键生成的,
来自name的键盘键.gperf
是从
键盘键列表.txt
生成的,
键盘键列表.txt
是从系统的
linux/input.h
(很可能是
/usr/include/linux/input.h
,其中包括
/usr/include/linux/input事件代码.h
,这一代产品系列正在寻找的
#define KEY.*
是。)

src/udev/keyboard-keys-list.txt:
        $(AM_V_at)$(MKDIR_P) $(dir $@)
        $(AM_V_GEN)$(CPP) $(CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) -dM -include linux/input.h - < /dev/null | $(AWK) '/^#define[ \t]+KEY_[^ ]+[ \t]+[0-9K]/ { if ($$2 != "KEY_MAX") { print $$2 } }' > $@

src/udev/keyboard-keys-from-name.gperf: src/udev/keyboard-keys-list.txt
        $(AM_V_GEN)$(AWK) 'BEGIN{ print "struct key { const char* name; unsigned short id; };"; print "%null-strings"; print "%%";} { print tolower(substr($$1 ,5)) ", " $$1 }' < $< > $@

src/udev/keyboard-keys-from-name.h: src/udev/keyboard-keys-from-name.gperf
        $(AM_V_GPERF)$(GPERF) -L ANSI-C -t -N keyboard_lookup_key -H hash_key_name -p -C < $< > $@