I know this won't be helpful.. But this nifty tool doesn't work at all on Win10. All I'm getting is a white empty window after I hit CTRL+Y. 

xD I probably wouldn't be able to search for bug for 5 hours straigt though xD.SALZKARTOFFEEEL wrote:
I couldn't do that at all, I would get soo boredRoan wrote:
^^ I just went for a 6 hours coding session :3I can't even play osu! for one hour straight o:
Finding bugs for five hours doesn't bore me at all though c:
I'd like to say so, but I honestly thougth I'd implemented that properly xD guess notSALZKARTOFFEEEL wrote:
:PRoan wrote:
Damn >.< I knew this would happen if I allowed users to input any value xD.o:Roan wrote:
o: fancyLike bug number 2 down below?Roan wrote:
Uhm... let's call this a minor oversight :3
YaySALZKARTOFFEEEL wrote:
Yup, works great c:Roan wrote:
Going to add that
I guess I forgot to mention that I actually improved on the config via command line functionality in v5.1. For the next version I'm going to improve on it even more by treating unrecognized non-ASCII characters as wild cards. This way all config files should be loaded, I hope xDSALZKARTOFFEEEL wrote:
Uhm. I'm actually an idiotRoan wrote:
O.O I broke it... that's weird. Traced it down to the - character but I have no idea why it stopped working. For me the - registers as non-ASCII which can't be interpreted by the C runtime stdlib. So this is a weird one, going to try figure out why it used to workThat's a funny story now:
o:I used a Windows shortcut to run the script with the parameter. That didn't open the config file right away, but (just tried it) it doesn't open it either when the "–" is removed! So... Next I thought that it was all fine and I was just an idiot for using a shortcut instead of just running it normally, BUT... Even when running it normally, none of the config files are opened!
When using version 5.1 on the other hand, the one with "–" doesn't work (as I expected), the one without does work now, though?!
And then, when using the new version AND not having a "–" in the file name, I can even use the shortcut?!?!?
At this point I just give up, to be honest xD I really don't get any of that
^^ I bascially had to hack a part of the Java source code to implement them though :3. Variable assignment has never been so difficult:SALZKARTOFFEEEL wrote:
Yay, they look great!Roan wrote:
I know and I'm actually quite frustrated by it. However the component doesn't have a build in function for changing the color. Therefore I'm probably going to reprogram the entire component so I put it on hold :3. Going to try fix this though
[x]: Colored checkmarks in the menu
private void setIcon(){
BasicMenuItemUI ui = (BasicMenuItemUI)this.getUI();
try {
Class<?> superClass = ui.getClass();
while(!superClass.getName().equals(BasicMenuItemUI.class.getName())){
superClass = superClass.getSuperclass();
}
Field field = superClass.getDeclaredField("checkIcon");
field.setAccessible(true);
field.set(ui, checkmark);
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
Implemented/fixed all this for the next version. The reload command key is: Ctrl + R.SALZKARTOFFEEEL wrote:
Huh. Okay, a reset/reload key would definitely be nice, but you could also check for any component before showing the window. If there would be a chain of If/ElseIf statements that check for all of the components, you could be sure that the overlay only appears when any component would be shown.Roan wrote:
Euh yeah, if you remove all the components from the program the window is not created :3 since there's nothing to display anyway. However Ctrl + Y forces it to be visible which causes some interesting behaviour xD. Not really sure how to fix this though. Maybe I should add a reset command key? Please give me a good idea xD.
If the chain of statements would get too long, you could use a system, where each component that's shown adds 1 to a variable, so when no component is shown, the variable contains 0 and the overlay isn't rendered o: Would that be something? >.<
Yup, that's right the 1000ms refresh rate is the maximum. I guess I could change the 1000, but who'd want such a high update rate :3. 1000ms is already quite slow. I'll just raise it if you think it would be useful thoughSALZKARTOFFEEEL wrote:
OkayRoan wrote:
Rip rip xD. Non text based configuration files are so much more peaceful :3. I'm going to implement all this though, So it'll be fixed. Even so it also removes the functionality to do crazy things, which is a shame xD. Moreover some of the caps are just random values I set, so I think I might keep some of them unbounded and only filter illegal arguments. (So for example size won't have a cap).But that also means that 1000 ms is the maximum for the refresh delay, right? Because, for example, 1000 mod(2000) = 1000 ≠ 0. o:Roan wrote:
Also the reason some values for the updateRate won't work is because they actually have to conform to a certain equation: 1000 mod updateRate = 0
If you wanted to, you could raise the maximum by just changing the 1000 to something greater than that, 10000, for example.
YaySALZKARTOFFEEEL wrote:
And I got more for you :3Roan wrote:
Well I know what to do :3.
I like breaking programs too :3SALZKARTOFFEEEL wrote:
huh, totally didn't think of just repeating stuff until something breaksRoan wrote:
Yes you did :3, try reloading a configuration file with a custom size set a couple of times, the programs size will go off to infinity if you do it often enough :3, I acidentically implemented the size as an exponential funtion xD
xD You' re saying there'll actually be a point where you can no longer find any new bug o: that'd surprise meSALZKARTOFFEEEL wrote:
Well, let's hope we get all the bugs found and fixed until thenRoan wrote:
You' re welcome ^^ I'm right before exams so I have a little more time then usual :3 but in a couple of weeks I probably won't have any time to work on this
I'm preatty sure different Java versions shouldn't be an issue. Well it'll be fixed with the new command line parsing I'm about the implement thoughSALZKARTOFFEEEL wrote:
fancy headlines? o.ORoan wrote:
Also made my introduction post fancy :3
xDUhm. Okayyy.... It works for me, so I'm pretty surprised too o: Could different Java versions be a factor here? :SRoan wrote:
The - in your filename doesn't work for me in older versions either, so I'm surprised it even works for you o.o?
Ah so that's what it is o:SALZKARTOFFEEEL wrote:
According to this Wikipedia article it is called the "en dash", I use it quite a lot, not just when breaking a sentence apart or writing numerical ranges o:Roan wrote:
Also what is this: – character even? It's not the normal - . For now I'll just release a new version with the changes I've already implemented
Most people write "--" (two Hyphen-minuses, 'normal' minuses on your keyboard) instead of "–", because, well, it's on your keyboard by default.
The more you know c:
xDSALZKARTOFFEEEL wrote:
Okay. Now to the real fun bit :^)BUGS: 🐛
eugh, bugs D:
o: this is quite serious (and weird) I wonder what causes thisSALZKARTOFFEEEL wrote:
1) Hotkeys (such as Ctrl + P) trigger when pressing the corresponding button (in this case P) twice! Pressing I twice resets the statistics, pressing Y twice hides the overlay, etc. This all, of course, without holding Ctrl down o:
Oops looks like a made a mistake somewhere xDSALZKARTOFFEEEL wrote:
2) (Enabling and) disabling "Track all keys" in the context menu actually disables the tracking of all keys, also the ones that are separate and should be tracked anyways
Nicely spottedSALZKARTOFFEEEL wrote:
3) Enabling "Track all keys" in the context menu (not just having it enabled, enabling it) disables the individual key counters. The whole averaging and the graph still works, but just the counters and the color inversion fail.
That was causes by a little oversight from moving all the config related stuff. Looks like I forgot to move a single line xD. It's fixed nowSALZKARTOFFEEEL wrote:
4) Since version 5 the "Overlay osu!" option doesn't work. Maybe I just missed the part where you were explaining why you purposefully disabled it, but it doesn't work right now ¯\_(ツ)_/¯
ImplementedSALZKARTOFFEEEL wrote:
Feature Request:
1) This is sort of a small bug as well, the "Pause/Resume" option doesn't have a tick-mark. You could just write "Pause" and display a tick, whether it is paused or not
That's weird since as far as I know everything should be Windows 10 compatible. Unfortunatally I can't test that though since I only have access to Windows 7 & 8 at the moment. If you have more information please let me know. There might also be more information available when running the program via the command line (cmd), maybe an error is thrown. But otherwise without a concrete cause I'm afraid that I can't fix itRumi wrote:
I know this won't be helpful.. But this nifty tool doesn't work at all on Win10. All I'm getting is a white empty window after I hit CTRL+Y.
boolean ctrl = (!frame.isFocusOwner()) ? ((event.getModifiers() & (NativeKeyEvent.CTRL_MASK | NativeKeyEvent.CTRL_L_MASK | NativeKeyEvent.CTRL_R_MASK)) != 0) : (((event.getModifiers() & (NativeKeyEvent.CTRL_MASK | NativeKeyEvent.CTRL_L_MASK | NativeKeyEvent.CTRL_R_MASK)) != 0) && (lastevent == null ? false : ((lastevent.getModifiers() & (NativeKeyEvent.CTRL_MASK | NativeKeyEvent.CTRL_L_MASK | NativeKeyEvent.CTRL_R_MASK)) != 0)));
This is odd o.O I'm using Windows 10 as well and (as you can tell by all my previous posts) it works pretty well for me o:Rumi wrote:
I know this won't be helpful.. But this nifty tool doesn't work at all on Win10. All I'm getting is a white empty window after I hit CTRL+Y.
Roan wrote:
That's weird since as far as I know everything should be Windows 10 compatible. Unfortunatally I can't test that though since I only have access to Windows 7 & 8 at the moment. If you have more information please let me know. There might also be more information available when running the program via the command line (cmd), maybe an error is thrown. But otherwise without a concrete cause I'm afraid that I can't fix it. Thank you for reporting it though
Exception in thread "main" java.lang.NullPointerException
at com.sun.java.swing.plaf.windows.XPStyle.getTypeEnumName(Unknown Source)
at com.sun.java.swing.plaf.windows.XPStyle.getBorder(Unknown Source)
at com.sun.java.swing.plaf.windows.WindowsLookAndFeel$XPBorderValue.getXPValue(Unknown Source)
at com.sun.java.swing.plaf.windows.WindowsLookAndFeel$XPValue.createValue(Unknown Source)
at javax.swing.UIDefaults.getFromHashtable(Unknown Source)
at javax.swing.UIDefaults.get(Unknown Source)
at javax.swing.MultiUIDefaults.get(Unknown Source)
at javax.swing.UIDefaults.getBorder(Unknown Source)
at javax.swing.UIManager.getBorder(Unknown Source)
at javax.swing.border.TitledBorder.getBorder(Unknown Source)
at javax.swing.border.TitledBorder.getBorderInsets(Unknown Source)
at javax.swing.border.AbstractBorder.getBorderInsets(Unknown Source)
at javax.swing.JComponent.getInsets(Unknown Source)
at java.awt.GridLayout.minimumLayoutSize(Unknown Source)
at java.awt.Container.minimumSize(Unknown Source)
at java.awt.Container.getMinimumSize(Unknown Source)
at javax.swing.JComponent.getMinimumSize(Unknown Source)
at java.awt.BorderLayout.minimumLayoutSize(Unknown Source)
at java.awt.Container.minimumSize(Unknown Source)
at java.awt.Container.getMinimumSize(Unknown Source)
at javax.swing.JComponent.getMinimumSize(Unknown Source)
at java.awt.BorderLayout.minimumLayoutSize(Unknown Source)
at java.awt.Container.minimumSize(Unknown Source)
at java.awt.Container.getMinimumSize(Unknown Source)
at javax.swing.JComponent.getMinimumSize(Unknown Source)
at java.awt.GridBagLayout.GetLayoutInfo(Unknown Source)
at java.awt.GridBagLayout.getLayoutInfo(Unknown Source)
at java.awt.GridBagLayout.minimumLayoutSize(Unknown Source)
at java.awt.Container.minimumSize(Unknown Source)
at java.awt.Container.getMinimumSize(Unknown Source)
at javax.swing.JComponent.getMinimumSize(Unknown Source)
at java.awt.BorderLayout.minimumLayoutSize(Unknown Source)
at java.awt.Container.minimumSize(Unknown Source)
at java.awt.Container.getMinimumSize(Unknown Source)
at javax.swing.JComponent.getMinimumSize(Unknown Source)
at java.awt.BorderLayout.minimumLayoutSize(Unknown Source)
at java.awt.Container.minimumSize(Unknown Source)
at java.awt.Container.getMinimumSize(Unknown Source)
at javax.swing.JComponent.getMinimumSize(Unknown Source)
at javax.swing.BoxLayout.checkRequests(Unknown Source)
at javax.swing.BoxLayout.preferredLayoutSize(Unknown Source)
at javax.swing.plaf.basic.BasicOptionPaneUI.getPreferredSize(Unknown Source)
at javax.swing.JComponent.getPreferredSize(Unknown Source)
at java.awt.BorderLayout.preferredLayoutSize(Unknown Source)
at java.awt.Container.preferredSize(Unknown Source)
at java.awt.Container.getPreferredSize(Unknown Source)
at javax.swing.JComponent.getPreferredSize(Unknown Source)
at javax.swing.JRootPane$RootLayout.preferredLayoutSize(Unknown Source)
at java.awt.Container.preferredSize(Unknown Source)
at java.awt.Container.getPreferredSize(Unknown Source)
at javax.swing.JComponent.getPreferredSize(Unknown Source)
at java.awt.BorderLayout.preferredLayoutSize(Unknown Source)
at java.awt.Container.preferredSize(Unknown Source)
at java.awt.Container.getPreferredSize(Unknown Source)
at java.awt.Window.pack(Unknown Source)
at javax.swing.JOptionPane.initDialog(Unknown Source)
at javax.swing.JOptionPane.createDialog(Unknown Source)
at javax.swing.JOptionPane.showOptionDialog(Unknown Source)
at me.roan.kps.Main.configure(Main.java:552)
at me.roan.kps.Main.main(Main.java:200)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at com.sun.java.swing.plaf.windows.XPStyle.getTypeEnumName(Unknown Source)
at com.sun.java.swing.plaf.windows.XPStyle.getBorder(Unknown Source)
at com.sun.java.swing.plaf.windows.WindowsLookAndFeel$XPBorderValue.getXPValue(Unknown Source)
at com.sun.java.swing.plaf.windows.WindowsLookAndFeel$XPValue.createValue(Unknown Source)
at javax.swing.UIDefaults.getFromHashtable(Unknown Source)
at javax.swing.UIDefaults.get(Unknown Source)
at javax.swing.MultiUIDefaults.get(Unknown Source)
at javax.swing.UIDefaults.getBorder(Unknown Source)
at javax.swing.UIManager.getBorder(Unknown Source)
at javax.swing.border.TitledBorder.getBorder(Unknown Source)
at javax.swing.border.TitledBorder.getBorderInsets(Unknown Source)
at javax.swing.border.AbstractBorder.getBorderInsets(Unknown Source)
at javax.swing.JComponent.getInsets(Unknown Source)
at java.awt.GridLayout.minimumLayoutSize(Unknown Source)
at java.awt.Container.minimumSize(Unknown Source)
at java.awt.Container.getMinimumSize(Unknown Source)
at javax.swing.JComponent.getMinimumSize(Unknown Source)
at java.awt.BorderLayout.minimumLayoutSize(Unknown Source)
at java.awt.Container.minimumSize(Unknown Source)
at java.awt.Container.getMinimumSize(Unknown Source)
at javax.swing.JComponent.getMinimumSize(Unknown Source)
at java.awt.BorderLayout.minimumLayoutSize(Unknown Source)
at java.awt.Container.minimumSize(Unknown Source)
at java.awt.Container.getMinimumSize(Unknown Source)
at javax.swing.JComponent.getMinimumSize(Unknown Source)
at java.awt.GridBagLayout.GetLayoutInfo(Unknown Source)
at java.awt.GridBagLayout.getLayoutInfo(Unknown Source)
at java.awt.GridBagLayout.minimumLayoutSize(Unknown Source)
at java.awt.Container.minimumSize(Unknown Source)
at java.awt.Container.getMinimumSize(Unknown Source)
at javax.swing.JComponent.getMinimumSize(Unknown Source)
at java.awt.BorderLayout.minimumLayoutSize(Unknown Source)
at java.awt.Container.minimumSize(Unknown Source)
at java.awt.Container.getMinimumSize(Unknown Source)
at javax.swing.JComponent.getMinimumSize(Unknown Source)
at java.awt.BorderLayout.minimumLayoutSize(Unknown Source)
at java.awt.Container.minimumSize(Unknown Source)
at java.awt.Container.getMinimumSize(Unknown Source)
at javax.swing.JComponent.getMinimumSize(Unknown Source)
at javax.swing.BoxLayout.checkRequests(Unknown Source)
at javax.swing.BoxLayout.layoutContainer(Unknown Source)
at java.awt.Container.layout(Unknown Source)
at java.awt.Container.doLayout(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validate(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
Hmm, I've taken a look at the line numbers mentioned in the stacktrace, however as far as I can tell those lines are incapable of directly trowing the error you getRumi wrote:
Roan wrote:
That's weird since as far as I know everything should be Windows 10 compatible. Unfortunatally I can't test that though since I only have access to Windows 7 & 8 at the moment. If you have more information please let me know. There might also be more information available when running the program via the command line (cmd), maybe an error is thrown. But otherwise without a concrete cause I'm afraid that I can't fix it. Thank you for reporting it though
SPOILERException in thread "main" java.lang.NullPointerException
at com.sun.java.swing.plaf.windows.XPStyle.getTypeEnumName(Unknown Source)
at com.sun.java.swing.plaf.windows.XPStyle.getBorder(Unknown Source)
at com.sun.java.swing.plaf.windows.WindowsLookAndFeel$XPBorderValue.getXPValue(Unknown Source)
at com.sun.java.swing.plaf.windows.WindowsLookAndFeel$XPValue.createValue(Unknown Source)
at javax.swing.UIDefaults.getFromHashtable(Unknown Source)
at javax.swing.UIDefaults.get(Unknown Source)
at javax.swing.MultiUIDefaults.get(Unknown Source)
at javax.swing.UIDefaults.getBorder(Unknown Source)
at javax.swing.UIManager.getBorder(Unknown Source)
at javax.swing.border.TitledBorder.getBorder(Unknown Source)
at javax.swing.border.TitledBorder.getBorderInsets(Unknown Source)
at javax.swing.border.AbstractBorder.getBorderInsets(Unknown Source)
at javax.swing.JComponent.getInsets(Unknown Source)
at java.awt.GridLayout.minimumLayoutSize(Unknown Source)
at java.awt.Container.minimumSize(Unknown Source)
at java.awt.Container.getMinimumSize(Unknown Source)
at javax.swing.JComponent.getMinimumSize(Unknown Source)
at java.awt.BorderLayout.minimumLayoutSize(Unknown Source)
at java.awt.Container.minimumSize(Unknown Source)
at java.awt.Container.getMinimumSize(Unknown Source)
at javax.swing.JComponent.getMinimumSize(Unknown Source)
at java.awt.BorderLayout.minimumLayoutSize(Unknown Source)
at java.awt.Container.minimumSize(Unknown Source)
at java.awt.Container.getMinimumSize(Unknown Source)
at javax.swing.JComponent.getMinimumSize(Unknown Source)
at java.awt.GridBagLayout.GetLayoutInfo(Unknown Source)
at java.awt.GridBagLayout.getLayoutInfo(Unknown Source)
at java.awt.GridBagLayout.minimumLayoutSize(Unknown Source)
at java.awt.Container.minimumSize(Unknown Source)
at java.awt.Container.getMinimumSize(Unknown Source)
at javax.swing.JComponent.getMinimumSize(Unknown Source)
at java.awt.BorderLayout.minimumLayoutSize(Unknown Source)
at java.awt.Container.minimumSize(Unknown Source)
at java.awt.Container.getMinimumSize(Unknown Source)
at javax.swing.JComponent.getMinimumSize(Unknown Source)
at java.awt.BorderLayout.minimumLayoutSize(Unknown Source)
at java.awt.Container.minimumSize(Unknown Source)
at java.awt.Container.getMinimumSize(Unknown Source)
at javax.swing.JComponent.getMinimumSize(Unknown Source)
at javax.swing.BoxLayout.checkRequests(Unknown Source)
at javax.swing.BoxLayout.preferredLayoutSize(Unknown Source)
at javax.swing.plaf.basic.BasicOptionPaneUI.getPreferredSize(Unknown Source)
at javax.swing.JComponent.getPreferredSize(Unknown Source)
at java.awt.BorderLayout.preferredLayoutSize(Unknown Source)
at java.awt.Container.preferredSize(Unknown Source)
at java.awt.Container.getPreferredSize(Unknown Source)
at javax.swing.JComponent.getPreferredSize(Unknown Source)
at javax.swing.JRootPane$RootLayout.preferredLayoutSize(Unknown Source)
at java.awt.Container.preferredSize(Unknown Source)
at java.awt.Container.getPreferredSize(Unknown Source)
at javax.swing.JComponent.getPreferredSize(Unknown Source)
at java.awt.BorderLayout.preferredLayoutSize(Unknown Source)
at java.awt.Container.preferredSize(Unknown Source)
at java.awt.Container.getPreferredSize(Unknown Source)
at java.awt.Window.pack(Unknown Source)
at javax.swing.JOptionPane.initDialog(Unknown Source)
at javax.swing.JOptionPane.createDialog(Unknown Source)
at javax.swing.JOptionPane.showOptionDialog(Unknown Source)
at me.roan.kps.Main.configure(Main.java:552)
at me.roan.kps.Main.main(Main.java:200)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at com.sun.java.swing.plaf.windows.XPStyle.getTypeEnumName(Unknown Source)
at com.sun.java.swing.plaf.windows.XPStyle.getBorder(Unknown Source)
at com.sun.java.swing.plaf.windows.WindowsLookAndFeel$XPBorderValue.getXPValue(Unknown Source)
at com.sun.java.swing.plaf.windows.WindowsLookAndFeel$XPValue.createValue(Unknown Source)
at javax.swing.UIDefaults.getFromHashtable(Unknown Source)
at javax.swing.UIDefaults.get(Unknown Source)
at javax.swing.MultiUIDefaults.get(Unknown Source)
at javax.swing.UIDefaults.getBorder(Unknown Source)
at javax.swing.UIManager.getBorder(Unknown Source)
at javax.swing.border.TitledBorder.getBorder(Unknown Source)
at javax.swing.border.TitledBorder.getBorderInsets(Unknown Source)
at javax.swing.border.AbstractBorder.getBorderInsets(Unknown Source)
at javax.swing.JComponent.getInsets(Unknown Source)
at java.awt.GridLayout.minimumLayoutSize(Unknown Source)
at java.awt.Container.minimumSize(Unknown Source)
at java.awt.Container.getMinimumSize(Unknown Source)
at javax.swing.JComponent.getMinimumSize(Unknown Source)
at java.awt.BorderLayout.minimumLayoutSize(Unknown Source)
at java.awt.Container.minimumSize(Unknown Source)
at java.awt.Container.getMinimumSize(Unknown Source)
at javax.swing.JComponent.getMinimumSize(Unknown Source)
at java.awt.BorderLayout.minimumLayoutSize(Unknown Source)
at java.awt.Container.minimumSize(Unknown Source)
at java.awt.Container.getMinimumSize(Unknown Source)
at javax.swing.JComponent.getMinimumSize(Unknown Source)
at java.awt.GridBagLayout.GetLayoutInfo(Unknown Source)
at java.awt.GridBagLayout.getLayoutInfo(Unknown Source)
at java.awt.GridBagLayout.minimumLayoutSize(Unknown Source)
at java.awt.Container.minimumSize(Unknown Source)
at java.awt.Container.getMinimumSize(Unknown Source)
at javax.swing.JComponent.getMinimumSize(Unknown Source)
at java.awt.BorderLayout.minimumLayoutSize(Unknown Source)
at java.awt.Container.minimumSize(Unknown Source)
at java.awt.Container.getMinimumSize(Unknown Source)
at javax.swing.JComponent.getMinimumSize(Unknown Source)
at java.awt.BorderLayout.minimumLayoutSize(Unknown Source)
at java.awt.Container.minimumSize(Unknown Source)
at java.awt.Container.getMinimumSize(Unknown Source)
at javax.swing.JComponent.getMinimumSize(Unknown Source)
at javax.swing.BoxLayout.checkRequests(Unknown Source)
at javax.swing.BoxLayout.layoutContainer(Unknown Source)
at java.awt.Container.layout(Unknown Source)
at java.awt.Container.doLayout(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validate(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Why didn't I think of that myself![]()
Hope this helps.
//And yes, I'm using the latest Java 8 version.java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
It's so much funRoan wrote:
xD I probably wouldn't be able to search for bug for 5 hours straigt though xD.
:DRoan wrote:
I'd like to say so, but I honestly thougth I'd implemented that properly xD guess not
Uhm. Yes, you did forget to mention itRoan wrote:
I guess I forgot to mention that I actually improved on the config via command line functionality in v5.1. For the next version I'm going to improve on it even more by treating unrecognized non-ASCII characters as wild cards. This way all config files should be loaded, I hope xD
haha, and that all just for changing a few colors of some tick-marks c: They do look a lot better now, thoughRoan wrote:
^^ I bascially had to hack a part of the Java source code to implement them though :3. Variable assignment has never been so difficult:How to assign a stubborn variableprivate void setIcon(){
BasicMenuItemUI ui = (BasicMenuItemUI)this.getUI();
try {
Class<?> superClass = ui.getClass();
while(!superClass.getName().equals(BasicMenuItemUI.class.getName())){
superClass = superClass.getSuperclass();
}
Field field = superClass.getDeclaredField("checkIcon");
field.setAccessible(true);
field.set(ui, checkmark);
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
( ノ ゚ー゚)ノRoan wrote:
Implemented/fixed all this for the next version. The reload command key is: Ctrl + R.
Yeah, one second is more than enough c:Roan wrote:
Yup, that's right the 1000ms refresh rate is the maximum. I guess I could change the 1000, but who'd want such a high update rate :3. 1000ms is already quite slow. I'll just raise it if you think it would be useful though
^^Roan wrote:
I like breaking programs too :3
Who knows? o:Roan wrote:
xD You' re saying there'll actually be a point where you can no longer find any new bug o: that'd surprise me
yay \:D/Roan wrote:
I'm preatty sure different Java versions shouldn't be an issue. Well it'll be fixed with the new command line parsing I'm about the implement though
yup ^~^Roan wrote:
Ah so that's what it is o:
ThatRoan wrote:
o: this is quite serious (and weird) I wonder what causes this
No more mistakes here c:Roan wrote:
Oops looks like a made a mistake somewhere xD
[x]: Disabling track all disables all keys
Roan wrote:
Nicely spottedI don't think I'd ever have found that one o:
c:Roan wrote:
That was causes by a little oversight from moving all the config related stuff. Looks like I forgot to move a single line xD. It's fixed now. It actually still worked if you enabled it from the right click menu. I don't plan on ever removing this feature by the way since I use it all the time :3.
ヽ(。・ω・。)ノRoan wrote:
Implemented
xDSALZKARTOFFEEEL wrote:
It's so much funRoan wrote:
xD I probably wouldn't be able to search for bug for 5 hours straigt though xD.
Well I don't have any other solution. Also one non-ASCII character only counts for one character. So for example: something-こ.kpsconf2 would be interpreted as something-*.kpsconf2. Now any character is allowed at the place of the *. So *.kpsconf2 would only match .kpsconf2 files that have a name that is a single character long. So it'll still load -.kpsconf2 unless ofcourse there's another file with a one character name like こ.kpsconf2 that would match too. But not ab.kpsconf2.SALZKARTOFFEEEL wrote:
:DRoan wrote:
I'd like to say so, but I honestly thougth I'd implemented that properly xD guess notUhm. Yes, you did forget to mention itRoan wrote:
I guess I forgot to mention that I actually improved on the config via command line functionality in v5.1. For the next version I'm going to improve on it even more by treating unrecognized non-ASCII characters as wild cards. This way all config files should be loaded, I hope xD
I don't think, treating them as wildcards is the best solution, though. If I had a file called "–.kpsconf2" or, things like that, it wouldn't recognize this one file anymore, since it has been interpreted to "*.kpsconf2", which would be all files with the .kpsconf2 extension. This could be dangerous o:
Think of Japanese computers for example. A file called "こんふぃぐ.kpsconf2"* would probably not work properly, since it would be interpreted to "*****.kpsconf2" o:
* that would be "config" / "konfigu" in Japanese (Hiragana, because I can't remember Katakana that well just yet)
YupSALZKARTOFFEEEL wrote:
haha, and that all just for changing a few colors of some tick-marks c: They do look a lot better now, thoughRoan wrote:
^^ I bascially had to hack a part of the Java source code to implement them though :3. Variable assignment has never been so difficult:How to assign a stubborn variableprivate void setIcon(){
BasicMenuItemUI ui = (BasicMenuItemUI)this.getUI();
try {
Class<?> superClass = ui.getClass();
while(!superClass.getName().equals(BasicMenuItemUI.class.getName())){
superClass = superClass.getSuperclass();
}
Field field = superClass.getDeclaredField("checkIcon");
field.setAccessible(true);
field.set(ui, checkmark);
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
Yeah bugs really like to hide :3.SALZKARTOFFEEEL wrote:
( ノ ゚ー゚)ノRoan wrote:
Implemented/fixed all this for the next version. The reload command key is: Ctrl + R.Yeah, one second is more than enough c:Roan wrote:
Yup, that's right the 1000ms refresh rate is the maximum. I guess I could change the 1000, but who'd want such a high update rate :3. 1000ms is already quite slow. I'll just raise it if you think it would be useful though^^Roan wrote:
I like breaking programs too :3Who knows? o:Roan wrote:
xD You' re saying there'll actually be a point where you can no longer find any new bug o: that'd surprise me
There are things that just don't have many bugs, and there are things that have new bugs discovered even after many years
would surprise me too, though
Yeah it's kinda creepy xD.SALZKARTOFFEEEL wrote:
yay \:D/Roan wrote:
I'm preatty sure different Java versions shouldn't be an issue. Well it'll be fixed with the new command line parsing I'm about the implement thoughyup ^~^Roan wrote:
Ah so that's what it is o:ThatRoan wrote:
o: this is quite serious (and weird) I wonder what causes thisis the creepiest smiley ever xD
YaySALZKARTOFFEEEL wrote:
No more mistakes here c:Roan wrote:
Oops looks like a made a mistake somewhere xD
[x]: Disabling track all disables all keys
:3 so cuteSALZKARTOFFEEEL wrote:
Roan wrote:
Nicely spottedI don't think I'd ever have found that one o:
I'm sorry, it just reminded me of this :3
There are no new bug reports in this post o: that really surprised me xD.SALZKARTOFFEEEL wrote:
c:Roan wrote:
That was causes by a little oversight from moving all the config related stuff. Looks like I forgot to move a single line xD. It's fixed now. It actually still worked if you enabled it from the right click menu. I don't plan on ever removing this feature by the way since I use it all the time :3.
ヽ(。・ω・。)ノRoan wrote:
Implemented
yay c:
YayRumi wrote:
Hey, sorry for the late reply![]()
Just wanted to let you know that 5.2s workaround fixed my issue.Many thanks!
Huh, from my understanding of asterisks/wild cards they represent any number of any character!Roan wrote:
Well I don't have any other solution. Also one non-ASCII character only counts for one character. So for example: something-こ.kpsconf2 would be interpreted as something-*.kpsconf2. Now any character is allowed at the place of the *. So *.kpsconf2 would only match .kpsconf2 files that have a name that is a single character long. So it'll still load -.kpsconf2 unless ofcourse there's another file with a one character name like こ.kpsconf2 that would match too. But not ab.kpsconf2.
Yeah, she really is :3Roan wrote:
:3 so cute
o.O that's much o:Roan wrote:
Edit
Update notes (v5.3):
- Added the option to track mouse buttons
- Added the option to save the on screen position of the program to the config.
Edit 2
Update notes (v5.4):
- Fix the backgroud opacity being used as the graph foreground opacity.
- Fix the key color not being inverted when the background opacity is 0%.
- Fixed some rendering issues when only displaying a single panel.
- Fix changing the colors resetting the key counters.
- Fix the pause check mark in the right click menu not being toggled by Ctrl + T.
- Change overlay osu! to overlay mode since it doesn't always overlay osu! properly.
It probably has something to do with this fix that you previously wrote:
- Fix the key color not being inverted when the background opacity is 0%.
^^ actually I was starting too fee lonely ;-;SALZKARTOFFEEEL wrote:
Woah, it's been a while :/ I completely skipped version 5.3 and you fixed so many bugs on your own!
Sorry for that :c
Yeah, normal behavior would be to match any number of characters. But since I implemented the wildcarding system for KeysPerSecond myself I restricted it to only a single character per non-ASCII characterSALZKARTOFFEEEL wrote:
Huh, from my understanding of asterisks/wild cards they represent any number of any character!Roan wrote:
Well I don't have any other solution. Also one non-ASCII character only counts for one character. So for example: something-こ.kpsconf2 would be interpreted as something-*.kpsconf2. Now any character is allowed at the place of the *. So *.kpsconf2 would only match .kpsconf2 files that have a name that is a single character long. So it'll still load -.kpsconf2 unless ofcourse there's another file with a one character name like こ.kpsconf2 that would match too. But not ab.kpsconf2.
"*.*" is used in many different languages and situations to say "every file", not just every file with a file name and extension that's only one character long! o:
I mean, if it is actually true that every non-ASCII character represents one other character in your program, then that's great, but I thought actual wild cards worked differently
YaySALZKARTOFFEEEL wrote:
Yeah, she really is :3Roan wrote:
:3 so cuteYeah, I didn't have that much time and I couldn't find any that quick c:Roan wrote:
There are no new bug reports in this post o: that really surprised me xD.
which doesn't mean that I don't have any now c:
Well I had some spare time :3SALZKARTOFFEEEL wrote:
o.O that's much o:Roan wrote:
Edit
Update notes (v5.3):
- Added the option to track mouse buttons
- Added the option to save the on screen position of the program to the config.
Edit 2
Update notes (v5.4):
- Fix the backgroud opacity being used as the graph foreground opacity.
- Fix the key color not being inverted when the background opacity is 0%.
- Fixed some rendering issues when only displaying a single panel.
- Fix changing the colors resetting the key counters.
- Fix the pause check mark in the right click menu not being toggled by Ctrl + T.
- Change overlay osu! to overlay mode since it doesn't always overlay osu! properly.
SALZKARTOFFEEEL wrote:
Bugs:
1) The context menu controls have the same keys as the window-moving, the arrow keys. They interfere with each other. I don't think this is that big of a deal, but I wanted to point it out c:
Ehm, yeah, xD, this is a side effect of a certain bug fix :3, which apparently introduced new bugs xD.SALZKARTOFFEEEL wrote:
2) Removing any keys (mouse buttons as well) doesn't work o: The keys aren't displayed anymore, but they still affect the average, maximum, etc.
Roan wrote:
- Fix changing the colors resetting the key counters.
Yup, this has exactly the same cause as #2 ^^SALZKARTOFFEEEL wrote:
3) This probably has to do with bug #2, but anyway: Loading a new config file also doesn't disable the previous keys, I can still use them.
Well I think it should just reset them, so I'll call it a bug :3SALZKARTOFFEEEL wrote:
4) I'm not sure whether this is a feature or a bug. Loading a new config file doesn't reset any of the stats or totals.
Well this is interesting, since this actually doesn't happen on Window 7 or Windows 8 o: I wonder what they changed xD. It looks as though theSALZKARTOFFEEEL wrote:
5) Having the background color opacity lower than 100% does.. stuf.... I've prepared a video o:
At first I thought, this would only affect the color negation of the key counters, that's why I made this GIF file:
But no, it affects pretty much everythingFor example, the general slowness of the program and it showing weird white strips in the config menu is weird to me too. When I reset the opacity to 100% everything is fine again, but not when it's below that o:
It probably has something to do with this fix that you previously wrote:
- Fix the key color not being inverted when the background opacity is 0%.
The color picker already has cancel functionality :3. The color menu & add key menu also have it. I guess I'll add it for the update rate, graph, precision & size too since it shouldn't be too difficult to add anyway.SALZKARTOFFEEEL wrote:
Request:
1) I think we both didn't even think of this. The key counter has it's cancel-button now, but everything else doesn't
I believe that it's not very important, there isn't all that much to lose at the other menus (except the color picker) o:
Probably, bugs always show up when you least expect them, ninja bugs :3SALZKARTOFFEEEL wrote:
Uhm, that's it again. I probably missed something, though
SALZKARTOFFEEEL wrote:
By the way, and this has nothing to do with KeysPerSecond, I figured out some new ways to use the auto-replace feature of AutoHotkey, which I use in my program to create the "–", "©", "≠", and so on. It can now quickly tell time and date, and restart/exit itself just by typing the 'commands' anywhere.
And then I actually made it so that it would autocomplete the osu! BBCode tags, just for writing these posts a bit easier c:
Though, I'm pretty sure that I won't really release it publicly o:
osu! can be in fullscreen resolution, but it can't actually have the fullscreen property set. Otherwise both programs will fight for the top window property (fullscreen implies topmost window) and that causes neither of them to work correctly :/WF Night wrote:
if my osu! is in full screen mode, can this be showed?
You'd have to un-prioritize osu by being on top (which I believe is impossible when it's in fullscreen without breaking it).Roan wrote:
Otherwise both programs will fight for the top window property (fullscreen implies topmost window) and that causes neither of them to work correctly :/
>.< I'm sorry for the late reply, for some reason I got unsubscribed from the thread and I've been kinda busy with exams. That being said, this looks like quite a weird bug. It might have something to do with keyboard layouts and as of now I'm not yet sure whether or not it's an issue with the native library I'm using or my program. I'll look into it after exams ^^.Kizunuko-P wrote:
Good kps programs for osu (or other games), thanks you
Btw, I don't know if this is a bug, but, when I add key on the kps, some show a totally different thing, like the key ": or /" on a azerty keyboard is show as "barre oblique" (french word for choosing "/") or the key "! or §" is show as "¥" or even the shift key on the right show an error "unknown keycode: 0xe36" ;w;
So I was wondering if you can do something for this because it's really weird
Here a screen of the programs when launched : http://i.imgur.com/160g6zJ.png
Here one on the key panel : http://i.imgur.com/w0I0MUu.png
I tried taking the fullscreen property from osu! by force, but that came with some undesirabe side effects xD. Most notably the fact that all of the benefits of running fullscreen where goneIxWolfie wrote:
You'd have to un-prioritize osu by being on top (which I believe is impossible when it's in fullscreen without breaking it).Roan wrote:
Otherwise both programs will fight for the top window property (fullscreen implies topmost window) and that causes neither of them to work correctly :/
Do you mean extra custom command bindings? If that's the case that shouldn't be too hard to do since most of the command related logic is quite modular already. I'll give it a go after exams ^^.IxWolfie wrote:
On another note, is there a way you can add commands to be added. For example, ctrl+1? I'm kind of multi-purposing this for something else, and I can't find a KPS program that will do that.
Just to be sure we think the same thing, when it asks for a keybind, and I put Alt+4, it'll only go up when I press alt and 4 at the same time. Having 4, and alt+4 as separate commands.Roan wrote:
Do you mean extra custom command bindings? If that's the case that shouldn't be too hard to do since most of the command related logic is quite modular already. I'll give it a go after exams ^^.
P.S. My exams end wednesday.
Hmm, I not quite sure if I understand it correctly or not. As I read it now you want 'Alt+4' and '4' to act as seperate commands right? And pressing 'Alt+4' should not trigger the '4' command.IxWolfie wrote:
Just to be sure we think the same thing, when it asks for a keybind, and I put Alt+4, it'll only go up when I press alt and 4 at the same time. Having 4, and alt+4 as separate commands.Roan wrote:
Do you mean extra custom command bindings? If that's the case that shouldn't be too hard to do since most of the command related logic is quite modular already. I'll give it a go after exams ^^.
P.S. My exams end wednesday.
I tried it earlier, and it wouldn't actually recognize Alt+4 as a command. It'd see that I pressed 4, and assume that I only wanted 4 down.Roan wrote:
Hmm, I not quite sure if I understand it correctly or not. As I read it now you want 'Alt+4' and '4' to act as seperate commands right? And pressing 'Alt+4' should not trigger the '4' command.
If that's the case then it should already work that way. If it doesn't then you've probably found a bug .
o: you're talking about tracked keys. Since I've improved the modifier system I suppose that could be implemented. I'll give it a go tomorrow if I have time. Not sure how I'm going to visually display that the key has Ctrl and/or Alt added though.IxWolfie wrote:
I tried it earlier, and it wouldn't actually recognize Alt+4 as a command. It'd see that I pressed 4, and assume that I only wanted 4 down.Roan wrote:
Hmm, I not quite sure if I understand it correctly or not. As I read it now you want 'Alt+4' and '4' to act as seperate commands right? And pressing 'Alt+4' should not trigger the '4' command.
If that's the case then it should already work that way. If it doesn't then you've probably found a bug .
Example:
Assign a key.
Hold Alt, then press 4.
Only 4 will appear (when I tested it).
Yes, that's it! Sorry for being difficult, lmao. I'm using for something COMPLETELY unrelated to osu. I'm actually using it for an MMO, where some of my skill hotkeys are alt+1-5 for example. On top of that, some of my hotkeys are 1-5. So, I want it to track the key combinations alt+1, through alt+5, as well as 1-5 as separate keys. This is the only program that actually has a decent GUI to it to show on a video, or on stream perhaps.Roan wrote:
o: you're talking about tracked keys. Since I've improved the modifier system I suppose that could be implemented. I'll give it a go tomorrow if I have time. Not sure how I'm going to visually display that the key has Ctrl and/or Alt added though.
So just to check I now understand it. You want the option to track key presses for a key-modifier combination such as Alt+4.
IxWolfie wrote:
Yes, that's it! Sorry for being difficult, lmao. I'm using for something COMPLETELY unrelated to osu. I'm actually using it for an MMO, where some of my skill hotkeys are alt+1-5 for example. On top of that, some of my hotkeys are 1-5. So, I want it to track the key combinations alt+1, through alt+5, as well as 1-5 as separate keys. This is the only program that actually has a decent GUI to it to show on a video, or on stream perhaps.Roan wrote:
o: you're talking about tracked keys. Since I've improved the modifier system I suppose that could be implemented. I'll give it a go tomorrow if I have time. Not sure how I'm going to visually display that the key has Ctrl and/or Alt added though.
So just to check I now understand it. You want the option to track key presses for a key-modifier combination such as Alt+4.
For tracking it, you could just do A+1, or C+1? It'd keep it small, so it doesn't stick super far out of the physical key icon that's there, perhaps?
Take your time! No rush at all!Roan wrote:
:) okay, now I can start adding it. I don't really have a strict ETA but I think I'll be able to get it done before the end of this week.
I never even though about using it for an MMO though xD. But it's a very valid use, so I'll be adding support for keys with one or more of the three modifier keys (shift, alt, ctrl) I added shift since that is the modifier key I use in MMO's.
Kizunuko-P wrote:
Good kps programs for osu (or other games), thanks you![]()
Btw, I don't know if this is a bug, but, when I add key on the kps, some show a totally different thing, like the key ": or /" on a azerty keyboard is show as "barre oblique" (french word for choosing "/") or the key "! or §" is show as "¥" or even the shift key on the right show an error "unknown keycode: 0xe36" ;w;
So I was wondering if you can do something for this because it's really weird
Here a screen of the programs when launched : http://i.imgur.com/160g6zJ.png
Here one on the key panel : http://i.imgur.com/w0I0MUu.png
IxWolfie wrote:
Roan wrote:
:) okay, now I can start adding it. I don't really have a strict ETA but I think I'll be able to get it done before the end of this week.
I never even though about using it for an MMO though xD. But it's a very valid use, so I'll be adding support for keys with one or more of the three modifier keys (shift, alt, ctrl) I added shift since that is the modifier key I use in MMO's.
Take your time! No rush at all!
Roan wrote:
Implemented, I haven't tested it very thoroughly though so there might still be some bugs.
P.S. One minor detail is that pressing the key and after that a modifier doesn't trigger the tracker. But finding a way around that would impact performance. Besides you usually already have the modifier key down when pressing the 'real' key. I might change this later though if I come up with an efficient algorithm.
IxWolfie wrote:
Roan wrote:
Implemented, I haven't tested it very thoroughly though so there might still be some bugs.
P.S. One minor detail is that pressing the key and after that a modifier doesn't trigger the tracker. But finding a way around that would impact performance. Besides you usually already have the modifier key down when pressing the 'real' key. I might change this later though if I come up with an efficient algorithm.
Alright! I'll test it in a little bit and tell you if I find anything. Big shoutout! <3 Also, these new forums are a little weird.. I'm not used to it yet. :p
I think I get the general idea (being able to arrange the keys in any layout horizontal & vertical). It'll probably take a while to implement thoughRockRoller wrote:
(I didnt read all 5 pages, hoping nobody allready made these suggestions)
I really like your program. The functionality is perfect, but it doesnt look god for me. I would be happy if we could have a little bit more freedom with the design.
I would replace the default keycounter with yours, but yours is horizontal.
What I would wish is that we cann re-arange the positionating of the keys, so we could for example form it like the inputoverlay. Then we could do for example K1,K2,Avg and Max instead of K1,k2,M1,M2 from osus keycounter.
I hope you can understand my bad english, if u have any questions about my suggestions please answer to this reply or write me ingame.
I'm glad you like itNxshio wrote:
I was searching for this aswell. Luckily you made one. Thanks!
You can, but only if you don't run osu! with the fullscreen option checked (fullscreen resolution is fine).Applome wrote:
can i see it while playing osu ???
Roan wrote:
osu! can be in fullscreen resolution, but it can't actually have the fullscreen property set. Otherwise both programs will fight for the top window property (fullscreen implies topmost window) and that causes neither of them to work correctly :/
I've experimented with a lot of things, but currently I haven't found an alternative or fix for this issue yet.
You're welcomeVahr wrote:
THanks for making this, appreciate the help!
Hi, thank you for reporting this. I just tested it and it seems that I broke it somehow.anti- wrote:
Hi, Firstly , thank you for making this program,
but i'm afraid that it (or maybe only me) have the problem of using commands,
it seems like Ctrl + P (and other commands) is not working.
Do you have any recommandations that i have to do?
It's already there you can pass a config file to the program either via the command line or if you associate the .kpsconf2 file format with the executable.nobully wrote:
Hi, could you make an auto-load feature for config files? Thanks!
Yeah I've had that idea for a while as well.nobully wrote:
Oh okay, I totally didn't think of a bat file, thanks! Though what I had in mind was the program does this for you, you just tell it which config to load automatically if you choose to. Just something I thought of
EDIT: I made a shortcut with the target being "path\keyspersecond.exe" "path\kpsconfig.kpsconf2" and that worked great 👌
You're welcomebreazingstar wrote:
thx for great tool
I'm sorry there is currently no way to do thisReTLoM wrote:
ok i try to use this for Mania 7k
here my concern:
https://cdn.discordapp.com/attachments/ ... nknown.png
but i want it more like
https://cdn.discordapp.com/attachments/ ... nknown.png
is there a way to accomplish this ?
ThanksSonzai no muda wrote:
i will take
Thanksob7 wrote:
I know this is an old thread, but really nice program, looks nice on stream too, good job!
That's weird, the only explanation I can come up with for that is that the display manger doesn't think it's required to update the window since it's not directly visible. Personally I also have it setup with osu! running in fullscreen mode though and I don't have any issues with it. However that's probably because I run OBS and KeysPerSecond on a different monitor so the window is always visible. Since I'm currently not at home I do not have the means to do any extensive testing, but I'll try to run some tests near the end of this week or the start of the next week. I strongly suspect it to be an operating system optimization though that prevents rendering updates on windows that are not directly visible. If you are running KeysPerSecond on a second monitor though I would start by trying all the different window capture options in OBS._ToorU wrote:
When I open osu! in fullscreen mode, OBS stops updating KPS counter so I have to tab out of the game in order to make OBS show updated KPS values. How to fix that? I don't play in window mode so don't suggest that.
You're right that doesn't really look quite right xD. That being said I don't know what would cause this issue. I'll look into it though. Thank you for reporting this ^^SuiGeneris wrote:
I don't know if it's just me, but I wanna use this for other things, not just osu, it's really really good. However...if I have it set to arrow keys, it umm, doesn't display them right, fully.
The left arrow key is rather...broken, plus the sizes between the left and right, and up and down, keys kind of bother me? I know there's probably not many symbols for that kind of thing but I certainly think it is worth telling you. Let me know if there's a way to improve that and if there is a plan to. Everything else though is perfect, but this is on the off chance I use a game that's arrow keys mainly, but normal wasd games are fine.
So I fixed this one by using a different set of arrow symbolsSuiGeneris wrote:
Sounds good! Not gonna lie, didn't think you'd get back to me so fast! But if you do get a fix out then you've made this a really good stream element for me to have in practically all streams
That sounds interesting xD I have no idea why this would happen though and I can't seem to reproduce it eitherSuiGeneris wrote:
UNRELATED EDIT:
So, I do have this up in OBS, as its own window capture, works great, now the only issue is if I close the window while OBS is up, it for some reason opens the key input screen? I don't really know why or how, or if that's even fixable, just thought I would let you know, because it's a bit annoying to have to sometimes readjust it on my layout.can't spell tonight it seems lol
Nonetheless a very weird issue xDSuiGeneris wrote:
Looks much better, also I think it was just OBS doing...OBS things, seems to sometimes happen sometimes not, but it seems certainly lessened with the window title must match option, because I have another java running program up so I think it confused the poor counter.
Hmm, that's really weird, as far as I know the symbols I used (⯅⯆⯇⯈) are part of the UTF standard and should therefore also be available preatty much anywhere. I'll see if I can find computer/laptop that doesn't like them either. I did verify the executable and it works fine for me. Actually, if I save the configuration and load it again the symbols are gone .-.SuiGeneris wrote:
Huh..weird, I went into it and remade my arrow key bindings...and well, here's the thing.
For some reason they're boxes nowI think arrow keys just aren't friendly to this program. Unless anyone else wants to say they're fine and mine is just dumb. I downloaded from the standard window exe not java's download if that helps. I really like this program so that's why I wanna let you know the issues about it.
Alright, second attemptSuiGeneris wrote:
Alright! Thanks though.
Technic360xbox wrote:
thx you!!!!!!
rhyrhy wrote:
I tried to use this program with other games, but some games that prevent other screen on the game screen (e.g : undertale, rabi-ribi, etc.) I can't use it even with overlay mod. Can you fix this if able?
TTG_DRAGON wrote:
How Do i start it up on mac i cant get it to work
Hey, there's no real setup required to use the program. You only need to download the executable (if you're on Windows) and then double click that (or right click > open) to run the application. After that you might want to customise the look or just click on "OK" to use the default theme. If this does not work for some reason, please let me know.Balu924 wrote:
Heyy, how can i set it up?
use obs and capture osu and the kps window at the same timeKelk1 wrote:
Can we have our KPS during a replay ?
Like nobully said, you'll have to use something like a screen recording for that. When you're watching a replay no keystrokes are sent to your operating system, osu! just plays the replay data, so there's not really anything for me to capture.Kelk1 wrote:
Can we have our KPS during a replay ?
ThanksFutabaLovesYou wrote:
that looks really cool! Will 100% try it out.
Hey, both features have been requested before and are already on my todo list. I cant really give any estimate for when I'll actually be able to get around to implementing them though...KenZ wrote:
request feature auto load config + stats upon start program like uhh .ini file or something ty <3
Hey, I still haven't really decided on anything regarding the implementation of an overlay. I do still want to try, but all the concerns and complications highlighting in my previous post still stand.RayStar wrote:
this application have do not active on full-screen.
i was saw the you are reply. i was doesn't knew situation in the this application.
however a lot of player have doing play with full screen mode.
so i request to add function of active on with full screen mode if a lot of have you free time.
thank you for develop to this application for us anyway <3
If osu! is running in full screen mode (which it probably is), then it is not possible to place another program on top of it (since there can only ever be one full screen program). Some programs work around this issue by injecting code into the program they want to appear on top of (e.g. Steam overlay). Though technically these programs are not actually on top of the program but rather they injected themselves into that program. I have a similar feature on my todo list, but there are a lot of issues and concerns regarding such a feature. I've highlighted the major ones in an earlier reply here community/forums/posts/7391965Insid3 wrote:
its great! but thers a problem. i cant place it on top of osu. i have no idea why tho ;-;
thank youRoan wrote:
If osu! is running in full screen mode (which it probably is), then it is not possible to place another program on top of it (since there can only ever be one full screen program). Some programs work around this issue by injecting code into the program they want to appear on top of (e.g. Steam overlay). Though technically these programs are not actually on top of the program but rather they injected themselves into that program. I have a similar feature on my todo list, but there are a lot of issues and concerns regarding such a feature. I've highlighted the major ones in an earlier reply here community/forums/posts/7391965Insid3 wrote:
its great! but thers a problem. i cant place it on top of osu. i have no idea why tho ;-;
The workaround for the time being is to not run osu! in full screen mode (full screen borderless is fine). But this can cause performance issues for osu! So whether or not that's viable varies on a case-by-case basis.
ThanksInsid3 wrote:
thank youRoan wrote:
If osu! is running in full screen mode (which it probably is), then it is not possible to place another program on top of it (since there can only ever be one full screen program). Some programs work around this issue by injecting code into the program they want to appear on top of (e.g. Steam overlay). Though technically these programs are not actually on top of the program but rather they injected themselves into that program. I have a similar feature on my todo list, but there are a lot of issues and concerns regarding such a feature. I've highlighted the major ones in an earlier reply here community/forums/posts/7391965Insid3 wrote:
its great! but thers a problem. i cant place it on top of osu. i have no idea why tho ;-;
The workaround for the time being is to not run osu! in full screen mode (full screen borderless is fine). But this can cause performance issues for osu! So whether or not that's viable varies on a case-by-case basis.its really a amazing kps counter
npRoan wrote:
ThanksInsid3 wrote:
thank youRoan wrote:
If osu! is running in full screen mode (which it probably is), then it is not possible to place another program on top of it (since there can only ever be one full screen program). Some programs work around this issue by injecting code into the program they want to appear on top of (e.g. Steam overlay). Though technically these programs are not actually on top of the program but rather they injected themselves into that program. I have a similar feature on my todo list, but there are a lot of issues and concerns regarding such a feature. I've highlighted the major ones in an earlier reply here community/forums/posts/7391965Insid3 wrote:
its great! but thers a problem. i cant place it on top of osu. i have no idea why tho ;-;
The workaround for the time being is to not run osu! in full screen mode (full screen borderless is fine). But this can cause performance issues for osu! So whether or not that's viable varies on a case-by-case basis.its really a amazing kps counter
Thank youInsid3 wrote:
npRoan wrote:
ThanksInsid3 wrote:
thank youRoan wrote:
If osu! is running in full screen mode (which it probably is), then it is not possible to place another program on top of it (since there can only ever be one full screen program). Some programs work around this issue by injecting code into the program they want to appear on top of (e.g. Steam overlay). Though technically these programs are not actually on top of the program but rather they injected themselves into that program. I have a similar feature on my todo list, but there are a lot of issues and concerns regarding such a feature. I've highlighted the major ones in an earlier reply here community/forums/posts/7391965Insid3 wrote:
its great! but thers a problem. i cant place it on top of osu. i have no idea why tho ;-;
The workaround for the time being is to not run osu! in full screen mode (full screen borderless is fine). But this can cause performance issues for osu! So whether or not that's viable varies on a case-by-case basis.its really a amazing kps counter
i wish the best of luck with you in osu and your programs
At the moment there is no support for injecting the program into osu! to make it appear as if it is on top of osu! On Windows there can only ever be one full screen application on a monitor, anything that wants to appear on top has to inject itself into the renderer of the full screen application. Implementing support for something like this comes with a fair number of issues and things to consider so while I'm considering it, I'm not sure if or when I'll work on this.strykeer25 wrote:
I don't understand if on windows it is possible to overlay it on full screen mode. I tried it without full screen and it works perfectly, but due to the full screen mode being off, there is a considerable delay when pressing keys.
ThanksN o v a wrote:
It seems you have put a lot of work into this. Im glad
Not sure if I completely understood the question, but if by key label you mean the display text of a panel, then there's currently no way to completely remove this. However, in the 'Add key' dialog you can double click the values in the 'key' column and change them to nothing. Although that will get ride of the text, there will still be space reserved on the panel for where the text would've gone. If completely removing the text and space reserved for the text is what you want, then I can put it on my todo list.LoPlomo wrote:
Is there a way to remove the key "label"? thanks for all the work ^^
Hey, like you've already figured out, the negative values are reserved for the special values (end/max). Currently the only way to get extra rows is indeed by moving something else up.sillypilly wrote:
Hey, I tried to make the row of keys, and the row of data (such as avg and cur) on 2 different rows, but on the y the only options are 0 or end which makes it into more rows? I can't figure out how to fix this.
EDIT: I figured out I can make the row of keys a higher y pos and the avg, cur and max at 0
I don't quite understand what you meanplayerrobeats3 wrote:
this is closing on robeats and osu - max
Overlaying a full screen application is not actually possible for any application. When you see so called overlays what they are actually doing is injecting custom code into the renderer of the game they are overlaying. An easy work around is to just play osu! in full screen windowed mode, but this of course can sometimes lead to lower performance.Arstz wrote:
Don't know if it is possible on Java, but I would really appreciate you adding an "Ignore fullscreen button" or something like that, so it would go over fullscreen apps. Your "Overlay doesn't seem to support it.
Well, I guess should have read previous posts there, sorry. If you say that understanding DirectX will be a ass pain then so be it. Maybe will try to make something similar on c++. Just was thinking about all those VN hooks, that were made by a couple of people - works fine. Anyway, using some library shouldn't be that hard, right? So far nice work on the app, will eagerly await your solution, whenever it comes.Roan wrote:
Overlaying a full screen application is not actually possible for any application. When you see so called overlays what they are actually doing is injecting custom code into the renderer of the game they are overlaying. An easy work around is to just play osu! in full screen windowed mode, but this of course can sometimes lead to lower performance.Arstz wrote:
Don't know if it is possible on Java, but I would really appreciate you adding an "Ignore fullscreen button" or something like that, so it would go over fullscreen apps. Your "Overlay doesn't seem to support it.
Making something that resembles an overlay, while technically possible, is a very tricky thing to do since you are tampering with the memory of a running game. If there are any bugs it's very easy to crash both applications, in addition you are also directly affecting the performance of the game since it now needs to render an additional overlay.
While I'm not against the idea completely and do have it on my long term todo list. It does take a fair bit of work to implement and if I do finish it I will include a fair warning. Especially games with anti-cheat software often don't like other programs messing with the memory of their game, save for some whitelisted applications.
For more details see my earlier replies about the topic: community/forums/posts/7391965 and community/forums/posts/7636887 and community/forums/posts/7749276
It's not so much just about understanding DirectX, it's about writing a DLL injection process and custom DLL with renderer modifications for all relevant versions of DirectX and OpenGL. Luckily there is a fair bit of overlap there. As far as I'm aware, while there are some implementations of specific overlay cases out there, no reliable generic libraries exist. If you know of any written in C/C++/Java then I would be interested.Arstz wrote:
Well, I guess should have read previous posts there, sorry. If you say that understanding DirectX will be a ass pain then so be it. Maybe will try to make something similar on c++. Just was thinking about all those VN hooks, that were made by a couple of people - works fine. Anyway, using some library shouldn't be that hard, right? So far nice work on the app, will eagerly await your solution, whenever it comes.Roan wrote:
Overlaying a full screen application is not actually possible for any application. When you see so called overlays what they are actually doing is injecting custom code into the renderer of the game they are overlaying. An easy work around is to just play osu! in full screen windowed mode, but this of course can sometimes lead to lower performance.Arstz wrote:
Don't know if it is possible on Java, but I would really appreciate you adding an "Ignore fullscreen button" or something like that, so it would go over fullscreen apps. Your "Overlay doesn't seem to support it.
Making something that resembles an overlay, while technically possible, is a very tricky thing to do since you are tampering with the memory of a running game. If there are any bugs it's very easy to crash both applications, in addition you are also directly affecting the performance of the game since it now needs to render an additional overlay.
While I'm not against the idea completely and do have it on my long term todo list. It does take a fair bit of work to implement and if I do finish it I will include a fair warning. Especially games with anti-cheat software often don't like other programs messing with the memory of their game, save for some whitelisted applications.
For more details see my earlier replies about the topic: community/forums/posts/7391965 and community/forums/posts/7636887 and community/forums/posts/7749276
Right now I am working on an another project so until finished don't expect anything. Anyhow, tested a couple of variants, EasyHook seems to work reliably enough: I could inject foreign DLLs in running osu! like fps monitor and process tracker. But as far as I am not sufficiently knowledgeable here it would take a bunch of time to understand the whole process. From here on now, まかせる。Roan wrote:
It's not so much just about understanding DirectX, it's about writing a DLL injection process and custom DLL with renderer modifications for all relevant versions of DirectX and OpenGL. Luckily there is a fair bit of overlap there. As far as I'm aware, while there are some implementations of specific overlay cases out there, no reliable generic libraries exist. If you know of any written in C/C++/Java then I would be interested.Arstz wrote:
Well, I guess should have read previous posts there, sorry. If you say that understanding DirectX will be a ass pain then so be it. Maybe will try to make something similar on c++. Just was thinking about all those VN hooks, that were made by a couple of people - works fine. Anyway, using some library shouldn't be that hard, right? So far nice work on the app, will eagerly await your solution, whenever it comes.Roan wrote:
Overlaying a full screen application is not actually possible for any application. When you see so called overlays what they are actually doing is injecting custom code into the renderer of the game they are overlaying. An easy work around is to just play osu! in full screen windowed mode, but this of course can sometimes lead to lower performance.Arstz wrote:
Don't know if it is possible on Java, but I would really appreciate you adding an "Ignore fullscreen button" or something like that, so it would go over fullscreen apps. Your "Overlay doesn't seem to support it.
Making something that resembles an overlay, while technically possible, is a very tricky thing to do since you are tampering with the memory of a running game. If there are any bugs it's very easy to crash both applications, in addition you are also directly affecting the performance of the game since it now needs to render an additional overlay.
While I'm not against the idea completely and do have it on my long term todo list. It does take a fair bit of work to implement and if I do finish it I will include a fair warning. Especially games with anti-cheat software often don't like other programs messing with the memory of their game, save for some whitelisted applications.
For more details see my earlier replies about the topic: community/forums/posts/7391965 and community/forums/posts/7636887 and community/forums/posts/7749276