mirror of
https://gitlab.freedesktop.org/xorg/proto/xorgproto.git
synced 2025-12-20 04:40:10 +01:00
keysyms: Add aliases for media keys
Part-of: <https://gitlab.freedesktop.org/xorg/proto/xorgproto/-/merge_requests/93>
This commit is contained in:
parent
d466a25c87
commit
7fc33fe6d9
2 changed files with 27 additions and 14 deletions
|
|
@ -108,6 +108,7 @@
|
||||||
#define XF86XK_ApplicationRight 0x1008ff51 /* switch to application, right*/
|
#define XF86XK_ApplicationRight 0x1008ff51 /* switch to application, right*/
|
||||||
#define XF86XK_Book 0x1008ff52 /* Launch bookreader */
|
#define XF86XK_Book 0x1008ff52 /* Launch bookreader */
|
||||||
#define XF86XK_CD 0x1008ff53 /* Launch CD/DVD player */
|
#define XF86XK_CD 0x1008ff53 /* Launch CD/DVD player */
|
||||||
|
#define XF86XK_MediaSelectCD 0x1008ff53 /* Alias for XF86XK_CD */
|
||||||
#define XF86XK_Calculater 0x1008ff54 /* Launch Calculater */
|
#define XF86XK_Calculater 0x1008ff54 /* Launch Calculater */
|
||||||
#define XF86XK_Clear 0x1008ff55 /* Clear window, screen */
|
#define XF86XK_Clear 0x1008ff55 /* Clear window, screen */
|
||||||
#define XF86XK_Close 0x1008ff56 /* Close window */
|
#define XF86XK_Close 0x1008ff56 /* Close window */
|
||||||
|
|
@ -275,6 +276,8 @@
|
||||||
* The format for #defines is strict:
|
* The format for #defines is strict:
|
||||||
*
|
*
|
||||||
* #define XF86XK_Foo<spaces…>_EVDEVK(0xABC)<spaces…> |* kver KEY_FOO *|
|
* #define XF86XK_Foo<spaces…>_EVDEVK(0xABC)<spaces…> |* kver KEY_FOO *|
|
||||||
|
* #define XF86XK_Foo<spaces…>_EVDEVK(0xABC)<spaces…> |* Alias for XF86XK_Bar *|
|
||||||
|
* #define XF86XK_Foo<spaces…>_EVDEVK(0xABC)<spaces…> |* Deprecated alias for XF86XK_Bar *|
|
||||||
*
|
*
|
||||||
* Where
|
* Where
|
||||||
* - alignment by spaces
|
* - alignment by spaces
|
||||||
|
|
@ -348,13 +351,14 @@
|
||||||
#define XF86XK_MediaSelectVCRPlus _EVDEVK(0x17c) /* v2.5.26 KEY_VCR2 */
|
#define XF86XK_MediaSelectVCRPlus _EVDEVK(0x17c) /* v2.5.26 KEY_VCR2 */
|
||||||
#define XF86XK_MediaSelectSatellite _EVDEVK(0x17d) /* v2.5.26 KEY_SAT */
|
#define XF86XK_MediaSelectSatellite _EVDEVK(0x17d) /* v2.5.26 KEY_SAT */
|
||||||
/* TODO: unclear media selector _EVDEVK(0x17e) v2.5.26 KEY_SAT2 */
|
/* TODO: unclear media selector _EVDEVK(0x17e) v2.5.26 KEY_SAT2 */
|
||||||
/* Use: XF86XK_CD _EVDEVK(0x17f) v2.5.26 KEY_CD */
|
/* Use: XF86XK_MediaSelectCD _EVDEVK(0x17f) v2.5.26 KEY_CD */
|
||||||
#define XF86XK_MediaSelectTape _EVDEVK(0x180) /* v2.5.26 KEY_TAPE */
|
#define XF86XK_MediaSelectTape _EVDEVK(0x180) /* v2.5.26 KEY_TAPE */
|
||||||
#define XF86XK_MediaSelectRadio _EVDEVK(0x181) /* v2.5.26 KEY_RADIO */
|
#define XF86XK_MediaSelectRadio _EVDEVK(0x181) /* v2.5.26 KEY_RADIO */
|
||||||
#define XF86XK_MediaSelectTuner _EVDEVK(0x182) /* v2.5.26 KEY_TUNER */
|
#define XF86XK_MediaSelectTuner _EVDEVK(0x182) /* v2.5.26 KEY_TUNER */
|
||||||
#define XF86XK_MediaPlayer _EVDEVK(0x183) /* v2.5.26 KEY_PLAYER */
|
#define XF86XK_MediaPlayer _EVDEVK(0x183) /* v2.5.26 KEY_PLAYER */
|
||||||
#define XF86XK_MediaSelectTeletext _EVDEVK(0x184) /* v2.5.26 KEY_TEXT */
|
#define XF86XK_MediaSelectTeletext _EVDEVK(0x184) /* v2.5.26 KEY_TEXT */
|
||||||
#define XF86XK_DVD _EVDEVK(0x185) /* v2.5.26 KEY_DVD */
|
#define XF86XK_DVD _EVDEVK(0x185) /* v2.5.26 KEY_DVD */
|
||||||
|
#define XF86XK_MediaSelectDVD _EVDEVK(0x185) /* Alias for XF86XK_DVD */
|
||||||
#define XF86XK_MediaSelectAuxilliary _EVDEVK(0x186) /* v2.5.26 KEY_AUX */
|
#define XF86XK_MediaSelectAuxilliary _EVDEVK(0x186) /* v2.5.26 KEY_AUX */
|
||||||
/* TODO: unclear media selector _EVDEVK(0x187) v2.5.26 KEY_MP3 */
|
/* TODO: unclear media selector _EVDEVK(0x187) v2.5.26 KEY_MP3 */
|
||||||
#define XF86XK_Audio _EVDEVK(0x188) /* v2.5.26 KEY_AUDIO */
|
#define XF86XK_Audio _EVDEVK(0x188) /* v2.5.26 KEY_AUDIO */
|
||||||
|
|
|
||||||
|
|
@ -191,11 +191,14 @@ def verify(ns):
|
||||||
|
|
||||||
# This is the full pattern we expect.
|
# This is the full pattern we expect.
|
||||||
expected_pattern = re.compile(
|
expected_pattern = re.compile(
|
||||||
r"#define XF86XK_\w+ +_EVDEVK\(0x([0-9A-Fa-f]{3})\) +/\* (v[2-6]\.[0-9]+(\.[0-9]+)?)? +KEY_\w+ \*/"
|
r"#define XF86XK_\w+ +_EVDEVK\(0x([0-9A-Fa-f]{3})\) +"
|
||||||
|
r"/\* (?:(?P<kernel_version>v[2-6]\.[0-9]+(\.[0-9]+)?)? +KEY_\w+|"
|
||||||
|
r"(?P<alias>Alias for XF86XK_\w+)) \*/"
|
||||||
)
|
)
|
||||||
# This is the comment pattern we expect
|
# This is the comment pattern we expect
|
||||||
expected_comment_pattern = re.compile(
|
expected_comment_pattern = re.compile(
|
||||||
r"/\* Use: (?P<name>\w+) +_EVDEVK\(0x(?P<value>[0-9A-Fa-f]{3})\) + (v[2-6]\.[0-9]+(\.[0-9]+)?)? +KEY_\w+ \*/"
|
r"/\* Use: (?P<name>\w+) +_EVDEVK\(0x(?P<value>[0-9A-Fa-f]{3})\) + "
|
||||||
|
r"(v[2-6]\.[0-9]+(\.[0-9]+)?)? +KEY_\w+ \*/"
|
||||||
)
|
)
|
||||||
|
|
||||||
# Some patterns to spot specific errors, just so we can print useful errors
|
# Some patterns to spot specific errors, just so we can print useful errors
|
||||||
|
|
@ -204,8 +207,11 @@ def verify(ns):
|
||||||
space_check = re.compile(r"#define \w+(\s+)[^\s]+(\s+)")
|
space_check = re.compile(r"#define \w+(\s+)[^\s]+(\s+)")
|
||||||
hex_pattern = re.compile(r".*0x([a-f0-9]+).*", re.I)
|
hex_pattern = re.compile(r".*0x([a-f0-9]+).*", re.I)
|
||||||
todo_pattern = re.compile(r"^/\* TODO.*\*/$")
|
todo_pattern = re.compile(r"^/\* TODO.*\*/$")
|
||||||
comment_format = re.compile(r".*/\* ([^\s]+)?\s+(\w+)")
|
comment_format = re.compile(
|
||||||
|
r".*/\* (?:(?:Deprecated a|A)lias for (\w+)|([^\s]+)?\s+(\w+))"
|
||||||
|
)
|
||||||
kver_format = re.compile(r"v[2-6]\.[0-9]+(\.[0-9]+)?")
|
kver_format = re.compile(r"v[2-6]\.[0-9]+(\.[0-9]+)?")
|
||||||
|
alias_format = re.compile(r"(?:Deprecated a|A)lias for XF86XK_\w+")
|
||||||
|
|
||||||
in_evdev_codes_section = False
|
in_evdev_codes_section = False
|
||||||
had_evdev_codes_section = False
|
had_evdev_codes_section = False
|
||||||
|
|
@ -292,17 +298,20 @@ def verify(ns):
|
||||||
comment = re.match(comment_format, line)
|
comment = re.match(comment_format, line)
|
||||||
if not comment:
|
if not comment:
|
||||||
error("Invalid comment format", line)
|
error("Invalid comment format", line)
|
||||||
kver = comment.group(1)
|
if alias_target := comment.group(1):
|
||||||
if kver and not re.match(kver_format, kver):
|
alias = True
|
||||||
error("Invalid kernel version format", line)
|
else:
|
||||||
|
alias = False
|
||||||
|
if (kver := comment.group(2)) and not re.match(kver_format, kver):
|
||||||
|
error("Invalid kernel version format", line)
|
||||||
|
|
||||||
keyname = comment.group(2)
|
keyname = comment.group(3)
|
||||||
if not keyname.startswith("KEY_") or keyname.upper() != keyname:
|
if not keyname.startswith("KEY_") or keyname.upper() != keyname:
|
||||||
error("Kernel keycode name invalid", line)
|
error("Kernel keycode name invalid", line)
|
||||||
|
|
||||||
# This could be an old libevdev
|
# This could be an old libevdev
|
||||||
if keyname not in [c.name for c in libevdev.EV_KEY.codes]:
|
if keyname not in [c.name for c in libevdev.EV_KEY.codes]:
|
||||||
logger.warning(f"Unknown kernel keycode name {keyname}")
|
logger.warning(f"Unknown kernel keycode name {keyname}")
|
||||||
|
|
||||||
# Check the full expected format, no better error messages
|
# Check the full expected format, no better error messages
|
||||||
# available if this fails
|
# available if this fails
|
||||||
|
|
@ -313,7 +322,7 @@ def verify(ns):
|
||||||
keycode = int(match.group(1), 16)
|
keycode = int(match.group(1), 16)
|
||||||
if keycode < last_keycode:
|
if keycode < last_keycode:
|
||||||
error("Keycode must be ascending", line)
|
error("Keycode must be ascending", line)
|
||||||
if keycode == last_keycode:
|
if keycode == last_keycode and not alias:
|
||||||
error("Duplicate keycode", line)
|
error("Duplicate keycode", line)
|
||||||
|
|
||||||
# May cause a false positive for old libevdev if KEY_MAX is bumped
|
# May cause a false positive for old libevdev if KEY_MAX is bumped
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue