Hello,

in xorgproto project in include/X11/XF86keysym.h file there are some
keys for which no _EVDEVK(...) line exists. E.g. for the subtitle key
there is only this line:

#define XF86XK_Subtitle              0x1008ff9a  /* cycle through subtitle      
*/

But there is no line like this:

#define XF86XK_Subtitle                 _EVDEVK(0x172)  /*         KEY_SUBTITLE 
*/

My understanding is that the XF86keysym.h file is used to generate the
"evdev" section in
https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config/-/blob/master/symbols/inet
; but only lines with an _EVDEVK() entry are regarded by the generator.

I want to use XKB to map some keys from infrared remote controls, to
improve out-of-the-box support for remote controls in Kodi media center
(for https://github.com/xbmc/xbmc/issues/16834). Since these keys are
not listed in the symbols/inet file, XKB cannot map them, and therefore
Kodi cannot handle them.

I have now run scripts/keysym-generator.py without a --kernel-versions
parameter, to generate an XF86keysym.h file that contains _EVDEVK()
entries for _all_ keys, regardless of the kernel version. The script was
run on a system with libevdev 1.12.1+dfsg-1 and python-libevdev 0.11.
The diff to
https://gitlab.freedesktop.org/xorg/proto/xorgproto/-/blob/e312ab76c4d93f2e637ac0c73987b22cd43420c7/include/X11/XF86keysym.h
is attached.

In the diff I see that additional _EVDEVK() lines were generated for 132
keys.

Would it be possible and sensible to add _EVDEVK() lines for all of
these keys, so that XF86keysym.h supports all evdev keys?

Alternatively, would it be possible to add _EVDEVK() lines for keys that
are related to media controls? The table at
https://www.kernel.org/doc/html/v6.11/userspace-api/media/rc/rc-tables.html
shows which keys would be interesting.

Should I just submit a merge request for one of these approaches?

Thanks,
Oliver Gerlich
--- include/X11/XF86keysym.h	2024-12-09 21:02:07.297023228 +0100
+++ include/X11/XF86keysym.h.new1	2024-12-09 21:09:20.526311394 +0100
@@ -272,10 +272,66 @@
  */
 #define _EVDEVK(_v) (0x10081000 + _v)
 /* Use: XF86XK_Eject                    _EVDEVK(0x0a2)             KEY_EJECTCLOSECD */
+#define XF86XK_Nextsong                 _EVDEVK(0x0a3)  /*         KEY_NEXTSONG */
+#define XF86XK_Playpause                _EVDEVK(0x0a4)  /*         KEY_PLAYPAUSE */
+#define XF86XK_Previoussong             _EVDEVK(0x0a5)  /*         KEY_PREVIOUSSONG */
+#define XF86XK_Stopcd                   _EVDEVK(0x0a6)  /*         KEY_STOPCD */
+#define XF86XK_Record                   _EVDEVK(0x0a7)  /*         KEY_RECORD */
+#define XF86XK_Rewind                   _EVDEVK(0x0a8)  /*         KEY_REWIND */
+#define XF86XK_Phone                    _EVDEVK(0x0a9)  /*         KEY_PHONE */
+#define XF86XK_Iso                      _EVDEVK(0x0aa)  /*         KEY_ISO */
+#define XF86XK_Config                   _EVDEVK(0x0ab)  /*         KEY_CONFIG */
+#define XF86XK_Homepage                 _EVDEVK(0x0ac)  /*         KEY_HOMEPAGE */
+#define XF86XK_Refresh                  _EVDEVK(0x0ad)  /*         KEY_REFRESH */
+#define XF86XK_Exit                     _EVDEVK(0x0ae)  /*         KEY_EXIT */
+#define XF86XK_Move                     _EVDEVK(0x0af)  /*         KEY_MOVE */
+#define XF86XK_Edit                     _EVDEVK(0x0b0)  /*         KEY_EDIT */
+#define XF86XK_Scrollup                 _EVDEVK(0x0b1)  /*         KEY_SCROLLUP */
+#define XF86XK_Scrolldown               _EVDEVK(0x0b2)  /*         KEY_SCROLLDOWN */
+#define XF86XK_Kpleftparen              _EVDEVK(0x0b3)  /*         KEY_KPLEFTPAREN */
+#define XF86XK_Kprightparen             _EVDEVK(0x0b4)  /*         KEY_KPRIGHTPAREN */
 /* Use: XF86XK_New                      _EVDEVK(0x0b5)     v2.6.14 KEY_NEW */
 /* Use: XK_Redo                         _EVDEVK(0x0b6)     v2.6.14 KEY_REDO */
 /* KEY_DASHBOARD has been mapped to LaunchB in xkeyboard-config since 2011 */
+#define XF86XK_F13                      _EVDEVK(0x0b7)  /*         KEY_F13 */
+#define XF86XK_F14                      _EVDEVK(0x0b8)  /*         KEY_F14 */
+#define XF86XK_F15                      _EVDEVK(0x0b9)  /*         KEY_F15 */
+#define XF86XK_F16                      _EVDEVK(0x0ba)  /*         KEY_F16 */
+#define XF86XK_F17                      _EVDEVK(0x0bb)  /*         KEY_F17 */
+#define XF86XK_F18                      _EVDEVK(0x0bc)  /*         KEY_F18 */
+#define XF86XK_F19                      _EVDEVK(0x0bd)  /*         KEY_F19 */
+#define XF86XK_F20                      _EVDEVK(0x0be)  /*         KEY_F20 */
+#define XF86XK_F21                      _EVDEVK(0x0bf)  /*         KEY_F21 */
+#define XF86XK_F22                      _EVDEVK(0x0c0)  /*         KEY_F22 */
+#define XF86XK_F23                      _EVDEVK(0x0c1)  /*         KEY_F23 */
+#define XF86XK_F24                      _EVDEVK(0x0c2)  /*         KEY_F24 */
+#define XF86XK_Playcd                   _EVDEVK(0x0c8)  /*         KEY_PLAYCD */
+#define XF86XK_Pausecd                  _EVDEVK(0x0c9)  /*         KEY_PAUSECD */
+#define XF86XK_Prog3                    _EVDEVK(0x0ca)  /*         KEY_PROG3 */
+#define XF86XK_Prog4                    _EVDEVK(0x0cb)  /*         KEY_PROG4 */
 /* Use: XF86XK_LaunchB                  _EVDEVK(0x0cc)     v2.6.28 KEY_DASHBOARD */
+#define XF86XK_Suspend                  _EVDEVK(0x0cd)  /*         KEY_SUSPEND */
+#define XF86XK_Close                    _EVDEVK(0x0ce)  /*         KEY_CLOSE */
+#define XF86XK_Play                     _EVDEVK(0x0cf)  /*         KEY_PLAY */
+#define XF86XK_Fastforward              _EVDEVK(0x0d0)  /*         KEY_FASTFORWARD */
+#define XF86XK_Bassboost                _EVDEVK(0x0d1)  /*         KEY_BASSBOOST */
+#define XF86XK_Print                    _EVDEVK(0x0d2)  /*         KEY_PRINT */
+#define XF86XK_Hp                       _EVDEVK(0x0d3)  /*         KEY_HP */
+#define XF86XK_Camera                   _EVDEVK(0x0d4)  /*         KEY_CAMERA */
+#define XF86XK_Sound                    _EVDEVK(0x0d5)  /*         KEY_SOUND */
+#define XF86XK_Question                 _EVDEVK(0x0d6)  /*         KEY_QUESTION */
+#define XF86XK_Email                    _EVDEVK(0x0d7)  /*         KEY_EMAIL */
+#define XF86XK_Chat                     _EVDEVK(0x0d8)  /*         KEY_CHAT */
+#define XF86XK_Search                   _EVDEVK(0x0d9)  /*         KEY_SEARCH */
+#define XF86XK_Connect                  _EVDEVK(0x0da)  /*         KEY_CONNECT */
+#define XF86XK_Finance                  _EVDEVK(0x0db)  /*         KEY_FINANCE */
+#define XF86XK_Sport                    _EVDEVK(0x0dc)  /*         KEY_SPORT */
+#define XF86XK_Shop                     _EVDEVK(0x0dd)  /*         KEY_SHOP */
+#define XF86XK_Alterase                 _EVDEVK(0x0de)  /*         KEY_ALTERASE */
+#define XF86XK_Cancel                   _EVDEVK(0x0df)  /*         KEY_CANCEL */
+#define XF86XK_Brightnessdown           _EVDEVK(0x0e0)  /*         KEY_BRIGHTNESSDOWN */
+#define XF86XK_Brightnessup             _EVDEVK(0x0e1)  /*         KEY_BRIGHTNESSUP */
+#define XF86XK_Media                    _EVDEVK(0x0e2)  /*         KEY_MEDIA */
 /* Use: XF86XK_Display                  _EVDEVK(0x0e3)     v2.6.12 KEY_SWITCHVIDEOMODE */
 /* Use: XF86XK_KbdLightOnOff            _EVDEVK(0x0e4)     v2.6.12 KEY_KBDILLUMTOGGLE */
 /* Use: XF86XK_KbdBrightnessDown        _EVDEVK(0x0e5)     v2.6.12 KEY_KBDILLUMDOWN */
@@ -289,6 +345,7 @@
 /* Use: XF86XK_Bluetooth                _EVDEVK(0x0ed)     v2.6.19 KEY_BLUETOOTH */
 /* Use: XF86XK_WLAN                     _EVDEVK(0x0ee)     v2.6.19 KEY_WLAN */
 /* Use: XF86XK_UWB                      _EVDEVK(0x0ef)     v2.6.24 KEY_UWB */
+#define XF86XK_Unknown                  _EVDEVK(0x0f0)  /*         KEY_UNKNOWN */
 /* Use: XF86XK_Next_VMode               _EVDEVK(0x0f1)     v2.6.23 KEY_VIDEO_NEXT */
 /* Use: XF86XK_Prev_VMode               _EVDEVK(0x0f2)     v2.6.23 KEY_VIDEO_PREV */
 /* Use: XF86XK_MonBrightnessCycle       _EVDEVK(0x0f3)     v2.6.23 KEY_BRIGHTNESS_CYCLE */
@@ -297,18 +354,70 @@
 /* Use: XF86XK_WWAN                     _EVDEVK(0x0f6)     v3.13   KEY_WWAN */
 /* Use: XF86XK_RFKill                   _EVDEVK(0x0f7)     v2.6.33 KEY_RFKILL */
 /* Use: XF86XK_AudioMicMute             _EVDEVK(0x0f8)     v3.1    KEY_MICMUTE */
+#define XF86XK_Ok                       _EVDEVK(0x160)  /*         KEY_OK */
+#define XF86XK_Select                   _EVDEVK(0x161)  /*         KEY_SELECT */
+#define XF86XK_Goto                     _EVDEVK(0x162)  /*         KEY_GOTO */
+#define XF86XK_Clear                    _EVDEVK(0x163)  /*         KEY_CLEAR */
+#define XF86XK_Power2                   _EVDEVK(0x164)  /*         KEY_POWER2 */
+#define XF86XK_Option                   _EVDEVK(0x165)  /*         KEY_OPTION */
 #define XF86XK_Info                     _EVDEVK(0x166)  /*         KEY_INFO */
+#define XF86XK_Time                     _EVDEVK(0x167)  /*         KEY_TIME */
+#define XF86XK_Vendor                   _EVDEVK(0x168)  /*         KEY_VENDOR */
+#define XF86XK_Archive                  _EVDEVK(0x169)  /*         KEY_ARCHIVE */
+#define XF86XK_Program                  _EVDEVK(0x16a)  /*         KEY_PROGRAM */
+#define XF86XK_Channel                  _EVDEVK(0x16b)  /*         KEY_CHANNEL */
+#define XF86XK_Favorites                _EVDEVK(0x16c)  /*         KEY_FAVORITES */
+#define XF86XK_Epg                      _EVDEVK(0x16d)  /*         KEY_EPG */
+#define XF86XK_Pvr                      _EVDEVK(0x16e)  /*         KEY_PVR */
+#define XF86XK_Mhp                      _EVDEVK(0x16f)  /*         KEY_MHP */
+#define XF86XK_Language                 _EVDEVK(0x170)  /*         KEY_LANGUAGE */
+#define XF86XK_Title                    _EVDEVK(0x171)  /*         KEY_TITLE */
+#define XF86XK_Subtitle                 _EVDEVK(0x172)  /*         KEY_SUBTITLE */
 /* Use: XF86XK_CycleAngle               _EVDEVK(0x173)             KEY_ANGLE */
 /* Use: XF86XK_FullScreen               _EVDEVK(0x174)     v5.1    KEY_FULL_SCREEN */
+#define XF86XK_Mode                     _EVDEVK(0x175)  /*         KEY_MODE */
+#define XF86XK_Keyboard                 _EVDEVK(0x176)  /*         KEY_KEYBOARD */
 #define XF86XK_AspectRatio              _EVDEVK(0x177)  /* v5.1    KEY_ASPECT_RATIO */
+#define XF86XK_Pc                       _EVDEVK(0x178)  /*         KEY_PC */
+#define XF86XK_Tv                       _EVDEVK(0x179)  /*         KEY_TV */
+#define XF86XK_Tv2                      _EVDEVK(0x17a)  /*         KEY_TV2 */
+#define XF86XK_Vcr                      _EVDEVK(0x17b)  /*         KEY_VCR */
+#define XF86XK_Vcr2                     _EVDEVK(0x17c)  /*         KEY_VCR2 */
+#define XF86XK_Sat                      _EVDEVK(0x17d)  /*         KEY_SAT */
+#define XF86XK_Sat2                     _EVDEVK(0x17e)  /*         KEY_SAT2 */
+#define XF86XK_Cd                       _EVDEVK(0x17f)  /*         KEY_CD */
+#define XF86XK_Tape                     _EVDEVK(0x180)  /*         KEY_TAPE */
+#define XF86XK_Radio                    _EVDEVK(0x181)  /*         KEY_RADIO */
+#define XF86XK_Tuner                    _EVDEVK(0x182)  /*         KEY_TUNER */
+#define XF86XK_Player                   _EVDEVK(0x183)  /*         KEY_PLAYER */
+#define XF86XK_Text                     _EVDEVK(0x184)  /*         KEY_TEXT */
 #define XF86XK_DVD                      _EVDEVK(0x185)  /*         KEY_DVD */
+#define XF86XK_Aux                      _EVDEVK(0x186)  /*         KEY_AUX */
+#define XF86XK_Mp3                      _EVDEVK(0x187)  /*         KEY_MP3 */
 #define XF86XK_Audio                    _EVDEVK(0x188)  /*         KEY_AUDIO */
 /* Use: XF86XK_Video                    _EVDEVK(0x189)             KEY_VIDEO */
+#define XF86XK_Directory                _EVDEVK(0x18a)  /*         KEY_DIRECTORY */
+#define XF86XK_List                     _EVDEVK(0x18b)  /*         KEY_LIST */
+#define XF86XK_Memo                     _EVDEVK(0x18c)  /*         KEY_MEMO */
 /* Use: XF86XK_Calendar                 _EVDEVK(0x18d)             KEY_CALENDAR */
+#define XF86XK_Red                      _EVDEVK(0x18e)  /*         KEY_RED */
+#define XF86XK_Green                    _EVDEVK(0x18f)  /*         KEY_GREEN */
+#define XF86XK_Yellow                   _EVDEVK(0x190)  /*         KEY_YELLOW */
+#define XF86XK_Blue                     _EVDEVK(0x191)  /*         KEY_BLUE */
 #define XF86XK_ChannelUp                _EVDEVK(0x192)  /*         KEY_CHANNELUP */
 #define XF86XK_ChannelDown              _EVDEVK(0x193)  /*         KEY_CHANNELDOWN */
+#define XF86XK_First                    _EVDEVK(0x194)  /*         KEY_FIRST */
+#define XF86XK_Last                     _EVDEVK(0x195)  /*         KEY_LAST */
+#define XF86XK_Ab                       _EVDEVK(0x196)  /*         KEY_AB */
+#define XF86XK_Next                     _EVDEVK(0x197)  /*         KEY_NEXT */
+#define XF86XK_Restart                  _EVDEVK(0x198)  /*         KEY_RESTART */
+#define XF86XK_Slow                     _EVDEVK(0x199)  /*         KEY_SLOW */
 /* Use: XF86XK_AudioRandomPlay          _EVDEVK(0x19a)             KEY_SHUFFLE */
 #define XF86XK_Break                    _EVDEVK(0x19b)  /*         KEY_BREAK */
+#define XF86XK_Previous                 _EVDEVK(0x19c)  /*         KEY_PREVIOUS */
+#define XF86XK_Digits                   _EVDEVK(0x19d)  /*         KEY_DIGITS */
+#define XF86XK_Teen                     _EVDEVK(0x19e)  /*         KEY_TEEN */
+#define XF86XK_Twen                     _EVDEVK(0x19f)  /*         KEY_TWEN */
 #define XF86XK_VideoPhone               _EVDEVK(0x1a0)  /* v2.6.20 KEY_VIDEOPHONE */
 /* Use: XF86XK_Game                     _EVDEVK(0x1a1)     v2.6.20 KEY_GAMES */
 /* Use: XF86XK_ZoomIn                   _EVDEVK(0x1a2)     v2.6.20 KEY_ZOOMIN */
@@ -339,8 +448,31 @@
 #define XF86XK_NotificationCenter       _EVDEVK(0x1bc)  /* v5.10   KEY_NOTIFICATION_CENTER */
 #define XF86XK_PickupPhone              _EVDEVK(0x1bd)  /* v5.10   KEY_PICKUP_PHONE */
 #define XF86XK_HangupPhone              _EVDEVK(0x1be)  /* v5.10   KEY_HANGUP_PHONE */
+#define XF86XK_DelEol                   _EVDEVK(0x1c0)  /*         KEY_DEL_EOL */
+#define XF86XK_DelEos                   _EVDEVK(0x1c1)  /*         KEY_DEL_EOS */
+#define XF86XK_InsLine                  _EVDEVK(0x1c2)  /*         KEY_INS_LINE */
+#define XF86XK_DelLine                  _EVDEVK(0x1c3)  /*         KEY_DEL_LINE */
 #define XF86XK_Fn                       _EVDEVK(0x1d0)  /*         KEY_FN */
 #define XF86XK_Fn_Esc                   _EVDEVK(0x1d1)  /*         KEY_FN_ESC */
+#define XF86XK_FnF1                     _EVDEVK(0x1d2)  /*         KEY_FN_F1 */
+#define XF86XK_FnF2                     _EVDEVK(0x1d3)  /*         KEY_FN_F2 */
+#define XF86XK_FnF3                     _EVDEVK(0x1d4)  /*         KEY_FN_F3 */
+#define XF86XK_FnF4                     _EVDEVK(0x1d5)  /*         KEY_FN_F4 */
+#define XF86XK_FnF5                     _EVDEVK(0x1d6)  /*         KEY_FN_F5 */
+#define XF86XK_FnF6                     _EVDEVK(0x1d7)  /*         KEY_FN_F6 */
+#define XF86XK_FnF7                     _EVDEVK(0x1d8)  /*         KEY_FN_F7 */
+#define XF86XK_FnF8                     _EVDEVK(0x1d9)  /*         KEY_FN_F8 */
+#define XF86XK_FnF9                     _EVDEVK(0x1da)  /*         KEY_FN_F9 */
+#define XF86XK_FnF10                    _EVDEVK(0x1db)  /*         KEY_FN_F10 */
+#define XF86XK_FnF11                    _EVDEVK(0x1dc)  /*         KEY_FN_F11 */
+#define XF86XK_FnF12                    _EVDEVK(0x1dd)  /*         KEY_FN_F12 */
+#define XF86XK_Fn1                      _EVDEVK(0x1de)  /*         KEY_FN_1 */
+#define XF86XK_Fn2                      _EVDEVK(0x1df)  /*         KEY_FN_2 */
+#define XF86XK_FnD                      _EVDEVK(0x1e0)  /*         KEY_FN_D */
+#define XF86XK_FnE                      _EVDEVK(0x1e1)  /*         KEY_FN_E */
+#define XF86XK_FnF                      _EVDEVK(0x1e2)  /*         KEY_FN_F */
+#define XF86XK_FnS                      _EVDEVK(0x1e3)  /*         KEY_FN_S */
+#define XF86XK_FnB                      _EVDEVK(0x1e4)  /*         KEY_FN_B */
 #define XF86XK_FnRightShift             _EVDEVK(0x1e5)  /* v5.10   KEY_FN_RIGHT_SHIFT */
 /* Use: XK_braille_dot_1                _EVDEVK(0x1f1)     v2.6.17 KEY_BRL_DOT1 */
 /* Use: XK_braille_dot_2                _EVDEVK(0x1f2)     v2.6.17 KEY_BRL_DOT2 */

Reply via email to