如何在不按键的情况下获得笔记本电脑键盘的正确扫描码?

如何在不按键的情况下获得笔记本电脑键盘的正确扫描码?

我的笔记本电脑键盘出现问题,无法正常工作。不过我可以通过 ssh 完全控制笔记本电脑。问题是我使用自加密磁盘(Samsung 840 Pro)。如果我关闭笔记本电脑,由于键盘问题(这可能是硬件问题),我可能无法再登录。所以我想在重新启动之前通过 ssh 和 hdparm 关闭 ata 密码,然后我可以将 SSD 放入另一台 PC 并毫无问题地访问它。

问题在于:

hdparm --security-disable password /dev/sda

然而,我的笔记本电脑(Dell Latitude E6400,德语键盘)似乎将字符翻译为扫描代码,所以我尝试了类似的操作:

hdparm --security-disable $(printf 'password' | tr '1234567890qwertyuiopasdfghjklzxcvbnm' '\2-\13\20-\31\36-\46\54-\62') /dev/sda 

如上所述这里

但这不起作用,我想原因是我需要正确的扫描码翻译(上面的似乎是针对美国键盘的)。

那么如何通过 ssh 获取正确的扫描码,而无需在笔记本电脑上键入按键呢?

还有其他建议如何通过 ssh 禁用密码吗?

答案1

所有 PC 键盘上的扫描码均相同(多媒体键有所不同)。它们是由按键的位置决定的,而不是由按键上的标签决定的(实际上按键上的标签与键盘发送的电信号没有任何关系)。

因此,对于德语 (QWERTZ) 键盘,只需交换y和 即可z

hdparm --security-disable $(printf 'password' | tr '1234567890qwertzuiopasdfghjklyxcvbnm' '\2-\13\20-\31\36-\46\54-\62') /dev/sda 

对于法国或比利时 AZERTY 键盘:

hdparm --security-disable $(printf 'password' | tr '1234567890azertyuiopqsdfghjklmwxcvbn' '\2-\13\20-\31\36-\47\54-\61') /dev/sda 

相关内容