আমি একটি উইমোট সংযোগ করতে চাই। আমি ন্যাটি চালাচ্ছি এবং আমার উইমোটের সাথে একটি অডিও প্লেয়ার নিয়ন্ত্রণ করতে চাই। এটা কি সম্ভব?
আমি একটি উইমোট সংযোগ করতে চাই। আমি ন্যাটি চালাচ্ছি এবং আমার উইমোটের সাথে একটি অডিও প্লেয়ার নিয়ন্ত্রণ করতে চাই। এটা কি সম্ভব?
উত্তর:
সম্পাদনা করুন : রিনজউইন্ড আমাকে " উইকান " নামে একটি লঞ্চপ্যাড প্রকল্পে আমন্ত্রণ জানাল । স্পষ্টতই এটি একটি সূচক অ্যাপলেট হিসাবে প্রয়োগ করা হয়েছে এবং আপনার উইআইআই-ক্রিয়াগুলি কাস্টমাইজ করার অনুমতি দেয়। আপনি উদাহরণস্বরূপ amarok -t
একটি wiibutton আবদ্ধ করতে পারেন।
আপনি ভাগ্যবান, এবং আপনি কত জানেন না। এটি আমাকে কিছুটা সময় এবং গবেষণা নিয়েছে তবে: আমি কিছুটা আগে করার জন্য একটি স্ক্রিপ্ট লিখেছিলাম। এটি আমারোক এবং টোটেমের সাথে কাজ করে, যদিও অন্যান্য খেলোয়াড়কে নিয়ন্ত্রণ করার জন্য এটি সহজেই সংশোধন করা যেতে পারে (শর্ত থাকে যে তাদের একটি কমান্ড লাইন ইন্টারফেস রয়েছে)। একসাথে কয়েকটি মন্তব্য লেখার জন্য আমাকে কয়েক মিনিট দিন। তারপরে আমি এই উত্তরটি সম্পাদনা করব এবং এটি পোস্ট করব।
আপনার পাইথন এবং পাইথন-সিভিড / sudo apt-get install python-cwiid
ইনস্টল করা দরকার। অপেক্ষার সময় আপনি এটি করতে পারেন।
স্ক্রিপ্ট নীচে। একটি টার্মিনাল এ এটি চালান।
#!/usr/bin/python
# indent-mode: spaces, indentsize: 4, encoding: utf-8
# © 2011 con-f-use@gmx.net.
# Use permitted under MIT license:
# http://www.opensource.org/licenses/mit-license.php (NO WARRANTY IMPLIED)
"""A Wiimote script to control totem and amarok under Ubuntu.
Provides a rudimentary interface to:
-Check battery status of the Wiimote.
-Switch an led on the Wiimote.
-Start Amarok.
-Pause/contiue playing.
-Skip to next/last track.
-Control the system volume over pulseaudio
Needs the package 'python-cwiid', 'amarok' and or 'totem' to be installed.
Globals:
wiimote -- the wiimote object
led -- the status of the led (on/off)
"""
import cwiid
import sys
import os
def main():
"""PC-side interface handles interaction between pc and user.
b -- battery status
l -- toggle led
q -- quit
h -- print help
"""
global wiimote
connect_wiimote()
#Print help text ont startup
print 'Confirm each command with ENTER.'
hlpmsg = 'Press q to quit\n'\
'b for battery status\n'\
'l to toggle the led on/off\n'\
'h or any other key to display this message.'
print hlpmsg
#Main loop for user interaction
doLoop = True
while doLoop:
c = sys.stdin.read(1)
if c == 'b': # battery status
state = wiimote.state
bat = int(100.0 * state['battery'] / cwiid.BATTERY_MAX)
print bat
elif c == 'l': # toggle led
toggle_led()
elif c == 'q': # exit program
doLoop = False
elif c == '\n': # ignore newlines
pass
else: # print help message when no valid command is issued
print hlpmsg
#Close connection and exit
wiimote.close()
def connect_wiimote():
"""Connets your computer to a Wiimote."""
print 'Put Wiimote in discoverable mode now (press 1+2)...'
global wiimote
while True:
try:
wiimote = cwiid.Wiimote(#add address of Wiimote here for speedup)
break
except:
continue
wiimote.mesg_callback = callback
#Set Wiimote options
global led
led = True
wiimote.led = cwiid.LED1_ON
wiimote.rpt_mode = cwiid.RPT_BTN
wiimote.enable(cwiid.FLAG_MESG_IFC)
def callback(mesg_list, time):
"""Handels the interaction between Wiimote and user.
A and B together -- toggle led
A -- play/pause
up / down -- fast forward / backward
right / left -- next / previous trakc
+ / - -- increase / decreas volume
"""
for mesg in mesg_list:
# Handle Buttonpresses - add hex-values for simultaneous presses
# Buttons not listed: 0x4 - B, 0x1 - 2, 0x2 - 1 | just babytown frolics
if mesg[0] == cwiid.MESG_BTN:
if mesg[1] == 0x8: # A botton
player_control('playpause')
elif mesg[1] == 0xC: # A and B together
toggle_led()
elif mesg[1] == 0x800: # Up botton
player_control('ffwd')
elif mesg[1] == 0x100: # Left botton
player_control('lasttrack')
elif mesg[1] == 0x200: # Right botton
player_control('nexttrack')
elif mesg[1] == 0x400: # Down botton
player_control('fbwd')
elif mesg[1] == 0x10: # Minus botton
change_volume(-1)
elif mesg[1] == 0x1000: # Plus botton
change_volume(1)
elif mesg[1] == 0x80: # home botton
shut_down()
# Handle errormessages
elif mesg[0] == cwiid.MESG_ERROR:
global wiimote
wiimote.close()
connect_wiimote()
def change_volume(change):
"""Changes system's master volume."""
cmd = "amixer get Master | grep 'Front Left' | grep -oP '(?<=Playback\ )\d+'"
fin,fout = os.popen4(cmd)
currVol = int( fout.read() )
newVol = currVol + change
os.system( "amixer set Master "+str(newVol) )
def toggle_led():
"""Toggles first led on Wiimote on/off."""
global led
if led == True:
led = False
wiimote.led = 0
else:
led = True
wiimote.led = cwiid.LED1_ON
def player_control(action):
"""Controls Amarok or Totem - depending on wich one is running.
Totem takes precedence over Amarok if running. If none is running, Amarok
will be started ant take the command.
"""
print action
# Check if totem is running
cmd = "ps -A | grep -oP 'totem'"
fin,fout = os.popen4(cmd)
isTotem = fout.read()
isTotem = isTotem.find('totem') != -1
# Do the actual player action
if action == 'nexttrack':
if isTotem:
cmd = "totem --next"
else:
cmd = "amarok -f"
elif action == 'lasttrack':
if isTotem:
cmd = "totem --previous"
else:
cmd = "amarok -r"
elif action == 'playpause':
if isTotem:
cmd = "totem --play-pause"
else:
cmd = "amarok -t"
elif action == 'ffwd':
if isTotem:
cmd = "totem --seek-fwd"
elif action == 'fbwd':
if isTotem:
cmd = "totem --seek-bwd"
os.system(cmd)
main()
এছাড়াও একটি জিইউআই প্রোগ্রাম রয়েছে যা সিস্টেম ট্রেতে বসে " ওয়াইকান " " বলে। আমি ১১.০৪ (নাটি) এর আগে ওবুন্টুর পূর্ববর্তী সংস্করণগুলিতে ব্যবহার করতাম তবে এখন https://launchpad.net/wiican এ পাওয়া পিপিএ দিয়ে এটি কীভাবে ইনস্টল করবেন তা আমি মনে করতে পারছি না
এটি আপনার ইচ্ছামতো বোতামগুলি সংযুক্ত করে এবং কনফিগার করে, তবুও নিখুঁত নয় তবে আমি এটিকে দুর্দান্ত বলব
কীভাবে ইনস্টল করতে হবে তা জানতে পেরে পোস্টটি আপডেট করবে।
সম্পাদনা করুন: আমি এই লিঙ্কে একটি প্যাকেজ সন্ধান করতে সক্ষম হয়েছিল