shirakumo / cl-gamepad Goto Github PK
View Code? Open in Web Editor NEWA native portability library for access to gamepads and joystick input devices
Home Page: https://shirakumo.github.io/cl-gamepad/
License: zlib License
A native portability library for access to gamepads and joystick input devices
Home Page: https://shirakumo.github.io/cl-gamepad/
License: zlib License
Apparently libevdev is not available by default on debian/ubuntu systems, which is a problem.
For completeness, the libstem_gamepad fork that this is built on should probably be rebased from master, to at least pick up
ThemsAllTook/libstem_gamepad@de3d4ca
(great work btw!)
There seems to be Windows only problem with
Line 101 in 7517a09
Is not compiling on travis at least https://travis-ci.com/github/azimut/trial-travis/builds/159818367#L167
fwiw, I don't know why this would be Windows only problem but saw it before in lispgames/cl-sdl2#122 (comment)
Some gamepads will not signal axes for buttons or vice-versa. This is especially common for dpad and triggers. It would be good if we emulated them if we know the device does not emit them.
; wrote /gnu/store/ypqxix0zcj2wbs7w22zkqwd1n4rkynxd-sbcl-cl-gamepad-3.0.0-1.2bb8f9e/lib/common-lisp/sbcl/cl-gamepad/default-device-mappings-tmp9BN22RMA.fasl
; compilation finished in 0:00:00.000
Unhandled UNDEFINED-FUNCTION in thread #<SB-THREAD:THREAD "main thread" RUNNING
{100B7302C3}>:
The function ORG.SHIRAKUMO.FRAF.GAMEPAD:LIST-DEVICES is undefined.
Backtrace for: #<SB-THREAD:THREAD "main thread" RUNNING {100B7302C3}>
0: ("undefined function")
1: ((SETF DEVICE-MAPPING) (:NAME "JPD-UDV-01" :BUTTONS #<HASH-TABLE :TEST EQL :COUNT 12 {100747A7E3}> :AXES #<HASH-TABLE :TEST EQL :COUNT 5 {100747ADB3}> :ORIENTATIONS #<HASH-TABLE :TEST EQL :COUNT 0 {100747AF83}>) (:DINPUT 121 6))
2: (SB-FASL::LOAD-FASL-GROUP #S(SB-FASL::FASL-INPUT :STREAM #<SB-SYS:FD-STREAM for "file /gnu/store/ypqxix0zcj2wbs7w22zkqwd1n4rkynxd-sbcl-cl-gamepad-3.0.0-1.2bb8f9e/lib/common-lisp/sbcl/cl-gamepad/default-device-mappings.fasl" {1007474CB3}> :TABLE #(38 SET *PACKAGE* "ORG.SHIRAKUMO.FRAF.GAMEPAD" LIST :NAME #1="JPD-UDV-01" :BUTTONS #<PACKAGE "ORG.SHIRAKUMO.FRAF.GAMEPAD"> PLIST-MAP :A :B ...) :STACK #(0 FUNCALL #<FUNCTION (SETF DEVICE-MAPPING)> (:NAME #1# :BUTTONS #<HASH-TABLE :TEST EQL :COUNT 12 {100747A7E3}> :AXES #2=#<HASH-TABLE :TEST EQL :COUNT 5 {100747ADB3}> :ORIENTATIONS #3=#<HASH-TABLE :TEST EQL :COUNT 0 {100747AF83}>) (:DINPUT 121 6) 121 6 #2# :ORIENTATIONS #3# NIL :L-V ...) :NAME-BUFFER #("" "DINPUT-MAPPING") :DEPRECATED-STUFF NIL :SKIP-UNTIL NIL) NIL)
3: (SB-FASL::LOAD-AS-FASL #<SB-SYS:FD-STREAM for "file /gnu/store/ypqxix0zcj2wbs7w22zkqwd1n4rkynxd-sbcl-cl-gamepad-3.0.0-1.2bb8f9e/lib/common-lisp/sbcl/cl-gamepad/default-device-mappings.fasl" {1007474CB3}> NIL NIL)
4: ((FLET SB-FASL::THUNK :IN LOAD))
5: (SB-FASL::CALL-WITH-LOAD-BINDINGS #<FUNCTION (FLET SB-FASL::THUNK :IN LOAD) {7FFFF793689B}> #<SB-SYS:FD-STREAM for "file /gnu/store/ypqxix0zcj2wbs7w22zkqwd1n4rkynxd-sbcl-cl-gamepad-3.0.0-1.2bb8f9e/lib/common-lisp/sbcl/cl-gamepad/default-device-mappings.fasl" {1007474CB3}>)
6: ((FLET SB-FASL::LOAD-STREAM :IN LOAD) #<SB-SYS:FD-STREAM for "file /gnu/store/ypqxix0zcj2wbs7w22zkqwd1n4rkynxd-sbcl-cl-gamepad-3.0.0-1.2bb8f9e/lib/common-lisp/sbcl/cl-gamepad/default-device-mappings.fasl" {1007474CB3}> T)
7: (LOAD #P"/gnu/store/ypqxix0zcj2wbs7w22zkqwd1n4rkynxd-sbcl-cl-gamepad-3.0.0-1.2bb8f9e/lib/common-lisp/sbcl/cl-gamepad/default-device-mappings.fasl" :VERBOSE NIL :PRINT NIL :IF-DOES-NOT-EXIST T :EXTERNAL-FORMAT :DEFAULT)
8: (UIOP/UTILITY:CALL-WITH-MUFFLED-CONDITIONS #<FUNCTION (LAMBDA NIL :IN UIOP/LISP-BUILD:LOAD*) {100747465B}> ("Overwriting already existing readtable ~S." #(#:FINALIZERS-OFF-WARNING :ASDF-FINALIZERS)))
9: ((SB-PCL::EMF ASDF/ACTION:PERFORM) #<unused argument> #<unused argument> #<ASDF/LISP-ACTION:LOAD-OP > #<ASDF/LISP-ACTION:CL-SOURCE-FILE "cl-gamepad" "default-device-mappings">)
10: ((LAMBDA NIL :IN ASDF/ACTION:CALL-WHILE-VISITING-ACTION))
11: ((:METHOD ASDF/ACTION:PERFORM-WITH-RESTARTS (ASDF/LISP-ACTION:LOAD-OP ASDF/LISP-ACTION:CL-SOURCE-FILE)) #<ASDF/LISP-ACTION:LOAD-OP > #<ASDF/LISP-ACTION:CL-SOURCE-FILE "cl-gamepad" "default-device-mappings">) [fast-method]
12: ((:METHOD ASDF/ACTION:PERFORM-WITH-RESTARTS :AROUND (T T)) #<ASDF/LISP-ACTION:LOAD-OP > #<ASDF/LISP-ACTION:CL-SOURCE-FILE "cl-gamepad" "default-device-mappings">) [fast-method]
13: ((:METHOD ASDF/PLAN:PERFORM-PLAN (T)) #<ASDF/PLAN:SEQUENTIAL-PLAN {1005D6F733}>) [fast-method]
14: ((FLET SB-C::WITH-IT :IN SB-C::%WITH-COMPILATION-UNIT))
15: ((:METHOD ASDF/PLAN:PERFORM-PLAN :AROUND (T)) #<ASDF/PLAN:SEQUENTIAL-PLAN {1005D6F733}>) [fast-method]
16: ((:METHOD ASDF/OPERATE:OPERATE (ASDF/OPERATION:OPERATION ASDF/COMPONENT:COMPONENT)) #<ASDF/LISP-ACTION:COMPILE-OP > #<ASDF/SYSTEM:SYSTEM "cl-gamepad"> :PLAN-CLASS NIL :PLAN-OPTIONS NIL) [fast-method]
17: ((SB-PCL::EMF ASDF/OPERATE:OPERATE) #<unused argument> #<unused argument> #<ASDF/LISP-ACTION:COMPILE-OP > #<ASDF/SYSTEM:SYSTEM "cl-gamepad">)
18: ((LAMBDA NIL :IN ASDF/OPERATE:OPERATE))
19: ((:METHOD ASDF/OPERATE:OPERATE :AROUND (T T)) #<ASDF/LISP-ACTION:COMPILE-OP > #<ASDF/SYSTEM:SYSTEM "cl-gamepad">) [fast-method]
20: ((SB-PCL::EMF ASDF/OPERATE:OPERATE) #<unused argument> #<unused argument> ASDF/LISP-ACTION:COMPILE-OP "cl-gamepad")
21: ((LAMBDA NIL :IN ASDF/OPERATE:OPERATE))
22: ((:METHOD ASDF/OPERATE:OPERATE :AROUND (T T)) ASDF/LISP-ACTION:COMPILE-OP "cl-gamepad") [fast-method]
23: (ASDF/SESSION:CALL-WITH-ASDF-SESSION #<FUNCTION (LAMBDA NIL :IN ASDF/OPERATE:OPERATE) {1005D536FB}> :OVERRIDE T :KEY NIL :OVERRIDE-CACHE T :OVERRIDE-FORCING NIL)
24: ((LAMBDA NIL :IN ASDF/OPERATE:OPERATE))
25: (ASDF/SESSION:CALL-WITH-ASDF-SESSION #<FUNCTION (LAMBDA NIL :IN ASDF/OPERATE:OPERATE) {1005D4F74B}> :OVERRIDE NIL :KEY NIL :OVERRIDE-CACHE NIL :OVERRIDE-FORCING NIL)
26: ((:METHOD ASDF/OPERATE:OPERATE :AROUND (T T)) ASDF/LISP-ACTION:COMPILE-OP "cl-gamepad") [fast-method]
27: (ASDF/OPERATE:COMPILE-SYSTEM "cl-gamepad")
28: (SB-INT:SIMPLE-EVAL-IN-LEXENV (ASDF/OPERATE:COMPILE-SYSTEM "cl-gamepad") #<NULL-LEXENV>)
29: (EVAL (ASDF/OPERATE:COMPILE-SYSTEM "cl-gamepad"))
30: (SB-IMPL::PROCESS-EVAL/LOAD-OPTIONS ((:EVAL . "(require :asdf)") (:EVAL . "(asdf:load-asd (truename \"/gnu/store/ypqxix0zcj2wbs7w22zkqwd1n4rkynxd-sbcl-cl-gamepad-3.0.0-1.2bb8f9e/share/common-lisp/sbcl/cl-gamepad/cl-gamepad.asd\"))") (:EVAL . "(asdf:compile-system \"cl-gamepad\")") (:QUIT)))
31: (SB-IMPL::TOPLEVEL-INIT)
32: ((FLET SB-UNIX::BODY :IN SB-IMPL::START-LISP))
33: ((FLET "WITHOUT-INTERRUPTS-BODY-1" :IN SB-IMPL::START-LISP))
34: (SB-IMPL::START-LISP)
unhandled condition in --disable-debugger mode, quitting
;
; compilation unit aborted
; caught 1 fatal ERROR condition
; printed 1 note
command "/gnu/store/hwf73bmqkk70ffnd8pfdzrr09ak7lhwi-sbcl-2.1.5/bin/sbcl" "--non-interactive" "--eval" "(require :asdf)" "--eval" "(asdf:load-asd (truename \"/gnu/store/ypqxix0zcj2wbs7w22zkqwd1n4rkynxd-sbcl-cl-gamepad-3.0.0-1.2bb8f9e/share/common-lisp/sbcl/cl-gamepad/cl-gamepad.asd\"))" "--eval" "(asdf:compile-system \"cl-gamepad\")" failed with status 1
Can't load package with CCL:
CCL is free software. It is distributed under the terms of the Apache
Licence, Version 2.0.
? (ql:quickload :cl-gamepad)
To load "cl-gamepad":
Load 1 ASDF system:
cl-gamepad
; Loading "cl-gamepad"
[package org.shirakumo.com-on.cffi]...............
[package org.shirakumo.com-on]> Error: The value :LOCAL-NICKNAMES is not of the expected type (MEMBER :SIZE :EXTERNAL-SIZE :NICKNAMES :SHADOW :SHADOWING-IMPORT-FROM :USE :IMPORT-FROM :INTERN :EXPORT :DOCUMENTATION).
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.