Giter Club home page Giter Club logo

android-keyboard-gadget's People

Contributors

aapo avatar acai66 avatar ajmtrz avatar benoit-pierre avatar benwoodworth avatar conrad-heimbold avatar crystalix007 avatar dkingalpha avatar igorastds avatar jcadduono avatar lazerl0rd avatar mayankmetha avatar michael86 avatar nkrapivin avatar pc-coholic avatar pelya avatar scintill avatar shapeshifter499 avatar tejado avatar theimpulson avatar tomoms avatar wknd avatar

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  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  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  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  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

android-keyboard-gadget's Issues

jfltexx, latest cm12.1, latest alucard kernel

Hello. I performed all the steps in the xda forum installing the alucard kernel but when I plug the device to my PC, the USB KEYBOARD app crashes, but if I unplug, the app returns to work. Thank you

Occasional Reboot on Nexus Grouper 2012 (KitKat) version when connected with usb debug.

Currently running your kernel patch on my nexus and occasionally if disconnected and reconnected to a PC i get 'USB device not recognized'. In an attempt to resolve the issue I attempted to disable/enable usb debugging but when I attempt to disable it the nexus freezes up and reboots a few seconds later.

On a separate note I have written a JNI wrapper to make use of this functionality in Java based apps. I would like to submit my code but i'm not too familiar with github. Do I create a pull request or fork? Or do you add me as a contributor? Anyway I'd love to release my code if you'll have it.

regression when updating from version 1.05 to 1.06

I have 2 devices:

  • a Sony Xperia Tipo running CyanogenMod 10 (Jelly Bean 4.1.2), with a kernel patched with your HID patch (3.0.8)
  • a Nexus 7 (2013) running CyanogenMod 11 (KitKat 4.4.4), still using the CyanogenMod kernel (so without the HID patch)

Version 1.05 works fine on both:

  • on the Tipo, mouse and keyboard work fine
  • on the Nexus, of course I get the screen telling me a custom kernel is needed

With the latest 1.06 version however:

  • on the Nexus: I get left with a black screen after the SDL splash screen and allowing root access
  • on the Tipo: it works fine, if version 1.05 has been started before, but I get the same thing as the Nexus after rebooting

One difference before and after running 1.05 is the devices rights.

Before:

> adb shell ls -l /dev/hidg\*
crw------- root     root     244,   0 2014-11-30 15:24 hidg0
crw------- root     root     244,   1 2014-11-30 15:24 hidg1

After:

> adb shell ls -l /dev/hidg\*
crw------- u0_a62   root     244,   0 2014-11-30 15:24 hidg0
crw------- u0_a62   root     244,   1 2014-11-30 15:24 hidg1

Is it easy to compile to i9300 kernel?

I'm using SuperNexus with cm11 beta kernel for my Samsung Galaxy S3 i9300. Is it possible to commit low level HID compliant service to such a kernel like yours?

error patching on sprout device

Help, patching allways got hunk failed at this line

@@ -1422,6 +1460,7 @@ static struct android_usb_function *supported_functions[] = {
&diag_function,
#endif
&rmnet_function,

  • &hid_function,
    NULL
    };

Try with different patch but got same problem in &hid_function
What should i do?

Android Lollypop hid_function_bind_config failed

I am trying to add HID functionality to my device but i keep getting the hid_function_bind_config failed error.

Below is output while booting device...

[ 3.782222] adb_android_function_enable ...1
[ 3.786518] ==kcj enable_store dev->enabled:1
[ 3.791609] ==kcj enable_store
[ 3.794741] ==kcj enable_store dev->enabled:0
[ 3.799429] ==kcj enable_store
[ 3.802525] ==kcj enable_store..2
[ 3.805896] adb_android_function_enable ...1
[ 3.810220] ==kcj enable_store dev->enabled:1
[ 3.817129] adb_open
[ 3.819438] hid keyboard
[ 3.822014] hidg_bind: creating device d6f3e700
[ 3.827827] android_usb gadget: hidg_bind FAILED
[ 3.832534] hid_function_bind_config: hid_function_bind_config keyboard failed: -19
[ 3.841698] android_bind_enabled_functions: hid failed

