Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
60 commits
Select commit Hold shift + click to select a range
54e7070
ponyman: create build.cmd script
ghostminhtoan Aug 14, 2026
1c1aacb
ponyman: change GetTempPath2 to GetTempPath for compatibility
ghostminhtoan Aug 14, 2026
0b5da4a
ponyman: add Tu Binh Tran Don Gian input method
ghostminhtoan Aug 14, 2026
a193546
ponyman: support custom input method dialog and Tu Binh Tran standalo…
ghostminhtoan Aug 14, 2026
4811bbf
ponyman: fix custom input method ignoring keys by registering IS_SPEC…
ghostminhtoan Aug 14, 2026
5b7ec40
ponyman: fix presets showing question marks and make custom input dia…
ghostminhtoan Aug 14, 2026
acc6e8a
ponyman: fix custom layout resizing, implement || macro separation, u…
ghostminhtoan Aug 14, 2026
c06e78a
ponyman: disable shift-number word break for TBT and Custom layouts t…
ghostminhtoan Aug 14, 2026
1a3bdea
ponyman: fix standalone key start break and backspace double-tap reco…
ghostminhtoan Aug 14, 2026
a56cf64
ponyman: support unicode emoji surrogate pairs in macro encoding and …
ghostminhtoan Aug 14, 2026
91fe792
ponyman: change macro file to openkeymacro.md and use robust UTF-8 bi…
ghostminhtoan Aug 14, 2026
e6d704c
ponyman: change macro dialog filters and default extension to .md
ghostminhtoan Aug 14, 2026
b7c3608
ponyman: fix macro pure character mask causing invalid unicode charac…
ghostminhtoan Aug 14, 2026
13474fd
ponyman: normalize macro newlines to CRLF and handle Enter key correc…
ghostminhtoan Aug 14, 2026
ec93e89
ponyman: luon bung macro cung mot luc
ghostminhtoan Aug 15, 2026
a9e27cf
ponyman: bung macro bang cach gui phim truc tiep khong qua clipboard
ghostminhtoan Aug 15, 2026
22c6b2c
ponyman: luu va khoi phuc clipboard khi paste macro tren Windows
ghostminhtoan Aug 15, 2026
3ca7a4e
ponyman: fix clipboard lock in getClipboardText
ghostminhtoan Aug 15, 2026
1900fd4
ponyman: backup va restore clipboard khi paste macro
ghostminhtoan Aug 15, 2026
1d298f7
ponyman: cho phep resize cua so macro va tang size limit go tat
ghostminhtoan Aug 15, 2026
afbb795
ponyman: fix doi vi tri trigger label khi resize va bo gioi han text
ghostminhtoan Aug 15, 2026
cda2e09
ponyman: fix compile loi macro triggers label va dat vo dung vi tri
ghostminhtoan Aug 15, 2026
6639c90
ponyman: xoa trung lap function handleMacro va sua logic restore clip…
ghostminhtoan Aug 15, 2026
4039cab
ponyman: fix build sau khi unlock va rut ngan delay
ghostminhtoan Aug 15, 2026
f708440
ponyman: fix double paste event va dong bo clipboard truoc khi paste
ghostminhtoan Aug 15, 2026
a106fbd
ponyman: fix cat bot ky tu khi chuyen doi giua cac tu go tat
ghostminhtoan Aug 15, 2026
39c57e2
ponyman: fix clip image va fix loi tu binh tran don gian
ghostminhtoan Aug 15, 2026
8b0f188
ponyman: chan ap dung dau sau khi go so o kieu go tu binh tran
ghostminhtoan Aug 15, 2026
6cf0de1
docs: add workflow rules
ghostminhtoan Aug 15, 2026
23c6eb1
chore: ignore local workflow files
ghostminhtoan Aug 15, 2026
9a854f0
fix: keep TBT numbers raw after non-consonants
ghostminhtoan Aug 15, 2026
da30edc
fix: restore TBT standalone before raw keys
ghostminhtoan Aug 15, 2026
cce1d3e
fix: keep TBT raw number session
ghostminhtoan Aug 15, 2026
9d6c76b
fix: add TBT spelling rules
ghostminhtoan Aug 15, 2026
e7da9b0
fix: allow TBT vowel combinations
ghostminhtoan Aug 15, 2026
d32b3ad
fix: widen input type combo
ghostminhtoan Aug 15, 2026
755b86f
fix: use portable config folder
ghostminhtoan Aug 15, 2026
a768a1d
fix: match custom w and TBT vowel handling
ghostminhtoan Aug 15, 2026
4a3237f
fix: handle TBT consonant clusters
ghostminhtoan Aug 15, 2026
68dabb6
Support text macro blocks
ghostminhtoan Aug 15, 2026
ea55352
Fix macro import and Win key raw input
ghostminhtoan Aug 15, 2026
2dae361
Fix macro conversion and punctuation triggers
ghostminhtoan Aug 15, 2026
108784f
Fix UTF-16 EVKey macro import
ghostminhtoan Aug 15, 2026
1faae69
Improve EVKey macro conversion UI
ghostminhtoan Aug 15, 2026
4d624ab
Fix EVKey macro conversion parsing
ghostminhtoan Aug 15, 2026
4f073f1
Fix macro punctuation trigger timing
ghostminhtoan Aug 15, 2026
96fc0af
Skip invalid macro entries on load
ghostminhtoan Aug 15, 2026
73b8209
Consume macro trigger key
ghostminhtoan Aug 15, 2026
fd95b07
Reduce macro paste delay
ghostminhtoan Aug 15, 2026
9bdf05c
Add single trailing space for macro trigger
ghostminhtoan Aug 15, 2026
6bb6df0
ponyman: fix macro pasting old clipboard content by implementing veri…
ghostminhtoan Aug 15, 2026
79053b1
ponyman: disable clipboard set and paste in SendNewCharString during …
ghostminhtoan Aug 15, 2026
786f91e
ponyman: fix macro pasting old clipboard and first typing activation
ghostminhtoan Aug 15, 2026
7826168
ponyman: normalize macro text to lowercase
ghostminhtoan Aug 15, 2026
325be4f
ponyman: them dau tieng viet cho workflow.md
ghostminhtoan Aug 16, 2026
2735be9
ponyman: fix tilde macro shortcut and add 2-column sort in MacroDialog
ghostminhtoan Aug 16, 2026
6258a29
ponyman: add physical sort buttons for both columns in MacroDialog
ghostminhtoan Aug 16, 2026
cb84295
ponyman: increase MacroDialog initial height by 70px
ghostminhtoan Aug 16, 2026
2b22d64
ponyman: embed sort buttons into dialog resource template and trigger…
ghostminhtoan Aug 16, 2026
0f77478
ponyman: default alphabetical macro sort, auto jump on search, fix fa…
ghostminhtoan Aug 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,9 @@
/Sources/OpenKey/win32/OpenKey/OpenKey/x64/Debug
/Sources/OpenKey/win32/OpenKey/OpenKey/x64/Release
/Sources/OpenKey/win32/OpenKey/OpenKeyUpdate/x64/Release

