浏览代码

libobs: Add media key support for linux

Links up the xkb keysyms with the obs vk codes.

Fixes #7649
Kurt Kartaltepe 3 年之前
父节点
当前提交
a9641940cb
共有 2 个文件被更改,包括 45 次插入0 次删除
  1. 30 0
      libobs/obs-nix-wayland.c
  2. 15 0
      libobs/obs-nix-x11.c

+ 30 - 0
libobs/obs-nix-wayland.c

@@ -1061,6 +1061,21 @@ static obs_key_t obs_nix_wayland_key_from_virtual_key(int sym)
 		return OBS_KEY_NUM8;
 		return OBS_KEY_NUM8;
 	case XKB_KEY_KP_9:
 	case XKB_KEY_KP_9:
 		return OBS_KEY_NUM9;
 		return OBS_KEY_NUM9;
+
+	case XKB_KEY_XF86AudioPlay:
+		return OBS_KEY_VK_MEDIA_PLAY_PAUSE;
+	case XKB_KEY_XF86AudioStop:
+		return OBS_KEY_VK_MEDIA_STOP;
+	case XKB_KEY_XF86AudioPrev:
+		return OBS_KEY_VK_MEDIA_PREV_TRACK;
+	case XKB_KEY_XF86AudioNext:
+		return OBS_KEY_VK_MEDIA_NEXT_TRACK;
+	case XKB_KEY_XF86AudioMute:
+		return OBS_KEY_VK_VOLUME_MUTE;
+	case XKB_KEY_XF86AudioRaiseVolume:
+		return OBS_KEY_VK_VOLUME_DOWN;
+	case XKB_KEY_XF86AudioLowerVolume:
+		return OBS_KEY_VK_VOLUME_UP;
 	}
 	}
 	return OBS_KEY_NONE;
 	return OBS_KEY_NONE;
 }
 }
@@ -1607,6 +1622,21 @@ static int obs_nix_wayland_key_to_virtual_key(obs_key_t key)
 		return XKB_KEY_KP_8;
 		return XKB_KEY_KP_8;
 	case OBS_KEY_NUM9:
 	case OBS_KEY_NUM9:
 		return XKB_KEY_KP_9;
 		return XKB_KEY_KP_9;
+
+	case OBS_KEY_VK_MEDIA_PLAY_PAUSE:
+		return XKB_KEY_XF86AudioPlay;
+	case OBS_KEY_VK_MEDIA_STOP:
+		return XKB_KEY_XF86AudioStop;
+	case OBS_KEY_VK_MEDIA_PREV_TRACK:
+		return XKB_KEY_XF86AudioPrev;
+	case OBS_KEY_VK_MEDIA_NEXT_TRACK:
+		return XKB_KEY_XF86AudioNext;
+	case OBS_KEY_VK_VOLUME_MUTE:
+		return XKB_KEY_XF86AudioMute;
+	case OBS_KEY_VK_VOLUME_DOWN:
+		return XKB_KEY_XF86AudioRaiseVolume;
+	case OBS_KEY_VK_VOLUME_UP:
+		return XKB_KEY_XF86AudioLowerVolume;
 	default:
 	default:
 		break;
 		break;
 	}
 	}

+ 15 - 0
libobs/obs-nix-x11.c

@@ -673,6 +673,21 @@ static int get_keysym(obs_key_t key)
 	case OBS_KEY_MOUSE5:
 	case OBS_KEY_MOUSE5:
 		return MOUSE_5;
 		return MOUSE_5;
 
 
+	case OBS_KEY_VK_MEDIA_PLAY_PAUSE:
+		return XF86XK_AudioPlay;
+	case OBS_KEY_VK_MEDIA_STOP:
+		return XF86XK_AudioStop;
+	case OBS_KEY_VK_MEDIA_PREV_TRACK:
+		return XF86XK_AudioPrev;
+	case OBS_KEY_VK_MEDIA_NEXT_TRACK:
+		return XF86XK_AudioNext;
+	case OBS_KEY_VK_VOLUME_MUTE:
+		return XF86XK_AudioMute;
+	case OBS_KEY_VK_VOLUME_DOWN:
+		return XF86XK_AudioRaiseVolume;
+	case OBS_KEY_VK_VOLUME_UP:
+		return XF86XK_AudioLowerVolume;
+
 	/* TODO: Implement keys for non-US keyboards */
 	/* TODO: Implement keys for non-US keyboards */
 	default:;
 	default:;
 	}
 	}