pixeltris / gk6x Goto Github PK
View Code? Open in Web Editor NEWConfigure keys, macros, and lighting on GK6X keyboards (GK64, GK84, GK61, etc)
License: Other
Configure keys, macros, and lighting on GK6X keyboards (GK64, GK84, GK61, etc)
License: Other
Attempting to run this program (the binary from the releases section) gives me a warning for Trojan:Win32/Wacatac.C!ml - is this a false positive?
ok, so my keyboard reports as "GK64 RGB V1" (model ID is 656801802) and I do everything through the localhost GUI thing
after playing around with the GUI thing I uuh noticed a couple of issues:
What I CAN do is:
my guess is something is wrong regarding indexing of the layers, cuz i noticed there are multiple versions of the GK64 and maybe the configs were copy-pasted throughout the duplicates without further investigation
couple misc questions:
also sorry for bothering you with so many issues, I just want to put all of the software problems to end
The code is currently not licensed in any way.
It would be useful if you would provide a license.
is it possible to make a gui for configuration of everything? like the 1st party software (if it works that is)
i have a gk64 btw
Thank you very much. Stock software just stopped remapping delete key, and I had no way to unlock comp. How do I buy you a coffee good sir?
Hi pixeltris, thanks a lot for a great project. I'm trying to set up an alternate Fn Key functionality by using non-function keys in Layer1. So I use LCtrl to go to Layer1 and map all the non-function keys which have a function in Base layer to that same function. That worked. I then had the idea of writing a macro to press the key and return to the base layer by pressing the Layer1Button. I also wanted to remap quotes key to LWin. The key press works but the return to base layer doesn't. This is my config:
[Base]
LCtrl:Layer1Button
[Macro(QuotesBase)]
Press:Quotes:100
Press:Layer1Button
[Base]
Quotes:LWin
[Layer1]
Quotes:Macro(QuotesBase)
[Layer1]
W:Layer1Button
I've tried various combinations of Layer1Button and W key but not sure why it doesn't work. Can you suggest something else?
Thanks
Pat
...or is it also hardcoded?
I put this in UserData/"keyboard id here".txt
[Lighting(Star lighting,Base)]
[Lighting(Flame,Driver)]
[Lighting(Full Red light,Layer1)]
[Lighting(Full Green light,Layer2)]
[Lighting(Full Blue light,Layer3)]
[FnLayer1,FnLayer2,FnLayer3]
Q:DriverLayerButton
W:Layer1Button
E:Layer2Button
R:Layer3Button
then
used "map" in console
once done, I see Star lighting
did Fn+Q and I don't see the Flame pattern, I see blank
did Fn+W and I see Full Red light
same goes for Fn+E and Fn+R
I have a bad feeling you can't change any keys in the Driver layer, either.
also is the FnDriver layer a thing?
By default, before using the GK6X project, my keyboard's FnLayer1 had a cool separate color scheme i.e. On pressing Fn on Layer1, the lighting setup would change, to highlight the F1-F12 keys rather than the arrow keys on the default Layer1.
Is this possible to configure using GK6X?
I had tried something like [Lighting(Turquoise Light,FnLayer1)]
but it doesn't work.
When I open the program it's just black with a blinking cursor. The txt file UserData/YOUR_MODEL_ID.txt doesn't get generated.
I am completely new to GitHub. How do I run this to remap keys on macOS?
continuing my 'venture from #31, now I can't open the software, giving me this error
i... uhh... have no idea anymore
Hey,
I'm trying to learn how to use GK6X, and I don't know if my keyboard is acting weirdly or what, but I can't set any lightning on Base layer (it just doesn't work), Layer1/2/3 works just fine. Also I can't unmap it, if I try to run it, it says done but don't unmap anything.
I'm using pretty simple configs, as show:
[Lighting(Star lighting,Base)]
[Lighting(WASD static,Layer1)]
[Lighting(Full White Light,Layer2)]
[Lighting(GK61 Diffusion,Layer3)]
My Keyboard is: Connected to device 'GK61-RGB-V2' model:655491246 fw:v1.32
Thanks a lot for your awesome tool!
PS: Is it possible to use Fn+W for any mapping? I don't think so, but since it's on your sample.txt, maybe it works and I'm doing something wrong, i.e
[FnLayer3]
W:LCtrl+LAlt+Delete
Is it possible to, for example, map something else like '+' to Shift+4, instead of '$'?
Or is that something that is only possible on QMK boards?
I wanted to only "configure" the Programmer Dvorak's numbers section on one layer for practice.
Hi there Pixeltris,
I'm trying to give your software a go, I want to bind my keys to combinations of F24 + the key so I can remap my second keyboard using AutoHotKey, however if I download the released version, my Chrome, Edge and Windows native "anti-virus" are showing signs of virusses in the zip file. I'm assuming they are false positives. But is there something you can do about this?
Thanks!
I'm new to Visual Studio - are there instructions on running the program? I'm getting a null pointer error. Application output:
Loaded assembly: /Library/Frameworks/Mono.framework/Versions/6.4.0/lib/mono/gac/System/4.0.0.0__b77a5c561934e089/System.dll [External]
Loaded assembly: /Users/Peter/dev/GK6X/Build/HidSharp.dll [External]
Loaded assembly: /Library/Frameworks/Mono.framework/Versions/6.4.0/lib/mono/gac/System.Core/4.0.0.0__b77a5c561934e089/System.Core.dll [External]
Loaded assembly: /Library/Frameworks/Mono.framework/Versions/6.4.0/lib/mono/gac/System.Configuration/4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll [External]
Loaded assembly: /Library/Frameworks/Mono.framework/Versions/6.4.0/lib/mono/gac/System.Xml/4.0.0.0__b77a5c561934e089/System.Xml.dll [External]
[WARNING] Duplicate key 0x02004600 (keys.json)
[WARNING] Duplicate key 0x02000000 (keys.json)
Loaded assembly: /Library/Frameworks/Mono.framework/Versions/6.4.0/lib/mono/gac/Mono.Posix/4.0.0.0__0738eb9f132ed756/Mono.Posix.dll [External]
Thread started: HID System Events Job Manager #2
Thread started: HID Manager #3
Thread started: <Thread Pool> #4
Thread started: <Thread Pool> #5
Thread started: <Thread Pool> #6
Thread started: <Thread Pool> #7
Thread started: <Thread Pool> #8
Thread started: <Thread Pool> #9
Thread started: <Thread Pool> #10
Thread started: <Thread Pool> #11
Thread started: <Thread Pool> #12
Thread started: <Thread Pool> #13
Thread started: <Thread Pool> #14
Thread started: HID Reader #15
Thread started: HID Writer #16
Connected to device 'GK61 RGB??' model:655491117 fw:v1.18
Unhandled Exception:
System.NullReferenceException: Object reference not set to an instance of an object
at GK6X.Program.Main (System.String[] args) [0x000e2] in /Users/Peter/dev/GK6X/GK6X/Program.cs:74
[ERROR] FATAL UNHANDLED EXCEPTION: System.NullReferenceException: Object reference not set to an instance of an object
at GK6X.Program.Main (System.String[] args) [0x000e2] in /Users/Peter/dev/GK6X/GK6X/Program.cs:74 ```
Hi, I've configured the FnLayer1 with my remaps, but I want to enable this layer temporarily when holding some key. I've tried to use Backspace, but since I've remapped this key to ESC, I'm not able two keep these two behaviors(one-shot ESC, holdingTempLayer1) on the same key. There some way to configure this?
Thank you for providing this tool!
The X-Bows Knight keyboard (https://x-bows.com/) uses the same protocol, VID/PID, and presumably very similar firmware to the GK6X.
Windows drivers and firmware are available at https://x-bows.com/pages/software and might be of some interest.
Using the following patch, I'm able to communicate with the keyboard and remap most of the keys:
diff --git a/Build/Data/device/655491165/data/keymap.js b/Build/Data/device/656801808/data/keymap.js
similarity index 100%
copy from Build/Data/device/655491165/data/keymap.js
copy to Build/Data/device/656801808/data/keymap.js
diff --git a/Build/Data/device/modellist.json b/Build/Data/device/modellist.json
index 2bc006d..f8fd0af 100644
--- a/Build/Data/device/modellist.json
+++ b/Build/Data/device/modellist.json
@@ -105,4 +105,10 @@
"FWID": "0x90206412",
"Name": "GK64S RGB经典款",
"LEType": "0"
-}]
\ No newline at end of file
+},
+{
+ "ModelID": 656801808,
+ "FWID": "0x90216820",
+ "Name": "X-Bows",
+ "LEType": "0"
+}]
All of the "normal" keys work:
These five special keys don't work:
In addition, Fn seemingly can't be remapped, but I gather that's expected.
Note that by default:
I am a bit baffled by all of the different model-specific configuration files (though it seems like keymap.js is the only one that matters?) not to mention KeyValues.cs and keys.json.
How can I determine what internal keycodes correspond to the missing keys, and which files do I need to edit in order to assign the correct labels to the physical keys?
Hello, pixeltris.
Thank you for your time and effort that makes this keyboard more usable in other OSes.
Because we can't move the FN key(or copy the functionality to other key), the temporary switch layer workaround works great, except it has drawback.
You need to press the TempSwitchLayer FIRST before any modifier, for example if you want to type tilde/grave you need to press this in order TempSwitchLayer + Shift + Esc, won't work if you press Shift + TempSwitchLayer + Esc.
Any workaround for this? This is the only inconvenient left for me and i'm sure a lot of people want to move the FN key, at least for me it has to be on CapsLock especially on 60% keyboard.
I'm using GK61.
i uuh idk even how can an open source program be classified as a virus xd
anyone has ideas on what to do? I know that it's "not a virus" and all of that jazz
hello i've been playing with your tool for a bit and i was able to remap a few buttons successfully i've the model GK64
my keyboard came with a right alt instead of a right control (i don't know why) and i can't map it at all
it's forced to be alt here is my script
[Base,Layer1,Layer2,Layer3,FnLayer1,FnLayer2,FnLayer3]
RShift:Up
Left:Down
Down:Right
Up:RShift
Right:RAlt
RAlt:Left
also i tried to use RCtrl instead of RAlt if maybe it has the same address but also didn't work
I would like to remap Fn+Backspace (turn on/off lighting) to some other FN combination. But I cannot find key codes for lighting effects in the source code. Is it possible at all?
I'm getting this when trying to compile...
Program.cs(316,47): error CS0246: The type or namespace name 'KeyboardDevice' could not be found (are you missing a using directive or an assembly reference?)
Program.cs(321,47): error CS0246: The type or namespace name 'KeyboardDevice' could not be found (are you missing a using directive or an assembly reference?)
Program.cs(335,73): error CS0246: The type or namespace name 'KeyboardLayer' could not be found (are you missing a using directive or an assembly reference?)
(csc on macos)
macos catalina 10.15.5
i install mono brew install mono
then i run the program mono GK6X.exe
i see only this text
Connected to device 'GK64XS-RGB' model:656801805 fw:v1.15
when i disconnect/connect my keyboard,
in terminal add this lines
Disconnected from device 'GK64XS-RGB'
Connected to device 'GK64XS-RGB' model:656801805 fw:v1.15
how to run on macos?
Hello, pixeltris! First, I apologize for writing this here and it is completely unrelated to the tool you built, but I am definitely not the best person to find another way to contact you and I am desperate. I recently got this keyboard (https://imgur.com/a/pE3kdDK) as a gift. Personally, my knowledge is close to none when it comes to custom stuff and complex software, but I am having an issue with this one and I love it so much and I can't just let this go - I have tried so hard to fix this. Both the ESC and Delete keys are not working. This is what the keys look like in the windows software (https://prnt.sc/sfpop9), it looks like they are not recognized or disabled maybe. I have tried clicking "restore" thinking it's going to rever it to factory settings, still nothing. I have also tried the follwing: reinstalling the software, use a different type-c:usb cable, replace the switch with a spare switch, change between layers, remove the switch, remove both switches, replace the switch with one from an already working key. I also took it to a repair service which has 3 people with huge experience in fine electronics, they checked the soldering and the contacts and after several tests, they told me that the contacts and the soldering is perfect and does not need to be fixed. They claim that the issue could only be programmatic or a software error.
If you have any sort of idea what could cause this issue I would be forever grateful because this is my first keyboard of this kind and I don't really have the funds to buy a new one right now. Thank you so much!
I ran sudo mono GK6X.exe
on my mac.
Nothing seems to happen even after disconnecting and reconnecting the keyboard.
I have the following simple test script, seems that no matter format i do, it only runs the first macro it sees.
Your help sir is gladly appreciated.
#================================
[Layer1]
RShift:Home
Z:N
[FnLayer1]
D:Macro(MyMacro1)
RShift:Macro(Dos)
[Macro(MyMacro1,0,PressKeyAgainToStop)]
Down:W:3000
[Macro(Dos,0,PressKeyAgainToStop)]
Down:S:3000
[Lighting(Violet Light,Layer2)]
#=============================================
I have the following script below, It seems im missing something on how to DO a "Right Click" , remapping left alt as right click and remapping space to a macro seems doesn't do anything. Man, thanks for all of these.
[FnLayer1]
D1:F1
D3:F3
-:F11
RShift:End
A:Macro(MyMacro1)
[Layer1]
Space:Macro(MyMacro3)
RShift:Home
LAlt:MouseRClick
[Layer3]
A:W
D1:Esc
[Macro(MyMacro1,0,PressKeyAgainToStop)]
Down:W:9000
[Macro(MyMacro3,0,RepeatXTimes,2)]
Press:MouseRClick
Thanks for this project. I love being able to run and compile from source opposed to relying on some sketchy WebKit app.
Any thoughts on how to implement the "online" modes? I haven't dug deep enough into @wgwoods dumps to get a feel for how this might be done.
Thanks so much for putting this together! I have a GK61 and love the board, but am paranoid of installing the stock software, especially with the thing having a mic for what are dubious functional reasons IMO. Since it seems like you've been pretty deep in the code, have you seen any security issues in the firmware or downloadable configuration software? If so, does your software address them? I'm not an experienced developer so would very much appreciate any insight you may have :)
How do i compile this?
Hi, I'm trying to use your project(thank you!) but I'm not familiar with some concepts. What means 'driver' mode that you talk in README?
How can i run that?
First of all, thanks for this awesome project!
If possible can you share more macro examples?
Also, can others share their respective config files?
Some more macro examples will be helpful, as I didn't quite get how to create some types of macros
Current newest version, compiled with msbuild version 16.5.0-ci, shows this
GK6X version 1.8, downloaded binary from "Releases" page shows this
I tried the version 1.0 which I tried several months ago and it seemed to work (I didn't really use it because I was lazy and didn't understand why nothing is happening because I didn't RTFM) and it shows this
I don't see any reason to show other logs because they are the same and only differ in the same place at [0x00...] in <abgg86590...>:0
, tell me if you need them.
So I guess the problem is not with the project itself, but something with my OS? What is wrong here? Am I missing some packages? Or something happened to Mono?
Thank you so much made this project.
After I use this almost problem gone and become comfortable.
The last things I want when press fn, dont want led on.. not led effect.
Always fn press on layer status led turn on (examle if my layer 1 when press fn will led on 'W' led)
I know this is not relation this project but just finding..
Thank you so much..
Hi pixeltris,
First I must appreciate the time and effort you have spent on creating such a useful tool for us. I tried to compiled the code on Visual Studio for Mac, and tried put this in my_model.txt file under /UserData:
[Base,Layer1,Layer2,Layer3,FnLayer1,FnLayer2,FnLayer3]
Pause:Delete
and while the program was running, I entered map, and then dumped the keys, but I still see nothing changed. What is going on? Did I do anything wrong?
I have a GK84 Keyboard wired to my MacBook Pro running Catalina 10.15.2.
Linux needs sudo, and is kinda fiddely - I previousally had weird timeouts, but they seem to be gone now. Mac seems to work fine through.
Mapping, dumping keys, and unmapping worked greatly on both Arch Linux and Mac OS X.
I am considering the idea of buying GK61 for myself, and I have seen the GK ads stating that the keyboard mapping is stored on the keyboard IF using the Windows application. Is that true for GK6X as well?
I've yet to troubleshoot it further, but it may be related to having to run GK6X as root.
GUI command seems to works only after commenting Process.Start(url);
in WebGUI.cs
: https://github.com/pixeltris/GK6X/blob/master/GK6X/WebGUI.cs#L36 since xdg-tried to open browsers which are either not installed or refuse to run as root.
Commenting this line made it launch, but the page can't run – it might be related to the fact that it's running as root as well, but I didn't troubleshoot it furher. Anyone else tried running GUI on Linux? If so, what distro and browser was it, was the browser running at root? If anyone have any clues to get it running thanks in advance for pointing me in the right direction, I'll update if I find something else myself :)
Hi there,
My current map file is this:
[Layer3]
Left:Macro(Left)
Right:Macro(Right)
[Macro(Left,0,RepeatXTimes,1)]
Down:F24
Down:Left
Up:Left
Up:F24
[Macro(Right,0,RepeatXTimes,1)]
Down:F24
Down:Right
Up:Right
Up:F24
However, only the top Macro ever works, if I switch them, the other seems to work.
I tried looking at the source to find the correct way to make multile Macros but failed to see how it's done, could you point me in the right direction?
Awesome project by the way, it allows me to do exactly what I want with my keyboard where the official software lacks that!
p.s. I compiled from source
Could you share some instuctions how to run it on linux? As I understand I should compile it somehow. But I am ot sure how. I tried to install msbuild, but I didn't succeed so far (I got dependency errors). Is it at least the right direction?
In the linux terminal, My keyboard seems to do some pretty weird stuff. https://www.youtube.com/watch?v=KYT5qESwEQQ this is my GK61 on default settings, when I type Fn+RAlt it presses the left arrow, but in tty it will make my cursor crazy and able to move freely. Also, I cannot type anything when this bug happens. This does not happen with my rubber dome keyboard
Probably something related to NKRO? Is it possible to try using this keyboard with 6KRO? In GNU/Linux, NKRO doesn't work anyway.
Device: 'SK61 RGB' model:655491117 fw:v1.18
I can bring any information you might need. I am not sure why it says SK61, it's a GK61
I figured that the "Type" field in the lighting files is static when 0 and the entire rainbow spectrum when 1. Is there a way to set a custom gradient to it? For example, cycling through all the shades of blue? Is there a way to specify new "Types" and are there any more types available?
And what exactly does "Count" do?
As mentioned in #23 macro delays seem to be a bit off. It looks like half the duration you specify, with some sort of dampener as well (like 0.5 seconds additionally off for both 5 second delay and 10 second delay).
If I remember correctly the official software just sends over the delay you specify in the packet (which is what is done in this project also). I'll need to go back and log again to clarify this.
One fix is to just half the delay time (but it doesn't fix that -0.5ish dampener. I'd need to work out what exactly that dampener is).
German keyboard layout provides one special key for <>| (https://en.wikipedia.org/wiki/German_keyboard_layout).
I tried out to find out the corresponding code.
Is there any way to find out the code to add it to the list of available keys.
If I can help please let me know how I could contribute.
Hi, first of all, thanks for making this. I am using Mac OS X and this has been a life saver.
I am using GK61 and wanted to map RAlt key to Fn+RAlt to use it as the Left Arrow key.
I tried this - RAlt:Fn+RAlt
on base layer but it doesn't seem to work.
From the README I can see that Fn is not mappable on base layer, but is it possible the other way round like above?
I have recently purchased this similar clone from Amazon. Seems to me that they use almost exact copy of hardware and software, possibly just rebranding the entire thing. Upon opening the device up I have noticed that they did at least source the outside shell from Jikedingzhi as it is stamped with their logo.
It is important to note that the original software from the Jikedingzhi website does not work with my device, I have already tried that.
The driver did successfully build in Linux. Then when I ran the app I did receive errors that it was unable to perform a handshake with the device.
[15:33:07.2895780] Handshake failed (USB-HID Gaming Keyboard) Couldn't find data for keyboard
$ lsusb
Bus 001 Device 008: ID 1ea7:0907 SHARKOON Technologies GmbH USB-HID Gaming Keyboard
I cannot expect you to put in the work for supporting this device but I was wondering if you might have any insight on what I could do to get this working. I feel like my device is not too far off from compatibility.
Cheers.
I can remap base layer and other layers. But I can't remap fnbase layer.(
This makes no reason to use this program instead of using the original program.)
Is there any way to remap the fnbase layer in gk61?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.