Windows 10'da kontrol etmek için harita kapağı


82

Windows 8'de kayıt defteri komut dosyasını kullanarak kontrol etmek için capslock anahtarımı yeniden eşlerdim

REGEDIT4

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,1d,00,3a,00,00,00,00,00

Pencere 10'a yükselttikten sonra, bu artık işe yaramıyor. Nasıl yapılabilir?


Bunun sadece Büyük Harf Kilidini başka bir Ctrl tuşuyla eşleştirdiğine dikkat edin. Bunların değiştirilmesini istiyorum, bu yüzden yukarıdaki komut dosyasını değiştirmek için buradaki talimatları kullandım: superuser.com/a/1202601/315584
jia103

Yanıtlar:


87

Yeniden başlatmayı hatırladın mı? Benim için gayet iyi görünüyor, tıpkı 7 ve 8'deki gibi.

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,02,00,00,00,1d,00,3a,00,00,00,00,00

9
Benim için sorun, Windows 10 yükseltmesinin büyük harf kilidi eşlememi sıfırlamasıydı . Fakat yine aynı şekilde yapmak başka bir yeniden başlatmanın ardından çalıştı.
Jack O'Connor,

38
Benim gibi bir başkasının bulmacanın son parçasına ihtiyacı varsa: yukarıdakileri yeni bir metin dosyasına yapıştırın, .reguzantıyla kaydedin , değişiklikleri kayıt defterine uygulamak için dosyayı çift tıklatın, ardından yeniden başlatın.
Mike Niebling

4
Caps LockDaha sonraları tekrar nasıl eşlersiniz?
Ehtesh Choudhury

7
@EhteshChoudhury, kayıt defteri anahtarının altındaki "Tarama Kodu Eşlemesi" girişini silebilir, yeniden başlatır ve varsayılan davranış geri yüklenir.
bojolais

76

Herhangi birinin buna PowerShell ile yapması gerektiğinde:

$hexified = "00,00,00,00,00,00,00,00,02,00,00,00,1d,00,3a,00,00,00,00,00".Split(',') | % { "0x$_"};

$kbLayout = 'HKLM:\System\CurrentControlSet\Control\Keyboard Layout';

New-ItemProperty -Path $kbLayout -Name "Scancode Map" -PropertyType Binary -Value ([byte[]]$hexified);

Yönetici olarak çalıştırın ve yeniden başlatın.


16
Linux benzeri bir "kabuğa kopyala ve yapıştır" yanıtı verdiğiniz için bir puan kazanın!
mikezter

3
Ciddi anlamda. * İnitrc scriptlerine sahip olmayı özlüyorum. Teşekkürler.
stewSquared

6
Efendim, bugün Windows kullanarak biraz daha az sefil bir deneyim yaptınız. Bunun için sana teşekkür ederim.
binarymason

18

SharpKeys'i , Windows 7, 8 veya 10'daki herhangi bir tuşa başka bir tuşla eşleştirmek için kullanabilirsiniz . Kayıt defterini kendiniz değiştirmekten çok daha kolay ve temizdir.

Bu yardımcı olur umarım.


2
Bunu Caps Lock'a basarak dilleri değiştirmek için kullanabilir miyim?
thanos.a

13

CAPS LOCK anahtarı için CTRL göndermek, CTRL anahtarı için ALT göndermek ve ALT anahtarı için CAPS LOCK göndermek için aşağıdakileri kullanın. CTRL, Tanrı'nın istediği yerde "A" nın solunda, ALT, ÜSTKRKT'in altında ve tamamen işe yaramaz CAPS LOCK anahtarı, vurmak için bileğimi kırmak zorunda kaldığım yerlerden güvenli bir şekilde saklanıyor.

Windows Registry Editor Version 5.00

; The hex data is in five groups of four bytes:
;   00,00,00,00,\    header version (always 00000000)
;   00,00,00,00,\    header flags (always 00000000)
;   04,00,00,00,\    # of entries (3 in this case) plus a NULL terminator line.
;                    Entries are in 2-byte pairs: Key code to send & keyboard key to send it.
;                    Each entry is in LSB, MSB order.
;   1d,00,3a,00,\    Send LEFT CTRL (0x001d) code when user presses the CAPS LOCK key (0x003a) 
;   38,00,1d,00,\    Send LEFT ALT (0x0038) code when user presses the LEFT CTRL key (0x001d) 
;   3a,00,38,00,\    Send CAPS LOCK (0x3A) code when user presses the LEFT ALT key (0x0038) 
;   00,00,00,00      NULL terminator

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,\
                   00,00,00,00,\
                   04,00,00,00,\
                   1d,00,3a,00,\
                   38,00,1d,00,\
                   3a,00,38,00,\
                   00,00,00,00

4
Yorumları gerçekten takdir ediyorum. Kodların ne anlama geldiğini hep merak etmişimdir. Çok yararlı.
zaphodtx

3

CTRL ve CAPS LOCK anahtarlarını değiştirmek için kullanılan komut dosyası:

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,1d,00,3a,00,3a,00,1d,00,00,00,00,00

2

Dil girişini CapsLock'a yeniden eşlemek için lswitch'i kullanabilirsiniz .

