精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

筆記本電腦的鍵盤(pán)學(xué)習(xí)教程

CHANBAEK ? 來(lái)源: 吃面小哥 ? 作者: 吃面小哥 ? 2023-11-18 15:24 ? 次閱讀

筆記本電腦的內(nèi)置鍵盤(pán)是不可缺少的輸入設(shè)備,它經(jīng)歷了二十幾年的迭代才形成如今的設(shè)計(jì)標(biāo)準(zhǔn)(Key Layout、Connector、Protocol、ScanCode...)。

在鍵盤(pán)的發(fā)展歷程中,出現(xiàn)了很多標(biāo)準(zhǔn),有一些標(biāo)準(zhǔn)至今仍被使用。有興趣可以查閱 鍵盤(pán)的發(fā)展。接下來(lái)就詳細(xì)了解下筆記本電腦的鍵盤(pán)。

01—Scan Code

電腦鍵盤(pán)一般有 80-120 個(gè)按鍵,因此采用矩陣設(shè)計(jì)可以減少GPIO 的使用。

如下示意圖,MCU 控制 “A/B/C/D” 都保持低電平,然后挨個(gè)輸出高電平,每次輸出高電平的同時(shí)采集“1/2/3/4” 電平。此過(guò)程稱(chēng)之為 “鍵盤(pán)掃描”。

如果 C-3 按鍵按下,當(dāng) MCU 在 “C” 列輸出高電平時(shí),在 “3” 行可檢測(cè)到高電平。如此 MCU 即可判斷出哪個(gè)按鍵被按下了。

MCU 判斷出哪個(gè)按鍵被按下,需要以數(shù)據(jù)的形式傳遞給 Host 使用。因此需要給每一個(gè)按鍵安排一個(gè)編碼,這個(gè)編碼就是 ScanCode,即 “掃描碼”。

這個(gè) MCU 負(fù)責(zé)掃描矩陣,稱(chēng)之為 KSC(Keyboard Scan Controller)。使用最為廣泛的型號(hào)是 Intel 8048。

圖片

鍵盤(pán)的發(fā)展歷程中,一共出現(xiàn)過(guò) 3 套 ScanCode。

Scan Code Set-1

1983年隨 IBM Personal Computer XT(XT:eXtended Technology,Type:5160) 一起發(fā)布的 XT Keyboard 就使用的是此套掃描碼。當(dāng)時(shí)配套的操作系統(tǒng)可以直接識(shí)別此套掃描碼。如今的 Windows、Linux 系統(tǒng)都在沿用。

ScanCode Set-2

1984年隨 IBM Personal Computer AT(AT:Advanced Technology,Type:5170)一起發(fā)布的 AT Keyboard 就是使用的是此套掃描碼。但是操作系統(tǒng)并沒(méi)有兼容識(shí)別此套掃描碼,而是在主板上增加了一個(gè) MCU 把 Set-2 翻譯成 Set-1,然后再發(fā)送給系統(tǒng)。當(dāng)然也有操作系統(tǒng)也可以識(shí)別 Set-2,但并不是主流。

新增的 MCU 稱(chēng)之為 KBC(Keyboard Controller),使用最為廣泛的型號(hào)是 Intel 8042,因此 i8042 也用來(lái)代指 Keyboard Controller。

ScanCode Set-3

1986年,IBM 重新設(shè)計(jì)了鍵盤(pán)布局,在美國(guó)市場(chǎng)上推出了 MF2 Keyboard,有 101個(gè)按鍵。

MF2 Keyboard 設(shè)計(jì)上增加了邏輯更為合理的 ScanCode Set-3,由 i8042 翻譯成 ScanCode Set-1 傳遞給 CPU。此套掃描碼并未流行。

最后流行的 PS/2 鍵盤(pán),采用的仍舊是 ScanCode Set-2。

02—Key Number

在 MF2 鍵盤(pán)出現(xiàn)后,鍵盤(pán) Layout 基本即保持一致了,但是按鍵的絲印卻是千變?nèi)f化,不同絲印的鍵盤(pán)是為了滿足不同語(yǔ)種的需求。

鍵盤(pán)設(shè)計(jì)中,一個(gè)按鍵會(huì)規(guī)定一個(gè) ScanCode。系統(tǒng)端根據(jù)接收的 ScanCode 就知道是哪個(gè)按鍵觸發(fā)了。同樣是按鍵 “Q” 觸發(fā),系統(tǒng)端最終識(shí)別的字符可不一定是字符 “Q”,這是要根據(jù)系統(tǒng)語(yǔ)言判斷的。

鍵盤(pán)語(yǔ)種不同,絲印就不同。因此每個(gè)按鍵還規(guī)定了一個(gè) Key Number,以便區(qū)分按鍵。

圖片

一般鍵盤(pán)制造商生產(chǎn)的矩陣鍵盤(pán),會(huì)配套一份設(shè)計(jì)圖紙,會(huì)指明按鍵在矩陣中的位置,此時(shí)使用的就是 KeyNumber。

KSC 掃描這個(gè)矩陣,根據(jù)掃描結(jié)果,識(shí)別出觸發(fā)按鍵在矩陣的位置,

先找到 KeyNumber,從而查找出 ScanCode。

圖片

03—Keyboard Protocol

XT Keyboard 和 AT Keyboard 的設(shè)計(jì)中,同 PCH 通訊的規(guī)范已經(jīng)不再使用,因此此處只針對(duì) PS/2 Keyboard 做描述。

PS/2 Keyboard 設(shè)計(jì)中,采用 KSC (Keyboard Scan Controller) 掃描鍵盤(pán)矩陣,按鍵觸發(fā)后會(huì)編碼出 ScanCode Set-2 發(fā)送。其中 KSC 是一個(gè)位于鍵盤(pán)內(nèi)部的 MCU,以 Intel 8048 最為典型。KSC 和 KBC 之間通過(guò) PS/2 協(xié)議通訊,完成KeyCode、Command 的傳遞。

PS/2 鍵盤(pán)結(jié)構(gòu)

在 x86 CPU 系統(tǒng)中,有一個(gè)獨(dú)立的 IO 尋址空間,大小 64K。隨著計(jì)算機(jī)的發(fā)展,默認(rèn) 60/64 兩個(gè) IO 地址被用作 PCH 和 KBC(i8042) 交換數(shù)據(jù)。

有以上兩個(gè)通訊的支持, PS/2 Keyboard 外接在電腦 PS/2 接口上后就可以工作了。

圖片

設(shè)計(jì)框圖如下

圖片

KBC 寄存器

i8042 作為一個(gè) KBC 使用 IO 60、64 和 PCH 傳遞數(shù)據(jù)。

IO 60/64 分別定義為數(shù)據(jù)寄存器和狀態(tài)寄存器。

針對(duì) Status Register,在 Intel 8042 DataSheet 中定義如下。

圖片

BIT0:指示 KBC 是否在 Output Data Register 寫(xiě)入了數(shù)據(jù)。

BIT1:指示 CPU 是否在 Input Data Register 寫(xiě)入了數(shù)據(jù)。

BIT2:指示 CPU 是否讀取了 Output Register。

BIT3:指示 CPU 寫(xiě)了 60H 還是 64H。

BIT4-7:用戶自定義。

不同廠家在后續(xù)的 KBC 設(shè)計(jì)中,增加了一些自定義狀態(tài)。

如下圖所示,KBC 中增加了針對(duì) PS/2 通訊狀態(tài)的一些定義。

圖片

圖片

如上圖,Host 端的 Keyboard Driver 利用 IO 60/64 和 KBC通訊。

KBC 內(nèi)部有兩個(gè)數(shù)據(jù)寄存器,Input and Output Data Register。

一個(gè)狀態(tài)寄存器,Status Register。

KB Driver 寫(xiě) 60H 或者 64H,都對(duì)應(yīng) KBC 內(nèi)部 Input Register,KBC 內(nèi)部的 Status Register BIT3 會(huì)做出區(qū)分。

KB Driver 寫(xiě) 60H,KBC 認(rèn)為是 Data。

KB Driver 寫(xiě) 64H,KBC 認(rèn)為是自己的 Command。

KB Driver 讀 60H,KBC 返回 Output Register 內(nèi)容,主要是 ScanCode。

KB Driver 讀 64H,KBC 返回 Status Register 內(nèi)容,指示 Keyboard 狀態(tài)。

04—Keyboard Command

KBC 和 KSC 作為 MCU,分別設(shè)計(jì)了一組命令。Keyboard Driver 可以發(fā)送這些命令,從而控制 KBC 和 KSC 的一些行為。

