Giter Club home page Giter Club logo

mupen64plus-input-sdl's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mupen64plus-input-sdl's Issues

m64py crashes when saving input-config

Hello i've got an
"Unhandled Python exception"
when saving the input config with my Msonic Gamepad as input device set.
Saving a Mouse/Keyboad config works, and when selecting my Gamepad i can even set the keys, but when trying to exit the input plugin it crashes, probably due to an error saving the config, probably it has problems with the device's name? Because other emulators list it as
"Microntek USB Joystick "
but mupen64-input-sdl lists it as
Joystick 0 (b'Microntek USB Joystick ')
or what's the b after the bracket standing for?

Greets
sur3

PS:
I'm using version 2.5.

can you add xbox one s controller to auto config

Hi
I got a xbox one s controller it is name Xbox One S Controller
I did manual edit InputAutoCfg.ini by adding it to
[Xbox One S Controller] <-- my add here
[Xbox One S Controller]
plugged = True
plugin = 2
mouse = False
AnalogDeadzone = 4096,4096 <- not sure
AnalogPeak = 32768,32768 <- not sure
DPad R = hat(0 Right)
DPad L = hat(0 Left)
DPad D = hat(0 Down)
DPad U = hat(0 Up)
Start = button(11)
Z Trig = axis(2+) <- not sure
B Button = button(3)
A Button = button(0)
C Button R = axis(3+) <- not sure
C Button L = axis(3-) <- not sure
C Button D = axis(4+) <- not sure
C Button U = axis(4-) <- not sure
R Trig = button(6)
L Trig = button(7)
Mempak switch =
Rumblepak switch =
X Axis = axis(0-,0+) <- not sure
Y Axis = axis(1-,1+) <- not sure

Any tips getting all button mapping correct ?

8bitdo NES30 Pro and 8bitdo N64 Controller Share SDL Name

Both controllers register as "[Bluetooth Wireless Controller ]" but the bindings are very different from each other. The 8bitdo NES30 Pro is the more common controller, but it seems wrong to completely ignore the only wireless N64 controller clone. Any idea how to include both mappings in the autoconfig file?

Logitech F310 discussion

This commit break my previously working Logitech F310. Buttons are not correctly mapped while the original Xbox layout worked fine.

Looking in the google group, I paste the mail which originate the change here:

To whom it may concern:

I recently purchased a Logitech Gamepad F310 to use with Mupen64Plus and
found that the Z button was mapped to the Start button and a few other
oddities. When I looked in the InputAutoCfg.ini there was nothing under
the sub-heading for this particular controller, it was just listed under
"XBox Clones" with no configurations present for it. Here's a
configuration I created to place a few buttons where they're supposed to
be. I put N64's "B" on the "X" (right) face button because it felt more
natural to me, N64's "Z" is set to RB, and the LT and RT buttons are
mapped as the N64's L/R buttons. The rest of the config is pretty much
identical to other Logitech Playstation-esque controllers.

Here is what I suspect: Logitech F310 is a XBox mapped controler having a legacy "directinput" mode in the back:

f310-gaming-gamepad 1

I still have to check but I suspect the XBox layout break in direct input mode. Maybe it's related to OS.

Having a different, dedicated mapping for a controller mapping a Xbox layout is kinda weird. It would be interesting to ask for the OS when users provide a mapping for an already existing gamepad (mine is Linux Mint 17.1).

inputautocfg.ini from home

was wondering if we could have it search ~/ for the inputautocfg.ini file before /usr/share/games/mupen64plus folder

[BUG] Key Modifier when pressing a diagonal

The keyboard's key modifier bugs when pressing a diagonal direction, i.e. when I press up on the key assigned to the up direction of the stick it decreases the movement by the given factor, but if I press a diagonal the modifier bugs out and give me a wrong value and doesn't decrease the movement by the same amount...

This cause the player to move at different speeds when pressing a direction or a diagonal, ideally the movement speed value should be the same between a direction and a diagonal...

Feature Request: optional mouse residual decay via config

