QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2510|回复: 0
打印 上一主题 下一主题

使用html画一个键盘

[复制链接]
字体大小: 正常 放大

1198

主题

4

听众

2976

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-4-27 10:42 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
  1. <!DOCTYPE html>
    . i! M/ R; [7 E
  2. <html lang="en"># `0 k* A, Q2 b/ |( ~
  3. <head>/ R; d0 U0 a, x+ S
  4.   <meta charset="UTF-8">
    , C( h1 F$ q4 i* j/ L0 F
  5.   <meta http-equiv="X-UA-Compatible" content="IE=edge">
    0 w) x2 s) g0 R) N
  6.   <meta name="viewport" content="width=device-width, initial-scale=1.0">: e- ^: R- j2 B/ ]6 x4 ]
  7.   <link rel="stylesheet" >
    $ G\" [0 w/ j7 z: }/ P+ t* O3 ?% Y
  8.   <title>vector examples Keyboard</title>- O) Z6 g, m% H$ r
  9. </head>
    ! d; d1 F, X. L5 Z, Y$ t( }  R+ \6 f6 s
  10. <body>
    - j4 F9 h; M. }! t
  11.   <div id="keyboard"></div>9 X8 ^' Q7 C& T1 V2 ~
  12.   <!-- <script type="module" src="./Keyboard.js"></script> -->/ I3 S3 s7 E8 D4 ]7 j\" x
  13.   <script type="module" src="./temp.js"></script>& I2 M2 U1 k2 n3 y
  14. </body>( s8 l& k2 i' c: v/ ~/ K; F
  15. </html>
    , D% K7 T( f2 L0 F
复制代码
  1. import Interactive from "https://vectorjs.org/interactive.js";
    / t/ C5 ~4 R; k
  2. console.log("Interactive", Interactive);
    * u0 U# o; |8 J6 C
复制代码
  1. /**
    8 h% p8 l& A) y* e4 u6 f
  2. * [url=home.php?mod=space&uid=634908]@title[/url] Keyboard
    1 e\" j2 v5 \0 P' r! ~% ^
  3. * @description This interactive demonstrates how key board input can be used to add interactivity.% c2 [+ U) Y8 r# u1 u
  4. * @tags [input]3 ^: ?0 {: u: b+ l6 A/ h$ d1 ?
  5. */
    5 Y  @' v/ |0 t4 l+ q, \
  6. // import { Interactive, getScriptName } from "../../index.js";
    ; G, P) u: t9 b- p$ s, A$ i; O. S) n
  7. // let interactive = new Interactive(getScriptName());7 g* [; q! T, \# p( N4 f
  8. import Interactive from "https://vectorjs.org/interactive.js";
    3 e\" c+ q9 b  {  Y. i1 S
  9. let interactive = new Interactive("keyboard");( _7 f1 f1 w/ H3 X  H5 h4 g$ J' l
  10. interactive.width = 768;
    5 n! V; S! H* E2 u) e* g7 ?7 ~
  11. interactive.height = 300;\" Y5 A! |0 j\" g( O7 C
  12. interactive.border = true;
    * \6 a9 y+ s& x: r
  13. let buffer = "";9 s  W; Z! A/ d9 X% s
  14. let keys = [* m' a5 a4 U1 X& B. b, I1 u- Y& w9 ^
  15.   [$ S/ S. E9 q4 R
  16.     "`",
    ( c& B4 l+ w: ]\" ?4 c
  17.     "1",' S' A7 i' k7 ]; V$ z+ f/ e1 \
  18.     "2",. _\" Q! P$ T( D5 }8 ^& R. r
  19.     "3",  a4 r* e& g% {- N
  20.     "4",
    & |' H1 x; W3 H# A* n8 J
  21.     "5",) ^9 h2 C! m1 a+ H9 P9 l
  22.     "6",2 W, M; V( t% g
  23.     "7",  q; \* U\" E4 W  j: M0 D  r4 A
  24.     "8",
    , ]6 p6 k\" D# F$ G( n$ z
  25.     "9",. t% r  H& d\" f7 S  n
  26.     "0",/ b) `; T0 x, y* x' W/ X  |0 d
  27.     "-",
    ! n& t- m) ?2 C; _& s6 U
  28.     "=",/ d8 Z4 t; h9 @4 t- H# l\" m) A
  29.     "Backspace",' {' M0 b) N3 n8 ^$ r# j* D) g
  30.   ],
      f3 J0 u  Q6 Y# @
  31.   ["tab", "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "[", "]", "\\"],- r3 E! T$ G\" v& j( {& B
  32.   ["CapsLock", "a", "s", "d", "f", "g", "h", "j", "k", "l", ";", "'", "Enter"],) _/ Z# P3 e6 ]( A8 u% x$ P
  33.   ["Shift", "z", "x", "c", "v", "b", "n", "m", ",", ".", "/", "Shift"],
    9 Z9 t3 p8 N, K; d\" w/ U
  34.   [, ]3 U# `) A$ t# m/ {; f; ?
  35.     "fn",, u  c! W\" r8 [\" S' o
  36.     "Control",
    ) ?+ J; m5 I$ H# u* R
  37.     "Alt",
    4 q6 K\" c\" x3 c( s% D9 i6 e# ?
  38.     "Meta",
    9 y  H& {5 X$ X\" u' P
  39.     " ",
    , g+ ]7 n( M6 B' F
  40.     "Meta",5 x* b% h' }$ G' x! n% X\" m6 a
  41.     "Alt",
    , H, m! J$ Q8 c/ A6 |8 G; V
  42.     "ArrowLeft",
    - f+ P# s6 }: B4 N
  43.     "ArrowUp",
    7 J# [2 b& Y8 \
  44.     "ArrowDown",# Q* R1 Y  X4 p1 {
  45.     "ArrowRight",
    + Z; X' j\" J- V, ~5 r
  46.   ],
    ! |# n0 X\" O) l4 ~2 M
  47. ];
    0 i- z1 e1 k- B6 A: E
  48. let buttons = [];
    ) L4 _1 a% U4 B5 X3 v; }9 m
  49. let keycodes = {
    , V  H9 `\" f, x* Y5 \+ X
  50.   0: { Symbol: 0, Shift: ")" },) |$ b) \2 V/ g7 K
  51.   1: { Symbol: 1, Shift: "!" },
    . i% ~. o# \\" [4 E0 t. u8 b8 [
  52.   2: { Symbol: 2, Shift: "@" },
    ! U* f' G6 O( q+ {8 N% t. J
  53.   3: { Symbol: 3, Shift: "#" },
    8 m7 v& e, o' m% G* o: f
  54.   4: { Symbol: 4, Shift: "$" },
    6 d4 L/ k\" J- q! o6 I; ?  c
  55.   5: { Symbol: 5, Shift: "%" },1 a\" N5 D: O7 G0 K0 ^\" V
  56.   6: { Symbol: 6, Shift: "^" },1 c7 N2 y  ^8 I4 _* [! h\" V6 r/ W, n
  57.   7: { Symbol: 7, Shift: "&" },. Y& I$ A+ Z. o, d0 w; t
  58.   8: { Symbol: 8, Shift: "*" },' ^; g, m# n4 v( r' S- ~
  59.   9: { Symbol: 9, Shift: "(" },
    $ K, ]  q7 g# P/ B& H2 b! H/ u, B' y
  60.   a: { Symbol: "a", Shift: "A" },
    & g! r  U8 n9 p; r0 z# E. N6 p& i\" x
  61.   b: { Symbol: "b", Shift: "B" },
    $ s6 s5 o1 q2 \0 z  H
  62.   c: { Symbol: "c", Shift: "C" },' h4 n+ {( K- l( u
  63.   d: { Symbol: "d", Shift: "D" },
    ! E: p3 ], h, [
  64.   e: { Symbol: "e", Shift: "E" },4 O* S% Z: q! q' @5 k/ w2 l
  65.   f: { Symbol: "f", Shift: "F" },
    ' o& i& g: r2 l4 M2 O
  66.   g: { Symbol: "g", Shift: "G" },
    & X( |% D8 Q' z. w, A
  67.   h: { Symbol: "h", Shift: "H" },
    $ m7 ^+ g) f5 ~6 `9 s9 A
  68.   i: { Symbol: "i", Shift: "I" },
    ! n( `. H% @, U$ z
  69.   j: { Symbol: "j", Shift: "J" },) D6 I7 h, J/ V
  70.   k: { Symbol: "k", Shift: "K" },
    * p# z& f2 ~6 |: O% F% V4 W) }
  71.   l: { Symbol: "l", Shift: "L" },
    2 O3 ~+ s* w. U1 ?% E5 R. f
  72.   m: { Symbol: "m", Shift: "M" },) h: O, I$ I- D0 h
  73.   n: { Symbol: "n", Shift: "N" },; a) V& r- m& s/ ^\" ~6 B
  74.   o: { Symbol: "o", Shift: "O" },: s# ]+ \; t' y6 E* h3 A7 f
  75.   p: { Symbol: "p", Shift: "P" },
    7 d7 _' l8 D! w% s, D4 u, [
  76.   q: { Symbol: "q", Shift: "Q" },$ T. F7 z* }0 T4 e
  77.   r: { Symbol: "r", Shift: "R" },7 K: ^) \6 c* ~: U
  78.   s: { Symbol: "s", Shift: "S" },$ I2 O( Z- [4 z/ o9 r
  79.   t: { Symbol: "t", Shift: "T" },* S5 v+ q) s7 a2 M\" X& j
  80.   u: { Symbol: "u", Shift: "U" },
    / m1 ~$ ~' K7 t' B+ D0 J8 h
  81.   v: { Symbol: "v", Shift: "V" },1 l) J8 |% ^- F! ^+ e( C+ r5 [  J
  82.   w: { Symbol: "w", Shift: "W" },
    / J6 y9 ?1 F\" k\" r: R' k
  83.   x: { Symbol: "x", Shift: "X" },
    ; n- L; ?\" o( E& P9 W7 a. L+ R
  84.   y: { Symbol: "y", Shift: "Y" },( F/ ?  w& O! e; h& `& B
  85.   z: { Symbol: "z", Shift: "Z" },
    ( l/ r' C/ w- w7 D  x( w1 ^, K; r( m
  86.   "`": { Symbol: "`", Shift: "~" },
    * }& D2 N; A# E$ s& I# |7 p+ l
  87.   "-": { Symbol: "-", Shift: "_" },
    ' }) j8 j) `6 G; C5 s! v
  88.   "=": { Symbol: "=", Shift: "+" },
    # \; m+ A) b/ E$ {
  89.   ";": { Symbol: ";", Shift: ":" },; I5 o. Z4 t& e5 s: t4 p
  90.   "'": { Symbol: "'", Shift: '"' },7 z: s7 `\" |, m; P- F: Z: i
  91.   "[": { Symbol: "[", Shift: "{" },
    : F0 A, C$ o* g3 ~9 y0 m+ `) ]
  92.   "]": { Symbol: "]", Shift: "}" },\" [. d& G- J3 k) X! [& y
  93.   "\\": { Symbol: "\\", Shift: "|" },3 r0 n1 p& u\" @+ F% [) V: Y7 m
  94.   ",": { Symbol: ",", Shift: "<" },  b# |3 W: p$ E  G( H
  95.   ".": { Symbol: ".", Shift: ">" },$ d# L! ?+ ~+ i) O4 P) j
  96.   "/": { Symbol: "/", Shift: "?" },
    \" h: t\" D# ?\" d. k; c) k- ?
  97.   Backspace: { Symbol: "⌫", Shift: "" },
    - R$ v0 Q# G8 k
  98.   tab: { Symbol: "  ", Shift: "" },/ G+ G. L% p$ \' V# X' I7 R- A
  99.   CapsLock: { Symbol: "⇪", Shift: "" },
    \" F# M4 |' I. z8 z. J7 N! C. L0 x1 E4 Q
  100.   Shift: { Symbol: "⇧", Shift: "" },
    1 I) n2 U  z( E7 V7 v
  101.   Enter: { Symbol: "⏎", Shift: "" },8 u6 X! z) l2 q
  102.   Control: { Symbol: "⌃", Shift: "" },
    1 T  o\" P0 f& i  |
  103.   Alt: { Symbol: "Alt", Shift: "" },
    ! y. B% D; y$ l
  104.   Meta: { Symbol: "⌘", Shift: "" },( h2 Z6 K  M) s+ k
  105.   ArrowLeft: { Symbol: "←", Shift: "" },/ `4 p8 C6 r! l; j( c
  106.   ArrowUp: { Symbol: "↑", Shift: "" },
    $ `( p5 Q( B! d
  107.   ArrowDown: { Symbol: "↓", Shift: "" },
      |7 s2 e1 D) F
  108.   ArrowRight: { Symbol: "→", Shift: "" },
    $ C. U0 T5 g5 ~8 Z- u3 \6 q
  109.   " ": { Symbol: " ", Shift: "" },
    8 V6 S) \) Y! a0 b8 I0 }6 F
  110. };( z% d: O/ a/ [% A: h3 B
  111. let buttonMap = new Map();
    \" z) l% G2 k! j5 Q8 n/ Z
  112. let height = 32;
    + x0 A3 V2 J/ |% M
  113. let margin = 8;, v+ }. r7 o% k( t& _) z5 h
  114. let capslock = interactive.button(0, 0, keycodes["CapsLock"].Symbol);/ g0 O9 j2 j2 a- d0 e+ u, n
  115. let shift = interactive.button(0, 0, keycodes["Shift"].Symbol);7 v/ Q# B; n( ?, u' p+ c\" m- K
  116. for (let row = 0; row < keys.length; row++) {# x  z  G1 M) C: F8 l5 ]: d
  117.   let x = 32;, r5 I* A  p6 f- j0 a8 i
  118.   let prev;9 K) |1 F, n% ]4 P: R
  119.   for (let i = 0; i < keys[row].length; i++) {
    5 e7 _/ [- M4 i% ^2 r) P/ f+ u6 c3 E
  120.     let key = keys[row][i];
    # P, X8 X+ x2 x, ]
  121.     let width = 32;1 F9 b3 U\" s6 L
  122.     let button;8 a  n/ a3 s! U2 s9 q7 N
  123.     switch (key) {. |/ x4 y3 T( I8 V% Q* O0 E# M! r
  124.       case "CapsLock":
    / c- j( j4 q' Q3 k
  125.         button = capslock;% a8 [8 V6 H$ r/ t& L
  126.         width = 64;1 K2 N' U. O) S$ A# l. H0 D7 x
  127.         break;( B! ^, [* x$ T% ^4 c$ B
  128.       case "Shift":
    % S; f4 O3 |7 t3 L
  129.         if (shift.x === 0) {
    6 s3 r3 z  _% |; Y- b
  130.           button = shift;
    , a4 ]9 T' `0 ?2 E7 e8 N1 @
  131.         } else {
    . y  d' W, y7 q/ v8 a; s
  132.           button = interactive.button(
    ' \9 D; X1 z' w; v
  133.             0,+ K- C9 h2 t- l8 a6 L' w, ?
  134.             0,% A- f# E* G) F7 ]* N1 e
  135.             keycodes[key] != undefined ? keycodes[key].Symbol : key9 ?  O' P4 t$ @2 {6 Z+ E
  136.           );* H# x8 h5 b+ ]1 s3 T$ Y
  137.         }; }7 f4 c; z6 B
  138.         width = 90;# O* z3 D6 e8 ?+ [5 c
  139.         break;
    5 Y& K1 G; K4 g# g, Y! E; W# r0 Z& f: o
  140.       case "tab":* N2 k* @  ~* g
  141.         width = 50;
    $ u' H/ d9 B9 k2 q5 L\" D3 A
  142.         button = interactive.button(
    ( O4 R# k: u1 ?. D: ?+ l/ j, c: H
  143.           0,$ N! H( |( X: j% T
  144.           0,
    9 i) X0 l# ?# c( D8 r
  145.           keycodes[key] != undefined ? keycodes[key].Symbol : key* |# Q2 k3 i/ r) w8 N& @) v
  146.         );: h+ Y1 d- `( X3 N
  147.         break;
    7 ?3 k% l5 T. l$ g: _\" G
  148.       case " ":- I% ?+ c! v: Z' k' z
  149.         width = 176;  B; R( R! A5 ]( I6 q# W: d
  150.         button = interactive.button($ t\" q6 j. N3 o9 d- h5 X$ z9 T( |
  151.           0,6 W\" x4 \3 Q& @7 w
  152.           0,
    , r, L9 q3 w$ r9 t  M% P
  153.           keycodes[key] != undefined ? keycodes[key].Symbol : key
    & s1 p6 B! d: q( L
  154.         );
    ) v  R) A5 B/ P6 Q% [6 Y4 x& ~
  155.         break;% q6 s% O. J& R1 A
  156.       case "Meta":
    / j\" t+ f' p- e+ J! G* [' Y
  157.         width = 50;& [, J' {/ s7 p8 f
  158.         button = interactive.button(
    ( ]% b: G; i  {7 p. D
  159.           0,
    ) X7 ]: ]2 x9 V5 h, v: r\" y1 r
  160.           0,
    2 l( ]) h; g. c2 L
  161.           keycodes[key] != undefined ? keycodes[key].Symbol : key
    ; L% O3 z4 k% X
  162.         );) V7 k+ w! R- l  ~2 `- B& C\" j
  163.         break;9 ~/ I2 I! O* W: P0 i; y
  164.       default:& C1 Z1 ]; I3 p% Y, p; |9 w% O
  165.         button = interactive.button(
    0 N3 A- O5 Y$ B
  166.           0,
    . h4 i1 O1 g, |9 ]2 R( P
  167.           0,! y6 o3 z% f& M1 e# n4 E. \
  168.           keycodes[key] != undefined ? keycodes[key].Symbol : key1 p8 p\" \\" f& m0 {: _; J
  169.         );
    : j) ]2 k# R2 s' Y4 |
  170.         if (keycodes[key] != undefined) {& K+ c/ [% i: @
  171.           if (keycodes[key].Shift != "") {
    + v) f+ c) S, P. S
  172.             button.addDependency(shift, capslock);
    / U$ J\" I% `' n- B- N
  173.             button.update = () => {
    1 ^1 V( D$ c5 M7 ~; v: t. d
  174.               if (shift.active || capslock.active) {$ u1 K& v2 O) k# d8 O
  175.                 button.label.contents = keycodes[key].Shift;
    5 ?3 d8 O  f+ v9 T: R2 h
  176.               } else {7 u9 z7 O; R$ c+ p0 J, N  z
  177.                 button.label.contents = keycodes[key].Symbol;! `; z0 T4 B# a- [/ l7 O9 M
  178.               }
    1 X! a2 h9 ?$ L5 i! T! `' x) _7 C
  179.             };
    1 t$ Z4 x) w# O% U3 g# _
  180.           }
    & @/ K% V2 l. n3 z+ B
  181.         }
      `) B7 a* N& d5 w2 a
  182.     }' X+ w7 g5 c! K\" R/ U* g' }: q
  183.     button.x = x;4 l. b* j/ R. u* r# L5 r6 F
  184.     button.y = 64 + row * (height + margin);
      w/ D) Z3 d6 @! j! L& P
  185.     if (button.box.width < width) {) c5 C. k' Q, t0 [2 o# h1 s! o
  186.       button.box.width = width;
    : t' u8 k& e: Z2 `
  187.     }4 w# z9 t7 T8 G  y! {
  188.     let bbox = button.root.getBBox();
    $ k: v, W* I) ]' I- A\" Y
  189.     x += bbox.width + margin;0 {9 ~1 Z2 M! P; m. f
  190.     buttons.push(button);
    6 |: e* Y6 H) d1 x& K
  191.     prev = button;) h\" ]9 P8 Y* T8 [9 A1 o
  192.     buttonMap.set(key, button);
    5 |\" z1 h8 ?) v! A; \; G5 t
  193.     if (key === "ArrowUp") {
    & l. W& p3 v- I+ T0 m$ u1 W; H
  194.       button.box.height = 16;
    : G1 V% d4 l- i1 O4 W\" s0 A7 v9 Q
  195.       button.label.root.style.display = "none";0 H; U4 f$ m+ b: j) E% O
  196.     } else if (key === "ArrowDown") {
    ! e! [) r) b+ T3 ?' x6 X
  197.       button.box.height = 16;
    + s  ~9 ]+ f% A$ n
  198.       button.x -= 32 + margin;
    0 b8 |% X9 t& Z! Y5 j: ?
  199.       button.y += 16;
    9 N; _5 L$ C/ [7 Z! S
  200.       button.label.root.style.display = "none";
    + ?7 Y( f\" I' W( F/ g3 U
  201.       x -= bbox.width + margin;
    ' I7 K/ Z* h4 S
  202.     }
    2 A; ?8 W6 f+ h% ^  p
  203.   }. _/ D* c3 ^; g( _
  204.   let right = prev.x;. q% j: @: Z7 B7 z. L2 R0 M6 b1 m
  205.   if (right < 630) {& [- s! g1 o% ?2 }. k
  206.     prev.box.width = 630 - right;
    % }, p. |$ q\" ~( K! y3 W* R  q+ Z
  207.   }
    2 O0 R7 D/ L8 g  g! V: [/ o
  208. }. m8 l; y7 s, L! {6 V+ M
  209. // console.log(keycodes["0"], shift, capslock);( R' j( \! \) H' {\" c! h) q% p
  210. let active = [];
    , s) S# R; `# [! [  B; y4 g
  211. window.onkeydown = function (event) {' L: H2 n/ M: V  I
  212.   for (let i = 0; i < buttons.length; i++) {
    % N$ E+ w' R5 d  k6 i# j1 p
  213.     let button = buttons[i];  z* A) U+ i2 e( T, D$ s
  214.     if (/ r0 d6 l! ~8 d* U
  215.       button.label.contents === event.key ||
    # v& X+ Z  F( L5 f! O( n# b- T
  216.       (keycodes[event.key] != undefined &&# O3 h3 T' e' S\" _; x4 E
  217.         button.label.contents === keycodes[event.key].Symbol)
    & {7 j9 r4 B0 z
  218.     ) {6 g) T& r$ y! ^\" G2 Y: T
  219.       button.box.style.fill = "#f8f8f8";6 K4 p! ~$ J: X, L& S2 h( C
  220.       button.label.style.fill = "#404040";
    6 h' d6 q# J  {3 n
  221.       button.active = true;2 B: E1 p( J+ J3 n
  222.       active.push(button);  O  P. M+ k6 |2 h5 L) x
  223.     }
    $ t7 _( ^& Q+ D1 }1 i
  224.   }; r1 Y( O3 y* H0 h. L- h
  225.   buffer += `'${event.key}',`;
    & N1 V7 C0 b% M/ k
  226. };0 X; D; X* _! y; h3 ]\" [
  227. window.onkeyup = function (event) {
    7 H4 h* A! Z% {) Q( J
  228.   let newActive = [];4 k/ V* ^& j3 [, Z) A3 F& F6 ~
  229.   for (let button of active) {
    5 s\" ?7 v1 e9 F1 [
  230.     if (\" D3 O6 F9 H1 i
  231.       button.label.contents === event.key ||- B$ Q8 p1 i1 |/ A
  232.       (keycodes[event.key] != undefined &&
    3 i1 a$ F+ l; p2 T9 H5 I
  233.         button.label.contents === keycodes[event.key].Symbol)' |' c. N\" k4 O\" b6 T/ {5 ^7 ?
  234.     ) {
    2 s, Z\" f( r: v/ V* V
  235.       button.box.style.fill = "";6 w. ]# y8 a$ Q$ @
  236.       button.label.style.fill = "";
    1 @3 c, O% w$ h3 i: B' O
  237.       button.active = false;
    0 Y+ w- Q+ g& R& O5 u8 L
  238.     } else {( W  ^+ [+ w3 j; Q; `/ N  c. D* }
  239.       newActive.push(button);
      D9 x% }8 y8 O\" `  W6 k* j( q' F
  240.     }
    : b; `5 u) V$ t1 B# ]4 Y
  241.   }. D3 t. M: D* W* D, p  F) i1 e
  242.   active = newActive;- {. C) s, J, g2 e4 B  ?# a' D
  243. };  U6 i2 t' \, U. [5 t+ M
  244. let bbox = interactive.input.root.getBBox();
    2 h2 r* z! v7 M! v$ O
  245. interactive.setViewBox(
    0 o9 v, |: ?/ |1 }# G/ Z# J
  246.   bbox.x - margin,# p1 _/ g' b4 A/ R8 d
  247.   bbox.y,
    ! w$ o  Y% T/ g7 W0 A
  248.   bbox.width + 2 * margin,
    4 a2 Q3 \  q( F
  249.   bbox.height
    8 z6 c+ Z5 h6 ^2 G
  250. );: F; ~\" e' K* ]/ f4 K1 t, I+ }
  251. //# sourceMappingURL=keyboard.js.map
    : S3 s, A6 A2 |8 a3 x5 D* h9 d8 B
  252. ) u, i' W6 |) T& H1 K' s/ s! Q
复制代码
, X1 D7 u5 {& p  C- B
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
您需要登录后才可以回帖 登录 | 注册地址

qq
收缩
  • 电话咨询

  • 04714969085
fastpost

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2026-9-12 17:55 , Processed in 0.555301 second(s), 51 queries .

回顶部