Merge pull request #2092 from ujifgc/add-windows-keys

libobs: add missing multimedia hotkeys for Windows
master
Jim 2019-11-17 19:03:01 -08:00 committed by GitHub
commit 374b8d2229
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 507 additions and 1 deletions

View File

@ -483,3 +483,173 @@ OBS_HOTKEY(OBS_KEY_REDO)
OBS_HOTKEY(OBS_KEY_UNDO)
OBS_HOTKEY(OBS_KEY_FRONT)
OBS_HOTKEY(OBS_KEY_PROPS)
#ifdef _WIN32
OBS_HOTKEY(OBS_KEY_VK_CANCEL)
OBS_HOTKEY(OBS_KEY_0x07)
OBS_HOTKEY(OBS_KEY_0x0A)
OBS_HOTKEY(OBS_KEY_0x0B)
OBS_HOTKEY(OBS_KEY_0x0E)
OBS_HOTKEY(OBS_KEY_0x0F)
OBS_HOTKEY(OBS_KEY_0x16)
OBS_HOTKEY(OBS_KEY_VK_JUNJA)
OBS_HOTKEY(OBS_KEY_VK_FINAL)
OBS_HOTKEY(OBS_KEY_0x1A)
OBS_HOTKEY(OBS_KEY_VK_ACCEPT)
OBS_HOTKEY(OBS_KEY_VK_MODECHANGE)
OBS_HOTKEY(OBS_KEY_VK_SELECT)
OBS_HOTKEY(OBS_KEY_VK_PRINT)
OBS_HOTKEY(OBS_KEY_VK_EXECUTE)
OBS_HOTKEY(OBS_KEY_VK_HELP)
OBS_HOTKEY(OBS_KEY_0x30)
OBS_HOTKEY(OBS_KEY_0x31)
OBS_HOTKEY(OBS_KEY_0x32)
OBS_HOTKEY(OBS_KEY_0x33)
OBS_HOTKEY(OBS_KEY_0x34)
OBS_HOTKEY(OBS_KEY_0x35)
OBS_HOTKEY(OBS_KEY_0x36)
OBS_HOTKEY(OBS_KEY_0x37)
OBS_HOTKEY(OBS_KEY_0x38)
OBS_HOTKEY(OBS_KEY_0x39)
OBS_HOTKEY(OBS_KEY_0x3A)
OBS_HOTKEY(OBS_KEY_0x3B)
OBS_HOTKEY(OBS_KEY_0x3C)
OBS_HOTKEY(OBS_KEY_0x3D)
OBS_HOTKEY(OBS_KEY_0x3E)
OBS_HOTKEY(OBS_KEY_0x3F)
OBS_HOTKEY(OBS_KEY_0x40)
OBS_HOTKEY(OBS_KEY_0x41)
OBS_HOTKEY(OBS_KEY_0x42)
OBS_HOTKEY(OBS_KEY_0x43)
OBS_HOTKEY(OBS_KEY_0x44)
OBS_HOTKEY(OBS_KEY_0x45)
OBS_HOTKEY(OBS_KEY_0x46)
OBS_HOTKEY(OBS_KEY_0x47)
OBS_HOTKEY(OBS_KEY_0x48)
OBS_HOTKEY(OBS_KEY_0x49)
OBS_HOTKEY(OBS_KEY_0x4A)
OBS_HOTKEY(OBS_KEY_0x4B)
OBS_HOTKEY(OBS_KEY_0x4C)
OBS_HOTKEY(OBS_KEY_0x4D)
OBS_HOTKEY(OBS_KEY_0x4E)
OBS_HOTKEY(OBS_KEY_0x4F)
OBS_HOTKEY(OBS_KEY_0x50)
OBS_HOTKEY(OBS_KEY_0x51)
OBS_HOTKEY(OBS_KEY_0x52)
OBS_HOTKEY(OBS_KEY_0x53)
OBS_HOTKEY(OBS_KEY_0x54)
OBS_HOTKEY(OBS_KEY_0x55)
OBS_HOTKEY(OBS_KEY_0x56)
OBS_HOTKEY(OBS_KEY_0x57)
OBS_HOTKEY(OBS_KEY_0x58)
OBS_HOTKEY(OBS_KEY_0x59)
OBS_HOTKEY(OBS_KEY_0x5A)
OBS_HOTKEY(OBS_KEY_VK_LWIN)
OBS_HOTKEY(OBS_KEY_VK_RWIN)
OBS_HOTKEY(OBS_KEY_VK_APPS)
OBS_HOTKEY(OBS_KEY_0x5E)
OBS_HOTKEY(OBS_KEY_VK_SLEEP)
OBS_HOTKEY(OBS_KEY_VK_SEPARATOR)
OBS_HOTKEY(OBS_KEY_0x88)
OBS_HOTKEY(OBS_KEY_0x89)
OBS_HOTKEY(OBS_KEY_0x8A)
OBS_HOTKEY(OBS_KEY_0x8B)
OBS_HOTKEY(OBS_KEY_0x8C)
OBS_HOTKEY(OBS_KEY_0x8D)
OBS_HOTKEY(OBS_KEY_0x8E)
OBS_HOTKEY(OBS_KEY_0x8F)
OBS_HOTKEY(OBS_KEY_VK_OEM_FJ_JISHO)
OBS_HOTKEY(OBS_KEY_VK_OEM_FJ_LOYA)
OBS_HOTKEY(OBS_KEY_VK_OEM_FJ_ROYA)
OBS_HOTKEY(OBS_KEY_0x97)
OBS_HOTKEY(OBS_KEY_0x98)
OBS_HOTKEY(OBS_KEY_0x99)
OBS_HOTKEY(OBS_KEY_0x9A)
OBS_HOTKEY(OBS_KEY_0x9B)
OBS_HOTKEY(OBS_KEY_0x9C)
OBS_HOTKEY(OBS_KEY_0x9D)
OBS_HOTKEY(OBS_KEY_0x9E)
OBS_HOTKEY(OBS_KEY_0x9F)
OBS_HOTKEY(OBS_KEY_VK_LSHIFT)
OBS_HOTKEY(OBS_KEY_VK_RSHIFT)
OBS_HOTKEY(OBS_KEY_VK_LCONTROL)
OBS_HOTKEY(OBS_KEY_VK_RCONTROL)
OBS_HOTKEY(OBS_KEY_VK_LMENU)
OBS_HOTKEY(OBS_KEY_VK_RMENU)
OBS_HOTKEY(OBS_KEY_VK_BROWSER_BACK)
OBS_HOTKEY(OBS_KEY_VK_BROWSER_FORWARD)
OBS_HOTKEY(OBS_KEY_VK_BROWSER_REFRESH)
OBS_HOTKEY(OBS_KEY_VK_BROWSER_STOP)
OBS_HOTKEY(OBS_KEY_VK_BROWSER_SEARCH)
OBS_HOTKEY(OBS_KEY_VK_BROWSER_FAVORITES)
OBS_HOTKEY(OBS_KEY_VK_BROWSER_HOME)
OBS_HOTKEY(OBS_KEY_VK_VOLUME_MUTE)
OBS_HOTKEY(OBS_KEY_VK_VOLUME_DOWN)
OBS_HOTKEY(OBS_KEY_VK_VOLUME_UP)
OBS_HOTKEY(OBS_KEY_VK_MEDIA_NEXT_TRACK)
OBS_HOTKEY(OBS_KEY_VK_MEDIA_PREV_TRACK)
OBS_HOTKEY(OBS_KEY_VK_MEDIA_STOP)
OBS_HOTKEY(OBS_KEY_VK_MEDIA_PLAY_PAUSE)
OBS_HOTKEY(OBS_KEY_VK_LAUNCH_MAIL)
OBS_HOTKEY(OBS_KEY_VK_LAUNCH_MEDIA_SELECT)
OBS_HOTKEY(OBS_KEY_VK_LAUNCH_APP1)
OBS_HOTKEY(OBS_KEY_VK_LAUNCH_APP2)
OBS_HOTKEY(OBS_KEY_0xB8)
OBS_HOTKEY(OBS_KEY_0xB9)
OBS_HOTKEY(OBS_KEY_0xC1)
OBS_HOTKEY(OBS_KEY_0xC2)
OBS_HOTKEY(OBS_KEY_0xC3)
OBS_HOTKEY(OBS_KEY_0xC4)
OBS_HOTKEY(OBS_KEY_0xC5)
OBS_HOTKEY(OBS_KEY_0xC6)
OBS_HOTKEY(OBS_KEY_0xC7)
OBS_HOTKEY(OBS_KEY_0xC8)
OBS_HOTKEY(OBS_KEY_0xC9)
OBS_HOTKEY(OBS_KEY_0xCA)
OBS_HOTKEY(OBS_KEY_0xCB)
OBS_HOTKEY(OBS_KEY_0xCC)
OBS_HOTKEY(OBS_KEY_0xCD)
OBS_HOTKEY(OBS_KEY_0xCE)
OBS_HOTKEY(OBS_KEY_0xCF)
OBS_HOTKEY(OBS_KEY_0xD0)
OBS_HOTKEY(OBS_KEY_0xD1)
OBS_HOTKEY(OBS_KEY_0xD2)
OBS_HOTKEY(OBS_KEY_0xD3)
OBS_HOTKEY(OBS_KEY_0xD4)
OBS_HOTKEY(OBS_KEY_0xD5)
OBS_HOTKEY(OBS_KEY_0xD6)
OBS_HOTKEY(OBS_KEY_0xD7)
OBS_HOTKEY(OBS_KEY_0xD8)
OBS_HOTKEY(OBS_KEY_0xD9)
OBS_HOTKEY(OBS_KEY_0xDA)
OBS_HOTKEY(OBS_KEY_VK_OEM_8)
OBS_HOTKEY(OBS_KEY_0xE0)
OBS_HOTKEY(OBS_KEY_VK_OEM_AX)
OBS_HOTKEY(OBS_KEY_VK_ICO_HELP)
OBS_HOTKEY(OBS_KEY_VK_ICO_00)
OBS_HOTKEY(OBS_KEY_VK_PROCESSKEY)
OBS_HOTKEY(OBS_KEY_VK_ICO_CLEAR)
OBS_HOTKEY(OBS_KEY_VK_PACKET)
OBS_HOTKEY(OBS_KEY_0xE8)
OBS_HOTKEY(OBS_KEY_VK_OEM_RESET)
OBS_HOTKEY(OBS_KEY_VK_OEM_JUMP)
OBS_HOTKEY(OBS_KEY_VK_OEM_PA1)
OBS_HOTKEY(OBS_KEY_VK_OEM_PA2)
OBS_HOTKEY(OBS_KEY_VK_OEM_PA3)
OBS_HOTKEY(OBS_KEY_VK_OEM_WSCTRL)
OBS_HOTKEY(OBS_KEY_VK_OEM_CUSEL)
OBS_HOTKEY(OBS_KEY_VK_OEM_ATTN)
OBS_HOTKEY(OBS_KEY_VK_OEM_FINISH)
OBS_HOTKEY(OBS_KEY_VK_OEM_COPY)
OBS_HOTKEY(OBS_KEY_VK_OEM_AUTO)
OBS_HOTKEY(OBS_KEY_VK_OEM_ENLW)
OBS_HOTKEY(OBS_KEY_VK_ATTN)
OBS_HOTKEY(OBS_KEY_VK_CRSEL)
OBS_HOTKEY(OBS_KEY_VK_EXSEL)
OBS_HOTKEY(OBS_KEY_VK_EREOF)
OBS_HOTKEY(OBS_KEY_VK_PLAY)
OBS_HOTKEY(OBS_KEY_VK_ZOOM)
OBS_HOTKEY(OBS_KEY_VK_NONAME)
OBS_HOTKEY(OBS_KEY_VK_PA1)
OBS_HOTKEY(OBS_KEY_VK_OEM_CLEAR)
#endif