Currently the mouse residual either decays exponentially each frame or remains constant, see https://github.com/mupen64plus/mupen64plus-input-sdl/blob/master/src/plugin.c#L656.

For FPS like "The World Is Not Enough" where aim is controlled with the stick and in turn with the mouse, this makes aiming highly difficult as the view continues rotating when one stops moving the mouse.

It would be nice to have a configuration setting to reset mousex_residual and mousey_residual to 0 instead of multiplying it by 224/256. Alternatively, the setting could control the integer factor (224 currently).

Yoshis Story Stamp with 360 Controller

I am not able to perform the stamp attack in yoshis story with the default settings for the 360 controller. Even with changed sensitivity and dead zone it is not working (jumping and pressing down with the control stick)

_

_

Numpad not working and unhandled exception when binding numpad key 5 with num lock turned off.

Hi,
if I configure number key bindings (I usually do this for c-buttons), they don't actually work when i press the respective keys on the numpad, either with num lock turned on or off. They work only when i press the keys on number strip beneath the F1-F12 keys.
Moreover, if I try to bind the numpad key 5 and num lock is off, the program closes itself with an unhandled exception.
I am using the latest version of mupen64plus-input-sdl with the latest version of mupen64plus and the m64py gui on Debian Sid.

Support for #include directive in InputAutoCfg.ini

It would be great to support an either include directive in the InputAutoCfg.ini or a inputautocfg.d directory to include a user's custom contoller configurations. The only way I have found to do this so far has been to make a backup of the original file and symlink the system-wide file to a personal config file.

Logitech F310 auto configuration issue

Somebody contributed an auto configuration for the Logitech F310 gamepad a few years ago. The F310 is a fairly common Xbox-like USB gamepad, and I like to use it with emulators on my laptop. The auto config supplied by mupen64plus-input-sdl (v2.5-4 on my Pop!_OS 19.04 distro) mostly works, except that it maps the L/R bumper buttons to the two analog trigger buttons on the Logitech. This causes problems in some games, like WCW vs NWO Revenge and Star Wars: Shadows of the Empire. For example, in SotE you can't get past the save slot/name selection screen, because the L/R buttons (which are constantly being "pressed" due to the mapping) have you constantly selecting the Options dialog and unable to successfully escape by hitting Start in order to start the game. Some games basically still work, although you might get weird behavior on some screens that use L/R, and I'd imagine there are still more games more severely affected. In Revenge you cannot select a wrestler because the game is constantly paging through the list due to the bumper buttons both reading a signal.

My solution was to map L/R to the actual physical L/R bumper/shoulder buttons on the Logitech F310 (buttons 4 & 5). The Z Trigger was mapped to the right shoulder (button 5) for some reason, so I remapped it to the right trigger, although either left or right trigger should be fine. I had to use some SDL gamepad diagnostic utilities and the SotE game manual to track down what was happening. Here is my revised controller configuration, and I would recommend you consider replacing your default auto mapping with these settings for the F310.

`# Mupen64Plus SDL Input Plugin config parameter version number. Please don't change this version number.
version = 2

Controller configuration mode: 0=Fully Manual, 1=Auto with named SDL Device, 2=Fully automatic

mode = 0

Specifies which joystick is bound to this controller: -1=No joystick, 0 or more= SDL Joystick number

device = 0

SDL joystick name (or Keyboard)

name = "Logitech Gamepad F310"

Specifies whether this controller is 'plugged in' to the simulated N64

plugged = True

Specifies which type of expansion pak is in the controller: 1=None, 2=Mem pak, 5=Rumble pak

plugin = 2

If True, then mouse buttons may be used with this controller

mouse = False

Scaling factor for mouse movements. For X, Y axes.

MouseSensitivity = "2.00,2.00"

The minimum absolute value of the SDL analog joystick axis to move the N64 controller axis value from 0. For X, Y axes.

AnalogDeadzone = "4096,4096"

An absolute value of the SDL joystick axis >= AnalogPeak will saturate the N64 controller axis value (at 80). For X, Y axes. For each axis, this must be greater than the corresponding AnalogDeadzone value

AnalogPeak = "32768,32768"

Digital button configuration mappings

DPad R = "hat(0 Right)"
DPad L = "hat(0 Left)"
DPad D = "hat(0 Down)"
DPad U = "hat(0 Up)"
Start = "button(7)"
Z Trig = "axis(5+)"
#or...
#Z Trig = "axis(2+)"
B Button = "button(2)"
A Button = "button(0)"
C Button R = "axis(3+)"
C Button L = "axis(3-)"
C Button D = "axis(4+)"
C Button U = "axis(4-)"

UPDATED R/L mapping...

R Trig = "button(5)"
L Trig = "button(4)"
Mempak switch = "button(1)"
Rumblepak switch = "button(3)"

Analog axis configuration mappings

X Axis = "axis(0-,0+)"
Y Axis = "axis(1-,1+)"`

Feature Request: Program Multiple Buttons

I have a Xbox controller and I like to be able to program it like this...

A-A
B-B
X-B
Y-
RB-R
LB-L
RT-Z
LT-Z
Start-Start
Back-Start
LS-
RS-
Left Stick-Stick
Right Stick-Dpad
Dpad-Cpad

Essentially I would like to set B to be B and X, Z to be RT and LT, Start to be Start and back. I feel this is a more comfortable setup. Please allow us to set some N64 buttons to accept two or more buttons from our controllers.

If this feature is added, please use this mapping as the default automatic mapping of all xbox 360 and one controllers.

Linux MayFlash Z and Start inverted

The ID 0079:1879 DragonRise Inc. MayFlash 2-port controller adapter on Linux has the inverted Start and Z buttons from the autoconfig.

They are listed as �USB GamePad USB GamePad and work well with:

AnalogDeadzone = "100,100"
AnalogPeak = "20000,20000"
DPad R = "button(13)"
DPad L = "button(15)"
DPad D = "button(14)"
DPad U = "button(12)"
Start = "button(8)"
Z Trig = "button(9)"
B Button = "button(2)"
A Button = "button(1)"
C Button R = "axis(3-)"
C Button L = "axis(3+)"
C Button D = "axis(2+)"
C Button U = "axis(2-)"
R Trig = "button(7)"
L Trig = "button(6)"
Mempak switch = ""
Rumblepak switch = ""
X Axis = "axis(0-,0+)"
Y Axis = "axis(1-,1+)"

(A good tool to verify is jstest-gtk)

InputAutoCfg.ini / Wrong Logitech F710 mappings for A and B.

The (Wireless) F710 has the same button layout as the F310 but the mappings for A and B are different.
It should be as follows:

B Button = button(2)
A Button = button(0)

The current setting feels like those NEOGEO Mini controllers where the jump and action buttons are at the wrong angle.

Current InputAutoCfg.ini does not have entry for DualShock 4 under Windows 11 (DS4, PS4)

I'm using the PS4 control pad, the DualShock 4 (aka "DS4") with Mupen64Plus in Windows 11, to play WWF No Mercy.

I am using the DS4 plugged in--not wirelessly.

In the Release v2.5.9, the DS4 was auto-detected and mostly worked; the C buttons were scrambled, but changing the C Button assignments under "[Wireless Controller]" in InputAutoCfg.ini to

C Button R = axis(2+)
C Button L = axis(2-)
C Button D = axis(3+)
C Button U = axis(3-)

straightened them out.

When I built and ran just now from the latest code, however, the DualShock 4 controller was not detected by the emulator; it appeared to trigger a search for "[PS4 Controller]," which was not listed in InputAutoCfg.ini.

To get it working, I had to add the following to my InputAutoCfg.ini:

[PS4 Controller]
plugged = True
mouse = False
AnalogDeadzone = 4096,4096
AnalogPeak = 32768,32768
DPad R = button(14)
DPad L = button(13)
DPad D = button(12)
DPad U = button(11)
Start = button(6)
Z Trig = button(4)
B Button = button(2)
A Button = button(0)
C Button R = axis(2+)
C Button L = axis(2-)
C Button D = axis(3+)
C Button U = axis(3-)
R Trig = button(10)
L Trig = button(9)
Mempak switch =
Rumblepak switch =
X Axis = axis(0-,0+)
Y Axis = axis(1-,1+)