05—EC Keyboard

在上世紀(jì)的個(gè)人電腦設(shè)計(jì)中,PS/2 鍵盤(pán)屬于一個(gè)外接設(shè)備。PS/2 鍵盤(pán)通過(guò) PS/2 接口和主板上 KBC 通訊。KBC 在 PCH 和鍵盤(pán)中間作為一個(gè) SuperIO 設(shè)備,管理 PS/2 鍵盤(pán)。

隨著個(gè)人電腦的不斷發(fā)展,逐漸演變出便攜式電腦,即筆記本電腦。鍵盤(pán)作為筆記本電腦的標(biāo)配輸入設(shè)備,也遵守了 PS/2 鍵盤(pán)系統(tǒng)的大部分標(biāo)準(zhǔn),并且沿用至今。

在如今的筆記本電腦設(shè)計(jì)中,不再有獨(dú)立的 KSC(i8048,鍵盤(pán)掃描器)和 KBC(i8042,鍵盤(pán)控制器),因此也不再有 PS/2 接口和 PS/2 協(xié)議存在。

KSC 和 KBC 的功能全部集成在一個(gè)專(zhuān)用 MCU 中,即集成在 EC 中。

EC 作為一個(gè)專(zhuān)用 MCU,設(shè)計(jì)有 8*18 的鍵盤(pán)掃描模塊,實(shí)現(xiàn)矩陣鍵盤(pán)的掃描。EC 也設(shè)計(jì)有 LPC 總線,和 PCH 實(shí)現(xiàn) IO 6064 通訊。因此在 EC 固件中即可實(shí)現(xiàn) KBC 功能。

EC 這顆專(zhuān)用 MCU 集成了原先 KBC 的功能,因此 EC 也會(huì)叫 KBC。

如今筆記本電腦中,EC 鍵盤(pán)系統(tǒng)設(shè)計(jì)框圖如下:

圖片

06—Keyboard Init

EC 鍵盤(pán)的實(shí)際工作原理和 PS/2 鍵盤(pán)基本一致,其中的 KBC 需要被 Host 端 Driver 初始化后,才能正常工作。

KBC 由 EC 固件實(shí)現(xiàn),因此上述 KBC、KSC 相關(guān)的指令必須由 EC 固件實(shí)現(xiàn),并且返回正確的值,否則 OS 端 KB Driver 初始化無(wú)法完成,會(huì)導(dǎo)致Windows 系統(tǒng)下設(shè)備管理器中 PS/2 設(shè)備出現(xiàn)黃色感嘆號(hào),鍵盤(pán)無(wú)法使用。

UEFI 環(huán)境下,KBC 初始化。

EC 固件實(shí)現(xiàn)了 KBC 邏輯后,添加必要的 log后,當(dāng) UEFI 環(huán)境啟動(dòng)后會(huì)對(duì) KBC 初始化。EC 端 log 如下圖:

圖片

上圖是在 EC 中記錄了進(jìn)入 UEFI Shell 環(huán)境時(shí)的鍵盤(pán)初始化序列。

通訊釋義
1Host->EC, i8042 cmd[AD]8042 command Disable Keyboard
2Host->EC, i8042 cmd[A7]8042 command Disable Mouse
3Host->EC, i8042 cmd[AA]8042 command Self Test
4EC->Host, data=[55]EC Response test results
5Host->EC, i8042 cmd[60]8042 command Write controller config byte
6Host->EC, i8042 data[67]controller config byte is 0x67
7Host->EC, i8042 data[F4]Send to IO_60 without command
8Host->EC, i8048 cmd[F4]8048 command Enable matrix scan
9EC->Host, data=[FA]EC send “ACK”,must 0xFA
10Host->EC, i8042 cmd[AB]8042 command Keyboard interface test
11EC->Host, data=[00]EC Response test results,must 00
12Host->EC, i8042 data[FF]Send to IO_60 without command
13Host->EC, i8048 cmd[FF]8048 command Reset and start self-test
14EC->Host, data=[FA]EC send “ACK”,must 0xFA
15EC->Host, data=[AA]EC Response test results
17Host->EC, i8042 data[F0]Send to IO_60 without command
18Host->EC, i8048 cmd[F0]8048 command Get/set current scan code set
19EC->Host, data=[FA]EC send “ACK”,must 0xFA
20Host->EC, i8042 data[02]Send to IO_60 without command
21Host->EC, i8048 cmd[02]8048 sub-command select scancode set-2
22EC->Host, data=[FA]EC send “ACK”,must 0xFA
23Host->EC, i8042 data[F4]Send to IO_60 without command
24Host->EC, i8048 cmd[F4]8048 command Enable matrix scan
25EC->Host, data=[FA]EC send “ACK”,must 0xFA
26Host->EC, i8042 data[ED]Send to IO_60 without command
27Host->EC, i8048 cmd[ED]8048 command control LED status
28EC->Host, data=[FA]EC send “ACK”,must 0xFA
29Host->EC, i8042 data[00]Send to IO_60 without command
30Host->EC, i8048 cmd[00]8048 set LED off
31EC->Host, data=[FA]EC send “ACK”,must 0xFA

