キーボードレイアウト – Windows 10 の制御にキャップロックをマップする

capslock key-binding keyboard-layout remapping windows-10

windows 8では、私はレジストリスクリプトを使用して制御するために私のキャップロックキーをリマップしていました

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

windows10にアップグレードしてから、これがうまくいかなくなりました。どうすればいいのでしょうか?

  105  Chiel ten Brinke  2015-08-02


ベストアンサー

再起動を覚えていますか?7と8のように、私のために正常に動作しているように見えます

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

98  hugh  2015-08-02


誰かがPowerShellでこれを行う必要があった場合に備えて

$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);

管理者として実行し、再起動します

106  Frison Alexander  2015-11-07


SharpKeys を使用して、Windows 7、8、10 の任意のキーを他のキーにマッピングすることができます。レジストリを自分で変更するよりもはるかに簡単でクリーンな方法です

これが助けになることを願っています

24  moeabdol  2016-01-16


私は、CAPS LOCKキーにはCTRLを送り、CTRLキーにはALTを送り、ALTキーにはCAPS LOCKを送るようにしています。CTRLは神が意図した「A」の左にあり、ALTはSHIFTの下にあり、全く役に立たないCAPS LOCKキーは、打つのに手首を折らなければならないところに安全にしまってある

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

19  mnemotronic  2017-10-31


現在、PowerToysと呼ばれるコントロールキーにキャップロックをマッピングするためのソリューションがMicrosoftから直接提供されています。PowerToysでは、サードパーティのツールを使用したり、レジストリを手で修正したりする必要はありません(間違った方法で行うと深刻な問題を引き起こす可能性があります)。これを処理するPowerToysのツールはデフォルトでインストールされており、Keyboard Managerと呼ばれています。これは期待通りに動作します – これは、Caps Lock キーを Ctrl キーにマッピングしたイメージです

enter image description here

13  Snap Shot  2020-05-23


CTRLキーとCAPS LOCKキーを入れ替えるスクリプトです

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

6  ady  2018-12-08


以前はAutoHotKeyを使っていました

スタートアップディレクトリにリンクを張って、非常に基本的なahkスクリプトを実行するようにしています

Capslock::Ctrl

問題は、AutohotkeyはAdministratorとして実行されないので、より高い権限でログイン時にスクリプトを実行するために、スタートアップディレクトリではなくタスクスケジューラを使用しない限り、特権ウィンドウには影響しないということです。2つ目の問題は、スリープ再開時にスクリプトがハングアップすることがあるので、再読み込みが必要になることがあり、それが煩わしいことです

AutoHotKeyは、マクロを書くようなより複雑なタスクに適しています

5  loxaxs  2018-08-11


無尽蔵の sysinternals ツールボックスは、コントロールで capslock を切り替えるための小さなプログラムも提供しています — ctrl2cap.exe

4  Ernst  2018-12-31


lswitch を使用して、言語入力を CapsLock にリマップすることができます

任意のキーで入力言語、使用方法を切り替えることができます。lswitch [keycode].キーコードは任意で、デフォルトはコンテキストメニューキーです。もう一つの良い候補は、キーコードが 20 の CapsLock キーです

lswitch 20

オートロードに追加します

2  Andrew K.  2017-06-17


何らかの理由で、サードパーティのツールを実行したくない場合は、少しのC言語で自分で実行することができます。Susam Palさんの見事な回答のおかげで、以下のスニペットをまとめてみました

これは実質的にキーロガーです。キーの押下を聞き取り、それをキャプチャし、マッピングを意識してキーボード入力を構築します。動作させるためには以下のコンソールアプリが必要です

これをどうにかしてコンパイルする必要があります。私はmsys2.orgをpacman -S mingw-w64-x86_64-gccで使用し、/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;
}

2  kristianlm  2019-10-07


タイトルとURLをコピーしました