Hotkeys в wine (можно ли?)

Вопросы настройки, запуск любых Windows-программ, кроме игр

Модератор: Модераторы разделов

NickNill
Сообщения: 115
ОС: ArchLinux

Hotkeys в wine

Сообщение NickNill »

Привет всем. У меня тут назрел вопрос - можно ли использовать глобальніе горячие клавиши в вайн?
Спасибо сказали:
Rainywind
Сообщения: 1

Re: Hotkeys в wine

Сообщение Rainywind »

Можно, конечно. Всё работает.
Спасибо сказали:
NickNill
Сообщения: 115
ОС: ArchLinux

Re: Hotkeys в wine

Сообщение NickNill »

если у вас работает то как? обьясните. к примеру у меня когда foobar свернут то его горячие клавиши не работают...
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Hotkeys в wine

Сообщение drBatty »

NickNill писал(а):
27.08.2009 17:46
если у вас работает то как? обьясните. к примеру у меня когда foobar свернут то его горячие клавиши не работают...

наверное никак. это от программы зависит - если-бы программисты foobar'а использовали-бы стандартный API...
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
FlySnake
Сообщения: 992
ОС: openSUSE

Re: Hotkeys в wine

Сообщение FlySnake »

drBatty писал(а):
27.08.2009 19:23
NickNill писал(а):
27.08.2009 17:46
если у вас работает то как? обьясните. к примеру у меня когда foobar свернут то его горячие клавиши не работают...

наверное никак. это от программы зависит - если-бы программисты foobar'а использовали-бы стандартный API...
Можно. Через xbindkeys. Где-то находил инструкцию по которой всё делал, но сейчас не найду. Суть в том что фубар понимает аргументы командной строки, например foobar2000.exe /stop и тд.
Создаём исполняемый файлик, например /usr/bin/foobar2000 (чтобы в $PATH было) с примерно таким содержанием

Код:

#!/bin/bash # set this to what's needed to run foobar. # for example, if you have binfmt_misc setup # for wine, something like this will work. # otherwise, "wine path-to-foobar" is what you want. fb2k="wine /home/flysnake/.wine/drive_c/foobar2000" canonicalise () { filename="${1}" # prefix replacement case "${1}" in /*) # absolute, nothing to do. ;; ~*) # home-relative and for some odd reason calling shell # didnt expand this already (for ex. it was quoted). filename="${HOME}/${filename}" ;; *) # relative path. filename="$(pwd)/${filename}" ;; esac # strip './' elements filename=$(echo "${filename}" | sed -e 's:/\./:/:g') # strip 'foo/../' elements filename=$(echo "${filename}" | sed -e 's:/[^/]\+/\.\./:/:g') # protect real backslashes filename=$(echo "${filename}" | sed -e 's/\\/\\\\/g') file="${filename}" unset filename } case "${1}" in -add) [[ -n ${2} ]] && canonicalise "${2}" ${fb2k}/foobar2000.exe /add "z:$file" & &>/dev/null echo "Action: adding Directory or Files \"${file}\" to foobar2000" ;; -addfiles) files=( "${@}" ) for (( i = 1 ; i < ${#} ; ++i )); do canonicalise "${files[$i]}" ${fb2k}/foobar2000.exe /add "z:${file}" & &>/dev/null echo "Action: adding $(echo ${file})" done echo "Result: added "$(( ${#}-1 ))" files to foobar2000" ;; -play) ${fb2k}/foobar2000.exe /play & &>/dev/null echo "Action: play Song in foobar2000" ;; -pause) ${fb2k}/foobar2000.exe /pause & &>/dev/null echo "Action: pause Song in foobar2000" ;; -playpause) ${fb2k}/foobar2000.exe /playpause & &>/dev/null echo "Action: play or pause Song in foobar2000" ;; -prev) ${fb2k}/foobar2000.exe /prev & &>/dev/null echo "Action: play previous Song in foobar2000" ;; -next) ${fb2k}/foobar2000.exe /next & &>/dev/null echo "Action: play next Song in foobar2000" ;; -rand) ${fb2k}/foobar2000.exe /rand & &>/dev/null echo "Action: play random Song in foobar2000" ;; -stop) ${fb2k}/foobar2000.exe /stop & &>/dev/null echo "Action: stop playing a Song in foobar2000" ;; -mute) ${fb2k}/foobar2000.exe /command:Volume\ mute & &>/dev/null echo "Action: mute foobar2000" ;; -volup) ${fb2k}/foobar2000.exe /command:Volume\ up & &>/dev/null echo "Action: raise Volume in foobar2000" ;; -voldown) ${fb2k}/foobar2000.exe /command:Volume\ down & &>/dev/null echo "Action: decrease Volume in foobar2000" ;; -hide) ${fb2k}/foobar2000.exe /hide & &>/dev/null echo "Action: hide foobar2000 window" ;; -show) ${fb2k}/foobar2000.exe /show & &>/dev/null echo "Action: show foobar2000 window" ;; -exit) ${fb2k}/foobar2000.exe /exit & &>/dev/null echo "Action: exit foobar2000" ;; -rescan) ${fb2k}/foobar2000.exe /command:"Rescan Media Library" & &>/dev/null echo "Action: Rescan foobar2000 Media Library" ;; -command-*) [[ -n ${1} ]] && command=${1##*command-} ${fb2k}/foobar2000.exe /command:"${command}" & &>/dev/null echo "Action: call foobar2000 with command \"$command\"" ;; -playlist_command-*) [[ -n ${1} ]] && command=${1##*command-} ${fb2k}/foobar2000.exe /playlist_command:"${command}" & &>/dev/null echo "Action: call foobar2000 with playlist command \"$command\"" ;; -playing_command-*) [[ -n ${1} ]] && command=${1##*command-} ${fb2k}/foobar2000.exe /playing_command:"${command}" & &>/dev/null echo "Action: call foobar2000 with playing command \"$command\"" ;; -help) echo "Using: foobar2000 [Command] Where Command can be on of these: -add -addfiles -play -pause -playpause -stop -next -prev -rand -mute -volup -voldown -hide -show -rescan -command-[fb2k command] -playlist_command-[fb2k playlist command] -playing_command-[fb2k playing command] -help" ;; *) if [[ -n ${1} ]]; then canonicalise "${1}" ${fb2k}/foobar2000.exe "z:${file}" & &>/dev/null echo "Action: start foobar2000 with file ${file}" else ${fb2k}/foobar2000.exe & &>/dev/null echo "Action: start foobar2000" fi ;; esac

И для хоткеев в ~/.xbindkeysrc

Код:

"foobar2000 -playpause" alt + x "foobar2000 -stop" alt + z "foobar2000 -next" alt + v "foobar2000 -prev" alt + c "foobar2000 -playpause" XF86AudioPlay "foobar2000 -stop" XF86AudioStop

Или любым другим способом повестить эти команды на клавиши.

Всё равботает, только с задержкой, но эта задержка сильно зависит от нагруженности системы и скорее всего на быстрых компах будет нормлаьно.
Спасибо сказали: