QQ登录

只需要一步,快速开始

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

使用html画一个键盘

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

1189

主题

4

听众

2934

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-4-27 10:42 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
  1. <!DOCTYPE html>$ b0 h' q  h. d9 V) M\" ?2 x
  2. <html lang="en">
    2 T' V$ [3 L/ j
  3. <head>8 ]0 b4 w7 G) }2 z
  4.   <meta charset="UTF-8">
    - _2 b2 k9 B0 x/ J% @9 _' X
  5.   <meta http-equiv="X-UA-Compatible" content="IE=edge">2 K8 h; b( O4 T9 f$ h4 q6 D
  6.   <meta name="viewport" content="width=device-width, initial-scale=1.0">  ^4 `! Y* J5 c/ H. |
  7.   <link rel="stylesheet" >
    # D/ b1 [3 |. K) x* l& F( [
  8.   <title>vector examples Keyboard</title>
    $ D; w8 g* y, H6 C8 y( ~+ p
  9. </head>
      |1 @; Y4 u; L
  10. <body>: `1 C% U& t9 _7 K  l, U/ E8 T
  11.   <div id="keyboard"></div>0 n, N; r' N4 S; B: {. o
  12.   <!-- <script type="module" src="./Keyboard.js"></script> -->$ s9 V- J1 v! c, @# s, Q
  13.   <script type="module" src="./temp.js"></script>
    ' b6 G9 H# X6 t0 r3 y/ I  E, F\" U9 }
  14. </body>. E# {) u+ o( S( h5 N' U- {* m; a/ ]7 t
  15. </html>$ w: O( d) @% D3 X/ U* c2 K. w/ n
复制代码
  1. import Interactive from "https://vectorjs.org/interactive.js";
    0 \- R\" q/ t% j& j  F& |
  2. console.log("Interactive", Interactive);2 F$ ?* L& L. a/ x) V3 M  n
