xwiimote / xf86-input-xwiimote Goto Github PK
View Code? Open in Web Editor NEWX.org XInput2 Wii Remote driver based on XWiimote
License: Other
X.org XInput2 Wii Remote driver based on XWiimote
License: Other
For some reason the wiimote input has stopped working on the lastest versions of xorg on arch linux. It looks like it's not polling after the initial detection
Hi,
Fedora has plans to keep only xf86-input-libinput...
Does wiimote work with wayland/libinput?
Hey David,
I just give this a spin and it immediately crashes my xorg-server when the wiimote is connected. I see the wiimote input class handled 3 times in the log (for each event) and then the whole thing comes down. I don't have debugging symbols right now in my xorg-server, but I'll recompile if this remains a mystery. I have xorg-server 1.12.0
EDIT: Not crashing, just exiting...
EDIT2: symbol lookup error in xwiimote_drv.so: xstrcasecmp, hmm....
Hi,
I've tried doing something like this in the xorg.conf file and it doesn't appear to be working:
Option "MapA" "Pointer_Button1"
Option "MapB" "Pointer_Button2"
Option "MapHome" "Pointer_Button3"
Option "MapPlus" "XF86ScrollUp"
Option "MapMinus" "XF86ScrollDown"
Not too familiar with xfb bindings myself, so I was wondering if you could clarify if this is supported and provide some documentation examples if so. My goal is to be able to use the Wiimote as an air mouse...
I can't use the method to install the driver as described by the README. When I enter the command i get this output:
bash: ./configure: No such file or directory
Is this an error because I do not have the required dependencies?
As it stands, the default keys aren't that useful and the Wiimote tools right now don't compile because they need Bluez4 (and I'm on Bluez5).
Is there any chance you could add Options to the xorg driver to let us select options at that point? This would avoid the need for a secondary program to keep running as well.
For reference, what I'm trying to do right now is use the Wiimote as a lightgun in MAME. It sees the IR as a mouse which is fine, but the buttons A and B are detected as "Keyboard Enter + Joystick Start" and "Keyboard Space" which causes all sorts of issues.
I'm using Ubuntu 14.04 and last git version of xwiimote and xf86-input-xwiimote. I want to get two wiimotes working as two mouses (at the same time).
/usr/X11/xorg.conf.d/60-xwiimote.conf is:
Section "InputClass"
Identifier "Nintendo Wii Remote"
MatchProduct "Nintendo Wii Remote"
MatchDevicePath "/dev/input/event*"
Option "Ignore" "off"
Option "MotionSource" "ir"
Driver "xwiimote"
Option "MapA" "right-button"
Option "MapB" "left-button"
EndSection
I use the following xinput commands to get a second pointer:
$ xinput create-master ADDITIONAL
$ xinput reattach #ID_WIIMOTE1 #ID_ADDITIONAL
When I press A or B button, xorg crash. If I don't map A and B button, the two pointers works perfectly.
Hi David,
The xwiimote device driver works very well.
But when using this Xorg input driver, with a Wiimote connected, the video signal is lost and my keyboard becomes unresponsive (ie I cannot switch tty, or terminate X with ctrl+alt+backspace).
If i comment Driver "xwiimote"
, however, the xorg-server starts without problem.
The last line in my Xorg.0.log is simply that it is loading the xwiimote input driver.
This was on a machine running Arch Linux. I also tried on a different computer, with a fresh Arch Linux installation, but with the same result.
If you get around to fixing this, would you mind tagging .3?
For some reason, the mouse cursor just turned invisible during the switch from gdm to actual gnome-session (Ubuntu 13.10).
Could this be related to the driver ?
I was thinking about how touchscreens and other inputs differentiate. Maybe it has something to do with that.
As documented, I've added this to the config to be able to use the MotionPlus as a pointing device with automatic calibration:
Option "MotionSource" "MotionPlus"
Option "MPNormalization" "On"
Option "MPCalibrationFactor" "On"
It works, but the automatic calibration is very poor on a couple different Wiimotes and MotionPlus devices I've tried; the cursor is always moving slightly downward, and right/left movement seems to be inverted.
So in various applications, I'm able to use buttons and the analog sticks EXCEPT for the d-pad on the classic controller whose input is never recognized so I can never map it in any of my applications. I haven't been able to find any documentation regarding this.
The Problem:
When trying to click, there is naturally some movement of the hand. This ends up triggering a Drag-Start instead of a click action very often.
Feature-Proposals:
Reproduce:
I may possibly work on this myself at some point, but I don't know, how X11 works wrt Acceleration or DnD. I'm actually not sure, if pointer-speed is even configurable right now.
So if anyone got pointers to how this works, they are very welcome.
First of all, awesome project! I know it's not in development anymore (which is a shame) but I'm having a hell of a lot of fun with it. I still hope some stuff can be considered for addition.
I'd like to use the Nunchuck for controlling the mouse (maybe as fall-back?). Together with an onscreen keyboard and A and B on the Wiimote mapped to left and right mouse button, it would probably make for a full alternative to the mouse.
moin,
i wrote an ebuild for xf86-input-xwiimote by myself
# Copyright 1999-2012 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header:
EAPI=4
inherit xorg-2
DESCRIPTION="X.Org Wii Remote Input Driver"
HOMEPAGE="https://github.com/dvdhrm/xf86-input-xwiimote"
SRC_URI="https://github.com/downloads/dvdhrm/${PN}/${P}.tar.bz2"
#LICENSE="????"
SLOT="0"
KEYWORDS="~amd64 ~x86"
IUSE=""
but it fail to compile
emerge -av xf86-input-xwiimote
These are the packages that would be merged, in order:
Calculating dependencies... done!
[ebuild N ~] x11-drivers/xf86-input-xwiimote-0.2::x-portage 0 kB
Total: 1 package (1 new), Size of downloads: 0 kB
Would you like to merge these packages? [Yes/No]
>>> Verifying ebuild manifests
>>> Emerging (1 of 1) x11-drivers/xf86-input-xwiimote-0.2 from x-portage
* xf86-input-xwiimote-0.2.tar.bz2 RMD160 SHA1 SHA256 size ;-) ... [ ok ]
>>> Unpacking source...
>>> Unpacking xf86-input-xwiimote-0.2.tar.bz2 to /var/tmp/portage/x11-drivers/xf86-input-xwiimote-0.2/work
>>> Source unpacked in /var/tmp/portage/x11-drivers/xf86-input-xwiimote-0.2/work
>>> Preparing source in /var/tmp/portage/x11-drivers/xf86-input-xwiimote-0.2/work/xf86-input-xwiimote-0.2 ...
* Running elibtoolize in: xf86-input-xwiimote-0.2/build-aux/
* Applying portage/1.2.0 patch ...
* Applying sed/1.5.6 patch ...
>>> Source prepared.
>>> Configuring source in /var/tmp/portage/x11-drivers/xf86-input-xwiimote-0.2/work/xf86-input-xwiimote-0.2 ...
>>> Working in BUILD_DIR: "/var/tmp/portage/x11-drivers/xf86-input-xwiimote-0.2/work/xf86-input-xwiimote-0.2_build"
* econf: updating xf86-input-xwiimote-0.2/build-aux/config.sub with /usr/share/gnuconfig/config.sub
* econf: updating xf86-input-xwiimote-0.2/build-aux/config.guess with /usr/share/gnuconfig/config.guess
/var/tmp/portage/x11-drivers/xf86-input-xwiimote-0.2/work/xf86-input-xwiimote-0.2/configure --prefix=/usr --build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu --mandir=/usr/share/man --infodir=/usr/share/info --datadir=/usr/share --sysconfdir=/etc --localstatedir=/var/lib --libdir=/usr/lib64 --disable-dependency-tracking --docdir=/usr/share/doc/xf86-input-xwiimote-0.2 --disable-dependency-tracking
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking how to create a pax tar archive... gnutar
checking whether make supports nested variables... yes
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking how to print strings... printf
checking for style of include used by make... GNU
checking for x86_64-pc-linux-gnu-gcc... x86_64-pc-linux-gnu-gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether x86_64-pc-linux-gnu-gcc accepts -g... yes
checking for x86_64-pc-linux-gnu-gcc option to accept ISO C89... none needed
checking dependency style of x86_64-pc-linux-gnu-gcc... none
checking for a sed that does not truncate output... /bin/sed
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for fgrep... /bin/grep -F
checking for ld used by x86_64-pc-linux-gnu-gcc... /usr/x86_64-pc-linux-gnu/bin/ld
checking if the linker (/usr/x86_64-pc-linux-gnu/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking whether the shell understands some XSI constructs... yes
checking whether the shell understands "+="... yes
checking how to convert x86_64-pc-linux-gnu file names to x86_64-pc-linux-gnu format... func_convert_file_noop
checking how to convert x86_64-pc-linux-gnu file names to toolchain format... func_convert_file_noop
checking for /usr/x86_64-pc-linux-gnu/bin/ld option to reload object files... -r
checking for x86_64-pc-linux-gnu-objdump... x86_64-pc-linux-gnu-objdump
checking how to recognize dependent libraries... pass_all
checking for x86_64-pc-linux-gnu-dlltool... no
checking for dlltool... no
checking how to associate runtime and link libraries... printf %s\n
checking for x86_64-pc-linux-gnu-ar... x86_64-pc-linux-gnu-ar
checking for archiver @FILE support... @
checking for x86_64-pc-linux-gnu-strip... x86_64-pc-linux-gnu-strip
checking for x86_64-pc-linux-gnu-ranlib... x86_64-pc-linux-gnu-ranlib
checking command to parse /usr/bin/nm -B output from x86_64-pc-linux-gnu-gcc object... ok
checking for sysroot... no
checking for x86_64-pc-linux-gnu-mt... no
checking for mt... no
checking if : is a manifest tool... no
checking how to run the C preprocessor... x86_64-pc-linux-gnu-gcc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if x86_64-pc-linux-gnu-gcc supports -fno-rtti -fno-exceptions... no
checking for x86_64-pc-linux-gnu-gcc option to produce PIC... -fPIC -DPIC
checking if x86_64-pc-linux-gnu-gcc PIC flag -fPIC -DPIC works... yes
checking if x86_64-pc-linux-gnu-gcc static flag -static works... yes
checking if x86_64-pc-linux-gnu-gcc supports -c -o file.o... yes
checking if x86_64-pc-linux-gnu-gcc supports -c -o file.o... (cached) yes
checking whether the x86_64-pc-linux-gnu-gcc linker (/usr/x86_64-pc-linux-gnu/bin/ld -m elf_x86_64) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... no
checking for x86_64-pc-linux-gnu-gcc... (cached) x86_64-pc-linux-gnu-gcc
checking whether we are using the GNU C compiler... (cached) yes
checking whether x86_64-pc-linux-gnu-gcc accepts -g... (cached) yes
checking for x86_64-pc-linux-gnu-gcc option to accept ISO C89... (cached) none needed
checking dependency style of x86_64-pc-linux-gnu-gcc... (cached) none
checking for ffs... yes
checking for x86_64-pc-linux-gnu-gcc option to accept ISO C99... -std=gnu99
checking whether __clang__ is declared... no
checking whether __INTEL_COMPILER is declared... no
checking whether __SUNPRO_C is declared... no
checking for x86_64-pc-linux-gnu-pkg-config... no
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking if x86_64-pc-linux-gnu-gcc -std=gnu99 supports -Werror=unknown-warning-option... no
checking if x86_64-pc-linux-gnu-gcc -std=gnu99 supports -Werror=unused-command-line-argument... no
checking if x86_64-pc-linux-gnu-gcc -std=gnu99 supports -Wall... yes
checking if x86_64-pc-linux-gnu-gcc -std=gnu99 supports -Wpointer-arith... yes
checking if x86_64-pc-linux-gnu-gcc -std=gnu99 supports -Wstrict-prototypes... yes
checking if x86_64-pc-linux-gnu-gcc -std=gnu99 supports -Wmissing-prototypes... yes
checking if x86_64-pc-linux-gnu-gcc -std=gnu99 supports -Wmissing-declarations... yes
checking if x86_64-pc-linux-gnu-gcc -std=gnu99 supports -Wnested-externs... yes
checking if x86_64-pc-linux-gnu-gcc -std=gnu99 supports -Wbad-function-cast... yes
checking if x86_64-pc-linux-gnu-gcc -std=gnu99 supports -Wformat=2... yes
checking if x86_64-pc-linux-gnu-gcc -std=gnu99 supports -Wold-style-definition... yes
checking if x86_64-pc-linux-gnu-gcc -std=gnu99 supports -Wdeclaration-after-statement... yes
checking if x86_64-pc-linux-gnu-gcc -std=gnu99 supports -Wunused... yes
checking if x86_64-pc-linux-gnu-gcc -std=gnu99 supports -Wuninitialized... yes
checking if x86_64-pc-linux-gnu-gcc -std=gnu99 supports -Wshadow... yes
checking if x86_64-pc-linux-gnu-gcc -std=gnu99 supports -Wcast-qual... yes
checking if x86_64-pc-linux-gnu-gcc -std=gnu99 supports -Wmissing-noreturn... yes
checking if x86_64-pc-linux-gnu-gcc -std=gnu99 supports -Wmissing-format-attribute... yes
checking if x86_64-pc-linux-gnu-gcc -std=gnu99 supports -Wredundant-decls... yes
checking if x86_64-pc-linux-gnu-gcc -std=gnu99 supports -Werror=implicit... yes
checking if x86_64-pc-linux-gnu-gcc -std=gnu99 supports -Werror=nonnull... yes
checking if x86_64-pc-linux-gnu-gcc -std=gnu99 supports -Werror=init-self... yes
checking if x86_64-pc-linux-gnu-gcc -std=gnu99 supports -Werror=main... yes
checking if x86_64-pc-linux-gnu-gcc -std=gnu99 supports -Werror=missing-braces... yes
checking if x86_64-pc-linux-gnu-gcc -std=gnu99 supports -Werror=sequence-point... yes
checking if x86_64-pc-linux-gnu-gcc -std=gnu99 supports -Werror=return-type... yes
checking if x86_64-pc-linux-gnu-gcc -std=gnu99 supports -Werror=trigraphs... yes
checking if x86_64-pc-linux-gnu-gcc -std=gnu99 supports -Werror=array-bounds... yes
checking if x86_64-pc-linux-gnu-gcc -std=gnu99 supports -Werror=write-strings... yes
checking if x86_64-pc-linux-gnu-gcc -std=gnu99 supports -Werror=address... yes
checking if x86_64-pc-linux-gnu-gcc -std=gnu99 supports -Werror=int-to-pointer-cast... yes
checking if x86_64-pc-linux-gnu-gcc -std=gnu99 supports -Werror=pointer-to-int-cast... yes
checking if x86_64-pc-linux-gnu-gcc -std=gnu99 supports -pedantic... yes
checking if x86_64-pc-linux-gnu-gcc -std=gnu99 supports -Werror... yes
checking if x86_64-pc-linux-gnu-gcc -std=gnu99 supports -Werror=attributes... yes
checking whether make supports nested variables... (cached) yes
checking for SYSDEP... yes
checking for XORG... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating config.h
config.status: executing depfiles commands
config.status: executing libtool commands
>>> Source configured.
>>> Compiling source in /var/tmp/portage/x11-drivers/xf86-input-xwiimote-0.2/work/xf86-input-xwiimote-0.2 ...
>>> Working in BUILD_DIR: "/var/tmp/portage/x11-drivers/xf86-input-xwiimote-0.2/work/xf86-input-xwiimote-0.2_build"
make -j4
make all-am
make[1]: Entering directory `/var/tmp/portage/x11-drivers/xf86-input-xwiimote-0.2/work/xf86-input-xwiimote-0.2_build'
CC xwiimote.lo
/var/tmp/portage/x11-drivers/xf86-input-xwiimote-0.2/work/xf86-input-xwiimote-0.2/src/xwiimote.c:67:2: error: unknown field 'key' specified in initializer
/var/tmp/portage/x11-drivers/xf86-input-xwiimote-0.2/work/xf86-input-xwiimote-0.2/src/xwiimote.c:67:2: error: missing braces around initializer
/var/tmp/portage/x11-drivers/xf86-input-xwiimote-0.2/work/xf86-input-xwiimote-0.2/src/xwiimote.c:67:2: error: (near initialization for 'map_key_default[0].')
/var/tmp/portage/x11-drivers/xf86-input-xwiimote-0.2/work/xf86-input-xwiimote-0.2/src/xwiimote.c:68:2: error: unknown field 'key' specified in initializer
/var/tmp/portage/x11-drivers/xf86-input-xwiimote-0.2/work/xf86-input-xwiimote-0.2/src/xwiimote.c:69:2: error: unknown field 'key' specified in initializer
/var/tmp/portage/x11-drivers/xf86-input-xwiimote-0.2/work/xf86-input-xwiimote-0.2/src/xwiimote.c:70:2: error: unknown field 'key' specified in initializer
/var/tmp/portage/x11-drivers/xf86-input-xwiimote-0.2/work/xf86-input-xwiimote-0.2/src/xwiimote.c:71:2: error: unknown field 'key' specified in initializer
/var/tmp/portage/x11-drivers/xf86-input-xwiimote-0.2/work/xf86-input-xwiimote-0.2/src/xwiimote.c:72:2: error: unknown field 'key' specified in initializer
/var/tmp/portage/x11-drivers/xf86-input-xwiimote-0.2/work/xf86-input-xwiimote-0.2/src/xwiimote.c:73:2: error: unknown field 'key' specified in initializer
/var/tmp/portage/x11-drivers/xf86-input-xwiimote-0.2/work/xf86-input-xwiimote-0.2/src/xwiimote.c:74:2: error: unknown field 'key' specified in initializer
/var/tmp/portage/x11-drivers/xf86-input-xwiimote-0.2/work/xf86-input-xwiimote-0.2/src/xwiimote.c:75:2: error: unknown field 'key' specified in initializer
/var/tmp/portage/x11-drivers/xf86-input-xwiimote-0.2/work/xf86-input-xwiimote-0.2/src/xwiimote.c:76:2: error: unknown field 'key' specified in initializer
/var/tmp/portage/x11-drivers/xf86-input-xwiimote-0.2/work/xf86-input-xwiimote-0.2/src/xwiimote.c:77:2: error: unknown field 'key' specified in initializer
make[1]: *** [xwiimote.lo] Error 1
make[1]: Leaving directory `/var/tmp/portage/x11-drivers/xf86-input-xwiimote-0.2/work/xf86-input-xwiimote-0.2_build'
make: *** [all] Error 2
* ERROR: x11-drivers/xf86-input-xwiimote-0.2 failed (compile phase):
* emake failed
*
gcc-4.5.3
hi, I have problems using the buttons of my wii u pro controller. The mouse of the left nibble is mapped to the mouse input. All other buttons do not work (I expect them to be mapped to keyboard characters). I read the man page of xorg-xwiimote and it says that it maps them to a default configuration (e.g. MapA -> KEY_ENTER).
When using xwiishow 1
the button events are shown correctly. I think I missed some configuration step.
xwiimote built from source
xf86-input-xwiimote https://launchpad.net/ubuntu/+source/xf86-input-xwiimote (tried also from source earlier)
Linux 3.16.0 28
Ubuntu 14.10
BlueZ 5.27
Looking at the source for the driver, I've noticed that the support for external wiimote peripherals exists, but the code in the X11 driver doesn't appear to implement any button mappings for them.
I'm running an up-to-date Arch Linux. When I first run configure, I get this error:
configure: creating ./config.status
config.status: error: cannot find input file: `Makefile.in'
So I tried running autogen.sh, which resulted in:
automake: warnings are treated as errors
Makefile.am:43: warning: source file 'src/@[email protected]' is in a subdirectory,
Makefile.am:43: but option 'subdir-objects' is disabled
automake: warning: possible forward-incompatibility.
automake: At least a source file is in a subdirectory, but the 'subdir-objects'
automake: automake option hasn't been enabled. For now, the corresponding output
automake: object file(s) will be placed in the top-level directory. However,
automake: this behaviour will change in future Automake versions: they will
automake: unconditionally cause object files to be placed in the same subdirectory
automake: of the corresponding sources.
automake: You are advised to start using 'subdir-objects' option throughout your
automake: project, to avoid future incompatibilities.
autoreconf: automake failed with exit status: 1
I was able to fix this by adding the line:
AUTOMAKE_OPTIONS = subdir-objects
to Makefile.am. I added it right underneath the ACLOCAL_AMFLAGS line.
After that, running autogen.sh did work (but configure did not work if run first).
Ubuntu Impish 21.10. Lenovo Thinkpad. Using MotionPlus as mouse.
It seems to almost inevitably happen so long as Wiimote is connected via bluetooth. There appear to be specific triggers:
I should try with the accelerometer and/or IR to see if that crashes as well.
[204097.793] dix: invalid event type 0
[204097.793] 00 00 00 00 00 00 00 00
[204097.793] 00 00 00 00 00 00 00 00
[204097.793] 00 00 00 00 00 00 00 00
[204097.793] 00 00 00 00 00 00 00 00
[204097.794] (EE)
[204097.794] (EE) Backtrace:
[204097.794] (EE) 0: /usr/lib/xorg/Xorg (valuator_mask_num_valuators+0xc0) [0x559bebe60e60]
[204097.795] (EE) 1: /usr/lib/xorg/Xorg (mieqProcessDeviceEvent+0x3b) [0x559bebf89d3b]
[204097.795] (EE) 2: /usr/lib/xorg/Xorg (mieqProcessInputEvents+0x99) [0x559bebf89fb9]
[204097.796] (EE) 3: /usr/lib/xorg/Xorg (ProcessInputEvents+0x1d) [0x559bebe821ad]
[204097.796] (EE) 4: /usr/lib/xorg/Xorg (SendErrorToClient+0x103) [0x559bebe43823]
[204097.796] (EE) 5: /usr/lib/xorg/Xorg (InitFonts+0x3b5) [0x559bebe47ad5]
[204097.797] (EE) 6: /lib/x86_64-linux-gnu/libc.so.6 (__libc_init_first+0x90) [0x7fdfe414bfd0]
[204097.798] (EE) 7: /lib/x86_64-linux-gnu/libc.so.6 (__libc_start_main+0x7d) [0x7fdfe414c07d]
[204097.798] (EE) 8: /usr/lib/xorg/Xorg (_start+0x25) [0x559bebe30f25]
[204097.798] (EE)
[204097.798] (EE)
Fatal server error:
[204097.798] (EE) Wrong event type 0. Aborting server
[204097.798] (EE)
[204097.798] (EE)
Please consult the The X.Org Foundation support
at http://wiki.x.org
for help.
[204097.798] (EE) Please also check the log file at "/home/ill_logic/.local/share/xorg/Xorg.0.log" for additional information.
[204097.798] (EE)
[204097.798] (II) AIGLX: Suspending AIGLX clients for VT switch
If somebody has a hack idea to fix it I'm all ears.
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.