logitech / logi_craft_sdk Goto Github PK
View Code? Open in Web Editor NEWProvide (API) SDK specifications to map your app functions to Logitech Craft dial controller called "Crown".
Provide (API) SDK specifications to map your app functions to Logitech Craft dial controller called "Crown".
Hello im working on a windows 10 Client with the python sdk. i implemented everything as described in https://github.com/Logitech/logi_craft_sdk/blob/master/samples/CraftPython/README.md
When i start the craft.exe no context menu is shown. i only receive following errors in the command box wenn i touch the Crown:
see attachment.
Error.txt
Can someone help me to troubleshoot the problem?
Kind regards
While my previous K800 keyboard didn't have media controls for GPM, it was possible to add it via some updates to the SetPoint players.ini file. (ref: https://steinerd.com/developments/hacks/media-keys/)
It would be great if GPM music controls could also be added to the Craft
Sample Python executable is not working.
I receive Error 403 Forbidden
The Sample C# app works fine.
This is what the manifest file looks like:
The Python SDK sample is installed correctly in Logitech options:
This is what it looks like when I run the craft.exe application:
This is the error that I receive:
`Slider receives focus
Traceback (most recent call last):
File "craft.py", line 323, in sliderFocus
File "craft.py", line 338, in changeTool
NameError: name 'ws' is not defined
connect called...
--- request header ---
GET / HTTP/1.1
Upgrade: websocket
Connection: Upgrade
Host: 127.0.0.1:10134
Origin: http://127.0.0.1:10134
Sec-WebSocket-Key: tQzh2ylSomgH/2IhqVtt3Q==
Sec-WebSocket-Version: 13
error from callback <bound method CraftClient.on_close of <main.CraftClient object at 0x03199130>>: on_close() missing 1 required positional argument: 'ws'
File "site-packages\websocket_app.py", line 343, in _callback
ComboBox receives focus
Traceback (most recent call last):
File "craft.py", line 313, in comboBoxFocus
File "craft.py", line 338, in changeTool
File "site-packages\websocket_app.py", line 155, in send
websocket._exceptions.WebSocketConnectionClosedException: Connection is already closed.
ComboBox receives focus
Traceback (most recent call last):
File "craft.py", line 313, in comboBoxFocus
File "craft.py", line 338, in changeTool
File "site-packages\websocket_app.py", line 155, in send
websocket._exceptions.WebSocketConnectionClosedException: Connection is already closed.`
I am trying to view the python SDK example code however the link is just taking me to a page that says "error 404, page not found". Could this be fixed please?
Please?
I've sent this to support and have complained on the forums, but posting here in the hope that someone who's a developer can escalate this...
Please please PLEASE can you add an option to disable to overlays which appear when you use the Crown on the Craft keyboard?
These overlays should be optional.. they get in the way of Creative Apps, are distracting, and totally unnecessary and completely remove the keyboard's 'Pro' feel.
There's a number of online forums of people complaining about this, including:
https://support.logi.com/hc/en-us/community/posts/360032761973-Logitech-Craft-Software-Annoyance
And many more!
I couldn't get any of the SDK samples working with Logitech Options 8.10.154, had to downgrade to 7.14.70 before I could get Options to pickup the Craft C# and Craft Python SDK Samples.
Also requires outdated dependencies,
Has the Craft just been left behind with development?
I've been oweking on an VS Code extension utilizing the Craft. I have however encoutnered an issue where the tool options overlay aren't diplayed on touch events.
defaults.json:
{
"GUID": "82df029a-a6c0-4559-95b2-09b50b2bb0ee",
"info": {
"name": "Visual Studio Code",
"publisher": "Microsoft",
"version": "1.0",
"win_name": "Code.exe",
"mac_bundle": "",
"mac_path": "",
"mac_paths": [
{
"path": "",
"mac_minimum_supported_version": "0.0.0",
"mac_maximum_supported_version": "*.*.*"
}
],
"win_minimum_supported_version": "0.0.0",
"win_maximum_supported_version": "*.*.*"
},
"crown": {
"rotate": {
"default_task": "changetoolvalue",
"tasks": [
"changetoolvalue"
],
"short_list": [
"changetoolvalue"
]
},
"press": {
"default_task": "playpause",
"tasks": [
"playpause"
],
"short_list": [
"playpause"
]
}
}
}
tools.json:
{
"GUID": "82df029a-a6c0-4559-95b2-09b50b2bb0ee",
"tools": [
{
"name": "default",
"enabled": true,
"tool_options": [
{
"index": 0,
"name": "fileSelector",
"image_file_path": "tabs.png",
"enabled": true,
"ratchet_enabled": true
},
{
"index": 1,
"name": "debug",
"image_file_path": "circular.png",
"enabled": true,
"ratchet_enabled": true
}
]
}
],
"tasks": [
{
"name": "changetoolvalue",
"win_id": "0x10064",
"mac_id": 615
}
]
}
don't mind the values they are literally palceholders for seing it work.
On my client i register my plugin, and then send a toolchange request to select the default tool. Touching the Crown doesn't display overlay and following turn events doesn't have a currnet_tool_option in it's task options
Is it possible to actually remap the actual keys on the keyboard? Maybe I'm asking too much. I would like to be able to perhaps swap the right-hand cmd/alt key with the alt option/ctrl keys so the functionality of those keys are reversed. The basic software only allows for remapping a few keys. I am new to coding, so any help would be great, even if its just a simple yes or no, Thanks.
Hi!
I have tryed to gather information about this issiue (personal opinion) here and at LogitechSupportSite.
I have a MX VERTICAL mouse and a LOGICRAFT.
When I switch computers, I do it first with the mouse for some reason. I'm not a "short-cutter" so I start with pointers I guess. Very often I forget to switch the keyboard to computer 2 as well. Is there any way to get the keyboard to automatically, detect and, follow the mouse to computer 2.
If the opportunity exists and is documented, you may well ask me to fu*k the hell of.
If the possibility is not present today, are you interested in implanting this?
If this is offtopic, ridiculous or uninteresting then ignore or remove this request.
Beside this I love my LOGITECH gears and I respect and heart your work <3
Regards / Joparu
When using the device switch button on the MX Keys the MX Master 3 does not also switch devices or vice versa. Providing this option allows better swapping between devices.
Dear coders,
Leaving an obvious extra button out seems unlogical.
Regards,
Ronald van Erp
Hi.
I am currently not using the 3 buttons that switch devices.
Is there any way to change the action they are mapped to? Logitech Options application does not provide this functionality :(
Thank you!
So, disclaimer, I'm totally new to coding. And I have trouble understanding the instruction here. Is there a more layman termed instructions that I can follow? So far, I used the C# and I was able to make it to step 4 without problem. But the rest is hard for me to understand.
I just wish to enhance/enable some contextual functions for certain app. Preferably I can customize some of the icons. If someone could tell me what does what, and which par of the code I need to change in a layman term would be helpful. Thanks!
used hardware: Crown + MX Master
I get the activate/deactivate plugin messages just fine as I change the foreground window.
But as soon as I try to use the crown while the window is active to get any messages from it - it seems that the Logitech software just crashes and my software/example just gets disconnected from it obviously.
Tried the same routine on my notebook (environment is more or less the same, but still) - same result, connection closed as the logitech software crashes.
Debug log:
[13472] on_connect called with hdl: 0000023534339B60
[13472] ***
[13472] ***
[13472] *** Plugin GUID is: d4cecd7f-9eff-4428-b372-190f1126b983
[13472] ***
[13472] ***
[13472] on_message called with hdl: 0000023534339B60 and message: {"message_type":"register_ack","sequence_id":0,"session_id":"ad552245-24e0-8977-a285-b95c0a70bfad","status":200,"enable":true}
[13472] on_message called with hdl: 0000023534339B60 and message: {"message_type":"activate_plugin","session_id":"ad552245-24e0-8977-a285-b95c0a70bfad"}
[13472] on_message called with hdl: 0000023534339B60 and message: {"message_type":"deactivate_plugin","session_id":"ad552245-24e0-8977-a285-b95c0a70bfad"}
[13472] on_message called with hdl: 0000023534339B60 and message: {"message_type":"activate_plugin","session_id":"ad552245-24e0-8977-a285-b95c0a70bfad"}
[13472] on_close called with hdl: 0000023534339B60
[16152] LogiOverlay.exe Error: 0 :
Event log:
Faulting application name: LogiOptionsMgr.exe, version: 6.92.275.0, time stamp: 0x5b6e2f77
Faulting module name: LogiOptionsMgr.exe, version: 6.92.275.0, time stamp: 0x5b6e2f77
Exception code: 0xc0000409
Fault offset: 0x00000000005a5300
Faulting process id: 0x3c2c
Faulting application start time: 0x01d458576798e872
Faulting application path: C:\ProgramData\Logishrd\LogiOptions\Software\Current\LogiOptionsMgr.exe
Faulting module path: C:\ProgramData\Logishrd\LogiOptions\Software\Current\LogiOptionsMgr.exe
Report Id: a8f942ac-b41f-4365-91e5-ee099a3b9329
Faulting package full name:
Faulting package-relative application ID:
PS: Tried to do the same thing on my notebook (environment is more or less the same, but the OS is almost freshly installed) - same result, logitech software crashes and the connection gets closed.
Hi,
I'm trying to build a plugin using this SDK but I miss some explanation on the tools.json and defaults.json files.
I'm currently able to receive events from the Plugin manager (crown touched, turned ...) but I can't make the "change_tool" message to work. I mean I can't see any overlay displayed.
I guess it's related to bad json files that's why I'd like to know more (for example what's the role of tasks and what's the link with the code ?
Could you explain this here or extend the documentation ?
Thanks.
I have bound the crown to screen brightness, but neither that nor the screen brightness keys will adjust brightness of an external monitor on a pc. Integration with a 3rd party application like ClickMonitorDDC could make the crown actually useful for screen brightness with external monitors. Any ideas?
Hello [email protected],
We're writing to let you know that the group you tried to contact (craftsdk) may not exist, or you may not have permission to post messages to the group. A few more details on why you weren't able to post:
If you have questions related to this or any other Google Group, visit the Help Center at https://support.google.com/a/logitech.com/bin/topic.py?topic=25838.
Thanks,
logitech.com admins
We also value your input on:
possible bugs
shortcomings
issues
incompatibilities
as well as:
enhancements ideas
possible new features
We also strongly suggest using our public GitHub repository for bug reports and features requests. Follow this link https://github.com/Logitech/logi_craft_sdk/issues and post it there. This will allow easier tracking and follow up. If you have any other generic questions or comments, please feel free to contact us at [email protected].
Have u got any idea how to set backlighting, because every team when keyboard wake up from sleep mode backlighting is reseting to standard level. Have u got same problem, or maybe its just logitech unifying receiver problem (it can be too old)? Maybe I can set backlighting from SDK or set key to turning on/off backlite?
Unifying Receiver: 012.010.00032
Logitech Craft: 007.001.00015
Hiya,
As titled. I'm a music producer, and recently found every parameters on my software (logic pro and some plug-ins) can be adjust by mouse scrolling wheel.
So it would be absolutely beautiful if I can aim the parameter, then use crown to adjust the numbers.
Is there any way I can achieve this?
Thanks a lot.
There is no option to enable/disable the backlight using a key from the keyboard instead one has to go into
More Settings > This device window, check Disable backlighting.
Can someone please suggest how to find out what execution or command this does within windows.
This way, my thinking is that this can then maybe be assigned to the 'Launch Application' function.
And in retrospect be assigned to a shortcut key.
PLEASE HELP myself and countless of others with this frustrating issue which is falling on deaf Logitech ears.
I have recently purchased the Logitech Craft Keyboard and I am currently trying to develop a custom plugin for it in c#.
I have downloaded the examples from the github page and created my own plugin in C# following the same pattern as the WinFormsCrownSample using the instructions located here: https://github.com/Logitech/logi_craft_sdk/blob/master/samples/WinFormsCrownSample/README.md
I have created my plugin folder with a GUID, created the Gallery, Languages and Manifest folders within this. I have created the defaults.jspon and tools.json files and specified the GUID within these along with the other relevant information.
I have placed this folder within ProgramData\Logishrd\LogiOptionsPlugins and also within Logishrd\LogiOptions\Plugins as I am not sure which one is correct.
Using a simple win forms application I have managed to connect to the keyboard, register my plugin and receive the "register_ack" message to confirm my plugin has been registered. I also receive the activate_plugin message when my sample application becomes active. However, when i turn the crown on my keyboard i am not receiving any crown turn events in my application. I receive no messages of any type from my client.
I believe I have followed all the instructions correctly, but just can't figure out why I do not receive the crown turn or crown touch events. Are there any steps I have missed?
I can provide code examples or my entire sample application if needsbe.
Can any one help write a code that enables fn lock on the keyboard?
I have followed the steps for the Python example until I am running the compiled craft.exe.
Already when I run the craft.exe, I get the following error in the console (running under windows 10, Python 3.6)
slider receives focus
Traceback (most recent call last):
File "craft.py", line 338, in sliderFocus
File "craft.py", line 353, in changeTool
NameError: name 'ws' is not defined
connect called...
--- request header ---
GET / HTTP/1.1
Upgrade: websocket
Host: 127.0.0.1:10134
Origin: http://127.0.0.1:10134
Sec-WebSocket-Key: LAIO0zsjgKBUVUrDNg7DdA==
Sec-WebSocket-Version: 13
Connection: upgrade
-----------------------
--- response header ---
HTTP/1.1 403 Forbidden
Server: WebSocket++/0.7.0
-----------------------
error from callback <bound method CraftClient.on_close of <__main__.CraftClient object at 0x0000021CFEF5CE48>>: on_close() missing 1 required positional argument: 'ws'
File "websocket\_app.py", line 344, in _callback
Then, everytime I click on something in craft.exe, I get the following:
Slider receives focus
Traceback (most recent call last):
File "craft.py", line 338, in sliderFocus
File "craft.py", line 353, in changeTool
File "websocket\_app.py", line 156, in send
websocket._exceptions.WebSocketConnectionClosedException: Connection is already closed.
any idea what I need to change? Is this the same issue as #22? The errors are slightly different though?
Did anyone manage to get the C++ sample working?
I got the C# version, but with C++ I don’t receive the “activate_plugin”
LogitechOptions version 7.10.3
I did have to update the submodules
and project settings a bit.
While it's possible to change what the crown controls, it would be great if you could add or change the contextual options.
For example, in Excel, contextual options are Horizontal Scroll, Zoom and Sheet Navigation. I'd love to be able to add Vertical Scroll to the list, and perhaps others.
I got my Logitech Craft keyboard delivered today June 2022 and discovered this annoying problem.
It is problem well known for years now !!! No one in reviews is telling about this problem.
This keyboard is a great tool but with bad software... if Logitech can charge £200 for it maybe it would be good to pay good software developers to fix this problem.
I just want disable Crown Overlay !!! I don't need to be informed each time when I want to use Crown wheel that it is being used.
This overlay is covering my app and it is making it impossible to use !!!
Can include a new activation message to allow exclusive access to crown form the client?
Example:
registerRootObject.message_type = "register_exclusive";
This register exclusive new register message allow to the client to pickup crown events no matter the windows is foreground or not.
This allow to create some cool things for the crown, as a controls for MIDI, DAWs, VST, (implement craft with my software Elephant),
Once the client is destroyed, all can back to work to normal or can send a disconnect message.
This is the correct way of implement with Elephant, no idea if Logitech can implement this.
Is possible?
This repo is clearly labeled as Craft SDK, and documents only the Craft Keyboard, but the SDK link in the Logitech Options settings panel resolves here. Is that just an incorrect link, or what?
It seems pretty obvious that Logitech doesn't care about devs, at least independent ones. I have several stale support posts regarding the Adobe Premier Pro plugins that have been collecting dust for months now. It's disappointing, because these devices are well made, but the software that runs them is crap, and doesn't really adapt to anything other than a very narrow set of use cases. (Else why can't we use macros or modifiers with the MX series pointing devices in Logitech Options?)
I've been a loyal Logitech user for over 20 years, and this past year has pretty well put me off of their stuff altogether. I welcome being proven wrong, but I'll not hold my breath.
I made all the steps you said but I have a few doubts:
Thanks a lot!
I'm searching for a way to make the crown indicator invisible.
I use the crown to read large pdf files, but it always hover above my text.
I hope that someone knows a way to make that indicator transparent
Hiya,
I'm a musician and have been using the Craft keyboard for a while and think a good use for the crown would be to turn it into a MIDI encoder and button. The crown feels so much better than any MIDI controllers' encoders I've come across and is always within reach.
I'm thinking it would be amazing for it to have the functionality of one of the rotary encoders on a standard MIDI keyboard such as the ones on the top right of this keyboard controller. Within Logitech Options, having the ability to reassign the CC parameter would be a massive bonus, the ability to change it from smooth turning and not would be pretty sweet and changing the sensitivity of the crown would be awesome (e.g. 720,360 or 180deg turns of the dial could be equivalent to 0-127 in MIDI).
I know I can use the crown as a scroll wheel which can do part of this but I find that in some audio software it behaves in the opposite way to expected and moves in either too fine or too broad increments. I also can't click around an audio plugin UI as I change a parameter with the knob.
Does this sound like it could be possible? And are people actively working on adding new features to the Craft?
Many thanks!
Tom
MX Anywhere 2 freezes in 2 seconds. constantly refreshing the bluetooth connection. Terminate task LogiOptionsMgr.exe with Task Manager. The error is recovering, but the special functions do not work.
There are some very annoying bugs here and good feature requests in the tracker and the last commit was in 2018.
The keyboard was expensive as hell, so I would appreciate a little more commitment from Logitech here.
Is there any support provided for FCP X? If not I can offer my graphic design knowledge if someone can help me with programming :)
I have a logitech craft keyboard and it keep lost a signal and reconnect. I assume it is keyboard software problem, I need a help someone can reset keyboard software or got a solution.
Thank you
I build the craft sdk, registered the .exe in the plugin manager (app manager) but it don't werk.
Yes, i'm running Windows 10 Developer Mode Creator Update and its current, 64 bit.
Should I check if the fireall is burning? I would get a notice if the port was blocked or not approved.
What am i doing to deserve such stonewalling by your plugin manager. I decided to stop plugging and complain to someone.
In the mean time my app is sorely in need of precision rotary controllers.
dB
7/20/2018 6:46:06 AM|Fatal|WebSocket.Connect|WebSocketSharp.WebSocketException: An exception has occurred while reading an HTTP request/response. ---> System.IO.EndOfStreamException: The header cannot be read from the data source.
at WebSocketSharp.HttpBase.<>c__DisplayClass1.b__0(Int32 i)
at WebSocketSharp.Ext.EqualsWith(Int32 value, Char c, Action1 action) at WebSocketSharp.HttpBase.readHeaders(Stream stream, Int32 maxLength) at WebSocketSharp.HttpBase.Read[T](Stream stream, Func
2 parser, Int32 millisecondsTimeout)
--- End of inner exception stack trace ---
at WebSocketSharp.HttpBase.Read[T](Stream stream, Func`2 parser, Int32 millisecondsTimeout)
at WebSocketSharp.HttpRequest.GetResponse(Stream stream, Int32 millisecondsTimeout)
at WebSocketSharp.WebSocket.sendHttpRequest(HttpRequest request, Int32 millisecondsTimeout)
at WebSocketSharp.WebSocket.sendHandshakeRequest()
at WebSocketSharp.WebSocket.doHandshake()
at WebSocketSharp.WebSocket.connect()
7/20/2018 6:46:06 AM|Error|WebSocket.Send|This operation isn't available in: closed
I would like to have more than one function assigned to the turning of the wheel, ideally even with ratchet mode. It seems a waste to only be able to change the function and only have one assigned to it, when it can support multiple ones that can be cycled through by tapping the wheel. This alone for existing function should not require a plugin to be created for, rather it should be provided by Logitech out of the box so the existing function can be utilised and ideally differentiate between a regular tap category or ratchet mode.
Shouldn't be too hard to have an interface to select adding an additional function, choose one of the functions that is supported by the main one, choose an icon that gets used for when taping the wheel.
(unfortunately the press and turn's function is limited to what is set under All applications, thus can be configured specifically to an app, which is also bit of a waste)
Craft Keyboard F/W: 007.001.00015
Unifying Receiver F/W: 024.011.00036
Any chance to have this SDK working under linux?
Since it runs on OSX, it might not be too far fetched.
Dear Developers,
Could someone develop an extension for Ableton Live & a MIDI signal outpu for the crown of the Logitech Craft? It would be a killer feature for all the musicians & producers.
Many thanks in Advance
I would like Logitech option to automatically set whether the backlight of craft keyboard is on according to the system time. Unfortunately, Logitech options currently do not have this feature. So can I use this SDK to complete the change function
Hi, what can I do if I want make a plugin for an application, for example android studio.
I mean if I want to that when I open android studio craft has a profile for it.
For example if inside Android studio I click on X element I have a menu for it.
Just like photoshop but developing it myself for an application that hasnt a profile for the craft.
Thanks
This would be amazing feature to control the YouTube timeline in Chrome. Any ideas how we could create support for this?
I understand it would be browser dependant but support for Chrome & FF would be nice.
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.