Exemplo n.º 1
0
def main():
    v = CharsView(frame=(0, 0, 320, 40))
    if keyboard.is_keyboard():
        keyboard.set_view(v, 'current')
    else:
        v.name = 'Keyboard Preview'
        v.present('sheet')
Exemplo n.º 2
0
def input():
    inputdata = request.forms.getunicode(
        'input')  # 以unicode编码获取提交的数据,否则中文将会是乱码
    print(inputdata)  # 输出以便在控制台调试时观察
    if keyboard.is_keyboard():  # 判断是否是在键盘中运行
        keyboard.insert_text(inputdata)  # 将提交的数据插入当前光标位置
    return redirect('/')  # 重定向到输入页面,今后将前端页面的数据提交以Ajax异步提交来实现以后可省去重定向
Exemplo n.º 3
0
def main():
	if not keyboard.is_keyboard():
		return

	text = keyboard.get_selected_text()

	clipboard.set(text)
Exemplo n.º 4
0
def main():
	if not keyboard.is_keyboard():
		return

	delete_selection()
	move_to_first_letter_of_line()
	delete_line()
Exemplo n.º 5
0
def main():
    if not keyboard.is_keyboard():
        return

    text = clipboard.get()
    if not text:
        return

    keyboard.insert_text(text)
Exemplo n.º 6
0
def main():
	if not keyboard.is_keyboard():
		return

	text = keyboard.get_selected_text()

	clipboard.set(text)
	if text:
		# clear selection
		keyboard.insert_text(' ')
		keyboard.backspace(1)
Exemplo n.º 7
0
def main():
	if not keyboard.is_keyboard():
		return

	text = keyboard.get_selected_text()

	if not text:
		dialogs.hud_alert('No text selected', 'error')
		return

	new_text = text.title()
	keyboard.insert_text(new_text)
Exemplo n.º 8
0
def main():
    if not keyboard.is_keyboard():
        return

    text = keyboard.get_selected_text()

    if not text:
        dialogs.hud_alert('No text selected', 'error')
        return

    newText = quote(text, safe=':/')
    keyboard.insert_text(newText)
Exemplo n.º 9
0
def main():
    if not keyboard.is_keyboard():
        return

    selected_text = keyboard.get_selected_text()
    if selected_text:
        keyboard.backspace(1)

    tpl = keyboard.get_input_context()
    left = tpl[0]
    delete_count = len(left)

    keyboard.backspace(delete_count)
Exemplo n.º 10
0
def main():
    if not keyboard.is_keyboard():
        return

    selected_text = keyboard.get_selected_text()
    if selected_text:
        keyboard.backspace(1)

    tpl = keyboard.get_input_context()
    right = tpl[1]
    delete_count = len(right)
    keyboard.move_cursor(delete_count)
    keyboard.backspace(delete_count)
Exemplo n.º 11
0
def main():
    if not keyboard.is_keyboard():
        return

    text = keyboard.get_selected_text()

    if not text:
        dialogs.hud_alert('No text selected', 'error')
        return

    url = f'shortcuts://run-shortcut?name=テキストを連携&input={text}'

    newUrl = quote(url, safe=':/')
    webbrowser.open(newUrl)