Feature: Modifier syntax (C-buttons)

It might not be a typical setup, but I've configured a wiimote+nunchuk combo to work with mupen64plus with one minor issue; there aren't enough buttons between the two to support both a D-pad and four C-buttons. This is relatively minor since not all games even use the D-pad in the first place, but I thought it'd be cool if I could hold down the nunchuk's (singular) C-button to act as a modifier to either the analogue stick's inputs, or the D-pad.

This doesn't have any established precedent since the N64 virtual console has no wiimote/nunchuk support in the first place, but I always liked to think that this was the intention of the "C" button being labelled how it was. I think it should work pretty intuitively as, as far as I know, there's no N64 game which needs you to use the D-pad and C-buttons simultaneously.

As for the configuration syntax, I think it could look something like this:

DPad R = "button($right)"
DPad L = "button($left)"
DPad D = "button($down)"
DPad U = "button($up)"

C Button R = "button($C)+button($right)"
C Button L = "button($C)+button($left)"
C Button D = "button($C)+button($down)"
C Button U = "button($C)+button($up)"

No issue if this is turned down immediately, seeing as this is a completely imaginary setup which wasn't implemented with the actual Wii. This kind of feature is usually a driver-level type of thing and MoltenGamepad still has a standing issue on it (jgeumlek/MoltenGamepad#36), so I'll just bug them about it next.

secondary main stick feature request

Hi, the inverted controls on games such a Zelda oot and Zelda mm is very difficult for me to get my head around, I was thinking, just as how there's a secondary c buttons, if there was a secondary main stick I could assign these buttons to my Xbox d-pad with the up and down inverted.

Not sure if there is already a plug-in out there with this ability

rumble not working on linux with xbox one controller

Despite log showing:
Core: Game controller 0 (Standard controller) has a Rumble pak plugged in
and later
Input: Rumble activated on N64 joystick #1
rumble is not working with xbox one controller under linux. Verbose logging shows that the gamepad should vibrate when shooting a gun in goldeneye for example, but nothing happens. Nothing happens when rumblepak switch is pressed either. The only event generating vibrations is mempack switch.

Key Binding Profiles

Hi!
I love this input plugin, great work on it so far.
I am wondering if it's possible to save the key binds to a profile for easy switching?
I can't seem to find any way to do it.
If it's not possible, is that something that is planned?

PS5 DS5 Dualsense controller on Linux button axis mapping

I manually figured out the mappings myself through trial and error, and it took me a couple hours, so here they are.

B0  = X
B1  = CIRCLE
B2  = SQUARE
B3  = TRIANGLE
B4  = SELECT
B5  = PS LOGO
B6  = START
B7  = L3
B8  = R3
B9  = L1
B10 = R1
B11 = DPAD UP
B12 = DPAD DOWN
B13 = DPAD LEFT
B14 = DPAD RIGHT
B15 = GUIDE BUTTON
# Axis for right analog stick
A2+ = RIGHT
A2- = LEFT
A3+ = DOWN
A3- = UP
# The L2/R2 triggers
A4+ = L2
A5+ = R2

So here's an example of my config.

version = 2.000000
mode = 0
device = 0
name = "PS5 Controller"
plugged = True
plugin = 2
mouse = False
MouseSensitivity = "2.00,2.00"
AnalogDeadzone = "4096,4096"
AnalogPeak = "32768,32768"
DPad R = "button(14)"
DPad L = "button(13)"
DPad D = "button(12)"
DPad U = "button(11)"
Start = "button(6)"
Z Trig = "button(9)"
B Button = "button(2)"
A Button = "button(0)"
C Button R = "axis(2+)"
C Button L = "axis(2-)"
C Button D = "axis(3+)"
C Button U = "axis(3-)"
R Trig = "button(10) axis(5+)"
L Trig = "axis(4+)"
Mempak switch = ""
Rumblepak switch = ""
X Axis = "axis(0-,0+)"
Y Axis = "axis(1-,1+)"