Giriş dillerini, kullanım geçmek için herhangi bir tuşa kullanın: lswitch [keycode]. Anahtar kodu isteğe bağlıdır ve varsayılan olarak bağlam menü tuşuna göredir. Bir başka iyi aday 20'lik anahtar kodlu bir CapsLock anahtarıdır.

lswitch 20

Otomatik yüklemeye ekleyin.


bu işe yarar, ancak büyük harf kilidi işlevi kaybolur. büyük harf kilidi işlevini shift + büyük harf kombinasyonunu nasıl tanımlayacağınıza dair bir fikriniz var mı?
thanos.a

2

Bunu yapmak için AutoHotKey kullandım.

Çok basit bir ahk betiğini çalıştırmak için başlangıç ​​dizininde bir linke sahip olurdum:

Capslock::Ctrl

Mesele şu ki, Autohotkey Yönetici olarak çalıştırılmadığından, komut dosyasını daha yüksek ayrıcalıklarla giriş yaparken çalıştırmak için başlangıç ​​dizini yerine görev zamanlayıcı kullanmazsanız, ayrıcalıklı pencereleri etkilemez. İkinci sorun, bazen senaryo uykuya devam ederken askıda kalmasıdır, bu yüzden onu yeniden yüklemeniz gerekebilir, ki bu can sıkıcıdır.

AutoHotKey, makro yazmak gibi daha karmaşık görevler için daha uygundur.


Autohotkey çözümünü denedim ve tavsiye etmiyorum. Otomatik tekrar hızınızı yüksek, gecikmeyi düşük tutarsanız iyi çalışmaz. Ayrıca, emkeys tuşlarının Windows'ta hemen hemen her yerde çalışmasını sağlayan xkeymacs ile iyi karışmaz.
Reb.Cabin

Emacs kullanmıyorum, oturum açarken otomatik olarak bir .ahk dosyasını açıyorum ve bu çözümü çok basit ve taşınabilir
buluyorum

2

Tükenmeyen sisinternals araç kutusu ayrıca sadece capslock'u kontrol ile değiştirmek için küçük bir program sunar - ctrl2cap.exe.


Süper Kullanana Hoşgeldiniz. Lütfen Yazılımın Nasıl Tavsiye Edileceğini okuyun ve ardından cevabınızı en azından gerekli minimum bilgileri ( kalın harflerle yazılmış ) içerecek şekilde düzenleyin . Bu bilgiyi içermeyen yayınlar silinebilir. Katkınız için teşekkürler.
Bükülen Taklitçi

1

Bazı nedenlerden dolayı, üçüncü taraflara ait araçları çalıştırmak istemiyorsanız, bunu biraz C ile kendiniz yapmak mümkündür. Susam Pal'in mükemmel cevabı sayesinde , snippet'i aşağıya koydum.

Pratik olarak bir anahtar kaydedici. Tuş basmalarını dinler, yakalar ve haritalamayı akılda tutarak klavye girdisi oluşturur. Aşağıdaki konsol uygulamasının çalışması için çalışıyor olması gerekir.

Bunu bir şekilde derlemeniz gerekecek. Msys2.org ile kullandım pacman -S mingw-w64-x86_64-gccve derledik /mingw64/bin/gcc nocaps.c -o nocaps.exe.

#include <stdio.h>
#include <windows.h>

HHOOK hook;

#define KEYCODE_CAPSLOCK 20
#define KEYCODE_LCTRL 162

LRESULT CALLBACK keyboardHook(int nCode, WPARAM wParam, LPARAM lParam)
{
    KBDLLHOOKSTRUCT *p = (KBDLLHOOKSTRUCT *) lParam;
    INPUT input = {.type = INPUT_KEYBOARD };

    printf("nCode=%d\t wParam=%d\t p->vkCode=%lu \t p->scanCode=%d\t\n", nCode, wParam, p->vkCode, p->scanCode);


    if (wParam == WM_KEYUP || wParam == WM_SYSKEYUP) {
        input.ki.dwFlags = KEYEVENTF_KEYUP;
    }

    if (p->vkCode == KEYCODE_CAPSLOCK && (p->flags & LLKHF_INJECTED) == 0) {
        input.ki.wVk = KEYCODE_LCTRL;
        SendInput(1, &input, sizeof (INPUT));
        return 1;
    } else if (p->vkCode == KEYCODE_LCTRL && (p->flags & LLKHF_INJECTED) == 0) {
        input.ki.wVk = KEYCODE_CAPSLOCK;
        SendInput(1, &input, sizeof (INPUT));
        return 1;
    }

    return CallNextHookEx(hook, nCode, wParam, lParam);
}

int main(int argc, char **argv)
{
    MSG messages;

    hook = SetWindowsHookEx(WH_KEYBOARD_LL, keyboardHook, NULL, 0);
    if (hook == NULL) {
        printf("Error %d\n", GetLastError());
        return 1;
    }

    printf("Mapping CAPSLOCK=>LCTRL and LCTRL=>CAPSLOCK..\n");
    while (GetMessage (&messages, NULL, 0, 0))
    {
        TranslateMessage(&messages);
        DispatchMessage(&messages);
    }
    return 0;
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.