Exemplo n.º 12
0
def main():
    if PythonistaVersion >= 3.3:
        if keyboard.is_keyboard():
            v = BrailleKeyboardInputAccessoryViewForTextField()
            v.custom_keyboard = True
            keyboard.set_view(v, 'expanded')
            return
    # Before Pythonista supporting keyboard or run in Pythonista app
    w, h = ui.get_screen_size()
    mv = ui.View()
    mv.name = 'Test keyboard in Pythonista'
    mv.background_color = 'white'
    tf = ui.TextField()
    tf.text = ''
    tf.frame = (2, 2, w - 4, 32)
    mv.add_subview(tf)
    tfo = ObjCInstance(
        tf).textField()  # UITextField is subview of ui.TextField
    kv = ui.View()

    kv.frame = (0, 0, w, min(363, h * (3 / 5)))
    unused = ' unused, only to simulate height of custom keyboard with Pythonista 3.3'
    kv.add_subview(ui.Label(frame=(0, 0, w, kv.height / 7), text=unused))
    kv.background_color = 'lightgray'

    frame = (0, kv.height / 7, w, kv.height * 5 / 7)
    v = BrailleKeyboardInputAccessoryViewForTextField(frame=frame)
    v.custom_keyboard = False
    kv.add_subview(v)
    kv.add_subview(
        ui.Label(frame=(0, v.y + v.height, w, kv.height / 7), text=unused))

    tfo.setInputView_(ObjCInstance(kv))
    v.tf = tf
    v.tfo = ObjCInstance(
        tf).textField()  # UITextField is subview of ui.TextField

    # view of keyboard
    retain_global(
        v
    )  # see https://forum.omz-software.com/topic/4653/button-action-not-called-when-view-is-added-to-native-view

    #  remove undo/redo/paste BarButtons above standard keyboard
    tfo.inputAssistantItem().setLeadingBarButtonGroups(None)
    tfo.inputAssistantItem().setTrailingBarButtonGroups(None)

    mv.present('full_screen')
    tf.begin_editing()
    mv.wait_modal()
Exemplo n.º 13
0
    def button_action(self, sender):
        if sender.title == '⏎':
            self.bw = 125
            FILE = open(f'Options.txt', "r+", encoding="utf-8")
            for line in FILE:
                line = line.replace('\n', '')
                self.dict[line] = 'Options'
            self.Rebuild(self.dict, 125)
            return
        if sender.title == 'Faces':
            self.bw = 125
            FILE = open(f'{sender.title}.txt', "r+", encoding="utf-8")
            for line in FILE:
                line = line.replace('\n', '')
                if line.strip() == '':
                    continue

                self.dict[line] = line
            self.Rebuild(self.dict, 40)
            return
        if sender.name == 'Options':
            self.bw = 125
            FILE = open(f'{sender.title}.txt', "r+", encoding="utf-8")
            for line in FILE:
                line = line.replace('\n', '')
                if line.strip() == '':
                    continue
                if ':' in line:
                    k, v = line.split(':')
                    self.dict[k] = '⏎' + v
                else:
                    self.dict[line[0]] = '⏎' + line
            self.Rebuild(self.dict, 40)
            return

        if sender.name == sender.title:
            self.bw = 40
            if keyboard.is_keyboard():
                keyboard.insert_text(sender.name)
                return
            else:
                print('Keyboard input:', sender.title)
                return
        if ':' not in sender.name:
            self.dict.clear()
            for char in sender.name:
                self.dict[char] = char
            self.Rebuild(self.dict, 40)
            return
Exemplo n.º 14
0
def main():
    if not keyboard.is_keyboard():
        return

    dics = get_dics('Snippet Regular Expression.txt')

    items = [d['title'] + '  ' + d['desc'] for d in dics]
    selected_item = dialogs.list_dialog('select', items)
    if not selected_item:
        return

    idx = items.index(selected_item)

    new_text = dics[idx]['title']
    keyboard.insert_text(new_text)
Exemplo n.º 15
0
def main():
	if not keyboard.is_keyboard():
		return

	selected_text = keyboard.get_selected_text()
	left, right = keyboard.get_input_context()

	delete_selection()
	move_to_first_letter_of_line()
	delete_line()

	# if column == 0, returns '\n'
	if left == '\n':
		left = ''

	cut_text = left + selected_text + right + '\n'
	clipboard.set(cut_text)
Exemplo n.º 16
0
def main():
    if not keyboard.is_keyboard():
        print('This script is meant to be run in the Pythonista keyboard.')
        return

    # (phrase, shortcut)
    all = keyboard.get_text_replacements()
    snippets = [s[0] for s in all if s[1] == '☻']
    snippets.sort()

    if len(snippets) == 0:
        dialogs.hud_alert('No Text Replacements')
        return

    selected = dialogs.list_dialog('Text Replacements', snippets)
    if selected:
        keyboard.insert_text(selected)
