looks much better to me
can you implement ability to change colour? that would be cool to be able to change this.

can you implement ability to change colour? that would be cool to be able to change this.
Agrrox wrote: 3s3t6k
looks much better to me![]()
can you implement ability to change colour? that would be cool to be able to change this.
Sounds like a very nice featureMizyx wrote: 22x48
I think it would be great if you added opacity, cause some s could play better with it on
![]()
Thanks and I'll implement that asapiloveyou4ever wrote: 36q5
This is a very nice program
But can you add the function to show the 1 demical digits for the key per seconds?
I think it would be better
Thanks
Not exactly sure what you mean. But the reason I made this is because it's 'live'.Worst Mouse Aim wrote: 5r1x1t
You can get that by external programs... I guess the reason is streaming?
Mizyx wrote: 22x48
Edit:
Also resizable will be great too![]()
Implemented!Mizyx wrote: 22x48
I think it would be great if you added opacity, cause some s could play better with it on
![]()
ImplementedMizyx wrote: 22x48
Edit:
Also resizable will be great too![]()
That's indeed a little weird. I tried to reproduce the conflict however I can't read about 95% of beatoraja's interface xD. So I managed to run the program, but I am completely lost when it comes to importing songs.When using the search field in beatoraja my key presses are ing though.Agrrox wrote: 3s3t6k
I'm getting input conflicts when using KeysPerSecond with beatoraja BMS player(Be-Music Script). Input is delayed or not ing my presses when using both programs at same time.
https://github.com/exch-bms2/beatoraja
Euh I'm kinda short on time right now so I'm only going to answer some points right now :3SALZKARTOFFEEEL wrote: 61313y
Huh, I actually like this little program a lot, but it has some bugs and other weird stuff I want to point out!
Oh man, I hope I wasn't to nitpicky with you here :/
Again, I really like this program, at least the idea is fantastic, but these are the things I came across the first hour or so of testing.
I'm not expecting you to fix all of them, but at least read through these and consider it :^)
And here are a few feature requests I have:
1. (ironically) It doesn't launch when the path of the executable (or the jar) contains a "!"... which is bad... in a game, that's called "osu!"...
I moved the file to "D:\system\osu!" and it didn't work, in "D:\system\" however, it did! So, that's a bug, i guess.
2. The option "Overlay osu!" is (well irrelevant, who would not want it to overlay osu!? But also) not working when osu!'s in fullscreen.
3. It drains the performance way too much for what it's doing. For me, at a refresh rate of 1000 ms, it has almost the same U load as osu! itself at an unlimited frame rate (usually around 700-1500 fps). Even on 125 ms I still experienced lag spikes in osu!. But at least there's a simple solution for that: Just don't ever fucking use Java for real-time processing. Use C#, C++, Python, even fucking AutoHotkey if you like, but not Java...
4. I don't know what caused it and it doesn't happen anymore, but at first, while playing, the program was constantly lighting up in the taskbar as if it had a notification for me.
Aaaaaand that's it!
1. Making an installer, rather than a standalone file. It would be easier to manage the config file, since it could be loaded automatically.
1.5 Also right now the Load Config and Save Config windows always default to the documents folder. With an installer you could have it where the last file was loaded from.
2. Saving the position of the overlay in the config file. (And/Or making it easier to position, like by snapping to the edges of the screen)
some minor things left:
1. Maybe do the opacity in percent, would be easier for the s, I think.
2. The adding of keys is weird. Dunno. It works perfectly fine, but it's weird >.< Maybe make a window pop up and have the then press the key, not before pressing the button! o:
3. The config files could just be ordinary .cfg-files. Right now, you can't even edit them by hand (what I really like to do).
4. Make the overlay right-clickable (I'm kind of influenced by Rainmeter here, it does that really nicely). At least for maybe exiting, pausing the counter, etc. this function could be very useful.
Wow, what a long list D:
I know, some of these are not easy to fix, for example the performance thing, when you only know Java, or the "Overlay osu!" thing, because osu!'s a dick and it always wants to be on top of everything.
I hope, you at least understand what I mean with those things c:
Obviously, if you have questions, or you fixed something, let me know! I would love to see this program on my screen every day
I hope, I could help you with this :3
1. This is really interesting, lol.Right? o: I could only imagine some kind of error, wehre the exclamation mark is treated as part of the actual code. I'm not sure, but in Java that would be a Boolean negation, right?
2. I'm aware of this 'bug'. But it's not something I can fix. Well I tried but that didn't really work out. Since when I set my program to 'always on top' mode it's always competing with osu! for being to top most window. So in the end neither program was working like it shouldOkay, I actually wanted to run it with and with system privileges and I found another (veeery strange) bug! When running this program with system rights (using PsTools) I can't load/save config files
3. Real time processing is done in C actually. And on my old laptop (Intel Centrino U) it only takes 0~2% U (Firefox takes 10~50%). What really takes most of the U is the graph. But even so on my laptop that also only takes 2~4% U (slowest update rate 1000ms).
Thanks to your performance concerns I was able to find a major issue xD. Turns out that there was still some very old code left that was ultra inefficient, so please blame me for this and not Java >.<. Problem was that it would become exponentially more inefficient on a faster computer, so that's why I didn't really notice it. So I've changed it and on my computer the program now uses about 20 times less U xD.Now that seems pretty good! I'm looking at 0.8% U Power at 200 ms, instead of >20% at 1000 ms refresh rate!
4. It should only do that if the window was made visible again. So either on startup or when pressing Ctrl + Y. I'll see if I can replicate it though.For the record, it started doing that again! I noticed, it is actually stealing the window focus while it's doing that!
1. I personally really dislike installers. Since I like being able to drag my programs from computer to computer. As for the config part that is also possible without the program being installed, so I might look into that. But I'll make it optional for sure, since I for example have multiple config files for different mania modes and standard mode. Another option would be to associate the extension with the program so that you can just open the config files automatically. But that would require that you don't move the program to a different location. Hmm, this one is a little difficult xDYeah, I forgot to write that, I meant an optional installer alongside the standalone!
1.5 Also possible without an installerAlright ^^![]()
2. I could make it snap to the edges of a screen but that would be troublesome for that have multiple monitors. I think I'll just add a 'snap' option in the command menu I'm going to add for feature #4.Same here, alright ^^
1. I didn't do it in percentages O.O shame on me..... >.<haha, yea. That was SUCH a big issue! Not doing that in percentages! Pftt.
2. Yup I totally agree the addition of keys is weirdFor me, that's totally not an issue at the moment. The program is not very dialog heavy in my opinion, since you only have one extra window open at the time (two if you count the main window). So I think, you'd be way better off with another dialog box c:so weird that I always mess up myself..... Adding another option dialog would be possible. But I thought that the GUI was already pretty dialog heavy. If that's not an issue then I'll just make another dialog for it.
3. Hmm.... technically they could be. But currently they are serialized objects. Which is really really really convenient for me since I can load them really easy xD. Making them text based would be possible, but it would also be a lot of work, I'll see though if I'm in the mood I might do itWell, that's sort of just me that I want to edit them by hand, but if it is that much more convenient with serialized objects, leave it like that!![]()
4a. I should be able to implement this quite easily as soon as I have some time.Great c:
4b. Todo: pause functionality xD since that currently doesn't exist.
I've been investigating this but it's not caused by something in code I wrote :/. So I'll have to see if I can find the actual bug. If I can't fix the bug I'll just copy the program to the temp directory and execute it from there xD. Not all that convenient but it would work. From what I've been able to find out an ! in a file path is sometimes used to specify a zip archive so that's probably what's causing the issue. And you right on what the ! is in Java, it's indeed boolean negation ^^.SALZKARTOFFEEEL wrote: 61313y
Man, I'm so glad I could help you! c:
1. This is really interesting, lol.Right? o: I could only imagine some kind of error, wehre the exclamation mark is treated as part of the actual code. I'm not sure, but in Java that would be a Boolean negation, right?
xD yet another interesting bug. I'm guessing that when running as system you can't open the file since it is owned by the and not by system. Not sure though, but yeah I'm not going to fix itSALZKARTOFFEEEL wrote: 61313y
2. I'm aware of this 'bug'. But it's not something I can fix. Well I tried but that didn't really work out. Since when I set my program to 'always on top' mode it's always competing with osu! for being to top most window. So in the end neither program was working like it shouldOkay, I actually wanted to run it with and with system privileges and I found another (veeery strange) bug! When running this program with system rights (using PsTools) I can't load/save config files
I think, you can just ignore this bug, because who runs this with system rights? But I find it pretty interesting nonetheless
And no, running it as doesn't help keeping the overlay on top, nor does running as system :c
xD that's quite the improvement! And yeah Java has it's pros and cons, but the same goes for every other language, so for now I'm sticking with Java xD.SALZKARTOFFEEEL wrote: 61313y
3. Real time processing is done in C actually. And on my old laptop (Intel Centrino U) it only takes 0~2% U (Firefox takes 10~50%). What really takes most of the U is the graph. But even so on my laptop that also only takes 2~4% U (slowest update rate 1000ms).Thanks to your performance concerns I was able to find a major issue xD. Turns out that there was still some very old code left that was ultra inefficient, so please blame me for this and not Java >.<. Problem was that it would become exponentially more inefficient on a faster computer, so that's why I didn't really notice it. So I've changed it and on my computer the program now uses about 20 times less U xD.Now that seems pretty good! I'm looking at 0.8% U Power at 200 ms, instead of >20% at 1000 ms refresh rate!
Wow, actually i still don't like Java all that muchBut it's not that slow anymore, I guess c: *Sorry for blaming you Java ;-;*
Actually now that you mention it, that is intended behavior xD. Well actually it's a side effect. When you have to overlay osu! option enabled the program will make every attempt to stay the top window. Part of this functionality is to immediatly jump on top of other windows when they try to jump on top of the window. And, well, apparently that causes the icon to flash :/. It's not really I can remove though since if it doesn't have this functionality it is not guaranteed that I'll stay on top. When it's flashing it's basically telling you that it won the competion for top window from another programSALZKARTOFFEEEL wrote: 61313y
4. It should only do that if the window was made visible again. So either on startup or when pressing Ctrl + Y. I'll see if I can replicate it though.For the record, it started doing that again! I noticed, it is actually stealing the window focus while it's doing that!
It only occurs when the Overlay osu! option is set.
Well, true, I'll give it some more though and hopefully come up with a good system.SALZKARTOFFEEEL wrote: 61313y
Features:
1. I personally really dislike installers. Since I like being able to drag my programs from computer to computer. As for the config part that is also possible without the program being installed, so I might look into that. But I'll make it optional for sure, since I for example have multiple config files for different mania modes and standard mode. Another option would be to associate the extension with the program so that you can just open the config files automatically. But that would require that you don't move the program to a different location. Hmm, this one is a little difficult xDYeah, I forgot to write that, I meant an optional installer alongside the standalone!
I don't think making the config files launchable would be a good idea, they're usually stored in a location you don't normally go to when you want to run something.
Yeah such a terrible mistake >.<SALZKARTOFFEEEL wrote: 61313y
1.5 Also possible without an installerAlright ^^![]()
2. I could make it snap to the edges of a screen but that would be troublesome for that have multiple monitors. I think I'll just add a 'snap' option in the command menu I'm going to add for feature #4.Same here, alright ^^
1. I didn't do it in percentages O.O shame on me..... >.<haha, yea. That was SUCH a big issue! Not doing that in percentages! Pftt.![]()
I just implemented this xD.SALZKARTOFFEEEL wrote: 61313y
2. Yup I totally agree the addition of keys is weirdFor me, that's totally not an issue at the moment. The program is not very dialog heavy in my opinion, since you only have one extra window open at the time (two if you count the main window). So I think, you'd be way better off with another dialog box c:so weird that I always mess up myself..... Adding another option dialog would be possible. But I thought that the GUI was already pretty dialog heavy. If that's not an issue then I'll just make another dialog for it.
Also, the window with the key list wouldn't have to close every time you add another key!
I won't say that it won't happen but it's at the bottom of my todo listSALZKARTOFFEEEL wrote: 61313y
3. Hmm.... technically they could be. But currently they are serialized objects. Which is really really really convenient for me since I can load them really easy xD. Making them text based would be possible, but it would also be a lot of work, I'll see though if I'm in the mood I might do itWell, that's sort of just me that I want to edit them by hand, but if it is that much more convenient with serialized objects, leave it like that!![]()
This currently has the highest priority on my todo list :3.SALZKARTOFFEEEL wrote: 61313y
4a. I should be able to implement this quite easily as soon as I have some time.Great c:
4b. Todo: pause functionality xD since that currently doesn't exist.
And again thank you for helping ^^SALZKARTOFFEEEL wrote: 61313y
No hurries with these, you already changed so much so quick! I appreciate it very much :>
Again, I'm very happy that I could help you with this :3
huh, I've never heard of an exclamation mark specifying an archive before. Well, I guess it's not that big of a problem if it works from the temp directoryRoan wrote: 416a1m
If I can't fix the bug I'll just copy the program to the temp directory and execute it from there xD. Not all that convenient but it would work. From what I've been able to find out an ! in a file path is sometimes used to specify a zip archive so that's probably what's causing the issue. And you right on what the ! is in Java, it's indeed boolean negation ^^.
Actually, I think I've sort of messed up the explanation there xD What actually happens is that the explorer window doesn't even open at all!Roan wrote: 416a1m
xD yet another interesting bug. I'm guessing that when running as system you can't open the file since it is owned by the and not by system. Not sure though, but yeah I'm not going to fix it.
I still like Python better! ^~^Roan wrote: 416a1m
xD that's quite the improvement! And yeah Java has it's pros and cons, but the same goes for every other language, so for now I'm sticking with Java xD.
Well, I actually thought about that. Maybe there's another method in Java for this that doesn't make it flash :vRoan wrote: 416a1m
Actually now that you mention it, that is intended behavior xD. Well actually it's a side effect. When you have to overlay osu! option enabled the program will make every attempt to stay the top window. Part of this functionality is to immediatly jump on top of other windows when they try to jump on top of the window. And, well, apparently that causes the icon to flash :/. It's not really I can remove though since if it doesn't have this functionality it is not guaranteed that I'll stay on top. When it's flashing it's basically telling you that it won the competion for top window from another program. So I'm not sure if there is a way to disable it, but I'm going to look into it.
I'd like it if you would :3 Rechecking all these checkboxes / reloading the config file over and over again is kind of annoying. Right now I can totally forgive you for that, but when an installed program does that, man... It's like when you scroll down, click on something, go back and you're on top of the list again ._.Roan wrote: 416a1m
Well, true, I'll give it some more though and hopefully come up with a good system.
ヽ(。・ω・。)ノRoan wrote: 416a1m
I just implemented this xD.
Alright :^)Roan wrote: 416a1m
I won't say that it won't happen but it's at the bottom of my todo list.
Thanks for being patient, I've totally forgotten to reply to you D:Roan wrote: 416a1m
And again thank you for helping ^^
^^SALZKARTOFFEEEL wrote: 61313y
huh, I've never heard of an exclamation mark specifying an archive before. Well, I guess it's not that big of a problem if it works from the temp directoryRoan wrote: 416a1m
If I can't fix the bug I'll just copy the program to the temp directory and execute it from there xD. Not all that convenient but it would work. From what I've been able to find out an ! in a file path is sometimes used to specify a zip archive so that's probably what's causing the issue. And you right on what the ! is in Java, it's indeed boolean negation ^^.
Oh, yay (ノ・ω・)ノ I got it right! Boolean negation! c:
Actually, I think I've sort of messed up the explanation there xD What actually happens is that the explorer window doesn't even open at all!Roan wrote: 416a1m
xD yet another interesting bug. I'm guessing that when running as system you can't open the file since it is owned by the and not by system. Not sure though, but yeah I'm not going to fix it.
But yeah, it's really not something to worry about c:
I still like Python better! ^~^Roan wrote: 416a1m
xD that's quite the improvement! And yeah Java has it's pros and cons, but the same goes for every other language, so for now I'm sticking with Java xD.
Euh I guess I've fixed it ¯\_(ツ)_/¯SALZKARTOFFEEEL wrote: 61313y
Well, I actually thought about that. Maybe there's another method in Java for this that doesn't make it flash :vRoan wrote: 416a1m
Actually now that you mention it, that is intended behavior xD. Well actually it's a side effect. When you have to overlay osu! option enabled the program will make every attempt to stay the top window. Part of this functionality is to immediatly jump on top of other windows when they try to jump on top of the window. And, well, apparently that causes the icon to flash :/. It's not really I can remove though since if it doesn't have this functionality it is not guaranteed that I'll stay on top. When it's flashing it's basically telling you that it won the competion for top window from another program. So I'm not sure if there is a way to disable it, but I'm going to look into it.
Isn't really a problem at all, but I personally have found it a bit distracting.
Implemented the ing of config files via the command line, since that was easy to implement anyway xD. Still thinking of more improvements here. Also I noticed that the overlay osu! option wasn't being saved to the config xD so I've fixed that too.SALZKARTOFFEEEL wrote: 61313y
Features:
I'd like it if you would :3 Rechecking all these checkboxes / reloading the config file over and over again is kind of annoying. Right now I can totally forgive you for that, but when an installed program does that, man... It's like when you scroll down, click on something, go back and you're on top of the list again ._.Roan wrote: 416a1m
Well, true, I'll give it some more though and hopefully come up with a good system.
I only just read at your todo list that you're working on ing the config file via the command line, which is a fantastic idea! :3
Yeah that isn't happening since they are indeed actually dialogsSALZKARTOFFEEEL wrote: 61313y
ヽ(。・ω・。)ノRoan wrote: 416a1m
I just implemented this xD.
Alright :^)Roan wrote: 416a1m
I won't say that it won't happen but it's at the bottom of my todo list.
One more thing:
This is probably supposed to happen, but the config window doesn't appear in the taskbar. If it is just an option you can simply set to true or something, in my opinion, you shouldBut if it is because of maybe the type of window (like a special type for dialogs, overlays, etc.) and it is a lot of effort to edit, just leave it like it is c:
I just wanted to point it out anyway ^^
^^SALZKARTOFFEEEL wrote: 61313y
Thanks for being patient, I've totally forgotten to reply to you D:Roan wrote: 416a1m
And again thank you for helping ^^
And thanks for letting me help, I really enjoy it! <3
So you did use a different technique then? c:Roan wrote: 416a1m
Euh I guess I've fixed it ¯\_(ツ)_/¯
I'm guessing simply: <exe-path> "<config-file>" o:Roan wrote: 416a1m
Implemented the ing of config files via the command line, since that was easy to implement anyway xD. Still thinking of more improvements here. Also I noticed that the overlay osu! option wasn't being saved to the config xD so I've fixed that too.
Yeah, got another one right! c: Well, as I said, it's not a real problem. The program is still in the Alt+Tab-Menu, which is probably more important! It's completely fine this way :3Roan wrote: 416a1m
Yeah that isn't happening since they are indeed actually dialogs. And as far as I know there is no (easy) was to give dialogs an icon. If it's a real problem I could just give them frames but that introduces other problems
.
That's sort of a skill I have, I do the weirdest stuff until everything breaksRoan wrote: 416a1m
And your help is much appreciated since you see the bugs I don't see because you try things I'd never think off xD.
Me neither xDRoan wrote: 416a1m
I never would've thought that putting it in the osu! folder would make it stop working.
I'm still using the same technique but I have removed all focus calls. As far as I can tell it still works though. They were kinda left over from when I was trying to render it on top of fullscreen osu! But since that doesn't work anyway I removed them, I hope I didn't break anything xD.SALZKARTOFFEEEL wrote: 61313y
So you did use a different technique then? c:Roan wrote: 416a1m
Euh I guess I've fixed it ¯\_(ツ)_/¯
Yup the program takes a single argument which is the config file path (also don't use quotes around the path, spaces in the path are handled). If the config is in the same directory as the executable you only have to specify the filenameSALZKARTOFFEEEL wrote: 61313y
I'm guessing simply: <exe-path> "<config-file>" o:Roan wrote: 416a1m
Implemented the ing of config files via the command line, since that was easy to implement anyway xD. Still thinking of more improvements here. Also I noticed that the overlay osu! option wasn't being saved to the config xD so I've fixed that too.
Okay ^^SALZKARTOFFEEEL wrote: 61313y
Yeah, got another one right! c: Well, as I said, it's not a real problem. The program is still in the Alt+Tab-Menu, which is probably more important! It's completely fine this way :3Roan wrote: 416a1m
Yeah that isn't happening since they are indeed actually dialogs. And as far as I know there is no (easy) was to give dialogs an icon. If it's a real problem I could just give them frames but that introduces other problems
.
xD sounds usefullSALZKARTOFFEEEL wrote: 61313y
That's sort of a skill I have, I do the weirdest stuff until everything breaksRoan wrote: 416a1m
And your help is much appreciated since you see the bugs I don't see because you try things I'd never think off xD.![]()
SALZKARTOFFEEEL wrote: 61313y
Me neither xDRoan wrote: 416a1m
I never would've thought that putting it in the osu! folder would make it stop working.
Yeah, i was kind of wondering why you would even need to get the window focus, but I knew about this windows 'bug' that sometimes keeps the inactive window above the active one when the focus changes at some weird point in time, I thought you were trying to use that.Roan wrote: 416a1m
I'm still using the same technique but I have removed all focus calls. As far as I can tell it still works though. They were kinda left over from when I was trying to render it on top of fullscreen osu! But since that doesn't work anyway I removed them, I hope I didn't break anything xD.
Huh, it handles spaces!Roan wrote: 416a1m
Yup the program takes a single argument which is the config file path (also don't use quotes around the path, spaces in the path are handled). If the config is in the same directory as the executable you only have to specify the filename. Oh and also don't accidentally forget the file extension
![]()
;-- setup stuff --;
#SingleInstance, force
#Persistent
Loop {
;-- logic --;
WinWaitActive, osu!
WinWait, ahk_class SunAwtFrame
WinWait, Keys per second
WinSet, AlwaysOnTop, OFF, osu!
}
Return ;-- Return, just in case an error happens and the loop breaks
Well I didnt actually need the focus. However the method to place a window on top of all other windows automatically makes a focus all :/ I was trying to call this method everytime the window was no longer the top most window. However what happened was that osu! and KeysPerSecond started a contest and kept overlaying each other xD or osu! minimized.SALZKARTOFFEEEL wrote: 61313y
Yeah, i was kind of wondering why you would even need to get the window focus, but I knew about this windows 'bug' that sometimes keeps the inactive window above the active one when the focus changes at some weird point in time, I thought you were trying to use that.Roan wrote: 416a1m
I'm still using the same technique but I have removed all focus calls. As far as I can tell it still works though. They were kinda left over from when I was trying to render it on top of fullscreen osu! But since that doesn't work anyway I removed them, I hope I didn't break anything xD.
Yeah I though that was usefull so I made it parse spacesSALZKARTOFFEEEL wrote: 61313y
Huh, it handles spaces!Roan wrote: 416a1m
Yup the program takes a single argument which is the config file path (also don't use quotes around the path, spaces in the path are handled). If the config is in the same directory as the executable you only have to specify the filename. Oh and also don't accidentally forget the file extension
![]()
I've never seen something like this in command line arguments c: Also great, that the config window doesn't appear in the first place.
I-I-I'm filing a bug reportSALZKARTOFFEEEL wrote: 61313y
Okay. After tinkering around with my good old friend AutoHotkey, I've sort of found a workaround for the "overlay osu!" Setting.
I have an AutoHotkey script that lets me have a window in AlwaysOnTop-Mode. I just found out that when I want to have your overlay on top of osu!, I can simply deactivate the AlwaysOnTop property of the osu! window! This keeps the focus on osu! but brings the overlay in front!
But there's a catch, be aware D:
Because osu!'s a dick, every time the focus changes (i.e. I press Alt+Tab), osu! pushes itself back on top of the other windows and the overlay.
Soo, if this helps you, I'm glad, if not, well... I'm gonna keep trying!
Right now the only thing I could probably do would be to (veery inelegantly) write another AHk script that steels the property from the osu! window every time it gets activated and the overlay is present. But that wouldn't be a real solution, would it? D:
EDIT:
This script I wrote fixes the issue. It is a bit wonky, but it works without any input delay or lag (at least for me) and I just wanted to share it c:
It is just 9 simple AHk lines, 3 of which are a Loop, 2 are some setup stuff and only 4 lines are the actual logic.
As I pretty much described earlier, it just tests for the osu! window to be in foreground, tests for the overlay to exist and then just steels the AlwaysOnTop property from the osu! window.
Source Code (not that there are any people who know AutoHotkey ^~^);-- setup stuff --;
#SingleInstance, force
#Persistent
Loop {
;-- logic --;
WinWaitActive, osu!
WinWait, ahk_class SunAwtFrame
WinWait, Keys per second
WinSet, AlwaysOnTop, OFF, osu!
}
Return ;-- Return, just in case an error happens and the loop breaks
Yet another EDIT:
osu! seems to have problems with not running on the topmost layer, I am rarely getting stutters here and there, even though the overall performance is not effected o:
I think this is pretty much like disabling fullscreen mode, but with less (pretty much no) input lag. I don't know what I think about this.
Great, an endless loop of windows fighting for attention!Roan wrote: 416a1m
Well I didnt actually need the focus. However the method to place a window on top of all other windows automatically makes a focus all :/ I was trying to call this method everytime the window was no longer the top most window. However what happened was that osu! and KeysPerSecond started a contest and kept overlaying each other xD or osu! minimized.
It is pretty useful, actually! o: It's kind of weird, since I've never seen it, but I like itRoan wrote: 416a1m
Yeah I though that was usefull so I made it parse spaces.
Yeah, file one if you want toRoan wrote: 416a1m
I-I-I'm filing a bug report, your script doesnt work for me
. I did know about AutoHotkey though ^^.
However it did give me an idea. I suppose it would be possible to override the alwaysOnTop property using either C or C++. If thats the case then I can just include the functionality in my program since Java can make native calls. So I'm going to look into that.
Thank you so muchRoan wrote: 416a1m
Also did I mention you're awesome? If not: you're awesome!
So this was an interessting one. I think I just created an osu! stroboscope, the result of trying to implement this was basically osu! and KeysPerSecond alternating being the top most window every 1/60th of a second xD. So I this might be impossible without changing setting for osu!SALZKARTOFFEEEL wrote: 61313y
Great, an endless loop of windows fighting for attention!Roan wrote: 416a1m
Well I didnt actually need the focus. However the method to place a window on top of all other windows automatically makes a focus all :/ I was trying to call this method everytime the window was no longer the top most window. However what happened was that osu! and KeysPerSecond started a contest and kept overlaying each other xD or osu! minimized.
It is pretty useful, actually! o: It's kind of weird, since I've never seen it, but I like itRoan wrote: 416a1m
Yeah I though that was usefull so I made it parse spaces.
Yeah, file one if you want toRoan wrote: 416a1m
I-I-I'm filing a bug report, your script doesnt work for me
. I did know about AutoHotkey though ^^.
However it did give me an idea. I suppose it would be possible to override the alwaysOnTop property using either C or C++. If thats the case then I can just include the functionality in my program since Java can make native calls. So I'm going to look into that.
But I don't think this is a real solution, as i said, unless you can implement it c:
^^SALZKARTOFFEEEL wrote: 61313y
Thank you so muchRoan wrote: 416a1m
Also did I mention you're awesome? If not: you're awesome!I think you're awesome! (I mean, you knew about freaking AutoHotkey, that's a win already :3)
You put so much effort into fixing every single detail I complain aboutThank you very much for that (っ◕‿◕)っ
huh, It seems as if the method you are using to set the window AlwaysOnTop also makes it the topmost window! That would cause such a 'stroboscope' effect as you call it :^)Roan wrote: 416a1m
So this was an interessting one. I think I just created an osu! stroboscope, the result of trying to implement this was basically osu! and KeysPerSecond alternating being the top most window every 1/60th of a second xD. So I this might be impossible without changing setting for osu!. That being said there's probably some clever hack for this somewhere that I'm just not aware of. But untill I find it I guess I can't fix it
![]()
I totally understand thatRoan wrote: 416a1m
^^
I just really enjoy fixing complaints :3
Not many bugs so farRoan wrote: 416a1m
Finally got around to implementing the right click menu![]()
While at it I also implemented the functionality to pause the counter, accesible via the new menu or by using Ctrl + T.
And since everything was going well anyway I also implemented the snap to screen edge funtionality(works with multi-monitor setups).
Only 3 more points from you list to go xD, but they are mostly bug fixes.
So now let's hear all the new bugs I've introduced...![]()
Yeah probably, I have't given up on this yet but for now I'm going to focus on other issues :^).SALZKARTOFFEEEL wrote: 61313y
huh, It seems as if the method you are using to set the window AlwaysOnTop also makes it the topmost window! That would cause such a 'stroboscope' effect as you call it :^)Roan wrote: 416a1m
So this was an interessting one. I think I just created an osu! stroboscope, the result of trying to implement this was basically osu! and KeysPerSecond alternating being the top most window every 1/60th of a second xD. So I this might be impossible without changing setting for osu!. That being said there's probably some clever hack for this somewhere that I'm just not aware of. But untill I find it I guess I can't fix it
![]()
SALZKARTOFFEEEL wrote: 61313y
I totally understand thatRoan wrote: 416a1m
^^
I just really enjoy fixing complaints :3![]()
Glad you like it! For the next version I'm also going to add the option to move the overlay using the arrow keys, so you can position it pixel perfect xD. (Only active when the overlay has focus)SALZKARTOFFEEEL wrote: 61313y
Not many bugs so farRoan wrote: 416a1m
Finally got around to implementing the right click menu![]()
While at it I also implemented the functionality to pause the counter, accesible via the new menu or by using Ctrl + T.
And since everything was going well anyway I also implemented the snap to screen edge funtionality(works with multi-monitor setups).
Only 3 more points from you list to go xD, but they are mostly bug fixes.
So now let's hear all the new bugs I've introduced...![]()
Just a few things that are (technically not bugs and) probably easy to fix/change!
First of all: This snap-functionality works sooo much better that I expected! I haven't even thought about putting that into the context menu c:
I thought you would implement it just like all other programs, making the window snap automatically. But this is so much better, since you don't have the trouble when you want to put the window say 3 pixels away from the screen border!
:OSALZKARTOFFEEEL wrote: 61313y
Okay, now onto the bad things![]()
I actually knew about this one xD But I though I could just release it and quickly patch it some other time without you noticing, looks like I failed xDSALZKARTOFFEEEL wrote: 61313y
1) right clicking on the graph doesn't trigger the context menu. Yeah, that's it. The graph's potion of the overlay just doesn't count when right-clicked.
o:SALZKARTOFFEEEL wrote: 61313y
2) (this is a minor one) resetting the stats doesn't reset the graph o: It does reset the average line, but not the rest of the graph, maybe add that in c:
I can't reproduce it >.<SALZKARTOFFEEEL wrote: 61313y
3) This one was probably there before, but the logic behind the counting seems to be pretty inconsistent o:
As seen below, the three overlays drift quite a bit from each other, in all the different values!
This is a live recording of me tapping X&Y (X&Z for normal people outside of ) but the counters seem to... disagree with each other
Right now I don't have enough time, but tomorrow (on Friday, that is) I could analyze the video just to see, what went wrong! o: I guess it's not a big deal, but I find it a bit odd that the counters drift like that.
Plenty of work for me to do :3SALZKARTOFFEEEL wrote: 61313y
That's it for now!
Again, I don't have the time that I want to have right now, but maybe I'll find more errors and weird stuff in the future
(I think opening multiple counters could be a potential weak spot ;3)
I'm not good with non-ASCII-smiley's >.< but here we go ʘ‿ʘSALZKARTOFFEEEL wrote: 61313y
゚・✿ヾ╲(。◕‿◕。)╱✿・゚ I figured, I want to put at least one non-ASCII-Smiley per forum post![]()
Okay, I find myself simply never using such tings, since I'm usually more comfortable with using my mouse for it. But it can be nice to have! And it's not half as frustrating as using the mouse sometimes c:Roan wrote: 416a1m
Glad you like it! For the next version I'm also going to add the option to move the overlay using the arrow keys, so you can position it pixel perfect xD. (Only active when the overlay has focus)![]()
Sneaky, sneaky, sneaky... xDRoan wrote: 416a1m
I actually knew about this one xD But I though I could just release it and quickly patch it some other time without you noticing, looks like I failed xD
o:?Roan wrote: 416a1m
o:
Yeah, they weren't. I thought about that while trying to sleep and I wanted to try it out today. Looks like you were faster here c:Roan wrote: 416a1m
From your video it seems that the instances were not all started at the exact same millisecond time (the graph isnt shifting at the same time in all of them). And all the stats refer to the last second so if they are not started at the exact same time that could be the cause of the drift.
uhm... (that's where the madness starts)... Me neither ._.Roan wrote: 416a1m
I'm actually more worried about that fact that not all your instances are reporting the same hit count for the keys O.O does that happen all the time? Since I can't replicate that no matter what I try.
Yeah, well. It's not the biggest issue I guess, because what crazy person totally not me.. would want multiple counters at once? xDRoan wrote: 416a1m
The differences in max, avg & cur I can replicate when starting the instances at different times. It's also probably impossible for me to actually fix that since the only way to reliably fix that is shorten the time interval to 1 millisecond (which would be imprecise anyway due to the way windows timers work) also that places a massive load on the U![]()
Well, I heard, you liked fixing complaints? So guess what? I've got even some more work for you (✿◠‿◠)Roan wrote: 416a1m
Plenty of work for me to do :3
haha, well.. I've written myself a little AutoHotkey script that let's me just write those out! ^~^Roan wrote: 416a1m
I'm not good with non-ASCII-smiley's >.< but here we go ʘ‿ʘ
yay! ヽ(。・ω・。)ノRoan wrote: 416a1m
Also added you as a friend :3
Implemented the option to position to overlay using the arrow keys and improved moving the window using the mouse (it now actually stays at your cursorSALZKARTOFFEEEL wrote: 61313y
Okay, I find myself simply never using such tings, since I'm usually more comfortable with using my mouse for it. But it can be nice to have! And it's not half as frustrating as using the mouse sometimes c:Roan wrote: 416a1m
Glad you like it! For the next version I'm also going to add the option to move the overlay using the arrow keys, so you can position it pixel perfect xD. (Only active when the overlay has focus)![]()
This is now not so sneakily fixedSALZKARTOFFEEEL wrote: 61313y
Sneaky, sneaky, sneaky... xDRoan wrote: 416a1m
I actually knew about this one xD But I though I could just release it and quickly patch it some other time without you noticing, looks like I failed xD
o: fixedSALZKARTOFFEEEL wrote: 61313y
o:?
^^SALZKARTOFFEEEL wrote: 61313y
Yeah, they weren't. I thought about that while trying to sleep and I wanted to try it out today. Looks like you were faster here c:Roan wrote: 416a1m
From your video it seems that the instances were not all started at the exact same millisecond time (the graph isnt shifting at the same time in all of them). And all the stats refer to the last second so if they are not started at the exact same time that could be the cause of the drift.
xD good job not blaming JavaSALZKARTOFFEEEL wrote: 61313y
uhm... (that's where the madness starts)... Me neither ._.Roan wrote: 416a1m
I'm actually more worried about that fact that not all your instances are reporting the same hit count for the keys O.O does that happen all the time? Since I can't replicate that no matter what I try.
I have no idea what I did the first time, but I can't reproduce either, so it was.. uhm... something really weird... ¯\_(ツ)_/¯ Let's just ignore this unless it occurs again o:
(I'm trying my best not to blame that on Java for once)
Well I could always add an 1 ms update rate to the drop down box, your computer probably won't like it though :3SALZKARTOFFEEEL wrote: 61313y
Yeah, well. It's not the biggest issue I guess, because what crazy person totally not me.. would want multiple counters at once? xDRoan wrote: 416a1m
The differences in max, avg & cur I can replicate when starting the instances at different times. It's also probably impossible for me to actually fix that since the only way to reliably fix that is shorten the time interval to 1 millisecond (which would be imprecise anyway due to the way windows timers work) also that places a massive load on the U![]()
\o/ yay! xDSALZKARTOFFEEEL wrote: 61313y
Well, I heard, you liked fixing complaints? So guess what? I've got even some more work for you (✿◠‿◠)Roan wrote: 416a1m
Plenty of work for me to do :3
o: I'm impressed you actually found that one! Consider yourself lucky it's a rare bugSALZKARTOFFEEEL wrote: 61313y
I hope, this is a simple one and just a little bug in the code:
(Just for the record, I can actually reproduce this one – I'm using this config file!)
Whenever Custom Colors are on, the background color opacity is set to 100% and the text color opacity is NOT set to 100%, this happens:
The top part just goes gray-ish for some reason. Again, this happens every time and I believe it's just some simple error – like switching up "<" and "<=" or something like that.
I have no idea if there would be an audience for that, but you won't know if you don't trySALZKARTOFFEEEL wrote: 61313y
haha, well.. I've written myself a little AutoHotkey script that let's me just write those out! ^~^Roan wrote: 416a1m
I'm not good with non-ASCII-smiley's >.< but here we go ʘ‿ʘ
It also lets me use stuff like ≠, ≈, ≥, ≤, ©, etc. very easily. I don't know if I should improve on it a bit and make it public o:
^^SALZKARTOFFEEEL wrote: 61313y
yay! ヽ(。・ω・。)ノRoan wrote: 416a1m
Also added you as a friend :3
yay c:Roan wrote: 416a1m
Implemented the option to position to overlay using the arrow keys and improved moving the window using the mouse (it now actually stays at your cursor).
Yup ^w^Roan wrote: 416a1m
This is now not so sneakily fixed![]()
o: great :3Roan wrote: 416a1m
o: fixed![]()
They are.. ಠ_ಠRoan wrote: 416a1m
xD good job not blaming Javasince key press handling is done in C
![]()
And well programs are weird sometimes ¯\_(ツ)_/¯
huh, well.. osu! runs at a refresh rate of about 0.7 ms while in game for me, so I don't think my computer would even have that big of an issue o:Roan wrote: 416a1m
Well I could always add an 1 ms update rate to the drop down box, your computer probably won't like it though :3
Why not, right?Roan wrote: 416a1m
I'm also totally not a crazy person, because I actually tried a GUI size of x100 and x0.1 :3
Uhm. With "Going to eliminate this bug for good" you meant that it's not fixed yet, right? Because it isn't xDRoan wrote: 416a1m
o: I'm impressed you actually found that one! Consider yourself lucky it's a rare bugI've already partially fixed it 4 times! The only case that I knew of that still caused this was adding only a single . So I guess you've found another way to do it xD. Going to try eliminate this bug for good this time 🐛 (it's cute though >.<).
True, true o: I guess, if I'll make it customizable I could get a bigger audience. I'll seeRoan wrote: 416a1m
I have no idea if there would be an audience for that, but you won't know if you don't try![]()
man, you're stealing my job! D:Roan wrote: 416a1m
And finally, I also fixed the bug where the program doesn't work when it's placed in a folder that contains a !.
If it works now, (and it does!) I guess it is a fix then c:Roan wrote: 416a1m
Well I say I've fixed it, I actually just copy the program to the Windows temp folder :3
:DRoan wrote: 416a1m
I also made a silly mistake making this that caused unlimited instances of the program to launch, Windows even said it was going to forcefully close programs because not enough RAM was available![]()
This sentence made me laugh soo hard!Roan wrote: 416a1m
(unlimited instances not included in the new release, unless your windows name contains an ! in that case you have problem)
^^SALZKARTOFFEEEL wrote: 61313y
yay c:Roan wrote: 416a1m
Implemented the option to position to overlay using the arrow keys and improved moving the window using the mouse (it now actually stays at your cursor).
Yup ^w^Roan wrote: 416a1m
This is now not so sneakily fixed![]()
o: great :3Roan wrote: 416a1m
o: fixed![]()
\(•_•)/SALZKARTOFFEEEL wrote: 61313y
They are.. ಠ_ಠRoan wrote: 416a1m
xD good job not blaming Javasince key press handling is done in C
![]()
And well programs are weird sometimes ¯\_(ツ)_/¯![]()
Guess I'll at least add the option then since that takes no effort anyway :3. There's one thing to note though the osu! graphics are actually graphics, the overlay is just a normal program window so it isn't quite as optimized for quick rendering updates. I'm also not so sure how well the windows timers would handle it since they are imprecise. Also 10ms is also quite fastSALZKARTOFFEEEL wrote: 61313y
huh, well.. osu! runs at a refresh rate of about 0.7 ms while in game for me, so I don't think my computer would even have that big of an issue o:Roan wrote: 416a1m
Well I could always add an 1 ms update rate to the drop down box, your computer probably won't like it though :3
Exactly!SALZKARTOFFEEEL wrote: 61313y
Why not, right?Roan wrote: 416a1m
I'm also totally not a crazy person, because I actually tried a GUI size of x100 and x0.1 :3![]()
Quite right this isn't fixed yet. I read your post after I had already finished the new release. Also because this is quite a difficult bug to track down I have no idea when I will have fixed it completelySALZKARTOFFEEEL wrote: 61313y
Uhm. With "Going to eliminate this bug for good" you meant that it's not fixed yet, right? Because it isn't xDRoan wrote: 416a1m
o: I'm impressed you actually found that one! Consider yourself lucky it's a rare bugI've already partially fixed it 4 times! The only case that I knew of that still caused this was adding only a single . So I guess you've found another way to do it xD. Going to try eliminate this bug for good this time 🐛 (it's cute though >.<).
^^SALZKARTOFFEEEL wrote: 61313y
True, true o: I guess, if I'll make it customizable I could get a bigger audience. I'll seeRoan wrote: 416a1m
I have no idea if there would be an audience for that, but you won't know if you don't try![]()
![]()
Better find some more bugs thenSALZKARTOFFEEEL wrote: 61313y
man, you're stealing my job! D:Roan wrote: 416a1m
And finally, I also fixed the bug where the program doesn't work when it's placed in a folder that contains a !.
I guess so xDSALZKARTOFFEEEL wrote: 61313y
If it works now, (and it does!) I guess it is a fix then c:Roan wrote: 416a1m
Well I say I've fixed it, I actually just copy the program to the Windows temp folder :3
SALZKARTOFFEEEL wrote: 61313y
:DRoan wrote: 416a1m
I also made a silly mistake making this that caused unlimited instances of the program to launch, Windows even said it was going to forcefully close programs because not enough RAM was available![]()
This sentence made me laugh soo hard!Roan wrote: 416a1m
(unlimited instances not included in the new release, unless your windows name contains an ! in that case you have problem)
But in this case you could (if you just really wanted to keep your name) change the temp directory's path![]()
I think I'm officially labeling this as the weirdest bug I've ever encountered xD. Even worse, this probably affects other programs I wrote too hmm...SALZKARTOFFEEEL wrote: 61313y
It's still a very weird bug, right? I've actually investigated a bit further on this and I've come up with this:
The program doesn't launch, when one of the folders/files* that make up the path of the executable end with an exclamation mark!
*files: There can only be one file in the path, the executable.
That means: If your name would be xXosu!pro2k17Xx, you wouldn't even have a problem, since the "!" is in the middle! Or if the executable is named osu!KeysPerSecond.exe and is in a folder called osu!stuff, it even still works with all the older versions.
I thing that's extremely interesting, because either each of the folders in a path is somewhat treated individually, or the combination of an exclamation mark and a slash ("!\") does something strange o:
Well, my computer isn't immensely happy with 1 ms delay :3 For me the program takes about 30% U Load (17-20% on 10 ms), which would be okay, if osu! wouldn't be running :^)Roan wrote: 416a1m
Guess I'll at least add the option then since that takes no effort anyway :3. There's one thing to note though the osu! graphics are actually graphics, the overlay is just a normal program window so it isn't quite as optimized for quick rendering updates. I'm also not so sure how well the windows timers would handle it since they are imprecise. Also 10 ms is also quite fast![]()
- I implemented a 1 ms and 5 ms update rate for you to play with :3 it does kill your U though, my U usage has increased by 400%-500% times. Also this in combination with big graph backlog can really kill your U. Also you need a very fast computer to properly run this since all the update calculation have to be done in 1 millisecond otherwise the calculations aren't 100% accurate anymore. Well have fun I guess
![]()
Okay c:Roan wrote: 416a1m
Quite right this isn't fixed yet. I read your post after I had already finished the new release. Also because this is quite a difficult bug to track down I have no idea when I will have fixed it completely![]()
Roan wrote: 416a1m
Better find some more bugs then![]()
Yaay ヽ(。・ω・。)ノRoan wrote: 416a1m
true however I don't think I'd ever run a program again if it instantly filled up my RAM xD. Is the ! sign even allowed in a windows name? (just checked it is
maybe I should atleast throw an error at the then in order to prevent RAM overload xD)
- I also implemented a fix for the infinite instances problem just in case someone's name ends with a !![]()
nah, definitely not the weirdest bug I've ever seenRoan wrote: 416a1m
I think I'm officially labeling this as the weirdest bug I've ever encountered xD.
haha, better fix themRoan wrote: 416a1m
Even worse, this probably affects other programs I wrote too hmm...
It does! ^^Roan wrote: 416a1m
- Filter the config selection dialog to only show config files. This makes finding the files a lot easier xD.
Great! c:Roan wrote: 416a1m
- And I also fixed the rendering problem you were having, well it's really persistent so I'm not 100% sure but atleast your config file works now.
Those would be great, yeah (ノ・ω・)ノRoan wrote: 416a1m
And that's it for nowgoing to work on editable config files next :3 (no eta though
)
xD yeah having the option is nice and it looks so nice and fast :3.SALZKARTOFFEEEL wrote: 61313y
Well, my computer isn't immensely happy with 1 ms delay :3 For me the program takes about 30% U Load (17-20% on 10 ms), which would be okay, if osu! wouldn't be running :^)Roan wrote: 416a1m
Guess I'll at least add the option then since that takes no effort anyway :3. There's one thing to note though the osu! graphics are actually graphics, the overlay is just a normal program window so it isn't quite as optimized for quick rendering updates. I'm also not so sure how well the windows timers would handle it since they are imprecise. Also 10 ms is also quite fast![]()
- I implemented a 1 ms and 5 ms update rate for you to play with :3 it does kill your U though, my U usage has increased by 400%-500% times. Also this in combination with big graph backlog can really kill your U. Also you need a very fast computer to properly run this since all the update calculation have to be done in 1 millisecond otherwise the calculations aren't 100% accurate anymore. Well have fun I guess
![]()
But anyway, it's stillnice to havefun to play with ^~^
I see that worked out :3 I've got a new list to extend my todo list with xD.SALZKARTOFFEEEL wrote: 61313y
Okay c:Roan wrote: 416a1m
Quite right this isn't fixed yet. I read your post after I had already finished the new release. Also because this is quite a difficult bug to track down I have no idea when I will have fixed it completely![]()
Roan wrote: 416a1m
Better find some more bugs then![]()
![]()
For now I'm just thowing an error since I still have no idea what the actual cause is :/SALZKARTOFFEEEL wrote: 61313y
Yaay ヽ(。・ω・。)ノRoan wrote: 416a1m
true however I don't think I'd ever run a program again if it instantly filled up my RAM xD. Is the ! sign even allowed in a windows name? (just checked it is
maybe I should atleast throw an error at the then in order to prevent RAM overload xD)
- I also implemented a fix for the infinite instances problem just in case someone's name ends with a !![]()
Do you just throw an error message immediately, or did you actually fix it? o:
xD well it's obvious that they didn't test their new release :3SALZKARTOFFEEEL wrote: 61313y
nah, definitely not the weirdest bug I've ever seenRoan wrote: 416a1m
I think I'm officially labeling this as the weirdest bug I've ever encountered xD.
This is my weirdest (and deadliest) bug yetI've seen an antivirus labeling itself as malware, moving important DLLs of itself into quarantine, then completely malfunctioning and finally also moving parts of the windows operating system into quarantine. This bug was pretty bad, since it occurred on every machine that got the update! It was very tricky to fix and if you restarted your computer, you'd just get a blue screen of death on startup immediately, forever![]()
nononono xD way too much work. Besides I don't think I've released any other program with this bug yet.SALZKARTOFFEEEL wrote: 61313y
haha, better fix themRoan wrote: 416a1m
Even worse, this probably affects other programs I wrote too hmm...![]()
It's going to require a partial rewrite though :3.SALZKARTOFFEEEL wrote: 61313y
It does! ^^Roan wrote: 416a1m
- Filter the config selection dialog to only show config files. This makes finding the files a lot easier xD.
Great! c:Roan wrote: 416a1m
- And I also fixed the rendering problem you were having, well it's really persistent so I'm not 100% sure but atleast your config file works now.
Those would be great, yeah (ノ・ω・)ノRoan wrote: 416a1m
And that's it for nowgoing to work on editable config files next :3 (no eta though
)
o: they move by two. Lol I overlooked something really simple for this, I wrote:SALZKARTOFFEEEL wrote: 61313y
So, here are a few more feature requests and bugs and other stuff:
1) Bug: Pressing any arrow keys won't move the window by one pixel, it will move it by two instead![]()
Main.frame.setLocation(location.x - 1, location.y);But I was actually calling this code both when the key was pressed and when it was released :3
YaySALZKARTOFFEEEL wrote: 61313y
2) Notice: I just stress tested your program, I have to say, it is better than I thought it would be! When idle it takes about 2% U Load, while under maximum stress I could simulate (around 700 keystrokes per second) it takes around 35-40% U Load! So when idle, it really doesn't do anything besides refreshing it's display, but when it has to, it goes very high on the U and still doesn't struggle c:
xD there's a size feature you knowSALZKARTOFFEEEL wrote: 61313y
2.5) Another extra notice: I played around with it some moreOkay, soo: (this is just for fun) When I resized the window to double it's normal size, I found out that it actually still worked! Even the graph was properly aligned! It was veeery slow when I put it in full-screen, but even then it still worked!
![]()
I was actually thinking of adding this but it requires some major changes to the structure of the program. However your text based config files also need these changes so it's going to happen after I have finished thatSALZKARTOFFEEEL wrote: 61313y
3) Feature request: Add an option to the context menu that allows the to change the options again! So simply the option "Configure" that closes the overlay and reopens the config window! This could be combined with 3.5) very nicely.
3.5) Make the overlay live-configurable. So when clicking on the Configure button, the overlay doesn't close, but the config window still opens!
This config window would have to be slightly different, there qould have to be an Apply button, that doesn't close the window, but I don't think it would be that hard to do! Correct me if I'm wrong, of course c:
o.o I'm a little confused , it sounds very intriguing thoughRamiress wrote: z4k5u
DATABASE IN AI charectors PANIC-HOLIC Processing brain and to humanis. whatever shoul'dent auth search answer.
Implemented all of these :3.SALZKARTOFFEEEL wrote: 61313y
Those would be great, yeah (ノ・ω・)ノRoan wrote: 416a1m
And that's it for nowgoing to work on editable config files next :3 (no eta though
)
So, here are a few more feature requests and bugs and other stuff:
1) Bug: Pressing any arrow keys won't move the window by one pixel, it will move it by two instead
2) Notice: I just stress tested your program, I have to say, it is better than I thought it would be! When idle it takes about 2% U Load, while under maximum stress I could simulate (around 700 keystrokes per second) it takes around 35-40% U Load! So when idle, it really doesn't do anything besides refreshing it's display, but when it has to, it goes very high on the U and still doesn't struggle c:
2.5) Another extra notice: I played around with it some moreOkay, soo: (this is just for fun) When I resized the window to double it's normal size, I found out that it actually still worked! Even the graph was properly aligned! It was veeery slow when I put it in full-screen, but even then it still worked!
3) Feature request: Add an option to the context menu that allows the to change the options again! So simply the option "Configure" that closes the overlay and reopens the config window! This could be combined with 3.5) very nicely.
3.5) Make the overlay live-configurable. So when clicking on the Configure button, the overlay doesn't close, but the config window still opens!
This config window would have to be slightly different, there qould have to be an Apply button, that doesn't close the window, but I don't think it would be that hard to do! Correct me if I'm wrong, of course c:
Uhm. Holy... Fuck. I just don't even know how the heck you are doing all of thisRoan wrote: 416a1m
Implemented all of these :3.
There now is a new config format (.kpsconf2, old format is still ed) which is text based and can be edited by hand. Point 1 is fixed(1 pixel is now the default moving speed, 2 with Ctrl and 3 with Shift
). And I added the option to change everything at run time via the right click menu. It is also possible to load & save configuration files from there now
. This was a lot of work but it was worth it xD
;D But actually the config file-format causes way more c:Roan wrote: 416a1m
And now I tremble in fear for a huge bug report since being able to change things at run time is sure to cause a lot of them![]()
^^ I just went for a 6 hours coding session :3SALZKARTOFFEEEL wrote: 61313y
Uhm. Holy... Fuck. I just don't even know how the heck you are doing all of thisRoan wrote: 416a1m
Implemented all of these :3.
There now is a new config format (.kpsconf2, old format is still ed) which is text based and can be edited by hand. Point 1 is fixed(1 pixel is now the default moving speed, 2 with Ctrl and 3 with Shift
). And I added the option to change everything at run time via the right click menu. It is also possible to load & save configuration files from there now
. This was a lot of work but it was worth it xD
![]()
Damn >.< I knew this would happen if I allowed s to input any value xD.SALZKARTOFFEEEL wrote: 61313y
;D But actually the config file-format causes way more c:Roan wrote: 416a1m
And now I tremble in fear for a huge bug report since being able to change things at run time is sure to cause a lot of them![]()
Well I know what to do :3.SALZKARTOFFEEEL wrote: 61313y
Bug with the new live-time configuration: 6p6a3a
fancy headlines o.Oo: fancy
Uhm... let's call this a minor oversight :3SALZKARTOFFEEEL wrote: 61313y
1) Unchecking the "custom colours" option resets custom colors, so enabling it again does nothing.
Going to add thatSALZKARTOFFEEEL wrote: 61313y
General bugs / stuff: ah2d
1) The key selection window doesn't have a cancel button, just an exit button. This could be bad if you mess up the keys like me and want to restore them o:
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 - s 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 workSALZKARTOFFEEEL wrote: 61313y
2) Could it be that you completely broke the command line functionality? When trying to run the program with "D:\system\osu!\KeysPerSecond-v5.0.exe D:\Documents\KeysPerSecond – Default.kpsconf2" the argument is just ignored and the config window opens as usual. The special character "–" shouldn't be a problem since version 4.5 had no trouble at all o:![]()
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 thoughSALZKARTOFFEEEL wrote: 61313y
3) Maybe change the color handling of the little check marks in the config menu. They could just have the same foreground and background colors as the text, that would make them a lot more readable with certain colors, especially when the background color is very dark. :>
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.SALZKARTOFFEEEL wrote: 61313y
4) Everything was fine. But I pressed Ctrl + Y and this weird stuff happened.
Every time I press Ctrl + Y again, the script switches from two, to one window o.O Also, the first time I pressed it, the windows went grey again
I should probably mention, that I unchecked every visible element in the config menu just before this happened! This alone caused the area for right clicking to disappear completely.
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).SALZKARTOFFEEEL wrote: 61313y
Bugs with the text based config file-format: 2t4x9
1) You should DEFINITELY put caps on all of the values! There is no cap on size, precision, update rate, etc. Putting a value greater than the maximum value in the config window crashes the whole config menu when pressing the button that would load the out-of-bounds value from the config file.
2) Same goes for the graph backlog, this time it completely breaks the graph's functionality.
3) At first I thought, you had put a cap on this one... but you didn't c: The update rate (and this is pretty funny) cannot be zero, however it can be negative! :^) This breaks pretty much all of the calculations, not the key counter though
4) Opacity setting is not happy with negatives again, this time some more stuff happens: If the foreground color opacity is negative, the overlay is simply invisible and doesn't close right away; if the background opacity is negative, the overlay doesn't spawn at all.
In addition: The overlay doesn't spawn either, when the background opacity is greater than 1.0, and is (yet again) invisible when the foreground opacity is greater than 1.0.
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
Yup ^^ you actually could already give two keys the same position since you can edit the value in the add key dialogSALZKARTOFFEEEL wrote: 61313y
Positive stuff: yay ヽ(。・ω・。)ノ 5x1k61
1) When two keys have the same index value, the script handles it! It seems to be just after the reading order, so the lines' order in the file.
^^ I guess I'll just use default values for illegal arguments then.SALZKARTOFFEEEL wrote: 61313y
2) I'm pretty sure Java doesn't do this by default, so I'm just gonna give props to you for this: Different variable types in the config files are handled! So, putting "1" at size (instead of "1.0") works just fine, also putting anything but "true" or "false" in a Boolean-expected field still works just as usual! c:
One more bad thing about this though: Putting strings into any number-expected field crashes the whole script when loading the config file.
SALZKARTOFFEEEL wrote: 61313y
All in all: 162a1e
I repeat, SET MAXIMUM VALUES inside of the config files!
It would be better, if the script would actually no throw an error, but rather choose an acceptable value on its own! So if the would do a size of 8.0, the script would change that to 2.0, since that's the highest value allowed in the config window.
Also fix the command line argument stuff o:
The rest is relatively unimportant ^~^
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 xDSALZKARTOFFEEEL wrote: 61313y
I probably forgot something ¯\_(ツ)_/¯
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 thisSALZKARTOFFEEEL wrote: 61313y
Anyway.
Thanks again for letting me nitpick so much! <3
Contributing to this project is really fun, although I'm sort of busy doing stuff for school lately >.<
I couldn't do that at all, I would get soo boredRoan wrote: 416a1m
^^ I just went for a 6 hours coding session :3
:PRoan wrote: 416a1m
Damn >.< I knew this would happen if I allowed s to input any value xD.
o:Roan wrote: 416a1m
o: fancy
Like bug number 2 down below?Roan wrote: 416a1m
Uhm... let's call this a minor oversight :3
Yup, works great c:Roan wrote: 416a1m
Going to add that![]()
Uhm. I'm actually an idiotRoan wrote: 416a1m
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 - s 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 work![]()
Yay, they look great!Roan wrote: 416a1m
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
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: 416a1m
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.
OkayRoan wrote: 416a1m
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: 416a1m
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
And I got more for you :3Roan wrote: 416a1m
Well I know what to do :3.
huh, totally didn't think of just repeating stuff until something breaksRoan wrote: 416a1m
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
Well, let's hope we get all the bugs found and fixed until thenRoan wrote: 416a1m
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![]()
fancy headlines? o.ORoan wrote: 416a1m
Also made my introduction post fancy :3
Uhm. Okayyy.... It works for me, so I'm pretty surprised too o: Could different Java versions be a factor here? :SRoan wrote: 416a1m
The - in your filename doesn't work for me in older versions either, so I'm surprised it even works for you o.o?
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: 416a1m
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![]()
xD I probably wouldn't be able to search for bug for 5 hours straigt though xD.SALZKARTOFFEEEL wrote: 61313y
I couldn't do that at all, I would get soo boredRoan wrote: 416a1m
^^ 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: 61313y
:PRoan wrote: 416a1m
Damn >.< I knew this would happen if I allowed s to input any value xD.
o:Roan wrote: 416a1m
o: fancy
Like bug number 2 down below?Roan wrote: 416a1m
Uhm... let's call this a minor oversight :3![]()
YaySALZKARTOFFEEEL wrote: 61313y
Yup, works great c:Roan wrote: 416a1m
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: 61313y
Uhm. I'm actually an idiotRoan wrote: 416a1m
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 - s 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 work![]()
That'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: 61313y
Yay, they look great!Roan wrote: 416a1m
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<");
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: 61313y
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: 416a1m
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: 61313y
OkayRoan wrote: 416a1m
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: 416a1m
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: 61313y
And I got more for you :3Roan wrote: 416a1m
Well I know what to do :3.
I like breaking programs too :3SALZKARTOFFEEEL wrote: 61313y
huh, totally didn't think of just repeating stuff until something breaksRoan wrote: 416a1m
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: 61313y
Well, let's hope we get all the bugs found and fixed until thenRoan wrote: 416a1m
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: 61313y
fancy headlines? o.ORoan wrote: 416a1m
Also made my introduction post fancy :3
xD
Uhm. Okayyy.... It works for me, so I'm pretty surprised too o: Could different Java versions be a factor here? :SRoan wrote: 416a1m
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: 61313y
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: 416a1m
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: 61313y
Okay. Now to the real fun bit :^)
BUGS: 🐛 5a4g5
eugh, bugs D:
o: this is quite serious (and weird) I wonder what causes thisSALZKARTOFFEEEL wrote: 61313y
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: 61313y
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: 61313y
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: 61313y
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: 61313y
Feature Request: 166233
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: 1d5d
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: 1d5d
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: 416a1m
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: 1d5d
Roan wrote: 416a1m
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: 416a1m
xD I probably wouldn't be able to search for bug for 5 hours straigt though xD.
:DRoan wrote: 416a1m
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: 416a1m
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: 416a1m
^^ 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<");
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: 416a1m
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: 416a1m
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: 416a1m
I like breaking programs too :3
Who knows? o:Roan wrote: 416a1m
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: 416a1m
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: 416a1m
Ah so that's what it is o:
ThatRoan wrote: 416a1m
o: this is quite serious (and weird) I wonder what causes this![]()
No more mistakes here c:Roan wrote: 416a1m
Oops looks like a made a mistake somewhere xD
[x]: Disabling track all disables all keys
Roan wrote: 416a1m
Nicely spottedI don't think I'd ever have found that one o:
c:Roan wrote: 416a1m
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: 416a1m
Implemented![]()
xDSALZKARTOFFEEEL wrote: 61313y
It's so much funRoan wrote: 416a1m
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: 61313y
:DRoan wrote: 416a1m
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: 416a1m
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 Katakana that well just yet)![]()
YupSALZKARTOFFEEEL wrote: 61313y
haha, and that all just for changing a few colors of some tick-marks c: They do look a lot better now, thoughRoan wrote: 416a1m
^^ 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<");
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: 61313y
( ノ ゚ー゚)ノRoan wrote: 416a1m
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: 416a1m
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: 416a1m
I like breaking programs too :3
Who knows? o:Roan wrote: 416a1m
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: 61313y
yay \:D/Roan wrote: 416a1m
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: 416a1m
Ah so that's what it is o:
ThatRoan wrote: 416a1m
o: this is quite serious (and weird) I wonder what causes this![]()
is the creepiest smiley ever xD
YaySALZKARTOFFEEEL wrote: 61313y
No more mistakes here c:Roan wrote: 416a1m
Oops looks like a made a mistake somewhere xD
[x]: Disabling track all disables all keys
:3 so cuteSALZKARTOFFEEEL wrote: 61313y
Roan wrote: 416a1m
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: 61313y
c:Roan wrote: 416a1m
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: 416a1m
Implemented![]()
yay c:
YayRumi wrote: 1d5d
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: 416a1m
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: 416a1m
:3 so cute
o.O that's much o:Roan wrote: 416a1m
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 .
- 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: 6r4a4v
- Fix the key color not being inverted when the background opacity is 0%.
^^ actually I was starting too fee lonely ;-;SALZKARTOFFEEEL wrote: 61313y
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: 61313y
Huh, from my understanding of asterisks/wild cards they represent any number of any character!Roan wrote: 416a1m
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: 61313y
Yeah, she really is :3Roan wrote: 416a1m
:3 so cute
Yeah, I didn't have that much time and I couldn't find any that quick c:Roan wrote: 416a1m
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: 61313y
o.O that's much o:Roan wrote: 416a1m
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 .
- 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: 61313y
Bugs: 5r5z2s
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: 61313y
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: 416a1m
- Fix changing the colors resetting the key counters.
Yup, this has exactly the same cause as #2 ^^SALZKARTOFFEEEL wrote: 61313y
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: 61313y
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: 61313y
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: 6r4a4v
- 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: 61313y
Request: 5j1r6u
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: 61313y
Uhm, that's it again. I probably missed something, though![]()
SALZKARTOFFEEEL wrote: 61313y
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: 1p2m4d
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: 416a1m
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: 351g28
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 : 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: 2f2e13
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: 416a1m
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: 2f2e13
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: 416a1m
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: 2f2e13
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: 416a1m
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: 416a1m
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: 2f2e13
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: 416a1m
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: 416a1m
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: 2f2e13
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: 416a1m
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: 416a1m
:) 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 ing it for an MMO though xD. But it's a very valid use, so I'll be adding 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: 351g28
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 : http://i.imgur.com/w0I0MUu.png
IxWolfie wrote: 2f2e13
Roan wrote: 416a1m
:) 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 ing it for an MMO though xD. But it's a very valid use, so I'll be adding 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: 416a1m
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: 2f2e13
Roan wrote: 416a1m
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: 5y132i
(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: 4b3y16
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: 3t517
can i see it while playing osu ???
Roan wrote: 416a1m
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.
Hi, thank you for reporting this. I just tested it and it seems that I broke it somehow.anti- wrote: 4kc4i
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 a config file to the program either via the command line or if you associate the .kpsconf2 file format with the executable.nobully wrote: 5f4o4c
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: 5f4o4c
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 👌
I'm sorry there is currently no way to do thisReTLoM wrote: 2k624c
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 ?
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: 4624l
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: 5s4t45
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: 5s4t45
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: 5s4t45
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: 5s4t45
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 the executable and it works fine for me. Actually, if I save the configuration and load it again the symbols are gone .-.SuiGeneris wrote: 5s4t45
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 ed from the standard window exe not java's 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: 5s4t45
Alright! Thanks though.