View File

@ -654,6 +654,341 @@ static int get_virtual_key(obs_key_t key)
case OBS_KEY_MOUSE5:
return VK_XBUTTON2;
case OBS_KEY_VK_CANCEL:
return VK_CANCEL;
case OBS_KEY_0x07:
return 0x07;
case OBS_KEY_0x0A:
return 0x0A;
case OBS_KEY_0x0B:
return 0x0B;
case OBS_KEY_0x0E:
return 0x0E;
case OBS_KEY_0x0F:
return 0x0F;
case OBS_KEY_0x16:
return 0x16;
case OBS_KEY_VK_JUNJA:
return VK_JUNJA;
case OBS_KEY_VK_FINAL:
return VK_FINAL;
case OBS_KEY_0x1A:
return 0x1A;
case OBS_KEY_VK_ACCEPT:
return VK_ACCEPT;
case OBS_KEY_VK_MODECHANGE:
return VK_MODECHANGE;
case OBS_KEY_VK_SELECT:
return VK_SELECT;
case OBS_KEY_VK_PRINT:
return VK_PRINT;
case OBS_KEY_VK_EXECUTE:
return VK_EXECUTE;
case OBS_KEY_VK_HELP:
return VK_HELP;
case OBS_KEY_0x30:
return 0x30;
case OBS_KEY_0x31:
return 0x31;
case OBS_KEY_0x32:
return 0x32;
case OBS_KEY_0x33:
return 0x33;
case OBS_KEY_0x34:
return 0x34;
case OBS_KEY_0x35:
return 0x35;
case OBS_KEY_0x36:
return 0x36;
case OBS_KEY_0x37:
return 0x37;
case OBS_KEY_0x38:
return 0x38;
case OBS_KEY_0x39:
return 0x39;
case OBS_KEY_0x3A:
return 0x3A;
case OBS_KEY_0x3B:
return 0x3B;
case OBS_KEY_0x3C:
return 0x3C;
case OBS_KEY_0x3D:
return 0x3D;
case OBS_KEY_0x3E:
return 0x3E;
case OBS_KEY_0x3F:
return 0x3F;
case OBS_KEY_0x40:
return 0x40;
case OBS_KEY_0x41:
return 0x41;
case OBS_KEY_0x42:
return 0x42;
case OBS_KEY_0x43:
return 0x43;
case OBS_KEY_0x44:
return 0x44;
case OBS_KEY_0x45:
return 0x45;
case OBS_KEY_0x46:
return 0x46;
case OBS_KEY_0x47:
return 0x47;
case OBS_KEY_0x48:
return 0x48;
case OBS_KEY_0x49:
return 0x49;
case OBS_KEY_0x4A:
return 0x4A;
case OBS_KEY_0x4B:
return 0x4B;
case OBS_KEY_0x4C:
return 0x4C;
case OBS_KEY_0x4D:
return 0x4D;
case OBS_KEY_0x4E:
return 0x4E;
case OBS_KEY_0x4F:
return 0x4F;
case OBS_KEY_0x50:
return 0x50;
case OBS_KEY_0x51:
return 0x51;
case OBS_KEY_0x52:
return 0x52;
case OBS_KEY_0x53:
return 0x53;
case OBS_KEY_0x54:
return 0x54;
case OBS_KEY_0x55:
return 0x55;
case OBS_KEY_0x56:
return 0x56;
case OBS_KEY_0x57:
return 0x57;
case OBS_KEY_0x58:
return 0x58;
case OBS_KEY_0x59:
return 0x59;
case OBS_KEY_0x5A:
return 0x5A;
case OBS_KEY_VK_LWIN:
return VK_LWIN;
case OBS_KEY_VK_RWIN:
return VK_RWIN;
case OBS_KEY_VK_APPS:
return VK_APPS;
case OBS_KEY_0x5E:
return 0x5E;
case OBS_KEY_VK_SLEEP:
return VK_SLEEP;
case OBS_KEY_VK_SEPARATOR:
return VK_SEPARATOR;
case OBS_KEY_0x88:
return 0x88;
case OBS_KEY_0x89:
return 0x89;
case OBS_KEY_0x8A:
return 0x8A;
case OBS_KEY_0x8B:
return 0x8B;
case OBS_KEY_0x8C:
return 0x8C;
case OBS_KEY_0x8D:
return 0x8D;
case OBS_KEY_0x8E:
return 0x8E;
case OBS_KEY_0x8F:
return 0x8F;
case OBS_KEY_VK_OEM_FJ_JISHO:
return VK_OEM_FJ_JISHO;
case OBS_KEY_VK_OEM_FJ_LOYA:
return VK_OEM_FJ_LOYA;
case OBS_KEY_VK_OEM_FJ_ROYA:
return VK_OEM_FJ_ROYA;
case OBS_KEY_0x97:
return 0x97;
case OBS_KEY_0x98:
return 0x98;
case OBS_KEY_0x99:
return 0x99;
case OBS_KEY_0x9A:
return 0x9A;
case OBS_KEY_0x9B:
return 0x9B;
case OBS_KEY_0x9C:
return 0x9C;
case OBS_KEY_0x9D:
return 0x9D;
case OBS_KEY_0x9E:
return 0x9E;
case OBS_KEY_0x9F:
return 0x9F;
case OBS_KEY_VK_LSHIFT:
return VK_LSHIFT;
case OBS_KEY_VK_RSHIFT:
return VK_RSHIFT;
case OBS_KEY_VK_LCONTROL:
return VK_LCONTROL;
case OBS_KEY_VK_RCONTROL:
return VK_RCONTROL;
case OBS_KEY_VK_LMENU:
return VK_LMENU;
case OBS_KEY_VK_RMENU:
return VK_RMENU;
case OBS_KEY_VK_BROWSER_BACK:
return VK_BROWSER_BACK;
case OBS_KEY_VK_BROWSER_FORWARD:
return VK_BROWSER_FORWARD;
case OBS_KEY_VK_BROWSER_REFRESH:
return VK_BROWSER_REFRESH;
case OBS_KEY_VK_BROWSER_STOP:
return VK_BROWSER_STOP;
case OBS_KEY_VK_BROWSER_SEARCH:
return VK_BROWSER_SEARCH;
case OBS_KEY_VK_BROWSER_FAVORITES:
return VK_BROWSER_FAVORITES;
case OBS_KEY_VK_BROWSER_HOME:
return VK_BROWSER_HOME;
case OBS_KEY_VK_VOLUME_MUTE:
return VK_VOLUME_MUTE;
case OBS_KEY_VK_VOLUME_DOWN:
return VK_VOLUME_DOWN;
case OBS_KEY_VK_VOLUME_UP:
return VK_VOLUME_UP;
case OBS_KEY_VK_MEDIA_NEXT_TRACK:
return VK_MEDIA_NEXT_TRACK;
case OBS_KEY_VK_MEDIA_PREV_TRACK:
return VK_MEDIA_PREV_TRACK;
case OBS_KEY_VK_MEDIA_STOP:
return VK_MEDIA_STOP;
case OBS_KEY_VK_MEDIA_PLAY_PAUSE:
return VK_MEDIA_PLAY_PAUSE;
case OBS_KEY_VK_LAUNCH_MAIL:
return VK_LAUNCH_MAIL;
case OBS_KEY_VK_LAUNCH_MEDIA_SELECT:
return VK_LAUNCH_MEDIA_SELECT;
case OBS_KEY_VK_LAUNCH_APP1:
return VK_LAUNCH_APP1;
case OBS_KEY_VK_LAUNCH_APP2:
return VK_LAUNCH_APP2;
case OBS_KEY_0xB8:
return 0xB8;
case OBS_KEY_0xB9:
return 0xB9;
case OBS_KEY_0xC1:
return 0xC1;
case OBS_KEY_0xC2:
return 0xC2;
case OBS_KEY_0xC3:
return 0xC3;
case OBS_KEY_0xC4:
return 0xC4;
case OBS_KEY_0xC5:
return 0xC5;
case OBS_KEY_0xC6:
return 0xC6;
case OBS_KEY_0xC7:
return 0xC7;
case OBS_KEY_0xC8:
return 0xC8;
case OBS_KEY_0xC9:
return 0xC9;
case OBS_KEY_0xCA:
return 0xCA;
case OBS_KEY_0xCB:
return 0xCB;
case OBS_KEY_0xCC:
return 0xCC;
case OBS_KEY_0xCD:
return 0xCD;
case OBS_KEY_0xCE:
return 0xCE;
case OBS_KEY_0xCF:
return 0xCF;
case OBS_KEY_0xD0:
return 0xD0;
case OBS_KEY_0xD1:
return 0xD1;
case OBS_KEY_0xD2:
return 0xD2;
case OBS_KEY_0xD3:
return 0xD3;
case OBS_KEY_0xD4:
return 0xD4;
case OBS_KEY_0xD5:
return 0xD5;
case OBS_KEY_0xD6:
return 0xD6;
case OBS_KEY_0xD7:
return 0xD7;
case OBS_KEY_0xD8:
return 0xD8;
case OBS_KEY_0xD9:
return 0xD9;
case OBS_KEY_0xDA:
return 0xDA;
case OBS_KEY_VK_OEM_8:
return VK_OEM_8;
case OBS_KEY_0xE0:
return 0xE0;
case OBS_KEY_VK_OEM_AX:
return VK_OEM_AX;
case OBS_KEY_VK_ICO_HELP:
return VK_ICO_HELP;
case OBS_KEY_VK_ICO_00:
return VK_ICO_00;
case OBS_KEY_VK_PROCESSKEY:
return VK_PROCESSKEY;
case OBS_KEY_VK_ICO_CLEAR:
return VK_ICO_CLEAR;
case OBS_KEY_VK_PACKET:
return VK_PACKET;
case OBS_KEY_0xE8:
return 0xE8;
case OBS_KEY_VK_OEM_RESET:
return VK_OEM_RESET;
case OBS_KEY_VK_OEM_JUMP:
return VK_OEM_JUMP;
case OBS_KEY_VK_OEM_PA1:
return VK_OEM_PA1;
case OBS_KEY_VK_OEM_PA2:
return VK_OEM_PA2;
case OBS_KEY_VK_OEM_PA3:
return VK_OEM_PA3;
case OBS_KEY_VK_OEM_WSCTRL:
return VK_OEM_WSCTRL;
case OBS_KEY_VK_OEM_CUSEL:
return VK_OEM_CUSEL;
case OBS_KEY_VK_OEM_ATTN:
return VK_OEM_ATTN;
case OBS_KEY_VK_OEM_FINISH:
return VK_OEM_FINISH;
case OBS_KEY_VK_OEM_COPY:
return VK_OEM_COPY;
case OBS_KEY_VK_OEM_AUTO:
return VK_OEM_AUTO;
case OBS_KEY_VK_OEM_ENLW:
return VK_OEM_ENLW;
case OBS_KEY_VK_ATTN:
return VK_ATTN;
case OBS_KEY_VK_CRSEL:
return VK_CRSEL;
case OBS_KEY_VK_EXSEL:
return VK_EXSEL;
case OBS_KEY_VK_EREOF:
return VK_EREOF;
case OBS_KEY_VK_PLAY:
return VK_PLAY;
case OBS_KEY_VK_ZOOM:
return VK_ZOOM;
case OBS_KEY_VK_NONAME:
return VK_NONAME;
case OBS_KEY_VK_PA1:
return VK_PA1;
case OBS_KEY_VK_OEM_CLEAR:
return VK_OEM_CLEAR;
/* TODO: Implement keys for non-US keyboards */
default:;
}
@ -740,7 +1075,8 @@ void obs_key_to_str(obs_key_t key, struct dstr *str)
scan_code |= 0x01000000;
}
if (scan_code != 0 && GetKeyNameTextW(scan_code, name, 128) != 0) {
if ((key < OBS_KEY_VK_CANCEL || key > OBS_KEY_VK_OEM_CLEAR) &&
scan_code != 0 && GetKeyNameTextW(scan_code, name, 128) != 0) {
dstr_from_wcs(str, name);
} else if (key != OBS_KEY_NONE) {
dstr_copy(str, obs_key_to_name(key));