diff --git a/docs/AUTHORS.txt b/docs/AUTHORS.txt index 996b1a706..24740d864 100644 --- a/docs/AUTHORS.txt +++ b/docs/AUTHORS.txt @@ -7,7 +7,7 @@ Various contributors (see below, and CHANGES.txt) http://www.tuxpaint.org/ -June 17, 2002 - July 30, 2020 +June 17, 2002 - August 29, 2020 $Id$ @@ -111,7 +111,7 @@ $Id$ Ankit Choudary , as part of GSOC 2010, with integration and fixes by Pere Pujal i Carabantes - Onscreen keyboard support + On-screen keyboard support Some code from Ankit Choudary , as part of GSOC 2010, diff --git a/docs/en/EXTENDING.txt b/docs/en/EXTENDING.txt index 3ee1d19fb..362c7b315 100644 --- a/docs/en/EXTENDING.txt +++ b/docs/en/EXTENDING.txt @@ -748,8 +748,127 @@ On-screen Keyboard As of version 0.9.22, Tux Paint's "Text" and "Label" tools can present an on-screen keyboard that allows the pointer (via a mouse, eye-tracking - systems, etc.) to be used to input characters. + systems, etc.) to be used to input characters. Files that describe the + layout and available keys are stored in Tux Paint's "osk" directory. + Each keyboard layout is defined by a number of files (some of which may + be shared by different layouts). We'll use the QWERTY keyboard as an + example: - Details forthcoming + qwerty.layout + + This is a text file that specifies the other files used to describe + the layout and key mappings. + + layout qwerty.h_layout + keymap us-intl-altgr-dead-keys.keymap + dead_keys_map dead_keys.map + composemap en_US.UTF-8_Compose + keysymdefs keysymdef.h + keyboardlist qwerty.layout default.layout + + Note: Blank lines within the ".layout" file will be ignored, as will + any text following a "#" (pound/hash) character — it can be used to + denote comments, as seen in the example above. + + qwerty.h_layout + + This describes how big the keyboard is (as a W×H grid), and lists each + key with its numeric keycode (see the "keymap" file, below), the width + it should be drawn at (typically "1.0", to take one space on the + keyboard, but in the example below, notice the "TAB" and "SPACE" keys + are much wider), the character or text to display on the key, + depending on which modifier keys have been pressed (one each for: no + modifiers, [Shift], [AltGr], and [Shift]+[AltGr]), and finally whether + or not the key is affected by the [CapsLock] key (use "1") or [AltGr] + (alternate graphics) key (use "2"), or not at all (use "0"). + + WIDTH 15 + HEIGHT 5 + + KEY 49 1.0 ` ~ ` ~ 0 + KEY 10 1.0 1 ! ¡ ¹ 0 + KEY 11 1.0 2 @ ² ˝ 0 + KEY 12 1.0 3 # · ³ 0 + KEY 13 1.0 4 $ ¤ £ 0 + KEY 14 1.0 5 % € ¸ 0 + KEY 15 1.0 6 ^ ¼ ^ 0 + ... + KEY 21 1.0 = + × ÷ 0 + KEY 22 2.0 DELETE DELETE DELETE DELETE 0 + + NEWLINE + + KEY 23 1.5 TAB TAB TAB TAB 0 + KEY 24 1.0 q Q ä Ä 1 + KEY 25 1.0 w W å Å 1 + KEY 26 1.0 e E é É 1 + KEY 27 1.0 r R ® ® 1 + ... + + NEWLINE + + # Arrow to left will change to the previous keyboard + KEY 2 1.0 <- <- <- <- 0 + + KEY 133 2.0 Cmp Cmp Cmp Cmp 0 + + # The ALT or ALTGR keys are used in im to switch the input mode. + KEY 64 2.0 Alt Alt Alt Alt 0 + + # Space + KEY 65 7.0 SPACE SPACE SPACE SPACE 0 + + KEY 108 2.0 AltGr AltGr AltGr AltGr 0 + + # Arrow to right will change to the next keyboard + KEY 1 1.0 -> -> -> -> 0 + + Notice here that alphabetic keys ([Q], [W], etc.) will be affected by + [CapsLock], while numeric keys ([1], [2], etc.), [Space], and so on, + will not. + + us-intl-altgr-dead-keys.keymap + + This file defines which numeric keycodes (seen in the keyboard layout + files, such as "qwerty.h_layout" described above) should be mapped to + which actual characters that an application such as Tux Paint expects + to receive when keys (e.g., on a real keyboard) are pressed. + + If you're using an operating system such as Linux, which runs X-Window + and has the "xmodmap" command-line tool available, you can run it with + the ("print keymap expressions" option, "-pke", to generate a keymap + file. + + keycode 9 = Escape NoSymbol Escape Escape + keycode 10 = 1 exclam exclamdown onesuperior 1 exclam 1 exclam + NoSymbol onesuperior + keycode 11 = 2 at twosuperior dead_doubleacute 2 at 2 at onehalf + twosuperior + keycode 12 = 3 numbersign periodcentered threesuperior dead_macron + periodcentered + ... + keycode 52 = z Z ae AE Arabic_hamzaonyeh asciitilde guillemotright + NoSymbol Greek_zeta Greek_ZETA U037D U03FF + keycode 53 = x X x X Arabic_hamza Arabic_sukun guillemotleft + NoSymbol Greek_chi Greek_CHI rightarrow leftarrow + keycode 54 = c C copyright cent Arabic_hamzaonwaw braceright + Greek_psi Greek_PSI copyright + keycode 55 = v V v V Arabic_ra braceleft Greek_omega Greek_OMEGA + U03D6 + keycode 56 = b B b B UFEFB UFEF5 Greek_beta Greek_BETA U03D0 + keycode 57 = n N ntilde Ntilde Arabic_alefmaksura Arabic_maddaonalef + Greek_nu Greek_NU U0374 U0375 + keycode 58 = m M mu mu Arabic_tehmarbuta apostrophe Greek_mu + Greek_MU U03FB U03FA + keycode 59 = comma less ccedilla Ccedilla Arabic_waw comma comma + less guillemotleft + keycode 60 = period greater dead_abovedot dead_caron Arabic_zain + period period greater guillemotright periodcentered + keycode 61 = slash question questiondown dead_hook Arabic_zah + Arabic_question_mark slash question + keycode 62 = Shift_R NoSymbol Shift_R Shift_R + ... + + ...Work in progress... ---------------------------------------------------------------------- diff --git a/docs/en/html/EXTENDING.html b/docs/en/html/EXTENDING.html index c4bd0fd6b..838ece94d 100644 --- a/docs/en/html/EXTENDING.html +++ b/docs/en/html/EXTENDING.html @@ -1586,11 +1586,158 @@ As of version 0.9.22, Tux Paint's "Text" and "Label" tools can present an on-screen keyboard that allows the pointer (via a mouse, eye-tracking systems, etc.) to be used to - input characters. + input characters. Files that describe the layout and available keys + are stored in + Tux Paint's + "osk" directory. Each keyboard layout is defined by a number + of files (some of which may be shared by different layouts). We'll use + the QWERTY keyboard as an example:

+ +

qwerty.layout

+
+

+ This is a text file that specifies the other files used to describe the + layout and key mappings. +

+
+

+ + layout qwerty.h_layout
+ keymap us-intl-altgr-dead-keys.keymap
+ dead_keys_map dead_keys.map
+ composemap en_US.UTF-8_Compose
+ keysymdefs keysymdef.h
+ keyboardlist qwerty.layout default.layout +
+

+
+

+ Note: Blank lines within the ".layout" file + will be ignored, as will any text following a + "#" (pound/hash) character — it can be used to + denote comments, as seen in the example above. +

+
+ +

qwerty.h_layout

+
+

+ This describes how big the keyboard is (as a W×H grid), + and lists each key with its numeric keycode (see the "keymap" + file, below), the width it should be drawn at (typically + "1.0", to take one space on the keyboard, + but in the example below, notice the "TAB" and + "SPACE" keys are much wider), the character or + text to display on the key, depending on which modifier + keys have been pressed (one each for: no modifiers, + [Shift], [AltGr], and [Shift]+[AltGr]), + and finally whether or not the key is affected by the + [CapsLock] key (use "1") or + [AltGr] (alternate graphics) key (use "2"), + or not at all (use "0"). +

+
+

+ + WIDTH 15
+ HEIGHT 5
+
+ KEY 49 1.0 ` ~ ` ~ 0
+ KEY 10 1.0 1 ! ¡ ¹ 0
+ KEY 11 1.0 2 @ ² ˝ 0
+ KEY 12 1.0 3 # · ³ 0
+ KEY 13 1.0 4 $ ¤ £ 0
+ KEY 14 1.0 5 % € ¸ 0
+ KEY 15 1.0 6 ^ ¼ ^ 0
+ ...
+ KEY 21 1.0 = + × ÷ 0
+ KEY 22 2.0 DELETE DELETE DELETE DELETE 0
+
+ NEWLINE
+
+ KEY 23 1.5 TAB TAB TAB TAB 0
+ KEY 24 1.0 q Q ä Ä 1
+ KEY 25 1.0 w W å Å 1
+ KEY 26 1.0 e E é É 1
+ KEY 27 1.0 r R ® ® 1
+ ...
+
+ NEWLINE
+
+ # Arrow to left will change to the previous keyboard
+ KEY 2 1.0 <- <- <- <- 0
+
+ KEY 133 2.0 Cmp Cmp Cmp Cmp 0
+
+ # The ALT or ALTGR keys are used in im to switch the input mode.
+ KEY 64 2.0 Alt Alt Alt Alt 0
+
+ # Space
+ KEY 65 7.0 SPACE SPACE SPACE SPACE 0
+
+ KEY 108 2.0 AltGr AltGr AltGr AltGr 0
+
+ # Arrow to right will change to the next keyboard
+ KEY 1 1.0 -> -> -> -> 0 +
+

