thonoht / nohboard Goto Github PK
View Code? Open in Web Editor NEWA Keyboard Visualizer
License: GNU General Public License v2.0
A Keyboard Visualizer
License: GNU General Public License v2.0
A single creating multiple layouts will typically reuse several images many times. This means with the current approach of loading images relative to the keyboard folder, all these images have to be duplicated for every keyboard that is made.
I do not feel comfortable letting the users enter paths in the image field, but a compromise is possible. Make the image search relative to the category, in the images/ folder. Rather than making subfolders here, the user could then use prefixes with the name of the keyboard to indicate keyboard-specific images.
Note that this requires a shift in category perspective, from being more generic to seeing a category as a set of keyboards with similar images, probably categorized by creator.
I think it would be pretty easy to implement this in JS
Not sure if and how, but it's an interesting idea.
I think as they are editing tools, would make more sense to have them apear only when "Start Editing" is pressed. And also have them between the same separator as "Stop Editing" and remove the word "Edit" from the buttons.
It would look like this: https://imgur.com/a/hFmHg
I believe this issue has been reported but im still experiencing this issue. While playing sc2 capturing with OBS studio. Using the latest version of rewrite 0.3.1 while playing, I experience keyboard freezing up and while its freeze it will keep that key pressed where it was frozen at.
So with version 0.5b, when I load into Battlefield 3, my mouse sensitivity is EXTREMELY high, and I can't control it. Lowered the in-game mouse sensitivity all the way down, and it's still uncontrollable. Exited out of NohBoard and everything is back to normal.
Probably something to do with capturing mouse events now too? :)
This only happens when I create them, without using the "normal" layout and deleting everything else except those keys
When you close the right click menu by left clicking on another key, this other key will be selected and moved by the distance you moved your mouse since opening the right click menu. If another key was selected, it will be moved instead.
Closing the right click menu should not trigger selection of another key, neither should it move any key.
See an example in this video: https://www.youtube.com/watch?v=ePsDqBSUUJc
Can you add some Chinese translation it the NohBoard? It would be better if it can be translated into any language we want .
Or you can make it support for us to translate the string it the file .
It looks like you have to right-click and select "move" to be able to relocate it on the screen. Is this intentional? This is something you have to do each time if you want the window to be on the side of the screen but not minimized for purposes of making sure it's updating for OBS recordings.
(This was on Windows 8, on a two monitor setup where each monitor is running from a different graphics device. (One from the Nvidia card for gaming, one from the motherboard video for everything else.))
My NohBoard (NohBoard-ReWrite-v1.0.1) was invisible when I would run NohBoard.exe. The window never appeared anywhere and I couldn't see it. But, the taskbar still showed a miniaturized view of the NohBoard window running, but I could never make the window appear on screen and therefore could not click on it to change any NohBoard settings.
I couldn't figure out why for a long time but eventually I narrowed it down to these steps that will reliably re-create the problem for me every time:
NohBoard.json
for "X"
and "Y"
are both being set to the bogus value -32000
by NohBoard whenever I quit NohBoard while it is minimized. These bogus values are making the window get drawn off-screen out of bounds. Whatever they previously were, NohBoard clobbers X and Y's values with -32000. I can get the window to start showing up again by closing NohBoard and manually editing the json file, setting X and Y both to zero. Then when I re-run NohBoard the window will appear and behave normally. However if I ever forget again and close NohBoard while it is minimized, the bug happens again and the values are back to -32000.Sometimes a long time after closing the program, it will crash. This might be due to one of the threads not terminating properly.
Using the latest release of NohBoard, I've been noticing an FPS issue in game. The framerate of the game will occasionally drop a significant amount of frames, making it nonviable to use in real-time speedruns (note that in an identical scenario using the old v0.17b, this issue does not occur).
I am capturing the window with OBS Studio 18.0.1 64-bit, and I utilize all features of the default csgo_shift+caps+mm layout (modified ofc, see attached), using the same settings I would have used for v0.14b
Attached: My modified layout incase you wish to test with it.
So, I was making the keyboard definition for that guy who asked for in the forum and realized there's no option in the Element Properties to chamge "ChangeOnCaps", we need to change it in the file.
Hello! I love this nohboard program, but I can't use it in linux(It can start but can't trap my keyboard and mouse). So please make nohboard linux version. Thank you.
saikenpwn posted on Pull requests but idk if there is the right place...
I support the ctrl+c/ctrl+v and resizing window to get more space to add keys ideas.
P.S.: I think he didn't try the arrow keys to move around the keys, tho hahaha
This. Says "unhandled exception because contains no elements" or something.
Title says it all
i got the feeling that i cloud make my own layout since there is a start edit buton but its always grayd out
exactly what title says.
See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.
************** Exception Text **************
System.NullReferenceException: Object reference not set to an instance of an object.
at ThoNohT.NohBoard.Forms.Style.MouseSpeedStyleForm..ctor(MouseSpeedIndicatorStyle initialStyle, MouseSpeedIndicatorStyle defaultStyle)
at ThoNohT.NohBoard.Forms.MainForm.mnuEditElementStyle_Click(Object sender, EventArgs e)
at System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
at System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
at System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.ToolStrip.WndProc(Message& m)
at System.Windows.Forms.ToolStripDropDown.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
************** Loaded Assemblies **************
mscorlib
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2115.0 built by: NET47REL1LAST
CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
NohBoard
Assembly Version: 1.0.0.0
Win32 Version: 1.0.0.0
CodeBase: file:///C:/Users/sleepy/Desktop/unwnbinary-temp!/nohboard/NohBoard.exe
----------------------------------------
System.Windows.Forms
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2110.0 built by: NET47REL1LAST
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2110.0 built by: NET47REL1LAST
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2046.0 built by: NET47REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Configuration
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2046.0 built by: NET47REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Core
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2117.0 built by: NET47REL1LAST
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
System.Xml
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2102.0 built by: NET47REL1LAST
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
Accessibility
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2046.0 built by: NET47REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/Accessibility/v4.0_4.0.0.0__b03f5f7f11d50a3a/Accessibility.dll
----------------------------------------
NohBoard.Hooking
Assembly Version: 1.0.0.0
Win32 Version: 1.0.0.0
CodeBase: file:///C:/Users/sleepy/Desktop/unwnbinary-temp!/nohboard/NohBoard.Hooking.DLL
----------------------------------------
System.Runtime.Serialization
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2112.0 built by: NET47REL1LAST
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Runtime.Serialization/v4.0_4.0.0.0__b77a5c561934e089/System.Runtime.Serialization.dll
----------------------------------------
System.Net.Http
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2046.0 built by: NET47REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Net.Http/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Net.Http.dll
----------------------------------------
SMDiagnostics
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2112.0 built by: NET47REL1LAST
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/SMDiagnostics/v4.0_4.0.0.0__b77a5c561934e089/SMDiagnostics.dll
----------------------------------------
System.ServiceModel.Internals
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2112.0 built by: NET47REL1LAST
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.ServiceModel.Internals/v4.0_4.0.0.0__31bf3856ad364e35/System.ServiceModel.Internals.dll
----------------------------------------
clipper_library
Assembly Version: 6.2.1.0
Win32 Version: 6.2.1.0
CodeBase: file:///C:/Users/sleepy/Desktop/unwnbinary-temp!/nohboard/clipper_library.DLL
----------------------------------------
************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.
For example:
<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>
When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.
See the examples here: https://youtu.be/rfPb2mfPP3U
[Fixed] Bug 1: Sometimes a specific key disappears and then an error code appears when trying to left click anywhere. I don't have a clue what is causing it, seems to be random because in different keyboard definitions it behaves with different keys, but these keys are always the same on that keyboard definition. I tried to see in the .jsons but there doesn't seem to be related to the position of the keys in the json. P.S.: look that in 1:33 in the video that the "c" button, for example, doesn't have the bug... pretty crazy
[Fixed] Bug 2: When loading another keyboard while editing a key, makes it weirdly behaves. Could be prevented if you grey out the "load keyboard" when in the editmode, or stoping the edit when clicking on "load keyboard".
[Fixed] Issue 1: I can't select the entire key when it's too small because the boundaries are in front of the hitbox, and I think it should be possible, otherwise it would limit the creativity. It could be solved by making the boundaries' hitbox to be rendered outlining the button instead of over the limits. Then you could select the button area anywhere and also the bondaries, doesn't matter how small they are.
You could add explanations to what some of your buttons do, or add a cool background, whatever you want.
Perhaps generate a crash log or something.
I'd like to be able to generate a rectangular area and have another program tell NohBoard where to draw a dot within it. I think this could be accomplished in a manner similar to the mouse movement indicator's behavior. I'm willing to write this whole feature (even if just for my own personal build), but answering either of the following (or pointing me in the right direction) would speed up the process a lot:
Really, even if you can just help me with 2 so I can get to the point of being able to tinker with the software I can probably figure things out from there.
I can get video using game capture
(tested using OBS-MP- 0.8.3 and OBS 0.64 Beta)
This should probably be a property of a keyboard layout file.
The key 1028(Mouse Movement) moves weirdly when in a game. I've test this in Minecraft and Team Fortress 2. The indicator dot moves wildly left and right when you move the mouse left. Works fine when not in a game though.
This is a feature request. As an option, let the user map certain keyboard combination keys that, when pressed simultaneously, are mapped to a single key. For example, the ctrl, alt and e keys could be mapped to a โฌ key instead of lighting up all three keys. Particularly useful for custom keyboards.
The style is currently treated differently from the current definition. It needs to be updated like the definition, because undoing the definition means that certain element styles may be redundant, or missing.
The capital versions of the keys for , . and ss/ร in the German keyboard layout are incorrect. Corrected version in this gist.
Low priority.
Probably color definitions per key in the kb file.
But separate pressed/not pressed/font pressed/not pressed?
Basically title says it all.
It might be neat, if there was an option that enables the use of PNG overlays.
The syntax of the key layout files would then be:
key keyCode x y width height NormalText ShiftText ChangeOnCaps SmallFont Overlay[0/1] OverlayWhenUnpressed[0/1] OverlayPath [relative/"absolute" path]
I do not want to ship custom fonts with NohBoards, but as users wish to create styles that use... custom fonts, it might be nice to make a feature where a style can specify which font to download, and having NohBoard link it for the user to install. If the font is not installed, some default font should be specified to fall back onto.
Hello,
Nohboard is not working when im using Windowed Fullscreen. If i click on desctiop somewhere, like opening a file or folder, then it works. But when I go ingame, its not working
This. I tried with a few different virtual keys. I made sure all the inputs show if just one of them is assigned, but when multiple codes are assigned to the same virtual key, none of them cause a reaction.
Windows 10 64b, need any more info?
Thanks, brilliant program!
Despite the documentation here stating that it should, I can't seem to get NohBoard to show up when using the Game Capture source. Using the Window Capture source isn't always an option for me because I only have one monitor, which means the game sits on top of NohBoard and OBS-Studio picks that up instead.
Do you have any hints on how to get it working?
Even after saving the changes and reruning NohBoard, the program keeps crashing. Pretty weird
The cloned key has the default Key Style.
When I move a key's boundary, the text position is set to, I guess, the default position. My keyboard definition has a custom text postion, so i could witness the bug, see here: https://youtu.be/eGVjjVLu6YY
As the title says. Using Wine 1.8.4 (32bit prefix) on Arch Linux x86_64.
Here's what Wine throws into a terminal when crashed:
System.ArgumentException: The requested FontFamily could not be found [GDI+ status: FontFamilyNotFound]
at System.Drawing.GDIPlus.CheckStatus (Status status) <0x1d16108 + 0x007ef> in <filename unknown>:0
at System.Drawing.FontFamily..ctor (System.String name, System.Drawing.Text.FontCollection fontCollection) <0x1d2c4c8 + 0x00067> in <filename unknown>:0
at System.Drawing.FontFamily..ctor (System.String name) <0x1d2c498 + 0x0001f> in <filename unknown>:0
at (wrapper remoting-invoke-with-check) System.Drawing.FontFamily:.ctor (string)
at ThoNohT.NohBoard.Extra.SerializableFont.op_Implicit (ThoNohT.NohBoard.Extra.SerializableFont src) <0x71bf780 + 0x00033> in <filename unknown>:0
at ThoNohT.NohBoard.Controls.KeySubStylePanel.set_SubStyle (ThoNohT.NohBoard.Keyboard.Styles.KeySubStyle value) <0x728d9a8 + 0x000f3> in <filename unknown>:0
at (wrapper remoting-invoke-with-check) ThoNohT.NohBoard.Controls.KeySubStylePanel:set_SubStyle (ThoNohT.NohBoard.Keyboard.Styles.KeySubStyle)
at ThoNohT.NohBoard.Forms.KeyStyleForm.InitializeComponent () <0x727e288 + 0x009c7> in <filename unknown>:0
at ThoNohT.NohBoard.Forms.KeyStyleForm..ctor (ThoNohT.NohBoard.Keyboard.Styles.KeyStyle initialStyle, ThoNohT.NohBoard.Keyboard.Styles.KeyStyle defaultStyle) <0x727df08 + 0x001bf> in <filename unknown>:0
at (wrapper remoting-invoke-with-check) ThoNohT.NohBoard.Forms.KeyStyleForm:.ctor (ThoNohT.NohBoard.Keyboard.Styles.KeyStyle,ThoNohT.NohBoard.Keyboard.Styles.KeyStyle)
at ThoNohT.NohBoard.Forms.MainForm.mnuEditElementStyle_Click (System.Object sender, System.EventArgs e) <0x727db28 + 0x0011b> in <filename unknown>:0
at System.Windows.Forms.ToolStripItem.OnClick (System.EventArgs e) <0x7240590 + 0x00056> in <filename unknown>:0
at System.Windows.Forms.ToolStripMenuItem.OnClick (System.EventArgs e) <0x723ff90 + 0x00287> in <filename unknown>:0
at System.Windows.Forms.ToolStripMenuItem.HandleClick (Int32 mouse_clicks, System.EventArgs e) <0x723ff48 + 0x0001b> in <filename unknown>:0
at System.Windows.Forms.ToolStripItem.FireEvent (System.EventArgs e, ToolStripItemEventType met) <0x722d868 + 0x000b5> in <filename unknown>:0
at (wrapper remoting-invoke-with-check) System.Windows.Forms.ToolStripItem:FireEvent (System.EventArgs,System.Windows.Forms.ToolStripItemEventType)
at System.Windows.Forms.ToolStrip.OnMouseUp (System.Windows.Forms.MouseEventArgs mea) <0x723fce0 + 0x00167> in <filename unknown>:0
at System.Windows.Forms.ToolStripDropDown.OnMouseUp (System.Windows.Forms.MouseEventArgs mea) <0x723fcb8 + 0x00017> in <filename unknown>:0
at System.Windows.Forms.Control.WmLButtonUp (System.Windows.Forms.Message& m) <0x723fb48 + 0x00124> in <filename unknown>:0
at System.Windows.Forms.Control.WndProc (System.Windows.Forms.Message& m) <0x1d1e950 + 0x001c3> in <filename unknown>:0
at System.Windows.Forms.ScrollableControl.WndProc (System.Windows.Forms.Message& m) <0x1d82800 + 0x00017> in <filename unknown>:0
at System.Windows.Forms.ToolStrip.WndProc (System.Windows.Forms.Message& m) <0x72261d8 + 0x00017> in <filename unknown>:0
at System.Windows.Forms.ToolStripDropDown.WndProc (System.Windows.Forms.Message& m) <0x7226188 + 0x0003f> in <filename unknown>:0
at System.Windows.Forms.Control+ControlWindowTarget.OnMessage (System.Windows.Forms.Message& m) <0x1d1e930 + 0x0001d> in <filename unknown>:0
at System.Windows.Forms.Control+ControlNativeWindow.WndProc (System.Windows.Forms.Message& m) <0x1d1e900 + 0x0002b> in <filename unknown>:0
at System.Windows.Forms.NativeWindow.WndProc (IntPtr hWnd, Msg msg, IntPtr wParam, IntPtr lParam) <0x1d1d000 + 0x0037f> in <filename unknown>:0
However I couldn't find any info what font it requires.
Hello. I was run gotri.exe, but only black screen(console) is appear and I can't do anything. Please help.
First of all i love the program. Only thing missing for me is the opertunity to move stuff aroundand make some keys show and other not. There is a small layout with the mouse that i use but im missing 2-3 keys that sre on the right side. Also it would help if i could move the keys to make another shape.
Dont know if its possible but just wanted to give my input and idea<3
Hello,
I would like to know what is the file "gotri.exe" that is called in the prebuild event.
Where does this utility comes from ? What does it do ?
Regards
When two keys overlap each other, even though the one I wanted to edit was highlighted during mouse-hovering, right-clicking gives me the other key's options (the first one I had placed) until I click somewhere where they don't overlap.
Relatedly, if two keys overlap perfectly, you can't seemingly select the other one at all, unless you use "move to top" on the one it's selecting, at which point the new bottom one can be chosen. This suggests that the problem is hovering highlights the top one, but the bottom one will be selected.
...just up. Shown in the video I linked.
https://drive.google.com/file/d/1A0VZa1kOfPnKfBHDF4vx5LHy-0SJyxAt/view?usp=sharing
So, let's say you miss right clicked on a key and do again a right click on the key you were wanting to hit, it won't work, you currently need to undo the right click with the left click to be able to.
Video: https://youtu.be/aI9jQZ9LNjQ
When I click on "Load Keyboard" always the "Keyboard Style" is setted to the default one... Like, it's not a major bug, but it's a little annoying hahah
EDIT: Okay, cracked it. This happens whenever you click on any key on your virtual keyboard to get it focused, then try to edit its properties. When you're done, it temporarily stores the changes, but reverts back to the old values the moment you click anywhere in the window, and you'll see that key was still selected. Relatedly, you can even drag a key around after selecting it by clicking anywhere on the window. Feel free to ignore the rest of this post if that's enough to help you fix it.
I tried making various changes to a new manually added key. All the changes seemed to be reverted the first time I clicked on the canvas. In fact it seems to be reacting to mouse1 even though it doesn't have any keys assigned to it ostensibly. (This happens by default so I'm guessing it's a feature)
Can't reproduce it but I captured it on video at least in case that's any use. Ignore the window on the left, that's where I wanted to copy values from.
https://drive.google.com/file/d/1A0VZa1kOfPnKfBHDF4vx5LHy-0SJyxAt/view?usp=sharing
Will post again if I figure out how I did it. Note that towards the end of the video, I accidentally noticed I couldn't move a given boundary down, just up. It seems to be unrelated, so I'll just open a different Issue for that...
EDIT: Well, the next key I added behaved fine, stored all the changes as expected. The next one after that had this bug again... I don't know what I did differently but it looks to be very random.
Wait, it doesn't just react to clicking mouse1, it literally stays selected the whole time, no matter which part of the window I'm clicking. I can even drag it around by clicking anywhere.
Looks like the problem arises if you first drag the key around.
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.