def run_search():
    v['imageview1'].image = ui.Image('./src/logo.png')
    now = datetime.datetime.now()
    strnow = now.strftime('%H:%M:%S')
    v['nowtime'].text = strnow

    uitime = v['datepicker'].date
    minutes = uitime.strftime('%M')
    iminutes = int(minutes)
    if 0 < iminutes < 30:
        v['datepicker'].date = v['datepicker'].date + datetime.timedelta(
            minutes=30 - iminutes)
    elif 30 < iminutes < 60:
        v['datepicker'].date = v['datepicker'].date + datetime.timedelta(
            minutes=60 - iminutes)

    if keyboard.is_keyboard() == True:
        keyboard.set_view(v)
    else:
        v.present('sheet')
Exemplo n.º 18
0
    def __init__(self, server, localIP, port):
        self.server = server

        self.name = 'Keyboard Preview'  # 仅在调试窗口中才看到窗口名
        self.flex = 'WHTBLF'  # 尺寸边距都设为自动,以便填充满整个键盘

        # 创建iplabel以显示当前服务器运行的ip及端口
        iplabel = ui.Label()
        iplabel.flex = 'WHTBLF'
        iplabel.text = "请在浏览器打开:" + localIP + ":" + str(port)
        iplabel.background_color = "#ffffff"
        iplabel.alignment = ui.ALIGN_CENTER

        # 之后还可以继续开发更多组件件加入主窗口
        self.add_subview(iplabel)

        # 判断是否是在键盘中运行
        if keyboard.is_keyboard():
            keyboard.set_view(self, 'expanded')
        else:
            # 当在pythonista主应用中调试时启动:
            self.frame = (0, 0, 500, 200)
            self.present('sheet')
Exemplo n.º 19
0
def main():
    if not keyboard.is_keyboard():
        return

    text = keyboard.get_selected_text()

    if not text:
        dialogs.hud_alert('No text selected', 'error')
        return

    snippets = get_dics('Surround Text.txt')
    selected = dialogs.list_dialog('select Replacements', snippets)
    if not selected:
        return

    m = re.match(r'^(.*)〜(.*)$', selected)
    if not m:
        return

    g = m.groups()
    left = g[0]
    right = g[1]
    newText = left + text + right
    keyboard.insert_text(newText)