Please help.

Galaxy S7 Edge SM-G935F Patch Problem

Hello

I'm having problems with patching my kernel for my device.

Log:

can't find file to patch at input line 5
Perhaps you used the wrong -p or --strip option?

The text leading up to this was:

|diff --git a/drivers/usb/gadget/Makefile b/drivers/usb/gadget/Makefile
|index 581a5ae..6be0aa5 100644
|--- a/drivers/usb/gadget/Makefile

|+++ b/drivers/usb/gadget/Makefile

File to patch:
Skip this patch? [y] y
Skipping patch.
1 out of 1 hunk ignored
can't find file to patch at input line 18
Perhaps you used the wrong -p or --strip option?

The text leading up to this was:

|diff --git a/drivers/usb/gadget/android.c b/drivers/usb/gadget/android.c
|index 4de9562..b26ea34 100644
|--- a/drivers/usb/gadget/android.c

|+++ b/drivers/usb/gadget/android.c

File to patch:
Skip this patch? [y] y
Skipping patch.
4 out of 4 hunks ignored
can't find file to patch at input line 91
Perhaps you used the wrong -p or --strip option?

The text leading up to this was:

|diff --git a/drivers/usb/gadget/f_hid.c b/drivers/usb/gadget/f_hid.c
|index 83a266b..236bdf4 100644
|--- a/drivers/usb/gadget/f_hid.c

|+++ b/drivers/usb/gadget/f_hid.c

File to patch:
Skip this patch? [y] y
Skipping patch.
13 out of 13 hunks ignored
patch: **** Can't create temporary file drivers/usb/gadget/f_hid.h.oEgkyle : No such file or directory

How should I fix it? Thanks

Not understanding readme

Hi, I am trying to port this patch to the Moto E 2nd Gen "surnia". The kernel piece is fine its the boot.img piece I am skeptical about. This will need to be installed using fastboot right? Also the command: repo init -u https://android.googlesource.com/platform/manifest -b android-4.4.2_r1 . What would I need to change the android-4.4.2_r1 to? I am running cm 13 witch is android version 6.0.1. I do apologize if the answer to these questions are simple but I want to be sure that I don't mess up especially since this is the boot.img file we are talking about.

Thank you
-Leedl3

add keystrokes for app

hello @pelya I have a question:
I am creating a hid app but I don't want to work with the hid-gadget-test file. Is it possible to build it into my app to send keystrokes from your hid patch?(I am using xamarin(mono for android/ C# for android)
Regards,
Tim

Mouse input relative to the screen

Hi,

Good work on the patch, loving it, but is there any way to switch mouse input to be relative to the screen rather than to its last position? I'm trying to automate some stuff and this make it harder to predict where the current cursor can be.

Best regards.

perhaps a cm 12.1 kernel?

for the wonderful nexus 7 grouper? for those of us who need this app for cyber security and need it for features in a ey pentesting platform that requires a different kernel than the normal grouper kernel like cm 12.1.

keyboard partially not working

I'm on n5 with cataclysm lollipop rom, elementalx kernel and touchpal keyboard
the mouse works fine but the keyboard is not fully working, for example enter and space works but the letters and numbers don't, also if I switch to the google keyboard my touches goes through it and I can see the touchpad area flashing like there was no keyboard at all

Keyboard/mouse event

Hey,

i am currently using your patch for developing an android app where I had a problem with your definition of the keyboard event structure:

You are saying that the keyboard event is an array of 8 bytes. So I though the following command should also work for writing the letter "a" to the device:

echo -n -e "\x00\x04\x00\x00\x00\x00\x00\x00" > /dev/hidg0

This didn't work for me, so after some hours (!) of searching for any problems in my Java code, which executes this command, I used your (precompiled) example program hid-gadget-test to verify the actual output by directing the output into some file:

