@@ -62,8 +62,13 @@ def __init__(self, parent):
6262 # Configure layouts
6363 self ._setup_layouts ()
6464
65- # Set default mode to lowercase
65+ # Initialize ALL keyboard mode maps (prevents LVGL from using default maps)
6666 self ._keyboard .set_map (self .MODE_LOWERCASE , self ._lowercase_map , self ._lowercase_ctrl )
67+ self ._keyboard .set_map (self .MODE_UPPERCASE , self ._uppercase_map , self ._uppercase_ctrl )
68+ self ._keyboard .set_map (self .MODE_NUMBERS , self ._numbers_map , self ._numbers_ctrl )
69+ self ._keyboard .set_map (self .MODE_SPECIALS , self ._specials_map , self ._specials_ctrl )
70+
71+ # Set default mode to lowercase
6772 self ._keyboard .set_mode (self .MODE_LOWERCASE )
6873
6974 # Add event handler for custom behavior
@@ -134,6 +139,11 @@ def _handle_events(self, event):
134139 if text is None :
135140 return
136141
142+ # Stop event propagation to prevent LVGL's default mode-switching behavior
143+ # This is critical to prevent LVGL from switching to its default TEXT_LOWER,
144+ # TEXT_UPPER, NUMBER modes when it sees mode-switching buttons
145+ event .stop_processing ()
146+
137147 # Get current textarea content (from our own reference, not LVGL's)
138148 ta = self ._textarea
139149 if not ta :
@@ -149,26 +159,22 @@ def _handle_events(self, event):
149159
150160 elif text == lv .SYMBOL .UP :
151161 # Switch to uppercase
152- self ._keyboard .set_map (self .MODE_UPPERCASE , self ._uppercase_map , self ._uppercase_ctrl )
153- self ._keyboard .set_mode (self .MODE_UPPERCASE )
162+ self .set_mode (self .MODE_UPPERCASE )
154163 return # Don't modify text
155164
156165 elif text == lv .SYMBOL .DOWN or text == self .LABEL_LETTERS :
157166 # Switch to lowercase
158- self ._keyboard .set_map (self .MODE_LOWERCASE , self ._lowercase_map , self ._lowercase_ctrl )
159- self ._keyboard .set_mode (self .MODE_LOWERCASE )
167+ self .set_mode (self .MODE_LOWERCASE )
160168 return # Don't modify text
161169
162170 elif text == self .LABEL_NUMBERS_SPECIALS :
163171 # Switch to numbers/specials
164- self ._keyboard .set_map (self .MODE_NUMBERS , self ._numbers_map , self ._numbers_ctrl )
165- self ._keyboard .set_mode (self .MODE_NUMBERS )
172+ self .set_mode (self .MODE_NUMBERS )
166173 return # Don't modify text
167174
168175 elif text == self .LABEL_SPECIALS :
169176 # Switch to additional specials
170- self ._keyboard .set_map (self .MODE_SPECIALS , self ._specials_map , self ._specials_ctrl )
171- self ._keyboard .set_mode (self .MODE_SPECIALS )
177+ self .set_mode (self .MODE_SPECIALS )
172178 return # Don't modify text
173179
174180 elif text == self .LABEL_SPACE :
0 commit comments