Keystrokes for undo3/28/2023 ![]() ![]() Remapping lower left Y/Z key (Z in EN layout) Remapping upper mid Y/Z key (Y in EN layout) :)īased on the Anton's answer I have updated the code to AHK v2 and added support for Ctrl+Shift variant, since many programs now use that for Redo. Of course, you can place keyboard detection into function and therefore optimize the code etc. I tested that keyboard detection condition, it worked nicely. Send ^z or Send ^y invoking just another AHK macro. ![]() Hook ($) is needed to avoid recursion, i.e. (note: replace 0x4090409 constant (US keyboard) with value which applies to your layout) $^z:: But basically, you clone one of existing keyboard layouts and modify it according to your needs. Youtube provides a plenty of video tutorials how to use it (like this with Russian locale) - just search for its name. You may simply create your own keyboard layout using Microsoft Keyboard Layout Creator 1.4 from Official Microsoft Download Center. It generates plain letters 'y' and 'z' on Russian layout and no change on German layout (Ctrl-Z and Ctrl-Y passed through in the original mapping). Solution suggested by Williams: ^SC02c::Send ^y Using ^z and ^y for Russian does not work either, generating letters z and y respectively.ĭifferent to Miroxlav answer I had to use keyboard hook ($) to avoid looping and remove labels (probably copy paste mistake) I use ^н and ^я with the hope to emulate Ctrl-Y or Ctrl-Z scan-code equivalents for Russian layout, but it does not work (generates н for Ctrl-Y and nothing visible for Ctrl-Z). This script perfectly remaps Ctrl-Y Ctrl-Z on German layout, but corrupts both hotkeys on Russian layout. If (hKL = 0x4070409) revert undo-redo hotkey mapping if in German layout HKL := DllCall("GetKeyboardLayout", "UInt", ThreadID, "UInt") ThreadID := DllCall("GetWindowThreadProcessId", "UInt", hWnd, "UInt", 0) With the help of I came up with this half-working AHK script: Undo Working solutions involving AutoHotKey are welcome. Good solution shall be implemented in Windows directly without any additional software, or only free open source software. This behavior is consistent among all version of Windows I know and related deeply in the initial keyboard layout designs, which are just incompatible for users happen to use German-Russian language pair like me. I cannot find any information about creating custom layout for Windows or patching the current one. The same problem is solved on Ubuntu by creating a custom keyboard layout. Using English layout permanently for all kind of latin based texts although fixes the issue with jumping Undo/Redo shortcuts, but is not an option for me, because I need to type German texts with all umlauts and ß (do not suggest an international layout to enter accents, because German is my primary language and I want to type its native letters with one keystroke).Īs the colleague in the referenced question already mentioned, there is no obvious answer in the Internet. I want to fix the physical location (keys) of the Redo and Undo shortcuts in the whole set of Windows applications either to German or better English layout. ![]() Since I use Undo and Redo shortcuts very often, this behavior irritates me a lot. As you can imagine I am always pressing the wrong shortcut, because it is impossible to learn two osciallating opposite patterns, at least my spine brain protests. That means that the location of Undo and Redo shortcuts is changing to the opposite all the time I switch the keyboard layout. This is location is identical to the location of Ctrl-Z and Ctrl-Y on the standard English keyboard layout. Undo (Ctrl-Z) is located now on Y (lower row, left to X) and the Redo on Z (upper row, between T and U). Undo and Redo shortcuts mutually change their position on the keyboard. If you switch the layout to the Russian, suddenly an evil thing is happening. The Redo (Ctrl-Y) is binded to the key Y, which is located left to X in the low row of letters on the German QWERTZ layout. If I use German layout, the Undo shortcut (Ctrl-Z) is binded to the key Z, which is located in the middle of the first letter row between T and U. ![]() The problem is related to the fact that letters Y and Z are switched in the German keyboard layout comparing to the standard English QWERTY layout. I am using German and Russian keyboard layouts extensively on my Windows 10 workstation and switch often between them. I am mimicking another victim of keyboard layout chaos, which suffers from similar yet slightly different issue. ![]()
0 Comments
Leave a Reply.AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |