Переназначить ключ «следующая песня» в Ubuntu для работы с spotify и wine

7088
Daniel T. Magnusson

Я хочу изменить песню в spotify с помощью глобального ключа в Ubuntu. Это возможно на окнах с помощью специальной клавиши на клавиатуре «следующая песня» (?)

Как мне переназначить ключ в Ubuntu (здесь нет кнопки «следующая песня»), чтобы он работал как кнопка «следующая песня»? как "Ctrl + правая клавиша".

И как я могу сделать, чтобы эта работа с spotify, который работает через вино?

В основном я хочу знать, что такое код ascii для кнопки «следующая песня», и как мне сопоставить ее с комбинацией клавиш в Ubuntu. И, надеюсь, он без проблем направит эту команду через вино.

Редактировать: у меня нет кнопки «следующая песня» на машине с Ubuntu.

5

4 ответа на вопрос

3
Kevin

Для Ubuntu теперь есть « Spotify для Linux ». Для сопоставления сочетания клавиш с «следующей песней» может помочь dconf-editor ( см. Здесь ). После того, как сопоставление клавиш для «следующей песни» выполнено, появляется замечательная оболочка Spotify для интеграции медиа-ключей, написанная Джоном Ризом.

РЕДАКТИРОВАТЬ: Spotify для Linux теперь поддерживает медиа-ключи.

3
qboileau

Или jbonney нашел довольно аккуратное решение, используя dbus-send здесь, в его сущности

Или если вы спешите

"dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause" XF86AudioPlay "dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Stop" XF86AudioStop "dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Next" XF86AudioNext "dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Previous" XF86AudioPrevious 
Ты мужчина! Snow 6 лет назад 0
1
quack quixote

Используйте xev(средство просмотра событий X), чтобы определить, какой код клавиши отправляется при нажатии этой клавиши. Затем вы можете переназначить ключ в утилите сопоставления клавиш любой системы, которую вы используете (Gnome, KDE, bare X и т. Д.).

В моей системе Debian xevустанавливается вместе с x11-utilsпакетом, поэтому он, вероятно, включен в типичную установку Ubuntu на рабочем столе.

Пример использования:

$ xev [example keypress: right option key on an apple USB keyboard]  KeyPress event, serial 33, synthetic NO, window 0x1200001, root 0x2e, subw 0x0, time 122600873, (-49,299), root:(679,325), state 0x0, keycode 255 (keysym 0xffec, Super_R), same_screen YES, XLookupString gives 0 bytes: XmbLookupString gives 0 bytes: XFilterEvent returns: False  KeyRelease event, serial 34, synthetic NO, window 0x1200001, root 0x2e, subw 0x0, time 122600971, (-49,299), root:(679,325), state 0x0, keycode 255 (keysym 0xffec, Super_R), same_screen YES, XLookupString gives 0 bytes: XFilterEvent returns: False 
Спасибо за ответ, отчасти проблема в том, что у меня нет кнопки «Следующая песня» на этом компьютере, поэтому я не могу узнать, какой код ключа отправлен мне. Daniel T. Magnusson 15 лет назад 0
Ack! извини, я неправильно понял твой вопрос. оставлю этот ответ, поскольку он может помочь, но вы действительно ищете подробности об утилитах сопоставления клавиш. quack quixote 15 лет назад 0
1
Ben Kraft

Для этого я использую следующий скрипт bash, который я написал с использованием различных команд, заимствованных из других источников. Вы просто просите функцию «playpause», но я подумал, что я мог бы также включить все это. Часть, которую вы хотите:

#!/bin/bash  # Spotify Launch Script by Ben Kraft  # Borrows some commands from Spotify Control by Tommy Matilla: # http://sites.google.com/site/tommymattila/home/spotifycontrol # which itself is based on Stuart Colville's # http://muffinresearch.co.uk/archives/2009/10/22/ubuntu-lock-screen-and-pause-spotify/  # Requires wmctrl and xvkbd  WP="$HOME/.wine" SPATH="$HOME/.wine/drive_c/Program Files/Spotify/spotify.exe" TITLE=$(wmctrl -xl | grep -o -e "spotify\.exe\.Wine.*$" | grep -o -e "Spotify.*$") ACTIVEWIN=$(wmctrl -va ":ACTIVE:" 2>&1 | grep -o -e "0x.*$")  sendkeys () { wmctrl -xa "spotify.exe.Wine" || return 1 xvkbd -q -delay 100 -text "$1" wmctrl -ia $ACTIVEWIN }  if [ -z $TITLE ] ; then echo "Spotify is not running! exit 1 else sendkeys '\ ' fi exit 0 

