Obsah:
Video: Klávesnice Morseovy abecedy: 5 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:22
Tento program vám ukáže, jak vytvořit program v jazyce C ++, který používá přístup typu logger k nalezení klávesy, která je stisknuta, a vygenerování hodnoty Morseovy abecedy pomocí kontrolky zámku rolování na klávesnici (kdo to vůbec používá?). Tento projekt se skládá ze 41 různých programů, které se vzájemně prolínají a vzájemně spolu bezproblémově překládají 3 jazyky. V tomto dokumentu není mnoho obrázků, protože projekt je založen výhradně na počítačovém kódu. K tomuto projektu budete potřebovat: Klávesnici se světelným zámkem posouvání Poznámkový blok Něco, co dokáže kompilovat kód c ++ (použil jsem CodeBlocks)
Co jsi vyrobil? Vytvořil jsem program C ++, který převádí stisknutí kláves do Morseova kódu pomocí programů skriptů VB, které jsem vytvořil. Jak jsi to dokázal? Strávil jsem docela dlouho zkoumáním skriptů C ++, Morseovy abecedy a vb, protože jsem to také neznal a po chvíli jsem měl potřebné znalosti k vytvoření tohoto programu. Strávil jsem několik hodin po výzkumu vývojem jednoduchého programu pro stisknutí kláves a poté jsem provedl další průzkum otevírání programů a spouštění programů na pozadí (nezjistitelné). Tyto metody jsem použil k vytvoření programu c ++, který běží bez přerušení uživatele nebo zabírání místa na obrazovce (běží na pozadí). Také jsem vytvořil dávkový soubor, který zabije program c ++, když s ním uživatel skončí. Kde jste to udělali? Tyto programy jsem vytvořil doma na rodinném počítači a našel jsem si čas, kdy ostatní členové rodiny počítač nepotřebovali. Co jste se naučili? Během tohoto projektu jsem se do značné míry naučil 3 nové jazyky a rozvinul schopnost, aby tyto jazyky mezi sebou „komunikovaly“. Také jsem se naučil složitosti, které jsou s různými jazyky spojeny, a jak obejít chyby a chyby (byl jsem nucen použít svůj mozek … myslet …).
Krok 1: Soubory.vbs (vytvoření)
A.vbs Sada wshShell = wscript. CreateObject ("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" spánek 900 wshshell.sendkeys "{SCROLLLOCK}" B.vbs Set wshShell = wscript. CreateObject ("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" C.vbs Set wshShell = wscript. CreateObject ("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.send {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 9 00 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" "D.vbs Set wshShell = wscript. CreateObject (" WScript. Shell ").sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" E.vbs Set wshShell = wscript. CreateObject ("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys " SCROLLLOCK} "F.vbs Set wshShell = wscript. CreateObject (" WScript. Shell ") wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" { "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 900 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.send klíče "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" G.vbs Set wshShell = wscript. CreateObject ("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 900 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.send } "Sada H.vbs wshShell = wscript. CreateObject (" WScript. Shell ") wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} " wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLOCK uspat 300 wshshell.sendkeys "{SCROLLLOCK}" I.vbs Set wshShell = wscript. CreateObject ("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOC K} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "J.vbs Set wshShell = wscript. CreateObject (" WScript. Shell ") wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 900 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys}" SCROLL.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" K.vbs Set wshShell = wscript. CreateObject ("WScript. Sell) wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" L.vbs Set wshShell = wscript. CreateObject ("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.slee p 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" M.vbs Set wshShell = wscript. CreateObject ("WScript. Shell") sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" N.vbs Nastavit wshShell = w CreateObject ("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell. Sendkeys } "Sada O.vbs 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 "{SCROLLLOCK}" P.vbs Nastavit wshShell = w CreateObject ("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys } "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 900 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLL Sada Q.vbs wshShell = wscript. CreateObject ("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" spánek 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 Set wshShell = wscript. CreateObject ("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.send {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 900 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.send } "S.vbs Set wshShell = wscript. CreateObject (" WScript. Shell ") wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} " wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" T.vbs Set wshShell = wscript. CreateOhell ("Script ") wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 900 wshshell.sendkeys" {SCROLLLOCK} "U.vbs Set wshShell = wscript. CreateObject (" WScript. Shell ") wshshell.sendkeys" {SCROLLLOCK} "wscript. leep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wshshell.sendkeys "{SCROLLLOCK}" V.vbs Set wshShell = wscript. CreateObject ("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshsh {SCROLLLOCK} "wscript.sleep 900 wshshell.sendkeys" {SCROLLLOCK} "W.vbs Set wshShell = wscript. CreateObject (" WScript. Shell ") wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" } "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 "{SCROLLLOCK}" wscript.sleep.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 Sada „{SCROLLLOCK}“wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" Y.vbs wshShell = wscript. CreateObject ("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 900 wshshell.send "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 "{SCROLLLOCK}" wscript.sleep 300 wshshell {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK}"
Krok 4: Kód C ++
Ujistěte se, že to uložíte jako Morse.cpp, jinak to nebude fungovat. Připravte se… #include #include #include #include #define BUFSIZE 80 using namespace std; int test_key (neplatné); int create_key (char *); int get_keys (neplatné); int main (void) {HWND stealth; AllocConsole (); stealth = FindWindowA ("ConsoleWindowClass", NULL); ShowWindow (utajení, 0); int test, vytvořit; test = test_key (); / *if (test == 2) {char *path = "c: \%windir%\ svchost.exe"; create = create_key (cesta); } */ int t = get_keys (); návrat t; } int get_keys (void) {krátký znak; while (1) {for (character = 8; character <= 222; character ++) {if (GetAsyncKeyState (character) ==-32767) {if (1 == 1) {if ((character> 64) && (character < 91)) {znak+= 32; } switch (character) {case 97: ShellExecute (NULL, NULL, "A.vbs", NULL, NULL, SW_SHOW); přestávka; případ 98: ShellExecute (NULL, NULL, "B.vbs", NULL, NULL, SW_SHOW); přestávka; případ 99: ShellExecute (NULL, NULL, "C.vbs", NULL, NULL, SW_SHOW); přestávka; případ 100: ShellExecute (NULL, NULL, "D.vbs", NULL, NULL, SW_SHOW); přestávka; případ 101: ShellExecute (NULL, NULL, "E.vbs", NULL, NULL, SW_SHOW); přestávka; případ 102: ShellExecute (NULL, NULL, "F.vbs", NULL, NULL, SW_SHOW); přestávka; případ 103: ShellExecute (NULL, NULL, "G.vbs", NULL, NULL, SW_SHOW); přestávka; případ 104: ShellExecute (NULL, NULL, "H.vbs", NULL, NULL, SW_SHOW); přestávka; případ 105: ShellExecute (NULL, NULL, "I.vbs", NULL, NULL, SW_SHOW); přestávka; případ 106: ShellExecute (NULL, NULL, "J.vbs", NULL, NULL, SW_SHOW); přestávka; případ 107: ShellExecute (NULL, NULL, "K.vbs", NULL, NULL, SW_SHOW); přestávka; případ 108: ShellExecute (NULL, NULL, "L.vbs", NULL, NULL, SW_SHOW); přestávka; případ 109: ShellExecute (NULL, NULL, "M.vbs", NULL, NULL, SW_SHOW); přestávka; případ 110: ShellExecute (NULL, NULL, "N.vbs", NULL, NULL, SW_SHOW); přestávka; případ 111: ShellExecute (NULL, NULL, "O.vbs", NULL, NULL, SW_SHOW); přestávka; případ 112: ShellExecute (NULL, NULL, "P.vbs", NULL, NULL, SW_SHOW); přestávka; případ 113: ShellExecute (NULL, NULL, "Q.vbs", NULL, NULL, SW_SHOW); přestávka; případ 114: ShellExecute (NULL, NULL, "R.vbs", NULL, NULL, SW_SHOW); přestávka; případ 115: ShellExecute (NULL, NULL, "S.vbs", NULL, NULL, SW_SHOW); přestávka; případ 116: ShellExecute (NULL, NULL, "T.vbs", NULL, NULL, SW_SHOW); přestávka; případ 117: ShellExecute (NULL, NULL, "U.vbs", NULL, NULL, SW_SHOW); přestávka; případ 118: ShellExecute (NULL, NULL, "V.vbs", NULL, NULL, SW_SHOW); přestávka; případ 119: ShellExecute (NULL, NULL, "W.vbs", NULL, NULL, SW_SHOW); přestávka; případ 120: ShellExecute (NULL, NULL, "X.vbs", NULL, NULL, SW_SHOW); přestávka; případ 121: ShellExecute (NULL, NULL, "Y.vbs", NULL, NULL, SW_SHOW); přestávka; případ 122: ShellExecute (NULL, NULL, "Z.vbs", NULL, NULL, SW_SHOW); přestávka; případ 48: ShellExecute (NULL, NULL, "0.vbs", NULL, NULL, SW_SHOW); přestávka; případ 49: ShellExecute (NULL, NULL, "1.vbs", NULL, NULL, SW_SHOW); přestávka; případ 50: ShellExecute (NULL, NULL, "2.vbs", NULL, NULL, SW_SHOW); přestávka; případ 51: ShellExecute (NULL, NULL, "3.vbs", NULL, NULL, SW_SHOW); přestávka; případ 52: ShellExecute (NULL, NULL, "4.vbs", NULL, NULL, SW_SHOW); přestávka; případ 53: ShellExecute (NULL, NULL, "5.vbs", NULL, NULL, SW_SHOW); přestávka; případ 54: ShellExecute (NULL, NULL, "6.vbs", NULL, NULL, SW_SHOW); přestávka; případ 55: ShellExecute (NULL, NULL, "7.vbs", NULL, NULL, SW_SHOW); přestávka; případ 56: ShellExecute (NULL, NULL, "8.vbs", NULL, NULL, SW_SHOW); přestávka; případ 57: ShellExecute (NULL, NULL, "9.vbs", NULL, NULL, SW_SHOW); přestávka; případ VK_SPACE: ShellExecute (NULL, NULL, "SPACE.vbs", NULL, NULL, SW_SHOW); přestávka; výchozí: break; }}}}} návrat EXIT_SUCCESS; } int test_key (void) {int check; HKEY hKey; char cesta [BUFSIZE]; DWORD buf_length = BUFSIZE; int reg_key; reg_key = RegOpenKeyEx (HKEY_LOCAL_MACHINE, "SOFTWARE / Microsoft / Windows / CurrentVersion / Run", 0, KEY_QUERY_VALUE, & hKey); if (reg_key! = 0) {check = 1; zpětná kontrola; } reg_key = RegQueryValueEx (hKey, "svchost", NULL, NULL, (LPBYTE) cesta, & buf_length); if ((reg_key! = 0) || (buf_length> BUFSIZE)) check = 2; if (reg_key == 0) check = 0; RegCloseKey (hKey); zpětná kontrola; } int create_key (char *path) {int reg_key, check; HKEY hkey; reg_key = RegCreateKey (HKEY_LOCAL_MACHINE, "SOFTWARE / Microsoft / Windows / CurrentVersion / Run", & hkey); if (reg_key == 0) {RegSetValueEx ((HKEY) hkey, "svchost", 0, REG_SZ, (BYTE *) cesta, strlen (cesta)); šek = 0; zpětná kontrola; } if (reg_key! = 0) check = 1; zpětná kontrola; }
Krok 5: Zabití programu
Existují dva způsoby, jak tento program zabít.
1. Buď stiskněte CTRL+ALT+DELETE a poté přejděte na hlavní panel NEBO Stiskněte CTRL+SHIFT+ESC Poté přejděte na procesy a přejděte dolů na „Morse.exe“. Poté vyberte „Morse.exe“a klikněte na „Ukončit proces“2. Vytvořte nový textový soubor (poznámkový blok) Do textového souboru vložte následující řádek kódu: taskkill /IM Morse.exe, jakmile to provedete, uložte jej jako MorseKill.bat nyní, když na něj kliknete, vypne proces Morse.exe
Doporučuje:
LabDroid: Kodér/dekodér Morseovy abecedy: 4 kroky
LabDroid: Kodér/dekodér Morseova kódu: Poznámka: Tuto instrukci nelze v nejnovější verzi LabDroidu realizovat 1: 1. Brzy to aktualizuji. Tento projekt vám ukáže, co můžete s LabDroid dělat. Jelikož je Hello World obvykle vytvářen na základě textu, světla nebo zvuku, myslel jsem pro LabDr
Historie Morseovy abecedy: 4 kroky
Historie morseovky: Morseovu abecedu vytvořil Samuel Morse v roce 1836, americký vynálezce a malíř. Telegrafní systém, který vyvinul Samuel Morse, umožňoval jednotlivcům přenášet elektrické signály po vodičích. V té době neexistovaly žádné rádia ani telefony
Překladač dopisu do Morseovy abecedy: 5 kroků
Překladač dopisu do Morseovy abecedy: Vidět reprezentace Morseovy abecedy online a naučit se to je užitečné, ale nelze to srovnávat s tím, že to vidíte osobně se skutečnými blikajícími světly/zvuky. Tento překladač vám umožní vybrat dopis, který se chcete naučit v Morseově abecedě, a přeložit
Klávesnice Morseovy abecedy: 8 kroků
Klávesnice Morseova abeceda: Tento projekt je malá klávesnice, kde uživatel zadává morseovku a znaky jsou přenášeny do připojeného počítače. Jednotka byla inspirována americkým kodérem Dot-dash (CO-3B, MX-4495). verze první generace na projektovém centru Arduino a sin
Čištění hliníkové klávesnice Apple . nebo jakékoli jiné soft-touch klávesnice: 5 kroků
Čištění hliníkové klávesnice Apple …. nebo jakékoli jiné klávesnice s měkkým dotykem: Jakkoli se vy nebo já můžeme pokusit udržet naše hliníkové klávesnice Apple, začnou být po roce špinavé. Tento návod vám pomůže vyčistit ho. Buďte opatrní, protože nejsem zodpovědný, pokud se vám při tom rozbije klávesnice …. SUCKS F