qmk_firmware
Open-source keyboard firmware for Atmel AVR and Arm USB families (by CalcProgrammer1)
OpenRGBEffectsPlugin
By OpenRGBDevelopers
qmk_firmware | OpenRGBEffectsPlugin | |
---|---|---|
62 | 24 | |
493 | - | |
1.4% | - | |
0.0 | - | |
3 months ago | - | |
C | ||
GNU General Public License v3.0 only | - |
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
qmk_firmware
Posts with mentions or reviews of qmk_firmware.
We have used some of these posts to build our list of alternatives
and similar projects. The last one was on 2022-12-04.
-
this is literally a Keychron V3.
Keychron C1 TKL Board with non-RGB backlighting; foam, tape modded and flashed with SonixQMK Tecware PBT OEM Keycaps (White and Grey) with the Keychron C1's orange ESC key which is ABS Akko Jelly Purple Tactiles with the modifiers (except both Left and Right shift) being Akko Rose Red Linears Didn't bother to lube them, I'm just lazy and don't have a switch tray :D Stock plate-mount stabs lubed with Krytox 205g0 and Dielectric Grease
-
I bought a k2v2 white backlight, non hot swappable, plastic frame for $40. Should I have gone for a better keyboard? I’m a student and this is my first mechanical keyboard. The RK84 also seemed like a good option but it’s $20 extra and I read reviews where people said typing isn’t great on it.
I think you should give it a while and get used to it and pay attention to https://github.com/SonixQMK/qmk_firmware and in particular this PR https://github.com/SonixQMK/qmk_firmware/pull/318 which will bring QMK/VIA support to the white backlight version of the K2V2. Something you will never get with the RK84.
-
custom firmware for C1
In theory you could use SonixQMK. But this will require you configure the source code, compile it and then download it to the device. You could then use the Via utility to reassign the keys. This might work, but I have found Sonix QMK to unstable in the long term on some Keychron keyboards. No one is going to tell you how to do this with a simplified complete set of instructions. You may get stuck with a keyboard that doesn't work and if you aren't experienced or don't have the tools there may be no way back.
-
K6 vs K6 Pro (QMK/VIA)
Well not quite... While the K6 pro supports qmk and via out of the box, there is also support for the normal K6 within this fork of QMK https://github.com/SonixQMK/qmk_firmware
-
K2 qmk firmware
How can I compile and flash the qmk software from here(https://github.com/SonixQMK/qmk_firmware) onto my Keychron K2?
-
Built my first budget keeb! GMMK 1 Compact
Just as an FYI, if you're ever adventurous, if you have a rev2 or rev3 GMMK Compact, you can load QMK/VIA from the Sonix Branch.
-
How safe or reliable is using kbfirmware.com in 2022?
SonixQMK
-
Replace MCU on keychron K2 V2.
The SonixQMK fork has support for Keychron K2. I'm not sure if this is for the V2 or not, but it could be worth checking out.
-
Jumped inside the rabbit hole. Keychron K2V2 Brown Hot - Swappable. My first mechanical keyboard thanks to Meckeys
Yup ! It's supported : https://github.com/SonixQMK/qmk_firmware/tree/sn32_master/keyboards/keychron/k6
-
Best means to remap K3a1 on Linux?
While there is QMK for the K3 https://github.com/SonixQMK/qmk_firmware/tree/sn32_master/keyboards/keychron/k3 it seems to be for the RGB variant only while your K3A1 seems to be white backlight according to https://www.keychron.com/blogs/production/project-update-for-the-k3-pre-orders-1
OpenRGBEffectsPlugin
Posts with mentions or reviews of OpenRGBEffectsPlugin.
We have used some of these posts to build our list of alternatives
and similar projects. The last one was on 2022-08-21.
-
Prompts to get AI chatbots to make really cool shaders for OpenRGB.
Pormpt 1: I want you to act as a Shader developer. I will provide some details about the design of an shader, (which i may refer to as an RGB effect, RGB profile or or something similar. It will be your job to come up with creative ways to visualize my ideas. This could involve creating cool effects with unique designs. The shader will be vizualised on Internal computer RGB devices and RGB phepirals, such as RGB ram and RGB keyboards, the shaders should be optimized to work with that. The shader has to work in OpenRGB, i will provide some examples of shader code that works in openRGB as your knownledge on that already is very limited. Here are some code that works in OpenRGB: This is a shader that has beach like colors: // https://www.shadertoy.com/view/XtGSDz #define horizontal true float sigmoid(float x) { return 1.0 / (1.0 + pow(2.71828, -x)); } void mainImage( out vec4 fragColor, in vec2 fragCoord ) { vec2 coords = horizontal ? fragCoord.yx : fragCoord.xy; vec2 res = horizontal ? iResolution.yx : iResolution.xy; vec2 uv = coords.xy / res.xy; vec4 water = vec4(0.2, 0.3, 0.8, 1.0); vec4 sand = vec4(0.75, 0.6, 0.4, 1.0) * 1.2 + 1.0/14.0; sand = mix(sand, sand/4.0, 1.0 - sigmoid(uv.x*10.0 - 6.0)); water += sin(uv.x) * cos(uv.y) / 2.0; water += 1.0 / 10.0; water += sin(uv.x) * cos(uv.y); uv.x += sin(uv.y * 7.0) / 20.0 * sin(iTime); uv.x += sin(uv.y * 3.0) / 10.0 * cos(iTime); vec4 wet_sand = mix(sand, vec4(0.8, 0.9, 0.8, 1.0), 1.0 - sigmoid(uv.x*10.0 - 4.0)); fragColor = mix(water, wet_sand, pow(sigmoid(uv.x*10.0 - 3.0), 2.0)); } - This is a shader with a beam effect: #define beam_color vec4(1.,0.,1.,1.) #define dir -1. void mainImage( out vec4 fragColor, in vec2 fragCoord ) { vec2 uv = fragCoord.xy / iResolution.xy; float y = mod(dir * iTime, 1.5); float str = -pow((uv.y - y) * 110., 2.) + .8; uv.x -= clamp(str * .01, 0., 1.); float beam = pow(1. - pow(abs(uv.y - y), .3), 3.); fragColor = beam * beam_color; } - This shader has an effect with multiple Beams: #define PI 3.1415926535897932384626 float time = iTime; vec2 resolution = iResolution.xy; //f0:start zoom: float f0 = 0.5; //f1:vertical spread: float f1 = 0.05; //f2:horizontal spread: float f2 = 0.05; vec3 color = vec3(0.0, 0.3, 0.5); void mainImage( out vec4 fragColor, in vec2 fragCoord ) { vec2 p = (gl_FragCoord.xy * 2.0 - resolution) / min(resolution.x, resolution.y) * f0; float f = 0.0; for(float i = 0.0; i < 100.0; i++) { float s = sin(time + i * PI / 4.0 ) * 0.8 +f1; float c = cos(time + i * PI / 5.0 ) * 0.8 +f2; f += 0.001 / (abs(p.x + c) * abs(p.y + s)); } fragColor = vec4(vec3(f * f * color), 1.0); } - This shader is named bubblegum and has like a flowing space in the middle that changes colors: // forked from https://www.shadertoy.com/view/4tl3Rn float roundLookingBlob(vec2 fragCoord, vec2 tPos, float r) { vec2 pos = fragCoord.xy/iResolution.yy - vec2(0.5); pos.x -= ((iResolution.x-iResolution.y)/iResolution.y)/2.0; return pow(max(1.0-length(pos-tPos), 0.0) , r); } void mainImage( out vec4 fragColor, in vec2 fragCoord ) { float v = 0.0 + roundLookingBlob(fragCoord * 0.2,vec2(sin(iTime)* 2.0, cos(iTime)*0.004), 10.0) + roundLookingBlob(fragCoord,vec2(sin(iTime*0.6)*0.2, cos(iTime)*0.3), 7.0) + roundLookingBlob(fragCoord,vec2(cos(iTime*0.8)*0.3, sin(iTime*1.1)*0.04), 5.0) + roundLookingBlob(fragCoord,vec2(cos(iTime*0.2)*0.2, sin(iTime*0.9)*0.05), 8.0) + roundLookingBlob(fragCoord,vec2(cos(iTime*1.2)*0.2, 2.0 *sin(iTime*0.9)*0.05), 8.0) + roundLookingBlob(fragCoord,vec2(cos(iTime*0.3)*0.4, sin(iTime*1.1)*0.4), 5.0) + roundLookingBlob(fragCoord,vec2(sin(iTime*0.6)*0.9, cos(iTime)*0.3), 7.0) + roundLookingBlob(fragCoord,vec2(sin(iTime*0.6)*0.3, cos(iTime)*0.8), 7.0) + roundLookingBlob(fragCoord,vec2(cos(iTime*0.3)*0.9, sin(iTime*0.1)*0.4), 3.0) ; v = clamp((v-0.5)*1000.0, 0.0, 1.0); float r = -1.0 * 1.0 *sin(iTime) - 2.0* cos(1.0 * iTime) * fragCoord.x / iResolution.x * fragCoord.y / iResolution.y; float g = 0.0 - 0.5 * cos(2.0 * iTime) * fragCoord.y / iResolution.y; float b = 4.0 + sin(iTime) - g + 0.8; fragColor = vec4(r * v, v * g, v * b, 0.0); } - This shader is named bubbles and gives some goood funny rainbow bubbles: float GetCircle(vec2 uv, vec2 position, float radius) { float dist = distance(position, uv); dist = smoothstep(dist - 1.2, dist, radius); return dist * dist * dist; } void mainImage( out vec4 fragColor, in vec2 fragCoord ) { vec2 uv = vec2(fragCoord.xy - 0.5 * iResolution.xy) / iResolution.y; float pixel = 0.; vec3 positions[8]; float Time = iTime / 2.; positions[0] = vec3(tan(Time * 1.4) * 1.3, cos(iTime * 2.3) * 0.4, 1.22); positions[1] = vec3(tan(Time * 3.0) * 1.0, cos(iTime * 1.3) * 0.6, 0.12); positions[2] = vec3(tan(Time * 2.1) * 1.5, cos(iTime * 1.9) * 0.8, 0.4); positions[3] = vec3(tan(Time * 1.1) * 1.1, cos(iTime * 2.6) * 0.7, 0.15); positions[4] = vec3(tan(Time * 1.8) * 1.1, cos(iTime * 2.1) * 0.5, 0.25); positions[5] = vec3(tan(Time * 1.1) * 1.2, cos(iTime * 1.3) * 0.2, 0.15); positions[6] = vec3(tan(Time * 1.7) * 1.4, cos(iTime * 2.4) * 0.3, 0.11); positions[7] = vec3(tan(Time * 2.8) * 1.5, cos(iTime * 1.1) * 0.4, 0.21); for (int i = 0; i < 8; i++) pixel += GetCircle(uv, positions[i].xy, positions[i].z); pixel = smoothstep(.8, 1., pixel) * smoothstep(1.5, .9, pixel); vec3 col = 0.5 + 0.5*cos(iTime+uv.xyx+vec3(0,2,4)); fragColor = vec4(vec3(pixel) * col, 1.0); } - This shader is named cartoon-waves and is like a wave effect with red and blue colors: // https://www.shadertoy.com/view/ldjBRw float fast_tanh(float x){ float x2 = x * x; float a = x * (135135. + x2 * (17325. + x2 * (378. + x2))); float b = 135135. + x2 * (62370. + x2 * (3150. + x2 * 28.)); return a / b; } void mainImage(out vec4 O, in vec2 U) { O.xyz = iResolution; float y, i=-15., k=O.y, c; U /= k; while (i++ < 15.) c = exp(-.1*i*i), y = (.08 + .02 * sin(iTime*2.+i*2.)) * exp(-.01*i*i) * sin(iTime*2. + U.x / (.2-.1*c) + i*4. ) - i/2. + 1.5 - U.y, O += max(0., 1.-exp(-y*k*c) ) * ( fast_tanh(40.*y) * (0.5 + .4 * sin(iTime+i+vec4(0,1,1,0))) - O ); } - This shader is light blue and has a pink bubble that glows up in a breathing effect: #define speed 1.5 #define stop 1.0 #define color1 vec3(1.0,0.0,1.0) #define color2 vec3(0.0, 1.0, 1.0) void mainImage( out vec4 fragColor, in vec2 fragCoord ) { vec2 uv = 2.0 * (fragCoord.xy / iResolution.xy) - 1.0; fragColor = mix(vec4(color1, 1.0), vec4(color2, 1.0), (uv.x * uv.x + uv.y * uv.y) * stop + sin(iTime * speed)); } - This shader is just a pink one where it gets blue in the sides some times and it happens fast: #define background vec4(0,0,1,1) #define animation_speed 10. #define spread 1.0 #define rotate false vec2 rotateUV(vec2 uv, float rotation, float mid) { return vec2( cos(rotation) * (uv.x - mid) + sin(rotation) * (uv.y - mid) + mid, cos(rotation) * (uv.y - mid) - sin(rotation) * (uv.x - mid) + mid ); } void mainImage( out vec4 fragColor, in vec2 fragCoord ) { vec2 uv = (fragCoord.xy / iResolution.xy - 0.5) * 2.* sin(animation_speed * iTime); if(rotate) { uv = rotateUV(uv, iTime, 0.); } fragColor = background+vec4(pow(spread - uv.x, 3.), 0.,0.,1.); } - This shader just shifts between colors and black: // https://www.shadertoy.com/view/Mdf3W8 float bump(float x) { return abs(x) > 1.0 ? 1.0*x : x ; } void mainImage( out vec4 fragColor, in vec2 fragCoord ) { vec2 uv = (fragCoord.xy / iResolution.xy); float timeScroll = iTime* 1.0; float sinusCurve = sin((uv.x*2.0+timeScroll)/0.5)*0.3; uv.y = (uv.y * 2.0 - 1.00) + sinusCurve; float line = abs(0.1 /uv.y); vec3 color = vec3(0.0); color.x = bump( sin(iTime)*(uv.x - 1.0)); color.y = bump( sin(iTime)*(uv.x - 0.0)); color.z = bump( sin(iTime)*(uv.x - 0.0)); fragColor = vec4(color, 0.0); } - This one is some pink, blue and orange like waves ( i wanna note that i dont think mouse interractions work in OpenRGB) : //--------------------------------------------------------- // Shader: ColoredWaves.glsl // original: http://glslsandbox.com/e#5398.8 // added some mouse interaction //--------------------------------------------------------- float f1 = 30.0;// scale float f2 = 15.0; // size float f3 = 1.5; // gaps float f4 = 0.5; // position float f5 = 0.25; //shape modifier y float f6 = 0.25; //shape modifier x float f7 = 2.0; // amount // color channels multipliers float r = 1.0; float g = 1.0; float b = 1.0; void mainImage( out vec4 fragColor, in vec2 fragCoord ) { float scale = iResolution.y / f1; float ring = f2 + floor(- 5.5* 2.0); float radius = iResolution.x; float gap = scale * f3; vec2 pos = fragCoord.xy - iResolution.xy * f4; float d = length(pos); // Create the wiggle d += (sin(pos.y * f5 / scale + iTime) * sin(pos.x * f6 / scale + iTime * 0.5)) * scale * f7; // Compute the distance to the closest ring float v = mod(d + radius / (ring * 2.0), radius / ring); v = abs(v - radius / (ring * 2.0) ); v = clamp(v - gap, 0.0, 1.0); d /= radius; vec3 m = fract((d - 1.0) * vec3(r * ring * -0.5,g * -ring,b * ring * 0.25) * 0.5); fragColor = vec4(m*v, 1.0); } - This one is a bunch of neon lines in a boxed shape and the point of view are inside the box: //forked from https://www.shadertoy.com/view/4tlGRX #define freq 16.0 #define fov 0.5 #define background vec3(0.,0.,0.) mat2 mm2(in float a){float c = cos(a), s = sin(a);return mat2(c,-s,s,c);} vec3 tex(in vec2 p) { return vec3(1.)*smoothstep(0.1, 1.05, max(sin((p.x)*freq),sin((p.x)*freq))); } vec3 cubeproj(in vec3 p) { vec3 x = tex(p.zy/p.x); vec3 y = tex(p.xz/p.y); vec3 z = tex(p.xy/p.z); x *= vec3(1,0,0)*abs(p.x) + p.x*vec3(0,1,0); y *= vec3(0,1,0)*abs(p.y) + p.y*vec3(0,0,1); z *= vec3(0,0,1)*abs(p.z) + p.z*vec3(1,0,0); p = abs(p); if (p.x > p.y && p.x > p.z) return x; else if (p.y > p.x && p.y > p.z) return y; else return z; } void mainImage( out vec4 fragColor, in vec2 fragCoord ) { vec2 p = fragCoord.xy / iResolution.xy; vec2 p2 = fragCoord.xy/iResolution.xy-0.5; p2.x*=iResolution.x/iResolution.y; p2*= fov; vec3 ro = vec3(0.); vec3 rd = normalize(vec3(p2,-0.5)); mat2 mx = mm2(iTime / 2.0); mat2 my = mm2(iTime / 2.0); ro.xz *= mx;rd.xz *= mx; ro.xy *= my;rd.xy *= my; vec3 col = cubeproj(rd)*1.1; col.x *= sin(iTime + p.x+ p.y); col.y *= sin(1.23*iTime + p.x + p.y); col.z *= sin(1.57*iTime + p.x+ p.y); fragColor = vec4(background + abs(col), 1.0 ); } - This one is an X-factor like effect with some crosses from all sides moving into the middle and all elements changes colors: #define PI 3.14159 #define TWO_PI (PI*2.0) #define FREQ 2.0 #define time -iTime // shape #define x00 1.0 #define x01 1.0 #define x10 1.0 #define x11 1.0 void mainImage( out vec4 fragColor, in vec2 fragCoord ) { vec2 uv = (fragCoord.xy / iResolution.xy -0.5) * FREQ; float a = atan(uv.y,uv.x); mat2 hyper = mat2(-cos(x00*a), sin(x01*a), sin(x10*a), cos(x11*a)); uv = abs(mod(uv*hyper+time,vec2(2.0))-1.0); vec3 color = vec3(0.5+0.5* cos(uv.y+time*0.5), 2.*uv.x, 0.5+0.5*sin(uv.y+time*0.3)); fragColor = abs(vec4(color,1.0)); } - This one is pink moving sine with a blue background: #define FREQ_MOD 4.0 #define TIME_MOD 2.0 #define AMP_SCALE 0.5 #define THICKNESS 0.2 #define wave vec3(1.0,0.0,1.0) #define background vec3(0.0,0.0,1.0) const float PI = 3.14159265359; const float DBL_PI = PI * 2.0; void mainImage( out vec4 fragColor, in vec2 fragCoord ) { vec2 uv = fragCoord.xy / iResolution.xy; uv.y = -((1.0 - uv.y) - 0.5); float ampMod = ((sin(FREQ_MOD*iTime) + 0.25) + 1.0) / 2.0; vec2 ptOnWave = vec2(uv.x, sin((uv.x * DBL_PI) + FREQ_MOD * iTime * TIME_MOD) * (AMP_SCALE * ampMod)); float distToPt = length(uv - ptOnWave); float c1 = floor(((1.0 + (THICKNESS)) - distToPt)); float c2 = 1.0 - c1; fragColor = vec4( c1*wave + c2 * background, 1.0); } - This is the simplest one that is designed for customization and it is just some colors that shift fast: /* Make your own shader program. Make sure to read the documentation. https://gitlab.com/OpenRGBDevelopers/OpenRGBEffectsPlugin/-/blob/master/Effects/Shaders/README.md */ void mainImage( out vec4 fragColor, in vec2 fragCoord ) { float r = abs(sin(2.0 * iTime)); float g = abs(sin(3.0 * iTime)); float b = abs(sin(7.0 * iTime)); fragColor = vec4(r, g, b, 1.0); } - This one is some moving/distorting pink/light blue mosaic: #define color1 vec3(1.0,0.0,1.0) #define color2 vec3(0.0,1.0,1.0) #define divs 2.0 const float pi = 3.14159; void mainImage( out vec4 fragColor, in vec2 fragCoord ) { vec2 div = vec2( divs, divs * iResolution.y / iResolution.x ); vec2 xy = div*(fragCoord.xy / iResolution.xy - 0.5); vec2 sxy = sin(pi*vec2((xy.x + xy.y)*(xy.x - xy.y)*0.5 - iTime*1.0, xy.x*xy.y)); vec2 b = fwidth(sxy)*0.7071; vec2 pxy = smoothstep( -b, b, sxy ); pxy = 2.0*pxy - 1.0; float c1 = sqrt( 0.5 * (pxy.x * pxy.y) + 0.5 ); float c2 = 1.0 - c1; fragColor = vec4( c1*color1 + c2 * color2, 1.0); } i will make my first request after this message, i want you to not write anything else than the code. Your only output should be shader code, NOTHING ELSE. DONT start by making a shader, just simply say youre ready to comply with my request, Its important that you make the shaders work, if the shader dosent work i will give you the error codes that come in OpenRGB and its then your job to make the shader work. Shaders reacting to keyboard or mouse input is impossible to make in OpenRGB and you should inform me about that if i make a request to get my shader react to mouse or keyboard input. Shaders reacting is possible in OpenRGB and can be really cool, you dont have enough knowledge about thoose shaders so if i ask you to make a audio reactive shader (which i may refer to as a music reactive shader) you have to ask me for example code that works in OpenRGB. You cant make a music reactive shader without more information about how to do it from me. Dont give any examples of good ideas to make, just say youre ready after i send this, then i will in my next message give you instructions on what to do, what you can tell me is how you would like the instuctions so you have the best chance to make the shaders.
- Can't find my Lian Li case's front RGB strip in OpenRGB
-
Downloaded build 0.7 and I am not able to adjust Wave speed on Razer Hunstman Mini
Effects plugin
-
Begone iCue- the Legion Slim 7 keyboard can now be controlled by OpenRGB.
You will need the Effects plugin to apply effects, which you can find here.
-
New to openRGB. Install effects Plugin
OpenRGBDevelopers / OpenRGBEffectsPlugin · GitLab
-
msi center is confused?
I have had OpenRGB setting a static color for my board only. I go with Corsair when I can, just because I like iCue. I use https://gitlab.com/OpenRGBDevelopers/OpenRGBEffectsPlugin while in Linux though, and it's not horrible.
-
First experience with this program, absolutely negative so far
Download the Effects plugin and add it to OpenRGB, you will get a new tab with bunch of new effects.
- Corsair K70 Keyboard Effects
- How can I control the rgb animations of my Arctic P12 ARGB?
-
6900XT Aorus Master - can't control with Aorus or RGBFusion
I just use OpenRGB with my X570 Aorus Ultra board and it works great, especially with the effects plugin. It's way more configurable and has way better patterns than RGB Fusion, and it also works with a ton of other hardware (like keyboards, mice, GPUs) from all different manufacturers making it the only sane way to have linked/consistent RGB lighting. Having to use 3 different pieces of equally terrible RGB settings utilities is the worst.
What are some alternatives?
When comparing qmk_firmware and OpenRGBEffectsPlugin you can also consider the following projects:
OpenRGB
redox-keyboard - Ergonomic split mechanical keyboard
Artemis - Provides advanced unified lighting across many different brands RGB peripherals
qmk_tool - QMK Stuff
OpenRGB
kmonad - An advanced keyboard manager
OpenRGBVisualMapPlugin
sonix-flasher
keychron-k8
QMK-on-K6 - Instructions for running QMK on Keychron K6 RGB
qmkbuilder - Online GUI for QMK Firmware
qmk_firmware vs OpenRGB
OpenRGBEffectsPlugin vs OpenRGB
qmk_firmware vs redox-keyboard
OpenRGBEffectsPlugin vs Artemis
qmk_firmware vs qmk_tool
OpenRGBEffectsPlugin vs OpenRGB
qmk_firmware vs kmonad
OpenRGBEffectsPlugin vs OpenRGBVisualMapPlugin
qmk_firmware vs sonix-flasher
qmk_firmware vs keychron-k8
qmk_firmware vs QMK-on-K6
qmk_firmware vs qmkbuilder