echo a | ./hid-gadget-test /mnt/sdcard/test.txt keyboard

which actually writes the following byte sequence into the file (hexdump):

0000 0400 0000 0000 0000 0000 0000 0000

So these are 16 bytes instead of the expected 8. If I change my echo command to output 16 bytes instead of 8 it works perfectly.

Tested on Nexus 7 2012 with self compiled kernel. I didn't use the mouse events, but I would assume the same problem there.

hid-gadget-test qwerty azerty

Hello, I have a bug with hid-gadget-test utility, when I run : echo a | /data/local/tmp/hid-gadget-test /dev/hidg0 keyboard, it's print "q" and vice versa

I think to a qwerty azerty conversion... Can you help me with that?

Cyanogenmod 12.1 stuck - selinux

Program starts and stays at "opening /dev/hidg0 and /dev/hidg1".

Found a closed issue from prodoomman, he told me to either write a selinux policy for hidg* or deactivate selinux. I can't write policys but deactivating it did the trick.

As the program already asks for root permissions this is quite annoying

Hid utility quiet switch?

Hi
I've managed through a fair amount of trial and error to write a simple script that reads a series of key presses from a txt file ( basically Ctrl c, Alt tab, ctrl v, next entry)and repeats a few hundred times.
I put a echo counter in the code but can never see its output as the phone screen is always filled with the possible key entries.
Is there a quiet switch to stop displaying the keys and only show my echo commands?
Thanks
For the very useful utility
Chris

Possibility to deactivate HID

Is it possible to deactivate HID?
It think it should be possible to activate/deactivate it like mtp, mass_store, ...

oneM8 build

thanks for the patch. I applied it on the dirtyunicorn kernel 3.4.109 for the HTC oneM8. -> https://github.com/DirtyUnicorns/android_kernel_htc_msm8974.

Every thing looked good excepts that /dev/hidg* are not created.

i have the following if that can help:
root@htc_m8:/ # cat /proc/devices | grep hidg
229 hidg

root@htc_m8:/ # cat /sys/class/android_usb/android0/functions
mtp,adb

I tried to create with mknod but i had "no such device or address"

Is there something that i could do to make it work?

BeagleBone Black, successful compilation but unable to boot (Lacking MLO, u-boot.img, uImage, uEnv.txt, rootfs.tar.bz2)

Warmest greetings everyone,

I've managed to compile the kernel (zImage) and the image (boot.img) following the steps.
I then used win32diskimager to write the boot.img to the sdcard, but the beaglebone black couldn't boot up.

I tried using rowboat's mkmmc-android.sh script to write the files to the sdcard, but I still need some other files such as MLO, u-boot.img, uImage, uEnv.txt, and rootfs.tar.bz2
<u-boot.bin> <boot.scr>
https://gitorious.org/rowboat/external-ti_android_utilities/source/8d6bf9f66eeab6bba7f9828adf1e2ab194ee82d7:am335x/mk-mmc/README.txt#L35

I've tried googling for ways to generate these additional files, but most of the online resources only relate to kernels from rowboat (e.g. this tutorial https://github.com/csimmonds/bbb-android-device-files/tree/kk4.4-sdcard).

Are there any possible methods for BeagleBone Black?

VNC Support

Hi,

I feel that this project will be more interesting if we can use the Android device as a PROXY for a physical hardware (like KVMIP server).

Here my proposal: Add VNC server tool.

To achieve this fast, in the project of UML (User Mode Linux), you can found a very simple VNC server for a virtual shared memory framebuffer. In this project the server isn't running with real vga, keyboard, mouse.

The source code is on this page: http://intgat.tigress.co.uk/rmy/shmfb/index.html
If you download the source (uml_fb-0.1.1.tar.gz), inside you have the "uml_vncfb.c" tool. This tool uses the well known LibVNCServer, and it's very lightweight. In the source you have isolated the function that sends the events of VGA, KEYBOARD and MOUSE. See this on the source:

  • shmfb_command(SHMFB_KEY_EVENT, keymap[i].keycode, down, 0, 0);
  • hmfb_command(SHMFB_BUTTON_EVENT, vnc_mousemap[i],((now >> i) & 1), x, y);
  • shmfb_command(SHMFB_UPDATE_EVENT, 0, 0, 0, 0)