This isn't really an issue but more to help future people. Feel free to close idc, just want it to get indexed by the issue tracker and search engines.

Two MAYFLASH N64 Controller Adaptors Issue

Does anyone own two MAYFLASH N64 Controller Adaptors? I am trying to be able to use four N46 controllers with M64Py which is a front end Mupen64Plus emulator. For whatever reason when I plug in 2 mayflash adapters I am not able to set each controller to Player1, Player2, Player3 and Player4. But for whatever reason it will set Player1 to controller 1 and 3, and set Player 2 to controller 2 and 4 and not allowing you to control Player3 and Player4.

Anyone know why this is and how to solve this. I did some testing and the culprit is mupen64plus itself, not the controllers, not the controller adapters, and not M64Py. I tested the four N64 controllers with the Dolphin emulator and they all worked file. I tried editing the mupen64plus.cfg and manually setting the controllers and launching a four player game in mupen64plus (not M64Py) and the issue occurred and it altered the mupen64plus.cfg file after setting Player1 to controller 1 and 3, and set Player 2 to controller 2 and 4.

I also tried four Xbox 360 wireless controllers in mupen64plus and I had no issue.

Anyone know how to fix this?

vibration support

I bought this Nintendo 64 wireless USB controller that claims to support vibration, but I've been unable to setup vibration or rumble support.

I have tried changing the value of Rumblepak switch = key(${KEY}) with $KEY ranging from 0 to 400, but for every such value I get this error upon startup:

Input Warning: Couldn't open rumble support for joystick #1

How can I enable vibration/rumble support for this controller? Or how would I go about attempting to discover or test vibration support?

I've tried jstest-gtk but I do not see any buttons or keys related to vibration/rubmle.

Below is the config I am using for this controller, which works except for the rumble switch setting.

; SAFFUN Wireless USB PC Game pad Joystick
[SWITCH CO.,LT D. Usb Controller]
plugged = True
plugin = 2
mouse = False
AnalogDeadzone = 0,0
AnalogPeak = 32766,32766
DPad R = hat(0 Right)
DPad L = hat(0 Left)
DPad D = hat(0 Down)
DPad U = hat(0 Up)
Start = button(9)
Z Trig = button(6)
B Button = button(1)
A Button = button(2)
C Button R = button(10)
C Button L = button(0)
C Button D = button(3)
C Button U = button(11)
R Trig = button(5)
L Trig = button(4)
; Mempak switch = key(??)
Rumblepak switch = key(4)
X Axis = axis(0-,0+)
Y Axis = axis(1-,1+)

Support for non-SDL mouse injection

Hello, I opened this issue already on mupen64plus/core but I believe this is a better place for it.

According to this post on the M64P github, Mupen64Plus has no API for injecting mouse input in the same way as it does for keyboard input.

This means that none of the current Mupen64Plus frontends (M64P and M64Py) can capture mouse input because the frontends use Qt, not SDL.

Please consider adding an API to support this feature. At the moment I have to use PJ64 to get mouse input for shooting games, and I'd rather use a Mupen64Plus frontend if possible.

No InputAutoConfig.ini entry for 'Xbox Series X Controller'

I just want to add the 'Xbox Series X Controller' controller name to the .ini file. I'm currently using ubuntu. After some trial and error and troubleshooting why my controller wasn't being automatically recognized, I found out that adding the name above to an existing xbox controller configuration solved my issue. Maybe I can save someone else some time.

joy con on mupen64 discussion

Hi all,
I'm trying to pair my switch joy-cons to mupen64plus, using the riking/joycon driver. I paired the controllers though Bluetooth and tested them using jstest, and it works pretty well. I then created a automatic button map for the joy-cons in the InputAutoCfg.ini file, that then mapped all the buttons almost perfectly, as follows:

