Code Monkey home page Code Monkey logo

gk6x's Introduction

GK6X

This is a command-line tool for mapping keys, macros, and lighting for GK6X keyboards (GK64, GK84, GK61, etc). This can be used as an alternative to the official software (Windows / Mac).

It runs on Windows, Mac, and Linux.

System requirements / compilation

See the releases page for prebuilt binaries.

.NET Framework 4+ on Windows. mono on Mac / Linux. Expand for more info.

Windows

.NET Framework 4+ is required (should be pre-installed on Windows 7 and higher).

To compile from source you have two options:

  • Run GK6X/GK6X.bat
  • Compile using Visual Studio (C# tools required)

Linux / Mac

mono is required (most Linux package managers should list mono-complete).

Compiling may take several attempts depending on the version of mono. Try xbuild GK6X.sln, or msbuild GK6X.sln, or xbuild /p:TargetFrameworkVersion=v4.5 /p:TargetFrameworkProfile="", or ask for help in #4.

cd into Build and run with sudo mono GK6X.exe. Super user (sudo) is required on Linux (possible hidraw issue). Or use the udev rule below.

Linux AUR package

GK6X is available in AUR as package gk6x-bin maintained by @aakashhemadri.

Linux sudo alternative (udev rule)

An alternative to using sudo is to set up a udev rule. Create /etc/udev/rules.d/gk6x.rules:

SUBSYSTEM=="input", GROUP="input", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1ea7", ATTRS{idProduct}=="0907", MODE:="666", GROUP="plugdev"
KERNEL=="hidraw*", ATTRS{idVendor}=="1ea7", ATTRS{idProduct}=="0907", MODE="0666", GROUP="plugdev"

Then add yourself to plugdev and reboot for it to take effect:

sudo adduser $(whoami) plugdev

Overview

Once the program is opened you should see something like:

Connected to device 'GK84S RBG' model:655491200 fw:v1.16

At this point you can start using mapping your keyboard with the map command as seen below.

If you don't see any output, it has failed to detect the keyboard. There isn't any console output until it finds a valid keyboard.

Commands

map

Maps the keyboard based on the config in UserData/YOUR_MODEL_ID.txt. See Sample.txt for examples of setting keys, macros, and lighting.

You can reprogram the base layer, layers 1-3, and layers 1-3 whilst the fn is held down. You can't move the fn key, but TempSwitchLayer1/2/3 can act similar to a secondary fn key. The base layer fn key set can't be mapped.

unmap

Resets the keyboard to the default config. The dedicated reset keyboard key combo will be more effective; refer to your manual.

gui

Starts the GUI web server on http://localhost:6464 (requires the GUI build from the releases page).

If you're running from source you'll need to copy the driver folder from a release build. For updating the GUI files see updating.txt.

gui_le

Copies the lighting files created using the gui to the Data/lighting/ folder so that the map command can use them.

Additional commmands

These commands generally aren't needed.

dumpkeys

Lists the textual name / code name (i.e. 5 is D5) of the keys listed in the order that they appear on each row of your keyboard. This shows the keys represented prior to any mapping, and is just a reference.

findkeys

Tool to identify key names. Used for finding broken keys and fixing data files.

update_data

This is used to update the data files from the official software. This exact process needs to be re-documented (Updating.txt).

Additional info

  • The /p command line arg can be used to set a prefixed file name of the config to use. For example GK6X.exe /p test will use test - 655491200.txt as the target config file (where the keyboard model id is 655491200).
  • The following commands can be used as command line args to just execute a specific command /gui, /map, /unmap, /dumpkeys. For example: GK6X.exe /map
  • The data files for the gui command aren't included in this repo. Obtain them from a release build.
  • There's possibly some issue with certain USB slots (#102).
  • There is no "apply failed" message like there is on the official software, so map / umap can fail silently.
  • There are issues with the web GUI such as not being able to map the base layer. I'd recommend avoiding the GUI if possible.

The web GUI looks like this:

Alt text

Related projects

gk6x's People

Contributors

artogahr avatar faalagorn avatar jhairparis avatar jonavin avatar pixeltris avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gk6x's Issues

Doesn't work on Linux, get System.ArgumentOutOfRangeException

  • OS: Arch Linux
  • Kernel version: 5.6.11
  • Versions afffected: All

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?

How to run it on linux?

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?

Map RAlt to Fn+RAlt on base layer

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?

Shift layer as different keys?

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.

cant call right click

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

run

How can i run that?

only 1 macro allowed

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)]
#=============================================

