Activity

ryan

Shipped this project!

I build a program that allows you to remap useless keys on your keyboard. The hardest part was definitely the amount of edge cases that I ran into such as if you map a->b and then b->a, it would infinitely spam both keys and basically crash your computer. I’m proud of the heatmap and keypresses wrapped features I added because they look really cool and were highly rewarding to create.

ryan

So I started & finished this project after finding about Flavortown, but I did keep a somewhat detailed log of my progress:

Initial planning:

  • User will be able to remap one key to another key or combination and vice versa
  • Will be a GUI using Java Swing
  • There will be a way for users to see what keys they’ve remapped
  • Mappings will be stored in a hashmap for O(1) lookup
  • Will add a keyboard heatmap cuz it’s cool
  • Will add a wrapped feature (like spotify wrapped) but for your keys

Feb 2+3, 2026:

  • Used JNativeHook to register user keypresses, played around with methods to get used to the library

Feb 4, 2026:

  • created a basic implementation of gui
  • created a custom KeyMap class, which stores keycodes of the key and what it’ll map to
  • played around with trying to block the user’s initial keypress

Feb 6:

  • successfully created the keymapping logic
  • allowed for holding keys too
  • made it so it’ll save all the users mappings inside a text file and it will reload everything into the hashmap that stores everything upon running
  • made some other small changes/features like being able to remove all mappings, hiding the select keybinds options after saving, etc.

Feb 7-9:

  • created a virtual keyboard on gui where you can press two buttons and this will create a mapping between the two.
  • moved gui code away from main.java file to a separate file for organization
  • created custom layouts (100%, 75%, 65%)
  • stored all mappings inside a table so the user can keep track of all of them
  • Also allowed the user to remove a specific mapping by selecting it from the table

Feb 11:

  • fixed a ton of buts
  • Finished MVP
  • switch from saving mappings and custom keys in a text file to storing everything in json using the Gson library.
  • now i can just store everything into one file instead of data from combinations (custom keys) and normal keys being in separate text files

Feb 12:

  • finished heatmap + keypresses wrapped
  • added ability for user to press “shift” and access the keyboard as if shift was being held
  • also allowed users to map shifted keys like @ and !
  • fixed a lot of minor bugs

Feb 13:

  • small changes (minor fixes)
  • basically done

Feb 14-17:

  • fixed bug where it would spam a key infinitely
  • cleaned up and refactored code

Feb 18:

  • added thread safety
0