#🤖│community_dev

1 messages · Page 8 of 1

opaque fox
#

I haven't. I could try that. It's not a viable solution though since I will hopefully not be the only one using the thing I'm making. Can't really go ask people to install/compile an untested version of the plugin.

quick bough
#

"untested version of the plugin", so the official one? 😛

#

I mean, the good news is that I personally haven't had the init take 3 minutes

#

The bad news is, you're on your own in figuring that shit out

opaque fox
#

Yay

quick bough
#

I made my own C++ plugin, tho it's aimed at supporting keyboard by Razer & co, it can also be compiled with Wooting support, so you could try it as a replacement ¯_(ツ)_/¯

opaque fox
#

Oh? How is it compared to the official one feature-wise?

quick bough
#

It's a plugin, I implemented all the APIs and stuff

#

You'd just have to remove this continue

opaque fox
#

Looks interesting.

young berry
#

hello scary hackers

quick bough
#

Hello, GTA Online DLC name

young berry
#

this name is from the 80s pepeoldge

#

um, do any of you fine folks know how to get the browser hotkey (in remap) to work when you don't have the browser utility open

quick bough
#

Browser utility?

young berry
#

yeah the beta utility

quick bough
#

You mean this, right?

young berry
#

correct

#

i have it mapped as such, but it only works when i have a* browser open already

quick bough
#

Well, I just mapped it, closed chrome, and pressing it seemed to re-open chrome

young berry
#

great

quick bough
#

This might be related to how your OS handles this key

dim flax
#

Able to replicate the issue on Arch Linux, works fine while a browser is already open

young berry
#

i was thinking the same thing, do you think this would be a keyboard or windows internal setting though

quick bough
#

It must be some OS setting, the keyboard just reports that the key was pressed

#

It's possible that the key itself actually has no effect (in your OS) and it's the browser software that implements the functionality

young berry
#

this is why i came to the nerd channel

#

is there a way to see what the hotkeys in the utility do?

quick bough
#

They're all just keys 😛

dim flax
#

It triggers KEY_HOMEPAGE according to evtest

young berry
#

so it only brings up a homepage for some of us

#

what os are you on Sainan?

quick bough
#

It's interesting that when I press it while in Chrome it opens up localhost

young berry
#

if you don't mind

quick bough
#

I'm on Windows 10 Pro

young berry
#

yeah same

#

hm

#

are we allowed to ping devs?

#

would this be such an occasion?

quick bough
#

Although, there is also the key that opens explorer and that works fine. That one definitely must be implemented in Windows.

#

Well, it's not a Wooting issue imo

#

(Unless you can prove that the keyboard is actually not reporting the key being pressed)

dim flax
#

yeah so KEY_HOMEPAGE doesn't do anything on most OSes afaik, and instead depends on the focused application. If chrome is open and in focus, it'll handle the keypress and go to the homepage, but under any other circumstances it does nothing.

young berry
#

i would just like to know if they would have any insight, i'm not blaming anyone for anything lol

young berry
#

would changing the function of that key allow all OS to open the default browser?

dim flax
#

yeah

young berry
#

(devs)

#

right?

dim flax
#

File Explorer doesn't seem to work in Linux either (at least not on KDE), it just sends the KEY_FILE event

young berry
#

feedback channel probably the right place for this?

quick bough
#

It's interesting, tho, I don't seem to get any WM_KEYDOWN or so for it being pressed, it just opens my browser

young berry
#

if i do make a feedback post, would you mind contributing to it? you have a much more in-depth knowledge of what you're talking about than i, lol @dim flax

dim flax
young berry
#

i'm using win10 pr

#

so /shrug

dim flax
#

It probably just means for some reason that keycode isn't associated with anything on your machine

young berry
#

god these keys are so responsive, so many extra letters!

#

i guess i want to make sure it's not a ME issue before posting something new

quick bough
#

It might be these launch app keys, since LAUNCH_APP1 seems to be the "open explorer" one

quick bough
#

Actually, it's this one

young berry
#

if it's not just me, though

quick bough
#

For the Linux user, you can just blame all problems on Linux troll240p

dim flax
#

I can always just rebind it to some macro that does the exact same

quick bough
#

It seems to respect my default browser here

balmy iron
#

Those fancy keys do work on the Linux side, you might just have to bind it in whatever desktop environment / compositor / whatever you use
Check evtest, wev, xev..

quick bough
#

tho I can't find anything else in windows settings about this key

azure rapids
#

hey guys

#

i am about to purchase my first wooting keyboard

#

but i have a question to anyone working on the company before purchasing about VAT

#

does anyone know how i can contact?

quick bough
#

Is this the new general now

#

Anyway, I'm pretty sure you will pay whatever VAT is appropriate for your current region of residence as per your billing address

azure rapids
#

i'll go to general.

quick bough
#

You'll see at checkout at latest 😄

azure rapids
#

the thing is that the shipping in my country is astronomic, and i can ship to my parents house in another country where the shipping is 10€, go pick it up in 30 mins and go home. but the shipping in my country is like 60€, so the vat and shipping i end up paying in both situations is the same.

quick bough
#

Although it seems like VAT may already be included in the price?

azure rapids
#

look...

young berry
#

thanks guys, appreciate the help. posted a feedback thread and tagged you two in it. feel free to add what you wish!

azure rapids
#

check the shipping and vat difference

quick bough
#

hmm

azure rapids
#

crazy VAT in Spain but ok shipping... the thing is i dont want to pay VAT in spain as i am not living there...

#

well, do you know how can i contact someone? and sorry to break the theme on this channel, saw it before than general...

#

❤️

quick bough
#

Funny stuff

azure rapids
#

it may be different between europe and us...

#

i have no idea

quick bough
#

possibly

azure rapids
#

thanks!

quick bough
#

they do have a support email, I'd try shooting them a message

#

but can't you solve this yourself by simply using a different billing & shipping address?

#

also, Spain is in Europe?

#

I'm also in Europe

#

so, uhh

quick bough
#

Holy what, I just deinited the Wooting Analog SDK and it did not crash

#

lucky me I guess

#

I feel like I actually prefer a more subtle effect for games, something like (value - 60) / 80 instead of simply value / 255

#

Guess I'll have to add such options to AnalogSense 😛

quick bough
#

hahahaha, every single time

safe pier
#

40% ortho wen

quick bough
#

nah, they need to compromise more... how about one with only 3 keys? troll240p

kindred furnace
#