So, if you replace these three calls with the code of hid-gadget-test utility you can implement a simple VNC server for this.

At time, the framebuffer can be a black window, but if you implement the camera capture, then you can implement the full remote functionality.

Someone likes to implement this?

Trying to compile a kernel for CM 11 and Samsung Note 3

Hello,

thank you very much for great idea and code. My idea of this usb mode is to use it with keypass2Android. It would be an outstanding feature to simply plugging the phone into usb and select (or copy to clipboard) the username/password from keypass or any other passwordstore and send it to your pc.

But for now iam having problems of compiling the kernel. The Patch had issues with android.c, so i tried to fix it manualy. There are some light differences in the android.c.

Now when i try to compile i get the following error:
../../../../../../kernel/samsung/hlte/drivers/usb/gadget/android.c: In function 'functions_store':
../../../../../../kernel/samsung/hlte/drivers/usb/gadget/android.c:2758:16: warning: passing argument 2 of 'android_enable_function' from incompatible pointer type [enabled by default]
error, forbidden warning: android.c:2758
make[5]: *** [drivers/usb/gadget/android.o] Error 1
make[4]: *** [drivers/usb/gadget] Error 2
make[3]: *** [drivers/usb] Error 2

the section is and line 2758 is: " android_enable_function(dev, "hid");":

functions_store(struct device *pdev, struct device_attribute *attr,
const char *buff, size_t size)
{
struct android_dev *dev = dev_get_drvdata(pdev);
struct list_head *curr_conf = &dev->configs;
struct android_configuration *conf;
char *conf_str;
struct android_usb_function_holder *f_holder;
char *name;
char buf[256], *b;
int err;
int hid_enabled;

    mutex_lock(&dev->mutex);

    if (dev->enabled) {
            mutex_unlock(&dev->mutex);
            return -EBUSY;
    }

    /* Clear previous enabled list */
    list_for_each_entry(conf, &dev->configs, list_item) {
            while (conf->enabled_functions.next !=
                            &conf->enabled_functions) {
                    f_holder = list_entry(conf->enabled_functions.next,
                                    typeof(*f_holder),
                                    enabled_list);
                    f_holder->f->android_dev = NULL;
                    list_del(&f_holder->enabled_list);
                    kfree(f_holder);
            }
            INIT_LIST_HEAD(&conf->enabled_functions);
    }

    strlcpy(buf, buff, sizeof(buf));
    b = strim(buf);

    while (b) {
            conf_str = strsep(&b, ":");
            if (conf_str) {
                    /* If the next not equal to the head, take it */
                    if (curr_conf->next != &dev->configs)
                            conf = list_entry(curr_conf->next,
                                              struct android_configuration,
                                              list_item);
                    else
                            conf = alloc_android_config(dev);

                    curr_conf = curr_conf->next;
            }
           while (conf_str) {
                    name = strsep(&conf_str, ",");
                    if (name) {
   #ifdef CONFIG_USB_ANDROID_SAMSUNG_COMPOSITE
                            /* Enable ncm function */
                            if (is_ncm_ready(name)) {
                                    printk(KERN_DEBUG "usb: %s ncm on\n",
                                                    __func__);
                                    err = android_enable_function(dev, conf,
                                                    "ncm");
                                    continue;
                            }
      #endif
                            err = android_enable_function(dev, conf, name);
                            if (err)
                                    pr_err("android_usb: Cannot enable %s", name);
                             if (!strcmp(name, "hid"))
                                     hid_enabled = 1;
                    }
            }
   /* HID driver always enabled, it's the whole point of this kernel patch */
   if (hid_enabled)
           android_enable_function(dev, "hid");

    }

    /* Free uneeded configurations if exists */
    while (curr_conf->next != &dev->configs) {
            conf = list_entry(curr_conf->next,
                              struct android_configuration, list_item);
            free_android_config(dev, conf);
    }

    mutex_unlock(&dev->mutex);

    return size;

}

