QQ登录

只需要一步,快速开始

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

使用html画一个键盘

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

1192

主题

4

听众

2946

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-4-27 10:42 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
  1. <!DOCTYPE html>
    7 a8 R& W/ V- D  t5 M% r: g
  2. <html lang="en">9 b& R/ s  n7 }$ X3 Y5 D  a
  3. <head>\" l; f7 R# M. U\" x  a4 q- [
  4.   <meta charset="UTF-8">
    3 ?4 g1 i( b$ p) L+ a8 @) r
  5.   <meta http-equiv="X-UA-Compatible" content="IE=edge">/ L  _6 X; }! y3 S% r) ^* U7 h4 e
  6.   <meta name="viewport" content="width=device-width, initial-scale=1.0">
    , H8 h2 I\" d( S( C% }' c
  7.   <link rel="stylesheet" >+ f# n9 U\" g9 T5 j& l/ x- x  U3 ^
  8.   <title>vector examples Keyboard</title>. M* T! e, I% W9 Q
  9. </head>- G( P1 H  @) S! |
  10. <body>5 J% b$ c8 ?1 G2 @9 M% Q
  11.   <div id="keyboard"></div>
    \" h' G) \' a* a. u9 i& k4 B
  12.   <!-- <script type="module" src="./Keyboard.js"></script> -->
    \" Q* T7 n3 O. v$ v: P1 |7 i
  13.   <script type="module" src="./temp.js"></script>
    3 H  w2 v7 M9 e% G
  14. </body>
    + a/ j3 k6 t: }; T$ t
  15. </html>! u  f: r$ q2 e; g9 l6 [
复制代码
  1. import Interactive from "https://vectorjs.org/interactive.js";9 ^$ b) K& o# h1 ~! Z0 Y! g
  2. console.log("Interactive", Interactive);( u2 {. m; W9 f. E: ]' r
复制代码
  1. /**% l: f; P4 j6 J! _
  2. * [url=home.php?mod=space&uid=634908]@title[/url] Keyboard
    ( T4 R: U$ h7 F/ ?
  3. * @description This interactive demonstrates how key board input can be used to add interactivity.
    + D; y: r. y2 Q  I8 H5 _% U6 ^
  4. * @tags [input]
    # L/ K! c0 R. [\" e6 h
  5. */
    5 t$ s2 k. u0 W7 d; B: q
  6. // import { Interactive, getScriptName } from "../../index.js";
    / B  }. `, }. M. Z
  7. // let interactive = new Interactive(getScriptName());- ^. O- }7 t+ ~* r8 X5 t
  8. import Interactive from "https://vectorjs.org/interactive.js";- S: J8 P, P  r8 A
  9. let interactive = new Interactive("keyboard");
    ( F' v8 }6 X! u' Y( X) B0 m
  10. interactive.width = 768;
    ) B* T9 G1 A8 a0 r0 Z* i
  11. interactive.height = 300;
    ) b4 k5 A% R, ~5 f! F) K6 Q
  12. interactive.border = true;
    ) k) z4 k4 d0 F
  13. let buffer = "";. _; M( y; i, k- T+ P
  14. let keys = [- M) N/ S5 D, G
  15.   [
    : D8 g2 y% S, _' E$ D, s
  16.     "`",
    & S: r6 q6 b- F# L. C& B4 ?
  17.     "1",
    % E5 C3 ]! N0 f# ]+ a3 s8 ?
  18.     "2",
    0 [$ m0 u( r7 y* @0 r
  19.     "3",0 H* ]& [! U: J6 p. ?
  20.     "4",8 y( A( T% O, g4 Q\" {8 F
  21.     "5",
    1 W+ r. R$ Z) k) ]' }4 |  ^( ^
  22.     "6",7 E, e$ Y! P3 P
  23.     "7",
    6 u( [* b! t: \. W! P9 ~+ ?+ x
  24.     "8",
    ! E! _: \6 b6 H3 B6 z8 n
  25.     "9",  g* W) g$ J, u\" B' |
  26.     "0",+ ?4 O- K8 m/ d& l
  27.     "-",6 b% \4 c* |0 W$ Z' H, N
  28.     "=",
    9 U% d, P( M$ h$ _( u% i
  29.     "Backspace",
    # I1 J. \+ }0 E0 x* ?9 I; P4 e+ _
  30.   ],
      K; a9 L, b. j' r$ c: l) A* R
  31.   ["tab", "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "[", "]", "\\"],
    6 W, y% t1 T$ W+ E6 A
  32.   ["CapsLock", "a", "s", "d", "f", "g", "h", "j", "k", "l", ";", "'", "Enter"],4 s) l& E' N\" L0 X7 C
  33.   ["Shift", "z", "x", "c", "v", "b", "n", "m", ",", ".", "/", "Shift"],
    * M) y8 [8 C7 U3 S* v
  34.   [5 x( C$ m. C* R' t6 ?
  35.     "fn",& ?( d& c' p$ F/ t6 e) H
  36.     "Control",
    7 I# d2 Z) z: H4 B6 {
  37.     "Alt",
    / e0 v  N2 W\" |( E3 }\" N6 t8 j+ x
  38.     "Meta",
    & o% o! t) Q4 c
  39.     " ",, C2 s  h: \5 f& ^( W# K
  40.     "Meta",
    ) @% L# e2 e! @& G' S: q3 @
  41.     "Alt",
    - O+ _$ ~; o1 P/ m/ V
  42.     "ArrowLeft",
    ! \: q0 ]; w4 D  x
  43.     "ArrowUp",
    2 }& j5 L1 P( a' M$ E
  44.     "ArrowDown",
    0 h$ V: P0 A+ R- X! W# G& C
  45.     "ArrowRight",
    6 n\" v) R5 q4 h
  46.   ],
    ' B7 l- y4 h- |7 O9 U
  47. ];
    0 M0 b7 ~6 L: j/ ?, q' |+ W
  48. let buttons = [];1 r8 ?3 f0 Q2 r
  49. let keycodes = {
    1 R; j: q/ w( W4 Q( E9 n\" _
  50.   0: { Symbol: 0, Shift: ")" },9 X8 S  M: T7 c' p9 x9 S
  51.   1: { Symbol: 1, Shift: "!" },9 b& C' ]. P; T' D) f7 [\" \# f
  52.   2: { Symbol: 2, Shift: "@" },
    ; C. q7 l& r# a7 I3 j, M3 d/ q
  53.   3: { Symbol: 3, Shift: "#" },
    ! _+ [/ j- s. O! u
  54.   4: { Symbol: 4, Shift: "$" },* I; }7 T4 F& r7 n+ X3 a
  55.   5: { Symbol: 5, Shift: "%" },: v4 n1 ^$ }% u3 R  n1 [\" K) T: w
  56.   6: { Symbol: 6, Shift: "^" },
    2 X! J6 z2 T6 A7 U
  57.   7: { Symbol: 7, Shift: "&" },
    ! e/ N: L# E& ~/ M/ V! f) {
  58.   8: { Symbol: 8, Shift: "*" },9 Q% h5 a; _( l' Y3 C
  59.   9: { Symbol: 9, Shift: "(" },
    % O\" ?; Z& n  u# l! m# n
  60.   a: { Symbol: "a", Shift: "A" },* R7 E, L  ^1 P: P4 r: Q
  61.   b: { Symbol: "b", Shift: "B" },0 N. ]1 X/ z' X& v. _' h
  62.   c: { Symbol: "c", Shift: "C" },1 U; Z2 v' r9 V6 l, h7 ?5 D
  63.   d: { Symbol: "d", Shift: "D" },1 F9 z' K! Q2 P$ D
  64.   e: { Symbol: "e", Shift: "E" },
    : L4 X9 G! ?0 q3 X5 p/ Q8 A
  65.   f: { Symbol: "f", Shift: "F" },
    3 b% r5 d0 ~! x
  66.   g: { Symbol: "g", Shift: "G" },, d& S' z9 W5 C+ x# s
  67.   h: { Symbol: "h", Shift: "H" },
    9 u( T4 P% s: n2 V% O) r! t
  68.   i: { Symbol: "i", Shift: "I" },
    3 l- j6 v9 R$ a; p1 [
  69.   j: { Symbol: "j", Shift: "J" },( t% Q* t! _+ M% ]& _% ]) d
  70.   k: { Symbol: "k", Shift: "K" },
    : `( U9 l- d: B7 v. {$ a; W
  71.   l: { Symbol: "l", Shift: "L" },
    5 w: E. p; M. g+ c$ j, ~; \
  72.   m: { Symbol: "m", Shift: "M" },
    4 i$ j0 t\" @' B/ O: L
  73.   n: { Symbol: "n", Shift: "N" },
    # J% B8 k1 y& V3 G, l& d& J
  74.   o: { Symbol: "o", Shift: "O" },# a( {/ B- j* U+ r5 U; J
  75.   p: { Symbol: "p", Shift: "P" },7 J$ m\" \2 f$ `# {- @3 o$ I+ _% W
  76.   q: { Symbol: "q", Shift: "Q" },
    $ s0 Y; T( a6 S$ w% I0 }  e
  77.   r: { Symbol: "r", Shift: "R" },& g2 {8 U6 S0 O3 N5 U/ F1 ~\" r; L
  78.   s: { Symbol: "s", Shift: "S" },0 V- R$ W1 {$ t  w: b
  79.   t: { Symbol: "t", Shift: "T" },
    * l9 S5 M3 Z; h/ r* h2 ?
  80.   u: { Symbol: "u", Shift: "U" },
    4 J2 f% i; T\" r6 D3 `
  81.   v: { Symbol: "v", Shift: "V" },
    ( f) g, u4 a+ n8 }1 N
  82.   w: { Symbol: "w", Shift: "W" },; ^* j; i8 A\" o: h) j
  83.   x: { Symbol: "x", Shift: "X" },
    + T# A$ T. e) D: u% t# [
  84.   y: { Symbol: "y", Shift: "Y" },, m* m; @* g9 ^3 r
  85.   z: { Symbol: "z", Shift: "Z" },4 `8 @$ T! t7 B. V9 D
  86.   "`": { Symbol: "`", Shift: "~" },; N5 u0 J* j: F1 I
  87.   "-": { Symbol: "-", Shift: "_" },
    \" \7 l+ [# \  B& N
  88.   "=": { Symbol: "=", Shift: "+" },
    $ D& E. G% f7 P# n9 j/ O
  89.   ";": { Symbol: ";", Shift: ":" },
    \" V6 {: T/ S) \
  90.   "'": { Symbol: "'", Shift: '"' },7 m/ j9 M3 w8 }/ ?+ I
  91.   "[": { Symbol: "[", Shift: "{" },4 t0 y; [* M2 N% C* F; }
  92.   "]": { Symbol: "]", Shift: "}" },
    & E* \3 N( b4 |\" k; C! b
  93.   "\\": { Symbol: "\\", Shift: "|" },\" j4 f  j8 r4 ]
  94.   ",": { Symbol: ",", Shift: "<" },
    3 ]- }\" _9 `8 @
  95.   ".": { Symbol: ".", Shift: ">" },6 o! C; C* A! |6 J* C
  96.   "/": { Symbol: "/", Shift: "?" },
    ) U7 Y' Z- S# e- N6 m: B3 }
  97.   Backspace: { Symbol: "⌫", Shift: "" },+ p) L: d5 ?6 y$ _) d
  98.   tab: { Symbol: "  ", Shift: "" },4 Q2 ^  i2 n9 B\" p- a
  99.   CapsLock: { Symbol: "⇪", Shift: "" },
    . b- G, h: M- b' S. R, i
  100.   Shift: { Symbol: "⇧", Shift: "" },
    $ l- l- A( Q$ S8 f) p( g
  101.   Enter: { Symbol: "⏎", Shift: "" },
    * g8 I\" r1 c4 |6 X9 g\" G' V( V
  102.   Control: { Symbol: "⌃", Shift: "" },. ^9 x$ y& p\" D: F* y
  103.   Alt: { Symbol: "Alt", Shift: "" },
    , S, w* a9 V+ m4 r2 b+ ~
  104.   Meta: { Symbol: "⌘", Shift: "" },
    : S! T! i1 Y8 E& ^\" w& r\" A
  105.   ArrowLeft: { Symbol: "←", Shift: "" },; s4 E% e0 r' Y/ B1 m\" l\" f
  106.   ArrowUp: { Symbol: "↑", Shift: "" },
    5 k7 T4 S1 P8 X. ]
  107.   ArrowDown: { Symbol: "↓", Shift: "" },. a3 T# Z- [8 a# D9 v4 c' J2 h  p
  108.   ArrowRight: { Symbol: "→", Shift: "" },, C+ n* L7 a( y* X
  109.   " ": { Symbol: " ", Shift: "" },/ Q- n9 R& R' m- q& K3 @& H- d
  110. };5 Y. r, u: S\" ^2 V1 [6 f1 j
  111. let buttonMap = new Map();- s/ p$ c4 }- z9 N4 Q' L5 y1 y
  112. let height = 32;
    & t: s% W' ]9 Z
  113. let margin = 8;7 c( U  }# a. o- B! I
  114. let capslock = interactive.button(0, 0, keycodes["CapsLock"].Symbol);$ w  M7 E, _# v5 O! ~% n( t. p* Y
  115. let shift = interactive.button(0, 0, keycodes["Shift"].Symbol);
    & `# I: \0 k8 T# Y! U
  116. for (let row = 0; row < keys.length; row++) {4 D2 c3 R6 @4 m% [
  117.   let x = 32;
    2 z! }! E& a: P, L. _
  118.   let prev;
    3 I4 D9 ?4 e- w, `- X) U
  119.   for (let i = 0; i < keys[row].length; i++) {4 O( w+ E2 {# |% f0 A4 M\" L
  120.     let key = keys[row][i];
      ^; `, X; A; W7 Y! D) p; [$ a; I
  121.     let width = 32;3 {: ?4 P( R\" E2 Y: V. P  }# e) B) \& g
  122.     let button;
    ( z/ v  p& f$ {- b/ D' y' L) ~& J* Y
  123.     switch (key) {/ L1 M/ R\" F+ o
  124.       case "CapsLock":9 Y! M8 H  S) U) K$ G) h
  125.         button = capslock;
    \" @% T( @0 |1 |( \, c
  126.         width = 64;* N# M9 Q; E3 d
  127.         break;1 U- `; a, Z7 a
  128.       case "Shift":
    5 M& G9 M* _; y4 R  S5 ~
  129.         if (shift.x === 0) {
    - a' D, I  P2 ~+ Y
  130.           button = shift;8 @, d5 [\" M\" }2 r
  131.         } else {
    ) [& o- q6 _8 B( u& f/ ^* ~- k
  132.           button = interactive.button(2 P$ E7 e! g6 M\" G- u, f+ T
  133.             0,
    * \\" a+ c5 R+ d- g
  134.             0,
    ! c' B4 Z\" O: M7 A' f
  135.             keycodes[key] != undefined ? keycodes[key].Symbol : key' z* P$ S\" r2 f8 d  \' L
  136.           );: l$ D  b* E; ^) h
  137.         }8 ]7 u. w- C/ g8 k8 G8 A8 m% B
  138.         width = 90;
    & _! ?0 g2 U- c( M\" u
  139.         break;
    % v- H4 I2 ]3 ~
  140.       case "tab":0 B: o: X, j2 q  H# U
  141.         width = 50;
    $ _1 U$ C6 F: J% ~& z7 f. R
  142.         button = interactive.button(. ]9 j+ s$ n4 s; S
  143.           0,
    # I% n: T( v/ o* _, S
  144.           0,' G3 Q* }! F; H; Z
  145.           keycodes[key] != undefined ? keycodes[key].Symbol : key
    * k* ?  u$ m8 G1 u7 m
  146.         );/ m$ `, V9 X! h# A9 Z, i
  147.         break;
    + Z5 `\" B5 r4 [4 B/ g/ T% c\" E2 G5 h( V
  148.       case " ":
    4 f( C7 a' }) P0 ]5 n
  149.         width = 176;1 x( g% L3 \% ^9 x, P) Z; r
  150.         button = interactive.button(
    ) z4 s; C3 M8 }9 r& A3 l* w! T
  151.           0,0 l3 F7 P\" Q/ O+ X5 L/ Z! O* E
  152.           0,! w8 T$ e1 P1 o; X- r8 E% t
  153.           keycodes[key] != undefined ? keycodes[key].Symbol : key) ?2 e* h. T, w4 V6 w\" m
  154.         );
    4 v! v8 m3 U* ~\" b& L\" H8 O
  155.         break;; y+ U5 i3 i' K1 E6 w4 B
  156.       case "Meta":
    ; ?' G1 N- }: K( i0 z3 k& N8 N
  157.         width = 50;
    : Y( S# i8 p, \( Y
  158.         button = interactive.button(
    9 e, O9 R; o$ Q5 ?
  159.           0,
    : I2 D- T. i/ n, U& Q  \
  160.           0,
    5 E! E7 e2 g+ b; ~\" G\" {
  161.           keycodes[key] != undefined ? keycodes[key].Symbol : key5 W: b6 k! T9 D' G\" F
  162.         );) k4 B, _/ _/ U  R7 ~1 A
  163.         break;/ s$ z% L4 W6 k
  164.       default:) j9 i$ _8 \3 [1 K' z. _# a8 H
  165.         button = interactive.button(3 B5 I3 W* f* C. c
  166.           0,% x+ K6 C# A% V: ~8 j. [
  167.           0,9 n2 x- x6 Q5 x6 i
  168.           keycodes[key] != undefined ? keycodes[key].Symbol : key) V1 O. M2 q  T, w8 j- V& b
  169.         );# ]  k( v( D. q* l$ N% R3 {
  170.         if (keycodes[key] != undefined) {
    : b5 L2 c- c. n! C7 i
  171.           if (keycodes[key].Shift != "") {
    , x0 V+ r1 I  _4 l! a. J# M
  172.             button.addDependency(shift, capslock);
    ( |: N8 K# N. U; s- P: y' l
  173.             button.update = () => {0 y$ D1 f2 E8 l2 K. O4 N  g( _9 G
  174.               if (shift.active || capslock.active) {
    : X1 d7 a8 X. v' R* |& H
  175.                 button.label.contents = keycodes[key].Shift;6 Y2 Z+ u0 R. g5 H
  176.               } else {
    + F% G. u0 a! q+ }5 k# O
  177.                 button.label.contents = keycodes[key].Symbol;* k7 ~4 u' r% y5 K- K5 f. R' U: f
  178.               }- T, H7 b( \  k2 ~1 ^/ \
  179.             };
    0 B2 n; y$ E! W# ]7 Y, K# W  K7 J
  180.           }
    # X. p& z+ l; y: e8 a
  181.         }: ^; T+ }# W9 J3 @2 M
  182.     }6 R* \$ s9 @0 a( G% F. K
  183.     button.x = x;
      n; ~\" Y2 ]! t0 |
  184.     button.y = 64 + row * (height + margin);  }: T4 S' L9 g& u
  185.     if (button.box.width < width) {
    5 C/ `; ^\" Z+ W5 ]8 F' Q
  186.       button.box.width = width;
    ' O& T+ ?# J6 S& m# l) J
  187.     }6 t% R2 ?1 d! N
  188.     let bbox = button.root.getBBox();! Z4 u  Q% V/ C; t' m7 i' O7 p1 N
  189.     x += bbox.width + margin;
    ; F0 J) o& o9 N! h& x3 a
  190.     buttons.push(button);
    : m; a- N4 G0 D' m. x# x5 @1 q
  191.     prev = button;) r* e5 s3 `$ A5 }; j0 k: G+ U
  192.     buttonMap.set(key, button);
    * W# o7 z, |' l0 R! A, O, I
  193.     if (key === "ArrowUp") {: P2 j* @, G2 n) Y( n\" D' b
  194.       button.box.height = 16;; s/ g\" O3 _0 ^2 X4 `
  195.       button.label.root.style.display = "none";
    * w5 q1 B2 B6 |4 O
  196.     } else if (key === "ArrowDown") {5 i  O# `/ Q/ X
  197.       button.box.height = 16;5 ?: J( M. R9 B$ `
  198.       button.x -= 32 + margin;( F2 [4 S) |% K, @; J+ N- }! p
  199.       button.y += 16;
    6 c/ {1 \) j1 M4 p$ q5 S, [# }
  200.       button.label.root.style.display = "none";
    0 E: {. g! S; L* r
  201.       x -= bbox.width + margin;
    * ?! Z6 W. T, b/ n1 Y: P
  202.     }
    * v, d' X6 d3 l+ e
  203.   }
    8 M\" L9 _# U5 m7 f
  204.   let right = prev.x;) s& u7 T0 h+ x\" }9 ^
  205.   if (right < 630) {4 H9 P0 U/ T! d& v) B
  206.     prev.box.width = 630 - right;2 ]. o7 v+ ~. k: y3 z7 [0 N
  207.   }  `  H% q9 h( k, j% l* ~5 R
  208. }' h) @) d, `9 I3 @) Y
  209. // console.log(keycodes["0"], shift, capslock);
    * [& t. w  p* N8 a  A3 L, ]
  210. let active = [];3 X+ g4 \5 M6 Y/ V
  211. window.onkeydown = function (event) {
    7 L1 g; I. O: I- ?
  212.   for (let i = 0; i < buttons.length; i++) {+ H, a  e/ R4 ^1 Q+ K% v4 }
  213.     let button = buttons[i];$ p) m3 u0 F! C/ F, o* ?
  214.     if (1 W) G% w' C/ u, V/ N- A& J( J
  215.       button.label.contents === event.key ||4 K; y  D* Q2 g- ?* }+ j  z8 Y' d
  216.       (keycodes[event.key] != undefined &&
    ! X\" Q( t\" |2 d6 b. b
  217.         button.label.contents === keycodes[event.key].Symbol)
    % K: _* F) t) {' K
  218.     ) {
    1 K: N3 ~3 ]5 P  E8 I! X
  219.       button.box.style.fill = "#f8f8f8";
    8 o$ Q/ x8 |& W4 p. e& i
  220.       button.label.style.fill = "#404040";
    * L! F6 n( B8 G. C
  221.       button.active = true;
    / t& W6 q2 S' U) Y' m
  222.       active.push(button);( i5 N, n, g1 O
  223.     }' {2 F0 J6 D3 E  P5 O  e
  224.   }! ?; j6 o, Q/ p6 P* d6 h
  225.   buffer += `'${event.key}',`;
    : J\" Q0 |4 a\" r( ^+ _  p
  226. };
    ' M+ }  j8 k9 r2 f0 U
  227. window.onkeyup = function (event) {
    & F  t, ]7 f3 W# J  N\" M
  228.   let newActive = [];8 V; C, J\" B4 a2 Q% c
  229.   for (let button of active) {+ R$ ^6 v9 O; N/ k, r: p
  230.     if (
    \" H# r& i! b1 i5 y1 @1 R5 J; ]5 P
  231.       button.label.contents === event.key ||
    & n% p2 b3 f* g: ~. i
  232.       (keycodes[event.key] != undefined &&3 O4 v) q1 ]$ C! M& d* M4 P- [: ]5 G
  233.         button.label.contents === keycodes[event.key].Symbol)
    6 E5 |\" F) [* P7 S( o! d% s+ X
  234.     ) {# l0 x5 _9 e& A: F* N* o& g
  235.       button.box.style.fill = "";- P$ ?9 ^5 \, R9 u) f+ E$ p' n
  236.       button.label.style.fill = "";
    - G1 S( o- N% ~( E' J/ ~1 }( ^; H
  237.       button.active = false;4 F6 G: B: M8 E. Q7 j* h
  238.     } else {
    * O- i8 n0 Z8 S. V) |: c
  239.       newActive.push(button);, T, R9 Z- l, q/ @
  240.     }
    8 `3 C7 U* s, Y  V1 M+ ^6 Q; N
  241.   }
    : ?. F. m8 Z8 m0 m( W  G
  242.   active = newActive;
    ' ]2 ~1 t9 b: K( _! P; Q
  243. };5 L. S* i2 C; b) ~( z5 Z- h  i
  244. let bbox = interactive.input.root.getBBox();
    ; O  [0 |. ]- `' ]3 s6 N\" H
  245. interactive.setViewBox(
    % K- f8 A+ X+ s1 x: Z
  246.   bbox.x - margin,
    2 m# {/ l$ |8 {& K8 w
  247.   bbox.y,
    6 w4 Q$ x1 P  [% w, d5 D
  248.   bbox.width + 2 * margin,) k$ _4 x1 [2 p, A
  249.   bbox.height& F\" y  e0 `' \7 D9 B\" H3 P
  250. );# L+ ^; W\" K8 D$ q8 l
  251. //# sourceMappingURL=keyboard.js.map
    # C' e. c! ~\" x
  252. * R' H# T( N# `  J' E  @
复制代码
) \$ V) @' V' }( G+ ?$ 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-25 20:00 , Processed in 0.378717 second(s), 51 queries .

回顶部