手里的PSP3000最近闹了个毛病,左边那个L键按下去就弹不回来,像被什么东西黏住似的。刚开始没在意,觉得也就是手感变肉了点,结果玩《怪物猎人P3》的时候,正追着雷狼龙跑,角色突然就原地站定不动了——屏幕上跳出暂停菜单,游戏莫名其妙就停了。我当时还以为是游戏出了什么灵异事件,后来才发现罪魁祸首就是那个卡住的L键。
问题比我想象的严重得多。那个L键卡在按下的位置,系统会持续接收到“按住L键”的信号。PSP的物理按键和模拟器按键映射是两套逻辑,实体机上的L键是硬件开关,软件层面读到的就是“一直按住”。这会导致两个后果:一是游戏里L键对应的动作被无限触发,二是系统把“按住L键”这个状态当成一个持续性的操作,一旦你手动按暂停键,系统就判定为“两个按键同时按下”,此时输入冲突,暂停功能直接失灵。
我在PC上用模拟器跑PSP游戏时也遇到了完全相同的故障。模拟器有按键映射功能,我把PSP的L键映射到了键盘的Shift键上。结果键盘的Shift键因为长时间使用,触点氧化,按下后回弹不彻底,处于半接触状态。模拟器会持续读取这个半按状态,游戏里的视角切换就一直往左转,转得我头晕目眩。更离谱的是,我按键盘的Esc键想调出模拟器菜单,结果模拟器界面直接卡死,程序未响应。后来我用任务管理器强退,重启模拟器才恢复。
这种“卡住”引发的故障有个共同点:它跟软件卡死本质不同。真正的模拟器崩溃是程序无响应或内存溢出,而按键卡住导致的是指令阻塞。模拟器在等待一个“按键释放”的信号,可这个信号永远不来,程序就卡在状态机的某个环节。我用旧版PPSSPP模拟器测试过,把L键映射到鼠标侧键,鼠标侧键坏了处于常通状态,游戏画面直接定住,连声音都变成“滴——”的长音。模拟器日志里只显示一句“key down event repeated”,然后就没了下文。
处理办法其实很简单。如果是PSP实体机,拿个牙签把那个L键的边角轻轻撬起来,用棉签蘸一点酒精擦一下按键周围的凹槽,那是灰尘和汗水结成的污垢把键帽黏住了。擦干净后,在按键金属触点上滴一滴缝纫机油,来回按压几次让油渗进去,就能解决卡键问题。如果弹簧变形了,就得拆机换导电胶,一块导电胶淘宝卖十几块钱,自己动手半小时就能换完。

如果是模拟器按键映射问题,最简单的办法是换一个映射键位。比如把L键从Shift改到数字键1上,彻底绕开那个接触不良的物理键。还可以打开模拟器的“热键设置”,把暂停功能单独设一个不受其他按键干扰的组合键,比如Ctrl+Alt+F1。我试过在PPSSPP里把“暂停/继续”设成单独的Q键,再配合那个卡住的Shift键实测,暂停功能恢复了正常,虽然视角还是会乱转,但至少不会卡死在暂停页面。
说到底,这个问题的根源是物理硬件状态和虚拟指令之间的信息不对称。你按一个键,产生一个“按下”的信号,松手产生一个“释放”的信号,两者缺一不可。卡键就是“按下”信号一直都在,系统就像个在红绿灯前停住却永远变不成绿灯的路口,后面的车全等着,越堵越死。解决思路不外乎两个方向,物理上修好按键,或者软件上忽略那个异常信号。对普通人来说,前者是更省心的做法,毕竟模拟器的配置再复杂,也不如直接动动螺丝刀来得干脆。
话说回来,这种故障也算给老玩家提个醒。PSP这机器用了十几年,按键老化是必然的,日常多注意清洁,玩完游戏配个防尘包,能少吃不少苦头。我的机器现在换了新导电胶,L键手感恢复了最初的脆弹,模拟器也把那个坏键彻底屏蔽了,算是双保险。以后再遇到游戏突然暂停,先别急着骂游戏厂商,低头看看手里的机器,说不定又是哪个键在给你捅娄子。