From 7f2dc665fb230a4c16e712f2941c8b392593b2d1 Mon Sep 17 00:00:00 2001 From: Raheman Vaiya Date: Sat, 8 Oct 2022 03:08:02 -0400 Subject: [PATCH] Add oneshot_timeout option --- data/keyd-application-mapper.1.gz | Bin 1524 -> 1524 bytes data/keyd.1.gz | Bin 8863 -> 8897 bytes docs/keyd.scdoc | 3 +++ src/config.c | 4 +++- src/config.h | 1 + src/keyboard.c | 10 ++++++++++ src/keyboard.h | 1 + 7 files changed, 18 insertions(+), 1 deletion(-) diff --git a/data/keyd-application-mapper.1.gz b/data/keyd-application-mapper.1.gz index 3cc0207cc5adc2045a19a7232b7aadba97b56afa..5b3fdb734cc70b96c9fb2a8df78f4621e9bef3da 100644 GIT binary patch literal 1524 zcmV@`PaHQ8{ha+3Qz|8ZxV;=|t16j{P1uxdp>#o^G=q3$nvu{^zm$da?Br(SklF$yc!R` z|8#u%X>t6Szvp1bn=aDL$`mW|S^@86wfJkAUp@t>%G6W#Ifa{H<+3^@)s`etbO2?V zLN6a>wlr;N+B(1=a$6&^q8qHa8~lnZd^IW-D;%N1st}NP10SZ14*VB=KoG|DhwG_O zE!U&HCRdSGfERQjm6AFH9eLwkvJ^U9n939g60XC5u*@9eV3@UaOJ<7BNd*nHJQe z4oG;aW05l5-{v`hIfrTDf+_(Y(JKG$;D%_|7a~d2isK9d3b*`s39tL|Fw}A^Jgotmjg*yqEexnp^19 zDyT055*!g>>heIg8?_xE5b!xd~%9RZ`##XP#_uF@vZrvn7lrx}IG=9ivD5 zEtBe-DV6#mu2h6HFseh^zRi>y?-!O%b~-?yTM0Sa=4Crgux9+}?oH*^)vL6mhW z2^}avO`v%A%hrqoF1 zqT&FO@d#BoIG}9&ejG0QPHzv4bK?VOHH}Ww!X$3MDrO5_2plv^vkfHR0TS+4$(l+R zo5JdW?L`aFB{IEx+Mpe7oWDLG#zIXWSl@S;MWS%mgP^pzQfm~lD0Gl9i4i?rD?f#S z2n%t7E3S2vA#U)g*&l9s-7Hh-*dNUJG#{$H>$||nDXA>sybk%TD%_X7<`)#Y zt1U*koej?~zA_K)0s2qX4E|j!Os4FFx-5Dq5PwRZciI#Ijooz50n1p|xR6JLQbkN! aEUy#HOv&38GeO(!ZTUA*g9fuO3;+OlBJ*$n literal 1524 zcmV_qPaHQ8{ha+Prc_D*aeF!X<3mIvT_Q?ON|Ojk(hB(C z+x6~Qc-I@-dvI0MzrAn9yBsv7Qc)sU+cWd#&6~0F%N;t=t@bMFl9n3^Md=Ef<+E9S znB~}g?V8T&s0r(RquZ#WaV=HOQ(T!qop-fY4dKt$MN(^JtXf)4Dv+X+cOS{Lm7`A8 zI?Iiw%XT-fDK7)fztH8b`jX|^Qu-NIpJjQw%5qhb6$r0%ZCa}DU>2^80P-Ts&)?9_ zwceBy)pgbs0&UXZL;D@tnc@H8^TWf*?D^#R4?9`@A`O%314fI2TB#c_I9^RhFNg(T~}aiz6J4+P}QY zvL{FSw(~j!Mmc-=@cR(omrwKbFUuW^2q5M>o?h3E(Uv7SrK@?Po(X>OrY ztDwFNNN_}ismlY|Zq$Zc$D&f!ZlpaGgwnU>79lp4J=(HR9__Nb&p_!{j1PUQc(fca z~GCyguO-;-t8{hU`hb$RKfi3 z@!?|SU1R!&4H&q0R*e4DMh@%m_WnP#_@G^wUav9nn3DNq#tfpi%$6{g=z4bfbc`PH zw@j*Urc~;OxKa_)z^D#s1Lr{lTkUF)T*JlW@TZ>(XPw^@m197yd5aRF$5kie4YG4f zu4=le5U1l2HTyqusYaQ^O*8cWW4GOe zn;{DTaU&xXox5?pr_zMZDo)Vzm4If721Du36dLs4>e#X=EZ*`VU$B&%&+b-3no=X3 zi;4qC#v@eW;DEC6`*FDJJH0(H&W#VC)igRy3zN73tC%f#A#l(v%{GvL2S~VIC2J~O zYznIfwihixm&o+)X@hpSasK*%7z;IhV13_V7Ky@L4}#L>O07}IqR>IcBu4aft^5=Q zA}quSuDI4whPc6}W`DTlb+b&RV}CH?(|oA*uJ88724OkO`H_V_X!&~Yy@{JN^Iy#| zBLzvym-_|p1U#6EIJW8dQji1js0S!S`!-D#UpVgZy0PL;a04en~*K7YEgiD@TW+4 zDydKRrKGaZ%gWvXnTV;y+5&lNj6t4EnUglf^%gfG7PW+TG2XHk@jB$Us&HTSnqN@p zuC^HEb~Ze}_{u!E2k1XlGx&F{FqyIw>ayseK>R6r-f2?=Gx8>jFNo%k$3;+OsUI~%_ diff --git a/data/keyd.1.gz b/data/keyd.1.gz index 37f5e33125af5b242a9bc7fec32f23ab1c7311e1..fc00b4ca186d444d90f533785eadf7b997add805 100644 GIT binary patch delta 8698 zcmV3ezj*fS^!c~02Mw1sgrc|O z<{kBnc3)kZN72hFD;l2L-p~SSn$cWL&A0*f>UO!zGn?+1IDfARVQ5>MCRAUp)bwc~%oD zhY;rR%2uYPt+pna$Hj~WDW?oT)fR=0o+{o<|&t63|KJomS<-Tz|g)_To99IyDLc6HAsD> zbjlX-$_NR^IpKE_Oq!HcW$R_h7{%UVbc_>CY;$XEVeBGna1K2Y2g^^(^|jlN%adTC zPd?hDZESz3)P`oQGd_mAt7B`<@u`%h6j)Nux8-L^@`5>!rW%5-N*yY?L157 zjFz$@lum8jw1f?lXV*4jzCew4Oj+1^PV9bBrhnNqqZRBhD2yjzYlL*_zbNUvOyW9A zcmwH~N#X+Z*48$S2)(JDW(7$L!bjcE?f@#9r{uFh8@>d3YV0nCuEFA#^xo9ABFvdd z*%oPBWwwsCEloT#xA7_`SoVI}Yns(a5%Zc5?j#kluo?$KsmjhOjIkpemr;?$vw{F8 zpnoB|KzEt2IqDJ-Tf~g1ArNuo>V`;bp$Nz@GI7)tr?qt!+LP1VU_OP0RR+ zu!?0|5Z2s5A=Z3$Jc*O*dKoA72LHhD=5j@a3>%=7Y=HpE;!zn~3T<(_}g(m+nwW`ANO zb7BfaU-UI{JO<+AEwM=q`yTxLod^|-C@KzFY^n=84@3{YrV~JKfm<4T&o;>(aIyyoKwXem^txSwr4hYkB#8dP2*7}# z@yf|G)>Fc>hW&4sX{?O*wyds!1bTHcM-k5sG>_{1}y3jZ;2k7XUVPsy<@kD5lC5w|I;w z+Bzl?kdoLS5D!j{j_KT|ZPLik-rK|e+e3QmB=c^xJI#cjzKqK1j+uTJZGVkFJ=^&I zF&#E?npMO(nIP+>P2{l01}X`#k%?@Yu$0TQBx{K5iN2FLWEnB>+zPW|d9QDv39c}+ zFnJ&sD*J?GdN+*ynB;BhiS#=H-hPZ>1#Ct*V`2Z`@Zr&;$6tOGE`kjn(H95?+W76m5kYh#)PI?QST6jS^ja5n2Lu~uXU@WlsYxkt_+cFM!AMJ8>XVpd z-$eKqv16r0M}ENSKs$&5D9c5V^)^$qoP)%&eiaF$cst9>Nt`n?*{(%v{r>5Tv(u-S z^k~#)2)3$9;!3;#63;fSoV?1*nUg!g`HmA>Of8H9t=hVc^N0i?eSgDgVId*1<%_G| z)+{?SFM_JxdH+CdNhwU4+>C9@$KOFmav(NB&U=oImvL5k@>&r0!oe;0&TS z(h-*Nylm`|IVIe7vww&dk}^jkB*vmg_Bb5xMm>)!Jy|gfvqq$pc@0rWf7;Ia$+JQ^ z>@tSk+LO+potdR^DyOzg%M!{?O2(hVHvlzGVIBNiyDtO+sw?i}`I?vAlIvh-Z_R?jLyG80P- zB?Ik~e23^D43>sLDBabCIN?DPvA;f~iF^#E_UucvNd$i2<7I9WMk(ps*ZDm=a z(->~;M2KaZr+`*Tcb!}B3}mJfb6sS_QX1{YLWN=I04U-cNMdF%q}w*!i0E}DY7{G$ z!e|0$d5|^sjJFV!L~3kE&T%~5sDvgmhteGfl&nA(COf1wF@!jRQVs0Ti}{D^94|oeZ6PG5YE9oL zj)_0tV!xg7`=)?>B-T!eQymyqOe#91bG&+xJ9}SLZ-X&g z&wsON^B}}ue=Og`jX}FYM9Ir=VuDF#ffJytUzPzo4us~ckiMZXB&~aI@0sK7Xq~)0 zI(F!RJ#_NU+n1uZ}SdRxJ zbCyqU)U$K(V4n*Xquoh`r_bc+Guy;_mw)Y&*qXjLRfl)pxF?tLL5D9Tr4!d21jBs3n?f-(59x~AVJeFk2YEiazF5cwSv07(IM19c{3Wzm% z58*~6fOSK4N}5)@yKXXPs%)dxNEw)tcGodtz9VAB>BYhz(dOt`hs9IYb)2(@8H=dF z%##p^sInf^j1TohW`G$=Y-2@1OMk`T%*s)nRe`6U4XpyEP*pCg3?ht}%h&74MB(>%Cy7_>M*$@4yG2e zNc1qjJ$YGPlNL}CcIUtVs}jKEo#wWej$6=~bWNRnl;5Lhi?yaZUw7z$@PFKh5VH6d zPDl2e;XLwe0pZ+$uvzFA&5n{kDL0i(U_*n6H7o*`c#?utfSORxcYFmp4qGN_^!mA> zebYJe(u(DAC&gI)VlAut9hny2m`RiXe^K}1Tz_7Cj3)GNG9WWLGh`OzKu}Zu!q9F6nILqpkkN$jY*}Zt zuF!m9JBU<`Yq)F)5j_n*W|{8$dFO>X6WpmH#?IQm*gFo?elgQM|i=t#qR2e2CS;!ErtK95j(5Nnt#^Cej?u=6P@=L z7-&W+xQM5)?iVPp4e6Ui zVDx2e!zd8P1_2cbrGEq{V^(<^*D|C{cOuc4APnJu?CcIbsmxz!TA8X;1-!qTojSN~ zG5jin!T)@~s^=ZM_2VaYtJnV%8x~>~?l;{yr{H>vlSEFla<)cbtf(Tx)3BUIRI|*z z_g@1>@NMy79+H3He2??ncvXjIod%Aljj#dF8tcxl;;jP=TYqKsFEK~%fACJf9J((D z58UqnxmXyTw2dP?81xTD9Pq)X95U>@M;!EKJ!2y)^g%ih8wySoS$hWFE+(vXIlmGqJW#{j60;)OYwK!{-JKGH(pP}; z%pz<`jhyGJfseoi9HHV?tt=6Wbb%dUiOYe_=VdXr#VpV2c`zM&XjsWlvxHH}gs!`_ zO*S;k8FEsKb>$g+Yg8MzQs1=*^4cq?W*7JtBwZ#fl8_ZesK1P=MLH$|3| zsf{khBLm0$-E96oX?FrP^MpCPYETw)OVH}l5ZG~x)5Y#-3(^!cBoL`3@?LlR8^a0! zeRbLdeLa#7r)-EuaNjmb7eR_T?e>6Pdji=OH-r2bMTh-&0?lX;wqey`PWXllVAgWM zKN($|XMa(Z?Xp(n)`5l7u*Wc!n0JeyHp^{N_gUs!Hg#ypDh|ZYm0;`*3W!jAEVE&< z2Z3S{Bsh`f#Y~$HB@qEBR&95j`kp)S>aA-WnP`i=80ZpA!`Gqxmnb^KEkkpdZLnxO zbqOIsB!_9HPcR=IKqQeBd$)IrUV6urlOYV-qF1z>;h=Oak7k%8C5Vu{tn&=1y?OoJ*PX;=s$#Py*lOlHjL4>1vGUebaZ%^7)AoIL zT7MBjcI+)snuWrGK{5YW;|GcP=?`bVmy3R>2fs^wq_Gf2-{~m@T`VaJRTqsODw~kJ z0A4bPXvk~v568~AC#cE?P$blcgbwdu^g+ORW^ZV0VJoovNrNw!DIt`;ub1xIHY{l^}G_mk-0c9XWu zCn7J*xHg|&z3B}VWJVE4r)ipbk2q3Pm4^Kyr4y{Q6i$TcCls+;4r3#c zQBbFMsTCESz6$6!5N7cr0!0lLa7y)^jPHnJBp}XYA$- zLjwGu7snpi6%_&s*U!h_pmZ&GAYY2llP0JxGI~C4b3I9&hM9 z3ETDninPNJC>_Z8Fl9$g5c}Y`tv4K85{PuQGL}LdJSD>P;n~DCno`%r6;yf(HSN^uvd)9Gxct1 zI%c;TMvp=^yaR28ciEo--hb|_-T>TMWEJ@d%+I`n7Eq@Hbx1B@j4jA^j4G=vfGKq% zMhgtKUa&0I1Z0i2cS!>I%4KtqTqK-)a3Nuj0;kz8EVQVsUho+TG^Cpt5|$Y%;g%#^ zdP`IOV(ha^{1fZ!DB4oG)r<@A-$z?;+;k7=7d#wH-_cf$H__I8<9}_0C>U4~NKdib zM;m?1Zg~Pk*n1JrvgEx}?bZg_-+z=G?H_*m6$aD8qP}W@m`|s8r`I016Ph>DBlvwM zXn{U`3h!R+jK3-fw)!X)$xP&2$DMB&yE8;Oi*Sep%-(Bjfn9b|wI3;5^Y065isYv|?I*7(< zNsm=ijMy3q=8n*k|HDAft|+6YV<30Dn6!y4IT+i6(t1S@ivM zPF<7b)ZSDOFqUyM7cNs-c~<1!2X8gmByHzW3IuKw*Rx|)A6 z-hcGP)%K*NuMhSgesM+C<<-A)O%)pKUc5ATi(d4&BXT(}fA4Su%{}rS1p3(QHTm0E z(0xNP#c%eF+)jFQiR%=~6C%s!N-?%a^w&KpYKaM&MEkIO|imT|}A% zdd=TULP*10JGDN&&9RuxT*X<~og-2!7CsAcUxWr9j=iS8j zx4kP=!YRd=m_}P6A9nPQhX`3{gb2;^$9$m=QHzl@&AA_$9B9>p3~BGF>UmOx^K06( zZbAfwZmm2(t26tlGg8E*uDT;n_gkOgqmt@wU8vrfUN133D#Job|? z=Xei}NGd{E@%SixvmC9@G|#+gE0^o0j4o$48`p%9U5{cbmntgBB?L%+%E7XR<#KmS z9H$6LyF$fnRyU%sSdm>NzV^;o2bAb)KOF`s8>JT{yr(sJ?Q)1nHkQzBC zc-8eO3kgclB!>*Y{z!IR+1BFTlaNBqp4nxiq}bJ-x)Dy--uz9~O`j672fKH(?}J@s z-aP9z*UXMSB@GTgG1#FS>}{7Q*~@A)hkrp$^O&6(pPK98C+2$S<~qiPpY&A9E)SF6 zxjZ-ZE3`vGae)$E{4iOQUo_>lEe^OY8{ZE5CFsUyW%ApNDVcw_{u4Mw0R88Z*{71& zbl8c8&oe5-ZZ>N{{XQtShWPsP&F3d^2pXgoJy1`-4|;Wh$IpmL#}lRl@}cJ^3x5eA zcdk5sif6~>VE^#ZsHYau$Lro%XCD-aK_P=R?(rE(?R*@67JLXtq0v6cPk!ZaK_cS= z=k^(y`@`5~g901QP=QC>yIS~{OKD=U`&l-A{A~R3Gp_LmOPg-E7TWw+R(bk45lC8* z$?1PL!7Y8O49!8xE!Tr3QhFeTAAh6tQ00n)f&PtC>H0mQ0HGglJXtQ$csb@GbvcqtC3V6EF7VZu9 z+C3Hjm(VL|OwLZJ`86jbTI;fqpkkd~o?l#qnvM@KYi9c(cHX68LqXBBchNRBN2Yur zMyjqwcVUnvfrE9J+CbGaoEZh~=(Kr2w6XEXrI+fH`^sI=ETiGq|cTXEbs(6%)Q;|%WgG*mc>KEnBg#eL*4 z*oP!v@fLoc^Kl(*A+6|gEGH`T{Qx!Ib#*MCJp|eQohH(vzo}d~x_=#XI?vg+L-xDW z7N(M55EvB$vXEvQ_UEOo79=8gW3*0@cY`Zd6{`U?_DAJM3peVHt0f7BzX%kcj z;5A~4E2q%SRtv=0VO_Slq}yzy_Fn~p_W683fH-~?1nA(WcYMQH;_hk!1}Zh#VqsI{ zn&hjfGY;ng@ApZ4x%tMWD|DM9(E$`?wkS}sD!DPAo@kTaKm4-FRr3` zo#YV?`UA0X_$+Y$hR?-2b58;cX*tveW?ZjvV-Z~JDUb_<6i8oFg{A`C0UPTgYk7qa)BGeBE_|l1_mX{ zO_R1LAtH3;5>8ZugA9QTw=b!r=%J;uL^xfR-*A@>|E_InHk={?q|BXqX5gE0sXKBZ zos`eE)T3Z?7`S&#b~K_FaKS$xZULw&Il7yk$VDqngaW0 zHEG%>EQEve{S738?;6i=f{^&(wVx1Cq=!0e?{;y=9kjql+)LaJBW4au@s4@CzrQo6 z-5PDEO7N)?jP*N9o3UI;)b=a&n2TsCvlvKSW>!Q^!95mue> zyW>$$1z%eLpSIbiFB3vE@q)5!Mmv$vUgqzKGauSCOER|AJ8PjR%i#99Z~4ZbdH-5S zm@gME&$*yVQJE>FMX#+xaloOn7b%E`(%SF z526k(H3j*~NTl-dYAtt~B9V$KifsYH?kBXMigZPUMQe^{wo3+ef3ep%ka1j2QP z!lm@`yV|F*(Q;KmZ`NVV=Zz;(Yjin+mL{J`#Ve=al3jjcj_gZ zS;~L-fCL$Jsj184+BU(ZGF;r5TFke^wH3L=RfXFbjm(m!T?7?>l>Gs5N-Eo3Wf-Q< zx_esPKI&~gTCm1f);UvxJ?$!+K7HvA^LBrA*rux=q@+ysAvpJaHs&Yq9q7Uh(o^FN z>_k9rttdR(uJm=Z;Z6;w9f(21`kRXfg~e$|&eSr3hR@_ZR0%fsHs%OR_)rmo49{p# z6z!~Vcg`}-`Xpk1YxHIVLTom}{SIm(Zxc~R>53KwJuqMSq{!|<2h~*5s)XmoSGmYZ zS*uk4jgS@J^n3N&FUIU&Na$Pt6)zGE9{2|4zIkOeo!%FZ_~cDo2JCC#s2e)CG~sQ) zCc8sy@P^MC<__BQs+_tjAVPn;%;EEfxl%LO%2Uty)5|oLKLYh#^}hr2Jj??tSo`{-(tth3cOqW9na`t%vk+KiYak zAHRvV9@EEvKSx_%(#O9>TVK(~Z=En0N*6-BWP68TLSiJ(OV| z%CL`Q*vB&Lmon^EGVIqf?CfF@$K%w$|ELx zglEJIVWUwiJoIWM7XN<^mbRmb10C}uo#A~GPc*|ItAl#IyPT&!WjOTkUUpYH@~s;j zu-A(jCHV!apQ|o89b-;+Qwz0vHom$FJnbPOX(r(3&(6K75bww!BT0bfN4U))+QP`+ z(927Iyq134@-93+9?W*YhBJy)NDarBZG>1Ag5YB@(*r6C6V z-Jrk?Y?N5?$Lk5i$yg!^7(+ogTG*lmn`KFS-`{#XRo_Xre_uI;E}9$e$; znW^(EIlqO!3qaVovNp+)mrmdKHoDfe$9I7A6=#{dw68%*wmbTn+`Zw9fx35$`7-Z+ zjFa;EWfEkU%=bR*UGL>wy3;F0aYdWHstdR3MXvZhi1N6G;iY_Xlk}auElk(-&QkYm z$FRgy8S1e!xE$iw-$}?ZxHqqVc){0t{a7JMt$=0yDxTxwJM+glTg7JkaR1<|@hDIq z&fa{_s>4h6=(#*c()`*P`~IADjo_g%<-5?Efv($DIqP7@^QKwWM|*oS!hSoEIP6|^ YgNY^gHzVcU)+f>b0bT{joBCq_0M>^9qyPW_ delta 8664 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 z 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 diff --git a/docs/keyd.scdoc b/docs/keyd.scdoc index 5e43840..e3cb824 100644 --- a/docs/keyd.scdoc +++ b/docs/keyd.scdoc @@ -543,7 +543,10 @@ any of the following options: *chord_hold_timeout:* The length of time a chord must be held before being activated. (default: 0) + (default: 0) + *oneshot_timeout:* If non-zero, timeout a oneshot layer + activation after the supplied number of milliseconds. (default: 0) *Note:* Unicode characters and key sequences are treated as macros, and diff --git a/src/config.c b/src/config.c index 821894a..3904f69 100644 --- a/src/config.c +++ b/src/config.c @@ -419,10 +419,10 @@ static void config_init(struct config *config) /* In ms */ config->chord_interkey_timeout = 50; config->chord_hold_timeout = 0; + config->oneshot_timeout = 0; config->macro_timeout = 600; config->macro_repeat_timeout = 50; - } /* Modifies the input string */ @@ -730,6 +730,8 @@ static void parse_global_section(struct config *config, struct ini_section *sect config->macro_timeout = atoi(ent->val); else if (!strcmp(ent->key, "macro_sequence_timeout")) config->macro_sequence_timeout = atoi(ent->val); + else if (!strcmp(ent->key, "oneshot_timeout")) + config->oneshot_timeout = atoi(ent->val); else if (!strcmp(ent->key, "chord_hold_timeout")) config->chord_hold_timeout = atoi(ent->val); else if (!strcmp(ent->key, "chord_timeout")) diff --git a/src/config.h b/src/config.h index 79c6a82..8be0153 100644 --- a/src/config.h +++ b/src/config.h @@ -130,6 +130,7 @@ struct config { long macro_timeout; long macro_sequence_timeout; long macro_repeat_timeout; + long oneshot_timeout; long chord_interkey_timeout; long chord_hold_timeout; diff --git a/src/keyboard.c b/src/keyboard.c index 1a8c498..9faecb1 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -404,6 +404,7 @@ static void clear_oneshot(struct keyboard *kbd) } kbd->oneshot_latch = 0; + kbd->oneshot_timeout = 0; } static void clear(struct keyboard *kbd) @@ -605,6 +606,10 @@ static long process_descriptor(struct keyboard *kbd, uint8_t code, } else { if (kbd->oneshot_latch) { kbd->layer_state[idx].oneshot = 1; + if (kbd->config.oneshot_timeout) { + kbd->oneshot_timeout = time + kbd->config.oneshot_timeout; + schedule_timeout(kbd, kbd->oneshot_timeout); + } } else { deactivate_layer(kbd, idx); update_mods(kbd, -1, 0); @@ -1039,6 +1044,11 @@ static long process_event(struct keyboard *kbd, uint8_t code, int pressed, long if (handle_pending_key(kbd, code, pressed, time)) goto exit; + if (kbd->oneshot_timeout && time >= kbd->oneshot_timeout) { + clear_oneshot(kbd); + update_mods(kbd, -1, 0); + } + if (kbd->active_macro) { if (code) { kbd->active_macro = NULL; diff --git a/src/keyboard.h b/src/keyboard.h index 934b216..127af34 100644 --- a/src/keyboard.h +++ b/src/keyboard.h @@ -49,6 +49,7 @@ struct keyboard { struct macro *active_macro; int active_macro_layer; long macro_timeout; + long oneshot_timeout; long macro_repeat_interval;