Skip to content

KeyFlow is a C tool to create custom cheat codes and key combinations, enhancing productivity on Windows machines.

License

Notifications You must be signed in to change notification settings

hetulbhatt/KeyFlow

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

91 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

KeyFlow

KeyFlow is a powerful C project that helps users enhance their productivity by creating customized cheat codes and key combinations. KeyFlow can be used to launch programs, open documents, and emulate keystrokes. Using this tool, you can assign a cheat code or a key combination (shortcut) to execute a program or flush some predetermined string to the active window on a Windows machine.

Features

  • Customizable cheat codes: Personalize your experience by assigning unique codes like "pizza," "alarm," or "goodnight" to instantly print specific strings or execute specific programs.
  • Convenient shortcuts: Easily fill in frequently-used file names or other phrases using intuitive shortcuts.
  • Expanded punctuation options: Enhance your typing with access to punctuation marks not available on your keyboard, such as curved quotes (“…”), copyright symbol (©), or currency symbols (₹, €) effortlessly.
  • Quick access to programs, documents, and websites: Launch your favorite programs, open documents, or visit websites with simple keystrokes.
  • Personalized signatures: Add a signature to your emails, message boards by just a few key strokes.
  • Advanced key combinations: Assign complex key combinations like CTRL ALT Q, WINDOWS Z, or any other combination to execute desired actions efficiently.
  • Hotword printing: Define key combinations like CTRL ALT M to automate the printing of frequently-used phrases or statements in any active window.
  • Seamless integration: KeyFlow seamlessly integrates with MS Windows, allowing you to use cheat codes and key combinations across all applications.

Getting Started To start using KeyFlow, follow these simple steps:

  1. Clone the KeyFlow repository to your local machine.
  2. Build the project using Visual Studio 2022 IDE and the MSVC compiler:
  • Open the KeyFlow solution (.sln) file in Visual Studio 2022.
  • Build the solution using the IDE's build commands.
  1. Run the executable file to launch the KeyFlow application. Ensure that the configuration files (../config/codes.config and ../config/shortcuts.config) are located in their respective directories.

  2. In case the configuration files are not found in their default locations, you can provide custom paths through command line arguments. Right click on KeyFlow project in the solution explorer and click "Properties". Specify command line arguments in "Configuration Properties > Debugging > Command Arguments".

  3. Customize your cheat codes, key combinations, hotwords, and associated actions using the provided guide below.

    For shortcuts.config:

    • The left-hand side of the operator represents the desired key combination. To understand more about nomanclature of keys, refer to the table at the end.
    • Depending on the operator used, the right-hand side can either be a string to be printed in the active window or the path to an executable program.
    • If the operator is $, the string on the right indicates the path of the executable to launch when the key combination is pressed.
    • If the operator is :, the string on the right will be printed in the active window.
    • Each operation should be written on a single line.
    • Comments can be added to the file, but they should be placed on separate lines.
    # This is a comment.
    # The following string will be flushed to the active window at the cursor position 
    # when the user presses LEFT CONTROL   LEFT ALT   A.
    LCONTROL LMENU A :PRINT this entire string!
    
    # The following program will be launched when the user presses LEFT ALT   A.
    LMENU A $C:\Program Files\Sublime Text 3\sublime_text.exe
    

For codes.config:

  • Specify the desired length of your cheats at the beginning of the file.

  • The left-hand side of the operator should contain the cheat code.

  • Depending on the operator used, the right-hand side can be a string to be printed in the active window or the path to an executable program.

  • If the operator is $, the string on the right indicates the path of the executable to launch when the cheat code is triggered.

  • If the operator is :, the string on the right will be printed in the active window.

  • Each operation should be written on a single line.

  • It's possible to include comments in the file, but they should be placed on separate lines.

    # All over cheat codes will be of length 5.
    CODE LENGTH = 5
    # Typing hello, regardless of the status of caps lock, 
    # will print WORLD on the active window
    HELLO :WORLD
    APPLE :Stay away, Doc!
    # Typing GTAV5 will launch GTA5.exe, if present, of course.
    GTAV5 $C:\Games\Grand Theft Auto V\GTA5.exe
    

These instructions will help you get started with KeyFlow and enable you to customize its functionalities according to your preferences.

Contributing

  • We welcome contributions from the open-source community to enhance KeyFlow's functionality and user experience.