BTW. Iam very new dot kernelcompiling :=)

best regards...

Alternative camera input

Hi Pelya,

As you commented on:
http://github.com/pelya/android-keyboard-gadget/issues/20#issuecomment-73338202
the current implementation of the USB Keyboard app can compile on plain desktop Linux (with SDL).

So I suggest to implement a simple "alternative" input for the camera in this environment. The code of the camera class seems to be very compact. Then, why not include an FFMPEG rawvideo pipe for capture frames? Please, see some simple examples at:
http://dranger.com/ffmpeg/ffmpegtutorial_all.html

As you remember, my idea is to use the Android device as simple "USB gadget proxy" for send commands to "/dev/hidgX" ports. At time, I can do that with network pipes, and use your USB Keyboard app in a Linux machine. So now, I like to connect this app (in the workstation) to an IP Camera (using FFMPEG).

What you think about this "crazy" idea?
Thank you for read this!

Building for Samsung Galaxy S3

I am trying to build it for Samsung S3.
I checked the patch file and I edited/created the required files manually and I did patch the kernel manually. I flashed my kernel using heimdall but I am not sure if it is working. I have Cyangonmod on my device installed actually.
I am not sure what is wrong.

Any suggestions??

Is it tested with Lollipop on N7?

Hey, not sure if I should post this in issues, but I need to know is it really working with Lollipop? I'm doing some project for college using this kernel, and I really want to switch to Android 5.0.

remote-client suggestions

Hi Pelya,

First: Thank you for the VNC support! It's a must have! I'm testing it and it's working as espected. No errors found.

Realted to version 1.10 of remote-client, I have these suggestions:

  1. Please, add the option to enable/disable the camera. Specifically I suggest to starting with camera off and provide a method to enable/disable it. When the camera is off, you only need to send a black screen (with a very low fps, like 1 update per second).

  2. How to invoque the remote overlay menu? When I connnect using a VNC client, I can see some menu windows, but I don't know how to call them from the VNC client.

  3. I also suggest to add a config option to autostart with the VNC server enabled. I feel this can be a high priority function, because my target scenerio is a remote mobile connected to a remote server, and in this scenario I don't have the option to access to the physical device.

I hope you can improve the current version when you have sufficient time. I really appreciate your effort. Thank you very much!

Explanation

What should I read exactly to understand what you have coded entirely. I need something like a walkthough of your code to understand what is this function and why it is used etc etc, so that I can develop on top of that.

Best Regards

how to compile a kernel for my old vodafone 858 smart / Huawei 8160

As a family practice doctor, your app could be useful for getting medical notes from my personal device onto the EMR on a locked corporate network.

I would like to learn how to compile a kernel for my old vodafone 858. Before getting my current phone, I found a youtube video detailing the process to flash CM9 which gave the 858 a new lease on life for a while.

I have read your instructions to launch commands on github from a linux box. I have previously run ubuntu from a CD/DVD but I would like to ask if that is the right idea or not as I am in unfamiliar territory and could use a little help please.

Freezes when running command

Hey!

Just patched and built a kernel for my zenwatch 2 with this patch and now the files /dev/hidg0 and /dev/hidg1 exist (i have chmodded them) but when I'm trying to run a preview command from your script like "echo a | ./hid-gadget-test /dev/hidg0 keyboard" it just freezes and does nothing at all :/

Any idea on how to fix this?

Thanks!

Make it possible to ignore alt key on mobile keyboards

This is working as advertised on the d2 kernel http://review.cyanogenmod.org/#/c/65082/ Thanks :D

