- Linuxis saab klahvikorduse aega ja kiirust reguleerida nii graafilisest keskkonnast kui ka konsoolitööriistade abil.
- Süsteem tõlgib skannimiskoodid klahvikoodideks ja seejärel tähemärkideks, kasutades klaviatuurikaarte, modifikaatoreid ja erinevaid konsoolirežiime.
- Utiliidid nagu kbdrate, setkeycodes, loadkeys ja dumpkeys võimaldavad klaviatuuri käitumise ja eriklahvide ulatuslikku kohandamist.
- Püsiv konfiguratsioon tugineb käivitusskriptidele, /usr/share/kbd kataloogis olevatele seostele ja terminali mudeli terminfo andmebaasile.
Kui töötad iga päev Linuxiga, siis klaviatuuri reageerimisviis määrab, kas trükkimine on sujuv või meeleheitlik. Klahvi kordusaeg, algne viivitus ja iga klahvi käitumine Neid saab tohutu täpsusega reguleerida nii graafilisest keskkonnast kui ka tekstikonsoolist ja kernelist endast.
Lisaks sellele saate Linuxis muuta mitte ainult seda, kui kaua klahvi kordama hakkamine aega võtab või mitu tähemärki sekundis klahvi all hoides genereeritakse, vaid ka seda, muuta klaviatuuri paigutust, määratleda uuesti eriklahve, muuta paigutust ja isegi määrata täpsemaid toiminguid kui käivitamisprogrammid või lülitage süsteem välja.
Võtme kordusaja graafiline konfiguratsioon Linuxis
Enamikus tänapäevastes Linuxi töölaudades (nt GNOME, KDE Plasma, Cinnamon jne) on klahvide käitumise muutmise esimene koht süsteemiseadete paneel. Need keskkonnad pakuvad spetsiaalset klaviatuuri sektsiooni, kus saab reguleerida viivitust ja kordussagedust. ilma konsooliga võitlemata.
GNOME-tüüpi keskkonnas on tavaliselt vaja minna aadressile „Süsteemi seaded → Klaviatuur → Klahvide kordus”Kaks peamist juhtelementi on: viivitus enne klahvi all hoidmist ja korduse algus. kordamiskiirus (mitu tähemärki sekundis genereeritakse).
„Korduse viivitus” kontrollib aega, mis kulub klahvi all hoidmisest kuni märkide katkematu kuvamiseni. Kui teil on raskusi sõrme kiirelt tõstmisega või kui kasutate kursorite täpseks liigutamiseks klaviatuuriVõib-olla olete huvitatud selle viivituse suurendamisest või lihtsalt automaatse korduse keelamisest.
„Kordussagedus“ näitab, mitu tähemärki toodetakse pärast korduse algust. Suur kiirus võib olla väga kasulik teksti või mängude kiireks kerimiseks.Kuid see võib põhjustada ka liiga paljude märkide vahelejätmise, kui väärtusega liiale minna.
Spetsiaalsete võtmete, näiteks a, puhul klaviatuuri integreeritud helitugevuse ratas või nuppVõib-olla soovite teistsugust käitumist. Näiteks võite soovida, et helitugevus tõuseks või langeks koheselt ratta keeramisel, ilma teiste klahvide tüüpilise 600 ms viivituseta. Standardsetes graafilistes keskkondades pole tavaliselt võimalust iga klahvi jaoks erinevat viivitust määrata, seega tulevadki mängu süsteemi alumise kihi ja konsooli utiliidid.
Süsteemi klaviatuuri juhtimine: skannimiskoodid, klahvikoodid ja BIOS
Graafilise kihi all käsitleb Linux klaviatuuri palju detailsemalt, kui esmapilgul paistab. Klahvi vajutamisel ei saada seade otse tähte, vaid pigem... skaneerimiskoodSee skaneerimiskood jõuab kernelini, mis teisendab selle võtmekoodSealt edasi rakendatakse klaviatuurikaarti, mis lõpuks loob tegelase või toimingu.
Traditsiooniliselt haldas BIOS-i katkestus 9 klaviatuuri (tüüpiline MS-DOS-tüüpi süsteemides), kuid Linuxis Kernel installib klaviatuurikatkestuse jaoks oma teenindusrutiini.See rutiin järgib klassikalisega sarnast skeemi, kuigi skaneerimiskoodide tõlgendamisel ja sisemiste puhvrite täitmisel on erinevusi.
Enamik klahve genereerib kaks koodi: ühe vajutamisel (kood loomiseks) ja teise vabastamisel (kood murdmiseks). Praktikas ignoreerib kernel tavaliselt katkestuskoode, et lihtsustada käsitlemist.välja arvatud erijuhtudel, näiteks lülitusklahvide (Shift, Ctrl, Alt jne) puhul. Lisaks genereerivad mõned eriklahvid topeltjadasid: esmalt eesliidebaidi (näiteks 0xE0) ja seejärel võtmekoodi.
Skannimiskoodide puhul vahemikus 0x01–0x58 (kümnendsüsteemis 1 kuni 88) rakendab Linux vaikimisi väga lihtsat reeglit: võtmekood = skaneerimiskoodTeistes vahemikes (näiteks 0x59–0x7F või 0xE0-ga algavates järjestustes) pole seos nii triviaalne ja kasutatakse sisemist kerneli tabelit, mis määrab, milline võtmekood vastab igale skannimiskoodide kombinatsioonile.
Selliste tööriistadega nagu showkey y getkeycodes Näete täpselt, milliseid koode teie klaviatuur genereerib. Näiteks käivitades showkey -k Virtuaalses konsoolis (mitte graafilises terminalis) näete iga klahvivajutuse genereeritud klahvikoode ja koos showkey -s Näete riistvara saadetud toorkoode ja see aitab tõrkeotsingut teha, näiteks kui sülearvuti klaviatuur ei tööta.
Võtme määramise muutmine: käsk setkeycodes
Olukordades, kus spetsiaalset klahvi (näiteks helitugevuse ratast, multimeedianuppe või klaviatuuri lisanuppe) ei tõlgendata õigesti, saab seda kasutada setkeycodes skannimiskoodi ja võtmekoodi vahelise seose reguleerimiseks. See käsk lubab sul kernelile öelda: "Kui sa näed seda skannimiskoodi, käsitle seda nii, nagu see oleks see võtmekood"..
Põhisüntaks on:
setkeycodes scancode keycode
El skaneerimiskood See väljendatakse kuueteistkümnendsüsteemis (näiteks e049) ja võtmekood kümnendsüsteemis (näiteks 112Nii saate ebatavalisi võtmeid ümber määrata, nii et süsteem näeb neid standardvõtmete või muude teile huvipakkuvate võtmetena.
Kujutage ette, et teie klaviatuur genereerib füüsilise "Page Up" klahvi vajutamisel jada 0xE0 0x49. Kerneli vaikesätete tabeli kohaselt võiks see vastata klahvikoodile 104. Kui eelistate, et see võti käituks nagu mõni teine, võite käivitada midagi sellist:
klahvikoodide komplekt e049 112
Pärast seda muudatust genereerib selle klahvi vajutamine 104 asemel klahvikoodi 112. Oluline on see, et See ümbermääramine tehakse kerneli tasandil enne, kui klaviatuurikaart teisendab klahvikoodi konkreetseks toiminguks.Sealt edasi saad oma kaardil otsustada, mida klahvikood 112 teeb.
Selleks, et kontrollida, milliseid klahvikoode süsteem tunneb ära ja milliseid vahemikke see toetab, saate kasutada getkeycodesmis kuvab sisemised tabelid. Need utiliidid vajavad tavaliselt administraatori õigusi, sest Need muudavad klaviatuuri globaalset käitumist kõigis virtuaalsetes konsoolides..
Linuxi konsooli töörežiimid
Tekstikonsoolides (tüüpilised TTY-d, millele pääsete ligi Ctrl+Alt+F1…F6), Linuxi klaviatuuri ja konsooli draiver saab töötada mitmes režiimis, mis määravad täpselt, mida rakendus saab. Need režiimid mõjutavad skannimiskoodide, klahvikoodide ja märkide tõlgendamist..
Peamised režiimid on:
RAW-režiim (skannimisrežiim)Draiver ei tõlgi midagi; see saadab skaneerimiskoodid rakendusele otsekohe. See on madalaima taseme režiim ja seda kasutatakse tavaliselt siis, kui graafiline süsteem või spetsiaalne rakendus soovib klaviatuuri üle täielikku kontrolli.
MEDIUMRAW-režiim (võtmekoodirežiim)Kernel teisendab skannimiskoodid võtmekoodideks, aga kaugemale ei lähe. Rakendus saab võtmekoodid ja otsustab, mida tehaSee lähenemisviis on kasulik programmidele, mis rakendavad oma otseteede ja tõlkesüsteemi.
XLATE-režiim (ASCII-režiim)See on tekstikonsoolide traditsiooniline vaikerežiim. Selles teisendatakse skannimiskoodid klahvikoodideks ja seejärel tähemärkideks vastavalt 8-bitisele klaviatuurikaardile (tavaliselt põhineb see standardil ISO-8859-1). See on kõige levinum viis TTY-s otse shelliga töötamisel..
UNICODE-režiim (UTF-8)Sarnaselt eelmisele, aga kasutades Unicode'i märgistikku, saates kernelile UTF-8 järjestusi, et esindada ühebaidiseid märke. See režiim on võtmetähtsusega tänapäevastes süsteemides, mis soovivad toetada erinevaid tähestikke või laiendatud sümboleid.
Konsooli efektiivne režiim on seotud keskkonnamuutujaga TERMKui sa seda teed printenv TERMVirtuaalses konsoolis näed tavaliselt "linux", samas kui X-i või Waylandi graafilises terminalis näed "xterm", "xterm-256color" või midagi sarnast. Kui X-server töötab, haldab X ise klaviatuuri ja kernel jätab konsooli tavaliselt RAW-režiimi, delegeerides interpretatsiooni graafikaserverile.
Võti muu Selles kontekstis tuntakse seda Meta-klahvina ja Alt+X kombinatsiooni kirjutatakse tavaliselt kui MetaX. Nende Meta-klahvivajutuste käitumist saab utiliidi abil reguleerida. setmetamodemis võimaldab teil valida, kas Alt+X vajutamine saadab jada ESC X (pao, millele järgneb märk) või märk, mille väärtus on X pluss 128, st bitt 7 on aktiveeritud.
Terminali mudel ja terminfo andmebaas
Linux pärib UNIX-ilt klassikalise kontseptsiooni: Süsteem käsitleb iga seanssi terminali tüübinamillel on teatud tuntud omadused (spetsiaalsed klahvid, värvivõimalused, kursori juhtimine jne). Isegi kui sul on ainult monitor ja klaviatuur, näeb kernel sind ühendatuna kindla terminalimudeli kaudu.
Iga terminali mudeli võimalused on kirjeldatud andmebaasis. terminiinfo, tavaliselt asub /usr/share/terminfo/See andmebaas sisaldab faile, mis on korraldatud alamkataloogidesse esitähtede järgi (näiteks fail vt100 asub alamkataloogis, mille nimi algab terminali esitähega).
Igas terminfo failis on kirjas terminali nimi, alias ja tohutu nimekiri võimalustest: millised põgenemisjadad vastavad funktsiooniklahvidkuidas kursor liigub, kuidas read tühjendataksejne. Tüüpiline näide klassikalisest terminali päisest on midagi sellist nagu „vt100|vt100-am|dec vt100 (täiustatud videoga) …”.
Terminali funktsioonidega käsurealt suhtlemiseks on teil mitu tööriista:
stty: Seda kasutatakse terminali parameetrite (kaja, voolu juhtimine, märkide kustutamine jne) vaatamiseks ja reguleerimiseks.
settermSee käsk võimaldab teil muuta konsooli atribuute, nagu video käitumine, virvendus, värvid ja palju muud. Argumentideta käivitamisel loetleb see tavaliselt kõik funktsioonid, mida saab praeguses terminalis muuta.
tputSee tugineb terminfo-le, et saata terminalile standardseid juhtimisjadasid, näiteks ekraani tühjendamine, kursori liigutamine või atribuutide muutmine, ilma et peaks ANSI-jadasid käsitsi kirjutama.
Klaviatuuri konfigureerimine süsteemi käivitamisel
Spetsifikatsiooni kohaselt Linuxi standardbaas (LSB)Süsteemi käivitusskriptid asuvad /etc/init.d/ ja need käivitatakse otse või kaudselt /sbin/init, kõigi teiste ülemprotsess. Selle struktuuri sees on määratletud riistvara, võrkude, konsoolide ja loomulikult klaviatuuri initsialiseerimise sammud.
Tavaliselt käivitatakse alglaadimisjärjestuses asuvad skriptid. /etc/init.d/boot.d/ või samaväärsed marsruudid, olenevalt jaotusest. Need skriptid käsitlevad selliseid elemente nagu jadapordid, võrgukaardid, CMOS-kell, loogilised köited ja muud põhikomponendid. Lõppkokkuvõttes käivitatakse tavaliselt skript. /etc/init.d/boot.local administraatori kohandatud tellimuste jaoks.
Tekstikonsooli klaviatuuri osas kasutavad paljud distributsioonid konfiguratsioonifaili, näiteks /etc/sysconfig/klaviatuurSee määrab peamised parameetrid, sealhulgas käivitamisel laaditava klaviatuurikaardi ja korduse sätted.
See fail sisaldab selliseid direktiive nagu:
KEYTABLE: tähistab klaviatuurikaardi faili, mis asub tavaliselt kaustas /usr/share/kbd/klahvikaardid/Tüüpiline väärtus võib olla „es.map.gz”, mis viitab hispaaniakeelse klaviatuuri kaardile.
KBD_RATE y KBD_DELAY: määrake kordussagedus (näiteks 2.0 kuni 30.0 tähemärki sekundis) ja algne viivitus millisekundites (250, 500, 750, 1000 jne). Kui soovite, et süsteem käivitamisel käivitaks käsu kbdrate, peate määrama mõlemad väärtused..
Lisaks on olemas algsed võtme oleku sätted, näiteks NumLock, ScrollLock ja CapsLockNeid sätteid saab määrata väärtusele „jah“, „ei“ või „BIOS“ (järgige BIOS-i konfiguratsiooni). On isegi võimalus keelata suurtäheluku funktsioon ja muuta suurtäheluku klahv tavaliseks Shift-klahviks.
Klaviatuuri üldise käitumise kõige olulisem rida on see, mis määratleb kaardi, umbes selline:
KEYTABLE="es.map.gz"
See kaart määrab iga klahvikoodi funktsiooni, st millise märgi või toimingu klahvi vajutamisel koos modifikaatoritega (Shift, AltGr, Control jne) genereeritakse. Sealt saate käitumist lennult reguleerida selliste tööriistadega nagu loadkeys, dumpkeys, showkey ja kbdrate..
Peamised utiliidid: showkey, loadkeys, dumpkeys ja kbdrate
Kui süsteem on tööle pandud, on teie käsutuses mitu võimsat tööriista klaviatuuri reaalajas manipuleerimiseks. Need on konsooli utiliidid, mis targalt kasutades võimaldavad teil klaviatuuri peaaegu igale vajadusele kohandada..
showkeySeda kasutatakse selleks, et kontrollida, milliseid koode klaviatuur tegelikult genereerib. showkey -s Näete skaneerimiskoode täpselt nii, nagu need riistvarast tulevad; koos showkey -k Kuvatakse kerneli rutiini poolt pärast esimest teisendust loodud võtmekoodid.
koormaklahvid: Laadib virtuaalkonsoolides uue klaviatuurikaardi. Nõuab juurõigusi ja seda tuleks kasutada ettevaatlikult, kuna See mõjutab kõiki TTY-sid, sealhulgas sisselogimise TTY-d.Valesti konfigureeritud kaart võib parooli sisestamise või isegi sisselogimise väga keeruliseks muuta.
prügimäedSee võimaldab teil kontrollida praegust klaviatuuripaigutust ja muid seotud üksikasju, näiteks funktsioonide definitsioone, märkide koostist ja sümboolseid ekvivalente. Selliste valikutega nagu dumpkeys –pikk-info, dumpkeys – ainult funktsioonid o dumpkeys – ainult koostamise jaoks Saate väga detailseid loendeid oma kaardi struktuuri kohta.
kbdrateSee on otsene vahend muutmiseks kordussagedus ja esialgne klaviatuuri viivitusPaljudes süsteemides jäljendavad vaikeväärtused IBM-i klaviatuuristandardit: umbes 10 tähemärki sekundis ja umbes 250 ms latentsusaega. Kbdrate abil saate neid muuta ilma taaskäivitamata ja see on kasulik ligipääsetavuse valikute mõistmiseks, näiteks filtriklahvid Windowsis.
Näiteks väga lühikese viivituse ja kiire korduse jaoks võiksite kasutada midagi sellist:
kbdrate -d 200 -r 30
kus -d Märkige viivitus (millisekundites) ja -r kordumissagedus (tähemärki sekundis). Kui soovite üldiselt aeglasemat jõudlust, suurendage viivitust või vähendage kiirust.Ja kui soovite midagi peaaegu kohest, vähendate viivitust 200 ms-ni või isegi vähem, olenevalt sellest, mida teie riistvara võimaldab.
Klaviatuurikaart: sisemine määratlus ja modifikaatorid
"Klaviatuurikaart" ehk klaviatuurikaart on edasijõudnute konfiguratsiooni süda. Neid kaarte saab kerneli kompileerida või tekstifailidena salvestada. /usr/share/kbd/klahvikaardid/, vaikekonfiguratsiooniga failides nagu /etc/defkeymap.map. Iga jaotus sisaldab tavaliselt kaardikogusid erinevate keelte ja paigutuste jaoks..
Klaviatuurikaardid määratlevad kindla süntaksi abil, mida iga klahvikood teeb koos erinevate modifikaatoritega. Üldiselt kuni 256 erinevat toimingut sama klahvi jaoks, mis on seotud võimalike modifikaatorite kombinatsioonidega (Shift, Alt, Control, AltGr jne).
Kaardifail kasutab järgmise vormi ridu:
võtmekoodi number = sümbol sümbol sümbol …
El número See on võtme sisemine identifikaator (võtmekood), mida saab väljendada kümnend-, kaheksand- või kuueteistkümnendsüsteemis. sümbol (võtmemärk) tähistab seotud toimingut, mis võib olla märk, märkide jada või erifunktsioon, näiteks Eemalda, Käivita, Konsool_15 ja paljud teised. Otseseid numbrilisi koode tavaliselt ei kasutata; selle asemel kasutatakse sümboolseid konstante, mis jäävad kerneli versioonide lõikes stabiilseks.
Modifikaatoreid käsitletakse okteti bittidena, millel igaühel on kindel "kaal". Näiteks Shiftil võib olla kaal 1, AltGril kaal 2, Controlil kaal 4, Altil kaal 8 ja nii edasi Left Shifti, Right Shifti, Left Controli ja Right Controli puhul. Klahvi vajutamisel määratakse efektiivne toiming aktiivsete modifikaatorite kaalude liitmise ja vastava veeru uurimine. selle võtme definitsioonis.
Näiteks kui vajutate klahvi koos Shift ja Alt klahvidega, võib summa olla 9 ja 9. veerus olev definitsioon dikteerib, mis genereeritakse. Ilma ühegi modifikaatorita on indeks 0 ja võetakse võtmekoodi real määratletud esimene sümbol..
Samuti on olemas spetsiaalne märk, silt + Mõnedele sümbolitele eelnevad tähed näitavad, et neid tuleks käsitleda tähtedena, mis tähendab, et need vastavad Caps Lockile ja Shiftile. Tüüpiline näide:
võtmekood 30 = +a
See näitab, et võti genereerib väiketähe 'a' ilma modifikaatoriteta, 'A', kui kasutatakse suurtähti jne. Täpsema käitumise korral saab suurtähtede veeru selgesõnaliselt defineerida, näiteks:
võtmekood 30 = +a A
Kui te ei soovi, et konkreetne klahvikombinatsioon midagi teeks, kasutage märksõna Tühi sümbolNäiteks selleks, et võti tooks teatud kombinatsioonide kasutamisel välja ainult 'a' ilma modifikaatoriteta ja mitte midagi, võiks kasutada definitsioone, kus need juhud on tähistatud sümboliga VoidSymbol. Lisaks võimaldab süntaks lihtsustusi: Kui on defineeritud üks sümbol ja see ei ole ASCII-täht, eeldatakse, et see replikeeritakse kõigis määratud veergudes..
Kaardi muud osad: lisad, klahvikaardid, märgistik, funktsioonid ja kompositsioon
Klaviatuurikaardi failid ei sisalda mitte ainult klahvikoodide definitsioone, vaid ka muid elemente, mis on üldise käitumise jaoks olulised. See võimaldab modulaarsust, erinevate märgistike tuge ning funktsiooniklahvide ja aktsentmärkide kombinatsioonide määratlemist..
Direktiiv sisaldama See võimaldab teil lisada teisi faile, sarnaselt "impordiga". See on kasulik ühiste osade taaskasutamiseks mitmel kaardil, näiteks aktsenttabel või standardfunktsioonide komplekt.
Joon klahvitabelid määrab, millised veerud (modifikaatori indeksid) kaardil on määratud. Kõigi 256 võimaliku veeru loetlemise asemel määratakse tavaliselt vahemikud, näiteks klahvikaardid 0-2, 4-5, 8, 12, mis tähendab, et kasutatakse veerge 0, 1, 2, 4, 5, 8 ja 12 (tavaline, Shift, AltGr, Control, Control+Shift, Alt ja Control+Alt). Kui see rida puudub, eeldatakse, et definitsioonid on vahemikus 0 kuni M, kus M on suurim leitud indeks. võtmekoodide ridades.
The märgistiku definitsioonid Need on valmistatud järgmist tüüpi joontega:
märgistik «iso-8859-2»
ja määrake, millisele koodilehele märkide numbrilised väärtused vastavad. Vaikimisi kasutatakse tavaliselt ISO-8859-1 (Ladin-1), kuid kasutada saab ka teisi, näiteks ISO-8859-2 või ISO-8859-7. See on oluline selliste sümbolite puhul nagu kreeka täht mu või teatud keeltele omased erimärgid..
The stringi definitsioonid Nad kasutavad järgmist süntaksit:
string võtmesümbol = "tekst"
ja neid kasutatakse funktsiooniklahvide või eriklahvide seostamiseks kindlate märgijadadega. Näiteks saate määrata, et F1 saadab klahvi „ESC”.
Kirglik kirjanik baitide maailmast ja üldse tehnoloogiast. Mulle meeldib jagada oma teadmisi kirjutamise kaudu ja just seda ma selles ajaveebis teengi, näitan teile kõike kõige huvitavamat vidinate, tarkvara, riistvara, tehnoloogiliste suundumuste ja muu kohta. Minu eesmärk on aidata teil digimaailmas lihtsal ja meelelahutuslikul viisil navigeerida.


