Memetakan Caps Lock ke Escape dan Kontrol pada Windows 7


22

Saya ingin dapat memetakan Caps Lock Key untuk Escape jika tidak ditekan dengan tombol lain dan Kontrol jika itu. Bagaimana saya bisa melakukan itu pada Windows 7?




Saya membuatnya dengan memodifikasi register: commons.lbl.gov/display/~jwelcher@lbl.gov/... Anda perlu me-restart komputer Anda setelah melakukan ini. Win7.
staticor

Jawaban:


8

Anda dapat remap ke Escape dengan SharpKeys

Namun, saya tidak tahu cara realistis untuk melakukan pemetaan ulang bersyarat, selain menulis driver keyboard.


1
Saya sudah memiliki kunci Caps Lock saya yang dipetakan untuk Escape dengan SharpKeys.
Zameer Manji

6

Ini bukan apa yang Anda inginkan tetapi sangat dekat jika Anda dapat hidup dengan beberapa kekurangan. Berikut ini skrip AutoHotKey :

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

Memetakan kembali Caps Lock ke Ctrl dan mengirim Escape ketika Anda melepaskan kunci. Butuh beberapa saat untuk membiasakan diri dengan tombol Escape ditekan setiap kali saya melepaskan tombol Caps Lock. Namun itu cukup berguna pada textareas situs web karena menekan Escape kehilangan fokus pada textarea.

Saya mencari solusi untuk ini. Saya mungkin akan menulis driver / keyboard hook di C jika diperlukan, haha.

Gangguan spesifik vim: Ini membuat digraf tidak mungkin untuk diketik menggunakan kombinasi Ctrl-K dan umumnya menjengkelkan sebelum Anda terbiasa. Ini bekerja dengan baik bagi saya karena saya akan melakukan apa saja untuk menghindari tombol Esc dan Ctrl sebanyak mungkin.


Jika Anda hanya ingin memetakannya untuk melarikan diri, Anda dapat menyederhanakan ini ke: $CapsLock::Escapedan kemudian segera return.
Kazark

Saya mencoba untuk mengerti - jadi cacat dengan skrip adalah bahwa ketika Caps Lock ditekan dan dilepaskan, baik Ctrl dan Escape dikirim?
Rishi

5

Ini mungkin muncul di halaman wiki vim yang disebutkan sebelumnya setelah solusi Rich di atas.

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

Ini bukan pekerjaan saya, tapi saya sudah mulai menggunakannya dan berfungsi persis seperti yang dijelaskan, tidak ada peringatan nyata, dan karena tidak mencoba memetakan pengecualian (karena tidak perlu) berperilaku cukup baik di Chrome (saya benar-benar menginginkannya untuk Vimium).


Saya telah menggunakan skrip ini dan berfungsi untuk saya. Saya menggunakan ini untuk memutar Caps Lock ke Control / Escape untuk vim.
Brandon

1
Bekerja! Hanya untuk memperjelas, ini adalah skrip Autohotkey. Mulai di sini: autohotkey.com
Michael Fox

Untuk kepentingan pembaca yang mungkin belum mengklik dan melihat komentar pada intisari saya, sepertinya solusi ini hanya berfungsi jika Anda menekan Caps Locksebelum menekan Shift. Caps+Shift+Xbekerja tetapi Shift+Caps+Xtidak.
Rich

4

Saya menggunakan skrip AutoHotkey berikut untuk ini, diadaptasi dari yang saya temukan di Vim Tips Wiki . Implementasinya agak sedikit macet, tetapi "berhasil untuk saya." (Dan tidak seperti jawaban lain di halaman ini pada 2016-09-19, itu sepenuhnya menyelesaikan masalah tanpa peringatan yang saya ketahui.)

Pembuat kode asli mencatat:

Script juga mencoba mendeteksi dan menghindari "false positive" di mana Anda menekan Control dan tombol lain dan melepaskan keduanya terlalu cepat, yaitu sebelum periode waktu habis.

Pastikan untuk mengubah nilai 250ms tergantung pada seberapa baik atau buruk keyboard Anda, dan waktu reaksi Anda sendiri. Ini mungkin sesuatu yang bisa disesuaikan dengan keinginan Anda secara eksperimental.

Inti 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

3

Berikut ini adalah entri registri yang memetakan caps lock untuk melarikan diri di 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

Simpan di atas ke file dengan ekstensi .reg (seperti mapCapLocks.reg) dan impor / jalankan di mesin Anda.


Silakan kutip bagian-bagian penting dari jawaban dari tautan referensi, karena jawabannya dapat menjadi tidak valid jika halaman yang tertaut berubah. Saat ini 404 jadi jawaban ini tidak berguna.
DavidPostill

Poin luar biasa. Saya akan memperbarui jawabannya
Stryker

Ini juga akan memetakan tombol ScrollLock ke CapsLock. Jika bukan itu yang Anda inginkan, gunakan nilainya hex:00,00,00,00,00,00,00,00,02,00,00,00,01,00,3a,00,00,00,00,00. Editor yang berguna untuk peta ini adalah ScancodeMapping dari PlexData .
Appleshell

2

Sebenarnya saya pikir saya telah membangun solusi yang sempurna di sini:

Sebagai pengguna Vim, ini adalah suatu keharusan bagi saya, dan saya telah menggunakannya dengan sukses di Windows untuk waktu yang lama. Saya baru saja membuat entri HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Rundengan regedit untuk menunjuk ke executable dan hanya berfungsi.

Untuk mengkompilasi dan menginstal dependensi, periksa README repositori dan situs web utama untuk Interception.

Saya juga membuat versi Linux yang sama di sini:



0

Saya mencari sesuatu yang mirip dengan ini, tapi sayangnya skrip AHK dari jawaban di sini tidak bekerja dengan baik untuk saya.

Namun, saya menemukan solusi yang memecahkan masalah ini untuk saya di vim wiki .

  • Pertama, unduh aplikasi berikut ini yang disebut dual-key-remap .
  • Ekstrak zip di lokasi yang Anda pilih (Saya menyimpan utilitas seperti ini di C:\Users\%username%\util\)
  • Buka direktori berikut: C:\Users\%username%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\dan seret file dual-key-remap.exe di sana, sambil menahan ALT untuk membuat pintasan. (Atau klik kanan dan pilih 'buat pintasan', dan pindahkan pintasan ke direktori startup Anda).
  • Masuk dan keluar. Beberapa detik setelah Anda login, kunci-kunci tersebut akan muncul kembali.
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.