Короче говоря, он используется wmctrlдля перемещения в рабочую область, в которой включен Spotify, xvkbdдля отправки нажатия клавиши пробела в Spotify, а затем wmctrlдля возврата назад.

Чтобы его использовать, сохраните его в файле, отметьте исполняемый файл (в диалоговом окне прав доступа к файлу), а затем с помощью диспетчера настроек CompizConfig добавьте его в команды. (Поставьте bash /path/to/scriptпервое поле на вкладке «Команды», затем добавьте привязку ключа на второй вкладке. Это может быть любой ключ, который вы хотите использовать.) Вам понадобится wmctrlи xvkbdустановил; найдите их в программном центре Ubuntu.

Весь сценарий, который предоставляет некоторые другие полезные функции, такие как переход к предыдущему или следующему треку и отображение названия песни, приведен ниже. Вы используете его так же, как приведенный выше фрагмент, за исключением того, что вы должны поместить его bash /path/to/script --optionв командное поле, где --optionможет быть любая из вещей, перечисленных в сценарии.

#!/bin/bash  # Spotify Launch Script by Ben Kraft  # Borrows some commands from Spotify Control by Tommy Matilla: # http://sites.google.com/site/tommymattila/home/spotifycontrol # which itself is based on Stuart Colville's # http://muffinresearch.co.uk/archives/2009/10/22/ubuntu-lock-screen-and-pause-spotify/  # Requires wmctrl and xvkbd # Usage: USAGE=" usage: spotify [OPTIONS]  OPTIONS: --play: Starts Spotify playing if it isn't already --pause: Pauses Spotify if it isn't already --playpause: Toggles Spotify between playing and pausing --prev: Plays the previous song --next: Plays the next song --display: Prints the currently playing song and artist to stdout --notify-send: Use only *after* --display; also pops up a notification with currently playing song and artist --uri URI: tells Spotify to display URI (e.g. a playlist or user).  With no options, this script will kill a currently running instance of spotify if there is one. With --uri, it starts Spotify iff it isn't running. With any other option, it will return 1 if Spotify is not running. "  WP="$HOME/.wine" SPATH="$HOME/.wine/drive_c/Program Files/Spotify/spotify.exe" TITLE=$(wmctrl -xl | grep -o -e "spotify\.exe\.Wine.*$" | grep -o -e "Spotify.*$") ACTIVEWIN=$(wmctrl -va ":ACTIVE:" 2>&1 | grep -o -e "0x.*$")  sendkeys () { wmctrl -xa "spotify.exe.Wine" || return 1 xvkbd -q -delay 100 -text "$1" wmctrl -ia $ACTIVEWIN }  if [ $# -eq 0 ] ; then if pgrep spotify.exe &>/dev/null ; then killall spotify.exe fi exec env WINEPREFIX="$WP" wine "$SPATH" elif [ "$1" == "--uri" ] ; then shift exec env WINEPREFIX="$WP" wine "$SPATH" /uri "$@" elif [ -z "$TITLE" ] ; then echo "Spotify is not running" >&2 if [ "$@" = "--display --notify-send" ] ; then notify-send "Spotify is not running" fi exit 1 else case "$1" in --playpause) #toggles sendkeys '\ ' ;;  --next) sendkeys '\C\[Right]' ;;  --prev) sendkeys '\C\[Left]' ;;  --pause) #pauses if playing; does nothing if not if [ -n "$" ] ; then sendkeys '\ ' fi ;;  --play) #plays if paused; does nothing if not if [ -z "$" ] ; then sendkeys '\ ' fi ;;  --display) if [ -n "$" ] ; then OUT1="Now Playing" OUT2="$" else OUT1="Spotify paused." OUT2="" fi echo "$OUT" if [ "$#" -ge 2 ] && [ $2 == "--notify-send" ] ; then notify-send "$OUT1" "$OUT2" fi ;; *) echo "$USAGE" exit 2 ;; esac fi  exit 0