复制代码
  1. /**
    , M6 K8 G5 @\" p- ~\" [9 c* _
  2. * [url=home.php?mod=space&uid=634908]@title[/url] Keyboard
      t& V: n4 c% E: U  d) y9 _! t# \
  3. * @description This interactive demonstrates how key board input can be used to add interactivity.
    2 l: t- ~/ d7 U$ R
  4. * @tags [input]
    7 T) H! Y2 v3 n' x+ Y6 b9 g6 `0 b' p
  5. */
    5 y2 G, l$ \5 o8 X
  6. // import { Interactive, getScriptName } from "../../index.js";7 V% `( o* I2 c- p9 s% d
  7. // let interactive = new Interactive(getScriptName());- m& G+ x8 R- }/ F& h3 W
  8. import Interactive from "https://vectorjs.org/interactive.js";
    9 n; V9 {9 C4 [& B( c2 `& [5 C7 [
  9. let interactive = new Interactive("keyboard");; [9 |9 F\" Y+ y: J& v  P) y
  10. interactive.width = 768;
    + G3 a, T/ O/ b, }! b\" r2 n
  11. interactive.height = 300;, e- ?# c/ U& u1 R7 z
  12. interactive.border = true;6 I& j0 @8 w9 f2 z
  13. let buffer = "";
    8 e- }9 d) A6 R* O4 E7 d# y
  14. let keys = [) {8 w7 V\" ~5 j$ S\" P9 F, u- v
  15.   [
    : P, Q. A/ N* {$ W1 @
  16.     "`",
    3 k$ S* C( T2 S/ I3 D
  17.     "1",
      }$ q1 B4 T. |  y$ @
  18.     "2",
    7 G+ J* T2 \4 x: z$ E* K
  19.     "3",) [. T' e8 b7 N* f; w7 A
  20.     "4",5 q+ F2 [/ T8 G) T* y
  21.     "5",
    . D5 m- {% J( E' K% A4 d
  22.     "6",
    9 W2 i4 h6 {1 l& ]
  23.     "7",
      D% v$ N$ C8 U5 Q1 \
  24.     "8",
    6 n3 ]\" D5 W3 J( j! a
  25.     "9",
    9 K; J\" z/ s# Y3 w$ z) A
  26.     "0",
    4 ~! g1 i- o/ o' s2 @7 r, D
  27.     "-",) M' Y2 V1 F6 @7 v' F/ M/ P
  28.     "=",
    ! F) r* G, R1 u% \$ s( q3 ^
  29.     "Backspace",! i4 u/ s: K9 u9 l- r+ z. h$ C
  30.   ],
    3 D6 n4 y4 u1 H
  31.   ["tab", "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "[", "]", "\\"],
    9 i: q1 e0 G8 S4 n/ q
  32.   ["CapsLock", "a", "s", "d", "f", "g", "h", "j", "k", "l", ";", "'", "Enter"],% f* i7 h6 |: q5 j' R- s- u7 g
  33.   ["Shift", "z", "x", "c", "v", "b", "n", "m", ",", ".", "/", "Shift"],
    5 |- d( \# |% p  f; w: b
  34.   [2 d/ A( ^# o- u- k6 C( U, f
  35.     "fn",
    * }& p  G* y$ l1 @6 N: F9 N( d
  36.     "Control",  E3 V. R& f3 W9 [; d3 z# z
  37.     "Alt",, O% ?& \7 [$ r1 E9 }
  38.     "Meta",- H: v+ j+ k) I% t& `7 R: j
  39.     " ",
      h9 U$ b; H4 C* v4 K. e0 g
  40.     "Meta",1 p1 f* D: o7 {! d# v- A
  41.     "Alt",
    1 D7 z  f9 |) T4 z8 q2 M9 D
  42.     "ArrowLeft",
    % Q9 o; T- ~' D! S7 k/ o, Z
  43.     "ArrowUp",5 X* Y3 B+ e) l
  44.     "ArrowDown",9 X5 g$ E. k: B2 w7 X6 X' a
  45.     "ArrowRight",
    * U) C' }, ?, c  l! Z2 G
  46.   ],
    * ]  }  R3 o* F* i0 o- y5 i
  47. ];- G/ E2 S+ u$ b& y2 P  ~
  48. let buttons = [];
    . c! v8 t# @1 @- x- H* Y5 x
  49. let keycodes = {
    # N$ Y/ E; Q. C3 W; r9 z* L
  50.   0: { Symbol: 0, Shift: ")" },
    \" l! c* j7 r\" L( ]' S2 W& D
  51.   1: { Symbol: 1, Shift: "!" },
    + \% k, G3 Y/ ~6 P' L/ J4 y1 S. J
  52.   2: { Symbol: 2, Shift: "@" },7 {+ |7 m0 t\" b3 m( [/ k# v
  53.   3: { Symbol: 3, Shift: "#" },2 D+ m, B) v1 R+ l- C
  54.   4: { Symbol: 4, Shift: "$" },9 ^7 t1 O5 X' s\" H: Q% i5 d1 A, N
  55.   5: { Symbol: 5, Shift: "%" },
    8 g1 e/ v7 r$ |3 C' {7 S
  56.   6: { Symbol: 6, Shift: "^" },4 }. Z\" A: ?\" \/ y! {+ u
  57.   7: { Symbol: 7, Shift: "&" },, }! z4 q; D: e: Y& X6 e6 I
  58.   8: { Symbol: 8, Shift: "*" },* |% p6 s% ]1 Q* [& P$ B& H
  59.   9: { Symbol: 9, Shift: "(" },
    \" f7 l2 A8 a# g9 E% B# X
  60.   a: { Symbol: "a", Shift: "A" },
    1 F' N2 R: o% J  y  Z% p
  61.   b: { Symbol: "b", Shift: "B" },
    & F  F2 ?, W- l; H0 n- R
  62.   c: { Symbol: "c", Shift: "C" },' O& w; K& O8 D( [\" m- d2 S
  63.   d: { Symbol: "d", Shift: "D" },
    3 c# W6 X1 D7 s& `
  64.   e: { Symbol: "e", Shift: "E" },
    6 s5 f* B' S; n7 F6 P/ @6 z
  65.   f: { Symbol: "f", Shift: "F" },
    3 D- M$ N5 C! A' j: _5 d- D- d
  66.   g: { Symbol: "g", Shift: "G" },# [0 }: n5 v+ A1 W* a$ F
  67.   h: { Symbol: "h", Shift: "H" },, Z! X' v& V' m: ~3 \2 h; }
  68.   i: { Symbol: "i", Shift: "I" },, T2 t# Y- ^. p' c; ~
  69.   j: { Symbol: "j", Shift: "J" },& |( c! l; V, i' I
  70.   k: { Symbol: "k", Shift: "K" },
    9 w# Z- F4 R# o0 u$ Q
  71.   l: { Symbol: "l", Shift: "L" },6 D$ f+ m$ N0 u* O# |
  72.   m: { Symbol: "m", Shift: "M" },
    \" {, Y6 x  d8 y; m5 p
  73.   n: { Symbol: "n", Shift: "N" },5 [& z/ g0 b1 M
  74.   o: { Symbol: "o", Shift: "O" },
    & [: T; s5 R; F5 \! b, F# S3 W, ~* m! N
  75.   p: { Symbol: "p", Shift: "P" },! m7 W# N+ T0 I  S/ s+ S
  76.   q: { Symbol: "q", Shift: "Q" },
    % J6 Q$ G6 `6 g- ]* t
  77.   r: { Symbol: "r", Shift: "R" },
    / Y/ s) A0 |& q, \% @% w2 {' Q
  78.   s: { Symbol: "s", Shift: "S" },\" @+ ?  B0 `0 F& ~. G! |/ k\" ]
  79.   t: { Symbol: "t", Shift: "T" },
    ; x) y. m$ C9 ~/ G, e
  80.   u: { Symbol: "u", Shift: "U" },
    8 @% [- p  f! Y9 |: S5 \+ f
  81.   v: { Symbol: "v", Shift: "V" },
    ) Z  o  O$ N3 p( I: g' [2 p7 B: G: T# s) T
  82.   w: { Symbol: "w", Shift: "W" },
    5 |$ a+ f1 S* W5 P* Y\" S\" _: q; f
  83.   x: { Symbol: "x", Shift: "X" },* f5 L& {4 c' r) d9 ^
  84.   y: { Symbol: "y", Shift: "Y" },- Y9 e\" v: {9 a\" U) I0 }- i
  85.   z: { Symbol: "z", Shift: "Z" },
    7 W, M6 j0 e# w* p
  86.   "`": { Symbol: "`", Shift: "~" },
    . P4 u! J9 \6 [/ N
  87.   "-": { Symbol: "-", Shift: "_" },
    ! s$ a# L' S2 {\" g: l
  88.   "=": { Symbol: "=", Shift: "+" },3 f\" R4 m  `1 V( M1 W; s3 h% c\" B
  89.   ";": { Symbol: ";", Shift: ":" },; p/ V- q; ~0 V# D- I
  90.   "'": { Symbol: "'", Shift: '"' },2 Y4 t+ O\" D3 ?
  91.   "[": { Symbol: "[", Shift: "{" },
    + B- ]3 ?8 h% c$ i; r
  92.   "]": { Symbol: "]", Shift: "}" },; Q, {% k; n\" g& B1 o
  93.   "\\": { Symbol: "\\", Shift: "|" },4 i3 L$ v\" h0 }, ^% e( u! c
  94.   ",": { Symbol: ",", Shift: "<" },
    - A% U  t9 ?& o9 Y1 \
  95.   ".": { Symbol: ".", Shift: ">" },
    4 Q/ I, u: v1 _9 I5 I2 `
  96.   "/": { Symbol: "/", Shift: "?" },/ p, ]# M2 I. d' z5 _5 b
  97.   Backspace: { Symbol: "⌫", Shift: "" },
    % t; Z7 a7 G, X- y4 `# ^0 c* u/ f
  98.   tab: { Symbol: "  ", Shift: "" },  h+ i! p& S5 _& H9 @8 n$ w! r
  99.   CapsLock: { Symbol: "⇪", Shift: "" },
    # Y% b3 g7 c8 I* C$ n) b# G2 q9 s* J
  100.   Shift: { Symbol: "⇧", Shift: "" },
    . U( U5 K9 M# D2 G
  101.   Enter: { Symbol: "⏎", Shift: "" },
    5 z7 V\" @1 [& X
  102.   Control: { Symbol: "⌃", Shift: "" },\" I: R3 T# J8 I3 Y* }& E
  103.   Alt: { Symbol: "Alt", Shift: "" },% j3 @& |+ X& D9 s
  104.   Meta: { Symbol: "⌘", Shift: "" },( Z1 W+ A5 O' H/ t7 V
  105.   ArrowLeft: { Symbol: "←", Shift: "" },
    + v# K) G: }% ^
  106.   ArrowUp: { Symbol: "↑", Shift: "" },! T& X2 z6 o9 ~3 L
  107.   ArrowDown: { Symbol: "↓", Shift: "" },8 d\" L. h1 o8 I! v. O
  108.   ArrowRight: { Symbol: "→", Shift: "" },8 T+ H7 ]\" I  _. q0 ]! Z/ z
  109.   " ": { Symbol: " ", Shift: "" },\" v6 v+ [: j! E7 q2 O1 \9 Z: P
  110. };5 ^' H1 L$ J. {\" t) H& V
  111. let buttonMap = new Map();\" ]7 B: z5 t\" e0 B
  112. let height = 32;, Q+ i3 W; B- @; d* N
  113. let margin = 8;
    0 C5 X5 c! p7 C' Q  O4 n+ N
  114. let capslock = interactive.button(0, 0, keycodes["CapsLock"].Symbol);
    + D* w7 ^# x, A2 j/ J
  115. let shift = interactive.button(0, 0, keycodes["Shift"].Symbol);- n9 K; R* y0 B) J6 l% v
  116. for (let row = 0; row < keys.length; row++) {
    + o; \/ W4 w3 c7 N) w  H6 G
  117.   let x = 32;, P2 E5 K4 L' c3 ~+ i
  118.   let prev;
    - U8 ?2 B  V1 `3 r
  119.   for (let i = 0; i < keys[row].length; i++) {  }8 c/ N& C7 X% y
  120.     let key = keys[row][i];% U1 C\" n\" K3 N\" C1 o1 `- Q
  121.     let width = 32;
    / W\" K+ v1 U\" b+ }- i
  122.     let button;
    , u, }% M; X) R
  123.     switch (key) {: r7 G) S- B! P; x
  124.       case "CapsLock":/ }: v3 z7 q\" S& o$ ]
  125.         button = capslock;* x  o* i- a6 m3 I  m: B
  126.         width = 64;
    + h# D$ ?4 w+ V* Y4 _% l* {
  127.         break;
    8 f% y4 w# q\" C, N; m, k4 x4 Z* F
  128.       case "Shift":8 h; V5 J* ?! A\" M. c
  129.         if (shift.x === 0) {( M5 A1 |# \9 n% c- b2 n% \
  130.           button = shift;
    % x( P7 @5 w! i7 d7 s
  131.         } else {
    0 C! y) j; _, }8 M
  132.           button = interactive.button(
    6 D7 u: R\" p5 g5 i
  133.             0,
    / u8 I, z* F( C+ _2 Q5 V5 T( M
  134.             0,& _3 r6 s- G2 i8 [
  135.             keycodes[key] != undefined ? keycodes[key].Symbol : key$ ]3 @- v$ M' q
  136.           );9 m' I& c; U( o) q- k% |$ f( b
  137.         }
    ) a2 Z  ]* F) k  n# p8 ^' s* e
  138.         width = 90;
    0 u( t  _; x( F
  139.         break;  t2 F2 {) Z! N! N; B  y7 ]  P
  140.       case "tab":+ _4 v( L' M- {: ~+ d
  141.         width = 50;, [0 T# @# G4 e4 ~
  142.         button = interactive.button(, k7 n. d6 i5 p+ A
  143.           0,
    2 @, F/ Y4 ^3 V- m7 i
  144.           0,
    $ x3 r. v2 z4 O- W0 c
  145.           keycodes[key] != undefined ? keycodes[key].Symbol : key
    3 {4 \' K8 D, u4 B/ O' u
  146.         );/ O) m1 @1 A! H/ R1 s) ^7 E9 G% j
  147.         break;% C9 q9 q& L& t7 T) O
  148.       case " ":# G6 x2 |, m. L1 ]2 q) I
  149.         width = 176;0 I! J2 j/ h3 [0 \\" [2 {2 _: K
  150.         button = interactive.button(
    7 Z% O/ B, ^! l. _3 N3 [9 P
  151.           0,
    1 ~0 b\" Y2 u' ]& B* w7 ~
  152.           0,3 F5 s( ^. h: c
  153.           keycodes[key] != undefined ? keycodes[key].Symbol : key9 U* D5 g9 J- i/ v* V4 ]
  154.         );# O) m% T2 p; H& N5 O) j, o\" s
  155.         break;
    9 a5 d6 H- G$ n- @( \* \
  156.       case "Meta":
    . X) s+ y! T2 p
  157.         width = 50;! D\" p' G/ Z\" s- \& \5 W
  158.         button = interactive.button(
    : d( S1 I2 s+ G/ P* j
  159.           0,8 x8 c2 q3 d; O$ H' {8 B0 L. `
  160.           0,# P7 I9 x( A- R  q! y# t
  161.           keycodes[key] != undefined ? keycodes[key].Symbol : key
    1 q. ~2 a# M6 C+ W+ w, [' T2 f
  162.         );
    + K+ T1 |! A7 Z: Z8 y6 }6 H
  163.         break;3 O+ \2 b6 M3 B8 ]8 D
  164.       default:0 K4 N/ c, h8 m& q3 z# P
  165.         button = interactive.button(
    ' ~: ~2 l1 c\" E. t5 t# O, a( K
  166.           0,+ s4 j+ D! Y5 R* C! p2 ~\" I$ T: F
  167.           0,
    ' R  x  I  g3 e5 }2 _
  168.           keycodes[key] != undefined ? keycodes[key].Symbol : key
    3 M1 w5 ^' `0 P2 X; r% S- I! y
  169.         );: E\" f; e+ {  b' N( s, b
  170.         if (keycodes[key] != undefined) {
    ; w, D5 _6 X& L( u) `( i; i0 ~; U
  171.           if (keycodes[key].Shift != "") {
    # b. ?& [6 y+ M1 q4 H
  172.             button.addDependency(shift, capslock);; z4 v: b! U- [
  173.             button.update = () => {$ C2 W$ T( W2 |0 @0 z8 i
  174.               if (shift.active || capslock.active) {7 p$ K# _( Q0 w
  175.                 button.label.contents = keycodes[key].Shift;
    & W  ?3 k% l7 |9 L; y
  176.               } else {
    3 z* ^! \! w7 M9 S  s- i
  177.                 button.label.contents = keycodes[key].Symbol;
    \" q& T7 v3 y$ d
  178.               }
    & v# ~) A; O6 B, P+ v4 M- t/ Y9 d) b
  179.             };
    : |% f, \9 d3 l- ]! g
  180.           }0 F$ Q) N  @\" }  B6 Y
  181.         }
    0 ]- k/ V8 Z- H' N- ]5 _
  182.     }+ E  e5 L8 R( l\" @( e; |2 @' \
  183.     button.x = x;/ r; R! B% `) H# r5 v
  184.     button.y = 64 + row * (height + margin);! K# w3 s\" x/ j0 D5 L
  185.     if (button.box.width < width) {8 B  K& w/ V% f4 [8 B( W
  186.       button.box.width = width;
    ( k/ p9 w) v$ E2 _; ^
  187.     }
    , ]: e- x# o  M& G$ E, y. d' B
  188.     let bbox = button.root.getBBox();# I# ]4 [0 z! T: A: Y* z: @
  189.     x += bbox.width + margin;: j, z% @. g& q6 B6 F% X
  190.     buttons.push(button);' ~0 X3 G, Q9 d& |. ?: `
  191.     prev = button;
    8 a4 H& \- {8 f1 E: m% Y
  192.     buttonMap.set(key, button);2 M4 d\" X! c4 o9 k0 u+ P) W
  193.     if (key === "ArrowUp") {) }' _2 ^; c# V, j9 v7 B1 j
  194.       button.box.height = 16;9 O- P5 N. I( @9 Z! R) Z
  195.       button.label.root.style.display = "none";
    : l( ?2 k\" M) q2 M3 Y
  196.     } else if (key === "ArrowDown") {! o8 `- U# ]9 v  U, Q
  197.       button.box.height = 16;
    + _$ z# x% x! C+ n- Y0 N
  198.       button.x -= 32 + margin;# L$ M+ G  a0 x, T2 h6 S
  199.       button.y += 16;
    ' d1 w( B( E' F+ R' z, h
  200.       button.label.root.style.display = "none";
    0 g( h$ \, w1 b
  201.       x -= bbox.width + margin;
    / W( f* S5 `. E* e! _
  202.     }7 ^( X! k! p7 i# k) J9 A- K  T
  203.   }
    - H  ?  d- ^5 l! B8 I\" U
  204.   let right = prev.x;
    2 i: f1 L\" B( k\" b8 @# _* D
  205.   if (right < 630) {
    4 a/ Y( M% W2 P: C
  206.     prev.box.width = 630 - right;
    ! L/ Z! q: I/ W! [+ q) I
  207.   }& r/ @* B' r- u0 {1 k
  208. }
    : l4 n+ R/ _, z
  209. // console.log(keycodes["0"], shift, capslock);
    5 }  E; b\" @& t6 t1 I
  210. let active = [];
    # H5 V/ Z+ H3 M\" b$ k% C  y+ Y
  211. window.onkeydown = function (event) {\" H) F) {7 @4 o/ C
  212.   for (let i = 0; i < buttons.length; i++) {
    7 ?7 B6 w% B; [# I
  213.     let button = buttons[i];7 P  m* q. A6 ]5 J
  214.     if (* p% e4 Y3 ?. h: P; _
  215.       button.label.contents === event.key ||* b( i/ S9 v' t/ c% }  x
  216.       (keycodes[event.key] != undefined &&  Y' D9 P& c. @
  217.         button.label.contents === keycodes[event.key].Symbol), g2 ?1 y% K1 S0 }
  218.     ) {4 F  r3 p7 N/ W9 w\" _' C0 q1 G2 ~
  219.       button.box.style.fill = "#f8f8f8";8 j# Z\" q+ c, q1 R
  220.       button.label.style.fill = "#404040";; P$ @' t3 s0 G, G% s
  221.       button.active = true;  A( U8 u) b* G8 L$ b6 j% ?
  222.       active.push(button);6 \; l) C$ l5 I5 o! `9 q6 Z: `
  223.     }  n- x7 ]; z  e- @& T3 U
  224.   }
    4 n: t0 j7 B. S. Y% |\" A
  225.   buffer += `'${event.key}',`;
    ! f8 I- l9 h3 q# ]
  226. };
    + C. Q$ A$ H& T! ~3 S
  227. window.onkeyup = function (event) {/ M& Z( U* b1 k- T' Y
  228.   let newActive = [];
    & [\" ]4 o8 c5 N$ B  a: s9 h
  229.   for (let button of active) {& x, x& N. x& ]: J# X\" D6 q3 \* U& @
  230.     if () g2 k( o- x' ]. J, }
  231.       button.label.contents === event.key ||9 g5 n& l: y. S* h
  232.       (keycodes[event.key] != undefined &&
    : ^! h/ g; D- ~0 X0 o2 ^4 Y
  233.         button.label.contents === keycodes[event.key].Symbol)
    + I; J# Q' h  C% p
  234.     ) {3 e* C# a+ y. `\" R3 C6 r
  235.       button.box.style.fill = "";0 N( \8 x: O! e* h
  236.       button.label.style.fill = "";
    1 K& [$ I\" t5 d& \' L8 i) `
  237.       button.active = false;
    , |# {6 h) a- H% }0 C% R\" b' X
  238.     } else {/ k) L( M; e7 P7 a5 d, R: K6 w
  239.       newActive.push(button);1 o: J1 F9 L4 J$ [. w9 Y2 R! b
  240.     }% a6 |* T+ w/ O' p6 ~6 b  A9 {+ N
  241.   }' C/ s; ?: ~6 h3 s6 g
  242.   active = newActive;+ W3 {8 Q# r. l; T6 F4 M\" s) j
  243. };
    & _  j$ s* r! h8 G; `
  244. let bbox = interactive.input.root.getBBox();
    ' J  L' K! J+ B' L
  245. interactive.setViewBox(
    4 \8 @8 H) ^8 C
  246.   bbox.x - margin,, M* e# @5 e6 A\" i7 K0 q
  247.   bbox.y,2 R8 U$ v. ]( w6 N; L4 e+ d4 n
  248.   bbox.width + 2 * margin,% u% x4 u5 R* O\" j, |
  249.   bbox.height
    # C8 E+ j' F3 Y8 w: J# z! N
  250. );( e  K$ ?) W$ T% o# b- V
  251. //# sourceMappingURL=keyboard.js.map4 }% X- @\" a3 f* ^7 K# p  z/ N# I

  252. $ p$ K& J\" P* Y6 c6 g
复制代码

/ t8 K2 Q5 `8 D: K/ t
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-8-7 10:39 , Processed in 0.282571 second(s), 50 queries .

回顶部