#🤖│community_dev

1 messages · Page 14 of 1

grizzled wolf
#

@steel ruin I am using Antergos because I was lazy last time I had to re-install so Arch-based, yeah. I have not tried the package yet - I didn't notice it!

#

ah - it is still the appimage

#

and appears to be out of date already

steel ruin
#

@grizzled wolf And just updated now. 😉

grizzled wolf
#

hehe

steel ruin
#

didn't get to it earlier today, and was off playing at a session

grizzled wolf
#

@steel ruin Doesn't detect - still needs sudo?

steel ruin
#

@grizzled wolf Doesn't detect… what? What needs sudo?

#

Ah, the udev stuff?

grizzled wolf
#

It doesn't detect my w1

steel ruin
#

Are you in the plugdev group?

grizzled wolf
#

That group doesn't exist on Arch

#

so I have been sudo-ing until I get a chance to work on a better solution

steel ruin
#

Ooh. Good point.

#

Let me fix the PKGBUILD.

grizzled wolf
#

Ubuntu thing - the plugdev

steel ruin
#

@grizzled wolf I don't actually have a Wooting yet, so my testing is very limited. I can basically verify that it places files in the proper places and runs. :p

grizzled wolf
#

I was trying to help Jeroen and looking at how others did it (I have roccat stuff) but I have been busy

#

ah

#

yeah - I am keeping it as an appimage with an alias for now - I am working on making a long term stable solution

steel ruin
grizzled wolf
#

yeah - I don't think there is a pre-existing group that fits

#

the roccat software adds a roccat group

#

and I think something like that for wooting might be the way to go - then it can work on any distro

#

although not sure how that works with appimage

#

like I say - hoping to sort out a long term solution

steel ruin
#

@grizzled wolf I'm about to push an update, can you test that?

grizzled wolf
#

yeah - no problem

steel ruin
#

@grizzled wolf Pushed.

#

(May need udev rules reloading, and maybe replugging of keyboard.)

grizzled wolf
#

ok - gimme a few minutes

#

replugged and it was detected - cool beans 😃

steel ruin
#

Thanks for testing!

grizzled wolf
#

np

steel ruin
#

Anyway, I would definitely prefer a non-AppImage way of distribution too.

#

No need to duplicate all these libraries on the system.

grizzled wolf
#

yeah

#

it works for now though so it is better than nowt 😃

steel ruin
#

And no sudo needed anymore. 😃

grizzled wolf
#

I am sure we shall chat more in the future - gtg atm

#

.o/

steel ruin
wet knot
#

Test

#

Anyone want to kindly reply

#

@grizzled wolf

#

Can you respond?

lucid island
#

Squeeck

grizzled wolf
#

Reply

#

😃

#

sorry - I was busy @wet knot

wet knot
#

Awesome perms are fixed

sweet peak
#

Hey, new channel

peak vigil
#

new channel who dis

glass radish
#

it's the dev cult channel

wet knot
#

Correct

sharp patrol
whole merlin
#

I just looked into the API, do I see correctly that there can be only 1 wooting keyboard connected?

#

I will wait to play with it until my Wooting two arrives 😃

wet knot
#

@meager seal technically its already out.

#

Just not the normal download 😄

#

Its downloadable 🤷

#

Just not stable release

#

but its still a release 😄

#

He said he was going to do it last thursday

#

So erm, rip.

placid ledge
#

I'm just home from holiday, I should be able to get the release out tomorrow

little monolith
wet knot
#

@little monolith follow the guide?

little monolith
#

that's without the joystick thing 😛

#

i can send binaries in case anyone wants to mess around

fathom garnet
#

is that in c++?

little monolith
#

yea

fathom garnet
#

so much auto D:

little monolith
#

i like auto

fathom garnet
#

I hate using var/auto/whatever so much, it's so unsafe, but I know it can be easy to use and people are used to it from other languages

little monolith
#

it isn't really unsafe if you know what you're doing

#

for example,
auto i = 0ull; here you're still specifying the type in the second operand (ull - unsigned long long)

#

and ull is just easier to type than unsigned long long

fathom garnet
#

well in that case you could just make ull a makro or something if you use it that often, because in a different line I only know that i is from type auto

little monolith
#

in most of the cases you still can hover over the variable with your mouse and it'll kindly tell you the type

fathom garnet
#

even in a different row than the one where you initialize it? and what editor is it, Visual studio?

little monolith
#

and yes that's vs

#
    __declspec(__nonvolatile) auto get_data() const noexcept ->
            std::enable_if<!0 != !1, std::add_pointer<std::remove_pointer<minefield_data*>::type>::type>::type
#

perfection

fathom garnet
#

hm, maybe last time I tried it it was a different c++ or VS version, still prefer typesafety personally

little monolith
#

i'm using vs2017

chilly oar
#

@little monolith You can optimise your code by just change "(w / 255.f -s / 255.f) * 450.f" to "(w - s) / 255.f * 450.f" that would be automaticly optimise to "(w - s) * 1.764705882352941"

little monolith
#

that's a good point

#

will do tomorrow

chilly oar
#

@little monolith And you can spare the clamp stuff and optimise it even more when you just filter the input values just before you use it for the calculation.

See full code example:
const auto w = read_analog(2, 2),
a = read_analog(3, 1),
s = read_analog(3, 2),
d = read_analog(3, 3);

// limit values between -450 and 450, just make sure auto produce only signed integers
cmd->forwardmove = ((w & 0xff) - (s & 0xff)) / 255.f * 450.f;
cmd->sidemove = ((d & 0xff) - (a & 0xff)) / 255.f * 450.f;
#

