From edef7d188d58dccbaf8e8ab528709ca371b970a1 Mon Sep 17 00:00:00 2001 From: Tanasart Date: Sat, 8 Feb 2025 13:23:06 +0700 Subject: [PATCH] Hotkey now trigger on key down instead of key press (This should allow macro, input injection to work). --- datafiles/data/Nodes/Internal.zip | Bin 9101194 -> 9101194 bytes datafiles/data/Theme.zip | Bin 2867531 -> 2867531 bytes objects/o_main/Create_0.gml | 4 ---- objects/o_main/KeyPress_1.gml | 1 + objects/o_main/KeyRelease_1.gml | 5 +++-- objects/o_main/Step_0.gml | 15 +++++++++++---- scripts/globals/globals.gml | 6 +++--- scripts/key_press/key_press.gml | 9 +++++++-- .../node_path_reverse/node_path_reverse.gml | 2 +- 9 files changed, 26 insertions(+), 16 deletions(-) diff --git a/datafiles/data/Nodes/Internal.zip b/datafiles/data/Nodes/Internal.zip index c317b6d7d42ca7774fd3ebfb842d9435e1f55c67..f1aa548ef8a08527ffee20df840886f1064d15a5 100644 GIT binary patch delta 1398 zcmZA0OHfm17zW_lKog=Mv{q|^K)e(bM8GQ`f^f7dYO&fT0kx@@dP4;-fHhQFUlPwh zqYEwbFS>xNJ36D|7#GgiaSY%>votg9APW}SjU6{#bm;h=&l4>&^US>8cfS9^Nuuum zmZ7K*)9@i2$Ur7Of)g%e!Hwydfo$YpCUTL7kMRj+;Zw}U9DIhk@W6|F%tHYRQ3N06 zV*wUo5k5yTO0XD9P>M1vMLCwC0+p!3a;(5gtio!nK{aYni?yi3I@F^9>(Pj&+eVY$ zaqZ|P{a3*7=#byYma4;VluL;DjU^JE_>D3NlYV2Vge$FFvFDFwr`{eg+|p_b7|SGF z4%kCn@6k^KMy|AZNU?;5Alv0ZV`jQqETKJUlt{>X7V+qLDdgz;L3?kW>(RfyLY96x zr8W5hxXF96r%5FAMK|D zbdbKMLv)yq&`~-@?R1<@&`Ii`PC7-W=?tBvF6yQpI!8ayc?wf6{YV$6kA9+`>0;d7 zhOK8Dzwj*ulc<(3ki;r0#GfQ_*D0;O6iW4puyW~pPvJ_Bdv!qyxp|Ezdv?Ej;nr4; z6l!FsA%!|CM7aU=$NN%|SDB6h&YT^KR7&7Cz^CgcBhLSQYSzHmSfnC7P$hvKpZ<}6;*GQ*uNO|?05%bM&sx!e;{~a;s%QLBJN9{`PcYf5qAFFjT z#EW?Kyi25x_n&wy47Y0H@ekEE5!flR<#+@YVYM0TEePAs*7QJ zG8tA|q?6yPw#gC>PWa@7?i^I>CCK$}4XR?P{v1>d>2_nfJ1b{!SMo!ARMoFL7lNJc&Vr}I--IX@KOfUm)7$q zGYb>*FI+&^MiY&(E=)AW0xrfbZ88Q~xKKA5H!cj5dC$kGw%N;BTZ2^ z#$p^CNJBb)fD;+WgbP1nJhG6D3CKY%CSnpMV+y8X8h*lbxZyz_W?&}rQ2;MyVK(Mq zF6N;SMVOBTD8@o8LJ1aQ2})6hrT7`kupBF}66L5sC03ydt5J;_tU)d6?izJI$0YxH z{nl@|b5_GgGT#QIpU^2k{NL|8MKzx z(R$iI8)*~O(`MR2TWK3L(01BEJLwntm3EPj{1l)@YNFk=hxXDw3etXRrUP`44$*J) zI~}GY^amZK7CJ`9=>)Y>8=a(6behgkJ9W@mI!EW}0)?oP{-iGIri*lmF2`I=*nHYC zg>Na4K)Hl#2`sll>{$Z$ozm(~qF5gfsSN$#IWkhyJ$hymIk~kb&hGy5!mX_wNmR(B znk1^M5a9;Y6YEZfKcvghnW1p01pWfNx_Tt+{OVh?HW?ZUFG)=(lfaHwKbjUv*DWu@ zuGE-Uzb}b=zgRX6_N(vv(}%f5FsfWSdpJD$AZ#uDyjP@kI82dP>+lulEBVpf>Nh?5 z+7mNRs^}oA#1nJ2RBhH+PTb6wsw{4<8g0kTDhapaW~GF8akE-NX}>+hr4`cQ{wpNB z?l;RN%o(slaKKzCo%}xK(f0<-(f?FioTq*oFlWh_RF#8vCHK29Xy1?3YMI1~c=X7i zSs+!xQ+r=)ZLIyN`R1m)f#wdiQNpbbwayB$j~%KqONNtkw zyiT=6mT=-Lue5gdsx=bi`geL&p;Rw=RZXg0o9cLUSD%`jYJ2qKK6|#Tbw=%~G^*-k T5`#xyjjE#0OJd2Wx>NN(NTBFv diff --git a/datafiles/data/Theme.zip b/datafiles/data/Theme.zip index ba703c3f2eddd895d7f1e012176778bb8d1b17f5..ad6239a53f9319f93084a4864fe5902d7789e209 100644 GIT binary patch delta 215 zcmX}mDH4KU7=YmcK|xg9aTgcBrFaXY&A?R{i;m*~3`UP2Vn0Qqpinvjqe=N4Af<7Ze{|kT@$^r6 zdT1%0H?iK^^#O*z@G!;%Q_SEaK!^zQM9CuD{qsrSEdAFHV@h`; diff --git a/objects/o_main/Create_0.gml b/objects/o_main/Create_0.gml index 68f80b519..5bac02a78 100644 --- a/objects/o_main/Create_0.gml +++ b/objects/o_main/Create_0.gml @@ -59,10 +59,6 @@ panelInit(); - globalvar HOTKEY_MOD, HOTKEY_BLOCK; - HOTKEY_MOD = 0; - HOTKEY_BLOCK = false; - #endregion #region Loader diff --git a/objects/o_main/KeyPress_1.gml b/objects/o_main/KeyPress_1.gml index af7394135..f9e08d523 100644 --- a/objects/o_main/KeyPress_1.gml +++ b/objects/o_main/KeyPress_1.gml @@ -7,6 +7,7 @@ if(kb_hkey <= 0 && PREFERENCES.keyboard_check_sweep) for(var i = 2; i < 320; i++ kb_time = 0; kb_hold = false; + KEYBOARD_PRESSED = kb_hkey; if(!PREFERENCES.keyboard_capture_raw) { diff --git a/objects/o_main/KeyRelease_1.gml b/objects/o_main/KeyRelease_1.gml index 9db7c3dc4..f64ada15c 100644 --- a/objects/o_main/KeyRelease_1.gml +++ b/objects/o_main/KeyRelease_1.gml @@ -1,7 +1,8 @@ /// @description kb_time = 0; kb_hold = false; +kb_hkey = vk_nokey; keyboard_lastchar = ""; -kb_hkey = vk_nokey; -KEYBOARD_PRESSED = vk_nokey; \ No newline at end of file +KEYBOARD_PRESSED = vk_nokey; +HOTKEY_ACT = false; \ No newline at end of file diff --git a/objects/o_main/Step_0.gml b/objects/o_main/Step_0.gml index 6abcaabe4..06a8116ac 100644 --- a/objects/o_main/Step_0.gml +++ b/objects/o_main/Step_0.gml @@ -24,30 +24,37 @@ if(!LOADING && PROJECT.active && !PROJECT.safeMode) { //node step } #region hotkey + if(!HOTKEY_BLOCK) { + var _action = false; - if(struct_has(HOTKEYS, 0)) { + if(!HOTKEY_ACT && struct_has(HOTKEYS, 0)) { var l = HOTKEYS[$ 0]; for(var i = 0, n = ds_list_size(l); i < n; i++) { var hotkey = l[| i]; if(hotkey.key == 0 && hotkey.modi == MOD_KEY.none) continue; - if(key_press(hotkey.key, hotkey.modi)) + if(key_press(hotkey.key, hotkey.modi, true)) { hotkey.action(); + _action |= hotkey.key != noone; + } } } - if(struct_has(HOTKEYS, FOCUS_STR)) { + if(!HOTKEY_ACT && struct_has(HOTKEYS, FOCUS_STR)) { var list = HOTKEYS[$ FOCUS_STR]; for(var i = 0, n = ds_list_size(list); i < n; i++) { var hotkey = list[| i]; if(hotkey.key == 0 && hotkey.modi == MOD_KEY.none) continue; - if(key_press(hotkey.key, hotkey.modi)) + if(key_press(hotkey.key, hotkey.modi, true)) { hotkey.action(); + _action |= hotkey.key != noone; + } } } + HOTKEY_ACT |= _action; } HOTKEY_BLOCK = false; diff --git a/scripts/globals/globals.gml b/scripts/globals/globals.gml index 236c781bf..fb9d69b05 100644 --- a/scripts/globals/globals.gml +++ b/scripts/globals/globals.gml @@ -41,10 +41,10 @@ globalvar HOTKEYS, HOTKEY_CONTEXT; LATEST_VERSION = 1_18_00_0; - VERSION = 1_18_07_2; + VERSION = 1_18_08_0; SAVE_VERSION = 1_18_05_0; - VERSION_STRING = MAC? "1.18.003m" : "1.18.8"; - BUILD_NUMBER = 118072.011; + VERSION_STRING = MAC? "1.18.003m" : "1.18.8.1.001"; + BUILD_NUMBER = 118080.001; PREF_VERSION = 1_17_1; var _vsp = string_split(VERSION_STRING, "."); diff --git a/scripts/key_press/key_press.gml b/scripts/key_press/key_press.gml index 339bf4139..449acd850 100644 --- a/scripts/key_press/key_press.gml +++ b/scripts/key_press/key_press.gml @@ -1,4 +1,9 @@ #region key map + globalvar HOTKEY_MOD, HOTKEY_BLOCK, HOTKEY_ACT; + HOTKEY_MOD = 0; + HOTKEY_BLOCK = false; + HOTKEY_ACT = false; + enum MOD_KEY { none = 0, ctrl = 1 << 0, @@ -167,7 +172,7 @@ #endregion -function key_press(_key, _mod = MOD_KEY.none) { +function key_press(_key, _mod = MOD_KEY.none, _hold = false) { if(WIDGET_CURRENT) return false; if(_mod == MOD_KEY.none && _key == noone) return false; @@ -178,7 +183,7 @@ function key_press(_key, _mod = MOD_KEY.none) { case KEY_GROUP.numeric : _keyPress = keyboard_key >= ord("0") && keyboard_key <= ord("9") break; case noone : _keyPress = true; break; - default : _keyPress = keyboard_check_pressed(_key); break; + default : _keyPress = _hold? keyboard_check(_key) : keyboard_check_pressed(_key); break; } return _keyPress && _modPress; diff --git a/scripts/node_path_reverse/node_path_reverse.gml b/scripts/node_path_reverse/node_path_reverse.gml index c41fe8716..c0f2aa248 100644 --- a/scripts/node_path_reverse/node_path_reverse.gml +++ b/scripts/node_path_reverse/node_path_reverse.gml @@ -5,7 +5,7 @@ function Node_Path_Reverse(_x, _y, _group = noone) : Node_Processor(_x, _y, _gro newInput(0, nodeValue_PathNode("Path", self, noone)) .setVisible(true, true); - newOutput(0, nodeValue_Output("Path", self, VALUE_TYPE.pathnode, self)); + newOutput(0, nodeValue_Output("Path", self, VALUE_TYPE.pathnode, noone)); function _reversePath() constructor { curr_path = noone;