def run_pass_auto():
    global oldimg_url
    global oldtweet_id
    global oldtweet_name
    global oldtweet_text
    global exrep
    global switch
    global new
    global error_script
    
    global alpha_mode,img_mode,speed
    try:
        with open('./.option.csv', 'r', encoding='utf8') as (f):
            reader = csv.reader(f)
            for i in reader:
                alpha_mode = i[0]
                img_mode = i[1]
                sleep_time = 0.21-float(i[2])*0.2
        print("***設定読み込み完了***")
        print("****オート起動****")

    except:
        console.alert('Pythonistaで先に設定して下さい。')
        sys.exit(3)
    
    try:
        f = open('.tw.txt', 'r')
        for row in f:
            settingtxt = row.strip()
        f.close()
        codes = re.split('#', settingtxt)
        au = convert_from_hash(codes[4])
    except:
        print('Twitter連携が無効です\n')
        sys.exit()
    if not au==str(send_code*33):
        print('購入者コードが無効です\n')
        sys.exit()
    
    userid = url2id(url)
    
    add_api(1,userid)
    for i in range(2,6):
        tt = threading.Thread(target=add_api, args=(i,userid))
        tt.start()
        time.sleep(0.15)
    tt.join()
    #print("****連携済み"+str(len(tw_api))+"個****")
    
    start_time = time.time()
    stpcount = 0
    
    if len(tw_api) == 0:
        print("連携不足エラー")
        sys.exit()

    old = tweet_get(tw_api[0], userid, True)
    while old[1] == 'err':
        old = tweet_get(tw_api[0], userid, True)
        stpcount += 1
        if stpcount == 5:
            print("ツイート取得できませんでした。")
            sys.exit()
    oldtweet_id = old[0]
    oldtweet_text = old[1]
    oldtweet_name = old[2]
    oldimg_url = old[3]
    print(oldtweet_name + 'のパスツイ待機中•••')
    new = tweet_get(tw_api[0], userid)
    mtweet_id = new[0]
    mtweet_text = new[1]
    mtweet_name = new[2]
    mimg_url = new[3]
    elapsed_time = 0
    api_switch = 0
    loop_count = 0
    list_get = False
    while switch == 0:
        api_switch = api_switch%len(tw_api)
        if list_switch:
            list_get = not list_get
        t = threading.Thread(target=t_tweet_get, args=(tw_api[api_switch], userid, list_get))
        t.start()
        mtweet_id = new[0]
        mtweet_text = new[1]
        mtweet_name = new[2]
        mimg_url = new[3]
        if not keyboard.is_keyboard():
            print(mtweet_text)
        flag = check_passtweet(mtweet_text)
        if flag:
            ps = pass_auto(mtweet_id, mtweet_text, mimg_url)
            if keyboard.is_keyboard():
                keyboard.backspace(10)
                keyboard.insert_text(ps)
                keyboard.insert_text('\n')
            print('****取得成功****\n' + ps)
            sound.play_effect('arcade:Coin_2', 0.10)
            switch = 1
            try:
                mememe=tw_api[0].me()
                nowt = str(datetime.datetime.now())
                error_script =  "atweet_id x"+str(error_script.count('atweet_id'))+"   ltweet_id x"+str(error_script.count('ltweet_id'))+error_script
                error_script = re.sub("local variable 'atweet_id' referenced before assignment","",error_script)
                error_script = re.sub("local variable 'ltweet_id' referenced before assignment","",error_script)
                stext = nowt[:nowt.find(".")]+'\nリストスイッチ:'+str(list_switch)+"\nエラー文\n"+error_script+"\nuser:@"+mememe.screen_name+"\nsleeptime:"+str(sleep_time)+"\ntweet:"+oldtweet_name+"\n"+oldtweet_text+"\n処理前テキスト\n"+mtweet_text+"\n処理後テキスト\n"+ps
                stext = urllib.parse.quote(stext)
                requests.get()
            except Exception as e:
                #print(e)
                pass
        api_switch+=1
        time.sleep(sleep_time)
Exemplo n.º 21
0
def main():
    if not keyboard.is_keyboard():
        return

    keyboard.move_cursor(1)
    keyboard.backspace(1)
Exemplo n.º 22
0
def main():
    if not keyboard.is_keyboard():
        return

    url = 'copied://'
    webbrowser.open(url)
def run(ar1="",ar2="",ar3="1"):
	if keyboard.has_full_access()==False:
		console.hud_alert("フルアクセスを有効にしてください。","error")
		sys.exit()
	if __file__.count('Documents/XAUTO/master.py')==0:
		console.hud_alert("ファイル名もしくはDL場所が異なります。","error")
		sys.exit()
	
	impc=0
	try:
		import requests_oauthlib
	except:
		shutil.move('./lib/oauthlib',libdir)
		impc += 1
	try:
		import tweepy
	except:
		shutil.move('./lib/tweepy',libdir)
		impc += 1
	try:
		from requests_oauthlib import OAuth1Session
		from urllib.parse import parse_qsl
	except:
		shutil.move('./lib/requests_oauthlib',libdir)
		shutil.move('./lib/socks.py',libdir)
		shutil.move('./lib/sockshandler.py',libdir)
		impc += 1
	if impc > 0:
		print("+++++++++++++++\nタスクを切って\nPythonistaを再起動してください。\n+++++++++++++++")
		import sys
		sys.exit()	
	
	
	if not keyboard.is_keyboard():
		try:
			f = open('.tw.txt', 'r')
			for row in f:
				settingtxt = row.strip()
			f.close()
			codes = re.split('#', settingtxt)
			CK = convert_from_hash(codes[0])
			CS = convert_from_hash(codes[1])
			AT = convert_from_hash(codes[2])
			AS = convert_from_hash(codes[3])
			auth = tweepy.OAuthHandler(CK, CS)
			auth.set_access_token(AT, AS)
			tw_api = tweepy.API(auth)
			abc=tw_api.me()
			if not ar3 == "1":
				import sys
				import firstset
				firstset.link(ar1,ar2,ar3)
				sys.exit()
		except Exception as e:
			#print(e)
			import sys
			import firstset
			if len(ar1)==0:
				firstset.run_ui(e)
				sys.exit()
			else:
				firstset.link(ar1,ar2)
				sys.exit()
	
		import mainset
		mainset.main()
	else:
		import xauto