This produces less furcation in the compiled code and eliminate the chance of a wrong prediction for the clamp stuff. Because clamp has at most two comparisons (according to https://en.cppreference.com/w/cpp/algorithm/clamp ). You only have to check that "255 / 255.f * 450.f" don't produce a value higher than 450.f because of the intern roundings. But I expect there is no problem with that.

chilly oar
#

The only "big" disadvantage with this is that its cut off the original value when it is out of range. Like if the value is 256 for example, it only produces 0 and for 257 it produces 1.

wide nymph
#

@little monolith sick, I’m not a “coder”, so what’s effectively happening.

chilly oar
#

It just read the analog values of the keypresses and make a transformation of the range from a single movement of one direction with 0 to 255 to a corresponding movement of two directions (forward movement minus backward movement to get the overall movement of one axis) with a range of -450 to 450 and he use this as a native input for the movement of the game.

chilly oar
#

The only question for me is: Where are any problems related to VAC with this method?

fathom garnet
#

If he's catching input, changes it, then gives that to the game there should be no issues, unless he grabs something from the engine?

little monolith
#

@wide nymph i'm basically hooking game's movement function and changing the forwardmove/sidemove values to which i've read from the keyboard.

@chilly oar technically - it is a cheat, practically - not really. you should be completely fine if you use -insecure as a launch option.

#

it is technically a cheat because we're hooking a game's movement function which gets called every tick, and, surprise surprise, cheats take advantage of that too.
VAC can't analyze the behavior of your module where the hooked function is located. they also have a VAC module they stream to accounts with low trust factor which actually catches this kind of hooks. i'm not a valve employee so i can't be 100% sure with what i'm saying right now, but you should be completely fine if your trust factor isn't incredibly low due to past VAC bans in cs:go on other accounts you have.

chilly oar
#

That was a really good explanation, thx.

little monolith
#

@hybrid lake there are some weird keyboard crashes on wooting_rgb_reset - happens randomly, can't tell when and/or why exactly that happens. only resets half of the keyboard's rgb colors, then the keyboard decides that it's enough and hangs completely.

little monolith
#

yep, that happened 3 times for me already

wet knot
#

@little monolith hey that's pretty cool, me wants

wide nymph
#

@little monolith thanks for the explanation. I see how it makes the difference now, no calling Xinput but grab it straight by the balls for movement.

Cool stuff on RGB 😄

#

Looks like we have another candidate to get featured

little monolith
#

gained quite some knowledge during the making of the visualizer, since i basically was taking raw sample data and processing that

#

the first video was synced very poorly with the audio though, that's why it could look worse on video than it actually does in person

hybrid lake
#
    {
        printf(" > wooting keyboard isn't connected\n");
        return;
    }```
#

@little monolith yikes? 😛

#

Love the projects btw, your fft is a lot smoother than mine

little monolith
#

well, if you don't have a keyboard and decide to try it - i'm surprised lol

hybrid lake
#

do you have an effect active when the reset crashed the keyboard?

little monolith
#

yep, wave

#

twice it reset it to the selected one (pink) and once it went for the default (rainbow)

#

all 3 times only half of the keyboard was reset though

hybrid lake
#

Alright interesting, I'll look into it

little monolith
#

could it be because i might be using wooting_rgb_array_set_full after a reset?

#

i'm unsure if there are race conditions

#

but if console event handlers are slow - there sure are

#
void console_handler(uintptr_t type)
{
    if(type != CTRL_CLOSE_EVENT)
        return;

    if(reset != nullptr)
        reset();

    ExitProcess(0);
}
#

actually no

#

i doubt it's a race condition

hybrid lake
#

I don't think it should

little monolith
#

also there is some weird stuff when wooting_rgb_array_set_full just ceases to work after a couple of program open-close iterations

#

plugging the keyboard out and back in seems to fix that

#

i'm probably doing something wrong

hybrid lake
#

oh wait it could

#

I don't close the handle when you do the rgb_reset, shit

#

so when you call the array again after you "close", it will still go through. Your effect has probably started in the meanwhile and the keyboard doesn't deal well with multiple RGB going on at the same time

little monolith
#

yeah, i see what's wrong

#
        if (!pleasedontapplytheeffect) // alright buddy
        {
            array_set_full(reinterpret_cast<uint8_t*>(kb_array));
            array_update_keyboard();
        }
    }
}

void console_handler(uintptr_t type)
{
    if(type != CTRL_CLOSE_EVENT)
        return;

    pleasedontapplytheeffect = true;

    if(reset != nullptr)
        reset();

    ExitProcess(0);
}
#

cba recompiling the sdk lol

#

actually i'll fix that

hybrid lake
#

can you leave it and try it with this?

#

Although

#

It shouldn't crash now and will show the array_update

#

Still not ideal, but at least expected behavior 😛

little monolith
#

alright, gimme a sec

hybrid lake
little monolith
#

is that an x86 dll?

hybrid lake
#

should be x64

little monolith
#

recompiled it myself, there were either weird export names or a x64 dll

#

yeah, my program is x86

#

whatever, i'll test that now

hybrid lake
#

oh woops

#

👍

little monolith
#

don't know about the weird freezing thing but wooting_rgb_array_set_full still doesn't seem to work sometimes

#

resetting still works fine and the current wootility effect stops, but wooting_rgb_array_set_full doesn't wanna work

#

could it be because i'm not handling something correctly?

#

starts working after not applying any effects for some time and trying again... weird

#

doesn't seem to crash anymore though

#

so that's good

hybrid lake
#

did you trigger the update, or did you set auto update?

little monolith
#

tried both

#

same effect

#

right now i'm triggering it myself

hybrid lake
#

Do they both return true?

little monolith
#

unsure, don't check the return value

#

let me see

#

both functions return true

#

screenshot taken when it wasn't working again btw

hybrid lake
#

So it's not working if you try to update after a little pause right?

#

With the program still running in the meantime

little monolith
#

it always works fine when i first launch the program

#

then i close it and open it again

#

after adjusting some code, for example

#

and it sometimes just ceases to work

#

it being wooting_rgb_array_set_full

#

on the other hand, if you wait for like a minute after closing the program

#

and then open it

#

it always works perfectly

hybrid lake
#

Alright, I'll look into it later. Don't have the keyboard with me right now

#

Thanks for the description

hybrid lake
#

Anyone here with some experience in dealing with DLL's? Specifically installing, removing, updating?

#

I'm working on an installer so they can be updated client side, but could use some advice

cyan saddle
#

Do you guys use HID drivers or your own?

#

@hybrid lake
What do you want to know exactly? Like where to put them?

#

Sorry, don't have my Two yet so I don't check often.

hybrid lake
#

@cyan saddle so I use this now for the DLL install: http://nsis.sourceforge.net/Docs/AppendixB.html. It puts them nicely in the SYSTEM32 folder, where I think they belong? I'm just not sure how to work with 32-bit and 64-bit. I read something that with some windows folder redirects it can work with the same filename? I'm also not sure yet how to do versioning. DLL versioning seems overly complicated, so I'm thinking about running a getVersion() in the SDK

#

Any common pitfalls will also be very helpful

cyan saddle
#

There are a couple ways to handle it.

little monolith
#

put 32bit ones in SYSWOW64, 64bit ones in SYSTEM32 if the system is x64

cyan saddle
#

I'm not 100% on it, but I'm pretty sure x86 has a 32 bit folder and amd64 has a 64 bit folder. Another approach is to use different file names for x86 and amd64.

DLL versioning is just a pain, that's basically do what you want and try and to remove interfaces, but when they are deprecated you can remove them from headers and have stubs in the DLL.

little monolith
#

put 32bit ones in SYSTEM32 if the system is x86

#

@hybrid lake

cyan saddle
#

Should have environment variables for where to put things.

#

And you can always print PATH.

little monolith
#

windows will always handle the different paths if you just hardcode c:\windows\system32\epicdll.dll wherever you're going to load your dlls

#

you shouldn't hardcode this types of paths in the first place though

#

LoadLibraryA does look for dlls in system32/syswow64 accordingly

cyan saddle
#

If only MSDN was better.

little monolith
#

so it will just be LoadLibraryA("epicdll.dll")

#

msdn is nice

fathom garnet
#

yeah, and the patented aspx sites are so fast 😃

cyan saddle
#

The examples are lacking and the documentation is lacking.

Maybe I just try to do obscure things.

little monolith
#

why would you need examples with winapi functions

#

argument description is usually all you need

cyan saddle
#

Some function params are just the name and nothing else. Guess it's because I do weird things. :-P

#

Got to go.

little monolith
#

there are sometimes undocumented functions but they mostly have documented wrappers

cyan saddle
#

"Reserved"
But clearly they used it because it changes based on stuff.

#

One simple example that's kind of goofy.

steel ruin
#

Not sure what you mean by versioning in this context. If it's just how to number versions, please, please, please use semantic versioning. (semver.org? Can't remember the URL detailing it.)

hybrid lake
#

Alright made a PR with a clear split between the 32 and 64 bit version and added windows versioning. We'll follow semantic versioning, so I think the last number in windows versioning will be ignored

#

Feedback here please 😃

#

I'm also adding DLL installers to the Wootility. I've made some NSIS installers scripts. They're in the Wootility repo, but I can also make them into a separate open project if people are interested. I would love to have a release + installer creation automated process

jade drum
#

Does anyone know whyhid_read would hang forever?

#

I tried sending the info command, but getting a response doesn't seem to happen :/

#

*GetVersion

#

I'm sending this with hid_write \x00\xd0\xda\x01\x00\x00\x00\x00\x00

#

Then using hid_read(256)

hybrid lake
#

Sending the commands is done with hid_send_feature_report

#
bool wooting_usb_send_feature(uint8_t commandId, uint8_t parameter0, uint8_t parameter1, uint8_t parameter2, uint8_t parameter3) {
    if (!wooting_usb_find_keyboard()) {
        return false;
    }

    uint8_t report_buffer[WOOTING_COMMAND_SIZE];

    report_buffer[0] = 0; // HID report index (unused)
    report_buffer[1] = 0xD0; // Magic word
    report_buffer[2] = 0xDA; // Magic word
    report_buffer[3] = commandId;
    report_buffer[4] = parameter3;
    report_buffer[5] = parameter2;
    report_buffer[6] = parameter1;
    report_buffer[7] = parameter0;

    if (hid_send_feature_report(keyboard_handle, report_buffer, WOOTING_COMMAND_SIZE) == WOOTING_COMMAND_SIZE) {
        return true;
    }
    else {
        wooting_usb_disconnect(true);
        return false;
    }
}```
fathom garnet
#

how did you enable highlighting? only knew you can put it in a box

jade drum
#

Ah, now I get data back

#

Seems to be garbage though

#

Everything is the same, except 4 bytes which seem to change at random

#
    uint8_t buf[128];                     
    uint8_t buf2[128];                                                                                          
    int a = hid_read(device, buf, 128);                                                                                       
    a += hid_read(device, buf2, 128);
#

Oh, maybe this is why

#

I can't seem to send a big feature report

#

When I set it to 129 bytes, hidapi returns -1 with no error code

#

It seems 8 is the biggest I can set it to

#

Oh nvm I'm an idiot

#

Not sure where I got 129 from lol

#

I'm getting all this from the JS in your app, so I could be completely wrong

#

But is there supposed to be magic bytes at the beginning of the response?

hybrid lake
#

now if only we could format links

fathom garnet
#

ty

jade drum
#

Bots can do hidden links

steel ruin
#

@hybrid lake You an surround links with <> to make them not preview. :x

hybrid lake
#

It's like: [MW0, MW1, ResponseResult, Data (123 bytes), CRC0, CRC1]

#

enum ResponseResult {
UNKNOWN = 0x66,
SUCCESS = 0x88,
ERROR = 0xFF
}

#

MW = magicword

jade drum
#

Weeeeeeeird

#

I'm getting 62bytes of zeros

hybrid lake
#

oh linux splits up the packets

#

read again

jade drum
#

Yep

#

But the only thing that changes in the second packet is garbage

#

4 bytes near the end

#

The first packet is the same every time

#

Maybe its my distributions hidapi, since it also claims it only read 64 bytes each time

sweet peak
#

trying to get the example working on Ubuntu 18.04
Running node basic-example.js gives an error that it cannot find './libs/wooting-rgb-sdk.dll.so'

#

i guess i need to build the sdk manually, and stick it there

#

how do i build it?

#

the rgb sdk example

cyan saddle
#

Is the API going to have a list of keys with positions and functions for connected keyboards? Would be handy since there are multiple versions of the keyboard.

hybrid lake
#

@cyan saddle a list as a return from a function or just a reference somewhere?

cyan saddle
#

Yeah, like the Corsair stuff has a function that returns a printer to a struct.

Basically this:

typedef enum{
    ...
} KeyFunction;

typedef struct{
    KeyFunction function;
    double x;
    double y;
    double width;
    double height;
} KeyInfo;

typedef struct{
    KeyInfo* info;
    size_t keyCount;
} KeyInfoSize;

KeyInfoSize* getKeyImfo();

Could set it up to use a pointer to the size, but that's how they do it. Allows for you to never duplicate the info in the library since the DLL data can be read by the loaded processes and the DLL memory is copy on write.

#

That's not the exact definitions they use, but it's the same idea.

sweet peak
#

I'll try that Jeroen
needed to install libudev-dev libusb-1.0-0-dev

#

now i get
Error: Dynamic Linking Error: ./libs/wooting-rgb-sdk.dll.so: undefined symbol: udev_new
I'll try again tomorrow.

cyan saddle
#

Uhm, running it on Linux?

sweet peak
#

trying to

cyan saddle
#

Not sure why it's got dll.so though.

#

file wooting-rgb-sdk.dll.so?

sweet peak
#

libs/wooting-rgb-sdk.dll.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=0438ecbcc2d18bd74805a30ae46c0e006c3217de, with debug_info, not stripped

cyan saddle
#

Not sure at all.

pearl tartan
#

Sorry, what are the include statements to include the Wooting API header files, when you have the *.dll loaded into your application properly?

cyan saddle
#

Which one do you want?

jade drum
#

I see all the color gradients in the software code, are those hardcoded into the keyboard or determined by the utility?

hybrid lake
#

They're in the wootility

jade drum
#

See <nonexistent channel>?

cyan saddle
#

What do you think about that layout function?

hybrid lake
#

oh it's hidden

#

New beta release: v2.5.0

  • Windows: from the general settings you can now install the SDK. It will take the latest version and install it to your computer. You can also update them with the same button when there's a new release. We let the user install the SDK's, because it will make the live of a developer a lot easier. They will not have to worry anymore about packing DLL's, different version etc.
  • Fixed an issue where new keyboards with old firmware would not be recognized.

Get it fresh from: https://s3.eu-west-2.amazonaws.com/wooting-update/wootility-win-beta/wootility-beta+Setup+2.5.0-beta.exe
(Sorry, no auto update for this beta)

#

What layout function?

cyan saddle
#

The SDK one where you can fetch the key layout of the keyboard(s) attached to the computer.

jade drum
#

I got a good response!

#

Sadly the keyboard claims there was an error :(

#

But the response buffer is right!!!

#

0x10 0x11 is the fw version?

#

Wtf is the point of the KeysOffcommand lol

hybrid lake
#

april fools lottery 😛

#

nah it's for testing

jade drum
#

Paanicing trying to find another keyboard was fun :P

#

I thought it would turn off the light or something

hybrid lake
#

I like it @cyan saddle, there might be some issues once you're able to change the layout though. Guess the coordinates will fix that for position based effects

#

I think it's essential once you have devices outside of keyboards

cyan saddle
#

It's a per device thing, and if you change the layout it just changes what's retuned.

jade drum
#

Oh, did you ever decide on the code sharing policy?:

#

I have a working library now

cyan saddle
#

As soon as I get my Wooting Two I plan on making a Java wrapper. :-P

jade drum
#

Does java have HID libraries?

#

I'd assume so lol

jade drum
#

Ok I'll just publish my library

#

Yell at me if you want me to take it down lol

cyan saddle
#

Not like these.

#

Plus I'd just wrap the wooting libs and not redo everything.

pearl tartan
#

unresolved exports linker error when using the Wooting dll files, any ideas please?

little monolith
#

the exports are unresolved

pearl tartan
#

Thank you.
How would I fix this?

little monolith
#

you're linking the library wrong

pearl tartan
#

Thank you.
Please if you can, is there some where I can revise linking *.dll files in VS 2017?

little monolith
#

you can use LoadLibraryA and GetProcAddress to link it dynamically

#
    const void* sdk_mod = LoadLibraryA("wooting-rgb-sdk.dll");
    if (sdk_mod == nullptr)
        return;

    const auto kbd_connected = decltype(&wooting_rgb_kbd_connected)(GetProcAddress(sdk_mod, "wooting_rgb_kbd_connected"));
    if (!kbd_connected())
        return;
#

here's an example

pearl tartan
#

Thanks, but I am using the code inside another .dll.

little monolith
#

what stops you from using LoadLibraryA?

pearl tartan
#

Because I am making a wrapper dll.

cyan saddle
#

Are you using the lib file?

hybrid lake
#

So you just copied the code in the project to a new project? @pearl tartan

cyan saddle
#

Also what is the error exactly?

little monolith
#

what is the point of making a wrapper dll of a dll

#

because i really don't see why you can't just use the existing sdk dll

pearl tartan
#

for Lua.

cyan saddle
#

For Java.

#

The problem is how the extensions work.

#

Basically the code you write to wrap them needs very specific definitions and the library dlls just don't have them in a way that works.

little monolith
#

i mean why would you create a wrapper dll

#

isn't it extremely unpractical to include both dlls in your project?

cyan saddle
#

For example:

public class Hello{
 static{
  System.loadLibrary("hello");
  }

 public static void main(String[] args){
  helloNative();
 }

 private static native void helloNative();
}

Requires a C function something like this:

void Hello_helloNative(JNIEnv* env, jclass klass){
    printf("Hello from C!\n");
}
#

Which must reside in a DLL/shared object.

little monolith
#

no not really, you can just replace those with any arguments with the same size

cyan saddle
#

What do you mean?
(Just got a call, brb)

little monolith
#

you don't need the specific definition

cyan saddle
#

Yeah you need those params.

little monolith
#

you can easily replace JNIEnv* with void*

#

i see what you mean though

cyan saddle
#

But your lib doesn't have the same names, same params and the first two are determined by JNI and not Java.

little monolith
#

if i was you, i'd recompile the sdk with 2 extra parameters

cyan saddle
#

Then I'd need to rename functions and it wouldn't be easy to update for bug fixes and such.

little monolith
#

java's way of calling external functions seems flawed at best

#

kills any flexibility

cyan saddle
#

Java 12 will (hopefully) have much better native support, not even requiring the extra library.

Don't have my hopes up though, it's been pushed back four times already.

#

It's from Java 1. :-P

little monolith
#

if you introduce support of external functions you might as well do it properly

pearl tartan
#

I have only started looking into to native methods in Java.

cyan saddle
#

It's bad.

#

It was originally just intended for the JVM itself I'm pretty sure.

little monolith
#

why bother making java a better language

#

/shrug

cyan saddle
#

Because it's already a great language.

pearl tartan
#

Java is the only language I know, really well.

little monolith
#

eh that's not the greatest logic

cyan saddle
#

Why not make something great and popular better?

little monolith
#

that way nothing needs to be done better if it's already good enough

cyan saddle
#

Also, got to go for a bit.

pearl tartan
#

Ok.

#

I will make it as a program instead.

pearl tartan
#

Error message: invalid or corrupt file: cannot read at 0x318.
For this Wooting dll: wooting-rgb-control-64bit.dll. Any ideas?

#

now it is giving me these errors.

cyan saddle
#

Try putting the wooting include in a C etern?

#
Linux

to-do

NICE

pearl tartan
#

Thanks. Unfortunately still the same errors.

jade drum
#

That's not how you extern C

#

You're missing {}

#
extern "C" {
 #include <foo>
}
pearl tartan
balmy iron
#

The error is coming from an include file, sal.h

#

No matter what you do there in your code, isn't gonna fix it

jade drum
#

An extern C might have

#

Since there's different syntax

#

note: C++ does not support...

#

Looks like something isn't being extern C'd properly

pearl tartan
#

i might just try downloading a fresh copy of the header file and try again.

jade drum
#

Maybe add the extern C to the header file?

cyan saddle
#

Yeah I'm not sure.

jade drum
#

Does MSVC not tell you from header included in foo.h?

pearl tartan
#

Fixed that error; I am now getting this.

jade drum
#

LOL

cyan saddle
#

Wow.

jade drum
#

That's a new one

pearl tartan
#

I found and s at the beginning of the header file, properly from when I went to save it did that.

cyan saddle
#

Something is not right.

jade drum
#

Do you have the Windows SDK installed?

cyan saddle
#

Did you remove default library linkages?

jade drum
#

It's trying to link but isn't finding it?

cyan saddle
#

Oh yeah.

#

🤦

#

Nah.

pearl tartan
cyan saddle
#

It's not finding kernel32.lib.

#

Oh.

pearl tartan
#

Print screen did not register.

jade drum
#

O_o

cyan saddle
#

You do clean the build right?

jade drum
#

I already made one for the RGB

cyan saddle
#

Ah.

jade drum
#

Though I think your win32 check is better

cyan saddle
#

My Makefile is also a little more dynamic, you don't have to edit it to add files and such.

jade drum
#

I've been told globs are a bad idea

#

¯_(ツ)_/¯

pearl tartan
#

Yes.

cyan saddle
#

Globs?

jade drum
#

Auto finding files

cyan saddle
#

I don't see how that is a bad idea.

#

Not hard to change.

jade drum
#

Yeah IDK

cyan saddle
#

Just replace the wildcard.

jade drum
#

It's just what I've been taught

cyan saddle
#

I knew the reason at some point, thought something like that is such a stupid reason and went about my merry way.

jade drum
#

haha

cyan saddle
#

I do use the version that only executes it once at least.

jade drum
#

Hard to break habits though

pearl tartan
#

Any ideas?

cyan saddle
#

If I am told a valid reason I will change.

#

Did you clean the build?

pearl tartan
#

Yes.

jade drum
#

corrupt file

#

Have you tried turning it off and on again?

cyan saddle
#

How odd.

pearl tartan
#

@jade drum ?

jade drum
#

I know nothing about windows, just guessing lol

cyan saddle
#

Rebooting might fix it.

jade drum
#

It said corrupt file in your msg, I think windows runs fsck or something on boot

cyan saddle
#

Sometimes the file cache gets a little overzealous.

pearl tartan
#

Thanks I will do, but not right now.

pearl tartan
#

Do I need the .lib file as well?

cyan saddle
#

Yeah.

#

Tells the linker how to link.

reef wyvern
#

Ohai, I'm working on an input display in Unity, I'm using the unity example on the website but it's not returning anything other than 0

#
    [DllImport("wooting-analog-sdk", EntryPoint = "wooting_read_analog")]
    public static extern byte wooting_read_analog(byte row, byte column);

        Debug.Log(wooting_read_analog(2,2));

Only returns 0 >.<

#

Anyone has any idea why? running the 64bit dll, not sure what other info to give

reef wyvern
#

Oh, Unity's not recognizing the keyboard. nvm then I'll fix

reef wyvern
#

Or I can't get the sdk to recognize the keyboard at all

#

¯_(ツ)_/¯

reef wyvern
#

Using the SDK linked on the tutorial page didn't work. When I rebuilt the x64 one myself it works. I almost gave up...

reef wyvern
#

However wooting_read_full_buffer crashes unity, which I would kinda need >.<

wet knot
#

I couldn't help sorry all I know is, well nothing

#

I'm sure @hybrid lake could help

reef wyvern
#

:3 wooting_read_analog works perfectly, the full buffer doesn't, if I want to rebind keys the full buffer would be super good :3

hybrid lake
#

Is the buffer you pass as reference big enough? Should be 32 bytes @reef wyvern

reef wyvern
#

I pass in an empty byte array and the buffer length of 32

#

@hybrid lake

#

I might be the stupidest person alive

#

Yes I'm just stupid, sorry for wasting your time. Generally I can debug stuff but since unity just crashes I couldn't.
What I did was basically

byte[] data;
wooting_read_full_buffer(data, 32);

Which obviously won't work because data's not initialized

#

Thanks for your time ❤

hybrid lake
#

No worries man, dealing with buffer sizes really sucks. I wonder if there's a way to make the interface easier

#

Please let me know if you make something in unity, we're really in dire need of good examples

reef wyvern
#

I'm going to make an input display, seeing if it can work in the background while I run other games just to show my inputs

cyan saddle
#

Buffer sizes are not that bad to me.

reef wyvern
#

since I'm used to unity (been working with it for 7ish years)

#

Just not used to native dlls

cyan saddle
#

The number one thing when working with native code: Watch your memory!

#

Oh, pro tip for the SDK people:
If you need to change the params of a function, you and just remove the old one, put in a new one that is called "[command]2" or something, and use "define" for the original name. The compiler will transparently use the new name when compiling, and you can still use the old one in your code.

hybrid lake
#

What would you normally expect to work with? @reef wyvern

cyan saddle
#

Also, does wooting_rgb_array_set_single return true if the auto_update flag is set to false?

hybrid lake
#

It does yeah

#

If the indexes are not out of bound

cyan saddle
#

Not clear from the docs if it did or not.

#

Also good point, I should check the bounds....

hybrid lake
#

Hmm agreed, the wording is pretty unclear

#

Feel free to suggest something better

cyan saddle
#

Once I get this project working.

#

Same with wooting_rgb_array_set_full I am sure?

hybrid lake
#

yes

cyan saddle
#

Alright.

cyan saddle
#

Anyone have a graphic of the keyboard's top?

Like if you put it on a flatbed scanner.

cyan saddle
#

Wait a sec.

#

Found one.

#

That will work for me.

#

:3

reef wyvern
#

@hybrid lake I kinda just do game programming, mobile games and I don't handle the android/ios integrations. Most things we have are written in c# and we have the source code in the project 😛

cyan saddle
#

Just be glad you don't have to use Visual Studio.

#

:V

fathom garnet
#

? you dont like VS

cyan saddle
round rivet
#

sexy

cyan saddle
#

@hybrid lake

cyan saddle
#

Planning on making a SVG version so I can properly center things and such.

reef wyvern
#

Why wouldn't one use VS? I love it :3

hybrid lake
#

very pretty

wide nymph
#

Aren’t we able to provide some resources for this @hybrid lake ? Hasn’t @dawn totem made something like above before ?

hybrid lake
#

this is the one we use in the wootility I think

cyan saddle
#

I just ended up using the layout in the readme, I did change it some since I posted that. I will make it look better, that was the first one that worked. :-P

reef wyvern
#

Okay so using unity for a background process is waaay too heavy 😛 Need to find myself a graphics library that can run some smaller effects

cyan saddle
#

Not an expert at this stuff, but I say that is pretty okay so far.

cyan saddle
cyan saddle
wide nymph
#

Coding and design, props 😛

cyan saddle
#

What do you mean by that?

wide nymph
#

as in, cool job to not only make a small program but also design the keyboard layout

reef wyvern
#

Most people can only do one thing, that's why there's a term "programmer art"

cyan saddle
#

Oh.

#

Thanks.

cyan saddle
cyan saddle
#

Does anyone happen to have a program I could use to test this against?

#

One that is precompiled so I can test the simulator DLL I made.

little monolith
#

wdym

#

what kinda program

cyan saddle
#

Just one that uses the RGB SDK so I can try throwing the simulator DLL at it to test the simulator.

#

The DLL I made should be binary compatible, but I have yet to actually test if that is the case.

little monolith
#

oh, no idea tbh

cyan saddle
#

After that I will probably try and do some sort of variable framerate thing on my app to save resources. Make it only really update it when there is a change instead of at 60Hz, which I think it is running at right now.

#

Then I would need to do more hardening against protocol errors.

cyan saddle
#

So, I'm thinking my daily driver has become Linux. Once I get my Wooting two I'll be more than happy to try and get it working well on there.

round rivet
#

@cyan saddle uhh, waiting for you <3

cyan saddle
#

I'm waiting on Wooting.

wide nymph
#

@hybrid lake is on a small vacation atm 😃

reef wyvern
#

Noo, not the pasta!

inner anvil
#

hi there, I just learned about Wooting and I'm super excited about it 😛

#

what's the state of the SDKs on Linux/Mac?

steel ruin
#

Usable AFAIK.

#

Still waiting for my W2 to try and play around with it.

inner anvil
#

that's great! it almost sounds too good to be true hehe

wet knot
#

Linux wise it’s still pretty behind

#

Wooting software in general

inner anvil
#

that's ok, I don't mind having to patch here and there

#

do you accept PRs?

wet knot
#

Im not part of the Wooting team, just voleteer support.

#

But what do you mean PRs

inner anvil
#

ah sorry :) I meant pull requests in github

wet knot
#

Ah, hopefully a founder can answer that soon.

little monolith
#

@hybrid lake is it possible for us to get something to disable certain digital keys using the sdk?

round rivet
#

@inner anvil Yes, they accept PRs on Github. SDK uses hidapi library to interface with the keyboard and that has known issues with composite HID devices on Linux.

inner anvil
#

thanks for the info! I'm gonna get one and start playing as soon as I finish moving

hybrid lake
#

PR's are very welcome. Our position on linux is mostly: we support it wherever we can, but because of our limited resources we have to focus on windows first. Any input is greatly appreciated

#

@little monolith maybe in the future, now it's pretty hard to do from a configuration perspective

#

We're working on the new DKS system, which involves this part though. I'll see if I can bring this into the design

little monolith
#

would be really cool! 😄

hybrid lake
#

What do you want to use it for?

inner anvil
#

@hybrid lake that position is more than most companies do, much appreciated 😃

little monolith
#

@hybrid lake i wanna make the keyboard connect to my android phone using a running server on my pc and i'd want some improvised mode switch

#

which would disable all keys

#

so i can type on my phone

#

but not on pc

#

it's hard to explain

hybrid lake
#

That is really cool @inner anvil, we're in dire need of some sort of MIDI plugin for our keyboard

inner anvil
#

@hybrid lake thanks! 😄 I'm almost ready to release the fist version. Then I want to use your sdk to add support velocity and some rgb feedback on wooting keyboards. I can't wait to start playing with this 🤓

autumn plover
#

Question about the drivers, is this a good way to look for keybinds to trigger more python code?

#

like if I wanted to incriment a file that was just a number every time I hit a hotkey?

#

OH SICK. So I can listen for FN+ somthing?

autumn plover
#

am I allowed to redistribute the dll I just compiled?

autumn plover
#

@wicked grove Hey man

#

can I bounce a question off of u when/if you have time 😃 ?

wicked grove
#

Ye but chances I have an answer are various

#

Depends on the subject

hybrid lake
#

You can use it for this @autumn plover, like you said it will allow you to check for the FN key

#

Feel free to post any questions you have

autumn plover
#

You're just the guy I was hoping to talk too actually

#

I got this "up and running" (I think) but it says my wooting ins't connected so probably not.

#

@wicked grove @hybrid lake So what I'm doing is implementing a little script that will listen for a hotkey then read a number from (the first line of a file) and increment it by one, then write the new number to the file *(I already know how to do all of that), I just want a kill counter in OBS that doesn't cover up a large area of my game lol

#

I got it

#

I was running the

#

x64 version of the dll with the x32bit version of python

#

sorry for the dumbpotatoe question.

wicked grove
#

xd

autumn plover
#

@wicked grove Okay real question now, I got it working, it says my wooting is connected, but when I run the program it always says my key I'm test-reading from is at "0"

wicked grove
#

I haven't tried out the analog reader yet

pliant carbon
#

what do I do when I get this error

#

trying to use DLL in c# project

wet knot
#

@eager root please don't be cocky ;)

#

Plus this is very tech specific, we don't want to fill it up with Memes and jokes

reef wyvern
#

@autumn plover I had a similar issue, I rebuilt the .dll myself and after that it worked

#

¯_(ツ)_/¯

grizzled wolf
#

LNK1107 invalid or corrupt file: cannot read at 0x318 😢

#

damn you visual studio

grizzled wolf
#

Well, i can't figure this out :/

grizzled wolf
#

Still can't figure out why I can't get any dll to work though. this is directly via hidapi :/

wide nymph
#

Anybody else with the same issue, and otherwise does @hybrid lake have a troubleshoot step to find out why it's not working.

grizzled wolf
#

@wide nymph my issue is that I don't know what i'm doing

wide nymph
#

Alright, that'll make sense 👍 Just like any programmer out there 😄

little monolith
#

@grizzled wolf compile the dll yourself, use LoadLibraryA and GetProcAddress to get exports

grizzled wolf
#

LoadLibraryA and GetProcAddress ay? Ok i'll check that out

grizzled wolf
#

Now then, time to get things done

grizzled wolf
#

Ok got it to work

#

@little monolith thank you kindly

grizzled wolf
#

wanted to make a quick and dirty.. (picture for easy understanding)

#

1/3 octave audio spectrum analyser on the wooting

#

using Open Sound Control (fancy MIDI) but osc just seems too slow, using oscpkt
I think the wooting itself handles the changes quickly enough
maybe that's useful info

wet knot
#

Musical keyboard?

grizzled wolf
#

Nah, just a visualisation for fun

#

For music work i'm just making a controller for the program

#

controlling the timeline, scrubbing, editing etc etc

peak vigil
#

oh that's pretty cool

#

i just got the new das keyboards, didn't realize the wooting could do similar with some programming

wide nymph
little monolith
#

fuck yes dev contest

#

finally something to spend time on

#

i really like it tho, two of the favorite things combined

#

now that i also have motivation

#

@meager seal must i submit the source code?

#

because i would just submit whatever i wrote in past but it's all spaghetti and i'm ashamed

little monolith
#

well people can run it with the compiled binaries

#

without source code

grizzled wolf
#

"If you cheat, and we find out, your are disqualified. "

#

🤔

#

for anyone thinking to do a musical instrument, i suggest you do not do a piano keyboard, instead make it play chords (you'll have to borrow someone else's code as it's a lot of design to make it useful)
Or if that's out of reach: an isomorphic keyboard (so anyone can play and you benefit from the rgb)
As for the virtual instrument itself i suggest you do an organ (as see brackets above and that's a good use for the depth sensors as velocity is problematic)
https://juce.com
have fun

#

Or... make a 1/3 octave spectrum analyser (windows media player visualisation) but that has the issue of having to either making your own media player or using a virtual audio cable that is not opensource or the new windows 10 audio routing pannel

placid ledge
#

low-key submit aurora to the contest for the memes 😩

grizzled wolf
#

"Entries must be original and made by the person submitting them"
That just means you did not steal the whole thing from some one else right?

strange gate
#

@meager seal Can I DM you? Need some critique about an idea for the dev contest as I'm still learning how to code properly

autumn plover
#

This is awesome people!~

#

😄

wispy fable
#

Whats up with the "at least 56 years" spotlight on the dev portal?

autumn plover
#

@ whoever was spelling things under the post, I removed a couple of my reaccs so you could finish ur thing ❤

wet knot
#

On announcements?

cyan saddle
#

I suppose I should continue with my simulator even though I can't properly test it. :-P

#

After school stuff.

fathom garnet
#

testing is overvalued anyway

cyan saddle
#

I don't know if it even half works.

fathom garnet
#

got 93% in my shader exam and I had one mistake that made everything insisible LUL

#

so I had no idea if even one single thing worked lol

cyan saddle
#

I didn't even know there where shader classes.

fathom garnet
#

it's the last topic before the bachelor thesis

autumn plover
#

So can we read the gyro yeet?

wet knot
#

wut

autumn plover
#

Is there a gyroscope in the keyboard or am I going insane?

wet knot
#

@hybrid lake @dawn totem omg

autumn plover
#

oh god what's happening

#

ahahah

#

I see

#

k

wet knot
#

😄

#

Cant stop laughing

grizzled wolf
#

u r going insane

autumn plover
#

Slowly though, so that's nice.

wet knot
autumn plover
#

Yeah last time I Saw that

#

the parenteticals were missing

grizzled wolf
#

Oh I had to disable that
the ball bearing rolling inside drove me mad

autumn plover
#

tfw you thought this was real and not just a jab at the steam controller

grizzled wolf
#

It uses throttling for digital commands. Which makes me wonder, how can i make it send pc keyboard data instead, so that you could have "analogue emulation" for wasd

#

preferably something that doesn't trigger anti cheat

#

And like.. something that actually works because I'd think direct input would refuse to read a software keyboard input

autumn plover
#

is that, midi data?

#

what am I looking at my mans.

grizzled wolf
#

it's a timeline

#

and im adjusting the sliders in analogue

dawn totem
#

But can you analog through the timeline

autumn plover
#

what software is the timeline in?

#

that looks like a DAW

grizzled wolf
#

@autumn plover Reaper

autumn plover
#

oh shit, are you the dude who posted the picture of the seaboard

#

or was that in another discorb, my memories don't so good.

grizzled wolf
#

@dawn totem The docs don't make it obvious if I can, technically the input type for it is float

#

@autumn plover probably not me

dawn totem
#

cool

autumn plover
#

@grizzled wolf Someone recently I was talking too I reccomended reaper too, I was just curious because it's the daw I use. That's cool what are you doing with reaper if you don't mind my asking?

grizzled wolf
#

I... am switching to it... for 2 years now, busy with other audio related matters for now

autumn plover
#

Cool :3 so far it seems to have the most of what I need but audio is just a hobby for me so I'm still not sure about any of it yet 😃

grizzled wolf
#

it is the least elegant daw out there

#

but it has almost everything you'd ever need, pretty much why i want to add wooting support to it, it's that uncomfortable

#

maybe it's different on linux/mac but on windows the keyboard context is torture

autumn plover
#

TBH, the whole thing feels kind of tortuous to me but unless ableton gets MPE support I'm kind of just rolling with it lol.

grizzled wolf
#

wait a sec

#

Why do you need mpe?

#

You have an expressive controller? (which one)
Wooting one and two added to the list of MPE devices on the market, that makes it 4

autumn plover
#

@grizzled wolf Seabord

#

*seaboard

#

Fun fact, you're literally doing the thing I was imagining getting a wooting for

#

I wanted to do midi stuff but I'm a dumbshit

#

😂

grizzled wolf
#

someone already made a midipiano.exe

#

@autumn plover and it lags a wee bit, I would think because of the velocity calculation (you need several values and over usb that's quite a bit)

#

oh you have a roli? neat

#

@autumn plover i can give you my spaghetti.sln file for reaper

#

if you'd like

#

could probably make a neat and tidy wooting to OSC thingy but i don't even wear hoodies

grizzled wolf
#

@autumn plover So do you need the sln file? i'd like someone to remove the hidapi and add the wooting analog api
you could make it send midi over osc

autumn plover
#

Every time I've tried to read about the Photoshop API I failed to find any real information on it and gave up

#

I want that to be an easily accessible thing, so bad. at this point there's a lot of like little Graphics technologies that are missing from Photoshop that could be implemented with plugins if that API was accessable

#

I'll take a look. Probably won't get anything done with it. I'm still struggling with menu controls for my little game

grizzled wolf
#

nah i just meant for reaper
I don't even know what the photoshop api has

autumn plover
#

exactly

#

it's like HARD to find too

#

xD

grizzled wolf
#

it's open source with MPE support.. do you want that hoodie?

autumn plover
#

Yeah dude I love hoddies. lol.

#

Also: Holy crap

dawn totem
#

Who is planning or currenmtly making something for the code it challenge. Would be cool if we can show something tomorrow during the stream

little monolith
#

i wish but i'm super far away from home

grizzled wolf
#

Alright, finally changed the api from hidapi to wooting.
Had to comment something out in another api header file for some reason
can't convert from WCHAR * something something

#

If someone needs a wooting to OSC bridge, ping me

wet knot
#

@grizzled wolf

grizzled wolf
#

ping

wet knot
#

😉

#

Whats an OSC bridge

grizzled wolf
#

wooting data comes in, open sound control data comes out

#

it's basically midi over udp but with human readable messages

#

and no limitations

#

that is.. outside of not being in every midi capable program

wet knot
#

Ah

little monolith
#

@grizzled wolf switch from unicode to multibyte

grizzled wolf
#

@little monolith thanks that worked

grizzled wolf
#

huh, right.. i need to figure out how github works to submit to the contest

#

it was said on the steam that everyone will get a Fugl game key

wet knot
#

for winning yes.

#

idk about submitting.

#

I had to stop watching

grizzled wolf
#

everyone who submits..[if it's ok]... gets the fugl key

grizzled wolf
#

well he project folder is 120mb with everything included

#

i think i can cut that down by having other apis linked to other githubs?

#

doesn't use github

pliant carbon
#

I don't use github

#

it scares me

#

why can't google have like google docs but for code

balmy iron
#

Google Code was a thing for many years but was shuttered because everyone went to the hub of gits, however do note that git != github

grizzled wolf
#

can't quite figure out how to make this all work

#

since I'm making another repository I added the sdks as submodule not just cloned, now the sdks are locally there but what's step 2

wet knot
#

Just a reminder, I'm going to abuse my role and ask that everyone send me their awesome projects for early access :3

little monolith
#

@meager seal still unclear: does it have to be source code or just binaries is tolerable?

grizzled wolf
#

Now to figure out how to get include and dll paths to work

split herald
grizzled wolf
#

neat

grizzled wolf
#

heh, still cant' figure it out

split herald
#

what problems are you having?

grizzled wolf
#

can't get an include to work

split herald
#

what are you coding c++ or?

grizzled wolf
#

can't figure out how to add an include outside a solution directly into another solution directory with a relative path

#

c++

#

can't figure out how to get ..$(SolutionDir)\oscpkt\src

split herald
#

well i dont know to much about c++ so i wrote my thing in c#

grizzled wolf
#

i give up.
ok got it

pliant carbon
#

I didn't know bronies were so smart

#

@split herald can you help me get the dll to work in c#

split herald
pliant carbon
#

ooh ok

split herald
#

hope that helps 😄

pliant carbon
#

I think im using the wrong file or something

grizzled wolf
#

wouldn't it still need to be inside the same folder as your exe or otherwise specified?

split herald
#

did you make it copy to output directory?

pliant carbon
#

ok it works now but I think I need wootdev for my keyboard to respond

#

ok done!

#

@split herald ty for help

split herald
#

no problem happy to help

autumn plover
#

I just saw the thing about the steam I'm coding a thing but the analogue part isn't in yet and my computer asplode :(

placid ledge
pliant carbon
grizzled wolf
#

If anyone needs a super basic c++ example for visual studio as a starting point https://github.com/tyuioo/WootOSC.git
You just need to install visual studio with the windows api, c++. then the git extension. then make a free git account then just clone the repository and click build then edit the switch at the bottom.

pliant carbon
#

Thanks @placid ledge, I'm new to c# to im unsure how to use the library in my project. Could you show me how to install/use it?

placid ledge
#

@pliant carbon If you download the files you can add it as a project to your solution on visual studio

#

I might make a release of it and put it on nuget to make it a bit easier

pliant carbon
#

I don't know what files I should put in my solution

#

like that

placid ledge
#

In the "Wooting.NET" folder inside that there is a .csproj

#

In the solution explorer, right click on the first item (your solution) and it should be something like "add project"

#

and you point to that .csproj file

pliant carbon
#

ah

#

ty

#

huh

placid ledge
#

You need to be starting your console app, not the library

pliant carbon
#

I'm confused

placid ledge
#

It says you're trying to start a class library

#

so don't start the class library

pliant carbon
#

Ok I'm just confused since it was working fine a few minutes ago and I haven't changed anything

#

and get that

placid ledge
#

They need to be set to copy to output directory

#

@pliant carbon

pliant carbon
#

ty works

placid ledge
#

I made a nuget package for Wooting.NET there and added instructions for getting started, should make it easier for people to get started with it

cyan saddle
#

Submitting my project.

#

Yay.

#

It has been "Processing" for a disturbing amount of time.

#

Oh.

#

I am late aren't I?

#

That is school for you.

#

So, @kindred skiff am I late?

clear hedge
#

@cyan saddle what you mean by "late"? the contest ends on the 22nd of October

cyan saddle
#

Oh.

#

Neat.

#

I have a really hard time with dates.

clear hedge
#

Yeah, same dude XD

cyan saddle
#

It has been like this for 10 minutes.

clear hedge
#

weird, I cant look at the behind of that and still working on my project to submit, so I havent gotten to that point yet XD

cyan saddle
#

I am going to copy all of the things I put in there and paste them into a text document.

#

So, if anyone can shed some light on that I would appreciate it.

clear hedge
#

it is @meager seal 's baby, so he would be the best to ask on that 😛

cyan saddle
#

Considering you already pinged them, I don't think I have to.

clear hedge
#

yeah, dont want to spam him

cyan saddle
#

Ping me when you get to it Tino.

little monolith
#

are you using chrome?

cyan saddle
#

I'm not.

#

Any way you could check if my entry is actually submitted?

cyan saddle
#

That's good.

hybrid lake
#

If you're projects use github please add the "wooting" tag so it's easy for people to find project later 👍

#

or topic or whatever github calls it

round rivet
#

Did anyone get both RGB and analog reader to work under Linux
?

grizzled wolf
#

checks "wooting" on github
No pong? no nibbles?
You're doing this all wrong, my friends

round rivet
#

RGB pong

grizzled wolf
#

would be awesome if it would be over internet

#

cross-platform cross-vendor multiplayer RGB pong 😮

little monolith
#

i don't think it is feasible to make pong for keyboards

#

at least because the layout isn't just a n by n led matrix

grizzled wolf
#

well the qwerty part is

little monolith
#

that's 3 or 4 rows

grizzled wolf
#

yes it is

little monolith
#

how are you gonna play pong on that lol

grizzled wolf
#

you make the paddle 1 pixel and you make the ball 1 pixel

little monolith
#

that is going to be a pain in the ass to play proper pong on 10x4 resolution

#

if the paddle only has 4 positions which can be changed instantly

grizzled wolf
#

add some inertia to the movement and add sub-pixel states using brightness control

little monolith
#

wouldn't it look kinda bad with the ball

grizzled wolf
#

challenging im sure

#

Nibbles could be possible though

pliant carbon
#

I'll do it

#

Start with a script that maps an x by y pixel display onto the keyboard

grizzled wolf
#

can probably find an opensource nibbles source and then just replace their grid size and drawing function with the wooting one

hybrid lake
#

Another idea for a project: display letters scrolling over the keyboard

#

wack a mole is a nice keyboard game

clear hedge
#

question, is there a limit for how many projects can we enter?

#

I am being blind then XD

cyan saddle
#

makes a program to generate projects

glass radish
cyan saddle
#

That is snazzy.

#

10/10 would use in it's current state.

glass radish
#

could put it live right now and update it without maintenance work on the front end if you want

#

i might change the positions around though, so experientable

glass radish
#

@cyan saddle

cyan saddle
#

Oh, it uses the browser plugin?

#

That is, not nice.

#

.>

glass radish
#

it's the easiest to use right now, when I push changes it updates the overlay everywhere

cyan saddle
#

Whatever works. ^^'

glass radish
#

yea sorry if it's not preferable, I've seen most overlays do it this way

little monolith
#

most overlays do it this way but cluttering obs with browser plugin instances is not nice

#

it's the same reason why you don't want to open lots of tabs in the browser on a low end pc

cyan saddle
#

At least I have the RAM for that.

#

I would prefer to have the program be "native", but for a prototype or whatever that is fine.

#

Let's you easily work out how you want it to look and such.

#

Speaking of plugins, I can not get the input overlay plugin to be recognized by OBS and that is bugging me. :V

#

¯_(ツ)_/¯

glass radish
#

here's a vid of how I add it though

#

personally for me this is just a gadget to play around with, Jeroen did say he was planning to make this a feature at some point

#

but right now they're too busy making more important changes

little monolith
#

@cyan saddle that kinda attitude is definitely not the best in programming

#

you want your program to perform as best as it could

little monolith
#

a hacky solution should never require less computing power

#

if it does - you're doing something wrong

wet knot
#

:@glass radish oh wow thats awesome

glass radish
hybrid lake
#

That is amazing @glass radish , do you have the code public? Would love to take a look

peak vigil
#

that's awesome

#

reminds me of the visual overlay that Tobii eye tracker has

glass radish
#

going to submit it to the contest in a sec @meager seal !

glass radish
#

uploading a higher resolution&fps recording of the overlay atm

#

in case you want to tweet that one

#

submitted thumbsup_parrot

pliant carbon
#

anyone made a music spectrum yet?

grizzled wolf
#

Well since most people use spotify, you would have to use 3rd party tools (drivers) to rout your audio into your app

pliant carbon
#

can't you just get the master audio from the pc

grizzled wolf
#

Well if you can find some open source software that does that...

#

i mean, how attractive does messing with obs source sound

little monolith
wet knot
#

why not from bottom?

little monolith
#

there's spacebar at the bottom

pliant carbon
#

woah, nice work!

hybrid lake
#

Canvas is very interesting darren, seems perfect for this kind of application

grizzled wolf
#

@little monolith did you make that work specifically with trackers?

little monolith
#

@grizzled wolf yes

glass radish
#

@meager seal I don't mind continuing on making additional features, it's already very configurable from within the code

#

I could make a front-end for it

#

I have a question though that maybe you could guess the answer from

#

would he need more keys than movement keys?

#

because I can't read keystrokes, only gamepad

#

because it's a browser, you can't read unfocused keystrokes

#

The only way to solve that is to bind your keys to controller keys in wootility

#

or make an application that logs your keys and sends them to a local web server

#

but I prefer to keep this stand alone without background applications

little monolith
#

well, it almost works

glass radish
grizzled wolf
#

@little monolith don't forget to add a command for playing a random file from a mod archive

little monolith
#

it's supposed to have a console gui

#

apparently it decided it doesn't need any of that

#

alright am i creating a cool directx gui or am i using some shit like ncurses

grizzled wolf
#

If you could make it display a scrolling tracker grid with RGB showing the effect commands that would be cool

little monolith
#

i don't think bass will let me

#

i wonder if bass has built in fft calculation

#

because that way i can ditch my spaghetti

grizzled wolf
#

maybe try some other opened tracker then?

little monolith
#

bass is honestly the best idea

#

i've already researched on that

#

nothing of good stuff is available besides bass

#

should i make a directx gui

humble garden
#

Thanks @meager seal for helping facilitate the communication.

@glass radish I understand the dilemma in hooking standard keystrokes. That limitation would be okay with me. I would be interested in more than just the WASD keys though still limited to controller-bound buttons/axis.

As a bit of background, in space/simulator games, WASD provides 2-dimensional ship movement but there is a third dimension (up/down) that can be equally important in certain manoeuvres. CTRL + SPACE are typically bound to vertical movement and I would be interested in options to have them appear alongside the other keys in an overlay to show off the keyboard when I get it.

Perhaps even a profile you can switch between for different games or situations. For example, on foot/doing FPS combat you might want additional buttons displayed for leaning out from behind a wall. Just thinking ahead here but the greater the customisability the more options you can provide for your audience to use it to their preference.

glass radish
#

@humble garden So I'm now planning to make a front-end for the overlay that allows you to add thumb sticks and keys and bind them to controller inputs and move them around

#

with a property edit window to change any visuals/colors/font styles/etc..

humble garden
#

Sounds good

glass radish
#

@hybrid lake yea canvas is really nice for these kind of things

little monolith
hybrid lake
#

it does yeah, it does after any failed USB packet

little monolith
#

alright cool

hybrid lake
#

checking the return value is essentially the same thing

#

at first I thought about adding a periodic ping, but ended up not using it

#

not sure if we still need the callback

little monolith
#

i'm creating a virtual keyboard of sorts for hopefully easier debugging

#

basically recreated every function in the rgb sdk, all you have to do it to replace the dll and call the visualizer_init export in visualizer.dll

hybrid lake
#

you send the little video before right? the one in c#?

little monolith
#

don't think so

hybrid lake
#

Oh, it was somebody else, sorry

little monolith
#

here i replaced the dll in my older project

#

hell, i really need some extrapolation on these bars

hybrid lake
#

oh, it virtualises the RGB?

little monolith
#

yes, also wanna add the same thing for the analog sdk module

hybrid lake
#

the high end amplitude is a little low yeah

#

that is very cool

little monolith
#

just so you can enter precise analog values and check the behavior

#

just do this somewhere in your program:

GetProcAddress(LoadLibraryA("visualizer.dll"), "visualizer_init")();
#

visualizer_init prints some nerdy addresses to stdout so you might wanna allocate a console if you wanna see those

glass radish
#

@humble garden you can move items around now and change their properties, I'm still going to work on saving&profiles and adding more buttons to the overlay

#

nothing is final on here though

clear hedge
#

Ngl, that is actually really cool

glass radish
peak vigil
#

That's sweet

humble garden
#

I like it. Looking good @glass radish!

clear hedge
#

❤ @meager seal I blame you

chilly oar
#

@clear hedge Do you really change the active profile, because the colours are changing very slowly?

clear hedge
#

Yeah it does change profiles, it shows slow on the recording for some reason (its not slow in person)

#

in that demo, it changes from digital to analog profile 1

#

and then back

chilly oar
#

How did you get the necessary commands for that, I only played a little bit around with a USB capture to get them from the wootility but can't do it right now by myself.

clear hedge
#

😉

#

Nah, I have been talking to jeroen and he gave me a few pointers on how to

chilly oar
#

So you don't have the commands, you just use the wootility itself?

clear hedge
#

the profile switching is the rgb.dll, the detection is windows (User32.dll)

#

so, yes

#

(I will release the github to it, when it is more stable XD )

little monolith
#

what's unstable in it?

clear hedge
#

the rgb is one part, I am currently setting it but without that, the rgb does not change

glass radish
#

does it swap profiles if you alt tab as well?

#

looks really useful

little monolith
clear hedge
#

@glass radish I can change it from checking active processes to focused process, which would suit it more

glass radish
#

that'd be awesome because I often have games in the background and use profiles that disable some keys

clear hedge
#

Thanks for the feedback ❤

clear hedge
#

@glass radish currently, recoding it to allow it to know the focused window and check on that instead 😛

lucid island
#

he's thinking , but he lost some code due to stupidity

#

now he's pretending to be "clever" :p

clear hedge
#

Submitted my project into the contest 😄 but still working on a new way of it detecting active windows, as that seems more of a pain than I thought

little monolith
#

GetForegroundWindow()

clear hedge
#

yeah, I have that already running on my testing area

#

I just have to do a bit of recoding to get it to work (annoyingly)

clear hedge
#

And Completed the code, for focused window 😄

lucid island
#

inb4 it breaks

#

#trustsCopAsFarIveMetHimInPerson

clear hedge
#

I feel bullied

clear hedge
#

Pushed a update to fix the typing, before as the switch happened it stopped anything sending from the keyboard, so added a check to make sure it doesnt change if it doesnt need to XD

little monolith
#

what's the github page though

clear hedge
#

there is still soo much I need to do to it, so suggestions would be great

#

you can also see that I am setting the colours there, hopefully the bug in that, will be fixed soon (so that is only temp code)

little monolith
#

do you accept prs?

#

not to offend you but the code is of low quality

clear hedge
#

oh I know, I havent touched c# in 9 years XD

#

prs?

little monolith
#

pull requests

clear hedge
#

I have been recoding it to pull the code to better quality and sure, go for it if you want

chilly oar
#

Ok, now I know why it is so slow to change the colours, you change the colours for each key separately and not in an bunch.

clear hedge
#

AYYYY @chilly oar is alive 😄

chilly oar
#

???

#

why do you think I'm not?

clear hedge
#

And yeah, but like I said, temp code as Jeroen needs to fix why the profile colours do not copy over (yeah he knows about it)

#

XD

chilly oar
#

I was able to change the active profile a while ago for a few times only but without to adapt the correct colours too. I think it's not a bug, it's just not combined to change the colours when you chage the profiles.

clear hedge
#

according to Jeroen it "should just work"

chilly oar
#

But I did it a dirty way, so everytime I made a not so perfect change the keyboard got stuck and I had to reset it.

clear hedge
#

oh fun XD

chilly oar
#

Yes, so I got a little bit frustrated and make a pause on it.

#

It is a mess to identify the right package out of hundreds in the USB capture.