1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
#!/usr/bin/env python3
# This is a simple example showing how you can send a key press event
# to XBMC in a non-queued fashion to achieve a button pressed down
# event i.e. a key press that repeats.
# The repeat interval is currently hard coded in XBMC but that might
# change in the future.
# NOTE: Read the comments in 'example_button1.py' for a more detailed
# explanation.
import os
from socket import *
import sys
if os.path.exists("../../lib/python"):
# try loading modules from source directory
sys.path.append("../../lib/python")
from xbmcclient import *
ICON_PATH = "../../icons/"
else:
# fallback to system wide modules
from kodi.xbmcclient import *
from kodi.defs import *
def main():
import time
import sys
host = "localhost"
port = 9777
addr = (host, port)
sock = socket(AF_INET,SOCK_DGRAM)
# First packet must be HELO and can contain an icon
packet = PacketHELO("Example Remote", ICON_PNG,
ICON_PATH + "/bluetooth.png")
packet.send(sock, addr)
# wait for notification window to close (in XBMC)
time.sleep(5)
# send a up key press using the xbox gamepad map "XG" and button
# name "dpadup" ( see PacketBUTTON doc for more details)
packet = PacketBUTTON(map_name="XG", button_name="dpadup")
packet.send(sock, addr)
# wait for a few seconds to see its effect
time.sleep(5)
# send a down key press using the raw keyboard code
packet = PacketBUTTON(code=0x28)
packet.send(sock, addr)
# wait for a few seconds to see its effect
time.sleep(5)
# send a right key press using the keyboard map "KB" and button
# name "right"
packet = PacketBUTTON(map_name="KB", button_name="right")
packet.send(sock, addr)
# wait for a few seconds to see its effect
time.sleep(5)
# that's enough, release the button. During release, button code
# doesn't matter.
packet = PacketBUTTON(code=0x28, down=0)
packet.send(sock, addr)
# ok we're done, close the connection
# Note that closing the connection clears any repeat key that is
# active. So in this example, the actual release button event above
# need not have been sent.
packet = PacketBYE()
packet.send(sock, addr)
if __name__=="__main__":
main()
|