Unmappable RAlt

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

Weird GK61? (Unmap and Base Layer not working)

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

Compatablilty with other clones/vendors

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 don't know where to tell about this issue, pls halp

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

Can't set a lighting profile to Driver layer

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?

Saved my keyboard

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?

Macro delays are incorrect

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

Set one-shot and hold behaviors to keys

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?

Lighting effect types and Specific color gradient

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?

Not working on macOS Catalina

I ran sudo mono GK6X.exe on my mac.
Nothing seems to happen even after disconnecting and reconnecting the keyboard.

What is 'driver' mode?

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?

Add license

The code is currently not licensed in any way.

It would be useful if you would provide a license.

Compiling error?

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)

Macro examples

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

Windows defender flags up GK6X.EXE

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?

Running the GUI on Linux

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

GK64 issue

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!

gk61 fnbase layer

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?

Security question

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

It is can off led when press fn? (not issues)

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

Macro not working

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

Tested working on OSX+Linux, update readme.

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.

Remapping lighting effects keys

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?

Unable to make multiple Macros

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

Temporary switch layer button + Modifiers

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.

having trouble configuring GK64 RGB V1 with Web GUI

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:

  1. I can't change light effects for layers 1 2 3
  2. I can't modify the layers' key inputs
  3. there's a standard layer AND a Fn+Q layer, which is default and has no light effects (further investigation shows that there's a offline standard layer AND an online layer... uuh... okay?)
  4. the GUI doesn't save anything to UserData/656801802.txt
  5. Attempting to Apply while on a Layer freezes the button, the keyboard's light effects don't disappear for a second and nothing happens, replugging the keyboard shows the default config again

What I CAN do is:

  1. set light effects to standard layer BUT ONLY to Logic Lights (that's what they are called in the manual, it's Fn+CloseSquareBrace if you're wondering), there's nothing I can see regarding Code lights (Fn+Backslash) <-- I successfully changed Full Green Light to HustleandFlow, Save and Applied with success too)
  2. I can make a macros folder and make, record and save a macro, but i can't put it on keyboard (problem 2)
  3. Make a light effect file and apply it to Code lights list

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:

  1. will it help if i provide the serial ID of my keyboard?
  2. do you plan on modifying and/or rewriting the gui software? kinda referencing to #15

also sorry for bothering you with so many issues, I just want to put all of the software problems to end

Running on macOs

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

Not creating txt file

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.

Cannot map keys?

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.

how to run 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?

Questions regarding GK6X project

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?

Unable to download release - "virus" found

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!

Support for X-Bows keyboards

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:

  • Esc F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Delete PrintScreen
  • BackTick D1 D2 D3 D4 D5 D6 D7 D8 D9 D0 Subtract Add Backspace
  • Tab Q W E R T Y U I O P OpenSquareBrace CloseSquareBrace Backslash PageUp
  • CapsLock A S D F G H J K L Semicolon Quotes Enter PageDown
  • LShift Z X C V V N M Comma Period Slash RShift
  • LCtrl LWin LAlt RAlt RCtrl
  • Left Up Down Right
  • Space is the left space key.

These five special keys don't work:

  • Right space
  • Middle backspace
  • Middle enter
  • Middle control
  • Middle shift

In addition, Fn seemingly can't be remapped, but I gather that's expected.

Note that by default:

  • Right space generates the same X11 keycode (and presumably the same USB keycode) as left space.
  • Middle backspace generates the same keycode as upper-right backspace.
  • Middle enter generates the same keycode as right enter.
  • Middle control generates the same keycode as right control.
  • Middle shift generates the same keycode as right shift.
    However, using GK6X to remap Space/Backspace/Enter/RCtrl/RShift does not affect the above five keys, so presumably each of them has a distinct internal keycode that can be remapped independently.

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?

Online Mode [Feature Request]

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.

Assigning a Fn-Layer a different lighting scheme

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.