1.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2+++ b/lisp/ffi/evdev/constants.lisp Sun Sep 29 00:31:24 2024 -0400
1.3@@ -0,0 +1,860 @@
1.4+;;; constants.lisp --- evdev constants
1.5+("sys/time.h" "sys/ioctl.h" "sys/types.h" "linux/types.h" "linux/input-event-codes.h" "linux/input.h")
1.6+
1.7+(;; linux/input-event-codes.h
1.8+ (:integer ~input-prop-pointer~ "INPUT_PROP_POINTER")
1.9+ (:integer +input-prop-direct+ "INPUT_PROP_DIRECT")
1.10+ (:integer +input-prop-buttonpad+ "INPUT_PROP_BUTTONPAD")
1.11+ (:integer +input-prop-semi-mt+ "INPUT_PROP_SEMI_MT")
1.12+ (:integer +input-prop-topbuttonpad+ "INPUT_PROP_TOPBUTTONPAD")
1.13+ (:integer +input-prop-pointing-stick+ "INPUT_PROP_POINTING_STICK")
1.14+ (:integer +input-prop-accelerometer+ "INPUT_PROP_ACCELEROMETER")
1.15+ (:integer +input-prop-max+ "INPUT_PROP_MAX")
1.16+ (:integer +input-prop-cnt+ "INPUT_PROP_CNT")
1.17+ (:integer +ev-syn+ "EV_SYN")
1.18+ (:integer +ev-key+ "EV_KEY")
1.19+ (:integer +ev-rel+ "EV_REL")
1.20+ (:integer +ev-abs+ "EV_ABS")
1.21+ (:integer +ev-msc+ "EV_MSC")
1.22+ (:integer +ev-sw+ "EV_SW")
1.23+ (:integer +ev-led+ "EV_LED")
1.24+ (:integer +ev-snd+ "EV_SND")
1.25+ (:integer +ev-rep+ "EV_REP")
1.26+ (:integer +ev-ff+ "EV_FF")
1.27+ (:integer +ev-pwr+ "EV_PWR")
1.28+ (:integer +ev-ff-status+ "EV_FF_STATUS")
1.29+ (:integer +ev-max+ "EV_MAX")
1.30+ (:integer +ev-cnt+ "EV_CNT")
1.31+ (:integer +syn-report+ "SYN_REPORT")
1.32+ (:integer +syn-config+ "SYN_CONFIG")
1.33+ (:integer +syn-mt-report+ "SYN_MT_REPORT")
1.34+ (:integer +syn-dropped+ "SYN_DROPPED")
1.35+ (:integer +syn-max+ "SYN_MAX")
1.36+ (:integer +syn-cnt+ "SYN_CNT")
1.37+ (:integer +key-reserved+ "KEY_RESERVED")
1.38+ (:integer +key-esc+ "KEY_ESC")
1.39+ (:integer +key-1+ "KEY_1")
1.40+ (:integer +key-2+ "KEY_2")
1.41+ (:integer +key-3+ "KEY_3")
1.42+ (:integer +key-4+ "KEY_4")
1.43+ (:integer +key-5+ "KEY_5")
1.44+ (:integer +key-6+ "KEY_6")
1.45+ (:integer +key-7+ "KEY_7")
1.46+ (:integer +key-8+ "KEY_8")
1.47+ (:integer +key-9+ "KEY_9")
1.48+ (:integer +key-0+ "KEY_0")
1.49+ (:integer +key-minus+ "KEY_MINUS")
1.50+ (:integer +key-equal+ "KEY_EQUAL")
1.51+ (:integer +key-backspace+ "KEY_BACKSPACE")
1.52+ (:integer +key-tab+ "KEY_TAB")
1.53+ (:integer +key-q+ "KEY_Q")
1.54+ (:integer +key-w+ "KEY_W")
1.55+ (:integer +key-e+ "KEY_E")
1.56+ (:integer +key-r+ "KEY_R")
1.57+ (:integer +key-t+ "KEY_T")
1.58+ (:integer +key-y+ "KEY_Y")
1.59+ (:integer +key-u+ "KEY_U")
1.60+ (:integer +key-i+ "KEY_I")
1.61+ (:integer +key-o+ "KEY_O")
1.62+ (:integer +key-p+ "KEY_P")
1.63+ (:integer +key-leftbrace+ "KEY_LEFTBRACE")
1.64+ (:integer +key-rightbrace+ "KEY_RIGHTBRACE")
1.65+ (:integer +key-enter+ "KEY_ENTER")
1.66+ (:integer +key-leftctrl+ "KEY_LEFTCTRL")
1.67+ (:integer +key-a+ "KEY_A")
1.68+ (:integer +key-s+ "KEY_S")
1.69+ (:integer +key-d+ "KEY_D")
1.70+ (:integer +key-f+ "KEY_F")
1.71+ (:integer +key-g+ "KEY_G")
1.72+ (:integer +key-h+ "KEY_H")
1.73+ (:integer +key-j+ "KEY_J")
1.74+ (:integer +key-k+ "KEY_K")
1.75+ (:integer +key-l+ "KEY_L")
1.76+ (:integer +key-semicolon+ "KEY_SEMICOLON")
1.77+ (:integer +key-apostrophe+ "KEY_APOSTROPHE")
1.78+ (:integer +key-grave+ "KEY_GRAVE")
1.79+ (:integer +key-leftshift+ "KEY_LEFTSHIFT")
1.80+ (:integer +key-backslash+ "KEY_BACKSLASH")
1.81+ (:integer +key-z+ "KEY_Z")
1.82+ (:integer +key-x+ "KEY_X")
1.83+ (:integer +key-c+ "KEY_C")
1.84+ (:integer +key-v+ "KEY_V")
1.85+ (:integer +key-b+ "KEY_B")
1.86+ (:integer +key-n+ "KEY_N")
1.87+ (:integer +key-m+ "KEY_M")
1.88+ (:integer +key-comma+ "KEY_COMMA")
1.89+ (:integer +key-dot+ "KEY_DOT")
1.90+ (:integer +key-slash+ "KEY_SLASH")
1.91+ (:integer +key-rightshift+ "KEY_RIGHTSHIFT")
1.92+ (:integer +key-kpasterisk+ "KEY_KPASTERISK")
1.93+ (:integer +key-leftalt+ "KEY_LEFTALT")
1.94+ (:integer +key-space+ "KEY_SPACE")
1.95+ (:integer +key-capslock+ "KEY_CAPSLOCK")
1.96+ (:integer +key-f1+ "KEY_F1")
1.97+ (:integer +key-f2+ "KEY_F2")
1.98+ (:integer +key-f3+ "KEY_F3")
1.99+ (:integer +key-f4+ "KEY_F4")
1.100+ (:integer +key-f5+ "KEY_F5")
1.101+ (:integer +key-f6+ "KEY_F6")
1.102+ (:integer +key-f7+ "KEY_F7")
1.103+ (:integer +key-f8+ "KEY_F8")
1.104+ (:integer +key-f9+ "KEY_F9")
1.105+ (:integer +key-f10+ "KEY_F10")
1.106+ (:integer +key-numlock+ "KEY_NUMLOCK")
1.107+ (:integer +key-scrolllock+ "KEY_SCROLLLOCK")
1.108+ (:integer +key-kp7+ "KEY_KP7")
1.109+ (:integer +key-kp8+ "KEY_KP8")
1.110+ (:integer +key-kp9+ "KEY_KP9")
1.111+ (:integer +key-kpminus+ "KEY_KPMINUS")
1.112+ (:integer +key-kp4+ "KEY_KP4")
1.113+ (:integer +key-kp5+ "KEY_KP5")
1.114+ (:integer +key-kp6+ "KEY_KP6")
1.115+ (:integer +key-kpplus+ "KEY_KPPLUS")
1.116+ (:integer +key-kp1+ "KEY_KP1")
1.117+ (:integer +key-kp2+ "KEY_KP2")
1.118+ (:integer +key-kp3+ "KEY_KP3")
1.119+ (:integer +key-kp0+ "KEY_KP0")
1.120+ (:integer +key-kpdot+ "KEY_KPDOT")
1.121+ (:integer +key-zenkakuhankaku+ "KEY_ZENKAKUHANKAKU")
1.122+ (:integer +key-102nd+ "KEY_102ND")
1.123+ (:integer +key-f11+ "KEY_F11")
1.124+ (:integer +key-f12+ "KEY_F12")
1.125+ (:integer +key-ro+ "KEY_RO")
1.126+ (:integer +key-katakana+ "KEY_KATAKANA")
1.127+ (:integer +key-hiragana+ "KEY_HIRAGANA")
1.128+ (:integer +key-henkan+ "KEY_HENKAN")
1.129+ (:integer +key-katakanahiragana+ "KEY_KATAKANAHIRAGANA")
1.130+ (:integer +key-muhenkan+ "KEY_MUHENKAN")
1.131+ (:integer +key-kpjpcomma+ "KEY_KPJPCOMMA")
1.132+ (:integer +key-kpenter+ "KEY_KPENTER")
1.133+ (:integer +key-rightctrl+ "KEY_RIGHTCTRL")
1.134+ (:integer +key-kpslash+ "KEY_KPSLASH")
1.135+ (:integer +key-sysrq+ "KEY_SYSRQ")
1.136+ (:integer +key-rightalt+ "KEY_RIGHTALT")
1.137+ (:integer +key-linefeed+ "KEY_LINEFEED")
1.138+ (:integer +key-home+ "KEY_HOME")
1.139+ (:integer +key-up+ "KEY_UP")
1.140+ (:integer +key-pageup+ "KEY_PAGEUP")
1.141+ (:integer +key-left+ "KEY_LEFT")
1.142+ (:integer +key-right+ "KEY_RIGHT")
1.143+ (:integer +key-end+ "KEY_END")
1.144+ (:integer +key-down+ "KEY_DOWN")
1.145+ (:integer +key-pagedown+ "KEY_PAGEDOWN")
1.146+ (:integer +key-insert+ "KEY_INSERT")
1.147+ (:integer +key-delete+ "KEY_DELETE")
1.148+ (:integer +key-macro+ "KEY_MACRO")
1.149+ (:integer +key-mute+ "KEY_MUTE")
1.150+ (:integer +key-volumedown+ "KEY_VOLUMEDOWN")
1.151+ (:integer +key-volumeup+ "KEY_VOLUMEUP")
1.152+ (:integer +key-power+ "KEY_POWER")
1.153+ (:integer +key-kpequal+ "KEY_KPEQUAL")
1.154+ (:integer +key-kpplusminus+ "KEY_KPPLUSMINUS")
1.155+ (:integer +key-pause+ "KEY_PAUSE")
1.156+ (:integer +key-scale+ "KEY_SCALE")
1.157+ (:integer +key-kpcomma+ "KEY_KPCOMMA")
1.158+ (:integer +key-hangeul+ "KEY_HANGEUL")
1.159+ (:integer +key-hanguel+ "KEY_HANGUEL")
1.160+ (:integer +key-hanja+ "KEY_HANJA")
1.161+ (:integer +key-yen+ "KEY_YEN")
1.162+ (:integer +key-leftmeta+ "KEY_LEFTMETA")
1.163+ (:integer +key-rightmeta+ "KEY_RIGHTMETA")
1.164+ (:integer +key-compose+ "KEY_COMPOSE")
1.165+ (:integer +key-stop+ "KEY_STOP")
1.166+ (:integer +key-again+ "KEY_AGAIN")
1.167+ (:integer +key-props+ "KEY_PROPS")
1.168+ (:integer +key-undo+ "KEY_UNDO")
1.169+ (:integer +key-front+ "KEY_FRONT")
1.170+ (:integer +key-copy+ "KEY_COPY")
1.171+ (:integer +key-open+ "KEY_OPEN")
1.172+ (:integer +key-paste+ "KEY_PASTE")
1.173+ (:integer +key-find+ "KEY_FIND")
1.174+ (:integer +key-cut+ "KEY_CUT")
1.175+ (:integer +key-help+ "KEY_HELP")
1.176+ (:integer +key-menu+ "KEY_MENU")
1.177+ (:integer +key-calc+ "KEY_CALC")
1.178+ (:integer +key-setup+ "KEY_SETUP")
1.179+ (:integer +key-sleep+ "KEY_SLEEP")
1.180+ (:integer +key-wakeup+ "KEY_WAKEUP")
1.181+ (:integer +key-file+ "KEY_FILE")
1.182+ (:integer +key-sendfile+ "KEY_SENDFILE")
1.183+ (:integer +key-deletefile+ "KEY_DELETEFILE")
1.184+ (:integer +key-xfer+ "KEY_XFER")
1.185+ (:integer +key-prog1+ "KEY_PROG1")
1.186+ (:integer +key-prog2+ "KEY_PROG2")
1.187+ (:integer +key-www+ "KEY_WWW")
1.188+ (:integer +key-msdos+ "KEY_MSDOS")
1.189+ (:integer +key-coffee+ "KEY_COFFEE")
1.190+ (:integer +key-screenlock+ "KEY_SCREENLOCK")
1.191+ (:integer +key-rotate-display+ "KEY_ROTATE_DISPLAY")
1.192+ (:integer +key-direction+ "KEY_DIRECTION")
1.193+ (:integer +key-cyclewindows+ "KEY_CYCLEWINDOWS")
1.194+ (:integer +key-mail+ "KEY_MAIL")
1.195+ (:integer +key-bookmarks+ "KEY_BOOKMARKS")
1.196+ (:integer +key-computer+ "KEY_COMPUTER")
1.197+ (:integer +key-back+ "KEY_BACK")
1.198+ (:integer +key-forward+ "KEY_FORWARD")
1.199+ (:integer +key-closecd+ "KEY_CLOSECD")
1.200+ (:integer +key-ejectcd+ "KEY_EJECTCD")
1.201+ (:integer +key-ejectclosecd+ "KEY_EJECTCLOSECD")
1.202+ (:integer +key-nextsong+ "KEY_NEXTSONG")
1.203+ (:integer +key-playpause+ "KEY_PLAYPAUSE")
1.204+ (:integer +key-previoussong+ "KEY_PREVIOUSSONG")
1.205+ (:integer +key-stopcd+ "KEY_STOPCD")
1.206+ (:integer +key-record+ "KEY_RECORD")
1.207+ (:integer +key-rewind+ "KEY_REWIND")
1.208+ (:integer +key-phone+ "KEY_PHONE")
1.209+ (:integer +key-iso+ "KEY_ISO")
1.210+ (:integer +key-config+ "KEY_CONFIG")
1.211+ (:integer +key-homepage+ "KEY_HOMEPAGE")
1.212+ (:integer +key-refresh+ "KEY_REFRESH")
1.213+ (:integer +key-exit+ "KEY_EXIT")
1.214+ (:integer +key-move+ "KEY_MOVE")
1.215+ (:integer +key-edit+ "KEY_EDIT")
1.216+ (:integer +key-scrollup+ "KEY_SCROLLUP")
1.217+ (:integer +key-scrolldown+ "KEY_SCROLLDOWN")
1.218+ (:integer +key-kpleftparen+ "KEY_KPLEFTPAREN")
1.219+ (:integer +key-kprightparen+ "KEY_KPRIGHTPAREN")
1.220+ (:integer +key-new+ "KEY_NEW")
1.221+ (:integer +key-redo+ "KEY_REDO")
1.222+ (:integer +key-f13+ "KEY_F13")
1.223+ (:integer +key-f14+ "KEY_F14")
1.224+ (:integer +key-f15+ "KEY_F15")
1.225+ (:integer +key-f16+ "KEY_F16")
1.226+ (:integer +key-f17+ "KEY_F17")
1.227+ (:integer +key-f18+ "KEY_F18")
1.228+ (:integer +key-f19+ "KEY_F19")
1.229+ (:integer +key-f20+ "KEY_F20")
1.230+ (:integer +key-f21+ "KEY_F21")
1.231+ (:integer +key-f22+ "KEY_F22")
1.232+ (:integer +key-f23+ "KEY_F23")
1.233+ (:integer +key-f24+ "KEY_F24")
1.234+ (:integer +key-playcd+ "KEY_PLAYCD")
1.235+ (:integer +key-pausecd+ "KEY_PAUSECD")
1.236+ (:integer +key-prog3+ "KEY_PROG3")
1.237+ (:integer +key-prog4+ "KEY_PROG4")
1.238+ (:integer +key-all-applications+ "KEY_ALL_APPLICATIONS")
1.239+ (:integer +key-dashboard+ "KEY_DASHBOARD")
1.240+ (:integer +key-suspend+ "KEY_SUSPEND")
1.241+ (:integer +key-close+ "KEY_CLOSE")
1.242+ (:integer +key-play+ "KEY_PLAY")
1.243+ (:integer +key-fastforward+ "KEY_FASTFORWARD")
1.244+ (:integer +key-bassboost+ "KEY_BASSBOOST")
1.245+ (:integer +key-print+ "KEY_PRINT")
1.246+ (:integer +key-hp+ "KEY_HP")
1.247+ (:integer +key-camera+ "KEY_CAMERA")
1.248+ (:integer +key-sound+ "KEY_SOUND")
1.249+ (:integer +key-question+ "KEY_QUESTION")
1.250+ (:integer +key-email+ "KEY_EMAIL")
1.251+ (:integer +key-chat+ "KEY_CHAT")
1.252+ (:integer +key-search+ "KEY_SEARCH")
1.253+ (:integer +key-connect+ "KEY_CONNECT")
1.254+ (:integer +key-finance+ "KEY_FINANCE")
1.255+ (:integer +key-sport+ "KEY_SPORT")
1.256+ (:integer +key-shop+ "KEY_SHOP")
1.257+ (:integer +key-alterase+ "KEY_ALTERASE")
1.258+ (:integer +key-cancel+ "KEY_CANCEL")
1.259+ (:integer +key-brightnessdown+ "KEY_BRIGHTNESSDOWN")
1.260+ (:integer +key-brightnessup+ "KEY_BRIGHTNESSUP")
1.261+ (:integer +key-media+ "KEY_MEDIA")
1.262+ (:integer +key-switchvideomode+ "KEY_SWITCHVIDEOMODE")
1.263+ (:integer +key-kbdillumtoggle+ "KEY_KBDILLUMTOGGLE")
1.264+ (:integer +key-kbdillumdown+ "KEY_KBDILLUMDOWN")
1.265+ (:integer +key-kbdillumup+ "KEY_KBDILLUMUP")
1.266+ (:integer +key-send+ "KEY_SEND")
1.267+ (:integer +key-reply+ "KEY_REPLY")
1.268+ (:integer +key-forwardmail+ "KEY_FORWARDMAIL")
1.269+ (:integer +key-save+ "KEY_SAVE")
1.270+ (:integer +key-documents+ "KEY_DOCUMENTS")
1.271+ (:integer +key-battery+ "KEY_BATTERY")
1.272+ (:integer +key-bluetooth+ "KEY_BLUETOOTH")
1.273+ (:integer +key-wlan+ "KEY_WLAN")
1.274+ (:integer +key-uwb+ "KEY_UWB")
1.275+ (:integer +key-unknown+ "KEY_UNKNOWN")
1.276+ (:integer +key-video-next+ "KEY_VIDEO_NEXT")
1.277+ (:integer +key-video-prev+ "KEY_VIDEO_PREV")
1.278+ (:integer +key-brightness-cycle+ "KEY_BRIGHTNESS_CYCLE")
1.279+ (:integer +key-brightness-auto+ "KEY_BRIGHTNESS_AUTO")
1.280+ (:integer +key-brightness-zero+ "KEY_BRIGHTNESS_ZERO")
1.281+ (:integer +key-display-off+ "KEY_DISPLAY_OFF")
1.282+ (:integer +key-wwan+ "KEY_WWAN")
1.283+ (:integer +key-wimax+ "KEY_WIMAX")
1.284+ (:integer +key-rfkill+ "KEY_RFKILL")
1.285+ (:integer +key-micmute+ "KEY_MICMUTE")
1.286+ (:integer +btn-misc+ "BTN_MISC")
1.287+ (:integer +btn-0+ "BTN_0")
1.288+ (:integer +btn-1+ "BTN_1")
1.289+ (:integer +btn-2+ "BTN_2")
1.290+ (:integer +btn-3+ "BTN_3")
1.291+ (:integer +btn-4+ "BTN_4")
1.292+ (:integer +btn-5+ "BTN_5")
1.293+ (:integer +btn-6+ "BTN_6")
1.294+ (:integer +btn-7+ "BTN_7")
1.295+ (:integer +btn-8+ "BTN_8")
1.296+ (:integer +btn-9+ "BTN_9")
1.297+ (:integer +btn-mouse+ "BTN_MOUSE")
1.298+ (:integer +btn-left+ "BTN_LEFT")
1.299+ (:integer +btn-right+ "BTN_RIGHT")
1.300+ (:integer +btn-middle+ "BTN_MIDDLE")
1.301+ (:integer +btn-side+ "BTN_SIDE")
1.302+ (:integer +btn-extra+ "BTN_EXTRA")
1.303+ (:integer +btn-forward+ "BTN_FORWARD")
1.304+ (:integer +btn-back+ "BTN_BACK")
1.305+ (:integer +btn-task+ "BTN_TASK")
1.306+ (:integer +btn-joystick+ "BTN_JOYSTICK")
1.307+ (:integer +btn-trigger+ "BTN_TRIGGER")
1.308+ (:integer +btn-thumb+ "BTN_THUMB")
1.309+ (:integer +btn-thumb2+ "BTN_THUMB2")
1.310+ (:integer +btn-top+ "BTN_TOP")
1.311+ (:integer +btn-top2+ "BTN_TOP2")
1.312+ (:integer +btn-pinkie+ "BTN_PINKIE")
1.313+ (:integer +btn-base+ "BTN_BASE")
1.314+ (:integer +btn-base2+ "BTN_BASE2")
1.315+ (:integer +btn-base3+ "BTN_BASE3")
1.316+ (:integer +btn-base4+ "BTN_BASE4")
1.317+ (:integer +btn-base5+ "BTN_BASE5")
1.318+ (:integer +btn-base6+ "BTN_BASE6")
1.319+ (:integer +btn-dead+ "BTN_DEAD")
1.320+ (:integer +btn-gamepad+ "BTN_GAMEPAD")
1.321+ (:integer +btn-south+ "BTN_SOUTH")
1.322+ (:integer +btn-a+ "BTN_A")
1.323+ (:integer +btn-east+ "BTN_EAST")
1.324+ (:integer +btn-b+ "BTN_B")
1.325+ (:integer +btn-c+ "BTN_C")
1.326+ (:integer +btn-north+ "BTN_NORTH")
1.327+ (:integer +btn-x+ "BTN_X")
1.328+ (:integer +btn-west+ "BTN_WEST")
1.329+ (:integer +btn-y+ "BTN_Y")
1.330+ (:integer +btn-z+ "BTN_Z")
1.331+ (:integer +btn-tl+ "BTN_TL")
1.332+ (:integer +btn-tr+ "BTN_TR")
1.333+ (:integer +btn-tl2+ "BTN_TL2")
1.334+ (:integer +btn-tr2+ "BTN_TR2")
1.335+ (:integer +btn-select+ "BTN_SELECT")
1.336+ (:integer +btn-start+ "BTN_START")
1.337+ (:integer +btn-mode+ "BTN_MODE")
1.338+ (:integer +btn-thumbl+ "BTN_THUMBL")
1.339+ (:integer +btn-thumbr+ "BTN_THUMBR")
1.340+ (:integer +btn-digi+ "BTN_DIGI")
1.341+ (:integer +btn-tool-pen+ "BTN_TOOL_PEN")
1.342+ (:integer +btn-tool-rubber+ "BTN_TOOL_RUBBER")
1.343+ (:integer +btn-tool-brush+ "BTN_TOOL_BRUSH")
1.344+ (:integer +btn-tool-pencil+ "BTN_TOOL_PENCIL")
1.345+ (:integer +btn-tool-airbrush+ "BTN_TOOL_AIRBRUSH")
1.346+ (:integer +btn-tool-finger+ "BTN_TOOL_FINGER")
1.347+ (:integer +btn-tool-mouse+ "BTN_TOOL_MOUSE")
1.348+ (:integer +btn-tool-lens+ "BTN_TOOL_LENS")
1.349+ (:integer +btn-tool-quinttap+ "BTN_TOOL_QUINTTAP")
1.350+ (:integer +btn-stylus3+ "BTN_STYLUS3")
1.351+ (:integer +btn-touch+ "BTN_TOUCH")
1.352+ (:integer +btn-stylus+ "BTN_STYLUS")
1.353+ (:integer +btn-stylus2+ "BTN_STYLUS2")
1.354+ (:integer +btn-tool-doubletap+ "BTN_TOOL_DOUBLETAP")
1.355+ (:integer +btn-tool-tripletap+ "BTN_TOOL_TRIPLETAP")
1.356+ (:integer +btn-tool-quadtap+ "BTN_TOOL_QUADTAP")
1.357+ (:integer +btn-wheel+ "BTN_WHEEL")
1.358+ (:integer +btn-gear-down+ "BTN_GEAR_DOWN")
1.359+ (:integer +btn-gear-up+ "BTN_GEAR_UP")
1.360+ (:integer +key-ok+ "KEY_OK")
1.361+ (:integer +key-select+ "KEY_SELECT")
1.362+ (:integer +key-goto+ "KEY_GOTO")
1.363+ (:integer +key-clear+ "KEY_CLEAR")
1.364+ (:integer +key-power2+ "KEY_POWER2")
1.365+ (:integer +key-option+ "KEY_OPTION")
1.366+ (:integer +key-info+ "KEY_INFO")
1.367+ (:integer +key-time+ "KEY_TIME")
1.368+ (:integer +key-vendor+ "KEY_VENDOR")
1.369+ (:integer +key-archive+ "KEY_ARCHIVE")
1.370+ (:integer +key-program+ "KEY_PROGRAM")
1.371+ (:integer +key-channel+ "KEY_CHANNEL")
1.372+ (:integer +key-favorites+ "KEY_FAVORITES")
1.373+ (:integer +key-epg+ "KEY_EPG")
1.374+ (:integer +key-pvr+ "KEY_PVR")
1.375+ (:integer +key-mhp+ "KEY_MHP")
1.376+ (:integer +key-language+ "KEY_LANGUAGE")
1.377+ (:integer +key-title+ "KEY_TITLE")
1.378+ (:integer +key-subtitle+ "KEY_SUBTITLE")
1.379+ (:integer +key-angle+ "KEY_ANGLE")
1.380+ (:integer +key-full-screen+ "KEY_FULL_SCREEN")
1.381+ (:integer +key-zoom+ "KEY_ZOOM")
1.382+ (:integer +key-mode+ "KEY_MODE")
1.383+ (:integer +key-keyboard+ "KEY_KEYBOARD")
1.384+ (:integer +key-aspect-ratio+ "KEY_ASPECT_RATIO")
1.385+ (:integer +key-screen+ "KEY_SCREEN")
1.386+ (:integer +key-pc+ "KEY_PC")
1.387+ (:integer +key-tv+ "KEY_TV")
1.388+ (:integer +key-tv2+ "KEY_TV2")
1.389+ (:integer +key-vcr+ "KEY_VCR")
1.390+ (:integer +key-vcr2+ "KEY_VCR2")
1.391+ (:integer +key-sat+ "KEY_SAT")
1.392+ (:integer +key-sat2+ "KEY_SAT2")
1.393+ (:integer +key-cd+ "KEY_CD")
1.394+ (:integer +key-tape+ "KEY_TAPE")
1.395+ (:integer +key-radio+ "KEY_RADIO")
1.396+ (:integer +key-tuner+ "KEY_TUNER")
1.397+ (:integer +key-player+ "KEY_PLAYER")
1.398+ (:integer +key-text+ "KEY_TEXT")
1.399+ (:integer +key-dvd+ "KEY_DVD")
1.400+ (:integer +key-aux+ "KEY_AUX")
1.401+ (:integer +key-mp3+ "KEY_MP3")
1.402+ (:integer +key-audio+ "KEY_AUDIO")
1.403+ (:integer +key-video+ "KEY_VIDEO")
1.404+ (:integer +key-directory+ "KEY_DIRECTORY")
1.405+ (:integer +key-list+ "KEY_LIST")
1.406+ (:integer +key-memo+ "KEY_MEMO")
1.407+ (:integer +key-calendar+ "KEY_CALENDAR")
1.408+ (:integer +key-red+ "KEY_RED")
1.409+ (:integer +key-green+ "KEY_GREEN")
1.410+ (:integer +key-yellow+ "KEY_YELLOW")
1.411+ (:integer +key-blue+ "KEY_BLUE")
1.412+ (:integer +key-channelup+ "KEY_CHANNELUP")
1.413+ (:integer +key-channeldown+ "KEY_CHANNELDOWN")
1.414+ (:integer +key-first+ "KEY_FIRST")
1.415+ (:integer +key-last+ "KEY_LAST")
1.416+ (:integer +key-ab+ "KEY_AB")
1.417+ (:integer +key-next+ "KEY_NEXT")
1.418+ (:integer +key-restart+ "KEY_RESTART")
1.419+ (:integer +key-slow+ "KEY_SLOW")
1.420+ (:integer +key-shuffle+ "KEY_SHUFFLE")
1.421+ (:integer +key-break+ "KEY_BREAK")
1.422+ (:integer +key-previous+ "KEY_PREVIOUS")
1.423+ (:integer +key-digits+ "KEY_DIGITS")
1.424+ (:integer +key-teen+ "KEY_TEEN")
1.425+ (:integer +key-twen+ "KEY_TWEN")
1.426+ (:integer +key-videophone+ "KEY_VIDEOPHONE")
1.427+ (:integer +key-games+ "KEY_GAMES")
1.428+ (:integer +key-zoomin+ "KEY_ZOOMIN")
1.429+ (:integer +key-zoomout+ "KEY_ZOOMOUT")
1.430+ (:integer +key-zoomreset+ "KEY_ZOOMRESET")
1.431+ (:integer +key-wordprocessor+ "KEY_WORDPROCESSOR")
1.432+ (:integer +key-editor+ "KEY_EDITOR")
1.433+ (:integer +key-spreadsheet+ "KEY_SPREADSHEET")
1.434+ (:integer +key-graphicseditor+ "KEY_GRAPHICSEDITOR")
1.435+ (:integer +key-presentation+ "KEY_PRESENTATION")
1.436+ (:integer +key-database+ "KEY_DATABASE")
1.437+ (:integer +key-news+ "KEY_NEWS")
1.438+ (:integer +key-voicemail+ "KEY_VOICEMAIL")
1.439+ (:integer +key-addressbook+ "KEY_ADDRESSBOOK")
1.440+ (:integer +key-messenger+ "KEY_MESSENGER")
1.441+ (:integer +key-displaytoggle+ "KEY_DISPLAYTOGGLE")
1.442+ (:integer +key-brightness-toggle+ "KEY_BRIGHTNESS_TOGGLE")
1.443+ (:integer +key-spellcheck+ "KEY_SPELLCHECK")
1.444+ (:integer +key-logoff+ "KEY_LOGOFF")
1.445+ (:integer +key-dollar+ "KEY_DOLLAR")
1.446+ (:integer +key-euro+ "KEY_EURO")
1.447+ (:integer +key-frameback+ "KEY_FRAMEBACK")
1.448+ (:integer +key-frameforward+ "KEY_FRAMEFORWARD")
1.449+ (:integer +key-context-menu+ "KEY_CONTEXT_MENU")
1.450+ (:integer +key-media-repeat+ "KEY_MEDIA_REPEAT")
1.451+ (:integer +key-10channelsup+ "KEY_10CHANNELSUP")
1.452+ (:integer +key-10channelsdown+ "KEY_10CHANNELSDOWN")
1.453+ (:integer +key-images+ "KEY_IMAGES")
1.454+ (:integer +key-notification-center+ "KEY_NOTIFICATION_CENTER")
1.455+ (:integer +key-pickup-phone+ "KEY_PICKUP_PHONE")
1.456+ (:integer +key-hangup-phone+ "KEY_HANGUP_PHONE")
1.457+ (:integer +key-del-eol+ "KEY_DEL_EOL")
1.458+ (:integer +key-del-eos+ "KEY_DEL_EOS")
1.459+ (:integer +key-ins-line+ "KEY_INS_LINE")
1.460+ (:integer +key-del-line+ "KEY_DEL_LINE")
1.461+ (:integer +key-fn+ "KEY_FN")
1.462+ (:integer +key-fn-esc+ "KEY_FN_ESC")
1.463+ (:integer +key-fn-f1+ "KEY_FN_F1")
1.464+ (:integer +key-fn-f2+ "KEY_FN_F2")
1.465+ (:integer +key-fn-f3+ "KEY_FN_F3")
1.466+ (:integer +key-fn-f4+ "KEY_FN_F4")
1.467+ (:integer +key-fn-f5+ "KEY_FN_F5")
1.468+ (:integer +key-fn-f6+ "KEY_FN_F6")
1.469+ (:integer +key-fn-f7+ "KEY_FN_F7")
1.470+ (:integer +key-fn-f8+ "KEY_FN_F8")
1.471+ (:integer +key-fn-f9+ "KEY_FN_F9")
1.472+ (:integer +key-fn-f10+ "KEY_FN_F10")
1.473+ (:integer +key-fn-f11+ "KEY_FN_F11")
1.474+ (:integer +key-fn-f12+ "KEY_FN_F12")
1.475+ (:integer +key-fn-1+ "KEY_FN_1")
1.476+ (:integer +key-fn-2+ "KEY_FN_2")
1.477+ (:integer +key-fn-d+ "KEY_FN_D")
1.478+ (:integer +key-fn-e+ "KEY_FN_E")
1.479+ (:integer +key-fn-f+ "KEY_FN_F")
1.480+ (:integer +key-fn-s+ "KEY_FN_S")
1.481+ (:integer +key-fn-b+ "KEY_FN_B")
1.482+ (:integer +key-fn-right-shift+ "KEY_FN_RIGHT_SHIFT")
1.483+ (:integer +key-brl-dot1+ "KEY_BRL_DOT1")
1.484+ (:integer +key-brl-dot2+ "KEY_BRL_DOT2")
1.485+ (:integer +key-brl-dot3+ "KEY_BRL_DOT3")
1.486+ (:integer +key-brl-dot4+ "KEY_BRL_DOT4")
1.487+ (:integer +key-brl-dot5+ "KEY_BRL_DOT5")
1.488+ (:integer +key-brl-dot6+ "KEY_BRL_DOT6")
1.489+ (:integer +key-brl-dot7+ "KEY_BRL_DOT7")
1.490+ (:integer +key-brl-dot8+ "KEY_BRL_DOT8")
1.491+ (:integer +key-brl-dot9+ "KEY_BRL_DOT9")
1.492+ (:integer +key-brl-dot10+ "KEY_BRL_DOT10")
1.493+ (:integer +key-numeric-0+ "KEY_NUMERIC_0")
1.494+ (:integer +key-numeric-1+ "KEY_NUMERIC_1")
1.495+ (:integer +key-numeric-2+ "KEY_NUMERIC_2")
1.496+ (:integer +key-numeric-3+ "KEY_NUMERIC_3")
1.497+ (:integer +key-numeric-4+ "KEY_NUMERIC_4")
1.498+ (:integer +key-numeric-5+ "KEY_NUMERIC_5")
1.499+ (:integer +key-numeric-6+ "KEY_NUMERIC_6")
1.500+ (:integer +key-numeric-7+ "KEY_NUMERIC_7")
1.501+ (:integer +key-numeric-8+ "KEY_NUMERIC_8")
1.502+ (:integer +key-numeric-9+ "KEY_NUMERIC_9")
1.503+ (:integer +key-numeric-star+ "KEY_NUMERIC_STAR")
1.504+ (:integer +key-numeric-pound+ "KEY_NUMERIC_POUND")
1.505+ (:integer +key-numeric-a+ "KEY_NUMERIC_A")
1.506+ (:integer +key-numeric-b+ "KEY_NUMERIC_B")
1.507+ (:integer +key-numeric-c+ "KEY_NUMERIC_C")
1.508+ (:integer +key-numeric-d+ "KEY_NUMERIC_D")
1.509+ (:integer +key-camera-focus+ "KEY_CAMERA_FOCUS")
1.510+ (:integer +key-wps-button+ "KEY_WPS_BUTTON")
1.511+ (:integer +key-touchpad-toggle+ "KEY_TOUCHPAD_TOGGLE")
1.512+ (:integer +key-touchpad-on+ "KEY_TOUCHPAD_ON")
1.513+ (:integer +key-touchpad-off+ "KEY_TOUCHPAD_OFF")
1.514+ (:integer +key-camera-zoomin+ "KEY_CAMERA_ZOOMIN")
1.515+ (:integer +key-camera-zoomout+ "KEY_CAMERA_ZOOMOUT")
1.516+ (:integer +key-camera-up+ "KEY_CAMERA_UP")
1.517+ (:integer +key-camera-down+ "KEY_CAMERA_DOWN")
1.518+ (:integer +key-camera-left+ "KEY_CAMERA_LEFT")
1.519+ (:integer +key-camera-right+ "KEY_CAMERA_RIGHT")
1.520+ (:integer +key-attendant-on+ "KEY_ATTENDANT_ON")
1.521+ (:integer +key-attendant-off+ "KEY_ATTENDANT_OFF")
1.522+ (:integer +key-attendant-toggle+ "KEY_ATTENDANT_TOGGLE")
1.523+ (:integer +key-lights-toggle+ "KEY_LIGHTS_TOGGLE")
1.524+ (:integer +btn-dpad-up+ "BTN_DPAD_UP")
1.525+ (:integer +btn-dpad-down+ "BTN_DPAD_DOWN")
1.526+ (:integer +btn-dpad-left+ "BTN_DPAD_LEFT")
1.527+ (:integer +btn-dpad-right+ "BTN_DPAD_RIGHT")
1.528+ (:integer +key-als-toggle+ "KEY_ALS_TOGGLE")
1.529+ (:integer +key-rotate-lock-toggle+ "KEY_ROTATE_LOCK_TOGGLE")
1.530+ (:integer +key-refresh-rate-toggle+ "KEY_REFRESH_RATE_TOGGLE")
1.531+ (:integer +key-buttonconfig+ "KEY_BUTTONCONFIG")
1.532+ (:integer +key-taskmanager+ "KEY_TASKMANAGER")
1.533+ (:integer +key-journal+ "KEY_JOURNAL")
1.534+ (:integer +key-controlpanel+ "KEY_CONTROLPANEL")
1.535+ (:integer +key-appselect+ "KEY_APPSELECT")
1.536+ (:integer +key-screensaver+ "KEY_SCREENSAVER")
1.537+ (:integer +key-voicecommand+ "KEY_VOICECOMMAND")
1.538+ (:integer +key-assistant+ "KEY_ASSISTANT")
1.539+ (:integer +key-kbd-layout-next+ "KEY_KBD_LAYOUT_NEXT")
1.540+ (:integer +key-emoji-picker+ "KEY_EMOJI_PICKER")
1.541+ (:integer +key-dictate+ "KEY_DICTATE")
1.542+ (:integer +key-camera-access-enable+ "KEY_CAMERA_ACCESS_ENABLE")
1.543+ (:integer +key-camera-access-disable+ "KEY_CAMERA_ACCESS_DISABLE")
1.544+ (:integer +key-camera-access-toggle+ "KEY_CAMERA_ACCESS_TOGGLE")
1.545+ (:integer +key-accessibility+ "KEY_ACCESSIBILITY")
1.546+ (:integer +key-do-not-disturb+ "KEY_DO_NOT_DISTURB")
1.547+ (:integer +key-brightness-min+ "KEY_BRIGHTNESS_MIN")
1.548+ (:integer +key-brightness-max+ "KEY_BRIGHTNESS_MAX")
1.549+ (:integer +key-kbdinputassist-prev+ "KEY_KBDINPUTASSIST_PREV")
1.550+ (:integer +key-kbdinputassist-next+ "KEY_KBDINPUTASSIST_NEXT")
1.551+ (:integer +key-kbdinputassist-prevgroup+ "KEY_KBDINPUTASSIST_PREVGROUP")
1.552+ (:integer +key-kbdinputassist-nextgroup+ "KEY_KBDINPUTASSIST_NEXTGROUP")
1.553+ (:integer +key-kbdinputassist-accept+ "KEY_KBDINPUTASSIST_ACCEPT")
1.554+ (:integer +key-kbdinputassist-cancel+ "KEY_KBDINPUTASSIST_CANCEL")
1.555+ (:integer +key-right-up+ "KEY_RIGHT_UP")
1.556+ (:integer +key-right-down+ "KEY_RIGHT_DOWN")
1.557+ (:integer +key-left-up+ "KEY_LEFT_UP")
1.558+ (:integer +key-left-down+ "KEY_LEFT_DOWN")
1.559+ (:integer +key-root-menu+ "KEY_ROOT_MENU")
1.560+ (:integer +key-media-top-menu+ "KEY_MEDIA_TOP_MENU")
1.561+ (:integer +key-numeric-11+ "KEY_NUMERIC_11")
1.562+ (:integer +key-numeric-12+ "KEY_NUMERIC_12")
1.563+ (:integer +key-audio-desc+ "KEY_AUDIO_DESC")
1.564+ (:integer +key-3d-mode+ "KEY_3D_MODE")
1.565+ (:integer +key-next-favorite+ "KEY_NEXT_FAVORITE")
1.566+ (:integer +key-stop-record+ "KEY_STOP_RECORD")
1.567+ (:integer +key-pause-record+ "KEY_PAUSE_RECORD")
1.568+ (:integer +key-vod+ "KEY_VOD")
1.569+ (:integer +key-unmute+ "KEY_UNMUTE")
1.570+ (:integer +key-fastreverse+ "KEY_FASTREVERSE")
1.571+ (:integer +key-slowreverse+ "KEY_SLOWREVERSE")
1.572+ (:integer +key-data+ "KEY_DATA")
1.573+ (:integer +key-onscreen-keyboard+ "KEY_ONSCREEN_KEYBOARD")
1.574+ (:integer +key-privacy-screen-toggle+ "KEY_PRIVACY_SCREEN_TOGGLE")
1.575+ (:integer +key-selective-screenshot+ "KEY_SELECTIVE_SCREENSHOT")
1.576+ (:integer +key-next-element+ "KEY_NEXT_ELEMENT")
1.577+ (:integer +key-previous-element+ "KEY_PREVIOUS_ELEMENT")
1.578+ (:integer +key-autopilot-engage-toggle+ "KEY_AUTOPILOT_ENGAGE_TOGGLE")
1.579+ (:integer +key-mark-waypoint+ "KEY_MARK_WAYPOINT")
1.580+ (:integer +key-sos+ "KEY_SOS")
1.581+ (:integer +key-nav-chart+ "KEY_NAV_CHART")
1.582+ (:integer +key-fishing-chart+ "KEY_FISHING_CHART")
1.583+ (:integer +key-single-range-radar+ "KEY_SINGLE_RANGE_RADAR")
1.584+ (:integer +key-dual-range-radar+ "KEY_DUAL_RANGE_RADAR")
1.585+ (:integer +key-radar-overlay+ "KEY_RADAR_OVERLAY")
1.586+ (:integer +key-traditional-sonar+ "KEY_TRADITIONAL_SONAR")
1.587+ (:integer +key-clearvu-sonar+ "KEY_CLEARVU_SONAR")
1.588+ (:integer +key-sidevu-sonar+ "KEY_SIDEVU_SONAR")
1.589+ (:integer +key-nav-info+ "KEY_NAV_INFO")
1.590+ (:integer +key-brightness-menu+ "KEY_BRIGHTNESS_MENU")
1.591+ (:integer +key-macro1+ "KEY_MACRO1")
1.592+ (:integer +key-macro2+ "KEY_MACRO2")
1.593+ (:integer +key-macro3+ "KEY_MACRO3")
1.594+ (:integer +key-macro4+ "KEY_MACRO4")
1.595+ (:integer +key-macro5+ "KEY_MACRO5")
1.596+ (:integer +key-macro6+ "KEY_MACRO6")
1.597+ (:integer +key-macro7+ "KEY_MACRO7")
1.598+ (:integer +key-macro8+ "KEY_MACRO8")
1.599+ (:integer +key-macro9+ "KEY_MACRO9")
1.600+ (:integer +key-macro10+ "KEY_MACRO10")
1.601+ (:integer +key-macro11+ "KEY_MACRO11")
1.602+ (:integer +key-macro12+ "KEY_MACRO12")
1.603+ (:integer +key-macro13+ "KEY_MACRO13")
1.604+ (:integer +key-macro14+ "KEY_MACRO14")
1.605+ (:integer +key-macro15+ "KEY_MACRO15")
1.606+ (:integer +key-macro16+ "KEY_MACRO16")
1.607+ (:integer +key-macro17+ "KEY_MACRO17")
1.608+ (:integer +key-macro18+ "KEY_MACRO18")
1.609+ (:integer +key-macro19+ "KEY_MACRO19")
1.610+ (:integer +key-macro20+ "KEY_MACRO20")
1.611+ (:integer +key-macro21+ "KEY_MACRO21")
1.612+ (:integer +key-macro22+ "KEY_MACRO22")
1.613+ (:integer +key-macro23+ "KEY_MACRO23")
1.614+ (:integer +key-macro24+ "KEY_MACRO24")
1.615+ (:integer +key-macro25+ "KEY_MACRO25")
1.616+ (:integer +key-macro26+ "KEY_MACRO26")
1.617+ (:integer +key-macro27+ "KEY_MACRO27")
1.618+ (:integer +key-macro28+ "KEY_MACRO28")
1.619+ (:integer +key-macro29+ "KEY_MACRO29")
1.620+ (:integer +key-macro30+ "KEY_MACRO30")
1.621+ (:integer +key-macro-record-start+ "KEY_MACRO_RECORD_START")
1.622+ (:integer +key-macro-record-stop+ "KEY_MACRO_RECORD_STOP")
1.623+ (:integer +key-macro-preset-cycle+ "KEY_MACRO_PRESET_CYCLE")
1.624+ (:integer +key-macro-preset1+ "KEY_MACRO_PRESET1")
1.625+ (:integer +key-macro-preset2+ "KEY_MACRO_PRESET2")
1.626+ (:integer +key-macro-preset3+ "KEY_MACRO_PRESET3")
1.627+ (:integer +key-kbd-lcd-menu1+ "KEY_KBD_LCD_MENU1")
1.628+ (:integer +key-kbd-lcd-menu2+ "KEY_KBD_LCD_MENU2")
1.629+ (:integer +key-kbd-lcd-menu3+ "KEY_KBD_LCD_MENU3")
1.630+ (:integer +key-kbd-lcd-menu4+ "KEY_KBD_LCD_MENU4")
1.631+ (:integer +key-kbd-lcd-menu5+ "KEY_KBD_LCD_MENU5")
1.632+ (:integer +btn-trigger-happy+ "BTN_TRIGGER_HAPPY")
1.633+ (:integer +btn-trigger-happy1+ "BTN_TRIGGER_HAPPY1")
1.634+ (:integer +btn-trigger-happy2+ "BTN_TRIGGER_HAPPY2")
1.635+ (:integer +btn-trigger-happy3+ "BTN_TRIGGER_HAPPY3")
1.636+ (:integer +btn-trigger-happy4+ "BTN_TRIGGER_HAPPY4")
1.637+ (:integer +btn-trigger-happy5+ "BTN_TRIGGER_HAPPY5")
1.638+ (:integer +btn-trigger-happy6+ "BTN_TRIGGER_HAPPY6")
1.639+ (:integer +btn-trigger-happy7+ "BTN_TRIGGER_HAPPY7")
1.640+ (:integer +btn-trigger-happy8+ "BTN_TRIGGER_HAPPY8")
1.641+ (:integer +btn-trigger-happy9+ "BTN_TRIGGER_HAPPY9")
1.642+ (:integer +btn-trigger-happy10+ "BTN_TRIGGER_HAPPY10")
1.643+ (:integer +btn-trigger-happy11+ "BTN_TRIGGER_HAPPY11")
1.644+ (:integer +btn-trigger-happy12+ "BTN_TRIGGER_HAPPY12")
1.645+ (:integer +btn-trigger-happy13+ "BTN_TRIGGER_HAPPY13")
1.646+ (:integer +btn-trigger-happy14+ "BTN_TRIGGER_HAPPY14")
1.647+ (:integer +btn-trigger-happy15+ "BTN_TRIGGER_HAPPY15")
1.648+ (:integer +btn-trigger-happy16+ "BTN_TRIGGER_HAPPY16")
1.649+ (:integer +btn-trigger-happy17+ "BTN_TRIGGER_HAPPY17")
1.650+ (:integer +btn-trigger-happy18+ "BTN_TRIGGER_HAPPY18")
1.651+ (:integer +btn-trigger-happy19+ "BTN_TRIGGER_HAPPY19")
1.652+ (:integer +btn-trigger-happy20+ "BTN_TRIGGER_HAPPY20")
1.653+ (:integer +btn-trigger-happy21+ "BTN_TRIGGER_HAPPY21")
1.654+ (:integer +btn-trigger-happy22+ "BTN_TRIGGER_HAPPY22")
1.655+ (:integer +btn-trigger-happy23+ "BTN_TRIGGER_HAPPY23")
1.656+ (:integer +btn-trigger-happy24+ "BTN_TRIGGER_HAPPY24")
1.657+ (:integer +btn-trigger-happy25+ "BTN_TRIGGER_HAPPY25")
1.658+ (:integer +btn-trigger-happy26+ "BTN_TRIGGER_HAPPY26")
1.659+ (:integer +btn-trigger-happy27+ "BTN_TRIGGER_HAPPY27")
1.660+ (:integer +btn-trigger-happy28+ "BTN_TRIGGER_HAPPY28")
1.661+ (:integer +btn-trigger-happy29+ "BTN_TRIGGER_HAPPY29")
1.662+ (:integer +btn-trigger-happy30+ "BTN_TRIGGER_HAPPY30")
1.663+ (:integer +btn-trigger-happy31+ "BTN_TRIGGER_HAPPY31")
1.664+ (:integer +btn-trigger-happy32+ "BTN_TRIGGER_HAPPY32")
1.665+ (:integer +btn-trigger-happy33+ "BTN_TRIGGER_HAPPY33")
1.666+ (:integer +btn-trigger-happy34+ "BTN_TRIGGER_HAPPY34")
1.667+ (:integer +btn-trigger-happy35+ "BTN_TRIGGER_HAPPY35")
1.668+ (:integer +btn-trigger-happy36+ "BTN_TRIGGER_HAPPY36")
1.669+ (:integer +btn-trigger-happy37+ "BTN_TRIGGER_HAPPY37")
1.670+ (:integer +btn-trigger-happy38+ "BTN_TRIGGER_HAPPY38")
1.671+ (:integer +btn-trigger-happy39+ "BTN_TRIGGER_HAPPY39")
1.672+ (:integer +btn-trigger-happy40+ "BTN_TRIGGER_HAPPY40")
1.673+ (:integer +key-min-interesting+ "KEY_MIN_INTERESTING")
1.674+ (:integer +key-max+ "KEY_MAX")
1.675+ (:integer +key-cnt+ "KEY_CNT")
1.676+ (:integer +rel-x+ "REL_X")
1.677+ (:integer +rel-y+ "REL_Y")
1.678+ (:integer +rel-z+ "REL_Z")
1.679+ (:integer +rel-rx+ "REL_RX")
1.680+ (:integer +rel-ry+ "REL_RY")
1.681+ (:integer +rel-rz+ "REL_RZ")
1.682+ (:integer +rel-hwheel+ "REL_HWHEEL")
1.683+ (:integer +rel-dial+ "REL_DIAL")
1.684+ (:integer +rel-wheel+ "REL_WHEEL")
1.685+ (:integer +rel-misc+ "REL_MISC")
1.686+ (:integer +rel-reserved+ "REL_RESERVED")
1.687+ (:integer +rel-wheel-hi-res+ "REL_WHEEL_HI_RES")
1.688+ (:integer +rel-hwheel-hi-res+ "REL_HWHEEL_HI_RES")
1.689+ (:integer +rel-max+ "REL_MAX")
1.690+ (:integer +rel-cnt+ "REL_CNT")
1.691+ (:integer +abs-x+ "ABS_X")
1.692+ (:integer +abs-y+ "ABS_Y")
1.693+ (:integer +abs-z+ "ABS_Z")
1.694+ (:integer +abs-rx+ "ABS_RX")
1.695+ (:integer +abs-ry+ "ABS_RY")
1.696+ (:integer +abs-rz+ "ABS_RZ")
1.697+ (:integer +abs-throttle+ "ABS_THROTTLE")
1.698+ (:integer +abs-rudder+ "ABS_RUDDER")
1.699+ (:integer +abs-wheel+ "ABS_WHEEL")
1.700+ (:integer +abs-gas+ "ABS_GAS")
1.701+ (:integer +abs-brake+ "ABS_BRAKE")
1.702+ (:integer +abs-hat0x+ "ABS_HAT0X")
1.703+ (:integer +abs-hat0y+ "ABS_HAT0Y")
1.704+ (:integer +abs-hat1x+ "ABS_HAT1X")
1.705+ (:integer +abs-hat1y+ "ABS_HAT1Y")
1.706+ (:integer +abs-hat2x+ "ABS_HAT2X")
1.707+ (:integer +abs-hat2y+ "ABS_HAT2Y")
1.708+ (:integer +abs-hat3x+ "ABS_HAT3X")
1.709+ (:integer +abs-hat3y+ "ABS_HAT3Y")
1.710+ (:integer +abs-pressure+ "ABS_PRESSURE")
1.711+ (:integer +abs-distance+ "ABS_DISTANCE")
1.712+ (:integer +abs-tilt-x+ "ABS_TILT_X")
1.713+ (:integer +abs-tilt-y+ "ABS_TILT_Y")
1.714+ (:integer +abs-tool-width+ "ABS_TOOL_WIDTH")
1.715+ (:integer +abs-volume+ "ABS_VOLUME")
1.716+ (:integer +abs-profile+ "ABS_PROFILE")
1.717+ (:integer +abs-misc+ "ABS_MISC")
1.718+ (:integer +abs-reserved+ "ABS_RESERVED")
1.719+ (:integer +abs-mt-slot+ "ABS_MT_SLOT")
1.720+ (:integer +abs-mt-touch-major+ "ABS_MT_TOUCH_MAJOR")
1.721+ (:integer +abs-mt-touch-minor+ "ABS_MT_TOUCH_MINOR")
1.722+ (:integer +abs-mt-width-major+ "ABS_MT_WIDTH_MAJOR")
1.723+ (:integer +abs-mt-width-minor+ "ABS_MT_WIDTH_MINOR")
1.724+ (:integer +abs-mt-orientation+ "ABS_MT_ORIENTATION")
1.725+ (:integer +abs-mt-position-x+ "ABS_MT_POSITION_X")
1.726+ (:integer +abs-mt-position-y+ "ABS_MT_POSITION_Y")
1.727+ (:integer +abs-mt-tool-type+ "ABS_MT_TOOL_TYPE")
1.728+ (:integer +abs-mt-blob-id+ "ABS_MT_BLOB_ID")
1.729+ (:integer +abs-mt-tracking-id+ "ABS_MT_TRACKING_ID")
1.730+ (:integer +abs-mt-pressure+ "ABS_MT_PRESSURE")
1.731+ (:integer +abs-mt-distance+ "ABS_MT_DISTANCE")
1.732+ (:integer +abs-mt-tool-x+ "ABS_MT_TOOL_X")
1.733+ (:integer +abs-mt-tool-y+ "ABS_MT_TOOL_Y")
1.734+ (:integer +abs-max+ "ABS_MAX")
1.735+ (:integer +abs-cnt+ "ABS_CNT")
1.736+ (:integer +sw-lid+ "SW_LID")
1.737+ (:integer +sw-tablet-mode+ "SW_TABLET_MODE")
1.738+ (:integer +sw-headphone-insert+ "SW_HEADPHONE_INSERT")
1.739+ (:integer +sw-rfkill-all+ "SW_RFKILL_ALL")
1.740+ (:integer +sw-radio+ "SW_RADIO")
1.741+ (:integer +sw-microphone-insert+ "SW_MICROPHONE_INSERT")
1.742+ (:integer +sw-dock+ "SW_DOCK")
1.743+ (:integer +sw-lineout-insert+ "SW_LINEOUT_INSERT")
1.744+ (:integer +sw-jack-physical-insert+ "SW_JACK_PHYSICAL_INSERT")
1.745+ (:integer +sw-videoout-insert+ "SW_VIDEOOUT_INSERT")
1.746+ (:integer +sw-camera-lens-cover+ "SW_CAMERA_LENS_COVER")
1.747+ (:integer +sw-keypad-slide+ "SW_KEYPAD_SLIDE")
1.748+ (:integer +sw-front-proximity+ "SW_FRONT_PROXIMITY")
1.749+ (:integer +sw-rotate-lock+ "SW_ROTATE_LOCK")
1.750+ (:integer +sw-linein-insert+ "SW_LINEIN_INSERT")
1.751+ (:integer +sw-mute-device+ "SW_MUTE_DEVICE")
1.752+ (:integer +sw-pen-inserted+ "SW_PEN_INSERTED")
1.753+ (:integer +sw-machine-cover+ "SW_MACHINE_COVER")
1.754+ (:integer +sw-max+ "SW_MAX")
1.755+ (:integer +sw-cnt+ "SW_CNT")
1.756+ (:integer +msc-serial+ "MSC_SERIAL")
1.757+ (:integer +msc-pulseled+ "MSC_PULSELED")
1.758+ (:integer +msc-gesture+ "MSC_GESTURE")
1.759+ (:integer +msc-raw+ "MSC_RAW")
1.760+ (:integer +msc-scan+ "MSC_SCAN")
1.761+ (:integer +msc-timestamp+ "MSC_TIMESTAMP")
1.762+ (:integer +msc-max+ "MSC_MAX")
1.763+ (:integer +msc-cnt+ "MSC_CNT")
1.764+ (:integer +led-numl+ "LED_NUML")
1.765+ (:integer +led-capsl+ "LED_CAPSL")
1.766+ (:integer +led-scrolll+ "LED_SCROLLL")
1.767+ (:integer +led-compose+ "LED_COMPOSE")
1.768+ (:integer +led-kana+ "LED_KANA")
1.769+ (:integer +led-sleep+ "LED_SLEEP")
1.770+ (:integer +led-suspend+ "LED_SUSPEND")
1.771+ (:integer +led-mute+ "LED_MUTE")
1.772+ (:integer +led-misc+ "LED_MISC")
1.773+ (:integer +led-mail+ "LED_MAIL")
1.774+ (:integer +led-charging+ "LED_CHARGING")
1.775+ (:integer +led-max+ "LED_MAX")
1.776+ (:integer +led-cnt+ "LED_CNT")
1.777+ (:integer +rep-delay+ "REP_DELAY")
1.778+ (:integer +rep-period+ "REP_PERIOD")
1.779+ (:integer +rep-max+ "REP_MAX")
1.780+ (:integer +rep-cnt+ "REP_CNT")
1.781+ (:integer +snd-click+ "SND_CLICK")
1.782+ (:integer +snd-bell+ "SND_BELL")
1.783+ (:integer +snd-tone+ "SND_TONE")
1.784+ (:integer +snd-max+ "SND_MAX")
1.785+ (:integer +snd-cnt+ "SND_CNT")
1.786+ ;; linux/event.h
1.787+ (:integer +ev-version+ "EV_VERSION")
1.788+ (:integer +eviocgversion+ "EVIOCGVERSION")
1.789+ (:integer +eviocgid+ "EVIOCGID")
1.790+ (:integer +eviocgrep+ "EVIOCGREP")
1.791+ (:integer +eviocsrep+ "EVIOCSREP")
1.792+ (:integer +eviocgkeycode+ "EVIOCGKEYCODE")
1.793+ (:integer +eviocgkeycode-v2+ "EVIOCGKEYCODE_V2")
1.794+ (:integer +eviocskeycode+ "EVIOCSKEYCODE")
1.795+ (:integer +eviocskeycode-v2+ "EVIOCSKEYCODE_V2")
1.796+ (:integer +eviocsff+ "EVIOCSFF")
1.797+ (:integer +eviocrmff "EVIOCRMFF")
1.798+ (:integer +eviocgeffects+ "EVIOCGEFFECTS")
1.799+ (:integer +eviocgrab+ "EVIOCGRAB")
1.800+ (:integer +eviocrevoke+ "EVIOCREVOKE")
1.801+ (:integer +eviocgmask+ "EVIOCGMASK")
1.802+ (:integer +eviocsmask+ "EVIOCSMASK")
1.803+ (:integer +eviocsclockid+ "EVIOCSCLOCKID")
1.804+ (:integer +id-bus+ "ID_BUS")
1.805+ (:integer +id-vendor+ "ID_VENDOR")
1.806+ (:integer +id-product+ "ID_PRODUCT")
1.807+ (:integer +id-version+ "ID_VERSION")
1.808+ (:integer +bus-pci+ "BUS_PCI")
1.809+ (:integer +bus-isapnp+ "BUS_ISAPNP")
1.810+ (:integer +bus-usb+ "BUS_USB")
1.811+ (:integer +bus-hil+ "BUS_HIL")
1.812+ (:integer +bus-bluetooth+ "BUS_BLUETOOTH")
1.813+ (:integer +bus-virtual+ "BUS_VIRTUAL")
1.814+ (:integer +bus-isa+ "BUS_ISA")
1.815+ (:integer +bus-i8042+ "BUS_I8042")
1.816+ (:integer +bus-xtkbd+ "BUS_XTKBD")
1.817+ (:integer +bus-rs232+ "BUS_RS232")
1.818+ (:integer +bus-gameport+ "BUS_GAMEPORT")
1.819+ (:integer +bus-parport+ "BUS_PARPORT")
1.820+ (:integer +bus-amiga+ "BUS_AMIGA")
1.821+ (:integer +bus-adb+ "BUS_ADB")
1.822+ (:integer +bus-i2c+ "BUS_I2C")
1.823+ (:integer +bus-host+ "BUS_HOST")
1.824+ (:integer +bus-gsc+ "BUS_GSC")
1.825+ (:integer +bus-atari+ "BUS_ATARI")
1.826+ (:integer +bus-spi+ "BUS_SPI")
1.827+ (:integer +bus-rmi+ "BUS_RMI")
1.828+ (:integer +bus-cec+ "BUS_CEC")
1.829+ (:integer +bus-intel-ishtp+ "BUS_INTEL_ISHTP")
1.830+ (:integer +bus-amd-sfh+ "BUS_AMD_SFH")
1.831+ (:integer +mt-tool-finger+ "MT_TOOL_FINGER")
1.832+ (:integer +mt-tool-pen+ "MT_TOOL_PEN")
1.833+ (:integer +mt-tool-palm+ "MT_TOOL_PALM")
1.834+ (:integer +mt-tool-dial+ "MT_TOOL_DIAL")
1.835+ (:integer +mt-tool-max+ "MT_TOOL_MAX")
1.836+ (:integer +ff-status-stopped+ "FF_STATUS_STOPPED")
1.837+ (:integer +ff-status-playing+ "FF_STATUS_PLAYING")
1.838+ (:integer +ff-status-max+ "FF_STATUS_MAX")
1.839+ (:integer +ff-rumble+ "FF_RUMBLE")
1.840+ (:integer +ff-periodic+ "FF_PERIODIC")
1.841+ (:integer +ff-constant+ "FF_CONSTANT")
1.842+ (:integer +ff-spring+ "FF_SPRING")
1.843+ (:integer +ff-friction+ "FF_FRICTION")
1.844+ (:integer +ff-damper+ "FF_DAMPER")
1.845+ (:integer +ff-inertia+ "FF_INERTIA")
1.846+ (:integer +ff-ramp+ "FF_RAMP")
1.847+ (:integer +ff-effect-min+ "FF_EFFECT_MIN")
1.848+ (:integer +ff-effect-max+ "FF_EFFECT_MAX")
1.849+ (:integer +ff-square+ "FF_SQUARE")
1.850+ (:integer +ff-triangle+ "FF_TRIANGLE")
1.851+ (:integer +ff-sine+ "FF_SINE")
1.852+ (:integer +ff-saw-up+ "FF_SAW_UP")
1.853+ (:integer +ff-saw-down+ "FF_SAW_DOWN")
1.854+ (:integer +ff-custom+ "FF_CUSTOM")
1.855+ (:integer +ff-waveform-min+ "FF_WAVEFORM_MIN")
1.856+ (:integer +ff-waveform-max+ "FF_WAVEFORM_MAX")
1.857+ (:integer +ff-gain+ "FF_GAIN")
1.858+ (:integer +ff-autocenter+ "FF_AUTOCENTER")
1.859+ (:integer +ff-max-effects+ "FF_MAX_EFFECTS")
1.860+ (:integer +ff-max+ "FF_MAX")
1.861+ (:integer +ff-cnt+ "FF_CNT"))
1.862+
1.863+
2.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
2.2+++ b/lisp/ffi/evdev/dev.lisp Sun Sep 29 00:31:24 2024 -0400
2.3@@ -0,0 +1,301 @@
2.4+;;; dev.lisp --- Event Device FFI
2.5+
2.6+;;
2.7+
2.8+;;; Code:
2.9+(in-package :evdev)
2.10+
2.11+(define-alien-enum (libevdev-read-status unsigned-char)
2.12+ :success 0
2.13+ :sync 1)
2.14+
2.15+(define-alien-routine libevdev-next-event int
2.16+ (dev (* libevdev))
2.17+ (flags unsigned-int)
2.18+ (ev (* input-event)))
2.19+
2.20+(define-alien-routine libevdev-has-event-pending int
2.21+ (dev (* libevdev)))
2.22+
2.23+(define-alien-routine libevdev-get-name c-string
2.24+ (dev (* libevdev)))
2.25+
2.26+(define-alien-routine libevdev-set-name void
2.27+ (dev (* libevdev))
2.28+ (name c-string))
2.29+
2.30+(define-alien-routine libevdev-get-phys c-string
2.31+ (dev (* libevdev)))
2.32+
2.33+(define-alien-routine libevdev-set-phys void
2.34+ (dev (* libevdev))
2.35+ (phys c-string))
2.36+
2.37+(define-alien-routine libevdev-get-uniq c-string
2.38+ (dev (* libevdev)))
2.39+
2.40+(define-alien-routine libevdev-set-uniq void
2.41+ (dev (* libevdev))
2.42+ (uniq c-string))
2.43+
2.44+(define-alien-routine libevdev-get-id-product int
2.45+ (dev (* libevdev)))
2.46+
2.47+(define-alien-routine libevdev-set-id-product void
2.48+ (dev (* libevdev))
2.49+ (product-id int))
2.50+
2.51+(define-alien-routine libevdev-get-id-vendor int
2.52+ (dev (* libevdev)))
2.53+
2.54+(define-alien-routine libevdev-set-id-vendor void
2.55+ (dev (* libevdev))
2.56+ (vendor-id int))
2.57+
2.58+(define-alien-routine libevdev-get-id-bustype int
2.59+ (dev (* libevdev)))
2.60+
2.61+(define-alien-routine libevdev-set-id-bustype void
2.62+ (dev (* libevdev))
2.63+ (bustype int))
2.64+
2.65+(define-alien-routine libevdev-get-id-version int
2.66+ (dev (* libevdev)))
2.67+
2.68+(define-alien-routine libevdev-set-id-version void
2.69+ (dev (* libevdev))
2.70+ (version int))
2.71+
2.72+(define-alien-routine libevdev-get-driver-version int
2.73+ (dev (* libevdev)))
2.74+
2.75+(define-alien-routine libevdev-has-property int
2.76+ (dev (* libevdev))
2.77+ (prop unsigned-int))
2.78+
2.79+(define-alien-routine libevdev-enable-property int
2.80+ (dev (* libevdev))
2.81+ (prop unsigned-int))
2.82+
2.83+(define-alien-routine libevdev-disable-property int
2.84+ (dev (* libevdev))
2.85+ (prop unsigned-int))
2.86+
2.87+(define-alien-routine libevdev-has-event-type int
2.88+ (dev (* libevdev))
2.89+ (type unsigned-int))
2.90+
2.91+(define-alien-routine libevdev-has-event-code int
2.92+ (dev (* libevdev))
2.93+ (type unsigned-int)
2.94+ (code unsigned-int))
2.95+
2.96+(define-alien-routine libevdev-get-abs-minimum int
2.97+ (dev (* libevdev))
2.98+ (code unsigned-int))
2.99+
2.100+(define-alien-routine libevdev-get-abs-maximum int
2.101+ (dev (* libevdev))
2.102+ (code unsigned-int))
2.103+
2.104+(define-alien-routine libevdev-get-abs-fuzz int
2.105+ (dev (* libevdev))
2.106+ (code unsigned-int))
2.107+
2.108+(define-alien-routine libevdev-get-abs-resolution int
2.109+ (dev (* libevdev))
2.110+ (code unsigned-int))
2.111+
2.112+(define-alien-routine libevdev-get-abs-info (* input-absinfo)
2.113+ (dev (* libevdev))
2.114+ (code unsigned-int))
2.115+
2.116+(define-alien-routine libevdev-get-event-value int
2.117+ (dev (* libevdev))
2.118+ (type unsigned-int)
2.119+ (code unsigned-int))
2.120+
2.121+(define-alien-routine libevdev-set-event-value int
2.122+ (dev (* libevdev))
2.123+ (type unsigned-int)
2.124+ (code unsigned-int)
2.125+ (value int))
2.126+
2.127+(define-alien-routine libevdev-fetch-event-value int
2.128+ (dev (* libevdev))
2.129+ (type unsigned-int)
2.130+ (code unsigned-int)
2.131+ (value (* int)))
2.132+
2.133+(define-alien-routine libevdev-get-slot-value int
2.134+ (dev (* libevdev))
2.135+ (slot unsigned-int)
2.136+ (code unsigned-int))
2.137+
2.138+(define-alien-routine libevdev-set-slot-value int
2.139+ (dev (* libevdev))
2.140+ (slot unsigned-int)
2.141+ (code unsigned-int)
2.142+ (value int))
2.143+
2.144+(define-alien-routine libevdev-fetch-slot-value int
2.145+ (dev (* libevdev))
2.146+ (slot unsigned-int)
2.147+ (code unsigned-int)
2.148+ (value (* int)))
2.149+
2.150+(define-alien-routine libevdev-get-num-slots int
2.151+ (dev (* libevdev)))
2.152+
2.153+(define-alien-routine libevdev-get-current-slot int
2.154+ (dev (* libevdev)))
2.155+
2.156+(define-alien-routine libevdev-set-abs-minimum void
2.157+ (dev (* libevdev))
2.158+ (code unsigned-int)
2.159+ (val int))
2.160+
2.161+(define-alien-routine libevdev-set-abs-maximum void
2.162+ (dev (* libevdev))
2.163+ (code unsigned-int)
2.164+ (val int))
2.165+
2.166+(define-alien-routine libevdev-set-abs-fuzz void
2.167+ (dev (* libevdev))
2.168+ (code unsigned-int)
2.169+ (val int))
2.170+
2.171+(define-alien-routine libevdev-set-abs-flat void
2.172+ (dev (* libevdev))
2.173+ (code unsigned-int)
2.174+ (val int))
2.175+
2.176+(define-alien-routine libevdev-set-abs-resolution void
2.177+ (dev (* libevdev))
2.178+ (code unsigned-int)
2.179+ (val int))
2.180+
2.181+(define-alien-routine libevdev-set-abs-info void
2.182+ (dev (* libevdev))
2.183+ (code unsigned-int)
2.184+ (abs (* input-absinfo)))
2.185+
2.186+(define-alien-routine libevdev-enable-event-type int
2.187+ (dev (* libevdev))
2.188+ (type unsigned-int))
2.189+
2.190+(define-alien-routine libevdev-disable-event-type int
2.191+ (dev (* libevdev))
2.192+ (type unsigned-int))
2.193+
2.194+(define-alien-routine libevdev-enable-event-code int
2.195+ (dev (* libevdev))
2.196+ (type unsigned-int)
2.197+ (code unsigned-int)
2.198+ (data (* t)))
2.199+
2.200+(define-alien-routine libevdev-disable-event-code int
2.201+ (dev (* libevdev))
2.202+ (type unsigned-int)
2.203+ (code unsigned-int))
2.204+
2.205+(define-alien-routine libevdev-kernel-set-abs-info int
2.206+ (dev (* libevdev))
2.207+ (code unsigned-int)
2.208+ (abs (* input-absinfo)))
2.209+
2.210+(define-alien-enum (libevdev-led-value unsigned-char)
2.211+ :on 3
2.212+ :off 4)
2.213+
2.214+(define-alien-routine libevdev-kernel-set-led-value int
2.215+ (dev (* libevdev))
2.216+ (code unsigned-int)
2.217+ (value libevdev-led-value))
2.218+
2.219+;; (define-alien-routine libevdev-kernel-set-led-values int
2.220+;; (dev (* libevdev)))
2.221+
2.222+(define-alien-routine libevdev-set-clock-id int
2.223+ (dev (* libevdev))
2.224+ (clockid int))
2.225+
2.226+(define-alien-routine libevdev-event-is-type int
2.227+ (ev (* input-event))
2.228+ (type unsigned-int))
2.229+
2.230+(define-alien-routine libevdev-event-is-code int
2.231+ (ev (* input-event))
2.232+ (type unsigned-int)
2.233+ (code unsigned-int))
2.234+
2.235+(define-alien-routine libevdev-event-type-get-name c-string
2.236+ (type unsigned-int))
2.237+
2.238+(define-alien-routine libevdev-event-code-get-name c-string
2.239+ (type unsigned-int)
2.240+ (code unsigned-int))
2.241+
2.242+(define-alien-routine libevdev-event-value-get-name c-string
2.243+ (type unsigned-int)
2.244+ (code unsigned-int)
2.245+ (value int))
2.246+
2.247+(define-alien-routine libevdev-property-get-name c-string
2.248+ (prop unsigned-int))
2.249+
2.250+(define-alien-routine libevdev-event-type-get-max int
2.251+ (type unsigned-int))
2.252+
2.253+(define-alien-routine libevdev-event-type-from-name int
2.254+ (name c-string))
2.255+
2.256+(define-alien-routine libevdev-event-type-from-name-n int
2.257+ (name c-string)
2.258+ (len size-t))
2.259+
2.260+(define-alien-routine libevdev-event-code-from-name int
2.261+ (type unsigned-int)
2.262+ (name c-string))
2.263+
2.264+(define-alien-routine libevdev-event-code-from-name-n int
2.265+ (type unsigned-int)
2.266+ (name c-string)
2.267+ (len size-t))
2.268+
2.269+(define-alien-routine libevdev-event-value-from-name int
2.270+ (type unsigned-int)
2.271+ (code unsigned-int)
2.272+ (name c-string))
2.273+
2.274+(define-alien-routine libevdev-event-type-from-code-name int
2.275+ (name c-string))
2.276+
2.277+(define-alien-routine libevdev-event-type-from-code-name-n int
2.278+ (name c-string)
2.279+ (len size-t))
2.280+
2.281+(define-alien-routine libevdev-event-code-from-code-name int
2.282+ (name c-string))
2.283+
2.284+(define-alien-routine libevdev-event-code-from-code-name-n int
2.285+ (name c-string)
2.286+ (len size-t))
2.287+
2.288+(define-alien-routine libevdev-event-value-from-name-n int
2.289+ (type unsigned-int)
2.290+ (code unsigned-int)
2.291+ (name c-string)
2.292+ (len size-t))
2.293+
2.294+(define-alien-routine libevdev-property-from-name int
2.295+ (name c-string))
2.296+
2.297+(define-alien-routine libevdev-property-from-name-n int
2.298+ (name c-string)
2.299+ (len size-t))
2.300+
2.301+(define-alien-routine libevdev-get-repeat int
2.302+ (dev (* libevdev))
2.303+ (delay (* int))
2.304+ (period (* int)))
3.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
3.2+++ b/lisp/ffi/evdev/evdev.asd Sun Sep 29 00:31:24 2024 -0400
3.3@@ -0,0 +1,29 @@
3.4+;;; evdev.asd --- Evdev Sytem Definitions
3.5+
3.6+;; libevdev for lisp.
3.7+
3.8+;;; Commentary:
3.9+
3.10+;; https://gitlab.freedesktop.org/libevdev/libevdev
3.11+
3.12+;;; Code:
3.13+(eval-when (:compile-toplevel :load-toplevel :execute)
3.14+ (require :sb-grovel))
3.15+
3.16+(defpackage :evdev.sys
3.17+ (:use :cl :asdf :sb-grovel :sb-alien))
3.18+
3.19+(in-package :evdev.sys)
3.20+
3.21+(defsystem :evdev
3.22+ :depends-on (:std :sb-grovel)
3.23+ :components ((:file "pkg")
3.24+ (grovel-constants-file "constants" :package :evdev)
3.25+ (:file "input")
3.26+ (:file "dev"))
3.27+ :in-order-to ((test-op (test-op "evdev/tests"))))
3.28+
3.29+(defsystem :evdev/tests
3.30+ :depends-on (:rt :evdev :xkb)
3.31+ :components ((:file "tests"))
3.32+ :perform (test-op (op c) (uiop:symbol-call :rt :do-tests :btrfs)))
4.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
4.2+++ b/lisp/ffi/evdev/input.lisp Sun Sep 29 00:31:24 2024 -0400
4.3@@ -0,0 +1,116 @@
4.4+;;; input.lisp --- Linux Input Subsystem Wrappers
4.5+
4.6+;;
4.7+
4.8+;;; Code:
4.9+(in-package :evdev/input)
4.10+
4.11+;; from linux/time.h
4.12+(define-alien-type timeval
4.13+ (struct timeval
4.14+ (tv-sec sb-unix:time-t)
4.15+ (tv-nsec long)))
4.16+
4.17+(define-alien-type input-event
4.18+ (struct input-event
4.19+ (time timeval)
4.20+ (type (unsigned 16))
4.21+ (code (unsigned 16))
4.22+ (value (signed 32))))
4.23+
4.24+(define-alien-type input-id
4.25+ (struct input-id
4.26+ (bustype (unsigned 16))
4.27+ (vendor (unsigned 16))
4.28+ (product (unsigned 16))
4.29+ (version (unsigned 16))))
4.30+
4.31+(define-alien-type input-absinfo
4.32+ (struct input-absinfo
4.33+ (value signed)
4.34+ (minimum signed)
4.35+ (maximum signed)
4.36+ (fuzz signed)
4.37+ (flat signed)
4.38+ (resolution signed)))
4.39+
4.40+(define-alien-type input-keymap-entry
4.41+ (struct input-keymap-entry
4.42+ (flags unsigned-char)
4.43+ (len unsigned-char)
4.44+ (index unsigned-short)
4.45+ (keycode unsigned)
4.46+ (scancode (array (unsigned 8) 32))))
4.47+
4.48+(define-alien-type input-mask
4.49+ (struct input-mask
4.50+ (type unsigned)
4.51+ (codes-size unsigned)
4.52+ (codes-ptr (unsigned 64))))
4.53+
4.54+(define-alien-type ff-replay
4.55+ (struct ff-replay
4.56+ (length unsigned-short)
4.57+ (delay unsigned-short)))
4.58+
4.59+(define-alien-type ff-trigger
4.60+ (struct ff-trigger
4.61+ (button unsigned-short)
4.62+ (interval unsigned-short)))
4.63+
4.64+(define-alien-type ff-envelope
4.65+ (struct ff-envelope
4.66+ (attack-length unsigned-short)
4.67+ (attack-level unsigned-short)
4.68+ (fade-length unsigned-short)
4.69+ (fade-level unsigned-short)))
4.70+
4.71+(define-alien-type ff-constant-effect
4.72+ (struct ff-constant-effect
4.73+ (level short)
4.74+ (envelop ff-envelope)))
4.75+
4.76+(define-alien-type ff-ramp-effect
4.77+ (struct ff-ramp-effect
4.78+ (start-level short)
4.79+ (end-level short)
4.80+ (envelope ff-envelope)))
4.81+
4.82+(define-alien-type ff-condition-effect
4.83+ (struct ff-condition-effect
4.84+ (right-saturation unsigned-short)
4.85+ (left-saturation unsigned-short)
4.86+ (right-coeff short)
4.87+ (left-coeff short)
4.88+ (deadband unsigned-short)
4.89+ (center short)))
4.90+
4.91+(define-alien-type ff-periodic-effect
4.92+ (struct ff-periodic-effect
4.93+ (waveform unsigned-short)
4.94+ (period unsigned-short)
4.95+ (magnitutde short)
4.96+ (offset short)
4.97+ (phase unsigned-short)
4.98+ (envelope ff-envelope)
4.99+ (custom-len unsigned)
4.100+ (custom-data (* short))))
4.101+
4.102+(define-alien-type ff-rumble-effect
4.103+ (struct ff-rumble-effect
4.104+ (strong-magnitutde unsigned-short)
4.105+ (weak-magnitude unsigned-short)))
4.106+
4.107+(define-alien-type ff-effect
4.108+ (struct ff-effect
4.109+ (type unsigned-short)
4.110+ (id short)
4.111+ (direction unsigned-short)
4.112+ (trigger ff-trigger)
4.113+ (replay ff-replay)
4.114+ (u (sb-alien:union u
4.115+ (constant ff-constant-effect)
4.116+ (ramp ff-ramp-effect)
4.117+ (periodic ff-periodic-effect)
4.118+ (condition (array ff-condition-effect 2))
4.119+ (rumble ff-rumble-effect)))))
5.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
5.2+++ b/lisp/ffi/evdev/pkg.lisp Sun Sep 29 00:31:24 2024 -0400
5.3@@ -0,0 +1,103 @@
5.4+;;; pkg.lisp --- libevdev FFI
5.5+
5.6+;;
5.7+
5.8+;;; Commentary:
5.9+
5.10+;; note that we also wrap the linux input subsystem linux/input.h which does
5.11+;; not require loading of the libevdev shared library. See input.lisp.
5.12+
5.13+;;; Code:
5.14+(defpackage :evdev/input
5.15+ (:use :cl :std :sb-alien)
5.16+ (:export
5.17+ #:input-event
5.18+ #:input-absinfo))
5.19+
5.20+(defpackage :evdev
5.21+ (:use :cl :std :sb-alien :evdev/input)
5.22+ (:export))
5.23+
5.24+(in-package :evdev)
5.25+(define-alien-loader "evdev" t "/usr/lib/")
5.26+
5.27+(define-alien-type libevdev (struct libevdev))
5.28+
5.29+(define-alien-enum (libevdev-read-flag unsigned-char)
5.30+ :sync 1
5.31+ :normal 2
5.32+ :force-sync 4
5.33+ :blocking 8)
5.34+
5.35+(define-alien-routine libevdev-new (* libevdev))
5.36+
5.37+(define-alien-routine libevdev-new-from-fd int
5.38+ (fd int)
5.39+ (dev (* (* libevdev))))
5.40+
5.41+(define-alien-routine libevdev-free void
5.42+ (dev (* libevdev)))
5.43+
5.44+(define-alien-enum (libevdev-log-priority unsigned-char)
5.45+ :error 10
5.46+ :info 20
5.47+ :debug 30)
5.48+
5.49+
5.50+;; close enough
5.51+(define-alien-type va-list (struct va-list
5.52+ (gp-offset unsigned-int)
5.53+ (fp-offset unsigned-int)
5.54+ (overflow-arg-area (* t))
5.55+ (reg-save-area (* t))))
5.56+
5.57+(define-alien-type libevdev-log-function
5.58+ (function void
5.59+ libevdev-log-priority
5.60+ (* t)
5.61+ c-string
5.62+ int
5.63+ c-string
5.64+ c-string
5.65+ va-list))
5.66+
5.67+(define-alien-routine libevdev-set-log-function void
5.68+ (logfunc libevdev-log-function)
5.69+ (data (* t)))
5.70+
5.71+(define-alien-routine libevdev-set-log-priority void
5.72+ (priority libevdev-log-priority))
5.73+
5.74+(define-alien-routine libevdev-get-log-priority libevdev-log-priority)
5.75+
5.76+(define-alien-type libevdev-device-log-function
5.77+ (function void
5.78+ (* libevdev)
5.79+ libevdev-log-priority
5.80+ (* t)
5.81+ c-string
5.82+ int
5.83+ c-string
5.84+ c-string
5.85+ va-list))
5.86+
5.87+(define-alien-routine libevdev-set-device-log-function void
5.88+ (dev (* libevdev))
5.89+ (logfunc libevdev-device-log-function)
5.90+ (priority libevdev-log-priority)
5.91+ (data (* t)))
5.92+
5.93+(define-alien-enum (libevdev-grab-mode unsigned-char)
5.94+ :grab 3
5.95+ :ungrab 4)
5.96+
5.97+(define-alien-routine libevdev-grab int
5.98+ (dev (* libevdev))
5.99+ (grab libevdev-grab-mode))
5.100+
5.101+(define-alien-routine libevdev-set-fd int
5.102+ (dev (* libevdev))
5.103+ (fd int))
5.104+
5.105+(define-alien-routine libevdev-get-fd int
5.106+ (dev (* libevdev)))
6.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
6.2+++ b/lisp/ffi/evdev/tests.lisp Sun Sep 29 00:31:24 2024 -0400
6.3@@ -0,0 +1,28 @@
6.4+;;; tests.lisp --- evdev FFI tests
6.5+
6.6+;;
6.7+
6.8+;;; Code:
6.9+(defpackage :evdev/tests
6.10+ (:use :cl :std :log :rt :sb-alien :evdev))
6.11+(in-package :evdev/tests)
6.12+(defsuite :evdev)
6.13+(in-suite :evdev)
6.14+(load-evdev nil)
6.15+(deftest sanity ())
6.16+
6.17+#|
6.18+struct libevdev *dev;
6.19+int err;
6.20+
6.21+dev = libevdev_new();
6.22+if (!dev)
6.23+ return ENOMEM;
6.24+
6.25+err = libevdev_set_fd(dev, fd);
6.26+if (err < 0)
6.27+ printf("Failed (errno %d): %s\n", -err, strerror(-err));
6.28+
6.29+libevdev_free(dev);
6.30+|#
6.31+(deftest basic ())
7.1--- a/lisp/ffi/xkb/constants.lisp Sat Sep 28 17:48:06 2024 -0400
7.2+++ b/lisp/ffi/xkb/constants.lisp Sun Sep 29 00:31:24 2024 -0400
7.3@@ -1,12 +1,12 @@
7.4 ("stdint.h" "stdio.h" "stdarg.h" "xkbcommon/xkbcommon-names.h" "xkbcommon/xkbcommon-keysyms.h" "xkbcommon/xkbcommon.h" "xkbcommon/xkbregistry.h" "xkbcommon/xkbcommon-compose.h")
7.5
7.6-((:integer xkb-keycode-invalid "XKB_KEYCODE_INVALID" nil t)
7.7- (:integer xkb-layout-invalid "XKB_LAYOUT_INVALID" nil t)
7.8- (:integer xkb-level-invalid "XKB_LEVEL_INVALID" nil t)
7.9- (:integer xkb-mod-invalid "XKB_MOD_INVALID" nil t)
7.10- (:integer xkb-led-invalid "XKB_LED_INVALID" nil t)
7.11- (:integer xkb-keycode-max "XKB_KEYCODE_MAX" nil t)
7.12- (:integer xkb-keysym-max "XKB_KEYSYM_MAX" nil t)
7.13+((:integer +xkb-keycode-invalid+ "XKB_KEYCODE_INVALID")
7.14+ (:integer +xkb-layout-invalid+ "XKB_LAYOUT_INVALID")
7.15+ (:integer +xkb-level-invalid+ "XKB_LEVEL_INVALID")
7.16+ (:integer +xkb-mod-invalid+ "XKB_MOD_INVALID")
7.17+ (:integer +xkb-led-invalid+ "XKB_LED_INVALID")
7.18+ (:integer +xkb-keycode-max+ "XKB_KEYCODE_MAX")
7.19+ (:integer +xkb-keysym-max+ "XKB_KEYSYM_MAX")
7.20 ;; (:enum xkb-keymap-format ((xkb-keymap-format-text-v1 "XKB_KEYMAP_FORMAT_TEXT_V1")))
7.21 ;; (:enum xkb-log-level ((xkb-log-level-critical "XKB_LOG_LEVEL_CRITICAL")
7.22 ;; (xkb-log-level-error "XKB_LOG_LEVEL_ERROR")
7.23@@ -14,7 +14,7 @@
7.24 ;; (xkb-log-level-info "XKB_LOG_LEVEL_INFO")
7.25 ;; (xkb-log-level-debug "XKB_LOG_LEVEL_DEBUG")) nil t)
7.26 ;; (:enum xkb-keymap-compile-flags ((xkb-keymap-compile-no-flags "XKB_KEYMAP_COMPILE_NO_FLAGS")) nil t)
7.27- (:integer xkb-keymap-use-original-format "XKB_KEYMAP_USE_ORIGINAL_FORMAT" nil t)
7.28+ (:integer +xkb-keymap-use-original-format+ "XKB_KEYMAP_USE_ORIGINAL_FORMAT")
7.29 ;; (:enum xkb-key-direction ((xkb-key-up "XKB_KEY_UP")
7.30 ;; (xkb-key-down "XKB_KEY_DOWN")))
7.31 ;; (:enum xkb-state-component ((xkb-state-mods-depressed "XKB_STATE_MODS_DEPRESSED")
8.1--- a/lisp/ffi/xkb/pkg.lisp Sat Sep 28 17:48:06 2024 -0400
8.2+++ b/lisp/ffi/xkb/pkg.lisp Sun Sep 29 00:31:24 2024 -0400
8.3@@ -41,10 +41,18 @@
8.4 (define-alien-type xkb-mod-mask unsigned-int)
8.5 (define-alien-type xkb-led-index unsigned-int)
8.6 (define-alien-type xkb-led-mask unsigned-int)
8.7-;; TODO 2024-05-09:
8.8-;; (define-alien-type xkb-keysym-flags boolean)
8.9-;; (define-alien-type xkb-context-flags unsigned-char)
8.10-;; (define-alien-type xkb-keymap-compile-flags boolean)
8.11+
8.12+(define-alien-enum (xkb-keysym-flags unsigned-char)
8.13+ :no-flags 0
8.14+ :case-insensitive (ash 1 0))
8.15+(define-alien-enum (xkb-context-flags unsigned-char)
8.16+ :no-flags 0
8.17+ :no-default-includes (ash 1 0)
8.18+ :no-environment-names (ash 1 1)
8.19+ :no-secure-getenv (ash 1 2))
8.20+
8.21+(define-alien-enum (xkb-keymap-compile-flags unsigned-char)
8.22+ :no-flags 0)
8.23 (define-alien-type xkb-keymap-format boolean)
8.24
8.25 (define-alien-type xkb-rule-names
8.26@@ -55,15 +63,14 @@
8.27 (variant c-string)
8.28 (options c-string)))
8.29
8.30-;; TODO 2024-05-09:
8.31-;; (define-alien-routine xkb-keysym-get-name int
8.32-;; (keysym xkb-keysym-flags)
8.33-;; (buffer c-string)
8.34-;; (size size-t))
8.35+(define-alien-routine xkb-keysym-get-name int
8.36+ (keysym xkb-keysym)
8.37+ (buffer (* char))
8.38+ (size size-t))
8.39
8.40-;; (define-alien-routine xkb-keysym-from-name xkb-keysym
8.41-;; (name c-string)
8.42-;; (flags xkb-keysym-flags))
8.43+(define-alien-routine xkb-keysym-from-name xkb-keysym
8.44+ (name c-string)
8.45+ (flags xkb-keysym-flags))
8.46
8.47 (define-alien-routine xkb-keysym-to-utf8 int
8.48 (keysym xkb-keysym)
8.49@@ -82,8 +89,8 @@
8.50 (define-alien-routine xkb-keysym-to-lower xkb-keysym
8.51 (ks xkb-keysym))
8.52
8.53-;; (define-alien-routine xkb-context-new (* xkb-context)
8.54-;; (flags xkb-context-flags))
8.55+(define-alien-routine xkb-context-new (* xkb-context)
8.56+ (flags xkb-context-flags))
8.57
8.58 (define-alien-routine xkb-context-set-user-data void
8.59 (context (* xkb-context))
8.60@@ -117,30 +124,29 @@
8.61
8.62 ;;; Keymap Init
8.63
8.64-;; TODO 2024-05-09:
8.65-;; (define-alien-routine xkb-keymap-new-from-names (* xkb-keymap)
8.66-;; (context (* xkb-context))
8.67-;; (names (* xkb-rule-names))
8.68-;; (flags xkb-keymap-compile-flags))
8.69+(define-alien-routine xkb-keymap-new-from-names (* xkb-keymap)
8.70+ (context (* xkb-context))
8.71+ (names (* xkb-rule-names))
8.72+ (flags xkb-keymap-compile-flags))
8.73
8.74-;; (define-alien-routine xkb-keymap-new-from-file (* xkb-keymap)
8.75-;; (context (* xkb-context))
8.76-;; (file (* t))
8.77-;; (fmt xkb-keymap-format)
8.78-;; (flags xkb-keymap-compile-flags))
8.79+(define-alien-routine xkb-keymap-new-from-file (* xkb-keymap)
8.80+ (context (* xkb-context))
8.81+ (file (* t))
8.82+ (fmt xkb-keymap-format)
8.83+ (flags xkb-keymap-compile-flags))
8.84
8.85-;; (define-alien-routine xkb-keymap-new-from-string (* xkb-keymap)
8.86-;; (context (* xkb-context))
8.87-;; (str c-string)
8.88-;; (fmt xkb-keymap-format)
8.89-;; (flags xkb-keymap-compile-flags))
8.90+(define-alien-routine xkb-keymap-new-from-string (* xkb-keymap)
8.91+ (context (* xkb-context))
8.92+ (str c-string)
8.93+ (fmt xkb-keymap-format)
8.94+ (flags xkb-keymap-compile-flags))
8.95
8.96-;; (define-alien-routine xkb-keymap-new-from-buffer (* xkb-keymap)
8.97-;; (context (* xkb-context))
8.98-;; (buffer c-string)
8.99-;; (length size-t)
8.100-;; (fmt xkb-keymap-format)
8.101-;; (flags xkb-keymap-compile-flags))
8.102+(define-alien-routine xkb-keymap-new-from-buffer (* xkb-keymap)
8.103+ (context (* xkb-context))
8.104+ (buffer c-string)
8.105+ (length size-t)
8.106+ (fmt xkb-keymap-format)
8.107+ (flags xkb-keymap-compile-flags))
8.108
8.109 ;;; Keymap Components
8.110
8.111@@ -217,5 +223,249 @@
8.112 (key xkb-keycode))
8.113
8.114 ;;; TODO Keyboard State
8.115+(define-alien-routine xkb-state-new (* xkb-state) (keymap (* xkb-keymap)))
8.116+(define-alien-routine xkb-state-ref (* xkb-state) (state (* xkb-state)))
8.117+(define-alien-routine xkb-state-unref void (state (* xkb-state)))
8.118+(define-alien-routine xkb-state-get-keymap (* xkb-keymap) (state (* xkb-state)))
8.119
8.120-;;; TODO Compose/Dead-keys support
8.121+(define-alien-enum (xkb-key-direction unsigned-char)
8.122+ :up 0
8.123+ :down 1)
8.124+
8.125+(define-alien-enum (xkb-state-component int)
8.126+ :mods-depressed (ash 1 0)
8.127+ :mods-latched (ash 1 1)
8.128+ :mods-locked (ash 1 2)
8.129+ :mods-effective (ash 1 3)
8.130+ :layout-depressed (ash 1 4)
8.131+ :layout-latched (ash 1 5)
8.132+ :layout-locked (ash 1 6)
8.133+ :layout-effective (ash 1 7)
8.134+ :leds (ash 1 8))
8.135+
8.136+(define-alien-routine xkb-state-update-key xkb-state-component
8.137+ (state (* xkb-state))
8.138+ (key xkb-keycode)
8.139+ (direction xkb-key-direction))
8.140+
8.141+(define-alien-routine xkb-state-update-mask xkb-state-component
8.142+ (state (* xkb-state))
8.143+ (depressed-mods xkb-mod-mask)
8.144+ (latched-mods xkb-mod-mask)
8.145+ (locked-mods xkb-mod-mask)
8.146+ (depressed-layout xkb-mod-mask)
8.147+ (latched-layout xkb-mod-mask)
8.148+ (locked-layout xkb-mod-mask))
8.149+
8.150+(define-alien-routine xkb-state-key-get-syms int
8.151+ (state (* xkb-state))
8.152+ (key xkb-keycode)
8.153+ (syms-out (* (* xkb-keysym))))
8.154+
8.155+(define-alien-routine xkb-state-key-get-utf8 int
8.156+ (state (* xkb-state))
8.157+ (key xkb-keycode)
8.158+ (buffer (* char))
8.159+ (size size-t))
8.160+
8.161+(define-alien-routine xkb-state-key-get-utf32 int
8.162+ (state (* xkb-state))
8.163+ (key xkb-keycode))
8.164+
8.165+(define-alien-routine xkb-state-key-get-one-sym xkb-keysym
8.166+ (state (* xkb-state))
8.167+ (key xkb-keycode))
8.168+
8.169+(define-alien-routine xkb-state-key-get-layout xkb-layout-index
8.170+ (state (* xkb-state))
8.171+ (key xkb-keycode))
8.172+
8.173+(define-alien-routine xkb-state-key-get-level xkb-level-index
8.174+ (state (* xkb-state))
8.175+ (key xkb-keycode)
8.176+ (layout xkb-layout-index))
8.177+
8.178+(define-alien-enum (xkb-state-match int)
8.179+ :any (ash 1 0)
8.180+ :all (ash 1 1)
8.181+ :non-exclusive (ash 1 16))
8.182+
8.183+(define-alien-routine xkb-state-serialize-mods xkb-mod-mask
8.184+ (state (* xkb-state))
8.185+ (components xkb-state-component))
8.186+
8.187+(define-alien-routine xkb-state-serialize-layout xkb-layout-index
8.188+ (state (* xkb-state))
8.189+ (components xkb-state-component))
8.190+
8.191+(define-alien-routine xkb-state-mod-name-is-active int
8.192+ (state (* xkb-state))
8.193+ (name (* char))
8.194+ (type xkb-state-component))
8.195+
8.196+(define-alien-routine xkb-state-mod-names-are-active int
8.197+ (state (* xkb-state))
8.198+ (type xkb-state-component)
8.199+ (match xkb-state-match)
8.200+ #+nil ...)
8.201+
8.202+(define-alien-routine xkb-state-mod-index-is-active int
8.203+ (state (* xkb-state))
8.204+ (idx xkb-mod-index)
8.205+ (type xkb-state-component))
8.206+
8.207+(define-alien-routine xkb-state-mod-indices-are-active int
8.208+ (state (* xkb-state))
8.209+ (type xkb-state-component)
8.210+ (match xkb-state-match)
8.211+ #+nil ...)
8.212+
8.213+(define-alien-enum (xkb-consumed-mode int)
8.214+ :xkb 0
8.215+ :gtk 1)
8.216+
8.217+(define-alien-routine xkb-state-key-get-consumed-mods2 xkb-mod-mask
8.218+ (state (* xkb-state))
8.219+ (key xkb-keycode)
8.220+ (mode xkb-consumed-mode))
8.221+
8.222+(define-alien-routine xkb-state-key-get-consumed-mods xkb-mod-mask
8.223+ (state (* xkb-state))
8.224+ (key xkb-keycode))
8.225+
8.226+(define-alien-routine xkb-state-mod-index-is-consumed2 int
8.227+ (state (* xkb-state))
8.228+ (key xkb-keycode)
8.229+ (idx xkb-mod-index)
8.230+ (mode xkb-consumed-mode))
8.231+
8.232+(define-alien-routine xkb-state-mod-index-is-consumed int
8.233+ (state (* xkb-state))
8.234+ (key xkb-keycode)
8.235+ (idx xkb-mod-index))
8.236+
8.237+(define-alien-routine xkb-state-mode-mask-remove-consumed xkb-mod-mask
8.238+ (state (* xkb-state))
8.239+ (key xkb-keycode)
8.240+ (mask xkb-mod-mask))
8.241+
8.242+(define-alien-routine xkb-state-layout-name-is-active int
8.243+ (state (* xkb-state))
8.244+ (name (* char))
8.245+ (type xkb-state-component))
8.246+
8.247+(define-alien-routine xkb-state-layout-index-is-active int
8.248+ (state (* xkb-state))
8.249+ (idx xkb-layout-index)
8.250+ (type xkb-state-component))
8.251+
8.252+(define-alien-routine xkb-state-led-name-is-active int
8.253+ (state (* xkb-state))
8.254+ (name (* char)))
8.255+
8.256+(define-alien-routine xkb-state-led-index-is-active int
8.257+ (state (* xkb-state))
8.258+ (idx xkb-led-index))
8.259+
8.260+;;; xkbcommon-compose.h
8.261+(define-alien-type xkb-compose-table (struct xkb-compose-table))
8.262+
8.263+(define-alien-type xkb-compose-state (struct xkb-compose-state))
8.264+
8.265+(define-alien-enum (xkb-compose-compile-flags unsigned-char)
8.266+ :no-flags 0)
8.267+
8.268+(define-alien-enum (xkb-compose-format unsigned-char)
8.269+ :text-v1 1)
8.270+
8.271+(define-alien-routine xkb-compose-table-new-from-locale (* xkb-compose-table)
8.272+ (context (* xkb-context))
8.273+ (locale (* char))
8.274+ (flags xkb-compose-compile-flags))
8.275+
8.276+(define-alien-routine xkb-compose-table-new-from-file (* xkb-compose-table)
8.277+ (file (* t)) ;;FILE
8.278+ (locale (* char))
8.279+ (format xkb-compose-format)
8.280+ (flags xkb-compose-compile-flags))
8.281+
8.282+(define-alien-routine xkb-compose-table-new-from-buffer (* xkb-compose-table)
8.283+ (context (* xkb-context))
8.284+ (buffer (* char))
8.285+ (length size-t)
8.286+ (locale (* char))
8.287+ (format xkb-compose-format)
8.288+ (flags xkb-compose-compile-flags))
8.289+
8.290+(define-alien-routine xkb-compose-table-ref (* xkb-compose-table)
8.291+ (table (* xkb-compose-table)))
8.292+
8.293+(define-alien-routine xkb-compose-table-unref void
8.294+ (table (* xkb-compose-table)))
8.295+
8.296+(define-alien-type xkb-compose-table-entry (struct xkb-compose-table-entry))
8.297+
8.298+(define-alien-routine xkb-compose-table-entry-sequence (* xkb-keysym)
8.299+ (entry (* xkb-compose-table-entry))
8.300+ (sequence-length (* size-t)))
8.301+
8.302+(define-alien-routine xkb-compose-table-entry-keysym xkb-keysym
8.303+ (entry (* xkb-compose-table-entry)))
8.304+
8.305+(define-alien-routine xkb-compose-table-entry-utf8 (* char)
8.306+ (entry (* xkb-compose-table-entry)))
8.307+
8.308+(define-alien-type xkb-compose-table-iterator (struct xkb-compose-table-iterator))
8.309+
8.310+(define-alien-routine xkb-compose-table-iterator-new (* xkb-compose-table-iterator)
8.311+ (table (* xkb-compose-table)))
8.312+
8.313+(define-alien-routine xkb-compose-table-iterator-free void
8.314+ (iter (* xkb-compose-table-iterator)))
8.315+
8.316+(define-alien-routine xkb-compose-table-iterator-next (* xkb-compose-table-entry)
8.317+ (iter (* xkb-compose-table-iterator)))
8.318+
8.319+(define-alien-enum (xkb-compose-state-flags int)
8.320+ :no-flags 0)
8.321+
8.322+(define-alien-routine xkb-compose-state-new (* xkb-compose-state)
8.323+ (table (* xkb-compose-table))
8.324+ (flags xkb-compose-state-flags))
8.325+
8.326+(define-alien-routine xkb-compose-state-ref (* xkb-compose-state)
8.327+ (state (* xkb-compose-state)))
8.328+
8.329+(define-alien-routine xkb-compose-state-unref void
8.330+ (state (* xkb-compose-state)))
8.331+
8.332+(define-alien-routine xkb-compose-state-get-compose-table (* xkb-compose-table)
8.333+ (state (* xkb-compose-state)))
8.334+
8.335+(define-alien-enum (xkb-compose-status unsigned-char)
8.336+ :nothing 0
8.337+ :composing 1
8.338+ :composed 2
8.339+ :cancelled 3)
8.340+
8.341+(define-alien-enum (xkb-compose-feed-result unsigned-char)
8.342+ :ignored 0
8.343+ :accepted 1)
8.344+
8.345+(define-alien-routine xkb-compose-state-feed xkb-compose-feed-result
8.346+ (state (* xkb-compose-state))
8.347+ (keysym xkb-keysym))
8.348+
8.349+(define-alien-routine xkb-compose-state-reset void
8.350+ (state (* xkb-compose-state)))
8.351+
8.352+(define-alien-routine xkb-compose-state-get-status xkb-compose-status
8.353+ (state (* xkb-compose-state)))
8.354+
8.355+(define-alien-routine xkb-compose-state-get-utf8 int
8.356+ (state (* xkb-compose-state))
8.357+ (buffer (* char))
8.358+ (size size-t))
8.359+
8.360+(define-alien-routine xkb-compose-state-get-one-sym xkb-keysym
8.361+ (state (* xkb-compose-state)))
9.1--- a/lisp/ffi/xkb/tests.lisp Sat Sep 28 17:48:06 2024 -0400
9.2+++ b/lisp/ffi/xkb/tests.lisp Sun Sep 29 00:31:24 2024 -0400
9.3@@ -7,4 +7,14 @@
9.4 (load-xkbcommon)
9.5
9.6 (deftest xkb-basic ()
9.7- (is (= xkb:xkb-keysym-max 536870911)))
9.8+ (is (= xkb:xkb-keysym-max 536870911))
9.9+ (let* ((ctx (xkb:xkb-context-new (xkb-context-flags :no-flags)))
9.10+ (map (xkb::xkb-keymap-new-from-names ctx nil (xkb::xkb-keymap-compile-flags :no-flags)))
9.11+ (state (xkb::xkb-state-new map)))
9.12+ (sb-alien:with-alien ((buf (* sb-alien:char) (sb-alien:make-alien char 64)))
9.13+ (xkb::xkb-keysym-get-name (xkb::xkb-state-key-get-one-sym state 10) buf 64)
9.14+ (is (string= "1" (sb-alien:cast buf sb-alien:c-string))))
9.15+ (sb-alien:with-alien ((syms (* (* xkb-keysym)) (sb-alien:make-alien (* xkb-keysym) 20)))
9.16+ (is (= 1 (xkb::xkb-state-key-get-syms state 10 syms)))
9.17+ (is (= 49 (sb-alien:deref (sb-alien:deref syms 0)))))))
9.18+
10.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
10.2+++ b/lisp/ffi/xkb/x11.lisp Sun Sep 29 00:31:24 2024 -0400
10.3@@ -0,0 +1,6 @@
10.4+;;; x11.lisp --- XKB X11-exclusive FFI
10.5+
10.6+;;
10.7+
10.8+;;; Code:
10.9+(in-package :xkb)
11.1--- a/lisp/ffi/xkb/xkb.asd Sat Sep 28 17:48:06 2024 -0400
11.2+++ b/lisp/ffi/xkb/xkb.asd Sun Sep 29 00:31:24 2024 -0400
11.3@@ -11,7 +11,8 @@
11.4 :depends-on (:std)
11.5 :components ((:file "pkg")
11.6 (grovel-constants-file "constants"
11.7- :package :xkb))
11.8+ :package :xkb)
11.9+ (:file "x11"))
11.10 :in-order-to ((test-op (test-op :xkb/tests))))
11.11
11.12 (defsystem :xkb/tests
12.1--- a/lisp/lib/cli/ed.lisp Sat Sep 28 17:48:06 2024 -0400
12.2+++ b/lisp/lib/cli/ed.lisp Sun Sep 29 00:31:24 2024 -0400
12.3@@ -6,8 +6,8 @@
12.4 (in-package :cli/ed)
12.5
12.6 (defun run-emacs (&optional file args)
12.7- (sb-ext:run-program (find-exe "emacs") `(,@(when file (list file)) ,@args :wait nil :output nil)))
12.8-
12.9+ (sb-ext:run-program (find-exe "emacs") `(,@(when file (list file)) ,@args)))
12.10+
12.11 (defun run-emacsclient (&optional (file ".") (create-frame t))
12.12 (sb-ext:run-program (find-exe "emacsclient")
12.13 `(,file ,@(when create-frame (list "-c")) "-a=")
13.1--- a/lisp/lib/io/io.asd Sat Sep 28 17:48:06 2024 -0400
13.2+++ b/lisp/lib/io/io.asd Sun Sep 29 00:31:24 2024 -0400
13.3@@ -1,6 +1,11 @@
13.4 (defsystem :io
13.5 :description "Lisp IO Interface"
13.6- :depends-on (:cl-ppcre :std :obj (:feature :linux :uring) :sb-bsd-sockets :zstd :flexi-streams)
13.7+ :depends-on (:cl-ppcre
13.8+ :std :obj
13.9+ (:feature :linux :uring)
13.10+ (:feature :linux :xkb)
13.11+ (:feature :linux :evdev)
13.12+ :sb-bsd-sockets :zstd :flexi-streams)
13.13 :version "0.1.0"
13.14 :serial t
13.15 :components ((:file "pkg")
13.16@@ -11,6 +16,7 @@
13.17 (:file "flate")
13.18 (:file "port")
13.19 (:file "zstd")
13.20+ (:file "kbd")
13.21 (:file "xsubseq")
13.22 (:file "smart-buffer"))
13.23 :in-order-to ((test-op (test-op "io/tests"))))
14.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
14.2+++ b/lisp/lib/io/kbd.lisp Sun Sep 29 00:31:24 2024 -0400
14.3@@ -0,0 +1,37 @@
14.4+;;; kbd.lisp --- Keyboard-based IO
14.5+
14.6+;; Keyboard-like devices and input
14.7+
14.8+;;; Commentary:
14.9+
14.10+;; refs:
14.11+
14.12+;; - https://www.kernel.org/doc/Documentation/input/event-codes.txt
14.13+
14.14+;;; Code:
14.15+(in-package :io/kbd)
14.16+(load-xkbcommon)
14.17+
14.18+(deferror kbd-error () ())
14.19+
14.20+(defstruct keyboard path state compose-state)
14.21+
14.22+(defconstant +evdev-offset+ 8)
14.23+
14.24+(defun evdev-bit-is-set (array bit))
14.25+
14.26+(defun keyboard-device-p (path))
14.27+ ;; (sb-posix:ioctl (fd path)
14.28+(defun make-keyboard-from-dev (dev keymap compose-table))
14.29+
14.30+(defun get-keyboards (keymap compose-table &optional (dir "/dev/input"))
14.31+ (let ((devices (directory dir)))
14.32+ (dolist (dev devices)
14.33+ (let ((ret (make-keyboard-from-dev dev keymap compose-table)))
14.34+ ret))))
14.35+
14.36+;; (with-open-file (file "/dev/input/event4")
14.37+;; (let ((fd (sb-sys:fd-stream-fd file))
14.38+;; (evbits))))
14.39+
14.40+
15.1--- a/lisp/lib/io/pkg.lisp Sat Sep 28 17:48:06 2024 -0400
15.2+++ b/lisp/lib/io/pkg.lisp Sun Sep 29 00:31:24 2024 -0400
15.3@@ -41,10 +41,14 @@
15.4 :compressor :compressing-stream :decompressor :decompressing-stream))
15.5
15.6 (defpackage :io/zstd
15.7- (:use :cl :io/proto :io/flate)
15.8+ (:use :cl :std :io/proto :io/flate)
15.9 (:import-from :std :deferror :eval-always)
15.10 (:export :zstd-error :zstd-compressor :zstd-decompressor))
15.11
15.12+(defpackage :io/kbd
15.13+ (:use :cl :std :io/proto :xkb)
15.14+ (:export :kbd-error))
15.15+
15.16 (pkg:defpkg :io
15.17 (:use :cl)
15.18 (:use-reexport :io/proto :io/ring :io/flate :io/zstd :io/stream :io/socket))