KeyRemapper banner

KeyRemapper

1 devlog
45h 38m 40s

Do you hate having useless keys on your keyboard? Keyremapper allows you to map these useless keys such as Insert, PgDn, PgUp, Delete, Copilot, etc, to actual useful keys or combinations of keys.

This project uses AI

i used gemini for debugging

Demo Repository

Loading README...

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