From: Andreas Monzner Date: Thu, 29 Jun 2006 22:58:04 +0000 (+0000) Subject: some keyboard fixes (thanks to luke_s) X-Git-Tag: 2.6.0~3231 X-Git-Url: https://git.cweiske.de/enigma2.git/commitdiff_plain/9c2be7b98291ced0479a737f9141ed6d64eaed3a some keyboard fixes (thanks to luke_s) --- diff --git a/data/keymap.xml b/data/keymap.xml index 41b7dda0..047e0742 100644 --- a/data/keymap.xml +++ b/data/keymap.xml @@ -17,14 +17,14 @@ - + - + diff --git a/lib/python/Components/Input.py b/lib/python/Components/Input.py index e6e27fab..b140ef51 100644 --- a/lib/python/Components/Input.py +++ b/lib/python/Components/Input.py @@ -19,8 +19,8 @@ class Input(VariableText, HTMLComponent, GUIComponent): self.maxSize = maxSize self.currPos = 0 self.Text = text + self.overwrite = 0 self.update() - def update(self): self.setMarkedPos(self.currPos) if self.type == self.PIN: @@ -79,14 +79,45 @@ class Input(VariableText, HTMLComponent, GUIComponent): newNumber = str(int(self.Text[self.currPos]) - 1) self.Text = self.Text[0:self.currPos] + newNumber + self.Text[self.currPos + 1:] self.update() - + + def home(self): + self.currPos = 0 + self.update() + + def end(self): + self.currPos = len(self.Text) - 1 + self.update() + + def tab(self): + if self.currPos == len(self.Text) - 1: + self.Text=self.Text+ " " + self.end() + else: + self.Text = self.Text[0:self.currPos] + " " + self.Text[self.currPos:] + self.update() + def delete(self): self.Text = self.Text[:self.currPos] + self.Text[self.currPos + 1:] self.update() + + def toggleOverwrite(self): + if self.overwrite==1: + self.overwrite=0 + else: + self.overwrite=1 + self.update() + + def deleteBackward(self): + self.Text = self.Text[:self.currPos - 1] + self.Text[self.currPos:] + self.left() + self.update() def handleAscii(self, code): newChar = chr(code) - self.Text = self.Text[0:self.currPos] + newChar + self.Text[self.currPos + 1:] + if self.overwrite==1: + self.Text = self.Text[0:self.currPos] + newChar + self.Text[self.currPos + 1:] + else: + self.Text = self.Text[0:self.currPos] + newChar + self.Text[self.currPos:] self.right() def number(self, number): diff --git a/lib/python/Screens/InputBox.py b/lib/python/Screens/InputBox.py index 9d54135c..558cbc01 100644 --- a/lib/python/Screens/InputBox.py +++ b/lib/python/Screens/InputBox.py @@ -14,8 +14,8 @@ class InputBox(Screen): self["text"] = Label(title) self["input"] = Input(**kwargs) - - self["actions"] = NumberActionMap(["WizardActions", "InputBoxActions", "InputAsciiActions"], + + self["actions"] = NumberActionMap(["WizardActions", "InputBoxActions", "InputAsciiActions", "KeyboardInputActions"], { "gotAsciiCode": self.gotAsciiCode, "ok": self.go, @@ -23,6 +23,15 @@ class InputBox(Screen): "left": self.keyLeft, "right": self.keyRight, "delete": self.keyDelete, + "moveLeft": self.keyLeft, + "moveRight": self.keyRight, + "moveHome": self.keyHome, + "moveEnd": self.keyEnd, + "deleteForward": self.keyDelete, + "deleteBackward": self.keyBackspace, + "tab": self.keyTab, + "toggleOverwrite": self.keyInsert, + "accept": self.go, "1": self.keyNumberGlobal, "2": self.keyNumberGlobal, "3": self.keyNumberGlobal, @@ -42,22 +51,37 @@ class InputBox(Screen): def keyLeft(self): self["input"].left() - + def keyRight(self): self["input"].right() - + def keyNumberGlobal(self, number): self["input"].number(number) - + def keyDelete(self): self["input"].delete() - + def go(self): rcinput = eRCInput.getInstance() rcinput.setKeyboardMode(rcinput.kmNone) self.close(self["input"].getText()) - + def cancel(self): rcinput = eRCInput.getInstance() rcinput.setKeyboardMode(rcinput.kmNone) self.close(None) + + def keyHome(self): + self["input"].home() + + def keyEnd(self): + self["input"].end() + + def keyBackspace(self): + self["input"].deleteBackward() + + def keyTab(self): + self["input"].tab() + + def keyInsert(self): + self["input"].toggleOverwrite()