1import gi 2gi.require_version('Caribou', '1.0') 3gi.require_version('Gtk', '3.0') 4from gi.repository import Caribou, GLib, GObject, Gtk 5from .window import AntlerWindowEntry 6from .keyboard_view import AntlerKeyboardView 7import sys 8 9class AntlerKeyboardCommand(object): 10 def run(self): 11 pass 12 13class AntlerKeyboardService(Caribou.KeyboardService, AntlerKeyboardCommand): 14 def __init__(self, args=None): 15 GObject.GObject.__init__(self) 16 self.register_keyboard("Antler") 17 self.window = AntlerWindowEntry(AntlerKeyboardView) 18 19 def run(self): 20 loop = GObject.MainLoop() 21 loop.run() 22 23 def do_show(self, timestamp): 24 self.window.show_all() 25 26 def do_hide(self, timestamp): 27 self.window.hide() 28 29 def do_set_cursor_location (self, x, y, w, h): 30 self.window.set_cursor_location(x, y, w, h) 31 32 def do_set_entry_location (self, x, y, w, h): 33 self.window.set_entry_location(x, y, w, h) 34 35 def do_name_lost (self, name): 36 sys.stderr.write("Another service acquired %s, quitting..\n" % name) 37 sys.exit(0) 38 39class AntlerKeyboardPreview(Gtk.Window, AntlerKeyboardCommand): 40 def __init__(self, args=None): 41 GObject.GObject.__init__(self) 42 if not args or not args.file: 43 sys.stderr.write("Specify keyboard file with -f option.\n") 44 sys.exit(1) 45 self.window = Gtk.Window() 46 self.window.add(AntlerKeyboardView(keyboard_file=args.file, 47 keyboard_level=args.level)) 48 49 def run(self): 50 self.window.show_all() 51 Gtk.main() 52 53if __name__ == "__main__": 54 import argparse 55 import signal 56 signal.signal(signal.SIGINT, signal.SIG_DFL) 57 58 GLib.set_prgname('antler-keyboard') 59 60 parser = argparse.ArgumentParser(description='antler-keyboard') 61 parser.add_argument('-c', '--command', type=str, default='service', 62 help='command (service or preview, default: service)') 63 parser.add_argument('-f', '--file', type=str, 64 help='keyboard file') 65 parser.add_argument('-l', '--level', type=str, 66 help='shift level') 67 args = parser.parse_args() 68 69 command = globals().get('AntlerKeyboard%s' % args.command.capitalize()) 70 if command: 71 command(args).run() 72 else: 73 sys.stderr.write("Unknown command: %s\n" % args.command) 74 sys.exit(1) 75