One thing I noticed, on apexqtmo, which has an integrated QWERTY keyboard, the ALT key is treated as a literal alt key, instead of as a combo key to produce more symbols. Is it possible to shift the behavior so the app does not emulate a desktop keyboard and produces the expected key from a mobile keyboard instead?

USB Keyboard app - depth issue?

I'm using Google Keyboard from the app store with your USB Keyboard app.
The touchscreen and everything is completely usable and working, but when I use the button to pop the keyboard up, I can't type on it.
All touch actions go straight through the keyboard and onto the touchpad or menu buttons.

Also, it'd be lovely if you could the possibility to pop the keyboard out in portrait mode if screen rotation enabled (or even a menu option) as it's a struggle for me to use a keyboard in landscape on a 6" screen. =P

Not working in parallel with rndis

I need to bring a configuration like the below one this to work:

echo adb,mtp,hid,rndis > /sys/devices/virtual/android_usb/android0/functions

but I could only end up with either "adb,mtp,hid" enabled or "rndis,hid" enabled.

The second case would be enough, but hid isn't working although shown.
Does it depend on "mtp" ? If yes - do you know a configuration to run "mtp" and "rndis" at the same
time and thus make hid work again?

In fact I need a rndis adapter running, which responds to client-actions triggered by hid commands,
but I'm only able to run one of both usb.

Kernel

Hi,

Thanks for sharing this great gadget :)

But i want help about samsung galaxy trend plus s7580 ?

How i should use this app ?
I have rooted my phone but don't know about kernel ?
I installed the usb keyboard from play store but it says i have to compile the custom kernel ?
Pleae help ?

Best Regards

Guidance for an aarch64 sony kitikami platform kernel source ?

pelya,

hi, the issue during compile is this;

drivers/built-in.o: In function `hid_function_cleanup':
/storage/sxZ5_dev/kernel/wafflez/drivers/usb/gadget/android.c:2979: undefined reference to `ghid_cleanup'
/storage/sxZ5_dev/kernel/wafflez/drivers/usb/gadget/android.c:2979:(.text+0x369dfc): relocation truncated to fit: R_AARCH64_CALL26 against undefined symbol `ghid_cleanup'
drivers/built-in.o: In function `hid_function_init':
/storage/sxZ5_dev/kernel/wafflez/drivers/usb/gadget/android.c:2974: undefined reference to `ghid_setup'
/storage/sxZ5_dev/kernel/wafflez/drivers/usb/gadget/android.c:2974:(.text+0x369e18): relocation truncated to fit: R_AARCH64_CALL26 against undefined symbol `ghid_setup'
drivers/built-in.o: In function `hid_function_bind_config':
/storage/sxZ5_dev/kernel/wafflez/drivers/usb/gadget/android.c:2986: undefined reference to `hidg_bind_config'
/storage/sxZ5_dev/kernel/wafflez/drivers/usb/gadget/android.c:2986:(.text+0x372d9c): relocation truncated to fit: R_AARCH64_CALL26 against undefined symbol `hidg_bind_config'
/storage/sxZ5_dev/kernel/wafflez/drivers/usb/gadget/android.c:2992: undefined reference to `hidg_bind_config'
/storage/sxZ5_dev/kernel/wafflez/drivers/usb/gadget/android.c:2992:(.text+0x372dc0): relocation truncated to fit: R_AARCH64_CALL26 against undefined symbol `hidg_bind_config'
Makefile:801: recipe for target 'vmlinux' failed

I am working with sony kitikami platform kernel source
VERSION = 3
PATCHLEVEL = 10
SUBLEVEL = 49
EXTRAVERSION =
NAME = TOSSUG Baby Fish

toolchain: aarch64-linux-android-4.9-kernel/bin/aarch64-linux-android-
I started from your kernel-3.10-nexus9.patch, as it seemed the closest starting point.
I am a little lost and still new to aarch64. Help !! =D

Thanks.
m

USB-Keyboard paste function issues.

When you paste text such as 'Hello "android', the double quote is not converted to a full character, and instead the input is sent as 'Hello ändroid'

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.