From 4a39819c8673f1691a027b6aeb2f3c61168cef54 Mon Sep 17 00:00:00 2001 From: Yves Rizoud Date: Thu, 14 May 2009 18:42:03 +0000 Subject: [PATCH] Follow-up on previous commit: Generalized the "Command" key support, it compiles on all platforms and somebody may want to plug a Mac keyboard in a PC :) Added a "command" symbol in the fonts, so shortcuts that use this key can be displayed. Fixed: In Keyboard settings, some very weird keys (Thinkpad "volume up") were displayed with a wrong number. git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@806 416bcca6-2ee7-4201-b75f-2eb2f807beb1 --- global.h | 11 +++-------- input.c | 4 ++-- keyboard.c | 15 +++++++++------ skins/base.gif | Bin 21839 -> 21862 bytes 4 files changed, 14 insertions(+), 16 deletions(-) diff --git a/global.h b/global.h index d4ed4517..bdcf7acb 100644 --- a/global.h +++ b/global.h @@ -1,5 +1,7 @@ /* Grafx2 - The Ultimate 256-color bitmap paint program + Copyright 2009 Franck Charlet + Copyright 2009 Yves Rizoud Copyright 2007 Adrien Destugues Copyright 1996-2001 Sunset Design (Guillaume Dorme & Karl Maritaud) @@ -103,21 +105,14 @@ GFX2_GLOBAL dword Key_ANSI; #undef MOD_ALT #endif -#if defined(__macosx__) -#ifdef MOD_META - #undef MOD_META -#endif -#endif - /// Key modifier for SHIFT key. Used as mask in ::Key, for example. #define MOD_SHIFT 0x1000 /// Key modifier for CONTROL key. Used as mask in ::Key, for example. #define MOD_CTRL 0x2000 /// Key modifier for ALT key. Used as mask in ::Key, for example. #define MOD_ALT 0x4000 -#if defined(__macosx__) +/// Key modifier for META key. Used as mask in ::Key, for example. #define MOD_META 0x8000 -#endif /// Boolean set to true when the OS/window manager requests the application to close. ie: [X] button GFX2_GLOBAL byte Quit_is_required; diff --git a/input.c b/input.c index 9335cb42..38152237 100644 --- a/input.c +++ b/input.c @@ -356,22 +356,22 @@ int Handle_key_release(SDL_KeyboardEvent event) case SDLK_LSHIFT: modifier=MOD_SHIFT; break; + case SDLK_RCTRL: case SDLK_LCTRL: modifier=MOD_CTRL; break; + case SDLK_RALT: case SDLK_LALT: case SDLK_MODE: modifier=MOD_ALT; break; -#if defined(__macosx__) case SDLK_RMETA: case SDLK_LMETA: modifier=MOD_META; break; -#endif default: modifier=0; diff --git a/keyboard.c b/keyboard.c index 20d371fd..e311d81a 100644 --- a/keyboard.c +++ b/keyboard.c @@ -318,11 +318,8 @@ word Key_modifiers(SDLMod mod) modifiers|=MOD_SHIFT; if (mod & (KMOD_ALT|KMOD_MODE)) modifiers|=MOD_ALT; - -#if defined(__macosx__) if (mod & (KMOD_META)) modifiers|=MOD_META; -#endif return modifiers; } @@ -457,6 +454,12 @@ const char * Key_name(word Key) strcat(buffer, "Alt+"); if (Key & MOD_SHIFT) strcat(buffer, "Shift+"); + if (Key & MOD_META) + strcat(buffer, "\201"); + // Note: Apple's "command" character is not present in the ANSI table, so we + // recycled an ANSI value that doesn't have any displayable character + // associated. + Key=Key & ~(MOD_CTRL|MOD_ALT|MOD_SHIFT); @@ -495,12 +498,12 @@ const char * Key_name(word Key) return buffer; } - if (Key & 0x8000) + if (Key & 0x800) { - sprintf(buffer+strlen(buffer), "[%d]", Key & 0xFFF); + sprintf(buffer+strlen(buffer), "[%d]", Key & 0x7FF); return buffer; } - Key = Key & 0xFFF; + Key = Key & 0x7FF; // Touches ASCII if (Key>=' ' && Key < 127) { diff --git a/skins/base.gif b/skins/base.gif index 24e5194fc0c0444abd092a5d0431a9c6374732e5..bf95a3e7436b9d3fc760ff02a5e23b5054b2a53d 100644 GIT binary patch delta 8086 zcmV;HA8FvvssZMz0kHEmf5EzN+$!wf8S2*`CjG$fB`;XToL+ey^Y9+tJAY2P)N(&m z@T~tn5WU&0!=TGMZ5wCz#M4@~bEPYIw=pn&L)}w@O2K z&%5(lLsrb`q8098kgGmF-Q41J!EJeiro4?Iw*9Tuo9j~t(}@XPe{Iu!-rdv}e?F|o z>A)$y{MLUF_EX)wqHo_`z_%3e65sTWo!Nc-NFMWpPCWC?o=^KT9EHH_yeAD-+FHFaC}4eHAP9z_2#%o6dEk#w z-uHbQ(ZQUJX%Rjle;>1*)7p{U%@LUZo)cj?-#GoA0kV_{(uYF@S`}#yoMl?#`H~K$ z{}X0G$nk+v7fE1SaS{xoU=K3kl4)Mj{os5|mfAtn|Gk;%xeO0V8oHo}L6w~YcAW0j z7TZ-(?uio-!qKDopccjlV5MM}v0sOD*66KBiQUv2Rav+Fe^&lwpnr|t6E+n7#h;md zVF%XXd)y&z4dL(IoaV&RC9awkN}wB}QyFgGuJs&!@nIr{k^g-Yh6&uPK%#qap*Q^< zt##ZpP1|NEqTunK<4s`T1>rT7-zf2s%Wx1YMj{n5mUK-b%ym?->0w7PBMvGf8l);6gdXN=C{hud#&?w~?k_8%k3E_yXSM{x(YYC!@of|zOBt3%BaFtvM z^5c21AikNOMh0T-wcY7W(%iwKjy2mxV%iDUo*;3n1=Lr$e7o@J7)q4v?_*Qu2aE@kx5o}GQ=c~~X%Q5>s1l~{&k zI-+H7e?{4;p`^P}+5TY{M^2waYMmI_r8sV*GjgM3PUa~&=3~Yq5gnodj-(oT|6@X8 z=2`_94}N64=@uC-RIGXCAR^vATBdUZrWbP7Lg8YInIrKmC79_n;DpL5+-NHU=z`%=;>iKe*)zvGF+dzU2!VMPD0pmSzj<(Bwo_o zS-BuUQlN7tX2azhFt+7*2GhsA%yu@%o@L!r)@Qp>+5viA5CJAy!sUC`f1)X=QW%D&3fXbzTG9qFY-B#Y&OpTm&D(Gt9r+$s-ecC6BDW-Z# zCKGlkmP%gUmlbAmqG%x^orvCNNtxtDf@p|B=5tb}k2)SRE|QLu5jq!tsgzDBl~!p} zKx1a^COg@p)v=#xk(2%fl>S+sZL(+^j%hm$+j+{Tm0oEXT@&@8TY1{u^ex>LKIkKL zrI#Avq{$xd(V)}?Dx$>_mkMc{as;8W+`gHp8gb}w`dyyHk)G9J&cUHDf!Sc9nCv+k zj3y%t*4Zy@=6QnSp;E+un^Iz5?x)GUq9E=eCi#*JQsnTRU0)v512$fAZj&vlswp*? zYL+UZ9wy7JByu*Lr+%SFT46735}Cqhq+%+(MI>o9r`dTFs3M za;b;Pse|IFBNpWl?Wvs7(4azRn2PDUD*qBH<7E0AW{i`nZ%{OAbwCHqQ)^#rK+ZX-s8qn z*YN%2%E{qgj$_h)R_Mb4XRaa_oBFKA9PAq!=I)suXrib|My7)z**SXL)>@#wW$1)H zXW3ex@F7(Bj{-?&nj2oLd4w0W+)&+U=Yng*37I~Q3iCR|%rz>@D4jdz>kP7^aOxwZ zHlVX^@4D`PprWmBXo8khPHq;SFGHAN{l?xbMvIwNCuC8hfT?49%F&Y@!}z){~F;QJMr0maH;X-#Q~ZXpAh%vV+&iceF^QyqGu)dUx7O6 zwcccZ1D{qR8$`DyEB5Zv5pys7vg0PNTzKNJdjhd5pOz|*4;W_-x5Xn6S1lVG;w?X0 zgPohIg&Xi$D%3J)cH%7v9~QZG@ZUx)ySmUQcMLM0W?(Mr9D}gb5~WZYnWmNEfDS0X z8QF4bZ>RO`gXSm=`?5_cXYM-xt@UzqHA*sn1*=>Gc5c9yt=X1oI6Gzk_HXa;auahS z`59t2nk+#-WVB5)18!gjx)ct0-=6*4?dApt(#DA(Vn)*w~^Y#)i$@6Kzg zh9#@IvN_6DAJS_E^C}aw@%K5S%*tqdI^olmWrM2U%Pv+C)^suXsq)gY`l;14AKz_% zer}rXV(KzsE$=kwN@Gf@(huWuX>A!#1JO~BT}n^xLH-lFBI5Jup!aSlA-n7P>6!ss zXCX24KVF|9i=Vh^botqEUFG9RlcgHVu|uw@$+dMyr_ubD?`OvBH}2o;{pMNkH7sf% z8PBXbpD|-kHf1k#V5?vwlK(FYYb2+CdZ!ZNYccwxArrMiAFRA)50GPj8p6|cYA$Ub85S}bYo}#FiYgc$?rR@W7>D&opCVKeZED(} zRqLW}kJ&6;u~sp(#g3iv2I*&CpC6_oqrP$QtA5s`;6?b)G_H@}@+~Tq3 zmPt?*c~8rACnBMb)p)1cbe4|v4V&m#mUwH=750&?nP*nv!g3qJ^8IpjB3E-zqT;+z zE;JM9oW3txUZ{Z9S=bhOQJXU^x28;6XwF`E@urOylc?B!CvNswESoidC_=KPi?g=& z-&T_)Osl!#h25Vko24%Ynu9*w# zW5IbW?r&ozazaaZj4ylT&9IB#Uyny`S7xI+5;@cnZMNDPEARRxg840uwh=R~=EApB zN;`5Z`^_e~4(De0f&X%UL!!AKo9UM?_uw^7N2^^VALjvQYrf+;K~$S?g|yR*nU7r}FQ>C0*+~>XC?>*nc{oU8S-v2$|-+kZXz1{mmKlFX#>;2;IJ>DCB zKm0x1M?T>9z1%l{|GwpC{^j!n<~P3J^Ml(jN8sB%=ihzeM?UJ4e%zaYIcQ-0~w zec~hjW%=C}Us|9&b&xj z_N6+|=gfu;v+@OO)GJk#hYQ2)DOhpg#$LxdmCCf`&Zb=LDs=l9bZF6|NtdqZxMoVR zoB5``y4tS5pM@iL#avbFY@$_BU+#SSHtNd4S!-T@Ox!U|;|@(Xcm5oD^wP+wSGWH9 zE?k+i6}yI+oauG(PQQ;ge;&DX_3PQUcTW+0eB#Qr)7LH^e}4V@4ZipPAHV?B5)L@z zhGGh##lk!6Dy#StZn6WvYl$cFY@#hQ$+i-YLG3R4PQVaF9FfF{2y`m3qNWmTF4-*e zP{9U&U5qO~|G)%#={3hXwDG17Ln^rpk4PeEvd==|>>QJ? z?qal$$GMQCtHUhkGxEoj$bu8nNG0{?Jo;RJO!G!TVZ`mq?(pQ$Qy~L|FgQ;C8uHW_ zY2=a~l(pY7k^&vS?dy334U4rS;uYA0-HACeTw6VMP{L&~hzx49E$&#}wO}L^} ziPmbZZIeGdS9_2^M!EeKTwymw?b>q94Kdtw)m@j}2hV*MUiLJcuuhvcJoc`sQdBd4 zwOv<5(nkNGuGFf$pu`l?-Y6eiIIdKQvb5J6TXihniY+$HVNvNEZlx`IJaW|`k>c{- zq<)%ktU>|H>#2aP3^_%j5E@g|iHBm8&S*WmnCG6^f-L5(1l>5hqOG#@Wh}!3mT7^B zcG}knM|HTVoa?IXXpr-y&gZVZHVNo|J$+r8;a~@QYTqzP&eA2haC}&3pdcd_)t+1i zc4nQZ)EPldBZlkizyZrGu#jRk)sAgQu1Em$-y3&n*FTLI5 zm0!MH|C)|}UU256pPqXDpufIr&p)oNSAAdJ9{6CT|2thA|HYDP?A5o}SKAjvw&Qz0 zJh@U~58P5&dQ-R8;M0vQyLP_|jL|-qDB`RSf$;Lv++qT)DAf!zPOI1O9ObDBs*H0j z15#l6ak$nzY;tkQTiW(UwsEC@CxI!v){k7*qD{?COfcJ6$r4kzhRNlIImDq)1Xip( z`3q1Q6c~*#>@q~n&1@_*6CvHe zN0;g>5si~#;mPuMstaX?GN(hF-|Xh4D~?frZls@uYNMNcVNHxHQyl?+gJnR`r4f;D zO5Xpc3`weVMT~sxY9v(7r>O%b5|d1t9+|j@K5jvhdYoieCP`VM>YWmmsYGEZSs9>4 zSyGj;lqI)XSt~O_`o;Jk{Oe2#Z>0!klD;-n(dj#+}SUw z2_0N+k(b%j<{_)uP1C%8(p%IyN+h>gPH=e>ouo16I@x)~biVU5?Ud&{rwLDcriGr5 z%qK1H+0V1=^IN&ZCO}u|PlJwxpr5P{ITKpXgFci}$z*0UB?`@nUeu!Vp{O%4D$R~o zbX5=)X+#@Z(o~KVr5Z6QxU#d-OQsa2@Nwx(nHN)=N`$64P2Np^d3q1(c~7VF?CDLX z|EIH{wsWX9-DEhATF#`#)T0@VYWSoIQmb;bs#u-sRX6&~r^0lpP0i<5Q(9Cwiglf2 zMQQaWiPl}Jb)=z$rCWIkSCN{LR7}l}rWk~&flAM)@|mm6{`yk88q`^qVJLVKG%r00 zg)#6urIhs3R?7B&@~{W}T&MK9Ko25ngS(ng%~F}z_=rrSG%Q|b5qs7nqIQ^a(4Vav9QE_ z={mH!>8#FmD?8ZXwUn+qO|LzFL&@Cuo^-zX)$e}!+h70x z{ujUj7Vv-xTwntq7{Liv@PZlKUnEP(Za4ZvCCcSaUa{nn{jlL(W`9eML5H9J`S^^t#97o`Ow{t@}Xb- zYJ$Umc_EzKn5M|it>oz{%2Z{u<9 zxXM3$-*259AKmRpYJ#gzNqDZaFQ^)qj4+c?w((Xy%2ed>gx+2cR&-A88dDvAS{GBm8 z6QHx*=a7z=*1d)MS3Cdt`qBI1!`1ruTHn~*g#X}N-v8C^e{j0Z=gRNQ&aELhFU}kd z){gDc`t0t8F6{*E%!Kazf{X%@PW&8yP|-FJ%hGP@R4(7}t;@Ux07pmd|4#7860XWl zOz3KE%&H9dWDM}OFVL>7$W-v_bgsraDA%w}#ujkZzKrXNEZf=+_!x!i+^^nBuxHK< z2!XEMbk5GEu*X1926=DiY7g*y@XbgM^iD777Ld?9@CNa22#t{Kl(6p%iwV1b#tAtu z1fpiK_DkoYPQ^;q!g79^lEo(QEvV8eMF{ zq%nJ{Q5&fX8+*q4e$e6~E(F((2JMg>nTP(=CF}~0?;Nok*+=yR&h^@{7<j=&Ak`MK; z5c7J_*eY=n+e{NB4&pk{3x$v$0ZkD*5&PWfAuC2l@DUWfPa#7s2C0r53$4e1aTbH{ zATQA$w-3~a@6Yf~;e0RaVsh?PrG=Ohs!xsVGd?F&Wk2WOBb4bmh*QYu~16m?7j zuP*zF?F_%r{p?Qfn5!v&VR9a?4Im{gAOo`C0`e$H5+$$CC+jiv|KJiItx<0}OfFZF z6SIvjL2xI>?*G>ET#{$$8d53iulv}F{?-x7><@4h^IfK=A1#g^AB6tWQC&83lrVEK zx6w37voxhl6ipMYP}5w@%_~`Rrd+dJ(r_wSGB)Xu6>*a{chfh2EwML&^Ea1rICYcL zXtP>i6EtPBq>$5ElB3nmYtfj~shpFEsMG(f^E$E9<+O8FSaUg>$~$GnG-s_Gk7_() z1w1{^t~#|IQf%4-BVJyv;P1zQUuh_#EL*6ML@eV zK^191^g}^(NQtyaM6+rrcy$Bj!j&N0n@!!fl_KeSXtED_O=l<}tW zBfC=IimvF?E zU6-fWcyR(7a2y%-=*&-Ejm%*E?N-JQV%suen@(c=6<{|BW1TLM(zRX*5>pfQSDo-p zhi)7xf7E0>uVQ1iWph>FW>#hUt(;u;8b`KZX%@(a>|;@OJRr^AWRYdVQ)X|L%|5eU z@eTBB)?yhDpk9n;uftX~P1A&SU1}Crbrxxx_GP6uYT1)}_|9v`wqnGE#YtUp@dE$*EorR-Xz`X~Hx_3Te=ca3hZhOfYMYibnO1S>ZgHayY#+CA zoz`*F7CFi^UjLD7zb{{{aq#9f1N+rp-Sy0jNMJR$^TyU;8CP{D*FetCaIJ%K_w+Mk z(>z;lc5j#Ra5wsLw|wx_DbtRW|w^w_+cWJYiTgnvPmaln>m-TX$a>F)o>(+dO*Lu14d*L^8(=3gQ3vuDL zcRSN}p|*Sv*KI*leS?>M-M4+Wi9)Lve|brK*Oz|_SbhmObq5%28#sO&3W4)35EJ-8 zvew1CMS>-`e^J+B|IhY=DOlemn1gvKe}(B6joMa&!9{1oX?gD!g#Wf-D|m*DEQiBG zc|%r*eVB*u7nKgUYKK>dU)VfWSVP;DhFQ*Ycd>N6mx(79bmx~}H+PD)C4+Tog)bP1 zzxa#27>vglf5jLVtN4li6^)}AQ_UUcX0og$CWJ^nrWE(d zjgwgwsft*B12~w$_nlc8f}uHtwU=(&F=_)m;oA@%lDp-mT0%^ zh-K-S|Ctx5*`4dTfaMsIe^;UzkQ43LXn{F^A3C5nmU%1ql{vbf#nxz{e^fMM^;l8q zb-mVe1({wWm!LcErSc7b(Sp<9od zFIt3yx256pqdi)ts}bdX7VG_a^$IiT0mOxunyUqElCtvkY^OEupI!PxTtA zpE__G8m}XooUyl^(>k$rI^Pl+qB&c%f%&eLHl&BTv>lt=9Q&YE`>~5Rve$W$F?g&A z8lEwGo(sFP{SB1;P_zB{veP=2^OmdW`KaaWv7flnDmjEtTaoKmf1t$~xNCc_Cp)+Y zI%;z{sr7oRM?0$Z4QRWYq_LZQPnvU$7P-63uL;VsYde%Hxwnt^s{MAl4O`0?R+8~L zwa<33=L5}T(UCW8nFDvggVHZ=)wof6pV~X9tN4oJ*mDn1xxf3t2RXHkcXLnqrFA>g zqS&lGoPSFLxt>LQNCa07kH_1-YucQinT!*vZ(Ce>SRBS@JVejc#%~JX%m4rY delta 8063 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