[Full Joy-Con 1]
plugged = True
plugin = 2
mouse = False
AnalogDeadzone = 4096,4096
AnalogPeak = 32768,32768
DPad R = button(16)
DPad L = button(15)
DPad D = button(14)
DPad U = button(13)
Start = button(9)
Z Trig = button(7)
B Button = button(0)
A Button = button(1)
C Button R = axis(-4)
C Button L = axis(4)
C Button D = axis(-5)
C Button U = axis(5)
R Trig = button(5)
L Trig = button(4)
Mempak switch =
Rumblepak switch =
Y Axis = axis(3+,3-)
X Axis = axis(2+,2-)

The problem is that no buttons work when mapped to axis buttons, only movement (Y Axis and X Axis). So, in this example, the C buttons aren't working. This also happens with any other key. I also tried to change the C buttons axis with X and Y axis, and the movement works, but the C buttons don't.
I still can map the C buttons to the left joy con and play, but rather not have them underneath the movement axis, talk about uncomfortable xD
Any Ideas?

Controller bounding for mupen64plus to a specified number

Hi there,

I have a problem regarding the bounding of controllers for mupen64plus.

I have 3 controllers (Thrustmaster dual analog 3.2 / FireStorm Dual Power 2 / Thrustmaster analog gamepad) and I want to bound each controller to a specified number (e.a. the blue controller is always player number 1, the red one always player number 2 and the green one always player number 3 even if I switch the usb ports.

How is that possible?

So far I set up my controllers via "InputAutoCfg.ini" and assigned all the buttons. Only the bounding of the controllers won't work?!

I really tried a lot and even in different forums I couldn't find a solution :-(

Can anyone help me?

PS: Here is my "InputAutoCfg.ini":

[Thrustmaster dual analog 3.2]
plugged = True
plugin = 2
mouse = False
device=1
AnalogDeadzone = 4096,4096
AnalogPeak = 32768,32768
DPad R = hat(0 Right)
DPad L = hat(0 Left)
DPad D = hat(0 Down)
DPad U = hat(0 Up)
Start = button(3)
Z Trig = button(8)
B Button = button(1)
A Button = button(0)
C Button R = axis(3+)
C Button L = axis(3-)
C Button D = axis(2+)
C Button U = axis(2-)
R Trig = button(6)
L Trig = button(4)
Mempak switch =
Rumblepak switch =
X Axis = axis(0-,0+)
Y Axis = axis(1-,1+)

[FireStorm Dual Power 2]
plugged = True
plugin = 2
mouse = False
device=2
AnalogDeadzone = 4096,4096
AnalogPeak = 32768,32768
DPad R = hat(0 Right)
DPad L = hat(0 Left)
DPad D = hat(0 Down)
DPad U = hat(0 Up)
Start = button(3)
Z Trig = button(8)
B Button = button(1)
A Button = button(0)
C Button R = axis(3+)
C Button L = axis(3-)
C Button D = axis(2+)
C Button U = axis(2-)
R Trig = button(6)
L Trig = button(4)
Mempak switch =
Rumblepak switch =
X Axis = axis(0-,0+)
Y Axis = axis(1-,1+)

[Thrustmaster analog gamepad]
plugged = True
plugin = 2
mouse = False
device=3
AnalogDeadzone = 4096,4096
AnalogPeak = 32768,32768
DPad R = hat(0 Right)
DPad L = hat(0 Left)
DPad D = hat(0 Down)
DPad U = hat(0 Up)
Start = button(3)
Z Trig = button(8)
B Button = button(1)
A Button = button(0)
C Button R = axis(3+)
C Button L = axis(3-)
C Button D = axis(2+)
C Button U = axis(2-)
R Trig = button(6)
L Trig = button(4)
Mempak switch =
Rumblepak switch =
X Axis = axis(0-,0+)
Y Axis = axis(1-,1+)

real n64 range

add support for calibration like in dolphin or real n64 range like in n-rage input, so the standart analog stick isnt' sticking in eight positions, but allows for 360 degree of control.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.