# Local agent/workflow files
/workflow.md
/build.cmd
/.agents
/.agents/
18 changes: 18 additions & 0 deletions .vscode/c_cpp_properties.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"configurations": [
{
"name": "windows-gcc-x64",
"includePath": [
"${workspaceFolder}/**"
],
"compilerPath": "gcc",
"cStandard": "${default}",
"cppStandard": "${default}",
"intelliSenseMode": "windows-gcc-x64",
"compilerArgs": [
""
]
}
],
"version": 4
}
24 changes: 24 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{
"version": "0.2.0",
"configurations": [
{
"name": "C/C++ Runner: Debug Session",
"type": "cppdbg",
"request": "launch",
"args": [],
"stopAtEntry": false,
"externalConsole": true,
"cwd": "c:/Users/Admin/source/repos/ghostminhtoan/openkey/Sources/OpenKey/win32/OpenKey/OpenKey",
"program": "c:/Users/Admin/source/repos/ghostminhtoan/openkey/Sources/OpenKey/win32/OpenKey/OpenKey/build/Debug/outDebug",
"MIMode": "gdb",
"miDebuggerPath": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
59 changes: 59 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
{
"C_Cpp_Runner.cCompilerPath": "gcc",
"C_Cpp_Runner.cppCompilerPath": "g++",
"C_Cpp_Runner.debuggerPath": "gdb",
"C_Cpp_Runner.cStandard": "",
"C_Cpp_Runner.cppStandard": "",
"C_Cpp_Runner.msvcBatchPath": "",
"C_Cpp_Runner.useMsvc": false,
"C_Cpp_Runner.warnings": [
"-Wall",
"-Wextra",
"-Wpedantic",
"-Wshadow",
"-Wformat=2",
"-Wcast-align",
"-Wconversion",
"-Wsign-conversion",
"-Wnull-dereference"
],
"C_Cpp_Runner.msvcWarnings": [
"/W4",
"/permissive-",
"/w14242",
"/w14287",
"/w14296",
"/w14311",
"/w14826",
"/w44062",
"/w44242",
"/w14905",
"/w14906",
"/w14263",
"/w44265",
"/w14928"
],
"C_Cpp_Runner.enableWarnings": true,
"C_Cpp_Runner.warningsAsError": false,
"C_Cpp_Runner.compilerArgs": [],
"C_Cpp_Runner.linkerArgs": [],
"C_Cpp_Runner.includePaths": [],
"C_Cpp_Runner.includeSearch": [
"*",
"**/*"
],
"C_Cpp_Runner.excludeSearch": [
"**/build",
"**/build/**",
"**/.*",
"**/.*/**",
"**/.vscode",
"**/.vscode/**"
],
"C_Cpp_Runner.useAddressSanitizer": false,
"C_Cpp_Runner.useUndefinedSanitizer": false,
"C_Cpp_Runner.useLeakSanitizer": false,
"C_Cpp_Runner.showCompilationTime": false,
"C_Cpp_Runner.useLinkTimeOptimization": false,
"C_Cpp_Runner.msvcSecureNoWarnings": false
}
17 changes: 15 additions & 2 deletions Sources/OpenKey/engine/DataType.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,9 @@ enum vKeyInputType {
vTelex = 0,
vVNI,
vSimpleTelex1,
vSimpleTelex2
vSimpleTelex2,
vTuBinhTranDonGian,
vTuDinhNghia
};

typedef unsigned char Byte;
Expand Down Expand Up @@ -71,6 +73,7 @@ struct vKeyHookState {
* 2: Delete key
* 3: Normal key
* 4: Should not send empty character
* 6: Macro triggered by Space, send one trailing space
*/
Byte extCode;

Expand All @@ -80,6 +83,11 @@ struct vKeyHookState {
vector<Uint32> macroData; //used for macro function; it is keycode data
};

struct CustomRule {
Uint32 key;
int action;
};

#ifdef LINUX
#include "platforms/linux.h"
#elif _WIN32
Expand Down Expand Up @@ -131,6 +139,7 @@ struct vKeyHookState {
//#define IS_MARK_KEY(keyCode) (keyCode == KEY_S || keyCode == KEY_F || keyCode == KEY_R || keyCode == KEY_J || keyCode == KEY_X)
#define CHR(index) (Uint16)TypingWord[index]
#define IS_SPECIALKEY(keyCode) \
(vInputType == vTuDinhNghia ? isSpecialKeyCustom(keyCode) : \
(vInputType == vTelex ? \
keyCode == KEY_W || keyCode == KEY_E || keyCode == KEY_R || keyCode == KEY_O || keyCode == KEY_LEFT_BRACKET || \
keyCode == KEY_RIGHT_BRACKET || keyCode == KEY_A || keyCode == KEY_S || keyCode == KEY_D || keyCode == KEY_F || keyCode == KEY_J || \
Expand All @@ -143,7 +152,11 @@ struct vKeyHookState {
keyCode == KEY_D || keyCode == KEY_F || keyCode == KEY_J || keyCode == KEY_Z || keyCode == KEY_X || keyCode == KEY_W \
: (vInputType == vSimpleTelex2 ? \
keyCode == KEY_W || keyCode == KEY_E || keyCode == KEY_R || keyCode == KEY_O || keyCode == KEY_A || keyCode == KEY_S || \
keyCode == KEY_D || keyCode == KEY_F || keyCode == KEY_J || keyCode == KEY_Z || keyCode == KEY_X || keyCode == KEY_W : false))))
keyCode == KEY_D || keyCode == KEY_F || keyCode == KEY_J || keyCode == KEY_Z || keyCode == KEY_X || keyCode == KEY_W \
: (vInputType == vTuBinhTranDonGian ? \
keyCode == KEY_1 || keyCode == KEY_2 || keyCode == KEY_3 || keyCode == KEY_4 || keyCode == KEY_5 || \
keyCode == KEY_6 || keyCode == KEY_7 || keyCode == KEY_8 || keyCode == KEY_9 || keyCode == KEY_0 || \
keyCode == KEY_Z || keyCode == KEY_D || keyCode == KEY_LEFT_BRACKET || keyCode == KEY_RIGHT_BRACKET : false))))))

//is VNI or Unicode compound...
#define IS_DOUBLE_CODE(code) (code == 2 || code == 3)
Expand Down
Loading