Windows 7에서 이스케이프 및 제어를위한 Caps Lock 매핑 누르지 않은 경우 Esc 키를

Caps Lock 키를 다른 키로 누르지 않은 경우 Esc 키를 Esc 키로 매핑하고 싶습니다. Windows 7에서 어떻게 할 수 있습니까?



답변

SharpKeys 를 사용하여 Escape에 다시 매핑 할 수 있습니다

그러나 키보드 드라이버를 작성하는 것 외에는 조건부 다시 매핑을 수행하는 현실적인 방법을 모릅니다.


답변

이것은 정확히 당신이 원하는 것이 아니라 결함과 함께 살 수 있다면 매우 가깝습니다. AutoHotKey 스크립트 는 다음과 같습니다 .

$CapsLock::LControl
$CapsLock Up::Send {Escape}
return

Caps Lock을 Ctrl로 다시 매핑하고 키를 놓으면 Esc를 보냅니다. Caps Lock 키를 놓을 때마다 Esc 키를 누르는 데 익숙해지기까지 시간이 걸렸습니다. 그러나 Esc 키를 누르면 텍스트 영역에 초점을 잃기 때문에 웹 사이트 텍스트 영역에서는 거의 쓸모가 없습니다.

나는 이것에 대한 해결책을 찾고 있습니다. 필요한 경우 C로 일종의 드라이버 / 키보드 훅을 쓸 수 있습니다.

Vim 관련 성가신 : Ctrl-K 조합을 사용하여 입력 할 수없고 일반적으로 익숙해지기 전에 일반적으로 성가시다. Esc 및 Ctrl 키를 최대한 피하기 위해 아무것도하지 않기 때문에 잘 작동합니다.


답변

이것은 위에서 언급 한 Rich의 솔루션 이후 에 위에서 언급 한 vim wikia 페이지 에 나타날 수 있습니다 .

; Author: fwompner gmail com
#InstallKeybdHook
SetCapsLockState, alwaysoff
Capslock::
Send {LControl Down}
KeyWait, CapsLock
Send {LControl Up}
if ( A_PriorKey = "CapsLock" )
{
    Send {Esc}
}
return

이것은 내 작품이 아니지만 사용하기 시작했으며 설명 된대로 정확하게 작동하며 실제 경고는 없으며 예외를 매핑하려고 시도하지 않기 때문에 (불필요하기 때문에) Chrome에서 매우 훌륭하게 작동합니다 (정말로 Vimium을 원했습니다).


답변

Vim Tips Wiki에서 찾은 하나를 적용 하여 다음 AutoHotkey 스크립트를 사용합니다 . 구현은 약간 해 키지 만 “나에게 효과적”입니다. (2016-09-19 현재이 페이지의 다른 답변과 달리, 내가 알고있는 경고 없이이 문제를 완전히 해결합니다.)

원래 코더는 다음과 같이 언급했습니다.

스크립트는 또한 Control 및 다른 키를 누르고 시간 초과 기간 이전에 너무 빨리 둘 다 놓는 “가양 성”을 감지하고 피하려고 시도합니다.

키보드의 상태와 반응 시간 및 반응 시간에 따라 250ms 값을 조정하십시오. 이것은 아마도 자신의 취향에 따라 실험적으로 조정할 것입니다.

CapsLockCtrlEscape.ahk 요점 :

g_LastCtrlKeyDownTime := 0
g_AbortSendEsc := false
g_ControlRepeatDetected := false

*CapsLock::
    if (g_ControlRepeatDetected)
    {
        return
    }

    send,{Ctrl down}
    g_LastCtrlKeyDownTime := A_TickCount
    g_AbortSendEsc := false
    g_ControlRepeatDetected := true

    return

*CapsLock Up::
    send,{Ctrl up}
    g_ControlRepeatDetected := false
    if (g_AbortSendEsc)
    {
        return
    }
    current_time := A_TickCount
    time_elapsed := current_time - g_LastCtrlKeyDownTime
    if (time_elapsed <= 250)
    {
        SendInput {Esc}
    }
    return

~*^a::
~*^b::
~*^c::
~*^d::
~*^e::
~*^f::
~*^g::
~*^h::
~*^i::
~*^j::
~*^k::
~*^l::
~*^m::
~*^n::
~*^o::
~*^p::
~*^q::
~*^r::
~*^s::
~*^t::
~*^u::
~*^v::
~*^w::
~*^x::
~*^y::
~*^z::
~*^1::
~*^2::
~*^3::
~*^4::
~*^5::
~*^6::
~*^7::
~*^8::
~*^9::
~*^0::
~*^Space::
~*^Backspace::
~*^Delete::
~*^Insert::
~*^Home::
~*^End::
~*^PgUp::
~*^PgDn::
~*^Tab::
~*^Return::
~*^,::
~*^.::
~*^/::
~*^;::
~*^'::
~*^[::
~*^]::
~*^\::
~*^-::
~*^=::
~*^`::
~*^F1::
~*^F2::
~*^F3::
~*^F4::
~*^F5::
~*^F6::
~*^F7::
~*^F8::
~*^F9::
~*^F10::
~*^F11::
~*^F12::
    g_AbortSendEsc := true
    return

답변

다음은 Windows 7에서 캡 잠금을 이스케이프하도록 매핑하는 레지스트리 항목입니다.


Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,03,00,00,00,3a,00,46,00,01,00,3a,00,00,00,00,00

위의 확장자를 .reg (예 : mapCapLocks.reg) 파일로 저장하고 컴퓨터에서 가져 오거나 실행하십시오.


답변

실제로 나는 여기에 완벽한 솔루션을 구축했다고 생각합니다.

Vim 사용자로서 이것은 필자의 필수이며 Windows에서 오랫동안 성공적으로 사용 해 왔습니다. HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run실행 파일을 가리 키기 위해 regedit로 항목을 작성하면 간단하게 작동합니다.

종속성을 컴파일하고 설치하려면 저장소 README 및 기본 웹 사이트에서 인터 셉션을 확인하십시오.

또한 여기에 동일한 Linux 버전을 만들었습니다.


답변

나는 이것과 비슷한 것을 찾고 있었지만 불행히도 여기서 답변의 AHK 스크립트는 나에게 잘 작동하지 않았습니다.

그러나 vim wiki 에서이 문제를 해결하는 솔루션을 찾았습니다 .

  • 먼저 dual-key-remap 이라는 다음 앱을 다운로드하십시오 .
  • 원하는 위치에 zip을 추출하십시오 (이와 같이 유틸리티를 저장합니다 C:\Users\%username%\util\)
  • 다음 디렉토리를 열고 ALT를 누른 상태C:\Users\%username%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\ 에서 dual-key-remap.exe 파일을 드래그하십시오. 를 바로 가기를 만듭니다. 또는 마우스 오른쪽 버튼을 클릭하고 ‘바로 가기 만들기’를 선택한 다음 바로 가기를 시작 디렉토리로 이동하십시오.
  • 로그인 및 로그 아웃하십시오. 로그인 후 몇 초 후에 키가 리바운드됩니다.