
我是一名程式設計師,寫得很快(雖然不是超級快)。在我工作的戴爾筆記型電腦中,我經常遇到兩個錯誤,我懷疑這與某些底層 Windows 鍵盤驅動程式有關(“底層”,因為這些錯誤也發生在完全不同品牌的鍵盤上)。這不是鍵盤的實體屬性,我已經嘗試更換鍵盤本身。順便說一句,兩個 USB 鍵盤。
這些是奇怪的問題:
當我快速打字時,按鍵Ctrl會掛起 - 但它不會在物理上掛起 - “釋放按鍵代碼”似乎永遠不會到達作業系統。這種情況經常發生,例如當我處於專注狀態時每 20 到 120 秒發生一次。解決方法是1)意識到控制鍵被系統認為按下了2)按下並釋放正確的 Ctrl鑰匙。左鍵Ctrl不能修復錯誤(我知道他們發送不同的掃描碼)。
鑰匙Shift以相同的方式“掛起”,但無法透過按下並釋放 Shift 鍵來解鎖,似乎有一個內部計數器掛起。這種情況可能每 10 到 20 天發生一次。要解決我1)必須意識到該 Shift鍵處於按下狀態( Shift按下該鍵是不可能工作的,簡單地在Explorer.exe中選擇另一個檔案變得不可能,更不用說嘗試在Eclipse中編寫程式碼了)並修復我 2) 運行我為 AutoHotkey 編寫的腳本,該腳本發送
{SHIFT UP}
到系統。在我寫腳本之前,我必須重新啟動電腦...
我對此感到惱火。造成這種情況的原因是什麼?
編輯:這是我的 AHK 檔:
RShift::LShift
^!+r::
; Show a black "splash" to reveal script reloading.
Run %windir%\system32\cmd.exe /c
Reload
return
^!+e::
Edit
return
; Send shift-up.
#^!+s::
; Send shift-up to "fix" my office laptop bug.
SendInput {Shift Up}
return
; -------------------------
!+a::
Run C:\Program Files\Notepad++\notepad++.exe
return
^!+a::
Run %windir%\system32\notepad.exe
return
^!+d::
Run %programfiles%\git\bin\bash.exe, c:\RnD\PD\trunk
return
RunExplorer(root, startTitle, subpath, endTitle, filename)
{
SetTitleMatchMode, 3
IfWinExist, %endTitle%
{
WinActivate,%endTitle%
return
}
else
{
var = /e,
if (root != "")
{
var = /e,/root,%root%
}
Run "%windir%\explorer.exe" %var%
WinWait,%startTitle%,,4
}
if (ErrorLevel == 0)
{
#WinActivateForce
WinActivate,%startTitle%
WinWaitActive,%startTitle%,,10
if (subpath != "")
{
SendInput {LAlt Down}d{LAlt Up}{End}%subpath%{ENTER}{Tab}{Tab}
}
SendInput {Tab}%filename%
}
}
;Opens project home folder.
#e::
RunExplorer("C:\RnD", "RnD", "\protustom\trunk\implementation\Protom", "Protom", "ProtomDC")
return
;Opens My docs folder.
#m::
RunExplorer("H:\", "V0c1573 on 'Vcn.ds.volvo.net\It-got\Home07' (H:)", "My Documents", "My Documents", "Auto")
return
;Opens program files
#h::
RunExplorer("C:\", "Local Disk (C:)", "Program Files", "Program Files", "7")
return
#k::
Run %windir%\system32\Control.exe
return
#c::
Run calc.exe
return
#r::
Run regedit.exe
return
; Stores a screen shot as tmp.png on the desktop.
; Take screenshot manually before running this.
#q::
Run c:\WINDOWS\system32\mspaint.exe
WinWaitActive, namnlös - Paint,,15
if (ErrorLevel == 0)
{
Send ^v ; Paste screenshot.
Send !am ; Save as.
Send +{Tab}+{Tab}{Down}{ENTER}{Tab}{Tab} ; Save to desktop folder.
Send tmp{Tab}{Down}{End}{ENTER}{ENTER} ; Write tmp.png.
WinWaitActive, Spara som,,2
if (ErrorLevel == 0)
{
Sleep, 100 ; Wait a bit for dialog to load.
Send {Left}{Enter} ; Overwrite previous file.
}
Send !{F4} ; Close paint.
}
return
; Shift+CapsLock turns on/off CapsLock.
;Capslock::Ctrl
;+Capslock::Capslock
答案1
Ctrl鑰匙:
我假設該行
Capslock::Ctrl
曾是不是當您遇到密鑰問題時註解掉Ctrl。
不同的鍵盤及其驅動程式的行為不同。有些在CapsLock發佈時不會註冊,因為它通常什麼都不做。
在我的兩個鍵盤上,按下並釋放會在一個和另一個上CapsLock發送,但從來沒有。按下並釋放相應的(但不是相反的)可以解決此問題。
{LCtrlDown}
{RCtrlDown}
{CtrlUp}
Ctrl除了註解掉該行之外,我想不出解決方案。
Shift鑰匙:
我設法重現了你解釋的行為一次,但我不知道我是怎麼做到的。
但是,我假設該行
RShift::LShift
是罪魁禍首。
我無法解釋如何在重新映射
{RShiftDown}
右鍵的情況下發送a Shift,但它確實解釋了為什麼按兩個Shift鍵都無法解決此問題,因為釋放右鍵Shift將發送{LShiftUp}
.除了註解掉該行之外,可能還有其他解決方案,但我不太確定您想用它實現什麼目標。