Keyboard Key Codes and Corresponding Key Names

  • This table serves as a reference for specifying shortcuts in the shortcuts.config file. It provides the decimal and hexadecimal values of keyboard keys, along with their corresponding constant names and descriptions. These constant names can be used to generate shortcuts in shortcuts.config as shown in the aforementioned example.

  • For more detailed information on virtual key codes, you can visit the Microsoft documentation.

Decimal Value Hex-Value Constant Description
1 0x01 LBUTTON Left mouse button
2 0x02 RBUTTON Right mouse button
3 0x03 CANCEL Control-break processing
4 0x04 MBUTTON Middle mouse button (three-button mouse)
5 0x05 XBUTTON1 X1 mouse button
6 0x06 XBUTTON2 X2 mouse button
8 0x08 BACK BACKSPACE key
9 0x09 TAB TAB key
12 0x0C CLEAR CLEAR key
13 0x0D RETURN ENTER key
16 0x10 SHIFT SHIFT key
17 0x11 CONTROL CTRL key
18 0x12 MENU ALT key
19 0x13 PAUSE PAUSE key
20 0x14 CAPITAL CAPS LOCK key
21 0x15 KANA IME Kana mode
21 0x15 HANGUEL IME Hanguel mode (maintained for compatibility; use VK_HANGUL)
21 0x15 HANGUL IME Hangul mode
22 0x16 IME_ON IME On
23 0x17 JUNJA IME Junja mode
24 0x18 FINAL IME final mode
25 0x19 HANJA IME Hanja mode
25 0x19 KANJI IME Kanji mode
26 0x1A IME_OFF IME Off
27 0x1B ESCAPE ESC key
28 0x1C CONVERT IME convert
29 0x1D NONCONVERT IME nonconvert
30 0x1E ACCEPT IME accept
31 0x1F MODECHANGE IME mode change request
32 0x20 SPACE SPACEBAR
33 0x21 PRIOR PAGE UP key
34 0x22 NEXT PAGE DOWN key
35 0x23 END END key
36 0x24 HOME HOME key
37 0x25 LEFT LEFT ARROW key
38 0x26 UP UP ARROW key
39 0x27 RIGHT RIGHT ARROW key
40 0x28 DOWN DOWN ARROW key
41 0x29 SELECT SELECT key
42 0x2A PRINT PRINT key
43 0x2B EXECUTE EXECUTE key
44 0x2C SNAPSHOT PRINT SCREEN key
45 0x2D INSERT INS key
46 0x2E DELETE DEL key
47 0x2F HELP HELP key
48 0x30 0 0 key
49 0x31 1 1 key
50 0x32 2 2 key
51 0x33 3 3 key
52 0x34 4 4 key
53 0x35 5 5 key
54 0x36 6 6 key
55 0x37 7 7 key
56 0x38 8 8 key
57 0x39 9 9 key
65 0x41 A A key
66 0x42 B B key
67 0x43 C C key
68 0x44 D D key
69 0x45 E E key
70 0x46 F F key
71 0x47 G G key
72 0x48 H H key
73 0x49 I I key
74 0x4A J J key
75 0x4B K K key
76 0x4C L L key
77 0x4D M M key
78 0x4E N N key
79 0x4F O O key
80 0x50 P P key
81 0x51 Q Q key
82 0x52 R R key
83 0x53 S S key
84 0x54 T T key
85 0x55 U U key
86 0x56 V V key
87 0x57 W W key
88 0x58 X X key
89 0x59 Y Y key
90 0x5A Z Z key
91 0x5B LWIN Left Windows key (Natural keyboard)
92 0x5C RWIN Right Windows key (Natural keyboard)
93 0x5D APPS Applications key (Natural keyboard)
94 0x5E - Reserved
95 0x5F SLEEP Computer Sleep key
96 0x60 NUMPAD0 Numeric keypad 0 key
97 0x61 NUMPAD1 Numeric keypad 1 key
98 0x62 NUMPAD2 Numeric keypad 2 key
99 0x63 NUMPAD3 Numeric keypad 3 key
100 0x64 NUMPAD4 Numeric keypad 4 key
101 0x65 NUMPAD5 Numeric keypad 5 key
102 0x66 NUMPAD6 Numeric keypad 6 key
103 0x67 NUMPAD7 Numeric keypad 7 key
104 0x68 NUMPAD8 Numeric keypad 8 key
105 0x69 NUMPAD9 Numeric keypad 9 key
106 0x6A MULTIPLY Multiply key
107 0x6B ADD Add key
108 0x6C SEPARATOR Separator key
109 0x6D SUBTRACT Subtract key
110 0x6E DECIMAL Decimal key
111 0x6F DIVIDE Divide key
112 0x70 F1 F1 key
113 0x71 F2 F2 key
114 0x72 F3 F3 key
115 0x73 F4 F4 key
116 0x74 F5 F5 key
117 0x75 F6 F6 key
118 0x76 F7 F7 key
119 0x77 F8 F8 key
120 0x78 F9 F9 key
121 0x79 F10 F10 key
122 0x7A F11 F11 key
123 0x7B F12 F12 key
124 0x7C F13 F13 key
125 0x7D F14 F14 key
126 0x7E F15 F15 key
127 0x7F F16 F16 key
128 0x80 F17 F17 key
129 0x81 F18 F18 key
130 0x82 F19 F19 key
131 0x83 F20 F20 key
132 0x84 F21 F21 key
133 0x85 F22 F22 key
134 0x86 F23 F23 key
135 0x87 F24 F24 key
144 0x90 NUMLOCK NUM LOCK key
145 0x91 SCROLL SCROLL LOCK key
160 0xA0 LSHIFT Left SHIFT key
161 0xA1 RSHIFT Right SHIFT key
162 0xA2 LCONTROL Left CONTROL key
163 0xA3 RCONTROL Right CONTROL key
164 0xA4 LMENU Left ALT key
165 0xA5 RMENU Right ALT key
166 0xA6 BROWSER_BACK Browser Back key
167 0xA7 BROWSER_FORWARD Browser Forward key
168 0xA8 BROWSER_REFRESH Browser Refresh key
169 0xA9 BROWSER_STOP Browser Stop key
170 0xAA BROWSER_SEARCH Browser Search key
171 0xAB BROWSER_FAVORITES Browser Favorites key
172 0xAC BROWSER_HOME Browser Start and Home key
173 0xAD VOLUME_MUTE Volume Mute key
174 0xAE VOLUME_DOWN Volume Down key
175 0xAF VOLUME_UP Volume Up key
176 0xB0 MEDIA_NEXT_TRACK Next Track key
177 0xB1 MEDIA_PREV_TRACK Previous Track key
178 0xB2 MEDIA_STOP Stop Media key
179 0xB3 MEDIA_PLAY_PAUSE Play/Pause Media key
180 0xB4 LAUNCH_MAIL Start Mail key
181 0xB5 LAUNCH_MEDIA_SELECT Select Media key
182 0xB6 LAUNCH_APP1 Start Application 1 key
183 0xB7 LAUNCH_APP2 Start Application 2 key
186 0xBA OEM_1 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the ';:' key
187 0xBB OEM_PLUS For any country/region, the ' ' key
188 0xBC OEM_COMMA For any country/region, the ',' key
189 0xBD OEM_MINUS For any country/region, the '-' key
190 0xBE OEM_PERIOD For any country/region, the '.' key
191 0xBF OEM_2 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the '/?' key
192 0xC0 OEM_3 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the '`~' key
219 0xDB OEM_4 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the '[{' key
220 0xDC OEM_5 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the '|' key
221 0xDD OEM_6 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the ']}' key
222 0xDE OEM_7 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the 'single-quote/double-quote' key
223 0xDF OEM_8 Used for miscellaneous characters; it can vary by keyboard.
226 0xE2 OEM_102 Reserved
229 0xE5 PROCESSKEY IME PROCESS key
231 0xE7 PACKET Used to pass Unicode characters as if they were keystrokes. The VK_PACKET key is the low word of a 32-bit Virtual Key value used for non-keyboard input methods. For more information, see Remark in KEYBDINPUT, SendInput, WM_KEYDOWN, and WM_KEYUP
246 0xF6 ATTN Attn key
247 0xF7 CRSEL CrSel key
248 0xF8 EXSEL ExSel key
249 0xF9 EREOF Erase EOF key
250 0xFA PLAY Play key
251 0xFB ZOOM Zoom key
252 0xFC NONAME Reserved
253 0xFD PA1 PA1 key
254 0xFE OEM_CLEAR Clear key