Compare commits
11 Commits
| Author | SHA1 | Date |
|---|---|---|
|
|
bbdf1921f2 | |
|
|
634b054e1e | |
|
|
1c49f078ba | |
|
|
da3917eb88 | |
|
|
de0d97dce9 | |
|
|
c857f75919 | |
|
|
af2678c7bf | |
|
|
91f3f07dbe | |
|
|
e22430ee79 | |
|
|
bc8ca22454 | |
|
|
00f307ee9f |
|
|
@ -2,4 +2,5 @@
|
|||
config.ini
|
||||
token.txt
|
||||
datenbank.csv
|
||||
qrcodes.csv
|
||||
qrcodes.csv
|
||||
log.txt
|
||||
BIN
PIL/_imaging.pyd
BIN
PIL/_webp.pyd
|
|
@ -245,34 +245,6 @@ mJlglFwjz1onl14LBQaTNx47aTbrqZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK
|
|||
4SVhM7JZG+Ju1zdXtg2pEto=
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
# Issuer: O=SECOM Trust.net OU=Security Communication RootCA1
|
||||
# Subject: O=SECOM Trust.net OU=Security Communication RootCA1
|
||||
# Label: "Security Communication Root CA"
|
||||
# Serial: 0
|
||||
# MD5 Fingerprint: f1:bc:63:6a:54:e0:b5:27:f5:cd:e7:1a:e3:4d:6e:4a
|
||||
# SHA1 Fingerprint: 36:b1:2b:49:f9:81:9e:d7:4c:9e:bc:38:0f:c6:56:8f:5d:ac:b2:f7
|
||||
# SHA256 Fingerprint: e7:5e:72:ed:9f:56:0e:ec:6e:b4:80:00:73:a4:3f:c3:ad:19:19:5a:39:22:82:01:78:95:97:4a:99:02:6b:6c
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEY
|
||||
MBYGA1UEChMPU0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21t
|
||||
dW5pY2F0aW9uIFJvb3RDQTEwHhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5
|
||||
WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMPU0VDT00gVHJ1c3QubmV0MScwJQYD
|
||||
VQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEwggEiMA0GCSqGSIb3
|
||||
DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw8yl8
|
||||
9f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJ
|
||||
DKaVv0uMDPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9
|
||||
Ms+k2Y7CI9eNqPPYJayX5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/N
|
||||
QV3Is00qVUarH9oe4kA92819uZKAnDfdDJZkndwi92SL32HeFZRSFaB9UslLqCHJ
|
||||
xrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2JChzAgMBAAGjPzA9MB0G
|
||||
A1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYwDwYDVR0T
|
||||
AQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vG
|
||||
kl3g0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfr
|
||||
Uj94nK9NrvjVT8+amCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5
|
||||
Bw+SUEmK3TGXX8npN6o7WWWXlDLJs58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJU
|
||||
JRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ6rBK+1YWc26sTfcioU+tHXot
|
||||
RSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAiFL39vmwLAw==
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
# Issuer: CN=XRamp Global Certification Authority O=XRamp Security Services Inc OU=www.xrampsecurity.com
|
||||
# Subject: CN=XRamp Global Certification Authority O=XRamp Security Services Inc OU=www.xrampsecurity.com
|
||||
# Label: "XRamp Global CA Root"
|
||||
|
|
@ -3513,46 +3485,6 @@ DgQWBBQxCpCPtsad0kRLgLWi5h+xEk8blTAKBggqhkjOPQQDAwNoADBlAjEA31SQ
|
|||
+RHUjE7AwWHCFUyqqx0LMV87HOIAl0Qx5v5zli/altP+CAezNIm8BZ/3Hobui3A=
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
# Issuer: CN=GLOBALTRUST 2020 O=e-commerce monitoring GmbH
|
||||
# Subject: CN=GLOBALTRUST 2020 O=e-commerce monitoring GmbH
|
||||
# Label: "GLOBALTRUST 2020"
|
||||
# Serial: 109160994242082918454945253
|
||||
# MD5 Fingerprint: 8a:c7:6f:cb:6d:e3:cc:a2:f1:7c:83:fa:0e:78:d7:e8
|
||||
# SHA1 Fingerprint: d0:67:c1:13:51:01:0c:aa:d0:c7:6a:65:37:31:16:26:4f:53:71:a2
|
||||
# SHA256 Fingerprint: 9a:29:6a:51:82:d1:d4:51:a2:e3:7f:43:9b:74:da:af:a2:67:52:33:29:f9:0f:9a:0d:20:07:c3:34:e2:3c:9a
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFgjCCA2qgAwIBAgILWku9WvtPilv6ZeUwDQYJKoZIhvcNAQELBQAwTTELMAkG
|
||||
A1UEBhMCQVQxIzAhBgNVBAoTGmUtY29tbWVyY2UgbW9uaXRvcmluZyBHbWJIMRkw
|
||||
FwYDVQQDExBHTE9CQUxUUlVTVCAyMDIwMB4XDTIwMDIxMDAwMDAwMFoXDTQwMDYx
|
||||
MDAwMDAwMFowTTELMAkGA1UEBhMCQVQxIzAhBgNVBAoTGmUtY29tbWVyY2UgbW9u
|
||||
aXRvcmluZyBHbWJIMRkwFwYDVQQDExBHTE9CQUxUUlVTVCAyMDIwMIICIjANBgkq
|
||||
hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAri5WrRsc7/aVj6B3GyvTY4+ETUWiD59b
|
||||
RatZe1E0+eyLinjF3WuvvcTfk0Uev5E4C64OFudBc/jbu9G4UeDLgztzOG53ig9Z
|
||||
YybNpyrOVPu44sB8R85gfD+yc/LAGbaKkoc1DZAoouQVBGM+uq/ufF7MpotQsjj3
|
||||
QWPKzv9pj2gOlTblzLmMCcpL3TGQlsjMH/1WljTbjhzqLL6FLmPdqqmV0/0plRPw
|
||||
yJiT2S0WR5ARg6I6IqIoV6Lr/sCMKKCmfecqQjuCgGOlYx8ZzHyyZqjC0203b+J+
|
||||
BlHZRYQfEs4kUmSFC0iAToexIiIwquuuvuAC4EDosEKAA1GqtH6qRNdDYfOiaxaJ
|
||||
SaSjpCuKAsR49GiKweR6NrFvG5Ybd0mN1MkGco/PU+PcF4UgStyYJ9ORJitHHmkH
|
||||
r96i5OTUawuzXnzUJIBHKWk7buis/UDr2O1xcSvy6Fgd60GXIsUf1DnQJ4+H4xj0
|
||||
4KlGDfV0OoIu0G4skaMxXDtG6nsEEFZegB31pWXogvziB4xiRfUg3kZwhqG8k9Me
|
||||
dKZssCz3AwyIDMvUclOGvGBG85hqwvG/Q/lwIHfKN0F5VVJjjVsSn8VoxIidrPIw
|
||||
q7ejMZdnrY8XD2zHc+0klGvIg5rQmjdJBKuxFshsSUktq6HQjJLyQUp5ISXbY9e2
|
||||
nKd+Qmn7OmMCAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
|
||||
AQYwHQYDVR0OBBYEFNwuH9FhN3nkq9XVsxJxaD1qaJwiMB8GA1UdIwQYMBaAFNwu
|
||||
H9FhN3nkq9XVsxJxaD1qaJwiMA0GCSqGSIb3DQEBCwUAA4ICAQCR8EICaEDuw2jA
|
||||
VC/f7GLDw56KoDEoqoOOpFaWEhCGVrqXctJUMHytGdUdaG/7FELYjQ7ztdGl4wJC
|
||||
XtzoRlgHNQIw4Lx0SsFDKv/bGtCwr2zD/cuz9X9tAy5ZVp0tLTWMstZDFyySCstd
|
||||
6IwPS3BD0IL/qMy/pJTAvoe9iuOTe8aPmxadJ2W8esVCgmxcB9CpwYhgROmYhRZf
|
||||
+I/KARDOJcP5YBugxZfD0yyIMaK9MOzQ0MAS8cE54+X1+NZK3TTN+2/BT+MAi1bi
|
||||
kvcoskJ3ciNnxz8RFbLEAwW+uxF7Cr+obuf/WEPPm2eggAe2HcqtbepBEX4tdJP7
|
||||
wry+UUTF72glJ4DjyKDUEuzZpTcdN3y0kcra1LGWge9oXHYQSa9+pTeAsRxSvTOB
|
||||
TI/53WXZFM2KJVj04sWDpQmQ1GwUY7VA3+vA/MRYfg0UFodUJ25W5HCEuGwyEn6C
|
||||
MUO+1918oa2u1qsgEu8KwxCMSZY13At1XrFP1U80DhEgB3VDRemjEdqso5nCtnkn
|
||||
4rnvyOL2NSl6dPrFf4IFYqYK6miyeUcGbvJXqBUzxvd4Sj1Ce2t+/vdG6tHrju+I
|
||||
aFvowdlxfv1k7/9nR4hYJS8+hge9+6jlgqispdNpQ80xiEmEU5LAsTkbOYMBMMTy
|
||||
qfrQA71yN2BWHzZ8vTmR9W0Nv3vXkg==
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
# Issuer: CN=ANF Secure Server Root CA O=ANF Autoridad de Certificacion OU=ANF CA Raiz
|
||||
# Subject: CN=ANF Secure Server Root CA O=ANF Autoridad de Certificacion OU=ANF CA Raiz
|
||||
# Label: "ANF Secure Server Root CA"
|
||||
|
|
@ -4776,3 +4708,91 @@ lklyALKrdVwPaFsdZcJfMw8eD/A7hvWwTruc9+olBdytoptLFwG+Qt81IR2tq670
|
|||
v64fG9PiO/yzcnMcmyiQiRM9HcEARwmWmjgb3bHPDcK0RPOWlc4yOo80nOAXx17O
|
||||
rg3bhzjlP1v9mxnhMUF6cKojawHhRUzNlM47ni3niAIi9G7oyOzWPPO5std3eqx7
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
# Issuer: CN=Telekom Security TLS ECC Root 2020 O=Deutsche Telekom Security GmbH
|
||||
# Subject: CN=Telekom Security TLS ECC Root 2020 O=Deutsche Telekom Security GmbH
|
||||
# Label: "Telekom Security TLS ECC Root 2020"
|
||||
# Serial: 72082518505882327255703894282316633856
|
||||
# MD5 Fingerprint: c1:ab:fe:6a:10:2c:03:8d:bc:1c:22:32:c0:85:a7:fd
|
||||
# SHA1 Fingerprint: c0:f8:96:c5:a9:3b:01:06:21:07:da:18:42:48:bc:e9:9d:88:d5:ec
|
||||
# SHA256 Fingerprint: 57:8a:f4:de:d0:85:3f:4e:59:98:db:4a:ea:f9:cb:ea:8d:94:5f:60:b6:20:a3:8d:1a:3c:13:b2:bc:7b:a8:e1
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICQjCCAcmgAwIBAgIQNjqWjMlcsljN0AFdxeVXADAKBggqhkjOPQQDAzBjMQsw
|
||||
CQYDVQQGEwJERTEnMCUGA1UECgweRGV1dHNjaGUgVGVsZWtvbSBTZWN1cml0eSBH
|
||||
bWJIMSswKQYDVQQDDCJUZWxla29tIFNlY3VyaXR5IFRMUyBFQ0MgUm9vdCAyMDIw
|
||||
MB4XDTIwMDgyNTA3NDgyMFoXDTQ1MDgyNTIzNTk1OVowYzELMAkGA1UEBhMCREUx
|
||||
JzAlBgNVBAoMHkRldXRzY2hlIFRlbGVrb20gU2VjdXJpdHkgR21iSDErMCkGA1UE
|
||||
AwwiVGVsZWtvbSBTZWN1cml0eSBUTFMgRUNDIFJvb3QgMjAyMDB2MBAGByqGSM49
|
||||
AgEGBSuBBAAiA2IABM6//leov9Wq9xCazbzREaK9Z0LMkOsVGJDZos0MKiXrPk/O
|
||||
tdKPD/M12kOLAoC+b1EkHQ9rK8qfwm9QMuU3ILYg/4gND21Ju9sGpIeQkpT0CdDP
|
||||
f8iAC8GXs7s1J8nCG6NCMEAwHQYDVR0OBBYEFONyzG6VmUex5rNhTNHLq+O6zd6f
|
||||
MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMAoGCCqGSM49BAMDA2cA
|
||||
MGQCMHVSi7ekEE+uShCLsoRbQuHmKjYC2qBuGT8lv9pZMo7k+5Dck2TOrbRBR2Di
|
||||
z6fLHgIwN0GMZt9Ba9aDAEH9L1r3ULRn0SyocddDypwnJJGDSA3PzfdUga/sf+Rn
|
||||
27iQ7t0l
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
# Issuer: CN=Telekom Security TLS RSA Root 2023 O=Deutsche Telekom Security GmbH
|
||||
# Subject: CN=Telekom Security TLS RSA Root 2023 O=Deutsche Telekom Security GmbH
|
||||
# Label: "Telekom Security TLS RSA Root 2023"
|
||||
# Serial: 44676229530606711399881795178081572759
|
||||
# MD5 Fingerprint: bf:5b:eb:54:40:cd:48:71:c4:20:8d:7d:de:0a:42:f2
|
||||
# SHA1 Fingerprint: 54:d3:ac:b3:bd:57:56:f6:85:9d:ce:e5:c3:21:e2:d4:ad:83:d0:93
|
||||
# SHA256 Fingerprint: ef:c6:5c:ad:bb:59:ad:b6:ef:e8:4d:a2:23:11:b3:56:24:b7:1b:3b:1e:a0:da:8b:66:55:17:4e:c8:97:86:46
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
dTdmQRCsu/WU48IxK63nI1bMNSWSs1A=
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
# Issuer: CN=FIRMAPROFESIONAL CA ROOT-A WEB O=Firmaprofesional SA
|
||||
# Subject: CN=FIRMAPROFESIONAL CA ROOT-A WEB O=Firmaprofesional SA
|
||||
# Label: "FIRMAPROFESIONAL CA ROOT-A WEB"
|
||||
# Serial: 65916896770016886708751106294915943533
|
||||
# MD5 Fingerprint: 82:b2:ad:45:00:82:b0:66:63:f8:5f:c3:67:4e:ce:a3
|
||||
# SHA1 Fingerprint: a8:31:11:74:a6:14:15:0d:ca:77:dd:0e:e4:0c:5d:58:fc:a0:72:a5
|
||||
# SHA256 Fingerprint: be:f2:56:da:f2:6e:9c:69:bd:ec:16:02:35:97:98:f3:ca:f7:18:21:a0:3e:01:82:57:c5:3c:65:61:7f:3d:4a
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICejCCAgCgAwIBAgIQMZch7a+JQn81QYehZ1ZMbTAKBggqhkjOPQQDAzBuMQsw
|
||||
CQYDVQQGEwJFUzEcMBoGA1UECgwTRmlybWFwcm9mZXNpb25hbCBTQTEYMBYGA1UE
|
||||
YQwPVkFURVMtQTYyNjM0MDY4MScwJQYDVQQDDB5GSVJNQVBST0ZFU0lPTkFMIENB
|
||||
IFJPT1QtQSBXRUIwHhcNMjIwNDA2MDkwMTM2WhcNNDcwMzMxMDkwMTM2WjBuMQsw
|
||||
CQYDVQQGEwJFUzEcMBoGA1UECgwTRmlybWFwcm9mZXNpb25hbCBTQTEYMBYGA1UE
|
||||
YQwPVkFURVMtQTYyNjM0MDY4MScwJQYDVQQDDB5GSVJNQVBST0ZFU0lPTkFMIENB
|
||||
IFJPT1QtQSBXRUIwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAARHU+osEaR3xyrq89Zf
|
||||
e9MEkVz6iMYiuYMQYneEMy3pA4jU4DP37XcsSmDq5G+tbbT4TIqk5B/K6k84Si6C
|
||||
cyvHZpsKjECcfIr28jlgst7L7Ljkb+qbXbdTkBgyVcUgt5SjYzBhMA8GA1UdEwEB
|
||||
/wQFMAMBAf8wHwYDVR0jBBgwFoAUk+FDY1w8ndYn81LsF7Kpryz3dvgwHQYDVR0O
|
||||
BBYEFJPhQ2NcPJ3WJ/NS7Beyqa8s93b4MA4GA1UdDwEB/wQEAwIBBjAKBggqhkjO
|
||||
PQQDAwNoADBlAjAdfKR7w4l1M+E7qUW/Runpod3JIha3RxEL2Jq68cgLcFBTApFw
|
||||
hVmpHqTm6iMxoAACMQD94vizrxa5HnPEluPBMBnYfubDl94cT7iJLzPrSA8Z94dG
|
||||
XSaQpYXFuXqUPoeovQA=
|
||||
-----END CERTIFICATE-----
|
||||
|
|
|
|||
|
|
@ -1,73 +1,42 @@
|
|||
#:import Window kivy.core.window.Window
|
||||
<MDBottomSheetContent>
|
||||
size_hint_y: None
|
||||
height: self.minimum_height
|
||||
|
||||
|
||||
<SheetList>
|
||||
<MDBottomSheetDragHandle>
|
||||
orientation: "vertical"
|
||||
size_hint_y: None
|
||||
height: self.minimum_height
|
||||
padding: "16dp", "8dp", "16dp", "16dp"
|
||||
|
||||
MDGridLayout:
|
||||
id: box_sheet_list
|
||||
cols: 1
|
||||
adaptive_height: True
|
||||
padding: 0, 0, 0, "96dp"
|
||||
BottomSheetDragHandle:
|
||||
md_bg_color:
|
||||
app.theme_cls.disabled_hint_text_color \
|
||||
if not root.drag_handle_color else \
|
||||
root.drag_handle_color
|
||||
size_hint: None, None
|
||||
size: "32dp", "4dp"
|
||||
radius: 4
|
||||
pos_hint: {"center_x": .5}
|
||||
|
||||
BottomSheetDragHandleContainer:
|
||||
id: header_container
|
||||
size_hint_y: None
|
||||
height: self.minimum_height
|
||||
|
||||
|
||||
<MDBottomSheet>
|
||||
md_bg_color: root.value_transparent
|
||||
_upper_padding: _upper_padding
|
||||
_gl_content: _gl_content
|
||||
_position_content: Window.height
|
||||
orientation: "vertical"
|
||||
md_bg_color: root.bg_color if root.bg_color else app.theme_cls.bg_darkest
|
||||
radius: 16, 16, 0, 0
|
||||
padding: 0, "8dp", 0, 0
|
||||
|
||||
MDBoxLayout:
|
||||
orientation: "vertical"
|
||||
padding: 0, 1, 0, 0
|
||||
id: drag_handle_container
|
||||
size_hint_y: None
|
||||
height: self.minimum_height
|
||||
|
||||
BsPadding:
|
||||
id: _upper_padding
|
||||
size_hint_y: None
|
||||
height: root.height - min(root.width * 9 / 16, root._gl_content.height)
|
||||
on_release: root.dismiss()
|
||||
|
||||
BottomSheetContent:
|
||||
id: _gl_content
|
||||
size_hint_y: None
|
||||
cols: 1
|
||||
md_bg_color: 0, 0, 0, 0
|
||||
|
||||
canvas:
|
||||
Color:
|
||||
rgba: root.theme_cls.bg_normal if not root.bg_color else root.bg_color
|
||||
RoundedRectangle:
|
||||
pos: self.pos
|
||||
size: self.size
|
||||
radius:
|
||||
[
|
||||
(root.radius, root.radius) if root.radius_from == "top_left" or root.radius_from == "top" else (0, 0),
|
||||
(root.radius, root.radius) if root.radius_from == "top_right" or root.radius_from == "top" else (0, 0),
|
||||
(root.radius, root.radius) if root.radius_from == "bottom_right" or root.radius_from == "bottom" else (0, 0),
|
||||
(root.radius, root.radius) if root.radius_from == "bottom_left" or root.radius_from == "bottom" else (0, 0)
|
||||
]
|
||||
|
||||
|
||||
<ListBottomSheetIconLeft>
|
||||
theme_text_color: "Primary"
|
||||
pos_hint: {"center_x": .5, "center_y": .5}
|
||||
|
||||
|
||||
<GridBottomSheetItem>
|
||||
orientation: "vertical"
|
||||
padding: 0, dp(24), 0, 0
|
||||
size_hint_y: None
|
||||
size: dp(64), dp(96)
|
||||
|
||||
AnchorLayout:
|
||||
anchor_x: "center"
|
||||
|
||||
MDIconButton:
|
||||
icon: root.source
|
||||
user_font_size: root.icon_size
|
||||
on_release: root.dispatch("on_release")
|
||||
|
||||
MDLabel:
|
||||
font_style: "Caption"
|
||||
theme_text_color: "Secondary"
|
||||
text: root.caption
|
||||
halign: "center"
|
||||
MDBoxLayout:
|
||||
id: container
|
||||
size_hint_y: None
|
||||
height: self.minimum_height
|
||||
|
|
@ -2,6 +2,7 @@
|
|||
canvas:
|
||||
Clear
|
||||
Color:
|
||||
group: "bg-color"
|
||||
rgba:
|
||||
self._md_bg_color \
|
||||
if not self.disabled else \
|
||||
|
|
@ -12,6 +13,7 @@
|
|||
source: self.source if hasattr(self, "source") else ""
|
||||
radius: [root._radius, ]
|
||||
Color:
|
||||
group: "outline-color"
|
||||
rgba:
|
||||
root._line_color \
|
||||
if not root.disabled else \
|
||||
|
|
@ -92,9 +94,11 @@
|
|||
root.theme_cls.disabled_hint_text_color \
|
||||
if not root.disabled_color else \
|
||||
root.disabled_color
|
||||
|
||||
on_icon:
|
||||
if self.icon not in md_icons.keys(): self.size_hint = (1, 1)
|
||||
# Fix https://github.com/kivymd/KivyMD/issues/1448
|
||||
# TODO: Perhaps this change may affect other widgets.
|
||||
# You need to create tests.
|
||||
# on_icon:
|
||||
# if self.icon not in md_icons.keys(): self.size_hint = (1, 1)
|
||||
theme_text_color: root._theme_icon_color
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,110 +1,38 @@
|
|||
<MDScalableCheckIcon>
|
||||
scale_value_x: 0
|
||||
scale_value_y: 0
|
||||
scale_value_z: 0
|
||||
|
||||
|
||||
<MDChip>
|
||||
size_hint_y: None
|
||||
height: "32dp"
|
||||
spacing: "8dp"
|
||||
adaptive_width: True
|
||||
radius: 16 if self.radius == [0, 0, 0, 0] else self.radius
|
||||
padding:
|
||||
"12dp" if not self.icon_left else "4dp", \
|
||||
0, \
|
||||
"12dp" if not self.icon_right else "8dp", \
|
||||
0
|
||||
radius:
|
||||
16 \
|
||||
if self.radius == [0, 0, 0, 0] else \
|
||||
(max(self.radius) if max(self.radius) < self.height / 2 else 16)
|
||||
md_bg_color:
|
||||
( \
|
||||
( \
|
||||
app.theme_cls.bg_darkest \
|
||||
if app.theme_cls.theme_style == "Light" else \
|
||||
app.theme_cls.bg_light \
|
||||
) \
|
||||
if not self.disabled else app.theme_cls.disabled_hint_text_color
|
||||
if not self._origin_md_bg_color else \
|
||||
self._origin_md_bg_color
|
||||
) \
|
||||
if not self.disabled else app.theme_cls.disabled_primary_color
|
||||
line_color:
|
||||
app.theme_cls.disabled_hint_text_color \
|
||||
if self.disabled else ( \
|
||||
self._origin_line_color \
|
||||
if self._origin_line_color else \
|
||||
self.line_color \
|
||||
)
|
||||
|
||||
canvas.before:
|
||||
Color:
|
||||
rgba:
|
||||
self.line_color \
|
||||
if not self.disabled else \
|
||||
app.theme_cls.disabled_hint_text_color
|
||||
Line:
|
||||
width: 1
|
||||
rounded_rectangle:
|
||||
( \
|
||||
self.x, \
|
||||
self.y, \
|
||||
self.width, \
|
||||
self.height, \
|
||||
*self.radius, \
|
||||
self.height \
|
||||
)
|
||||
LeadingIconContainer:
|
||||
id: leading_icon_container
|
||||
adaptive_width: True
|
||||
|
||||
MDRelativeLayout:
|
||||
id: relative_box
|
||||
size_hint: None, None
|
||||
size: ("24dp", "24dp") if root.icon_left else (0, 0)
|
||||
pos_hint: {"center_y": .5}
|
||||
radius: [int(self.height / 2),]
|
||||
LabelTextContainer:
|
||||
id: label_container
|
||||
adaptive_width: True
|
||||
|
||||
MDIcon:
|
||||
id: icon_left
|
||||
icon: root.icon_left
|
||||
size_hint: None, None
|
||||
size: ("28dp", "28dp") if root.icon_left else (0, 0)
|
||||
theme_text_color: "Custom"
|
||||
pos_hint: {"center_y": .5}
|
||||
pos: 0, -2
|
||||
text_color:
|
||||
( \
|
||||
root.icon_left_color \
|
||||
if root.icon_left_color else \
|
||||
root.theme_cls.disabled_hint_text_color \
|
||||
) \
|
||||
if not self.disabled else app.theme_cls.disabled_hint_text_color
|
||||
|
||||
MDBoxLayout:
|
||||
id: icon_left_box
|
||||
size_hint: None, None
|
||||
radius: [int(self.height / 2),]
|
||||
size: ("28dp", "28dp") if root.icon_left else (0, 0)
|
||||
pos: 0, -2
|
||||
|
||||
MDScalableCheckIcon:
|
||||
id: check_icon
|
||||
icon: "check"
|
||||
size_hint: None, None
|
||||
size: "28dp", "28dp"
|
||||
color: (1, 1, 1, 1) if not root.icon_check_color else root.icon_check_color
|
||||
pos: 2, -2
|
||||
|
||||
MDLabel:
|
||||
id: label
|
||||
text: root.text
|
||||
adaptive_size: True
|
||||
markup: True
|
||||
pos_hint: {"center_y": .5}
|
||||
color:
|
||||
( \
|
||||
root.text_color \
|
||||
if root.text_color else \
|
||||
root.theme_cls.disabled_hint_text_color \
|
||||
) \
|
||||
if not self.disabled else app.theme_cls.disabled_hint_text_color
|
||||
|
||||
MDIcon:
|
||||
id: icon_right
|
||||
icon: root.icon_right
|
||||
size_hint: None, None
|
||||
size: ("18dp", "18dp") if root.icon_right else (0, 0)
|
||||
font_size: "18sp" if root.icon_right else 0
|
||||
theme_text_color: "Custom"
|
||||
pos_hint: {"center_y": .5}
|
||||
text_color:
|
||||
( \
|
||||
root.icon_right_color \
|
||||
if root.icon_right_color else \
|
||||
root.theme_cls.disabled_hint_text_color \
|
||||
) \
|
||||
if not self.disabled else app.theme_cls.disabled_hint_text_color
|
||||
TrailingIconContainer:
|
||||
id: trailing_icon_container
|
||||
adaptive_width: True
|
||||
|
|
|
|||
|
|
@ -231,4 +231,11 @@
|
|||
id: container
|
||||
orientation: "vertical"
|
||||
elevation: root.elevation
|
||||
shadow_radius: root.shadow_radius
|
||||
shadow_softness: root.shadow_softness
|
||||
shadow_offset: root.shadow_offset
|
||||
shadow_color: root.shadow_color
|
||||
shadow_color: root.shadow_color
|
||||
shadow_softness_size: root.shadow_softness_size
|
||||
padding: "24dp", "24dp", "8dp", "8dp"
|
||||
md_bg_color: app.theme_cls.bg_normal
|
||||
|
|
|
|||
|
|
@ -1,4 +1,6 @@
|
|||
#:import os os
|
||||
#:import FILE_MANAGER_TOP_APP_BAR_ELEVATION kivymd.material_resources.FILE_MANAGER_TOP_APP_BAR_ELEVATION
|
||||
|
||||
|
||||
<BodyManager>
|
||||
icon: "folder"
|
||||
|
|
@ -74,7 +76,7 @@
|
|||
title: root.current_path
|
||||
right_action_items: [["close-box", lambda x: root.exit_manager(1)]]
|
||||
left_action_items: [["chevron-left", lambda x: root.back()]]
|
||||
elevation: 3
|
||||
elevation: FILE_MANAGER_TOP_APP_BAR_ELEVATION
|
||||
md_bg_color:
|
||||
app.theme_cls.primary_color \
|
||||
if not root.background_color_toolbar else \
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@
|
|||
(0, 0)
|
||||
on_release: root.dispatch("on_release")
|
||||
on_press: root.dispatch("on_press")
|
||||
_no_ripple_effect: root._no_ripple_effect
|
||||
|
||||
SmartTileOverlayBox:
|
||||
id: box
|
||||
|
|
|
|||
|
|
@ -3,12 +3,10 @@
|
|||
|
||||
<MDLabel>
|
||||
disabled_color: self.theme_cls.disabled_hint_text_color
|
||||
# FIXME: Overriding the values of this property greatly affects application
|
||||
# performance. Especially when the application window is resized and a
|
||||
# custom font is used. Performance is especially slow when you are using
|
||||
# `PIL` as your text processing provider - os.environ ['KIVY_TEXT'] = 'pil'.
|
||||
# Priority - CRITICAL.
|
||||
text_size: self.width, None
|
||||
text_size:
|
||||
(self.width if not self.adaptive_width else None) \
|
||||
if not self.adaptive_size else None, \
|
||||
None
|
||||
|
||||
|
||||
<MDIcon>:
|
||||
|
|
@ -16,6 +14,7 @@
|
|||
Color:
|
||||
rgba: (1, 1, 1, 1) if self.source else (0, 0, 0, 0)
|
||||
Rectangle:
|
||||
group: "rectangle"
|
||||
source: self.source if self.source else None
|
||||
pos:
|
||||
self.pos \
|
||||
|
|
@ -32,6 +31,7 @@
|
|||
|
||||
# Badge icon.
|
||||
MDLabel:
|
||||
id: badge
|
||||
font_style: "Icon"
|
||||
adaptive_size: True
|
||||
opposite_icon_color: True
|
||||
|
|
@ -62,6 +62,7 @@
|
|||
if root.badge_icon else \
|
||||
(0, 0, 0, 0)
|
||||
RoundedRectangle:
|
||||
group: "badge"
|
||||
radius: [self.width / 2,]
|
||||
pos: self.pos
|
||||
size: self.size
|
||||
|
|
|
|||
|
|
@ -1,26 +1,9 @@
|
|||
#:import STANDARD_INCREMENT kivymd.material_resources.STANDARD_INCREMENT
|
||||
|
||||
|
||||
<RightContent>
|
||||
adaptive_width: True
|
||||
|
||||
|
||||
<MDMenuItemIcon>
|
||||
|
||||
IconLeftWidget:
|
||||
id: icon_widget
|
||||
icon: root.icon
|
||||
|
||||
|
||||
<MDMenu>
|
||||
size_hint: None, None
|
||||
width: root.width_mult * STANDARD_INCREMENT
|
||||
bar_width: 0
|
||||
key_viewclass: "viewclass"
|
||||
key_size: "height"
|
||||
|
||||
RecycleBoxLayout:
|
||||
padding: 0, "4dp", 0, "4dp"
|
||||
default_size: None, dp(48)
|
||||
default_size_hint: 1, None
|
||||
size_hint_y: None
|
||||
|
|
@ -28,32 +11,478 @@
|
|||
orientation: "vertical"
|
||||
|
||||
|
||||
<MenuContainer@MDCard>
|
||||
<MDDropdownTrailingTextItem>
|
||||
orientation: "vertical"
|
||||
|
||||
MDBoxLayout:
|
||||
id: container
|
||||
spacing: "12dp"
|
||||
padding: "12dp", 0, "12dp", 0
|
||||
|
||||
MDLabel:
|
||||
text: root.text
|
||||
pos_hint: {"center_y": .5}
|
||||
theme_text_color: "Custom" if root.text_color else "Primary"
|
||||
shorten: True
|
||||
shorten_from: "right"
|
||||
size_hint_x: None
|
||||
width:
|
||||
root.width - \
|
||||
( \
|
||||
+ trailing_container.width \
|
||||
+ container.padding[0] \
|
||||
+ container.padding[2] \
|
||||
+ container.spacing \
|
||||
)
|
||||
text_color:
|
||||
root.text_color \
|
||||
if root.text_color else \
|
||||
app.theme_cls.text_color
|
||||
|
||||
MDTrailingTextContainer:
|
||||
id: trailing_container
|
||||
text: root.trailing_text
|
||||
adaptive_width: True
|
||||
theme_text_color: "Custom" if root.trailing_text_color else "Primary"
|
||||
text_color:
|
||||
root.trailing_text_color \
|
||||
if root.trailing_text_color else \
|
||||
app.theme_cls.text_color
|
||||
|
||||
MDSeparator:
|
||||
md_bg_color:
|
||||
( \
|
||||
self.theme_cls.divider_color \
|
||||
if not root.divider_color \
|
||||
else root.divider_color \
|
||||
) \
|
||||
if root.divider else \
|
||||
(0, 0, 0, 0)
|
||||
|
||||
|
||||
<MDDropdownLeadingIconTrailingTextItem>
|
||||
orientation: "vertical"
|
||||
|
||||
MDBoxLayout:
|
||||
id: container
|
||||
spacing: "12dp"
|
||||
padding: "10dp", 0, "16dp", 0
|
||||
|
||||
MDIcon:
|
||||
id: leading_icon
|
||||
icon: root.leading_icon
|
||||
size_hint: None, None
|
||||
size: "48dp", "48dp"
|
||||
pos_hint: {"center_y": .5}
|
||||
theme_text_color: "Custom" if root.leading_icon_color else "Primary"
|
||||
text_color:
|
||||
root.leading_icon_color \
|
||||
if root.leading_icon_color else \
|
||||
app.theme_cls.text_color
|
||||
|
||||
MDLabel:
|
||||
text: root.text
|
||||
pos_hint: {"center_y": .5}
|
||||
theme_text_color: "Custom" if root.text_color else "Primary"
|
||||
shorten: True
|
||||
shorten_from: "right"
|
||||
size_hint_x: None
|
||||
width:
|
||||
root.width - \
|
||||
( \
|
||||
leading_icon.width \
|
||||
+ trailing_container.width \
|
||||
+ container.padding[0] \
|
||||
+ container.padding[2] \
|
||||
+ container.spacing \
|
||||
+ dp(18) \
|
||||
)
|
||||
text_color:
|
||||
root.text_color \
|
||||
if root.text_color else \
|
||||
app.theme_cls.text_color
|
||||
|
||||
Widget:
|
||||
|
||||
MDTrailingTextContainer:
|
||||
id: trailing_container
|
||||
text: root.trailing_text
|
||||
adaptive_width: True
|
||||
theme_text_color: "Custom" if root.trailing_text_color else "Primary"
|
||||
text_color:
|
||||
root.trailing_text_color \
|
||||
if root.trailing_text_color else \
|
||||
app.theme_cls.text_color
|
||||
|
||||
MDSeparator:
|
||||
md_bg_color:
|
||||
( \
|
||||
self.theme_cls.divider_color \
|
||||
if not root.divider_color \
|
||||
else root.divider_color \
|
||||
) \
|
||||
if root.divider else \
|
||||
(0, 0, 0, 0)
|
||||
|
||||
|
||||
<MDDropdownTrailingIconItem>
|
||||
orientation: "vertical"
|
||||
|
||||
MDBoxLayout:
|
||||
id: container
|
||||
spacing: "12dp"
|
||||
padding: "12dp", 0, "12dp", 0
|
||||
|
||||
MDLabel:
|
||||
id: label
|
||||
text: root.text
|
||||
shorten: True
|
||||
size_hint_x: None
|
||||
shorten_from: "right"
|
||||
pos_hint: {"center_y": .5}
|
||||
theme_text_color: "Custom" if root.text_color else "Primary"
|
||||
shorten: True
|
||||
shorten_from: "right"
|
||||
width:
|
||||
root.width - \
|
||||
( \
|
||||
+ trailing_icon.width \
|
||||
+ container.padding[0] \
|
||||
+ container.padding[2] \
|
||||
+ container.spacing \
|
||||
+ dp(18) \
|
||||
)
|
||||
text_color:
|
||||
root.text_color \
|
||||
if root.text_color else \
|
||||
app.theme_cls.text_color
|
||||
|
||||
Widget:
|
||||
|
||||
MDIcon:
|
||||
id: trailing_icon
|
||||
size_hint: None, None
|
||||
size: "48dp", "48dp"
|
||||
pos_hint: {"center_y": .5}
|
||||
icon: root.trailing_icon
|
||||
theme_text_color: "Custom" if root.trailing_icon_color else "Primary"
|
||||
text_color:
|
||||
root.trailing_icon_color \
|
||||
if root.trailing_icon_color else \
|
||||
app.theme_cls.text_color
|
||||
|
||||
MDSeparator:
|
||||
md_bg_color:
|
||||
( \
|
||||
self.theme_cls.divider_color \
|
||||
if not root.divider_color \
|
||||
else root.divider_color \
|
||||
) \
|
||||
if root.divider else \
|
||||
(0, 0, 0, 0)
|
||||
|
||||
|
||||
<MDTrailingIconTextContainer>
|
||||
adaptive_width: True
|
||||
|
||||
MDIcon:
|
||||
icon: root.trailing_icon
|
||||
size_hint: None, None
|
||||
size: "48dp", "48dp"
|
||||
pos_hint: {"center_y": .5}
|
||||
theme_text_color: "Custom" if root.trailing_icon_color else "Primary"
|
||||
text_color:
|
||||
root.trailing_icon_color \
|
||||
if root.trailing_icon_color else \
|
||||
app.theme_cls.text_color
|
||||
|
||||
MDLabel:
|
||||
text: root.trailing_text
|
||||
adaptive_size: True
|
||||
pos_hint: {"center_y": .5}
|
||||
theme_text_color: "Custom" if root.trailing_text_color else "Primary"
|
||||
text_color:
|
||||
root.trailing_text_color \
|
||||
if root.trailing_text_color else \
|
||||
app.theme_cls.text_color
|
||||
|
||||
|
||||
<MDDropdownTrailingIconTextItem>
|
||||
orientation: "vertical"
|
||||
|
||||
MDBoxLayout:
|
||||
id: container
|
||||
spacing: "12dp"
|
||||
padding: "12dp", 0, "12dp", 0
|
||||
|
||||
MDLabel:
|
||||
id: label
|
||||
text: root.text
|
||||
shorten: True
|
||||
size_hint_x: None
|
||||
shorten_from: "right"
|
||||
pos_hint: {"center_y": .5}
|
||||
theme_text_color: "Custom" if root.text_color else "Primary"
|
||||
shorten: True
|
||||
shorten_from: "right"
|
||||
width:
|
||||
root.width - \
|
||||
( \
|
||||
+ trailing_container.width \
|
||||
+ container.padding[0] \
|
||||
+ container.padding[2] \
|
||||
+ container.spacing \
|
||||
)
|
||||
text_color:
|
||||
root.text_color \
|
||||
if root.text_color else \
|
||||
app.theme_cls.text_color
|
||||
|
||||
MDTrailingIconTextContainer:
|
||||
id: trailing_container
|
||||
trailing_icon: root.trailing_icon
|
||||
trailing_text: root.trailing_text
|
||||
trailing_text_color: root.trailing_text_color
|
||||
trailing_icon_color: root.trailing_icon_color
|
||||
|
||||
MDSeparator:
|
||||
md_bg_color:
|
||||
( \
|
||||
self.theme_cls.divider_color \
|
||||
if not root.divider_color \
|
||||
else root.divider_color \
|
||||
) \
|
||||
if root.divider else \
|
||||
(0, 0, 0, 0)
|
||||
|
||||
|
||||
<MDDropdownTextItem>
|
||||
orientation: "vertical"
|
||||
|
||||
MDLabel:
|
||||
text: root.text
|
||||
valign: "center"
|
||||
padding_x: "12dp"
|
||||
theme_text_color: "Custom" if root.text_color else "Primary"
|
||||
shorten: True
|
||||
shorten_from: "right"
|
||||
text_color:
|
||||
root.text_color \
|
||||
if root.text_color else \
|
||||
app.theme_cls.text_color
|
||||
|
||||
MDSeparator:
|
||||
md_bg_color:
|
||||
( \
|
||||
self.theme_cls.divider_color \
|
||||
if not root.divider_color \
|
||||
else root.divider_color \
|
||||
) \
|
||||
if root.divider else \
|
||||
(0, 0, 0, 0)
|
||||
|
||||
|
||||
<MDDropdownLeadingTrailingIconTextItem>
|
||||
orientation: "vertical"
|
||||
|
||||
MDBoxLayout:
|
||||
id: container
|
||||
spacing: "12dp"
|
||||
padding: "10dp", 0, "16dp", 0
|
||||
|
||||
MDIcon:
|
||||
id: leading_icon
|
||||
icon: root.leading_icon
|
||||
size_hint: None, None
|
||||
size: "48dp", "48dp"
|
||||
pos_hint: {"center_y": .5}
|
||||
theme_text_color: "Custom" if root.leading_icon_color else "Primary"
|
||||
text_color:
|
||||
root.leading_icon_color \
|
||||
if root.leading_icon_color else \
|
||||
app.theme_cls.text_color
|
||||
|
||||
MDLabel:
|
||||
text: root.text
|
||||
pos_hint: {"center_y": .5}
|
||||
theme_text_color: "Custom" if root.text_color else "Primary"
|
||||
shorten: True
|
||||
shorten_from: "right"
|
||||
size_hint_x: None
|
||||
width:
|
||||
root.width - \
|
||||
( \
|
||||
leading_icon.width \
|
||||
+ trailing_container.width \
|
||||
+ container.padding[0] \
|
||||
+ container.padding[2] \
|
||||
+ container.spacing \
|
||||
+ dp(18) \
|
||||
)
|
||||
text_color:
|
||||
root.text_color \
|
||||
if root.text_color else \
|
||||
app.theme_cls.text_color
|
||||
|
||||
Widget:
|
||||
|
||||
MDTrailingIconTextContainer:
|
||||
id: trailing_container
|
||||
trailing_icon: root.trailing_icon
|
||||
trailing_text: root.trailing_text
|
||||
trailing_icon_color: root.trailing_icon_color
|
||||
trailing_text_color: root.trailing_text_color
|
||||
|
||||
MDSeparator:
|
||||
md_bg_color:
|
||||
( \
|
||||
self.theme_cls.divider_color \
|
||||
if not root.divider_color \
|
||||
else root.divider_color \
|
||||
) \
|
||||
if root.divider else \
|
||||
(0, 0, 0, 0)
|
||||
|
||||
|
||||
<MDDropdownLeadingTrailingIconItem>
|
||||
orientation: "vertical"
|
||||
|
||||
MDBoxLayout:
|
||||
id: container
|
||||
spacing: "12dp"
|
||||
padding: "10dp", 0, "12dp", 0
|
||||
|
||||
MDIcon:
|
||||
id: leading_icon
|
||||
icon: root.leading_icon
|
||||
size_hint: None, None
|
||||
size: "48dp", "48dp"
|
||||
pos_hint: {"center_y": .5}
|
||||
theme_text_color: "Custom" if root.leading_icon_color else "Primary"
|
||||
text_color:
|
||||
root.leading_icon_color \
|
||||
if root.leading_icon_color else \
|
||||
app.theme_cls.text_color
|
||||
|
||||
MDLabel:
|
||||
id: label
|
||||
text: root.text
|
||||
shorten: True
|
||||
size_hint_x: None
|
||||
shorten_from: "right"
|
||||
pos_hint: {"center_y": .5}
|
||||
theme_text_color: "Custom" if root.text_color else "Primary"
|
||||
shorten: True
|
||||
shorten_from: "right"
|
||||
width:
|
||||
root.width - \
|
||||
( \
|
||||
leading_icon.width \
|
||||
+ trailing_icon.width \
|
||||
+ container.padding[0] \
|
||||
+ container.padding[2] \
|
||||
+ container.spacing \
|
||||
+ dp(18) \
|
||||
)
|
||||
text_color:
|
||||
root.text_color \
|
||||
if root.text_color else \
|
||||
app.theme_cls.text_color
|
||||
|
||||
Widget:
|
||||
|
||||
MDIcon:
|
||||
id: trailing_icon
|
||||
size_hint: None, None
|
||||
size: "48dp", "48dp"
|
||||
pos_hint: {"center_y": .5}
|
||||
icon: root.trailing_icon
|
||||
theme_text_color: "Custom" if root.trailing_icon_color else "Primary"
|
||||
text_color:
|
||||
root.trailing_icon_color \
|
||||
if root.trailing_icon_color else \
|
||||
app.theme_cls.text_color
|
||||
|
||||
MDSeparator:
|
||||
md_bg_color:
|
||||
( \
|
||||
self.theme_cls.divider_color \
|
||||
if not root.divider_color \
|
||||
else root.divider_color \
|
||||
) \
|
||||
if root.divider else \
|
||||
(0, 0, 0, 0)
|
||||
|
||||
|
||||
<MDDropdownLeadingIconItem>
|
||||
orientation: "vertical"
|
||||
|
||||
MDBoxLayout:
|
||||
id: container
|
||||
spacing: "12dp"
|
||||
padding: "12dp", 0, "12dp", 0
|
||||
|
||||
MDIcon:
|
||||
id: leading_icon
|
||||
icon: root.leading_icon
|
||||
size_hint: None, None
|
||||
size: "48dp", "48dp"
|
||||
pos_hint: {"center_y": .5}
|
||||
theme_text_color: "Custom" if root.leading_icon_color else "Primary"
|
||||
text_color:
|
||||
root.leading_icon_color \
|
||||
if root.leading_icon_color else \
|
||||
app.theme_cls.text_color
|
||||
|
||||
MDLabel:
|
||||
id: label
|
||||
text: root.text
|
||||
shorten: True
|
||||
size_hint_x: None
|
||||
shorten_from: "right"
|
||||
pos_hint: {"center_y": .5}
|
||||
theme_text_color: "Custom" if root.text_color else "Primary"
|
||||
shorten: True
|
||||
shorten_from: "right"
|
||||
width:
|
||||
root.width - \
|
||||
( \
|
||||
leading_icon.width \
|
||||
+ container.padding[0] \
|
||||
+ container.padding[2] \
|
||||
+ container.spacing \
|
||||
)
|
||||
text_color:
|
||||
root.text_color \
|
||||
if root.text_color else \
|
||||
app.theme_cls.text_color
|
||||
|
||||
MDSeparator:
|
||||
md_bg_color:
|
||||
( \
|
||||
self.theme_cls.divider_color \
|
||||
if not root.divider_color \
|
||||
else root.divider_color \
|
||||
) \
|
||||
if root.divider else \
|
||||
(0, 0, 0, 0)
|
||||
|
||||
|
||||
<MDDropdownMenu>
|
||||
orientation: "vertical"
|
||||
elevation: root.elevation
|
||||
shadow_radius: root.shadow_radius
|
||||
shadow_softness: root.shadow_softness
|
||||
shadow_offset: root.shadow_offset
|
||||
shadow_color: root.shadow_color
|
||||
shadow_color: root.shadow_color
|
||||
radius: root.radius
|
||||
size_hint: None, None
|
||||
|
||||
MenuContainer:
|
||||
id: card
|
||||
orientation: "vertical"
|
||||
elevation: root.elevation
|
||||
size_hint: None, None
|
||||
size: md_menu.size[0], md_menu.size[1] + content_header.height
|
||||
pos: md_menu.pos
|
||||
opacity: md_menu.opacity
|
||||
radius: root.radius
|
||||
md_bg_color:
|
||||
root.background_color \
|
||||
if root.background_color else root.theme_cls.bg_dark
|
||||
MDBoxLayout:
|
||||
id: content_header
|
||||
adaptive_size: True
|
||||
|
||||
MDBoxLayout:
|
||||
id: content_header
|
||||
adaptive_size: True
|
||||
|
||||
MDMenu:
|
||||
id: md_menu
|
||||
drop_cls: root
|
||||
width_mult: root.width_mult
|
||||
size_hint: None, None
|
||||
size: 0, 0
|
||||
opacity: 0
|
||||
MDMenu:
|
||||
id: md_menu
|
||||
drop_cls: root
|
||||
|
|
|
|||
|
|
@ -371,6 +371,7 @@
|
|||
adaptive_height: True
|
||||
size_hint_x: None
|
||||
spacing: dp(8)
|
||||
opacity: 0
|
||||
width:
|
||||
self.owner.width - dp(48) \
|
||||
if root.owner.theme_cls.device_orientation == "portrait" \
|
||||
|
|
@ -386,7 +387,6 @@
|
|||
|
||||
<DatePickerInputField>
|
||||
mode: "fill"
|
||||
opacity: 0
|
||||
hint_text: "dd/mm/yyyy"
|
||||
input_filter: root.input_filter
|
||||
fill_color: root.owner.input_field_background_color or (0, 0, 0, .15)
|
||||
|
|
|
|||
|
|
@ -6,7 +6,8 @@
|
|||
self.theme_cls.divider_color \
|
||||
if not self.back_color else \
|
||||
self.back_color
|
||||
Rectangle:
|
||||
RoundedRectangle:
|
||||
radius: root.radius
|
||||
size:
|
||||
(self.width, self.height) \
|
||||
if self.orientation == "horizontal" else \
|
||||
|
|
@ -18,7 +19,8 @@
|
|||
Color:
|
||||
rgba:
|
||||
self.theme_cls.primary_color if not self.color else self.color
|
||||
Rectangle:
|
||||
RoundedRectangle:
|
||||
radius: root.radius
|
||||
size:
|
||||
(self.width * self.value_normalized, self.height if self.height else dp(4)) \
|
||||
if self.orientation == "horizontal" else \
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@
|
|||
canvas:
|
||||
Clear
|
||||
Color:
|
||||
rgba: root.theme_cls.primary_dark
|
||||
rgba: root.circle_color
|
||||
Ellipse:
|
||||
pos: self.pos
|
||||
size: self.size
|
||||
|
|
@ -24,4 +24,4 @@
|
|||
id: spinner
|
||||
size_hint: None, None
|
||||
size: dp(30), dp(30)
|
||||
color: 1, 1, 1, 1
|
||||
color: root.spinner_color
|
||||
|
|
|
|||
|
|
@ -0,0 +1,32 @@
|
|||
<MDSegmentedButton>
|
||||
size_hint: None, None
|
||||
height: "40dp"
|
||||
opacity: 0
|
||||
|
||||
|
||||
<MDSegmentedButtonItem>
|
||||
size_hint: None, None
|
||||
height: self.parent.height
|
||||
line_color:
|
||||
self.theme_cls.disabled_hint_text_color \
|
||||
if self.parent.line_color == [0, 0, 0, 0] else \
|
||||
self.parent.line_color
|
||||
|
||||
SegmentButtonIcon:
|
||||
id: scale_icon
|
||||
icon: root.icon
|
||||
size_hint: None, None
|
||||
size: "24dp", "24dp"
|
||||
pos_hint: {"center_y": .5}
|
||||
scale_value_x: 1 if root.icon else 0
|
||||
scale_value_y: 1 if root.icon else 0
|
||||
x: label_text.x - dp(32)
|
||||
|
||||
MDLabel:
|
||||
id: label_text
|
||||
text: root.text
|
||||
adaptive_size: True
|
||||
pos_hint: {"center_y": .5}
|
||||
x:
|
||||
root.center_x - (self.texture_size[0] / 2) \
|
||||
+ (dp(16) if root.icon else 0)
|
||||
|
|
@ -1,3 +1,6 @@
|
|||
#:import SEGMENT_CONTROL_SEGMENT_SWITCH_ELEVATION kivymd.material_resources.SEGMENT_CONTROL_SEGMENT_SWITCH_ELEVATION
|
||||
|
||||
|
||||
<MDSegmentedControlItem>
|
||||
adaptive_height: True
|
||||
halign: "center"
|
||||
|
|
@ -15,8 +18,9 @@
|
|||
pos_hint: {"center_y": .5}
|
||||
x: root._segment_switch_x
|
||||
md_bg_color: root.segment_color
|
||||
elevation: 2
|
||||
elevation: SEGMENT_CONTROL_SEGMENT_SWITCH_ELEVATION
|
||||
_radius: root.radius[0] - 4
|
||||
shadow_radius: self._radius
|
||||
width:
|
||||
segment_panel.width / segment_panel.children_number \
|
||||
- segment_panel.spacing
|
||||
|
|
|
|||
|
|
@ -1,34 +1,28 @@
|
|||
#:import window kivy.core.window
|
||||
#:import SNACK_BAR_ELEVATION kivymd.material_resources.SNACK_BAR_ELEVATION
|
||||
#:import SNACK_BAR_OFFSET kivymd.material_resources.SNACK_BAR_OFFSET
|
||||
|
||||
|
||||
<BaseSnackbar>
|
||||
<MDSnackbar>
|
||||
padding: 0, 0, "8dp", 0
|
||||
size_hint_y: None
|
||||
height: "58dp"
|
||||
spacing: "10dp"
|
||||
padding: "10dp", "10dp", "10dp", "10dp"
|
||||
md_bg_color: "323232" if not root.bg_color else root.bg_color
|
||||
radius: root.radius
|
||||
elevation: 4 if root.padding else 0
|
||||
height: self.minimum_height
|
||||
md_bg_color: "#323232"
|
||||
elevation: SNACK_BAR_ELEVATION
|
||||
shadow_offset: SNACK_BAR_OFFSET
|
||||
|
||||
canvas:
|
||||
Color:
|
||||
rgba: self.md_bg_color
|
||||
RoundedRectangle:
|
||||
size: self.size
|
||||
pos: self.pos
|
||||
radius: self.radius
|
||||
|
||||
<Snackbar>
|
||||
|
||||
MDLabel:
|
||||
id: text_bar
|
||||
size_hint_y: None
|
||||
height: self.texture_size[1]
|
||||
text: root.text
|
||||
font_size: root.font_size
|
||||
theme_text_color: "Custom"
|
||||
text_color: "ffffff"
|
||||
shorten: True
|
||||
shorten_from: "right"
|
||||
markup: True
|
||||
SnackbarLabelContainer:
|
||||
id: label_container
|
||||
padding: "16dp", "15dp", 0, "15dp"
|
||||
orientation: "vertical"
|
||||
adaptive_height: True
|
||||
pos_hint: {"center_y": .5}
|
||||
spacing: "4dp"
|
||||
|
||||
SnackbarActionButtonContainer:
|
||||
id: action_container
|
||||
size_hint_x: None
|
||||
|
||||
SnackbarCloseButtonContainer:
|
||||
id: close_container
|
||||
size_hint_x: None
|
||||
width: "38dp"
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
|
||||
# "round" mode.
|
||||
Color:
|
||||
group: "round-color"
|
||||
rgba: self._fill_color if self.mode == "round" else (0, 0, 0, 0)
|
||||
Ellipse:
|
||||
angle_start: 180
|
||||
|
|
@ -19,49 +20,32 @@
|
|||
pos: (self.width - dp(18)) + self.x - self.height / 2.0, self.y
|
||||
size: self.height, self.height
|
||||
Rectangle:
|
||||
pos: self.x + dp(9), self.y
|
||||
size: self.width - dp(18), self.height
|
||||
pos: self.x + dp(14), self.y
|
||||
size: self.width - dp(28), self.height
|
||||
|
||||
Color:
|
||||
rgba:
|
||||
( \
|
||||
(self.line_color_focus if not self.error else self.error_color) \
|
||||
if self.focus \
|
||||
else self.theme_cls.disabled_hint_text_color \
|
||||
if self.focus else ( \
|
||||
self.theme_cls.disabled_hint_text_color \
|
||||
if not self.line_color_normal else \
|
||||
self.line_color_normal) \
|
||||
) \
|
||||
if self.mode == "round" else \
|
||||
(0, 0, 0, 0)
|
||||
Line:
|
||||
points:
|
||||
self.x + dp(18), \
|
||||
self.y, \
|
||||
self.x + self.width - dp(18), \
|
||||
self.y
|
||||
Line:
|
||||
points:
|
||||
self.x + dp(18), \
|
||||
self.y + self.height, \
|
||||
self.x + self.width - dp(18), \
|
||||
self.y + self.height
|
||||
Line:
|
||||
ellipse:
|
||||
self.x - self.height / 2 + dp(18), \
|
||||
SmoothLine:
|
||||
width: dp(1)
|
||||
rounded_rectangle:
|
||||
self.x, \
|
||||
self.y, \
|
||||
self.width, \
|
||||
self.height, \
|
||||
self.height, \
|
||||
180, \
|
||||
360
|
||||
Line:
|
||||
ellipse:
|
||||
self.width + self.x - self.height / 2.0 - dp(18), \
|
||||
self.y, \
|
||||
self.height, \
|
||||
self.height, \
|
||||
360, \
|
||||
540
|
||||
self.height / 2
|
||||
|
||||
# "fill" mode.
|
||||
Color:
|
||||
group: "fill-color"
|
||||
rgba: self._fill_color if self.mode == "fill" else (0, 0, 0, 0)
|
||||
RoundedRectangle:
|
||||
pos: self.x, self.y
|
||||
|
|
@ -70,6 +54,7 @@
|
|||
|
||||
# Static underline texture.
|
||||
Color:
|
||||
group: "static-underline-color"
|
||||
rgba:
|
||||
(self._line_color_normal \
|
||||
if self.line_color_normal else self.theme_cls.divider_color) \
|
||||
|
|
@ -82,6 +67,7 @@
|
|||
|
||||
# Active underline (on focus) texture.
|
||||
Color:
|
||||
group: "active-underline-color"
|
||||
rgba:
|
||||
self._line_color_focus \
|
||||
if self.mode in ("line", "fill") and self.active_line \
|
||||
|
|
@ -94,7 +80,10 @@
|
|||
|
||||
# Helper text texture.
|
||||
Color:
|
||||
group: "helper-text-color"
|
||||
rgba:
|
||||
self.theme_cls.disabled_hint_text_color \
|
||||
if self.disabled else \
|
||||
self._helper_text_color
|
||||
Rectangle:
|
||||
texture: self._helper_text_label.texture
|
||||
|
|
@ -106,7 +95,11 @@
|
|||
|
||||
# Right/left icon texture.
|
||||
Color:
|
||||
rgba: self._icon_right_color if self.icon_right else self._icon_left_color
|
||||
group: "right-left-icons-color"
|
||||
rgba:
|
||||
self.theme_cls.disabled_hint_text_color \
|
||||
if self.disabled else \
|
||||
(self._icon_right_color if self.icon_right else self._icon_left_color)
|
||||
Rectangle:
|
||||
texture:
|
||||
self._icon_right_label.texture if self.icon_right else self._icon_left_label.texture
|
||||
|
|
@ -137,7 +130,11 @@
|
|||
|
||||
# Max length texture.
|
||||
Color:
|
||||
rgba: self._max_length_text_color
|
||||
group: "max-length-color"
|
||||
rgba:
|
||||
self.theme_cls.disabled_hint_text_color \
|
||||
if self.disabled else \
|
||||
self._max_length_text_color
|
||||
Rectangle:
|
||||
texture: self._max_length_label.texture
|
||||
size: self._max_length_label.texture_size
|
||||
|
|
@ -160,9 +157,75 @@
|
|||
pos: (int(x) for x in self.cursor_pos)
|
||||
size: 1, -self.line_height
|
||||
|
||||
# Hint text texture.
|
||||
# "rectangle" mode
|
||||
Color:
|
||||
group: "rectangle-color"
|
||||
rgba:
|
||||
( \
|
||||
(self.line_color_focus if not self.error else self.error_color) \
|
||||
if self.focus else \
|
||||
self.line_color_normal \
|
||||
) \
|
||||
if self.mode == "rectangle" else \
|
||||
(0, 0, 0, 0)
|
||||
SmoothLine:
|
||||
width: dp(1)
|
||||
rounded_rectangle:
|
||||
self.x, \
|
||||
self.y, \
|
||||
self.width, \
|
||||
self.height - self._hint_text_label.texture_size[1] // 2, \
|
||||
root.radius[0]
|
||||
|
||||
# The background color line of the widget on which the text field
|
||||
# is placed (for background hint text texture).
|
||||
Color:
|
||||
rgba:
|
||||
( \
|
||||
( \
|
||||
self.parent.md_bg_color \
|
||||
if hasattr(self.parent, "md_bg_color") \
|
||||
and self.parent.md_bg_color != [1, 1, 1, 0] else \
|
||||
self.theme_cls.bg_normal \
|
||||
) \
|
||||
if self.focus else \
|
||||
( \
|
||||
(0, 0, 0, 0) if not self.text else \
|
||||
( \
|
||||
self.parent.md_bg_color \
|
||||
if hasattr(self.parent, "md_bg_color") \
|
||||
and self.parent.md_bg_color != [1, 1, 1, 0] else \
|
||||
self.theme_cls.bg_normal \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
if self.mode == "rectangle" else \
|
||||
(0, 0, 0, 0)
|
||||
SmoothLine:
|
||||
width: dp(2)
|
||||
points:
|
||||
self.x + dp(10), \
|
||||
self.top - self._hint_text_label.texture_size[1] // 2, \
|
||||
self.x + dp(16) + self._hint_text_label.texture_size[0], \
|
||||
self.top - self._hint_text_label.texture_size[1] // 2
|
||||
|
||||
# Text color.
|
||||
Color:
|
||||
group: "text-color"
|
||||
rgba:
|
||||
self.theme_cls.disabled_hint_text_color if self.disabled else \
|
||||
( \
|
||||
self.text_color_focus if self.focus else self._text_color_normal
|
||||
) \
|
||||
if not self.error else self.error_color
|
||||
|
||||
canvas.after:
|
||||
# Hint text texture.
|
||||
Color:
|
||||
group: "hint-text-color"
|
||||
rgba:
|
||||
self.theme_cls.disabled_hint_text_color \
|
||||
if self.disabled else \
|
||||
self._hint_text_color
|
||||
Rectangle:
|
||||
texture: self._hint_text_label.texture
|
||||
|
|
@ -184,34 +247,6 @@
|
|||
if self.mode != "line" else \
|
||||
dp(-6)) if self.mode != "rectangle" else dp(-4)) - self._hint_y
|
||||
|
||||
# "rectangle" mode
|
||||
Color:
|
||||
rgba:
|
||||
(self.line_color_focus if not self.error else self.error_color) \
|
||||
if self.focus else \
|
||||
self.line_color_normal
|
||||
Line:
|
||||
width: dp(1) if self.mode == "rectangle" else dp(0.00001)
|
||||
points:
|
||||
(
|
||||
self.x + self._line_blank_space_right_point,
|
||||
self.top - self._hint_text_label.texture_size[1] // 2,
|
||||
self.right, self.top - self._hint_text_label.texture_size[1] // 2,
|
||||
self.right, self.y,
|
||||
self.x, self.y,
|
||||
self.x, self.top - self._hint_text_label.texture_size[1] // 2,
|
||||
self.x + self._line_blank_space_left_point,
|
||||
self.top - self._hint_text_label.texture_size[1] // 2
|
||||
)
|
||||
|
||||
# Text color.
|
||||
Color:
|
||||
rgba:
|
||||
self.disabled_foreground_color if self.disabled else \
|
||||
( \
|
||||
self.text_color_focus if self.focus else self._text_color_normal
|
||||
) \
|
||||
if not self.error else self.error_color
|
||||
|
||||
font_name: "Roboto" if not self.font_name else self.font_name
|
||||
foreground_color: self.theme_cls.text_color
|
||||
|
|
|
|||
|
|
@ -0,0 +1,4 @@
|
|||
$HEADER$
|
||||
void main (void){
|
||||
gl_FragColor = frag_color * texture2D(texture0, tex_coord0);
|
||||
}
|
||||
|
After Width: | Height: | Size: 74 B |
|
|
@ -0,0 +1,6 @@
|
|||
$HEADER$
|
||||
void main (void) {
|
||||
frag_color = color * vec4(1.0, 1.0, 1.0, opacity);
|
||||
tex_coord0 = vTexCoords0;
|
||||
gl_Position = projection_mat * modelview_mat * vec4(vPosition.xy, 0.0, 1.0);
|
||||
}
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
#ifdef GL_ES
|
||||
precision highp float;
|
||||
#endif
|
||||
|
||||
/* Outputs from the vertex shader */
|
||||
varying vec4 frag_color;
|
||||
varying vec2 tex_coord0;
|
||||
|
||||
/* uniform texture samplers */
|
||||
uniform sampler2D texture0;
|
||||
|
||||
uniform mat4 frag_modelview_mat;
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
#ifdef GL_ES
|
||||
precision highp float;
|
||||
#endif
|
||||
|
||||
/* Outputs to the fragment shader */
|
||||
varying vec4 frag_color;
|
||||
varying vec2 tex_coord0;
|
||||
|
||||
/* vertex attributes */
|
||||
attribute vec2 vPosition;
|
||||
attribute vec2 vTexCoords0;
|
||||
|
||||
/* uniform variables */
|
||||
uniform mat4 modelview_mat;
|
||||
uniform mat4 projection_mat;
|
||||
uniform vec4 color;
|
||||
uniform float opacity;
|
||||
|
After Width: | Height: | Size: 8.5 KiB |
|
After Width: | Height: | Size: 138 B |
|
After Width: | Height: | Size: 4.0 KiB |
|
After Width: | Height: | Size: 53 KiB |
|
|
@ -0,0 +1 @@
|
|||
{"defaulttheme-0.png": {"progressbar_background": [392, 227, 24, 24], "tab_btn_disabled": [332, 137, 32, 32], "tab_btn_pressed": [400, 137, 32, 32], "image-missing": [152, 171, 48, 48], "splitter_h": [174, 123, 32, 7], "splitter_down": [11, 10, 7, 32], "splitter_disabled_down": [2, 10, 7, 32], "vkeyboard_key_down": [2, 44, 32, 32], "vkeyboard_disabled_key_down": [434, 137, 32, 32], "selector_right": [438, 326, 64, 64], "player-background": [2, 287, 103, 103], "selector_middle": [372, 326, 64, 64], "spinner": [204, 82, 29, 37], "tab_btn_disabled_pressed": [366, 137, 32, 32], "switch-button_disabled": [375, 291, 43, 32], "textinput_disabled_active": [134, 221, 64, 64], "splitter_grip": [70, 50, 12, 26], "vkeyboard_key_normal": [36, 44, 32, 32], "button_disabled": [111, 82, 29, 37], "media-playback-stop": [302, 171, 48, 48], "splitter": [502, 137, 7, 32], "splitter_down_h": [140, 123, 32, 7], "sliderh_background_disabled": [115, 132, 41, 37], "modalview-background": [464, 456, 45, 54], "button": [80, 82, 29, 37], "splitter_disabled": [501, 87, 7, 32], "checkbox_radio_disabled_on": [467, 87, 32, 32], "slider_cursor": [352, 171, 48, 48], "vkeyboard_disabled_background": [266, 221, 64, 64], "checkbox_disabled_on": [331, 87, 32, 32], "sliderv_background_disabled": [41, 78, 37, 41], "button_disabled_pressed": [142, 82, 29, 37], "audio-volume-muted": [102, 171, 48, 48], "close": [487, 173, 20, 20], "action_group_disabled": [2, 121, 33, 48], "vkeyboard_background": [200, 221, 64, 64], "checkbox_off": [365, 87, 32, 32], "tab_disabled": [107, 291, 96, 32], "sliderh_background": [72, 132, 41, 37], "switch-button": [430, 253, 43, 32], "tree_closed": [418, 231, 20, 20], "bubble_btn_pressed": [454, 291, 32, 32], "selector_left": [306, 326, 64, 64], "filechooser_file": [174, 326, 64, 64], "checkbox_radio_disabled_off": [433, 87, 32, 32], "checkbox_radio_on": [230, 137, 32, 32], "checkbox_on": [399, 87, 32, 32], "button_pressed": [173, 82, 29, 37], "audio-volume-high": [464, 406, 48, 48], "audio-volume-low": [2, 171, 48, 48], "progressbar": [332, 227, 32, 24], "previous_normal": [488, 291, 19, 32], "separator": [504, 342, 5, 48], "filechooser_folder": [240, 326, 64, 64], "checkbox_radio_off": [196, 137, 32, 32], "textinput_active": [68, 221, 64, 64], "textinput": [2, 221, 64, 64], "player-play-overlay": [122, 395, 117, 115], "media-playback-pause": [202, 171, 48, 48], "sliderv_background": [2, 78, 37, 41], "ring": [354, 402, 108, 108], "bubble_arrow": [490, 241, 16, 10], "slider_cursor_disabled": [402, 171, 48, 48], "checkbox_disabled_off": [297, 87, 32, 32], "action_group_down": [37, 121, 33, 48], "spinner_disabled": [235, 82, 29, 37], "splitter_disabled_h": [106, 123, 32, 7], "bubble": [107, 325, 65, 65], "media-playback-start": [252, 171, 48, 48], "vkeyboard_disabled_key_normal": [468, 137, 32, 32], "overflow": [264, 137, 32, 32], "tree_opened": [440, 231, 20, 20], "action_item": [487, 195, 24, 24], "bubble_btn": [420, 291, 32, 32], "audio-volume-medium": [52, 171, 48, 48], "action_group": [452, 171, 33, 48], "spinner_pressed": [266, 82, 29, 37], "filechooser_selected": [2, 392, 118, 118], "tab": [332, 253, 96, 32], "action_bar": [158, 133, 36, 36], "action_view": [366, 227, 24, 24], "tab_btn": [298, 137, 32, 32], "switch-background": [205, 291, 83, 32], "splitter_disabled_down_h": [72, 123, 32, 7], "action_item_down": [475, 253, 32, 32], "switch-background_disabled": [290, 291, 83, 32], "textinput_disabled": [241, 399, 111, 111], "splitter_grip_h": [462, 239, 26, 12]}}
|
||||
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 73 B |
|
|
@ -0,0 +1,68 @@
|
|||
{
|
||||
"title" : "Azerty",
|
||||
"description" : "A French keyboard without international keys",
|
||||
"cols" : 15,
|
||||
"rows": 5,
|
||||
"normal_1" : [
|
||||
["@", "@", "`", 1], ["&", "&", "1", 1], ["\u00e9", "\u00e9", "2", 1],
|
||||
["'", "'", "3", 1], ["\"", "\"", "4", 1], ["[", "[", "5", 1],
|
||||
["-", "-", "6", 1], ["\u00e8", "\u00e8", "7", 1], ["_", "_", "8", 1],
|
||||
["\u00e7", "\u00e7", "9", 1], ["\u00e0", "\u00e0", "0", 1], ["]", "]", "+", 1],
|
||||
["=", "=", "=", 1], ["\u232b", null, "backspace", 2]
|
||||
],
|
||||
"normal_2" : [
|
||||
["\u21B9", "\t", "tab", 1.5], ["a", "a", "a", 1], ["z", "z", "z", 1],
|
||||
["e", "e", "e", 1], ["r", "r", "r", 1], ["t", "t", "t", 1],
|
||||
["y", "y", "y", 1], ["u", "u", "u", 1], ["i", "i", "i", 1],
|
||||
["o", "o", "o", 1], ["p", "p", "p", 1], ["^", "^", "^", 1],
|
||||
["$", "$", "}", 1], ["\u23ce", null, "enter", 1.5]
|
||||
],
|
||||
"normal_3" : [
|
||||
["\u21ea", null, "capslock", 1.8], ["q", "q", "q", 1], ["s", "s", "s", 1],
|
||||
["d", "d", "d", 1], ["f", "f", "f", 1], ["g", "g", "g", 1],
|
||||
["h", "h", "h", 1], ["j", "j", "j", 1], ["k", "k", "k", 1],
|
||||
["l", "l", "l", 1], ["m", "m", "m", 1], ["\u00f9", "\u00f9", "%", 1],
|
||||
["*", "*", "*", 1], ["\u23ce", null, "enter", 1.2]
|
||||
],
|
||||
"normal_4" : [
|
||||
["\u21e7", null, "shift", 1.5], ["<", "<", null, 1], ["w", "w", null, 1],
|
||||
["x", "x", null, 1],
|
||||
["c", "c", null, 1], ["v", "v", null, 1], ["b", "b", null, 1],
|
||||
["n", "n", null, 1], [",", ",", null, 1], [";", ";", null, 1],
|
||||
[":", ":", null, 1], ["!", "!", null, 1], ["\u21e7", null, "shift", 2.5]
|
||||
],
|
||||
"normal_5" : [
|
||||
[" ", " ", "spacebar", 12], ["\u2b12", null, "layout", 1.5], ["\u2a2f", null, "escape", 1.5]
|
||||
],
|
||||
"shift_1" : [
|
||||
["|", "|", "|", 1], ["1", "1", "1", 1], ["2", "2", "2", 1],
|
||||
["3", "3", "3", 1], ["4", "4", "4", 1], ["5", "5", "5", 1],
|
||||
["6", "6", "6", 1], ["7", "7", "7", 1], ["8", "8", "8", 1],
|
||||
["9", "9", "9", 1], ["0", "0", "0", 1], ["#", "#", "#", 1],
|
||||
["+", "+", "+", 1], ["\u232b", null, "backspace", 2]
|
||||
],
|
||||
"shift_2" : [
|
||||
["\u21B9", "\t", "tab", 1.5], ["A", "A", "a", 1], ["Z", "Z", null, 1],
|
||||
["E", "E", "e", 1], ["R", "R", "r", 1], ["T", "T", "t", 1],
|
||||
["Y", "Y", "y", 1], ["U", "U", "u", 1], ["I", "I", "i", 1],
|
||||
["O", "O", "o", 1], ["P", "P", "p", 1], ["[", "[", "[", 1],
|
||||
["]", "]", "]", 1], ["\u23ce", null, "enter", 1.5]
|
||||
],
|
||||
"shift_3" : [
|
||||
["\u21ea", null, "capslock", 1.8], ["Q", "Q", "q", 1], ["S", "S", "s", 1],
|
||||
["D", "D", "d", 1], ["F", "F", "f", 1], ["G", "G", "g", 1],
|
||||
["H", "H", "h", 1], ["J", "J", "j", 1], ["K", "K", "k", 1],
|
||||
["L", "L", "l", 1], ["M", "M", "m", 1], ["%", "%", "%", 1],
|
||||
["\u00b5", "\u00b5", "*", 1], ["\u23ce", null, "enter", 1.2]
|
||||
],
|
||||
"shift_4" : [
|
||||
["\u21e7", null, "shift", 1.5], [">", ">", ">", 1], ["W", "W", "w", 1],
|
||||
["X", "X", "x", 1], ["C", "C", "c", 1], ["V", "V", "v", 1],
|
||||
["B", "B", "b", 1], ["N", "N", "n", 1], ["?", "?", "?", 1],
|
||||
[".", ".", ".", 1], ["/", "/", "/", 1], ["\u00a7", "\u00a7", "!", 1],
|
||||
["\u21e7", null, "shift", 2.5]
|
||||
],
|
||||
"shift_5" : [
|
||||
[" ", " ", "spacebar", 12], ["\u2b12", null, "layout", 1.5], ["\u2a2f", null, "escape", 1.5]
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,101 @@
|
|||
{
|
||||
"title": "de",
|
||||
"description": "A true German keyboard",
|
||||
"cols": 15,
|
||||
"rows": 5,
|
||||
"normal_1": [
|
||||
["^", "^", "^", 1], ["1", "1", "1", 1], ["2", "2", "2", 1],
|
||||
["3", "3", "3", 1], ["4", "4", "4", 1], ["5", "5", "5", 1],
|
||||
["6", "6", "6", 1], ["7", "7", "7", 1], ["8", "8", "8", 1],
|
||||
["9", "9", "9", 1], ["0", "0", "0", 1], ["ß", "ß", "ß", 1],
|
||||
["´", "´", "´", 1], ["\u232b", null, "backspace", 2]
|
||||
],
|
||||
"normal_2" : [
|
||||
["\u21B9", "\t", "tab", 1.5], ["q", "q", "q", 1], ["w", "w", "w", 1],
|
||||
["e", "e", "e", 1], ["r", "r", "r", 1], ["t", "t", "t", 1],
|
||||
["z", "z", "z", 1], ["u", "u", "´", 1], ["i", "i", "i", 1],
|
||||
["o", "o", "o", 1], ["p", "p", "p", 1], ["ü", "ü", "ü", 1],
|
||||
["+", "+", "+", 1], ["\u23ce", null, "enter", 1.5]
|
||||
],
|
||||
"normal_3": [
|
||||
["\u21ea", null, "capslock", 1.8], ["a", "a", "a", 1], ["s", "s", "s", 1],
|
||||
["d", "d", "d", 1], ["f", "f", "f", 1], ["g", "g", "g", 1],
|
||||
["h", "h", "h", 1], ["j", "j", "j", 1], ["k", "k", "k", 1],
|
||||
["l", "l", "l", 1], ["ö", "ö", "ö", 1], ["ä", "ä", "ä", 1],
|
||||
["#", "#", "#", 1], ["\u23ce", null, "enter", 1.2]
|
||||
],
|
||||
"normal_4": [
|
||||
["\u21e7", null, "shift", 1.5], ["<", "<", "<", 1], ["y", "y", "y", 1],
|
||||
["x", "x", "x", 1], ["c", "c", "c", 1], ["v", "v", "v", 1],
|
||||
["b", "b", "b", 1], ["n", "n", "n", 1], ["m", "m", "m", 1],
|
||||
[",", ",", ",", 1], [".", ".", ".", 1], ["-", "-", "-", 1],
|
||||
["\u21e7", null, "shift", 2.5]
|
||||
],
|
||||
"normal_5": [
|
||||
["@€¿", null, "special", 2.5], [" ", " ", "spacebar", 11], ["\u2a2f", null, "escape", 1.5]
|
||||
],
|
||||
|
||||
"shift_1": [
|
||||
["°", "°", "°", 1], ["!", "!", "!", 1], ["\"", "\"","\"", 1],
|
||||
["§", "§", "§", 1], ["$", "$", "$", 1], ["%", "%", "%", 1],
|
||||
["&", "&", "&", 1], ["/", "/", "/", 1], ["(", "(", "(", 1],
|
||||
[")", ")", ")", 1], ["=", "=", "=", 1], ["?", "?", "?", 1],
|
||||
["`", "`", "`", 1], ["\u232b", null, "backspace", 2]
|
||||
],
|
||||
"shift_2": [
|
||||
["\u21B9", "\t", "tab", 1.5], ["Q", "Q", null, 1], ["W", "W", null, 1],
|
||||
["E", "E", "e", 1], ["R", "R", "r", 1], ["T", "T", "t", 1],
|
||||
["Z", "Z", "z", 1], ["U", "U", "u", 1], ["I", "I", "i", 1],
|
||||
["O", "O", "o", 1], ["P", "P", "p", 1], ["Ü", "Ü", "Ü", 1],
|
||||
["*", "*", "*", 1], ["\u23ce", null, "enter", 1.5]
|
||||
],
|
||||
"shift_3": [
|
||||
["\u21ea", null, "capslock", 1.8], ["A", "A", "a", 1], ["S", "S", "s", 1],
|
||||
["D", "D", "d", 1], ["F", "F", "f", 1], ["G", "G", "g", 1],
|
||||
["H", "H", "h", 1], ["J", "J", "j", 1], ["K", "K", "k", 1],
|
||||
["L", "L", "l", 1], ["Ö", "Ö", "Ö", 1], ["Ä", "Ä", "Ä", 1],
|
||||
["'", "'", "'", 1], ["\u23ce", null, "enter", 1.2]
|
||||
],
|
||||
"shift_4": [
|
||||
["\u21e7", null, "shift", 1.5], [">", ">", ">", 1], ["Y", "Y", "Y", 1],
|
||||
["X", "X", "X", 1], ["C", "C", "C", 1], ["V", "V", "V", 1],
|
||||
["B", "B", "B", 1], ["N", "N", "N", 1], ["M", "M", "M", 1],
|
||||
[";", ";", ";", 1], [":", ":", ":", 1], ["_", "_", "_", 1],
|
||||
["\u21e7", null, "shift", 2.5]
|
||||
],
|
||||
"shift_5": [
|
||||
["@€¿", null, "special", 2.5], [" ", " ", "spacebar", 11], ["\u2a2f", null, "escape", 1.5]
|
||||
],
|
||||
|
||||
"special_1": [
|
||||
["„", "„", "„", 1], ["¡", "¡", "¡", 1], ["“", "“", "“", 1],
|
||||
["¶", "¶", "¶", 1], ["¢", "¢", "¢", 1], ["[", "[", "[", 1],
|
||||
["]", "]", "]", 1], ["|", "|", "|", 1], ["{", "{", "{", 1],
|
||||
["}", "}", "}", 1], ["≠", "≠", "≠", 1], ["¿", "¿", "¿", 1],
|
||||
["'", "'", "'", 1], ["\u232b", null, "backspace", 2]
|
||||
],
|
||||
"special_2": [
|
||||
["\u21B9", "\t", "tab", 1.5], ["@", "@", "@", 1], ["∑", "∑", "∑", 1],
|
||||
["€", "€", "€", 1], ["®", "®", "®", 1], ["†", "†", "†", 1],
|
||||
["Ω", "Ω", "Ω", 1], ["¨", "¨", "¨", 1], ["⁄", "⁄", "⁄", 1],
|
||||
["ø", "ø", "ø", 1], ["π", "π", "π", 1], ["•", "•", "•", 1],
|
||||
["±", "±", "±", 1], ["\u23ce", null, "enter", 1.5]
|
||||
],
|
||||
"special_3": [
|
||||
["\u21ea", null, "capslock", 1.8], ["æ", "æ", "æ", 1], ["‚", "‚", "‚", 1],
|
||||
["∂", "∂", "∂", 1], ["ƒ", "ƒ", "ƒ", 1], ["©", "©", "©", 1],
|
||||
["ª", "ª", "ª", 1], ["º", "º", "º", 1], ["∆", "∆", "∆", 1],
|
||||
["@", "@", "@", 1], ["œ", "œ", "œ", 1], ["æ", "æ", "æ", 1],
|
||||
["‘", "‘", "‘", 1], ["\u23ce", null, "enter", 1.2]
|
||||
],
|
||||
"special_4": [
|
||||
["\u21e7", null, "shift", 1.5], ["≤", "≤", "≤", 1], ["¥", "¥", "¥", 1],
|
||||
["≈", "≈", "≈", 1], ["ç", "ç", "ç", 1], ["√", "√", "√", 1],
|
||||
["∫", "∫", "∫", 1], ["~", "~", "~", 1], ["µ", "µ", "µ", 1],
|
||||
["∞", "∞", "∞", 1], ["…", "…", "…", 1], ["–", "–", "–", 1],
|
||||
["\u21e7", null, "shift", 2.5]
|
||||
],
|
||||
"special_5": [
|
||||
["@€¿", null, "special", 2.5], [" ", " ", "spacebar", 11], ["\u2a2f", null, "escape", 1.5]
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,98 @@
|
|||
{
|
||||
"title": "de_CH",
|
||||
"description": "A Swiss German keyboard, touch optimized (no shift+caps lock)",
|
||||
"cols": 15,
|
||||
"rows": 5,
|
||||
"normal_1": [
|
||||
["1", "1", "1", 1], ["2", "2", "2", 1], ["3", "3", "3", 1],
|
||||
["4", "4", "4", 1], ["5", "5", "5", 1], ["6", "6", "6", 1],
|
||||
["7", "7", "7", 1], ["8", "8", "8", 1], ["9", "9", "9", 1],
|
||||
["0", "0", "0", 1], ["@", "@", "@", 1], ["?", "?", "?", 1],
|
||||
["!", "!", "!", 1], ["\u232b", null, "backspace", 2]
|
||||
],
|
||||
"normal_2" : [
|
||||
["\u21B9", "\t", "tab", 1.5], ["q", "q", "q", 1], ["w", "w", "w", 1],
|
||||
["e", "e", "e", 1], ["r", "r", "r", 1], ["t", "t", "t", 1],
|
||||
["z", "z", "z", 1], ["u", "u", "u", 1], ["i", "i", "i", 1],
|
||||
["o", "o", "o", 1], ["p", "p", "p", 1], ["ü", "ü", "ü", 1],
|
||||
[":", ":", ":", 1], ["$", "$", "$", 1.5]
|
||||
],
|
||||
"normal_3": [
|
||||
["\u21ea", null, "capslock", 1.8], ["a", "a", "a", 1], ["s", "s", "s", 1],
|
||||
["d", "d", "d", 1], ["f", "f", "f", 1], ["g", "g", "g", 1],
|
||||
["h", "h", "h", 1], ["j", "j", "j", 1], ["k", "k", "k", 1],
|
||||
["l", "l", "l", 1], ["ö", "ö", "ö", 1], ["ä", "ä", "ä", 1],
|
||||
["\u23ce", null, "enter", 2.2]
|
||||
],
|
||||
"normal_4": [
|
||||
["\u21e7", null, "shift", 2.5], ["y", "y", "y", 1], ["x", "x", "x", 1],
|
||||
["c", "c", "c", 1], ["v", "v", "v", 1], ["b", "b", "b", 1],
|
||||
["n", "n", "n", 1], ["m", "m", "m", 1], [",", ",", ",", 1],
|
||||
[".", ".", ".", 1], ["-", "-", "-", 1], ["\u21e7", null, "shift", 2.5]
|
||||
],
|
||||
"normal_5": [
|
||||
["#+=", null, "special", 2.5], [" ", " ", "spacebar", 11], ["\u2a2f", null, "escape", 1.5]
|
||||
],
|
||||
|
||||
"shift_1": [
|
||||
["1", "1", "1", 1], ["2", "2", "2", 1], ["3", "3", "3", 1],
|
||||
["4", "4", "4", 1], ["5", "5", "5", 1], ["6", "6", "6", 1],
|
||||
["7", "7", "7", 1], ["8", "8", "8", 1], ["9", "9", "9", 1],
|
||||
["0", "0", "0", 1], ["@", "@", "@", 1], ["?", "?", "?", 1],
|
||||
["!", "!", "!", 1], ["\u232b", null, "backspace", 2]
|
||||
],
|
||||
"shift_2": [
|
||||
["\u21B9", "\t", "tab", 1.5], ["Q", "Q", null, 1], ["W", "W", null, 1],
|
||||
["E", "E", "e", 1], ["R", "R", "r", 1], ["T", "T", "t", 1],
|
||||
["Z", "Z", "z", 1], ["U", "U", "u", 1], ["I", "I", "i", 1],
|
||||
["O", "O", "o", 1], ["P", "P", "p", 1], ["Ü", "Ü", "Ü", 1],
|
||||
[":", ":", ":", 1], ["/", "/", "/", 1.5]
|
||||
],
|
||||
"shift_3": [
|
||||
["\u21ea", null, "capslock", 1.8], ["A", "A", "a", 1], ["S", "S", "s", 1],
|
||||
["D", "D", "d", 1], ["F", "F", "f", 1], ["G", "G", "g", 1],
|
||||
["H", "H", "h", 1], ["J", "J", "j", 1], ["K", "K", "k", 1],
|
||||
["L", "L", "l", 1], ["Ö", "Ö", "Ö", 1], ["Ä", "Ä", "Ä", 1],
|
||||
["\u23ce", null, "enter", 2.2]
|
||||
],
|
||||
"shift_4": [
|
||||
["\u21e7", null, "shift", 2.5], ["Y", "Y", "y", 1], ["X", "X", "x", 1],
|
||||
["C", "C", "c", 1], ["V", "V", "v", 1], ["B", "B", "b", 1],
|
||||
["N", "N", "n", 1], ["M", "M", "m", 1], [";", ";", ";", 1],
|
||||
[":", ":", ":", 1], ["_", "_", "_", 1], ["\u21e7", null, "shift", 2.5]
|
||||
],
|
||||
"shift_5": [
|
||||
["#+=", null, "special", 2.5], [" ", " ", "spacebar", 11], ["\u2a2f", null, "escape", 1.5]
|
||||
],
|
||||
|
||||
"special_1": [
|
||||
["1", "1", "1", 1], ["2", "2", "2", 1], ["3", "3", "3", 1],
|
||||
["4", "4", "4", 1], ["5", "5", "5", 1], ["6", "6", "6", 1],
|
||||
["7", "7", "7", 1], ["8", "8", "8", 1], ["9", "9", "9", 1],
|
||||
["0", "0", "0", 1], ["@", "@", "@", 1], ["?", "?", "?", 1],
|
||||
["!", "!", "!", 1], ["\u232b", null, "backspace", 2]
|
||||
],
|
||||
"special_2": [
|
||||
["\u21B9", "\t", "tab", 1.5], ["(", "(", "(", 1], [")", ")", ")", 1],
|
||||
["{", "{", "{", 1], ["}", "}", "}", 1], ["[", "[", "[", 1],
|
||||
["]", "]", "]", 1], ["€", "€", "€", 1], ["$", "$", "$", 1],
|
||||
["£", "£", "£", 1], ["¥", "¥", "¥", 1], ["è", "è", "è", 1],
|
||||
["•", "•", "•", 1], ["|", "|", "|", 1.5]
|
||||
],
|
||||
"special_3": [
|
||||
["\u21ea", null, "capslock", 1.8], ["“", "“", "“", 1], ["`", "`", "`", 1],
|
||||
["«", "«", "«", 1], ["»", "»", "»", 1], ["#", "#", "#", 1],
|
||||
["%", "%", "%", 1], ["^", "^", "^", 1], ["°", "°", "°", 1],
|
||||
["&", "&", "&", 1], ["é", "é", "é", 1], ["à", "à", "à", 1],
|
||||
["\u23ce", null, "enter", 2.2]
|
||||
],
|
||||
"special_4": [
|
||||
["\u21e7", null, "shift", 2.5], ["+", "+", "+", 1], ["=", "=", "=", 1],
|
||||
["<", "<", "<", 1], [">", ">", ">", 1], ["*", "*", "*", 1],
|
||||
["È", "È", "È", 1], ["É", "É", "É", 1], ["À", "À", "À", 1],
|
||||
[":", ":", ":", 1], ["_", "_", "_", 1], ["\u21e7", null, "shift", 2.5]
|
||||
],
|
||||
"special_5": [
|
||||
["#+=", null, "special", 2.5], [" ", " ", "spacebar", 11], ["\u2a2f", null, "escape", 1.5]
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,98 @@
|
|||
{
|
||||
"title": "en_US",
|
||||
"description": "A US Keyboard, touch optimized (no shift+caps lock)",
|
||||
"cols": 15,
|
||||
"rows": 5,
|
||||
"normal_1": [
|
||||
["1", "1", "1", 1], ["2", "2", "2", 1], ["3", "3", "3", 1],
|
||||
["4", "4", "4", 1], ["5", "5", "5", 1], ["6", "6", "6", 1],
|
||||
["7", "7", "7", 1], ["8", "8", "8", 1], ["9", "9", "9", 1],
|
||||
["0", "0", "0", 1], ["@", "@", "@", 1], ["?", "?", "?", 1],
|
||||
["!", "!", "!", 1], ["\u232b", null, "backspace", 2]
|
||||
],
|
||||
"normal_2" : [
|
||||
["\u21B9", "\t", "tab", 1.5], ["q", "q", "q", 1], ["w", "w", "w", 1],
|
||||
["e", "e", "e", 1], ["r", "r", "r", 1], ["t", "t", "t", 1],
|
||||
["y", "y", "y", 1], ["u", "u", "u", 1], ["i", "i", "i", 1],
|
||||
["o", "o", "o", 1], ["p", "p", "p", 1], ["[", "[", "[", 1],
|
||||
["]", "]", "]", 1], ["\\", "\\", "\\", 1.5]
|
||||
],
|
||||
"normal_3": [
|
||||
["\u21ea", null, "capslock", 1.8], ["a", "a", "a", 1], ["s", "s", "s", 1],
|
||||
["d", "d", "d", 1], ["f", "f", "f", 1], ["g", "g", "g", 1],
|
||||
["h", "h", "h", 1], ["j", "j", "j", 1], ["k", "k", "k", 1],
|
||||
["l", "l", "l", 1], [";", ";", ";", 1], ["'", "'", "'", 1],
|
||||
["\u23ce", null, "enter", 2.2]
|
||||
],
|
||||
"normal_4": [
|
||||
["\u21e7", null, "shift", 2.5], ["z", "z", "z", 1], ["x", "x", "x", 1],
|
||||
["c", "c", "c", 1], ["v", "v", "v", 1], ["b", "b", "b", 1],
|
||||
["n", "n", "n", 1], ["m", "m", "m", 1], [",", ",", ",", 1],
|
||||
[".", ".", ".", 1], ["/", "/", "/", 1], ["\u21e7", null, "shift", 2.5]
|
||||
],
|
||||
"normal_5": [
|
||||
["#+=", null, "special", 2.5], [" ", " ", "spacebar", 11], ["\u2a2f", null, "escape", 1.5]
|
||||
],
|
||||
|
||||
"shift_1": [
|
||||
["1", "1", "1", 1], ["2", "2", "2", 1], ["3", "3", "3", 1],
|
||||
["4", "4", "4", 1], ["5", "5", "5", 1], ["6", "6", "6", 1],
|
||||
["7", "7", "7", 1], ["8", "8", "8", 1], ["9", "9", "9", 1],
|
||||
["0", "0", "0", 1], ["@", "@", "@", 1], ["?", "?", "?", 1],
|
||||
["!", "!", "!", 1], ["\u232b", null, "backspace", 2]
|
||||
],
|
||||
"shift_2": [
|
||||
["\u21B9", "\t", "tab", 1.5], ["Q", "Q", null, 1], ["W", "W", null, 1],
|
||||
["E", "E", "e", 1], ["R", "R", "r", 1], ["T", "T", "t", 1],
|
||||
["Y", "Y", "y", 1], ["U", "U", "u", 1], ["I", "I", "i", 1],
|
||||
["O", "O", "o", 1], ["P", "P", "p", 1], ["{", "{", "{", 1],
|
||||
["}", "}", "}", 1], ["|", "|", "|", 1.5]
|
||||
],
|
||||
"shift_3": [
|
||||
["\u21ea", null, "capslock", 1.8], ["A", "A", "a", 1], ["S", "S", "s", 1],
|
||||
["D", "D", "d", 1], ["F", "F", "f", 1], ["G", "G", "g", 1],
|
||||
["H", "H", "h", 1], ["J", "J", "j", 1], ["K", "K", "k", 1],
|
||||
["L", "L", "l", 1], [":", ":", ":", 1], ["\"", "\"", "\"", 1],
|
||||
["\u23ce", null, "enter", 2.2]
|
||||
],
|
||||
"shift_4": [
|
||||
["\u21e7", null, "shift", 2.5], ["Z", "Z", "z", 1], ["X", "X", "x", 1],
|
||||
["C", "C", "c", 1], ["V", "V", "v", 1], ["B", "B", "b", 1],
|
||||
["N", "N", "n", 1], ["M", "M", "m", 1], ["<", "<", "<", 1],
|
||||
[">", ">", ">", 1], ["?", "?", "?", 1], ["\u21e7", null, "shift", 2.5]
|
||||
],
|
||||
"shift_5": [
|
||||
["#+=", null, "special", 2.5], [" ", " ", "spacebar", 11], ["\u2a2f", null, "escape", 1.5]
|
||||
],
|
||||
|
||||
"special_1": [
|
||||
["1", "1", "1", 1], ["2", "2", "2", 1], ["3", "3", "3", 1],
|
||||
["4", "4", "4", 1], ["5", "5", "5", 1], ["6", "6", "6", 1],
|
||||
["7", "7", "7", 1], ["8", "8", "8", 1], ["9", "9", "9", 1],
|
||||
["0", "0", "0", 1], ["@", "@", "@", 1], ["?", "?", "?", 1],
|
||||
["!", "!", "!", 1], ["\u232b", null, "backspace", 2]
|
||||
],
|
||||
"special_2": [
|
||||
["\u21B9", "\t", "tab", 1.5], ["(", "(", "(", 1], [")", ")", ")", 1],
|
||||
["{", "{", "{", 1], ["}", "}", "}", 1], ["[", "[", "[", 1],
|
||||
["]", "]", "]", 1], ["€", "€", "€", 1], ["$", "$", "$", 1],
|
||||
["£", "£", "£", 1], ["¥", "¥", "¥", 1], ["˘", "˘", "˘", 1],
|
||||
["•", "•", "•", 1], ["|", "|", "|", 1.5]
|
||||
],
|
||||
"special_3": [
|
||||
["\u21ea", null, "capslock", 1.8], ["“", "“", "“", 1], ["`", "`", "`", 1],
|
||||
["«", "«", "«", 1], ["»", "»", "»", 1], ["#", "#", "#", 1],
|
||||
["%", "%", "%", 1], ["^", "^", "^", 1], ["°", "°", "°", 1],
|
||||
["&", "&", "&", 1], ["ÿ", "ÿ", "ÿ", 1], ["-", "-", "-", 1],
|
||||
["\u23ce", null, "enter", 2.2]
|
||||
],
|
||||
"special_4": [
|
||||
["\u21e7", null, "shift", 2.5], ["+", "+", "+", 1], ["=", "=", "=", 1],
|
||||
["<", "<", "<", 1], [">", ">", ">", 1], ["*", "*", "*", 1],
|
||||
["Ù", "Ù", "Ù", 1], ["~", "~", "~", 1], ["À", "À", "À", 1],
|
||||
[":", ":", ":", 1], ["_", "_", "_", 1], ["\u21e7", null, "shift", 2.5]
|
||||
],
|
||||
"special_5": [
|
||||
["#+=", null, "special", 2.5], [" ", " ", "spacebar", 11], ["\u2a2f", null, "escape", 1.5]
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,97 @@
|
|||
{
|
||||
"title": "es_ES",
|
||||
"description": "A Spanish keyboard, touch optimized (no shift+caps lock)",
|
||||
"cols": 15,
|
||||
"rows": 5,
|
||||
"normal_1":[
|
||||
["`", "`", "`", 1], ["1", "1", "1", 1], ["2", "2", "2", 1],
|
||||
["3", "3", "3", 1], ["4", "4", "4", 1], ["5", "5", "5", 1],
|
||||
["6", "6", "6", 1], ["7", "7", "7", 1], ["8", "8", "8", 1],
|
||||
["9", "9", "9", 1], ["0", "0", "0", 1], ["-", "-", "-", 1],
|
||||
["=", "=", "=", 1], ["\u232b", null, "backspace", 2]
|
||||
],
|
||||
"normal_2" : [
|
||||
["\u21B9", "\t", "tab", 1.5], ["q", "q", "q", 1], ["w", "w", "w", 1],
|
||||
["e", "e", "e", 1], ["r", "r", "r", 1], ["t", "t", "t", 1],
|
||||
["y", "y", "y", 1], ["u", "u", "u", 1], ["i", "i", "i", 1],
|
||||
["o", "o", "o", 1], ["p", "p", "p", 1], ["[", "[", "[", 1],
|
||||
["]", "]", "]", 1], ["\\", "\\", "\\", 1]
|
||||
],
|
||||
"normal_3": [
|
||||
["\u21ea", null, "capslock", 1.8], ["a", "a", "a", 1], ["s", "s", "s", 1],
|
||||
["d", "d", "d", 1], ["f", "f", "f", 1], ["g", "g", "g", 1],
|
||||
["h", "h", "h", 1], ["j", "j", "j", 1], ["k", "k", "k", 1],
|
||||
["l", "l", "l", 1], [":", ":", ":", 1], ["'", "'", "'", 1],
|
||||
["\u23ce", null, "enter", 2.2]
|
||||
],
|
||||
"normal_4": [
|
||||
["\u21e7", null, "shift", 2.5], ["z", "z", "z", 1], ["x", "x", "x", 1],
|
||||
["c", "c", "c", 1], ["v", "v", "v", 1], ["b", "b", "b", 1],
|
||||
["n", "n", "n", 1], ["m", "m", "m", 1], [",", ",", ",", 1],
|
||||
[".", ".", ".", 1], ["/", "/", "/", 1], ["\u21e7", null, "shift", 2.5]
|
||||
],
|
||||
"normal_5": [
|
||||
["#+=", null, "special", 2.5], [" ", " ", "spacebar", 11], ["\u2a2f", null, "escape", 1.5]
|
||||
],
|
||||
"shift_1":[
|
||||
["~", "~", "~", 1], ["!", "!", "!", 1], ["@", "@", "@", 1],
|
||||
["#", "#", "#", 1], ["$", "$", "$", 1], ["%", "%", "%", 1],
|
||||
["^", "^", "^", 1], ["&", "&", "&", 1], ["*", "*", "*", 1],
|
||||
["(", "(", "(", 1], [")", ")", ")", 1], ["_", "_", "_", 1],
|
||||
["+", "+", "+", 1], ["\u232b", null, "backspace", 2]
|
||||
],
|
||||
"shift_2": [
|
||||
["\u21B9", "\t", "tab", 1.5], ["Q", "Q", "q", 1], ["W", "W", "w", 1],
|
||||
["E", "E", "e", 1], ["R", "R", "r", 1], ["T", "T", "t", 1],
|
||||
["Y", "Y", "y", 1], ["U", "U", "u", 1], ["I", "I", "i", 1],
|
||||
["O", "O", "o", 1], ["P", "P", "p", 1], ["{", "{", "{", 1],
|
||||
["}", "}", "}", 1], ["|", "|", "|", 1.5]
|
||||
],
|
||||
"shift_3": [
|
||||
["\u21ea", null, "capslock", 1.8], ["A", "A", "a", 1], ["S", "S", "s", 1],
|
||||
["D", "D", "d", 1], ["F", "F", "f", 1], ["G", "G", "g", 1],
|
||||
["H", "H", "h", 1], ["J", "J", "j", 1], ["K", "K", "k", 1],
|
||||
["L", "L", "l", 1], [";", ";", ";", 1], ["\"", "\"", "\"", 1],
|
||||
["\u23ce", null, "enter", 2.2]
|
||||
],
|
||||
"shift_4": [
|
||||
["\u21e7", null, "shift", 2.5], ["Z", "Z", "z", 1], ["X", "X", "x", 1],
|
||||
["C", "C", "c", 1], ["V", "V", "v", 1], ["B", "B", "b", 1],
|
||||
["N", "N", "n", 1], ["M", "M", "m", 1], ["<", "<", "<", 1],
|
||||
[">", ">", ">", 1], ["?", "?", "?", 1.5], ["\u21e7", null, "shift", 2.5]
|
||||
],
|
||||
"shift_5": [
|
||||
["#+=", null, "special", 2.5], [" ", " ", "spacebar", 11], ["\u2a2f", null, "escape", 1.5]
|
||||
],
|
||||
"special_1": [
|
||||
["`", "`", "`", 1], ["¡", "¡", "¡", 1], ["2", "2", "2", 1],
|
||||
["3", "3", "3", 1], ["4", "4", "4", 1], ["5", "5", "5", 1],
|
||||
["6", "6", "6", 1], ["ü", "ü", "ü", 1], ["8", "8", "8", 1],
|
||||
["9", "9", "9", 1], ["0", "0", "0", 1], ["-", "-", "-", 1],
|
||||
["=", "=", "=", 1], ["\u232b", null, "backspace", 2]
|
||||
],
|
||||
"special_2": [
|
||||
["\u21B9", "\t", "tab", 1.5], ["q", "q", "q", 1], ["w", "w", "w", 1],
|
||||
["é", "é", "é", 1], ["r", "r", "r", 1], ["t", "t", "t", 1],
|
||||
["y", "y", "y", 1], ["ú", "ú", "ú", 1], ["í", "í", "í", 1],
|
||||
["ó", "ó", "ó", 1], ["p", "p", "p", 1], ["[", "[", "[", 1],
|
||||
["]", "]", "]", 1], ["\\", "\\", "\\", 1]
|
||||
],
|
||||
"special_3": [
|
||||
["\u21ea", null, "capslock", 1.8], ["á", "á", "á", 1], ["Ü", "Ü", "Ü", 1],
|
||||
["É", "É", "É", 1], ["Ú", "Ú", "Ú", 1], ["Í", "Í", "Í", 1],
|
||||
["Ó", "Ó", "Ó", 1], ["Ñ", "Ñ", "Ñ", 1], ["k", "k", "k", 1],
|
||||
["l", "l", "l", 1], [":", ":", ":", 1], ["'", "'", "'", 1],
|
||||
["\u23ce", null, "enter", 2.2]
|
||||
],
|
||||
"special_4": [
|
||||
["\u21e7", null, "shift", 2.5], ["z", "z", "z", 1], ["x", "x", "x", 1],
|
||||
["c", "c", "c", 1], ["v", "v", "v", 1], ["b", "b", "b", 1],
|
||||
["ñ", "ñ", "ñ", 1], ["m", "m", "m", 1], [",", ",", ",", 1],
|
||||
[".", ".", ".", 1], ["¿", "¿", "¿", 1], ["\u21e7", null, "shift", 2.5]
|
||||
],
|
||||
"special_5": [
|
||||
["#+=", null, "special", 2.5], [" ", " ", "spacebar", 11], ["\u2a2f", null, "escape", 1.5]
|
||||
]
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,98 @@
|
|||
{
|
||||
"title": "fr_CH",
|
||||
"description": "A Swiss French keyboard, touch optimized (no shift+caps lock)",
|
||||
"cols": 15,
|
||||
"rows": 5,
|
||||
"normal_1": [
|
||||
["1", "1", "1", 1], ["2", "2", "2", 1], ["3", "3", "3", 1],
|
||||
["4", "4", "4", 1], ["5", "5", "5", 1], ["6", "6", "6", 1],
|
||||
["7", "7", "7", 1], ["8", "8", "8", 1], ["9", "9", "9", 1],
|
||||
["0", "0", "0", 1], ["@", "@", "@", 1], ["?", "?", "?", 1],
|
||||
["!", "!", "!", 1], ["\u232b", null, "backspace", 2]
|
||||
],
|
||||
"normal_2" : [
|
||||
["\u21B9", "\t", "tab", 1.5], ["q", "q", "q", 1], ["w", "w", "w", 1],
|
||||
["e", "e", "e", 1], ["r", "r", "r", 1], ["t", "t", "t", 1],
|
||||
["z", "z", "z", 1], ["u", "u", "u", 1], ["i", "i", "i", 1],
|
||||
["o", "o", "o", 1], ["p", "p", "p", 1], ["è", "è", "è", 1],
|
||||
[":", ":", ":", 1], ["$", "$", "$", 1.5]
|
||||
],
|
||||
"normal_3": [
|
||||
["\u21ea", null, "capslock", 1.8], ["a", "a", "a", 1], ["s", "s", "s", 1],
|
||||
["d", "d", "d", 1], ["f", "f", "f", 1], ["g", "g", "g", 1],
|
||||
["h", "h", "h", 1], ["j", "j", "j", 1], ["k", "k", "k", 1],
|
||||
["l", "l", "l", 1], ["é", "é", "é", 1], ["à", "à", "à", 1],
|
||||
["\u23ce", null, "enter", 2.2]
|
||||
],
|
||||
"normal_4": [
|
||||
["\u21e7", null, "shift", 2.5], ["y", "y", "y", 1], ["x", "x", "x", 1],
|
||||
["c", "c", "c", 1], ["v", "v", "v", 1], ["b", "b", "b", 1],
|
||||
["n", "n", "n", 1], ["m", "m", "m", 1], [",", ",", ",", 1],
|
||||
[".", ".", ".", 1], ["-", "-", "-", 1], ["\u21e7", null, "shift", 2.5]
|
||||
],
|
||||
"normal_5": [
|
||||
["#+=", null, "special", 2.5], [" ", " ", "spacebar", 11], ["\u2a2f", null, "escape", 1.5]
|
||||
],
|
||||
|
||||
"shift_1": [
|
||||
["1", "1", "1", 1], ["2", "2", "2", 1], ["3", "3", "3", 1],
|
||||
["4", "4", "4", 1], ["5", "5", "5", 1], ["6", "6", "6", 1],
|
||||
["7", "7", "7", 1], ["8", "8", "8", 1], ["9", "9", "9", 1],
|
||||
["0", "0", "0", 1], ["@", "@", "@", 1], ["?", "?", "?", 1],
|
||||
["!", "!", "!", 1], ["\u232b", null, "backspace", 2]
|
||||
],
|
||||
"shift_2": [
|
||||
["\u21B9", "\t", "tab", 1.5], ["Q", "Q", null, 1], ["W", "W", null, 1],
|
||||
["E", "E", "e", 1], ["R", "R", "r", 1], ["T", "T", "t", 1],
|
||||
["Z", "Z", "z", 1], ["U", "U", "u", 1], ["I", "I", "i", 1],
|
||||
["O", "O", "o", 1], ["P", "P", "p", 1], ["È", "È", "È", 1],
|
||||
[":", ":", ":", 1], ["/", "/", "/", 1.5]
|
||||
],
|
||||
"shift_3": [
|
||||
["\u21ea", null, "capslock", 1.8], ["A", "A", "a", 1], ["S", "S", "s", 1],
|
||||
["D", "D", "d", 1], ["F", "F", "f", 1], ["G", "G", "g", 1],
|
||||
["H", "H", "h", 1], ["J", "J", "j", 1], ["K", "K", "k", 1],
|
||||
["L", "L", "l", 1], ["É", "É", "É", 1], ["À", "À", "À", 1],
|
||||
["\u23ce", null, "enter", 2.2]
|
||||
],
|
||||
"shift_4": [
|
||||
["\u21e7", null, "shift", 2.5], ["Y", "Y", "y", 1], ["X", "X", "x", 1],
|
||||
["C", "C", "c", 1], ["V", "V", "v", 1], ["B", "B", "b", 1],
|
||||
["N", "N", "n", 1], ["M", "M", "m", 1], [";", ";", ";", 1],
|
||||
[":", ":", ":", 1], ["_", "_", "_", 1], ["\u21e7", null, "shift", 2.5]
|
||||
],
|
||||
"shift_5": [
|
||||
["#+=", null, "special", 2.5], [" ", " ", "spacebar", 11], ["\u2a2f", null, "escape", 1.5]
|
||||
],
|
||||
|
||||
"special_1": [
|
||||
["1", "1", "1", 1], ["2", "2", "2", 1], ["3", "3", "3", 1],
|
||||
["4", "4", "4", 1], ["5", "5", "5", 1], ["6", "6", "6", 1],
|
||||
["7", "7", "7", 1], ["8", "8", "8", 1], ["9", "9", "9", 1],
|
||||
["0", "0", "0", 1], ["@", "@", "@", 1], ["?", "?", "?", 1],
|
||||
["!", "!", "!", 1], ["\u232b", null, "backspace", 2]
|
||||
],
|
||||
"special_2": [
|
||||
["\u21B9", "\t", "tab", 1.5], ["(", "(", "(", 1], [")", ")", ")", 1],
|
||||
["{", "{", "{", 1], ["}", "}", "}", 1], ["[", "[", "[", 1],
|
||||
["]", "]", "]", 1], ["€", "€", "€", 1], ["$", "$", "$", 1],
|
||||
["£", "£", "£", 1], ["¥", "¥", "¥", 1], ["ü", "ü", "ü", 1],
|
||||
["•", "•", "•", 1], ["|", "|", "|", 1.5]
|
||||
],
|
||||
"special_3": [
|
||||
["\u21ea", null, "capslock", 1.8], ["“", "“", "“", 1], ["`", "`", "`", 1],
|
||||
["«", "«", "«", 1], ["»", "»", "»", 1], ["#", "#", "#", 1],
|
||||
["%", "%", "%", 1], ["^", "^", "^", 1], ["°", "°", "°", 1],
|
||||
["&", "&", "&", 1], ["ö", "ö", "ö", 1], ["ä", "ä", "ä", 1],
|
||||
["\u23ce", null, "enter", 2.2]
|
||||
],
|
||||
"special_4": [
|
||||
["\u21e7", null, "shift", 2.5], ["+", "+", "+", 1], ["=", "=", "=", 1],
|
||||
["<", "<", "<", 1], [">", ">", ">", 1], ["*", "*", "*", 1],
|
||||
["Ö", "Ö", "Ö", 1], ["Ä", "Ä", "Ä", 1], ["Ü", "Ü", "Ü", 1],
|
||||
[":", ":", ":", 1], ["_", "_", "_", 1], ["\u21e7", null, "shift", 2.5]
|
||||
],
|
||||
"special_5": [
|
||||
["#+=", null, "special", 2.5], [" ", " ", "spacebar", 11], ["\u2a2f", null, "escape", 1.5]
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
{
|
||||
"title": "Qwerty",
|
||||
"description": "A classical US Keyboard",
|
||||
"cols": 15,
|
||||
"rows": 5,
|
||||
"normal_1": [
|
||||
["`", "`", "`", 1], ["1", "1", "1", 1], ["2", "2", "2", 1],
|
||||
["3", "3", "3", 1], ["4", "4", "4", 1], ["5", "5", "5", 1],
|
||||
["6", "6", "6", 1], ["7", "7", "7", 1], ["8", "8", "8", 1],
|
||||
["9", "9", "9", 1], ["0", "0", "0", 1], ["-", "-", "-", 1],
|
||||
["=", "=", "=", 1], ["\u232b", null, "backspace", 2]
|
||||
],
|
||||
"normal_2" : [
|
||||
["\u21B9", "\t", "tab", 1.5], ["q", "q", "q", 1], ["w", "w", "w", 1],
|
||||
["e", "e", "e", 1], ["r", "r", "r", 1], ["t", "t", "t", 1],
|
||||
["y", "y", "y", 1], ["u", "u", "u", 1], ["i", "i", "i", 1],
|
||||
["o", "o", "o", 1], ["p", "p", "p", 1], ["[", "[", "[", 1],
|
||||
["]", "]", "]", 1], ["\\", "\\", "\\", 1]
|
||||
],
|
||||
"normal_3": [
|
||||
["\u21ea", null, "capslock", 1.8], ["a", "a", "a", 1], ["s", "s", "s", 1],
|
||||
["d", "d", "d", 1], ["f", "f", "f", 1], ["g", "g", "g", 1],
|
||||
["h", "h", "h", 1], ["j", "j", "j", 1], ["k", "k", "k", 1],
|
||||
["l", "l", "l", 1], [":", ":", ":", 1], ["'", "'", "'", 1],
|
||||
["\u23ce", null, "enter", 2.2]
|
||||
],
|
||||
"normal_4": [
|
||||
["\u21e7", null, "shift", 2.5], ["z", "z", "z", 1], ["x", "x", "x", 1],
|
||||
["c", "c", "c", 1], ["v", "v", "v", 1], ["b", "b", "b", 1],
|
||||
["n", "n", "n", 1], ["m", "m", "m", 1], [",", ",", ",", 1],
|
||||
[".", ".", ".", 1], ["/", "/", "/", 1], ["\u21e7", null, "shift", 2.5]
|
||||
],
|
||||
"normal_5": [
|
||||
[" ", " ", "spacebar", 12], ["\u2b12", null, "layout", 1.5], ["\u2a2f", null, "escape", 1.5]
|
||||
],
|
||||
"shift_1": [
|
||||
["~", "~", "~", 1], ["!", "!", "!", 1], ["@", "@", "@", 1],
|
||||
["#", "#", "#", 1], ["$", "$", "$", 1], ["%", "%", "%", 1],
|
||||
["^", "^", null, 1], ["&", "&", "&", 1], ["*", "*", "*", 1],
|
||||
["(", "(", "(", 1], [")", ")", ")", 1], ["_", "_", "_", 1],
|
||||
["+", "+", "+", 1], ["\u232b", null, "backspace", 2]
|
||||
],
|
||||
"shift_2": [
|
||||
["\u21B9", "\t", "tab", 1.5], ["Q", "Q", "q", 1], ["W", "W", "w", 1],
|
||||
["E", "E", "e", 1], ["R", "R", "r", 1], ["T", "T", "t", 1],
|
||||
["Y", "Y", "y", 1], ["U", "U", "u", 1], ["I", "I", "i", 1],
|
||||
["O", "O", "o", 1], ["P", "P", "p", 1], ["{", "{", "{", 1],
|
||||
["}", "}", "}", 1], ["|", "|", "|", 1.5]
|
||||
],
|
||||
"shift_3": [
|
||||
["\u21ea", null, "capslock", 1.8], ["A", "A", "a", 1], ["S", "S", "s", 1],
|
||||
["D", "D", "d", 1], ["F", "F", "f", 1], ["G", "G", "g", 1],
|
||||
["H", "H", "h", 1], ["J", "J", "j", 1], ["K", "K", "k", 1],
|
||||
["L", "L", "l", 1], [";", ";", ";", 1], ["\"", "\"", "\"", 1],
|
||||
["\u23ce", null, "enter", 2.2]
|
||||
],
|
||||
"shift_4": [
|
||||
["\u21e7", null, "shift", 2.5], ["Z", "Z", "z", 1], ["X", "X", "x", 1],
|
||||
["C", "C", "c", 1], ["V", "V", "v", 1], ["B", "B", "b", 1],
|
||||
["N", "N", "n", 1], ["M", "M", "m", 1], ["<", "<", "<", 1],
|
||||
[">", ">", ">", 1], ["?", "?", "?", 1.5], ["\u21e7", null, "shift", 2.5]
|
||||
],
|
||||
"shift_5": [
|
||||
[" ", " ", "spacebar", 12], ["\u2b12", null, "layout", 1.5], ["\u2a2f", null, "escape", 1.5]
|
||||
]
|
||||
}
|
||||