Exemplo n.º 24
0
def main():
    text = keyboard.get_selected_text()

    text = re.sub("^&nbsp;", "", text)
    text = re.sub("&nbsp;<br>$", "", text)
    text = re.sub("<br>$|^<br>", "", text)
    text = re.sub("<u>|</u>", "", text)

    text = re.sub(
        "<td>|</td>|<tr>|</tr>|<tbody>|</tbody>|<table>|</table>|{|}", "",
        text)
    text = re.sub(r"(\D)(\d|\d\S\d|\d\S\S\S\d)(\s|$|&nbsp;|,\D|;|<)",
                  r"\1<sup>\2</sup>\3", text)
    '''text = re.sub(" |&nbsp;","",text)'''

    text = re.sub(" - | -- | –– ", " — ", text)
    text = re.sub("--|––", "—", text)
    text = text.replace("-", "–")
    text = text.replace("...", "…")

    text = re.sub("<div>", "<br>", text, 1)

    text = re.sub(r"(\S\D)(c|d|g|h|l|m|n|r|t|v)ize", r"\1\2ise", text)
    text = text.replace("avor", "avour")
    text = text.replace("honor", "honour")
    text = text.replace("color", "colour")
    text = text.replace("成语 saw", "idiom")

    text = re.sub(
        "&nbsp;</div><div>|&nbsp;<br>| <br>|</div><div>|<br />|<br/>", "<br>",
        text)
    text = text.replace("<br><br><br>", "<br><br>")

    text = re.sub("<div>|</div>", "", text)

    text = text.replace("  ", " ")
    text = text.replace(" / ", "/")
    text = re.sub(r"( |^)'(\b|<)", r"\1‘\2", text)
    text = re.sub(r"(\b|>)'(\s|\.|,|\))", r"\1’\2", text)
    text = text.replace("'", "’")
    text = re.sub(r"( |^)\"(\b|<)", r"\1“\2", text)
    text = re.sub(r"(\b|>)\"(\s|\.|,|\)|$)", r"\1”\2", text)
    text = re.sub(
        "\(Jyutping\)|\(jyutping\)",
        "[<a href=\"http://www.cantonese.sheik.co.uk/dictionary/characters/751/\">粵</a>]",
        text)
    text = re.sub(
        "\(Pinyin\)|\(pinyin\)",
        "[<a href=\"http://www.cantonese.sheik.co.uk/dictionary/characters/331/\">國</a>]",
        text)

    text = text.replace("msg–", "msg-")
    text = re.sub("<br>$|^<br>|&nbsp;$", "", text)
    text = re.sub("<br>$|^<br>|&nbsp;$", "", text)
    text = re.sub("&nbsp;", " ", text)

    if keyboard.is_keyboard():
        keyboard.play_input_click()
        keyboard.insert_text(text)
    else:
        # For debugging in the main app:
        print(f'Keyboard input: {text}')
def main():
    if not keyboard.is_keyboard():
        return
    v = MyView()
    keyboard.set_view(v, 'expanded')