+
+

+ Notice here that alphabetic keys ([Q], [W], etc.) + will be affected by [CapsLock], while numeric keys + ([1], [2], etc.), [Space], and so on, + will not. +

+
+ +

us-intl-altgr-dead-keys.keymap

+
+

+ This file defines which numeric keycodes (seen in the + keyboard layout files, such as "qwerty.h_layout" + described above) should be mapped to which actual characters + that an application such as + Tux Paint + expects to receive when keys (e.g., on a real keyboard) + are pressed. +

+

+ If you're using an operating system such as Linux, + which runs X-Window and has the + "xmodmap" command-line tool available, you can run + it with the ("print keymap expressions" + option, "-pke", to generate a keymap file. +

+
+

+ + keycode 9 = Escape NoSymbol Escape Escape
+ keycode 10 = 1 exclam exclamdown onesuperior 1 exclam 1 exclam NoSymbol onesuperior
+ keycode 11 = 2 at twosuperior dead_doubleacute 2 at 2 at onehalf twosuperior
+ keycode 12 = 3 numbersign periodcentered threesuperior dead_macron periodcentered
+ ...
+ keycode 52 = z Z ae AE Arabic_hamzaonyeh asciitilde guillemotright NoSymbol Greek_zeta Greek_ZETA U037D U03FF
+ keycode 53 = x X x X Arabic_hamza Arabic_sukun guillemotleft NoSymbol Greek_chi Greek_CHI rightarrow leftarrow
+ keycode 54 = c C copyright cent Arabic_hamzaonwaw braceright Greek_psi Greek_PSI copyright
+ keycode 55 = v V v V Arabic_ra braceleft Greek_omega Greek_OMEGA U03D6
+ keycode 56 = b B b B UFEFB UFEF5 Greek_beta Greek_BETA U03D0
+ keycode 57 = n N ntilde Ntilde Arabic_alefmaksura Arabic_maddaonalef Greek_nu Greek_NU U0374 U0375
+ keycode 58 = m M mu mu Arabic_tehmarbuta apostrophe Greek_mu Greek_MU U03FB U03FA
+ keycode 59 = comma less ccedilla Ccedilla Arabic_waw comma comma less guillemotleft
+ keycode 60 = period greater dead_abovedot dead_caron Arabic_zain period period greater guillemotright periodcentered
+ keycode 61 = slash question questiondown dead_hook Arabic_zah Arabic_question_mark slash question
+ keycode 62 = Shift_R NoSymbol Shift_R Shift_R
+ ...
+
+

+
+
+

- Details forthcoming + ...Work in progress...

+