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 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?
Jawaban:
Anda dapat remap ke Escape dengan SharpKeys
Namun, saya tidak tahu cara realistis untuk melakukan pemetaan ulang bersyarat, selain menulis driver keyboard.
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.
$CapsLock::Escape
dan kemudian segera return
.
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).
Caps Lock
sebelum menekan Shift
. Caps+Shift+X
bekerja tetapi Shift+Caps+X
tidak.
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.
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
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.
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 .
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\Run
dengan 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:
Program remapkey.exe yang disertakan dalam Alat Kit Sumber Daya Windows Server 2003 yang disebutkan dalam artikel ini berfungsi dengan baik di Windows 7.
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 .
C:\Users\%username%\util\
)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).