diff --git a/kernel/trunk/docs/sysfuncr.txt b/kernel/trunk/docs/sysfuncr.txt index 72863ca746..2fbf0fcd83 100644 --- a/kernel/trunk/docs/sysfuncr.txt +++ b/kernel/trunk/docs/sysfuncr.txt @@ -3414,15 +3414,17 @@ IPC * ebx = 3 - номер подфункции Возвращаемое значение: * eax = битовая маска: - * бит 0 (маска 1): левый Shift нажат - * бит 1 (маска 2): правый Shift нажат - * бит 2 (маска 4): левый Ctrl нажат - * бит 3 (маска 8): правый Ctrl нажат - * бит 4 (маска 0x10): левый Alt нажат - * бит 5 (маска 0x20): правый Alt нажат - * бит 6 (маска 0x40): CapsLock включён - * бит 7 (маска 0x80): NumLock включён - * бит 8 (маска 0x100): ScrollLock включён + * бит 0 (маска 1): левый Shift нажат + * бит 1 (маска 2): правый Shift нажат + * бит 2 (маска 4): левый Ctrl нажат + * бит 3 (маска 8): правый Ctrl нажат + * бит 4 (маска 0x10): левый Alt нажат + * бит 5 (маска 0x20): правый Alt нажат + * бит 6 (маска 0x40): CapsLock включён + * бит 7 (маска 0x80): NumLock включён + * бит 8 (маска 0x100): ScrollLock включён + * бит 9 (маска 0x200): левый Win нажат + * бит 10 (маска 0x400): правый Win нажат * прочие биты сброшены ----- Подфункция 4 - установить общесистемную "горячую клавишу". ----- diff --git a/kernel/trunk/docs/sysfuncs.txt b/kernel/trunk/docs/sysfuncs.txt index 5186e68d85..20671c3348 100644 --- a/kernel/trunk/docs/sysfuncs.txt +++ b/kernel/trunk/docs/sysfuncs.txt @@ -3394,15 +3394,17 @@ Parameters: * ebx = 3 - subfunction number Returned value: * eax = bit mask: - * bit 0 (mask 1): left Shift is pressed - * bit 1 (mask 2): right Shift is pressed - * bit 2 (mask 4): left Ctrl is pressed - * bit 3 (mask 8): right Ctrl is pressed - * bit 4 (mask 0x10): left Alt is pressed - * bit 5 (mask 0x20): right Alt is pressed - * bit 6 (mask 0x40): CapsLock is on - * bit 7 (mask 0x80): NumLock is on - * bit 8 (mask 0x100): ScrollLock is on + * bit 0 (mask 1): left Shift is pressed + * bit 1 (mask 2): right Shift is pressed + * bit 2 (mask 4): left Ctrl is pressed + * bit 3 (mask 8): right Ctrl is pressed + * bit 4 (mask 0x10): left Alt is pressed + * bit 5 (mask 0x20): right Alt is pressed + * bit 6 (mask 0x40): CapsLock is on + * bit 7 (mask 0x80): NumLock is on + * bit 8 (mask 0x100): ScrollLock is on + * bit 9 (mask 0x200): left Win is pressed + * bit 10 (mask 0x400): right Win is pressed * other bits are cleared -------------- Subfunction 4 - set system-wide hotkey. --------------- diff --git a/kernel/trunk/hid/keyboard.inc b/kernel/trunk/hid/keyboard.inc index 3110a3a277..9780588133 100644 --- a/kernel/trunk/hid/keyboard.inc +++ b/kernel/trunk/hid/keyboard.inc @@ -17,6 +17,8 @@ VKEY_RALT = 0000000000100000b VKEY_CAPSLOCK = 0000000001000000b VKEY_NUMLOCK = 0000000010000000b VKEY_SCRLOCK = 0000000100000000b +VKEY_LWIN = 0000001000000000b +VKEY_RWIN = 0000010000000000b VKEY_SHIFT = 0000000000000011b VKEY_CONTROL = 0000000000001100b @@ -224,6 +226,27 @@ send_scancode: xchg cl, [ext_code] and al, 0x7F mov bh, 1 +;-------------------------------------- +@@: + cmp al, 0x5B + jne @f + + cmp cl, 0xE0 + jne .writekey + + mov eax, VKEY_LWIN + jmp .modifier +;-------------------------------------- +@@: + cmp al, 0x5C + jne @f + + cmp cl, 0xE0 + jne .writekey + + mov eax, VKEY_RWIN + jmp .modifier +;-------------------------------------- @@: cmp al, 0x2A jne @f