I currently am using a ZSA Voyager (https://www.zsa.io/voyager). They have a great set of software that enables a lot of neat features on the keyboard.

One of these features is called combos (https://blog.zsa.io/2212-combos/). I really like this feature. For example, if I press the x and c keys at the same time, it returns [ (holding Shift & x + c at the same time, I get { instead). I can similarly press , and . at the same time to get ] or adding shift to get }.

Does anyone know if I can recreate this using the Wootility software for a Wooting keyboard?

quick bough
kindred furnace
quick bough
#

tbf, the software is not that complex, e.g. this here works exactly as you describe:

#

it's just not particularly elegant since the x & c obviously still get input first

#

a custom driver could maybe handle this more elegantly, but it would certainly increase complexity 😄

#

also, a proper implementation of "combos" would certainly add input latency because whenever you press c, there needs to be a short window within which you can press x without a correction being needed (and vice-versa).

pearl yarrow
#

is there a wooting rgb sdk for python or is it not possible

#

dont really know how it works

quiet root
#

its possible but would just call the dll file via FFI

pearl yarrow
#

do i need to build my own dll using this github rep

quick bough
#

You can just download the official DLL and use it via FFI

pearl yarrow
#

oh nvm its inside

pearl yarrow
pearl yarrow
#

thanx

#

thanks

#

aint no way thanks for the help

quick bough
pearl yarrow
#

now i can finally make this work much faster

#

instead of using a program that moves to each button on wootility lol

pearl yarrow
#

osu on the keyboard

quick bough
#

when you said "osu on the keyboard", I thought i'd be like whac-a-mole where a key would light up and you'd have to press it lol

pearl yarrow
#

and its osu mania

quick bough
#

I can see yeah

pearl yarrow
#

too little keys for this lol

#

vertical mode 😎

quick bough
#

that makes more sense lol

pearl yarrow
#

is there a way to make a profile code for wootility

#

i want to be able to run my code with an image and then paste it into wootility so i can use it without running the program each time

quick bough
#

just open dev tools and create a profile code

#

then replicate the request that is made

pearl yarrow
quick bough
#

In your browser. Just press F12.

pearl yarrow
#

oh

#

i was using the desktop version

#

will use web one

#

wow i got it to work crazy

quick bough
#

I just implemented "Rappy Snappy" in software cat_bread

#

"Last Input Priority" would be more interesting, I guess I'd have to keep track of which key has most recently been moved down?

pearl yarrow
#

oh ur own implementation

quick bough
#

Well, Wooting users can access it via the beta

#

but Razer users cannot select which SOCD resolution algorithm to use

#

and there's other analogue keyboard manufacturers with no such option at all

vestal jackal
quick bough
vestal jackal
#

My friend reporter me since I scored more goals than him on football team @vestal jackal

pearl yarrow
# vestal jackal What do u mean by that <@491230649244581889>

before i used to get the colors i need for the keyboard and then run a program that moves my mouse to the color text box and then paste the color in and then click the key corrisponding the the color
and i repeat for all
now i can directly set the color to the keyboard using the script
i also made it so its generates a profile code that u can just paste into wootility

vestal jackal
#

So u can pick the colours @pearl yarrow

#

Can u show me this one time

pearl yarrow
vestal jackal
#

K

#

So what does it do @pearl yarrow

pearl yarrow
vestal jackal
#

K @pearl yarrow can u make a colourful one

quick bough
#

At least it's a decent ratio of "works with my software" to "waste of money"

#

(Still pissed at Corsair and SteelSeries for producing the laziest analogue keyboards in existence.)

quick bough
#

AI is such a waste upon this world, can't even listen to this UwU birthday song.

#

Back in my day, when we wanted a joke song like this, we'd go on fiverr...

hollow crystal
rapid pelican
#

Is there a way to make a default profile in the wooting software cuz its kinda annoying to change my profile every time i open my pc

quiet root
#

make it the top most profile

#

this channel is also more for people developing custom projects with our SDKs. for general support its usually best to ask in #1019755933959733258

serene harness
#

@grand flax Hello, i am using wootverlay and love it but it seems to be limited to 60fps. Is there any workaround for higher update rates?

strong siren
quick bough
#

Can't say about its refresh rate, but it pretty much just waits until the device has an update available and then redraws the window.

#

Which wouldn't be possible if I used the Wooting Analog SDK cat_weary

serene harness
#

40 updates a sec is definitely much too few btw. It looks jerky in realtime (especially without the blending option) and there are issues like going from 0 press to full press in 1 update when really the board was reporting 25x faster than that

balmy iron
#

Analog SDK only has polling, it doesn't give you a way of waiting for updates

serene harness
#

ah that's fine

quick bough
#

Yeah, I was thinking of maybe porting this to using the Analog SDK and making it like a standalone app

#

I mean, it certainly wouldn't be impossible, I guess I'd just have to memcmp and then redraw

#

Anyway, shouldn't be too hard to patch the "Woot-verlay" to have a higher refresh rate?

#

Okay, this bothers me

#

Also I legit can't detect any slowness

grand flax
#

Oops

#

If it's too slow u can edit the code and minimise the delay -- I tried to pick a value to not make it have too many requests

grand flax
quick bough
#

mine too I guess

serene harness
#

for example on gameplay it can show a key unpressed, then update once and it's already fully pressed or releasing

it also adds avg 12.5ms, peak 25ms of latency which desyncs it a bit from the video

with a faster report that kind of thing wont happen

quick bough
#

now I'm kinda curious how you'd feel about my tool lol

#

if you want a random .exe to execute megamind

serene harness
#

you have dm's and friend requests off

quick bough
serene harness
quick bough
#

honestly when I just press a key down, it looks instant to me

serene harness
quick bough
#

I can't possibly tell the transition states

serene harness
#

these are consecutive frames of a 60fps video capture

#

the key actuates ingame at 0.7mm+ of travel two frames (17-33ms) before wootverlay catches any movement with current delay. These latencies are cumulative, not parallel.

#

and the key goes from 0.0mm to 4.0mm in one update, when it actually took me probably about 20 milliseconds to press it physically.

#

on other keystrokes, whole actuations (press then reset) are lost between updates sometimes

quick bough
#

how do you tell the game actuated it?

serene harness
#

new timing indicator on bottom bar and increment on combo count etc

quick bough
# quick bough

let me know if it's any better, it should have pretty much no latency as it goes from receiving the HID report to telling Windows to redraw

serene harness
#

will test out in a bit ty (:

quick bough
#

I patched Woot-verlay to be 100hz and I can't tell a difference, guess I'll try 40hz

serene harness
#

I would just yeet it to 1khz and see if there was any problem 😛 falling back like 2ms, 4ms if neccesary.

quick bough
#

I mean I guess it feels a bit slower at 40hz with instant transitions off, but not slow enough for me to say "it's behind", just "it's got a slower refresh rate"

serene harness
#

it is not an enormous amount of latency, just a noticable and unneccesary one. On a tuned gaming system the motion to photon latency is like 10 milliseconds but the latency on wootverlay is up to 35ms

and also there are events that are either lost or poorly captured if you want to do the kind of thing i do and look carefully over your gameplay, how and when you actuated the keys and if you made a mistake with that - the switches can do it, but they need to be polled more often to record truthfully - especially with repeated actuations and rapid trigger.

quick bough
#

ah yeah just recorded it and played it back in slowmo

#

(this is 0.1x speed)

#

the one thing I don't capture is rapid trigger, but I guess I can compile a separate exe for digital input

quick bough
#

I honestly never used rapid trigger, looks funny tho

#

It doesn't seem to make a difference with the way I use my keyboard, but I suppose it would help me spam better (if I adjusted my spamming motions)

#

can't wait to get banned from osu! (I don't play osu!)

quick bough
serene harness
serene harness
#

Being able to do stuff like variable turn rate in a racing game with analog switch is really big as well, but with the state of software at the moment it's limited to a niche

quick bough
serene harness
#

rapid trigger uses analog data to modify digital input, so it works everywhere that a regular keyboard does - but better

serene harness
#

rapid trigger makes the one key reflect your intention with less error, so it's not banned.

If you press a key down and then release it, that is only allowed to send one "press" - and the press has to be sent on key down.

quick bough
#

You will notice the exe I sent will also work with your Razer Huntsman keyboards or Keychron Q1 HE, should you have any of those 😛

serene harness
#

i'm a wooter 😄

#

what games would you recommend that work well with analog input?

#

I know that trackmania does

quick bough
quick bough
serene harness
#

Have you tried the KSP mod? I've heard of it, but haven't used it

quick bough
#

I'm not familiar with the KSP game at all

#

I'm aware of the mod because of awesome-wooting but that's it

serene harness
#

KSP is really great for vehicle controls. Less excellent for cars because the wheel physics are not amazing, but cars do work and aircraft/rockets are better than anything else

quick bough
#

more native analogue support in games is certainly always appreciated by me! 😄

serene harness
#

https://www.youtube.com/watch?v=vWuOlWK0Z94 this would have been a lot easier for example with analog inputs 😛 there i had to keep some of the control authorities on screen and adjust them with the mouse cursor because it only lets you input like 0%, 20% (with lag) or 100% digitally. The same authorities don't work for different stages of flight. It's also basically mandatory with digital input to tap buttons on and off at a high frequency to average the actual input that you want which causes stuff to jerk around.

quick bough
#

just a shame it's such a niche thing that no games have native support for it

serene harness
#

yeah

quick bough
#

oh yeah I can imagine flying like that with digital input 💀

#

my analogue patch for GTA V makes planes so much better lol

quick bough
serene harness
#

which?

quick bough
#

Fugl

#

Like, Wooting listed the game on their website at one point (that link is now defunct)

#

I'm not sure what exact problem they were facing, but probably fixed with one of my PRs, haha

#

I'm honestly surprised how people didn't see Wooting when they started out in like 2016 and were like "wait, wtf, my keyboard can sense how hard I'm pressing my keys? this is gonna be huge in games, especially for racing and flying."

#

because that was basically my exact thoughts lol

#

Got my Wooting Two and never looked back at digital keyboards cat_holdingbacktears

serene harness
#

I saw a video on the original boards, but they had mixed feedback due to some issues and lack of game support

#

so it went to the back of my mind until everybody started losing their shit about the hall effect switches and rapid trigger 😄

quick bough
#

Yeah, lack of game support was a point of contention, but controller emulation was supposed to be a "workaround"

serene harness
#

then i got to try it, and the hype is real

serene harness
quick bough
#

it's a shame that in the end it's just using the analogue values at firmware level for better digital input, but I guess that's just how it goes

quick bough
serene harness
#

Games like that move the camera digitally with WASD

#

it would be nice to have analog

quick bough
#

I'd love to extend my AnalogSense project to every game, but I'm honestly not that good at reverse-engineering lol

quick bough
#

Ah yeah and the RGB SDK still confuses the Wootility

#

Simon, are you looking for a colleague? I'll rewrite your software in C++ and fix all the longstanding bugs (same thing). troll240p

quick bough
serene harness
quick bough
#

I'd recommend using both exes at the same time so you can see both the analogue state and if the key is considered actuated

#

I should probably add some option to display both in the same window, but whatever cat_seenoevil

serene harness
#

or tell me how to set up stuff for compiling it if it's easy (i just figure that is probably more effort than someone who already has it set up running it)

quiet root
#

you install visual studio 2022

quick bough
serene harness
#

ty

quick bough
#

This project should be using .NET 4.5, having to share all this trash is... certified Microtrash 😄

#

or C++, with no standard library 😛

serene harness
#

It's reading as 0.0% CPU usage even with 1ms wait

#

and i can't see any problem or reason for me not to just use that, in that case

quick bough
#

Yeah, your CPU can do a lot in a millisecond, lol

serene harness
#

especially this baby

quick bough
#

Cries in instability

serene harness
#

Thanks for the help

#

@quick bough you can probably get a similar feeling / tell of something being wrong with it like i had if you increase the sleep time, e.g. doubling it. If you're not sensitive enough for these problems to be obvious at 40 updates per second, they certainly will be at 20 or 10. Use instant transition.

serene harness
#

Not sure if OBS still throttles the browser source, but definitely better (:

quick bough
#

You sure are pressing those keys at an accelerated pace

serene harness
#

better vid

#

and yeah

#

top players can very very easily do 1.5x my speed, and sometimes 2x with the same level of comfort

quick bough
#

you don't really seem to be taking much advantage of rapid trigger

serene harness
#

you dont see it that well on the display because it's so fast, but generally no when everything is going great rapid trigger isn't kicking in much

#

when you get faster and less comfortable there is a really common and difficult to avoid mistake where you don't lift your finger far enough off the key to release it before you press again

quick bough
#

(I still don't play osu!)

serene harness
#

and rapid trigger basically fixes that issue, to an extent at least (i have it on 0.7mm to mitigate accidental releases and presses)

quick bough
#

I should plug in my Wooting® UwU™ and give it a shot

serene harness
#

has wooting uwu

#

doesn't play osu

#

This is what i use with continuous rapid trigger

#

with other KB's you have to lift 2mm from bottom out every keystroke

#

with this it's 0.7 mm

#

which is a pretty big comfort and advantage gain

quick bough
#

Well, from what I understand the most important thing is tapping consistently

#

aka with the beat

serene harness
#

Yeah but even when you have a good feel for the beat it is difficult to move on the quicker maps

quick bough
serene harness
#

like 250bpm map with quarter beat streams is 1000 hit objects per minute / 16.67 per second. 8.33 keystrokes per second per finger

#

i can hit that for brief periods of time like 3-5 actuations, but i can't hit 30 objects in a row at that speed

quick bough
#

So you have to hit an object every quarternote?

serene harness
#

on streams yes

#

usually people map jumps on half beat and continuous patterns like triplets and streams on quarter beat

#

and usually maps are around 160-220 bpm

#

but

quick bough
#

masochism?

daring shadow
#

wait what switches does the wooting 60he+ come with

serene harness
daring shadow
serene harness
serene harness
#

and it's over 16 keystrokes/sec on the streams

quick bough
#

my keyboard could be sounding so good!!!!

quick bough
quick bough
#

or maybe dks?

#

idk

serene harness
#

No, he's just pressing two keys 11x per second each

quick bough
#

hmm, so just rapid trigger?

serene harness
#

if you dont have rapid trigger (key deactivates after a slight liftoff) then you end up pressing the key back down again before it's reset, and choke hard

quick bough
#

yeah

serene harness
#

when ramping to a speed that you are not as comfortable with

#

eventually it becomes even a physical limitation because shit can't move that far or swap directions of movement easily in 40 milliseconds

quick bough
#

Wait, osu is open-source?!

#

isn't that kinda bad for anti-cheat

serene harness
#

this is what happens with dks exploit for tapping on key-up https://www.youtube.com/watch?v=mh24uiU8jOE

A top player showed it on unranked

serene harness
#

didn't used to be

quick bough
#

ah it's the next update (codename "lazer")

serene harness
#

lazer has been coming next year since about 2015 (:

#

did you see that last video? dogekek

quick bough
#

wait whaddefack

serene harness
#

that's osu mania

#

different game mode

quick bough
#

ah yeah I heard of cloutiful

#

his method abused like DKS iirc, right?

serene harness
#

yes

#

I think it was using DKS to have key2 output on up instead of down

#

and tapping both fingers at the same time

#

so you get one action on key down and one on key up, and have to move your wrist half as much

#

i can't play it

#

at all

#

that kind of game is kind of a niche but there are gods of it lol

quick bough
#

Welp, probably not horrible for my first time doing this clicky thingy

quick bough
daring shadow
#

snap tap is a feature that is going to stay right? would like to confirm just before buying the keyboard

quick bough
serene harness
#

It's actually paradoxically easier to go faster, to an extent. Both in terms of BPM, and having less warning before you have to take actions

serene harness
#

snap tap is questionable from a getting banned pov though. Probably not an issue, but it wouldn't be super shocking if some game banned people for using

quick bough
#

osu! confirmed snap tap is cheating

serene harness
#

for osu yeah

quick bough
#

so just be sure to check with whatever game you're playing if it's considered cheating...

daring shadow
#

i was thinking more towards games like valorant

quick bough
#

probably fine for that

#

tho the part that confuses me is: doesn't rapid trigger basically already do what snap tap did?

serene harness
#

I don't think snap tap is actually really useful for osu

#

actually it probably is nvm

#

but rappy snappy is more OP

#

because with rappy snappy you can hold key 1 halfway down

#

and press key 2

#

and each keystroke of 2 sends a "2" signal when it goes down, and a "1" when it goes up.

#

so it's doubling your inputs

quick bough
#

well, snap tap is easier tho because you can press 1 key full down and spam the other

serene harness
#

oh yeah

#

the jiggle strafe thing yeah

jade crow
#

any idea on where wootility will recognise more keyboards manufacturers?

serene harness
#

wootility is the software for wooting kb's

quick bough
serene harness
#

it's not a general configuration software for all keyboards

quick bough
#

also love how sometimes this chat is more active than general and then suddenly new people come in here for support lol

daring shadow
#

also does anyone know if u get a discount for signing up for the newsletter i swear it said u did but i didnt get one :/

quick bough
#

Uhh, there's these if that's of any use?

#

(also I'm pretty sure I never bought a Wooting 60HE)

daring shadow
#

thanks, but unfortunatley im buying the reg one so those dont work :/ 200$ hope its worth it 🙏 😭

quick bough
#

It is, Wooting keyboards are nice, and very durable

daring shadow
#

👍

#

rn im on a ducky mini so

quick bough
#

even if you only want to buy it because you think it gives you an advantage instead of an actual interest in the coolness of analogue input, but... no judging.

orchid falcon
#

At this point who is even buying it for the analog

quick bough
#

I mean, I think the analogue is still the selling point

#

It's just a better way of doing digital input now, lol

#

which is just a cruel irony

balmy iron
#

Yeah sad, I bought mine for analog keys but that was back in 2018.. Before double movement or snap tap or SOCD was even a thing people thought about

daring shadow
#

just ordered the keyboard it said thanks for the "pre order" are there none in stock rn ?

quick bough
quick bough
#

but it looks like the 60HE+ us already at a stage where they are able to mass-produce it, so it probably shouldn't be too long until you get it

#

I feel like the Wooting Two HE is the only thing they keep in stock tho lol

#

Unserious keyboard company, doesn't even have a TKL, smh

safe pier
quick bough
#

That is quite fast for Wooting suspiciouseyes

#

I bought like 3 Wooting Twos in total and I don't even remember how long they took to be shipped, I guess I'm just remembering how long the preorders take

quick bough
#

That's a win, I guess?

paper crow
#

Please reserve this channel for only community development related conversations, thanks

jade crypt
#

And i received it yesterday

#

Awesome keyboard

quick bough
#

enjoy the analogue input and then despair at the lack of game support

red wasp
#

Can you enable digital input somewhere?

quick bough
#

but the keys are analogue, so you can take advantage of that in various ways

#

e.g. by defining how far down a key has to be in order to be considered "pressed"

red wasp
#

Right I’m fairly familiar with Hall effect sensors, Ive done a couple projects at work with them, was just wondering that exact point, whether you could set that actuation point. Very cool. Thinking about picking one up then

#

Thanks for the heads up

fallen bluff
#

my keyboard keep connecting and disconecting when i try to save anythign in the perfomance tab what do i do?

quick bough
fallen bluff
#

nope

#

all ive got on my pc is pulsar mouse software

#

and the wooting movement and wootlity

#

no other rbg apps

#

dealted razor and steelseries trying to fix it

floral crane
#

Anyone know how fast the leds can update? or how fast the keyboard can update

quick bough
#

Just spam it with updates, it will block/throttle anyway at waiting for the keyboard to acknowledge the interrupt

floral crane
#

would it queue them or skip them?

quick bough
#

The problem is that there is a bug where sometimes the LEDs do not update anymore and you have to unplug and replug the keyboard to fix it. And I'm not entirely sure this bug is related to how much you update the LEDs at all.

quick bough
floral crane
#

I want to make my own program to make the smoothest rgb rainbow animation as possible, but if it reaches a quiet limit and skips updates it would have the opposite effect, skipping colors

#

I'd be using the wooting rgb sdk

quick bough
#

Yes, that's also an API that sends an HID report for you

#

So, you will notice it will block, waiting for the keyboard to "ack" the interrupt.

floral crane
#

hmm, I guess I need to make sure not to overload the processor so it doesn't fail to send keys or something

quick bough
#

I don't think that's a concern

#

My only concern would be about that bug where it stops updating the LEDs

#

Anyway, just try it and see 🙂

floral crane
#

for some reason I cant increase my brightness above the locked limit unless I use artemis, this might be a beta firmware issue though

quick bough
#

Wdym?

floral crane
#

it only goes full brightness when artemis is running, otherwise its stuck at 70% even if I set it to 0

quick bough
#

70% is the brightness you set in wootility?

floral crane
#

I tried both wootilitys but its the same, for some reason it only applies when using third party rgb, with stock rgb its stuck at 70%

#

70% is the max unless you click to unlock the 100%

quick bough
#

Oh, because of Tachyon mode?

floral crane
#

it saves the brightness setting, and uses it when I open artemis, and shows in the other wootility, but it goes back to 70 when I close artemis even if it's set to 0 it goes back up to 70

quick bough
#

I don't think an app using the RGB SDK should touch the brightness at all, as you can configure this yourself in the Wootility

#

and I figure the brightness cap is only implemented in the wootility because they found it to be better for tachyon mode performance

#

if you then go and bypass that by sending a report to the keyboard to update the brightness yourself, that's kinda your problem

floral crane
#

I'm gonna try factory resetting the keyboard to see if it's a beta firmware issue

#

now its working, must have been a weird bug

floral crane
#

I'm getting hidapi error: Broken pipe

#

I'm using the hidapi rust bindings, and I tried setting my device to 777 with udev rules but it didn't help

quick bough
#

You did set the udev rules appropriately, yeah?

#

Otherwise the fopen or whatever call returns an invalid handle value (-1 I believe)

#

Actually maybe any negative number would be an invalid handle on Linux

floral crane
#

I have the wooting udev rules and I tried adding a 777 permission to it

quick bough
#

You also restarted the service after setting the rules?

#

The chmod has no relationship to it, I don't think.

#

Tho it should definitely work as root

floral crane
#

no I set MODE="0777" for all the rules, restarted, and I tried running the binary with sudo

strong siren
#

What is this "smoothest rgb rainbow"? Just out of curiosity

quick bough
#

That still makes no sense to me, because this is all the rules you need

floral crane
#

yeah thats what I have

quick bough
#

Well, okay. Have you tried using hidapi in C/C++?

floral crane
quick bough
#

It's unlikely the Rust bindings are wrong, but I can't reason about your Rust code, there's like so many uncertainties about it that I assume you just hope magically work.

floral crane
#

I haven't, but my wooting-rgb-sys crate works

strong siren
quick bough
floral crane
#

:o

#

I've been missing tachyon this whole time

strong siren
#

Yeah

#

I saw people say that too

floral crane
#

the rgb sdk doesn't expose the rgb matrix buffer, so I wanted to try using hidapi

quick bough
#

There is no way you can possibly notice a 1-2ms difference in input latency

strong siren
#

So I asked Simon and yeah, turns out reading the rgb stuff on the firmware side and writing to the leds takes time

floral crane
#

no I don't care that much about tachyon

#

does it turn back on if you close the program?

strong siren
#

It doesn't turn off

#

Just the stuff that it skips doing while it's on, you're forcing some of it to still happen if you use the sdk

#

That's my understanding of it.

floral crane
#

So there's 8 interfaces and #2 seems to accept write/feature reports, but I don't see where that's controlled in the rgb sdk

quick bough
#

You need to check for the usage page

#

I think it's 0x1337 for the RGB interface

limber glade
#

Based

quick bough
#

I hate to say it but I found another bug in the Analog SDK owocat

flat wigeon
#

Would be nice if you could read unbound keys

floral crane
#

What's the difference between usage and usage page?

quick bough
#

Of course, ultimately, it is up to the vendor to decide how they assign usage ids and usage pages for custom protocols, as long as they avoid any of the reserved/documented values.

limber glade
#

Is the firmware open source?

quick bough
#

No

#

They gotta keep (what they believe to be) their competitive advantage

#

In my opinion as a customer of analogue keyboards, the real competitive advantage of Wooting is the long-term support they give for their boards plus the excellent software interface (Wootility).

#

Because as we can see, when a competitor actually cares (Razer), they are perfectly capable of replicating everything on the firmware end that's interesting

limber glade
#

For sure, wish they were hiring US developers. Seems like a great team

quick bough
#

Meanwhile I'm just trying my best trying to fix up their Rust software as a C++ developer

#

even tho "at work", I've now stopped using the Wooting Analog SDK in favour of my own C++ class for analogue keyboard support. It's a lot easier for the customer to use (no need to install any software, no need to restart anything for PATH to update, no need to install a plugin for non-Wooting keyboards). Also the turnaround time on getting bugs fixed is faster by a factor of months or even years.

limber glade
#

I haven't looked at the SDK yet, might have to take a peak

floral crane
#

I have like 10% of the rgb sdk rewritten in rust, took awhile to figure out the rgb matrix is converted le

#

I can't spam send as fast as possible, it causes flickering, but 15ms is good enough

quick bough
#

You are waiting for a response from the keeboard, right?

floral crane
#

oh yeah I guess I can skip reading the response

#

its empty anyway

quick bough
#

You should not do that 😄

#

Wait for it to acknowledge

#

I've not managed to have it "flicker"

floral crane
#

do you mean wait for the write to finish? or read, read just timed out after 1s for me

quick bough
#

Well, depends on what you're doing

#

If you're doing the full-size keyboard update (WootDevRawReport), then I don't think there's a response

#

but (WootDevSingleColor) does have a response

#

Init & Deinit as well

floral crane
quick bough
#

Now rewrite it in C++

#

Also, note that your product matching will breaky if you switch the gamepad mode

floral crane
#

yeah a lot of it is hard coded, I might add more support to the lib, but it's really just for me. I will never write in c/c++ again .-.

floral crane
#

does anyone know what command is used to get what function layer is active?

quiet root
#

we have a command for that?

floral crane
#

wootility is able to see it, I assume there's a command for it

quick bough
#

You mean which profile?

floral crane
#

which function layer is active

strong siren
#

where can the wootility see that?

#

you can get which profile you're on, but i don't think you can for the current fn layer

quick bough
#

If you like Rust, you might also enjoy: The Wooting Analog SDK

#

(Just ignore all the bugs that the version written in C never had, and then you can feel a sense of pride and accomplishment!)

leaden vessel
#

It was written in C before?

quick bough
#

Yeah, there was a version written in C

#

Then they rewrote it in Rust, like you do

#

I don't quite get what possessed them to skip over C++

leaden vessel
quick bough
#

That's a strawman argument

leaden vessel
#

Well, that could be one reason

#

There could also be Rust's package manager or its stdlib and ecosystem in general

leaden vessel
quick bough
#

It's pretty hard to have memory safety issues in C++

leaden vessel
quick bough
leaden vessel
#

I really don't think it's hard to have memory safety issues with C++. You can still blow your whole leg off while carefully using all the standard practices like unique/shared ptr, all the sanitizers like ASAN/BSAN/LSAN etc.

#

Meanwhile in Rust:

  • when you don't use unsafe, it's impossible unless you exploit a compiler bug
  • when you do, the unsafety is scoped and way more controllable
quick bough
#

Different requirements, I suppose

#

The problems I have with the Analog SDK boil down to the fact that Rust loves crashing

#

Sure, you're not having a memory safety problem if your program isn't running

#

but you're also not having much of a user experience to speak of

leaden vessel
quick bough
#

Also, a lot of these crashes I've seen were, in fact, not panics, but access violations

leaden vessel
#

Wait, they were?

#

Hold on lemme look at the issues

quick bough
#

I mean, there's the unstable ABI

#

which funny enough does not cause linker errors

#

so it links just fine, but crashes at runtime

leaden vessel
quick bough
#

Yes

leaden vessel
#

Because I searched "segfault", "segmentation", "fault" and "violation" and I see no issues

#

Did someone get one on the Discord or something

quick bough
#

There was one where a dependency of the package was super unstable (I mean, okay, they used unsafe, but it was not clear at all what caused it)

#

Like "yeah your code is safe unless you use unsafe" kinda breaks apart when just any one of your 100 deps has to use unsafe lol

#

With this npm-like ecosystem, how could you possibly tell

quiet root
#

most of system resource access is unsafe

leaden vessel
quick bough
#

Still a problem in the current latest release tho

#

The patch for that doesn't even make any sense, lol

quiet root
#

if only rgb sdk was rust already with proper multi device handling and not my BS implementation of it

quick bough
#

Yeah let's write more code in Rust so we can have more unstable software!!!

leaden vessel
#

Even though Rust makes tangible improvements to memory safety and actually makes it possible to write completely memory-safe code, if at the end of the day you don't look at what the dependencies do you're bound to have any kind of error including memory unsafety ones

quiet root
#

i dont think rust is inherently more unstable or something. also cant forget that c/cpp had a few more days in the slow cooker compared to rust

#

for how young rust is its pretty mature imo

leaden vessel
#

Writing stuff in Rust vs in C won't make the software crash more than it would've done. Usually it makes it more correct simply because its APIs are designed to make you think about it earlier on. That's my experience

quick bough
#

My experience is with C++ (not C, C should die already) and RAII makes it stupidly easy to deal with allocations, without leaks or GC (same thing)

strong siren
#

"c should die" take is kind of insane lol

quick bough
#

Certainly I will agree there is some "skill" in identifying when C++ code is just C in disguise and then double- and triple-checking the correctness of all operations

quiet root
#

yes but cpp is like 40years old now having the same time in development of the language, its compilers and resources around it

#

rust is not even 10years old

leaden vessel
#

the first stable release of Rust is 9 years old indeed

quick bough
leaden vessel
#

Also people put Rust up to really really high standards when it comes to memory safety because it's pretty much the only language that brings "memory safety" as a point. Garbage collected languages already brought in safety at the cost of performance, the real difference is that Rust eliminates that cost (and also has a few more correctness features)

quick bough
#

even worse when people act like it's either "write it in C" or "rewrite it in Rust" when the correct answer is "slowly introduce C++ to the C codebase"

leaden vessel
#

oh and also Handmade Hero

quick bough
quiet root
quick bough
#

I know why Torvalds doesn't like C++, and I understand those reasons, but at least some of them should also prevent him from allowing Rust 😄

leaden vessel
#

As well as his Enter The Arena conference talk

#

Personally I prefer C to C++ because it's a simpler language, which is weird coming from a Rust guy but it is what it is

#

Ideally I'd have a language that's safe like Rust yet kinda simple like C, but that language just doesn't exist (no, Zig is not safe like Rust)

quick bough
#

Ideally I'd have C++ and more humans with enough brain capacity to effectively use it

#

and, as a result, more software that is up to my standards

#

but then, I guess there would be very few opportunities for me to compete and earn money 😄

leaden vessel
#

"skill issue" is a very common argument, but I think it's a complete red herring

quick bough
#

Well, either you never tried C++ or you have a skill issue

#

and surely you wouldn't dislike C++ if you never tried it? 😄

leaden vessel
#

I did C++ before doing Rust

#

I even did Cuda

quiet root
#

i hate c++ after trying it

#

lol

quick bough
#

Well, it's what we use to make complex software without going insane

leaden vessel
#

You're gonna encounter skill issues in any programming language, especially low level ones.
In C you'll get skill issues doing memory management yourself in a safe way.
In C++ you'll get skill issues doing RAII and ownership in a safe way with smart pointers.
In Rust you'll get skill issues fighting with the borrow checker.

quiet root
#

in JS everything is a skill issue

leaden vessel
#

The key difference in these skill issues is that in the first two, you get skill issues making your program safe, while in Rust's case, you get skill issues compiling your program because the compiler only accepts safe code

quick bough
#

(I'll be going afk for an extended period of time now.)

leaden vessel
#

(note that I didn't say it only rejects unsafe code, that's different and somewhat impossible unfortunately)

leaden vessel
strong siren
#

there's been a few of those already lol

leaden vessel
#

I guess this checks out

leaden vessel
strong siren
#

rust does have a lot of that doesn't it

leaden vessel
#

Yeah

#

At least I like it on Discord way more than on Twitter. On Twitter they just babble without listening

#

"Rust doesn't prevent all possible memory leaks on earth?! yet it claims it's memory safe?!?!? ABSURD!!!!!!"

strong siren
#

the only significant thing i did with rust used a lot of win32 stuff that i couldnt find any rust bindings for so it was kind of miserable with a bunch of unsafe blocks everywhere

#

sad

leaden vessel
#

Yeah FFI is always unsafe u_u

balmy iron
#

I tried Rust years ago and didn't like it and don't like it now either

leaden vessel
#

I start liking Rust less and less for quite different reasons

#

The first is that it's now really complex and that I wish I could use a safe language that's closer to C in terms of simplicity

strong siren
#

i think rust can be good but it's also misused. people try to shove a systems programming language where it doesn't belong because of hype

leaden vessel
#

The second is that I got... uh... "arena-pilled" (?)

balmy iron
#

I also find it quite offputting that many Rust written projects make it a big deal that OOOH WRITTEN IN RUST YEAH!

leaden vessel
#

The third is that everyone uses a gazillion dependencies and it frustrates me to no end spey

leaden vessel
balmy iron
#

That's combined with the fact that a lot of those projects seem to crash (well, panic) all the time

leaden vessel
#

Yeah at the beginning they'll be lose on that

strong siren
#

there's shit projects written in rust and amazing projects written in "crappy" languages. the tech doesn't matter that much

#

as long as it's appropriate for the task, of course

leaden vessel
#

Well, it does matter, but it doesn't do all the job

#

It's just a tool like any other with its advantages and disadvantages

#

Not really making a "everything has its ups and downs" argument because I will rank a tool against another one dawae

#

But talking in binary is always easier than explaining every nuance

#

I personally try to use .unwrap() the least amount possible in my projects anyways, I prefer when stuff doesn't crash

strong siren
#

that's how the "blazingly fast" people come across to me, binary :p

leaden vessel
#

How about quantum bits? Being memory safe and memory unsafe at the same time trolley

#

cve-rs wink wink

balmy iron
#

I'm also not too impressed by all the dependencies. I get it yeah you don't want to always write everything but seeing even simple projects have hundreds of them, many even duplicated in different versions isn't so great

leaden vessel
#

awesome

strong siren
#

i was looking for that earlier but couldnt find it haha

leaden vessel
#

I don't like that the ecosystem is essentially drugged on deps though I'll give you that

#

I try my best to avoid it but it's hard

strong siren
#

the worst part of c/c++ in my personal experience is build system and dependency things. i get that it's skill issue and the flexibility can be a good thing, but i like to be able to cargo build and it "just works" most of the time

quiet root
quick bough
#

Worst case scenario, you use-after-move a smart-pointer and it turns into a nullptr deref

leaden vessel
quick bough
#

Which you can imagine as a "panic" if you wanna think of it as all sunshine and rainbows

#

In both cases, you don't have a memory safety problem

#

You still obviously have a logic error, tho

#

And no amount of compiler magic will fix that for you

#

You need to know programming to write correct logic

leaden vessel
#

Transitively, through sctk

#

u g h

leaden vessel
#

Even Rust doesn't change that of course

#

it just makes it easier to not fuck up

floral crane
#

the real reason I use Rust is to not have to deal with learning gcc/clang/make/cmake and writing makefiles that works cross platform. The language is alright, I would learn it if it was otherwise easy to use; but it's not unless you're writing software for one platform.

quick bough
#

Fair

#

I wrote my own build system to use C++ cross-platform lol

leaden vessel
#

build.sh + build.bat my beloved (?)

quick bough
#

but the main money maker is Microsoft Windows, and there Visual Studio is an excellent build system

floral crane
#

excellent you say

balmy iron
#

Yeah it really is excellent when I have to manually edit all the library and include paths since no one invented pkgconfig on Windows

quick bough
#

I could've saved myself a lot of pain if I didn't want to port my software to Linux and MacOS probably

floral crane
#

seriously windows where's the pkgconf

quick bough
# floral crane excellent you say

I mean, it has tons of problems, but on the point of pressing Ctrl+B and compiling what needs to be compiled and linking what needs to be linked, it is very good

quick bough
#

instead I spent probably 2+ weeks to implement TLS myself

floral crane
#

why

quick bough
#

so it works on Linux and MacOS, too 🙂

floral crane
#

openssl 🥲

quick bough
#

very subpar software

#

tons of memory leaks

floral crane
#

can't argue with that, I use rustls

quick bough
#

(which is not spec compliant)

floral crane
#

and yours was spec compliant and had no bugs?

quiet root
#

obviously

quick bough
#

It was spec compliant, and had none of the known implementation bugs

quiet root
#

its sainan youre talking to

quick bough
#

but it's a protocol with 2 sides and I encountered some funny behaviours from the other side

leaden vessel
quick bough
#

e.g. NGINX would return internal_error with certain "hello" packets

floral crane
#

I have been stopped by tls cert pinning too many times

quick bough
leaden vessel
#

Ah right, because it nulls the pointer

quick bough
#

Also means you can't MITM the traffic, because none of your puny CAs are trusted megamind

floral crane
#

thats my problem

quick bough
#

Not a problem for my use-case, lol

floral crane
#

I wanna sniff that traffic

quick bough
#

and I don't want you to sniff my traffic 😛

floral crane
#

does that mean stuff that uses cert pinning doesn't work in china, or do they allow tls traffic through the firewall?

quick bough
# quick bough (which is not spec compliant)

Mainly, the TLS spec does advise that AES-CBC-128 should be supported. In practice, of course, this is rarely the case anymore. This does lead to some problems where people just try to optimise for some security vanity metrics with their TLS configs and end up making it needlessly complex to just establish a connection.

#

Sometimes people forget that public UDP services exist, too, I feel like

quick bough
#

Trying to make internet-connected software is actually a nightmare with everyone and their mother trying to play the censorship game

#

I include anti-virus/endpoint security/router security/etc. as "censorship", too, because your intentions rarely matter

leaden vessel
quick bough
#

Yeah, there's a lot of "interesting" takes on it

#

I'm not surprised that this is a decision that came from the CTO (and not someone who actually codes all day)

#

Rust totally makes sense as a business decision

#

If the mistakes of your programmer can not be a safety risk for your company, then obviously you would prefer that language

#

because now you can hire more idiots

#

have a higher throughput

#

and (at least in theory) not take on any more risks

#

but the way this scales is also interesting to consider

#

because a person using Rust is certainly slower than a person using C++

#

the C++ dev doesn't have to contend with a ton of (mental) overhead everytime they wanna add a new feature or whatever

#

I'd always just invest in better people over more people

leaden vessel
#

This is yet again the "skill issue" red herring which only leads to unjustified gate keeping. No matter if you're the number 1 driver, you wear a seatbelt, and if there's one that's better engineered than the last you will wear it given the opportunity. Switching to Rust doesn't necessarily lead to having more programmers that are overall less skilled, it just leads to more safety compared to C++

quick bough
#

Your analogy is a bit off

#

Also, as someone who doesn't have a driver's licence, the only times I was behind the wheel and driving, I in fact did not wear a seatbelt 😛

#

Anyway, if there were a better seatbelt available, doesn't mean I would install it if it were effort and the benefits aren't obvious

leaden vessel
quick bough
#

oh, you might be doing C++ wrong then

#

my man, that's what abstractions are for

#

I never think about lifetimes nowadays, I just trust in the architecture I made like 4 years ago

#

which is a very simple tree structure

#

the lifetime guarantees are obvious

#

it's maybe 1 second of thought

#

but if I had to explain what I am doing to a compiler? that how if X is true then also Y is true (and these might be entirely unrelated from its POV), I'd probably go insane

leaden vessel
#

A simple tree structure is exactly what the ownership model makes you create. When you need something more complicated that's where you use different memory containers (equivalent of smart pointers in Rust, somewhat). They're also abstractions just like C++ has abstractions, they're just better

quick bough
#

So, it is a skill issue

#

The skill of programming apparently suddenly disappears from you when faced with C++, or what?

#

Nothing stopping you from making a tree of smart pointers in C++

#

you have RAII make sure you don't leak

#

and very clear guarantees about the lifetime between nodes

leaden vessel
leaden vessel
quick bough
#

If you can show me an example of where you go wrong with RAII and smart pointers, it might make sense

quick bough
leaden vessel
#

reference-counting cycle is a classic example

#

another very very very simple one is just pushing to a vec in a loop

quick bough
#

Does Rust solve that?

leaden vessel
#

No, because no language does

#

It would involve solving the halting problem

quick bough
#

So, you need to know programming either way 😄

leaden vessel
leaden vessel
#

Did I ever say you didn't?

leaden vessel
# quick bough If you can show me an example of where you go wrong with RAII and smart pointers...

I saw this video a while ago. I think that's a good example
https://youtu.be/qeiRGbYCD-0

Part 2: https://youtu.be/-VbVcpZnQss
Code: https://github.com/contextfreecode/safety

0:00 Intro
0:27 == C++ (cpp) ==
1:30 Returning expired memory
3:09 Pointers and values
4:02 Analyzing memory errors
6:09 Secret frees
7:19 Out of bounds
8:31 Initializing values
8:50 == Zig ==
9:33 Initializing values
9:50 Out of bounds
10:13 Explicit destructi...

▶ Play video
quick bough
#

Okay, at first I thought this guy was being serious

#

Then I spotted he's returning a reference to a local lmfao

#

Yeah, it helps to know how to code in C++ for sure 😄

#

On another note, vector<Node> doesn't make a huge amount of sense

#

realistically, Node is an abstract base class with tons of implementation details being unspecified

#

so you do generally have a vector of smart pointers

leaden vessel
quick bough
#

of course, you have to be careful where the lifetime of your objects ends

leaden vessel
#

Yeah, because the compiler won't do it for you

quick bough
#

you can't just give a reference to some value you put on the stack during the function execution

leaden vessel
#

You can, that's what will make it crash - although I'm sure for cases as simple as the first one in this cideo the tools can catch it

#

It's not always that obvious, but unfortunately I already ran out of examples. I have another one but it's your previous "worst case scenario" lol

quick bough
#

Well, you can, but you can't. It doesn't make sense.

#

Also in general not an issue if you ask the compiler to infer the type for you

#

which he already kinda did but then didn't just to invoke UB for the sake of invoking UB

#

Anyway, yes, I know that it's possible to use values outside of their lifetime when you use pointers/references as opposed to smart pointers/weakrefs.

#

If this is a problem for you, you can use smart pointers, weakrefs, and be sure to assert in important places

#

It's not my really my problem tho if you're unable to use a low-level programming language I guess

#

You're just not the right person for the job then, right? 😄

leaden vessel
#

In any case, even supposing that following all the safe C++ practices helps, you still have to deal with the old unsafe legacy of the language, the compiler unable to check as much about the safety of your code as Rust can, and safety not being the default, making it harder to write code that is safe from the get go.
Here's another article about C++'s problems in that regard
https://www.thecodedmessage.com/posts/c++-papercuts/

leaden vessel
quick bough
#

there is no unsafe legacy. I use very little third-party code, and what I do use, is heavily tested

leaden vessel
#

Huh? There definitely is unsafe legacy in C++. Just because you make everything from scratch doesn't mean that's false

#

Heck, making everything from scratch means ditching the entire ecosystem. Not everyone can afford doing that, it's nice when you can though

#

But yeah sure I'm just not fit to be a programmer, totally not just a design and legacy issue

#

It's always the same argument, "you're just not good enough", meanwhile the skill issue just doesn't exist in another better ecosystem that doesn't make any significant trade-off in that regard

quick bough
#

I didn't mean to offend you

leaden vessel
#

Oh you totally did mean to. That's like the only thing "you're just not the right person for the job" is ever meant to do actually. You don't need to deny that :p
I'm not personally offended, I know my skills, I won't let myself feel insulted by statements like that. But I do feel somewhat pissed off by this completely backwards logic, which is why I engage in these kinds of discussions even though it's probably not good for me in the first place

quick bough
#

It's a joke on "right tool for the job"

#

Anyway, you really just seem to be arguing from a place of second-hand knowledge, hence it's really more a problem for you personally not with the language as a whole imo

leaden vessel
#

Heck, suppose I'm not the right person for the job. I've seen enough experienced C++ developers go to Rust and eventually actually understanding its benefits. I don't need to be the one saying stuff like that, I just don't like misleading statements or ones that are just plain wrong

quick bough
#

because clearly we are capable of writing complex software in C++ without a memory issue every 2 seconds

leaden vessel
#

Certainly not every 2 seconds, more like 1 out of 1000 lines of code for Google devs

#

Maybe a bit less than that if you follow modern practices even more than they do, idk I haven't checked, I just know they have this problem

#

I stopped doing C++ 5 years ago anyways

quick bough
#

I would be hardpressed to come up with a memory issue that isn't contrived

#

but yeah I can only speak on my own experience

#

which is in pure C++ codebases with a very good foundation

leaden vessel
#

I will concede that essentially making your own ecosystem and having better foundations outside of C++'s old legacy does help a lot
That's what raddebugger and Handmade Hero do, though in C and not C++

quick bough
#

and I do have a little secret trick: if there is an access violation, we can just catch it and continue execution after changing the registers a little 😉

quick bough
#

not having to worry about having to free resources is a huge gain alone

#

anyway, I do have to "lock in" now... I'm trying to interact with a HID device and need to actually get to parsing the damn data

#

I'll let you know if I run into any memory safety problems 😛

leaden vessel
quick bough
#

I don't mean literal free, you might need to dtor some resources or whatever...

#

but also no matter how you allocate memory, you would still need to free that memory in some way

#

(unless you're a GC, then you can just leak it and call it a strategy, I guess)

leaden vessel
quick bough
#

well yeah of course they don't use RAII, it's C after all 😄

leaden vessel
#

They use arenas instead, for group allocations

quick bough
#

Cool

#

The thing that RAII does is that it frees resources once they're out of scope

#

It's basically what you're used to with Rust

leaden vessel
#

yes

#

I know xd

quick bough
#

Surely they have some resources that do need deallocation/freeing/whatever

#

and because it's C, they have to do that manually

#

that's gotta be quite the pain, I imagine

leaden vessel
#

The argument goes that when you use arenas and allocate things in groups, lifetimes and resource management become trivial

quick bough
#

RAII is very useful for abstraction imo, so much less to think about, because you can just trust it all gets dtored/freed/whatever

leaden vessel
#

Can you give me an example?

quick bough
#

🙄

leaden vessel
#

That way I can contrast it with an arena equivalent

quick bough
leaden vessel
#

Tree structures are just nodes referencing each other in the same arena in their paradigm

quick bough
#

arenas don't avoid needing to free tho

leaden vessel
#

Yeah, you just arena.free_all() and you don't have to worry about freeing nodes since everything gets freed

#

It's also just writing to one pointer

quick bough
#

that's a huge yikes

#

this only works if a ton of guarantees are given by the nodes

leaden vessel
#

The nodes just need to be in the same arena

#

Nothing else is needed

quick bough
#

no, if the nodes own any resource, e.g. a file handle, you can't just free this node

#

you need to let this node know that it needs to relinquish its resources

leaden vessel
#

You're still thinking in RAII

quick bough
#

and then you can free it

leaden vessel
#

You don't have objects that just own resources in this paradigm

#

Resource management is done differently

quick bough
#

if the node doesn't give this guarantee, you have a leak

quiet root
#

i hate to break this up but this has moved far away from wooting related dev stuff to just general discussions about languages

leaden vessel
#

ah shit that's true

quick bough
#

it do be like that sometimes tho

leaden vessel
#

At this point I'll just say you can ask them how they do it on their server and I'll stop talking about this dawae

#

or something

quiet root
#

yes

#

tech is the best for very general discussions like this that just relate to well tech

quick bough
#

people are already having a conversation in there 🙂

#

Honestly, I'm kinda impressed wooting's analogue input is so consistent

#

some of these I'm trying have some weird input issues where sometimes they just report as 0.2mm down

#

or don't report all the way down to 4mm instead stopping at like 3.8

floral crane
#

I haven't even touched the analog sdk or anything that uses it other than the built-in effects and gamepad lol

quick bough
#

I need to add support for more analogue keyboard vendors

#

Really feels like a pointless battle to fight to begin with at this point

#

but maybe these things just need time

floral crane
#

can you use the rgb sdk and analog sdk at the same time from the same process? like can I read analog state and send rgb updates? If I can I could use the analog sdk to read the fn key

quick bough
#

yes

#

Another one for the pile

#

Despite the inaccuracies with some of the keys, tho, I love the clickyness, reminds me of the original Wooting Two cat_sob

vestal stump
#

can i somehow do an profile to main so when i start my pc is autoselects this one profile?

kind ginkgo
#

It'll always start with the first one

vestal stump
cyan saddle
#
/** @brief Reset all colors on keyboard to the original colors.

This function will restore all the colours to the colours that were originally
on the keyboard.

@ingroup API

@returns
Return true (1) if the keyboard is reset
*/
WOOTINGRGBSDK_API bool wooting_rgb_reset_rgb(void);

/** @brief Reset all colors on keyboard to the original colors.

This function will restore all the colours to the colours that were originally
on the keyboard and closes the keyboard handle. This function should always be
called when you close the application.

@ingroup API

@returns
Return true (1) if the keyboard is reset
*/
WOOTINGRGBSDK_API bool wooting_rgb_close(void);
WOOTINGRGBSDK_API bool wooting_rgb_reset(void);

What's going on with this undocumented function?

quick bough
#

Given the way it's spaced, I'd say it's an alias

#

Quick look at the source confirms that

weary fern
#

Hello, Can I try to add wooting SDK to my own pcb and try to make it work with wootility?

quick bough
#

Uhh, no, the Wootility is exclusively for Wooting keyboards.

quick bough
# quick bough Another one for the pile

The most you could do as a keyboard vendor is provide a plugin for the Wooting Analog SDK so any applications using it can also be used with your keyboard, similar to what I did here.

quick bough
#

Which is funny because controller users never noticed or cared. I think with an analogue keyboard, tho, you expect far more of an impact because every. single. input. is analogue.

cyan saddle
quick bough
#

Why weird?

cyan saddle
#

You can have that be exported in the library itself without exposing it in the headers. It seems like something was renamed.

balmy iron
#

I imagine it was done like that to not break any existing code, whatever that might be

quick bough
#

or they just wanted to provide this alias 😄

bright valley
#

What exactly does tacheon mode do?

#

Is it overclocking the processer on it? or

quick bough
#

Tachyon mode optimizes your keyboard for input speed. When enabled, every keypress responds as fast as possible. The RGB effects are disabled and the brightness is soft capped for an optimal result. Analog stability might be affected.

bright valley
#

and maintain polling rate etc.?

quick bough
#

embassy?

bright valley
quick bough
#

I don't see how using Rust on the firmware would help anything in regards to speed

#

They very very likely use C for the firmware 😄

bright valley
#

and was wondering why they don't just do that by default?

quick bough
#

Wooting will not tell you their trade secrets obviously

bright valley
#

obviously, just taking a guess ig as to what goes on with tachyon mode lol

quick bough
#

At least part of tachyon mode, tho, is that the keyboard/firmware does less non-input stuff

#

So, RGB effects would obviously be wasting CPU cycles on "irrlevant" stuff, hence it gets disabled

bright valley
#

That's kind of what i was talking about with embassy, you could have the tasks like input stuff be above everything else to priortize that

quick bough
#

Reallistically, will you notice 1-2ms of latency? Absolutely not. 😄

bright valley
#

and help the cpu cycles

quick bough
#

If I had a cent for every time a Rust programmer talked like they knew programming, it would still not make up for the frustration I feel. I should get at least $10 instead of only a cent.

#

Not like I know much about programming a keyboard's firmware either, but the simple truth is that your CPU either does something or it doesn't

#

And doing something takes time

#

However little time that may be

#

Also just Rust alone is generally considered a slower language (to C and C++, albeit less so) because it does also have some more runtime overhead

#

Again, realistically, does this time overhead matter?

#

If you're Wooting and there's people with solenoids and whatnot kind of equipment absolutely nit-picking your product, then maybe it does...

bright valley
bright valley
quick bough
#

You're just doing too much high-level programming

bright valley
#

Probably

quick bough
#

Try writing a scheduler yourself, it's actually not that hard

bright valley
#

The only embedded experience I have is working with drones, etc. So I could be pretty wrong in what I assumed

quick bough
#

So, I do assume the reason why RGB is limited is obviously for best possible functionality

bright valley
quick bough
#

but the reason why this feature exists to begin with... it's just for that kind of person

#

hence why it's not the default

bright valley
#

yea

bright valley
#

lmao discord ;-;

quick bough
#

So true

#

There is something kind of hilarious to me about people releasing a keyboard on Github

#

Like yeah bro just get this PCB printed and put it in a case cat_sob

#

Anyway, I was familiar with the QMK project (and the related VIA protocol/interface/whatever), and this seems to be kind of a Rust version of QMK?

#

My disappointment on that front is that QMK is only focused on digital input which is almost too boring to even pay attention to

#

Like wow just read some I/O pins then report their values over USB cat_yawn

bright valley
#

just that they named it RMK to get more views

#

because theres ZMK a rewrite of it with bluetooth support imo a propietary 2.4ghz is much better than BLE support

bright valley
#

Well at least they should, if keychron would stop violating gpl 3.0 ;-;

quick bough
#

Yeah... that's the part that I'm disappointed about.

#

I'm a disappointed owner of a Keychron Q1 HE

#

Honestly, Drunkdeer keyboards are much better and they're not violating GPL 😄

#

but, still, no open-source firmware for analogue keyboards...

bright valley
#

I really wanted a knob on my keyboard :(

#

lmao its the only reason i didn't buy a zoom75

quick bough
#

yeah ikr, it's all over their store page

#

even on the damn package for it

bright valley
#

i got the QMK devs to harass them for it

#

and now they say they'll give it in october

#

but like why october? why not now????

#

what changes in october lmao

quick bough
#

I think they're embarrased by how bad their code is

bright valley
#

Like thats not how GPL works my friend

quick bough
#

Well, what are laws if not friendly notes? 😄

#

If the QMK folks aren't gonna sue before September...

bright valley
#

IMO do it with at least keychron ;-;

#

like sure qwertykeys will just avoid them etc.

#

but keychron? you can really get a lot of their customers to go away by being vocal about it

quick bough
#

Why is there a 'T' in the keychron icon tho

bright valley
#

why not

quick bough
#

All the hype around snap tap is insane

#

I don't envy the QMK maintainers

bright valley
quick bough
#

Not least because they ship 300 MB executables and think it's okay

bright valley
bright valley
quick bough
#

because they think .NET 6 is greater than .NET 4.5

#

(now they have to ship the entire runtime because it's not shipped with the OS)

quick bough
#

like everyone just wants to have the snap tap

#

but obviously filthy digital keyboard users will only be able to get a nullbind

#

which, from what I hear, is decent enough

#

but not like there weren't already scripts for this like 20 years ago

#

except now everyone feels like because the cheat is on the hardware it's suddenly okay

strong siren
#

isnt snap tap a purely digital feature?

quick bough
#

not really?

bright valley
#

it's just not out in the main thing yet

strong siren
#

last input priority socd handling doesn't really require analog input

#

the way razer does it, they don't even use rapid trigger to their advantage

bright valley
strong siren
#

at that point it's just adjustable actuation point last input priority socd handling

#

that's a mouthful lol

#

rappy snappy is analog specific but it's much less noticeable from what i read here

quick bough
#

well, I think what razer did is slightly more complex than last input priority

bright valley
#

is it?

strong siren
#

in what way?

quick bough
#

but yeah, you are right, in principle you can do this SOCD resolution digitally

strong siren
#

i might be misunderstanding what they did so I'm genuinely asking

quick bough
strong siren