上述初始化過(guò)程在如下文件中可以找到:

UDK2018/IntelFrameworkModulePkg/Bus/Isa/Ps2KeyboardDxe/Ps2KbdCtrller.c

圖片

OS 環(huán)境下,KBC 初始化。

Windows 或者 Linux 系統(tǒng)在加載過(guò)程中,BIOS 聲明了 PS/2 鍵盤(pán)設(shè)備后,OS 內(nèi)置的 PS/2 Keyboard Driver 就會(huì)加載,完成 EC 內(nèi) KBC 和 KSC 的初始化,以及配置。當(dāng)然 Windows Inbox PS/2 Driver 看不到源碼,感興趣的話可以看看 Linux PS/2 Driver 的源碼。

需要注意的是,UEFI 和 OS 下 KBC 初始化流程基本一致。

差異點(diǎn)是,UEFI 環(huán)境下 CPU 不響應(yīng) SERIRQ 中的 IRQ-1,靠輪詢的方式工作。OS下 CPU 需要響應(yīng) IRQ-1,當(dāng)有鍵盤(pán)中斷觸發(fā)后,Driver 才會(huì)被回調(diào),處理 IO 60/64 的數(shù)據(jù)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    16984

    瀏覽量

    350293
  • 筆記本電腦
    +關(guān)注

    關(guān)注

    9

    文章

    1397

    瀏覽量

    48079
  • 鍵盤(pán)
    +關(guān)注

    關(guān)注

    4

    文章

    858

    瀏覽量

    39580
  • 電腦鍵盤(pán)
    +關(guān)注

    關(guān)注

    0

    文章

    14

    瀏覽量

    12274
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1196

    瀏覽量

    51909
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    筆記本電腦鍵盤(pán)亂碼

    神舟筆記本電腦,WIN10家庭版,之前一直正常用的,前幾天開(kāi)機(jī)突然發(fā)現(xiàn)鍵盤(pán)亂碼,在網(wǎng)上查各種解決方法都沒(méi)能恢復(fù)正常,分析可能是鍵盤(pán)壞了,于是網(wǎng)上買(mǎi)新鍵盤(pán)自己換上,但故障仍然沒(méi)有解決,跟
    發(fā)表于 07-25 09:34

    [原創(chuàng)MST筆記本電腦(數(shù)星筆記本電腦) 山寨筆記本代理加盟MST筆記本

      MST筆記本電腦(數(shù)星筆記本電腦) 山寨筆記本代理加盟MST筆記本 數(shù)星筆記本 MST方案 數(shù)星方案數(shù)星
    發(fā)表于 02-12 11:26

    筆記本電腦鍵盤(pán)拆解方法圖解

    筆記本電腦清潔問(wèn)題一直困擾著大家,尤其是本本的鍵盤(pán)部分,清潔起來(lái)實(shí)在是很麻煩,想要清理干凈的話,最好的辦法是把鍵盤(pán)拆下來(lái),可是由于生產(chǎn)廠家不同,本本的結(jié)構(gòu)也不一樣,……為此我們特地為大家準(zhǔn)備了幾招拆
    發(fā)表于 09-15 14:51

    平板電腦筆記本電腦有什么關(guān)聯(lián)

    ”之前,它就是一個(gè)筆記本電腦。然后,你會(huì)發(fā)現(xiàn)它的屏幕能輕輕松松 360°旋轉(zhuǎn),或者折疊起來(lái)放在鍵盤(pán)上。進(jìn)入平板電腦模式,輕松游刃于筆記本模式和平板
    發(fā)表于 11-05 10:38

    筆記本電腦CPU知識(shí)

    筆記本電腦CPU http://www.gooxian.com/ 知識(shí)詳解: 筆記本電腦所采用的CPU與臺(tái)式電腦采用的CPU規(guī)格不同,這是由于筆記本電腦內(nèi)部的散熱環(huán)境和供電方式都要比臺(tái)
    發(fā)表于 08-10 09:57

    筆記本電腦鍵盤(pán)失效維修

    求各位大神幫看下這筆記本電腦鍵盤(pán)用不了怎么維修,是不小心弄水倒鍵盤(pán)上了,所有的按鍵都用不了了。
    發(fā)表于 10-04 19:49

    筆記本電腦鍵盤(pán)故障的解決方案

    的輸入法。  筆記本鍵盤(pán)無(wú)法輸入計(jì)算機(jī)圖形4  故障3:筆記本電腦鍵盤(pán)出現(xiàn)故障  1、試圖通過(guò)修改筆記本鍵盤(pán)驅(qū)動(dòng)程序來(lái)更改鍵盤(pán)驅(qū)動(dòng)程序。鼠標(biāo)
    發(fā)表于 01-15 16:18

    保養(yǎng)筆記本電腦的方法分享

    現(xiàn)在無(wú)論是商務(wù)人士、學(xué)生黨還是辦公一族和自媒體一族基本上都會(huì)配備一臺(tái)筆記本電腦,相較于臺(tái)式機(jī),筆記本電腦既輕薄又便攜,是辦公學(xué)習(xí)的利器。但為什么許多人的筆記本電腦都用不長(zhǎng),就會(huì)卡頓呢?
    發(fā)表于 01-12 06:57

    筆記本電腦鍵盤(pán)示意圖

    筆記本電腦鍵盤(pán)示意圖
    發(fā)表于 03-10 14:04 ?2w次閱讀
    <b class='flag-5'>筆記本電腦</b><b class='flag-5'>鍵盤(pán)</b>示意圖

    IBM筆記本電腦鍵盤(pán)示意圖

    筆記本電腦鍵盤(pán)示意圖
    發(fā)表于 03-10 14:05 ?8977次閱讀

    筆記本電腦鍵盤(pán)詳細(xì)介紹

    筆記本電腦鍵盤(pán)詳細(xì)介紹 筆記本鍵盤(pán)與臺(tái)式機(jī)鍵盤(pán)一樣,主要起向電腦輸入字
    發(fā)表于 03-10 14:08 ?2.2w次閱讀

    筆記本電腦硬件詳解鍵盤(pán)

    筆記本電腦硬件詳解鍵盤(pán)筆記本鍵盤(pán)與臺(tái)式機(jī)鍵盤(pán)一樣,主要起向電腦輸入字符和操控電腦的作用。我
    發(fā)表于 01-19 11:31 ?2350次閱讀

    筆記本電腦的智能底座設(shè)計(jì)

    筆記本電腦的智能底座設(shè)計(jì),很好設(shè)計(jì)資料,快來(lái)學(xué)習(xí)吧。
    發(fā)表于 05-09 17:10 ?25次下載

    筆記本電腦的警報(bào)電路圖

    這是筆記本電腦/筆記本電腦保護(hù)電路,可保護(hù)您的筆記本電腦筆記本電腦或上網(wǎng)本不被盜。固定在筆記本電腦外殼內(nèi),當(dāng)有人試圖拿走
    的頭像 發(fā)表于 05-30 17:34 ?3092次閱讀
    <b class='flag-5'>筆記本電腦</b>的警報(bào)電路圖

    筆記本電腦鍵盤(pán)轉(zhuǎn)換為USB開(kāi)源分享

    電子發(fā)燒友網(wǎng)站提供《筆記本電腦鍵盤(pán)轉(zhuǎn)換為USB開(kāi)源分享.zip》資料免費(fèi)下載
    發(fā)表于 11-24 09:26 ?0次下載
    <b class='flag-5'>筆記本電腦</b><b class='flag-5'>鍵盤(pán)</b>轉(zhuǎn)換為USB開(kāi)源分享