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 bored I can't even play osu! for one hour straight o:Roan wrote:
^^ I just went for a 6 hours coding session :3
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 idiot That's a funny story now:Roan 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 worko: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
How to assign a stubborn variable
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 spotted I don't think I'd ever have found that one o:SALZKARTOFFEEEL 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 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.SALZKARTOFFEEEL 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 it . Thank you for reporting it thoughRumi 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.
Edit
Checklist:
[x]: Weird commandline behavior
[x]: Visual glitch with Ctrl + Y and nothing to display.
[x]: Disabling track all disables all keys
[x]: Enabling track all disables all counters
[x]: Add reset command key
[x]: Overlay option not working
[x]: Add a checkmark to the pause option
[x]: Double tapping a key causes it to register as a command key
That was a weird one ._. I ended up using the following piece of code just to detect if Ctrl is also pressed o.o
Weirdnesss
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)));
Edit 2
Implemented/fixed everything so I'm releasing version 5.2 now.