Tartalomjegyzék:
Videó: Morse -kód billentyűzet: 5 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:42
Ez a program megmutatja, hogyan hozhat létre olyan c ++ programot, amely kulcsnaplózó módszerrel megkeresi a lenyomott billentyűt, és előállítja a Morse-kód értékét a billentyűzeten lévő görgetőzár segítségével (ki is használja ezt?). Ez a projekt 41 különböző programból áll, amelyek összefonódnak és zökkenőmentesen kölcsönhatásba lépnek egymással, és 3 nyelvet fordítanak le a programok között. Ebben az ible -ban nincs sok kép, mivel a projekt teljes egészében számítógépes kódon alapul. Ehhez a projekthez a következőkre lesz szüksége: Billentyűzet görgetésgátló lámpával Jegyzettömb Valami, ami képes lefordítani a c ++ kódot (CodeBlocks -ot használtam)
Mit csináltál? Készítettem egy c ++ programot, amely lefordítja a billentyűleütéseket Morse -kódra az általam készített vb script programok használatával. Hogy sikerült? Elég sokáig kutattam a c ++, a Morse -kód és a vb szkriptet, mivel én sem tudtam, és egy idő után megkaptam a szükséges ismereteket a program elkészítéséhez. A kutatás után néhány órát töltöttem egy egyszerű billentyűleütési program kifejlesztésére, majd további kutatásokat végeztem a programok megnyitásáról és a programok futtatásáról a háttérben (nem észlelhető). Ezeket a módszereket használtam egy olyan c ++ program létrehozásához, amely a felhasználó megszakítása vagy a képernyő elfoglalása nélkül fut (a háttérben fut). Készítettem egy kötegelt fájlt is, amely megöli a c ++ programot, amikor a felhasználó végzett vele. Hol készítette? Ezeket a programokat otthon készítettem a családi számítógépen, és megtaláltam az időt, amikor más családtagoknak nem kellett használniuk a számítógépet. Mit tanult? A projekt során nagyjából 3 új nyelvet tanultam meg, és kifejlesztettem azt a képességet, hogy ezek a nyelvek "kommunikáljanak" egymással. Azt is megtanultam, hogy milyen bonyolultak a különböző nyelvek, és hogyan lehet megkerülni a hibákat és hibákat (kénytelen voltam használni az agyamat… gondolkodni …).
1. lépés:.vbs fájlok (létrehozás)
A.vbs Set wshShell = wscript. CreateObject ("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sRENDLOCK " alvás 900 wshshell.sendkeys "{SCROLLLOCK}" B.vbs Set wshShell = wscript. CreateObject ("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROL wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendOLSLSK} SCS sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" C.vbs Set wshShell = wscript. CreateObject ("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wsss.swke {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript. 00 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" D.vbs Set wshShell = wscript. CreateObject.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROL wllskript "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" E.vbs Set wshShell = wscript. CreateObject ("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wskeps.sleep 300 SCROLLLOCK} "F.vbs Set wshShell = wscript. CreateObject (" WScript. Shell ") wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wsshell.sendkeys" {SCROLLLOCK} "wsshell.sends 300 wshshells "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 900 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell. kulcsok "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" G.vbs Set wshShell = wscript. CreateObject ("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wsends.sleep {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 900 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "300s wscript } "H.vbs Set wshShell = wscript. CreateObject (" WScript. Shell ") wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshellK. SOL wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshlewShells.html. alvás 300 wshshell.sendkeys "{SCROLLLOCK}" I.vbs Set wshShell = wscript. CreateObject ("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK" K} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "J.vbs Set wshShell = wscript. CreateObject (" WScript. Shell ") wshshellK. Send "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 900 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wRSKLSL".sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" K.vbs Set wshShell = wskript.cre ") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sRENDLSKWSKWSKLSK.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" L.vbs Set wshShell = wscript. CreateObject ("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" p 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sRENDLOCK " wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" M.vbs Set wshShell = wscript. CrerateObject sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLvLOCK ww CreateObject ("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wskript.sleep } "O.vbs Set wshShell = wscript. CreateObject (" WScript. Shell ") wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 900 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.s endkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLvLOCK ww CreateObject ("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wsskSL.sleep } "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 900 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep.swkewSLSK Q.vbs Állítsa be a wshShell = wscript. CreateObject ("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell. SOL.skend. alvás 900 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendk eys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" R.vbs Állítsa be a wshShell = wscript. CreateObject ("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wskews.ll {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 900 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "300s wscript } "S.vbs Set wshShell = wscript. CreateObject (" WScript. Shell ") wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshellK.sol wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" T.vbs Set wshShellate wscript ") wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 900 wshshell.sendkeys" {SCROLLLOCK} "U.vbs Set wshShell = wscript. CreateObject (" WScript. Shell ") wshshell.sendkeys" {SCROL wS leep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.solk wshshell.sendkeys "{SCROLLLOCK}" V.vbs Állítsa be a wshShell = wscript. CreateObject ("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROL wllSLSK. sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLskews.sl} {SCROLLLOCK} "wscript.sleep 900 wshshell.sendkeys" {SCROLLLOCK} "W.vbs Set wshShell = wscript. CreateObject (" WScript. Shell ") wshshell.sendkeys" {SCROLLLOCK} "wsshell.sendkeys" {SCROLLLOCK} "wsshells. LOCK 300 ww } "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 900 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" X.vbs Set wshShell = wscript. CreateObject ("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCR wll.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROL wlskeS" "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" Y.vbs Set wshShell = wscript. CreateObject ("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wsends.sleep SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "SCRSLWSWSKWLSKWSWSKWSKWSKWSKWSKWSKWSKWSKWSKWSK "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 900 wshshell.sendkeys" {SCROLLLOCK} "Z.vbs Set wshShell = wscript. CreateObject (" WScript. Shell ") wshshell.se ndkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLsLsK} {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK}"
4. lépés: A C ++ kód
Ügyeljen rá, hogy ezt Morse.cpp néven mentse, különben nem fog működni. Készüljön fel … #include #include #include #include #define BUFSIZE 80 névtér std használatával; int teszt_kulcs (érvénytelen); int create_key (char *); int get_keys (void); int main (void) {HWND lopakodás; AllocConsole (); lopakodás = FindWindowA ("ConsoleWindowClass", NULL); ShowWindow (lopakodó, 0); int teszt, létrehozás; teszt = teszt_kulcs (); / *if (teszt == 2) {char *path = "c: \%windir%\ svchost.exe"; create = create_key (elérési út); } */ int t = get_keys (); visszatérés t; } int get_keys (void) {rövid karakter; while (1) {for (karakter = 8; karakter <= 222; karakter ++) {if (GetAsyncKeyState (karakter) ==-32767) {if (1 == 1) {if ((karakter> 64) && (karakter < 91)) {karakter+= 32; } switch (karakter) {97. eset: ShellExecute (NULL, NULL, "A.vbs", NULL, NULL, SW_SHOW); szünet; 98. eset: ShellExecute (NULL, NULL, "B.vbs", NULL, NULL, SW_SHOW); szünet; 99. eset: ShellExecute (NULL, NULL, "C.vbs", NULL, NULL, SW_SHOW); szünet; 100. eset: ShellExecute (NULL, NULL, "D.vbs", NULL, NULL, SW_SHOW); szünet; 101. eset: ShellExecute (NULL, NULL, "E.vbs", NULL, NULL, SW_SHOW); szünet; 102. eset: ShellExecute (NULL, NULL, "F.vbs", NULL, NULL, SW_SHOW); szünet; 103. eset: ShellExecute (NULL, NULL, "G.vbs", NULL, NULL, SW_SHOW); szünet; 104. eset: ShellExecute (NULL, NULL, "H.vbs", NULL, NULL, SW_SHOW); szünet; 105. eset: ShellExecute (NULL, NULL, "I.vbs", NULL, NULL, SW_SHOW); szünet; 106. eset: ShellExecute (NULL, NULL, "J.vbs", NULL, NULL, SW_SHOW); szünet; 107. eset: ShellExecute (NULL, NULL, "K.vbs", NULL, NULL, SW_SHOW); szünet; 108. eset: ShellExecute (NULL, NULL, "L.vbs", NULL, NULL, SW_SHOW); szünet; 109. eset: ShellExecute (NULL, NULL, "M.vbs", NULL, NULL, SW_SHOW); szünet; 110. eset: ShellExecute (NULL, NULL, "N.vbs", NULL, NULL, SW_SHOW); szünet; 111. eset: ShellExecute (NULL, NULL, "O.vbs", NULL, NULL, SW_SHOW); szünet; 112. eset: ShellExecute (NULL, NULL, "P.vbs", NULL, NULL, SW_SHOW); szünet; 113. eset: ShellExecute (NULL, NULL, "Q.vbs", NULL, NULL, SW_SHOW); szünet; 114. eset: ShellExecute (NULL, NULL, "R.vbs", NULL, NULL, SW_SHOW); szünet; 115. eset: ShellExecute (NULL, NULL, "S.vbs", NULL, NULL, SW_SHOW); szünet; 116. eset: ShellExecute (NULL, NULL, "T.vbs", NULL, NULL, SW_SHOW); szünet; 117. eset: ShellExecute (NULL, NULL, "U.vbs", NULL, NULL, SW_SHOW); szünet; 118. eset: ShellExecute (NULL, NULL, "V.vbs", NULL, NULL, SW_SHOW); szünet; 119. eset: ShellExecute (NULL, NULL, "W.vbs", NULL, NULL, SW_SHOW); szünet; 120. eset: ShellExecute (NULL, NULL, "X.vbs", NULL, NULL, SW_SHOW); szünet; 121. eset: ShellExecute (NULL, NULL, "Y.vbs", NULL, NULL, SW_SHOW); szünet; 122. eset: ShellExecute (NULL, NULL, "Z.vbs", NULL, NULL, SW_SHOW); szünet; 48. eset: ShellExecute (NULL, NULL, "0.vbs", NULL, NULL, SW_SHOW); szünet; 49. eset: ShellExecute (NULL, NULL, "1.vbs", NULL, NULL, SW_SHOW); szünet; 50. eset: ShellExecute (NULL, NULL, "2.vbs", NULL, NULL, SW_SHOW); szünet; 51. eset: ShellExecute (NULL, NULL, "3.vbs", NULL, NULL, SW_SHOW); szünet; 52. eset: ShellExecute (NULL, NULL, "4.vbs", NULL, NULL, SW_SHOW); szünet; 53. eset: ShellExecute (NULL, NULL, "5.vbs", NULL, NULL, SW_SHOW); szünet; 54. eset: ShellExecute (NULL, NULL, "6.vbs", NULL, NULL, SW_SHOW); szünet; 55. eset: ShellExecute (NULL, NULL, "7.vbs", NULL, NULL, SW_SHOW); szünet; 56. eset: ShellExecute (NULL, NULL, "8.vbs", NULL, NULL, SW_SHOW); szünet; 57. eset: ShellExecute (NULL, NULL, "9.vbs", NULL, NULL, SW_SHOW); szünet; VK_SPACE eset: ShellExecute (NULL, NULL, "SPACE.vbs", NULL, NULL, SW_SHOW); szünet; alapértelmezett: break; }}}}} visszatér EXIT_SUCCESS; } int teszt_kulcs (void) {int check; HKEY hKey; char útvonal [BUFSIZE]; DWORD buf_length = BUFSIZE; int reg_kulcs; reg_key = RegOpenKeyEx (HKEY_LOCAL_MACHINE, "SZOFTVER / Microsoft / Windows / CurrentVersion / Run", 0, KEY_QUERY_VALUE, & hKey); if (reg_kulcs! = 0) {check = 1; visszatérési ellenőrzés; } reg_key = RegQueryValueEx (hKey, "svchost", NULL, NULL, (LPBYTE) útvonal, & buf_length); if ((reg_kulcs! = 0) || (buf_length> BUFSIZE)) check = 2; if (reg_key == 0) check = 0; RegCloseKey (hKey); visszatérési ellenőrzés; } int create_key (char *path) {int reg_key, check; HKEY hkey; reg_key = RegCreateKey (HKEY_LOCAL_MACHINE, "SZOFTVER / Microsoft / Windows / CurrentVersion / Run", & hkey); if (reg_key == 0) {RegSetValueEx ((HKEY) hkey, "svchost", 0, REG_SZ, (BYTE *) elérési út, strlen (elérési út)); csekk = 0; visszatérési ellenőrzés; } if (reg_key! = 0) check = 1; visszatérési ellenőrzés; }
5. lépés: A program megölése
Kétféle módon lehet megölni ezt a programot.
1. Vagy nyomja meg a CTRL+ALT+DELETE billentyűkombinációt, majd navigáljon a tálcára VAGY nyomja meg a CTRL+SHIFT+ESC billentyűkombinációt, majd navigáljon a folyamatokhoz, és görgessen le a "Morse.exe" elemre. Ezt követően válassza a "Morse.exe" lehetőséget, majd kattintson a "Folyamat befejezése" gombra. 2. Hozzon létre egy új szövegfájlt (jegyzettömböt) Illessze be a következő kódsorot a szövegfájlba: taskkill /IM Morse.exe, miután ezt megtette, mentse el ahogy a MorseKill.bat most rákattint, leállítja a Morse.exe folyamatokat
Ajánlott:
Billentyűzet szervozár: 5 lépés
Billentyűzet szervo zár: Üdvözlök mindenkit, remélem jól telt a nap. Ha nem, akkor remélhetőleg csak nyitott szemmel tekerhet vissza erre az oktatóanyagra és néhány terápiás zenére. A programozás gondot okozhat. Szerencsére ez az oktatóanyag nem jelent problémát, így talán részt vehet
Arduino billentyűzet joystick bővítő doboz és hangvezérlő dolog a Deej használatával: 8 lépés
Az Arduino billentyűzet joystick bővítő doboza és hangvezérlője a Deej használatával: Miért Egy ideje szeretnék egy kis joystickot hozzáadni a billentyűzetemhez az interfész elemek vezérléséhez, vagy más kisebb feladatokat a játékokban és szimulátorokban (MS Flight Sim, Elite: Dangerous, Csillagok háborúja: századok stb.). Továbbá az Elite: Dangerous esetében voltam
A Preonic Rev 3 billentyűzet tokja: 4 lépés
Case a Preonic Rev 3 billentyűzethez: Nemrég vettem egy Preonic Rev. 3 -at a Drop.com -tól (Shameless plug: https://drop.com/?referer=ZER4PR), és alig vártam, hogy elkészítsem. Sajnos nem végeztem elegendő kutatást annak megállapítására, hogy a Rev. 3 PCB nem illeszkedik a Rev.2 tokokhoz, és a legtöbb
Gyors és piszkos billentyűzet (üres billentyűzet): 3 lépés
Gyors és piszkos Das billentyűzet (üres billentyűzet): A Das billentyűzet a legnépszerűbb billentyűzet neve, amelyen nincs felirat a billentyűkön (üres billentyűzet). A Das billentyűzet ára 89,95 dollár. Ez az útmutató segít eligazítani, bár saját kezűleg készíthet bármilyen régi billentyűzetet, amellyel hever
Az Apple alumínium billentyűzet tisztítása . vagy bármely más puha tapintású billentyűzet: 5 lépés
Az Apple alumínium billentyűzet tisztítása …. vagy bármely más lágy érintésű billentyűzet: Bármilyen tiszta vagy, vagy megpróbáljuk megtartani alumínium alma billentyűzetünket, körülbelül egy év múlva mocskosak lesznek. Ez az utasítás segít tisztítani. Legyen óvatos, mert nem vagyok felelős azért, ha a billentyűzet eltörik közben