QQ登录

只需要一步,快速开始

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

使用html画一个键盘

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

1186

主题

4

听众

2922

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-4-27 10:42 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
  1. <!DOCTYPE html>; V; M$ e' E, E$ f
  2. <html lang="en">) ~- A# W! \  |\" n
  3. <head>2 c. ^* o+ c: J1 D; ^& w8 [2 u
  4.   <meta charset="UTF-8">
      J. w) ~! K  I+ b6 M; q4 v, j
  5.   <meta http-equiv="X-UA-Compatible" content="IE=edge">
    % h5 M& g9 z  R' e$ Z1 V, ^, N' s
  6.   <meta name="viewport" content="width=device-width, initial-scale=1.0">, E, C! k9 o) J( Q& A
  7.   <link rel="stylesheet" >3 s- Y\" @2 D& g' F5 Y
  8.   <title>vector examples Keyboard</title>7 L9 {9 n8 X/ Z$ `0 P
  9. </head>
    $ _! Q! x. G  I) d1 O
  10. <body>8 S* r( O+ D$ v3 G7 t
  11.   <div id="keyboard"></div>, I  a  l( e& V5 V3 C
  12.   <!-- <script type="module" src="./Keyboard.js"></script> -->
    * j2 j9 ~7 E, g9 K0 _2 ]. R
  13.   <script type="module" src="./temp.js"></script>\" A9 G\" z  {- u! @2 e- ?. w
  14. </body>! E% ^! Z3 W# M% v\" y! O, M
  15. </html>, ^2 L0 S5 F$ A' F  ~: |
复制代码
  1. import Interactive from "https://vectorjs.org/interactive.js";% g' X1 G6 Q; E
  2. console.log("Interactive", Interactive);
    7 X6 g0 ^! O7 _( b5 S4 _
复制代码
  1. /**
    8 v& v. _+ D9 z! d$ z: G
  2. * [url=home.php?mod=space&uid=634908]@title[/url] Keyboard0 i  ?' t5 o' o! K' ^5 z5 y0 D
  3. * @description This interactive demonstrates how key board input can be used to add interactivity.
    : B1 k$ A. I! u\" t  D& r. }
  4. * @tags [input]
    8 ^. }$ A. f: [: z0 z8 b
  5. */
    5 S- i% g5 c! X
  6. // import { Interactive, getScriptName } from "../../index.js";
    - Y6 Z% u+ @! |+ [
  7. // let interactive = new Interactive(getScriptName());
    2 B& G6 J; O4 B4 z
  8. import Interactive from "https://vectorjs.org/interactive.js";0 U, i) ?, ?% y. m1 W5 @
  9. let interactive = new Interactive("keyboard");
    ( D4 j2 n5 H( @, ^9 R
  10. interactive.width = 768;
    7 k  x. k( O! g9 A: r
  11. interactive.height = 300;: `& ]+ a6 H/ Q9 j' J' a) z$ u! T
  12. interactive.border = true;
    5 t+ W4 a  b5 d5 j! `1 X# A4 g
  13. let buffer = "";
    * H9 P0 @5 U6 E: t) p4 o* f, ^; ~
  14. let keys = [& X8 s  I7 l& n# [
  15.   [
    1 s; c2 l0 x+ k1 |' S
  16.     "`",7 ~' T0 S- l- u2 j8 k- h( H
  17.     "1",
    4 @- R0 B- a# }% q6 m: H( x/ d
  18.     "2",  G1 f+ C: l, B
  19.     "3",. T& H. r9 c& G' N0 S, r5 m; X* _% Z
  20.     "4",1 r. c) z. \* B* y& ?
  21.     "5",- f& H8 A+ B1 H: F+ I4 S
  22.     "6",
    8 J  m4 ~5 T, y3 V8 B! C) W' d
  23.     "7",& m  h  u6 S1 R' v8 R6 c/ A
  24.     "8",
    8 ^4 X8 M+ ]% z2 a. t& M' p
  25.     "9",
    ( z$ V9 k3 Q6 u4 B. O
  26.     "0",
    7 O: B9 U' K/ [, U+ k& _
  27.     "-",
    2 r1 W- |+ |& u% G  g. K
  28.     "=",
    * B% e' Y9 c7 r. r
  29.     "Backspace",
    ! I9 }\" y4 z# O+ |7 h
  30.   ],( j. @6 y; {- D* G1 _
  31.   ["tab", "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "[", "]", "\\"],
    + e# f# V! ~% e: Z+ z
  32.   ["CapsLock", "a", "s", "d", "f", "g", "h", "j", "k", "l", ";", "'", "Enter"],+ b+ h- |, L! k/ Q- y& b; ]
  33.   ["Shift", "z", "x", "c", "v", "b", "n", "m", ",", ".", "/", "Shift"],
    8 Z' O; @5 q7 ^; a
  34.   [
    ) m( f# U/ W5 U! M- \0 \
  35.     "fn",6 {' l. G3 K$ }% k% V) @
  36.     "Control",
    * @. [( D% I+ q
  37.     "Alt",, K5 J! i' q# s5 J
  38.     "Meta",
    2 d; m% k5 `' S. {
  39.     " ",
    , ]* a7 d7 D% l$ j, u8 a
  40.     "Meta",! W  d' z3 \: [3 C5 q' L
  41.     "Alt",. ~. q4 A- Z3 W! t' Y
  42.     "ArrowLeft",' _5 b/ h- c# P
  43.     "ArrowUp",6 ^: h* S- t: N$ s$ n
  44.     "ArrowDown",
    2 @1 _3 `8 ]  f  w# G
  45.     "ArrowRight",
    6 i2 Q! B  G\" _: N6 ?) W/ r$ t
  46.   ],
    , t- y( N4 j5 E& T
  47. ];
    # E* s5 `1 _& H/ c& O, g, \
  48. let buttons = [];/ W2 q/ F2 L$ g' }' E
  49. let keycodes = {% x! ~6 P# W  c5 w% u
  50.   0: { Symbol: 0, Shift: ")" },
    9 v0 h0 ^: p( I. M1 z
  51.   1: { Symbol: 1, Shift: "!" },
    ) x( @2 n; C0 f0 R
  52.   2: { Symbol: 2, Shift: "@" },8 r* [. D. @. g& Y! g
  53.   3: { Symbol: 3, Shift: "#" },
    # I- U+ H. j, g8 c1 D
  54.   4: { Symbol: 4, Shift: "$" },
    8 K2 {( X7 u+ z' l( c
  55.   5: { Symbol: 5, Shift: "%" },  @8 g* m; N! ^
  56.   6: { Symbol: 6, Shift: "^" },
    ; `: h! T  f) h- Y5 e( K! P
  57.   7: { Symbol: 7, Shift: "&" },! e- U4 }0 S& K! s* ]; t2 ?) \/ w
  58.   8: { Symbol: 8, Shift: "*" },
    \" d/ S+ q! ~6 _6 }
  59.   9: { Symbol: 9, Shift: "(" },. N2 {! S- M6 D/ M! ]
  60.   a: { Symbol: "a", Shift: "A" },
    , ^9 B( h) q: N
  61.   b: { Symbol: "b", Shift: "B" },
    ! {/ F) O2 I; Q
  62.   c: { Symbol: "c", Shift: "C" },
    2 K; g* h) x6 Y6 @
  63.   d: { Symbol: "d", Shift: "D" },
    9 h0 z0 j: W0 h2 `+ {
  64.   e: { Symbol: "e", Shift: "E" },
    ) }  r. a\" X  a# m\" f$ ?
  65.   f: { Symbol: "f", Shift: "F" },
      f) E- g4 [% Z7 _5 s3 o
  66.   g: { Symbol: "g", Shift: "G" },
    # l) T: i) T; e, R' b! X: j
  67.   h: { Symbol: "h", Shift: "H" },
    ( }# P7 R9 ?  v9 V+ v5 ?  D
  68.   i: { Symbol: "i", Shift: "I" },4 }  v5 m& l- O- v/ F4 d$ I
  69.   j: { Symbol: "j", Shift: "J" },& Z) v/ X' L' X- W
  70.   k: { Symbol: "k", Shift: "K" },
    8 W# M) d7 H2 b% ]6 o: a$ J: f9 `6 F
  71.   l: { Symbol: "l", Shift: "L" },
    4 f! B) E! w9 q* K4 Q
  72.   m: { Symbol: "m", Shift: "M" },( z4 g0 D6 M: s% d6 c$ z$ j) W
  73.   n: { Symbol: "n", Shift: "N" },- ?1 u% n7 j/ p4 R( [9 L
  74.   o: { Symbol: "o", Shift: "O" },\" B' O: P4 v) E+ K- |. D
  75.   p: { Symbol: "p", Shift: "P" },
    4 V! e$ b) N; M/ I3 _/ X
  76.   q: { Symbol: "q", Shift: "Q" },
    $ _# J& G0 v) s, l
  77.   r: { Symbol: "r", Shift: "R" },
    , n! T9 g\" @; `% p% `
  78.   s: { Symbol: "s", Shift: "S" },! q# Z% w9 K7 s, m5 `. L  E; G
  79.   t: { Symbol: "t", Shift: "T" },
    7 _; H9 l* N0 i# n' \8 \; k8 Y9 b\" c
  80.   u: { Symbol: "u", Shift: "U" },0 L. R: j& K4 z0 q
  81.   v: { Symbol: "v", Shift: "V" },
    + _5 y! e2 Z3 X& }
  82.   w: { Symbol: "w", Shift: "W" },& l+ R% D7 t\" }5 Q: N3 V6 @- R
  83.   x: { Symbol: "x", Shift: "X" },. O- }; S) R9 d; S6 e
  84.   y: { Symbol: "y", Shift: "Y" },+ v; v\" e3 k9 l. H
  85.   z: { Symbol: "z", Shift: "Z" },6 `5 w& V4 m1 e7 k# p# g4 W
  86.   "`": { Symbol: "`", Shift: "~" },
    / J  b! u0 \( n\" [% f0 c2 H4 X- p
  87.   "-": { Symbol: "-", Shift: "_" },5 r2 Y) y; d2 Q3 y( H( q5 U& E7 x
  88.   "=": { Symbol: "=", Shift: "+" },
    ! z6 e6 w+ t* ]/ M1 |
  89.   ";": { Symbol: ";", Shift: ":" },
    7 M* R5 v( _) b0 L
  90.   "'": { Symbol: "'", Shift: '"' },! R0 V1 [$ s4 D1 M
  91.   "[": { Symbol: "[", Shift: "{" },
    4 L: v  O* W! b- B9 Z
  92.   "]": { Symbol: "]", Shift: "}" },
    ) @4 S0 h9 l- k3 J! d
  93.   "\\": { Symbol: "\\", Shift: "|" },- `  w3 \* l2 D$ z7 b6 ]
  94.   ",": { Symbol: ",", Shift: "<" },
    4 }* i4 `( ]( n6 T2 t3 h9 [
  95.   ".": { Symbol: ".", Shift: ">" },
    / h\" Q) K2 \! }+ Y% m
  96.   "/": { Symbol: "/", Shift: "?" },5 R/ @+ H8 z1 Y0 M. ~9 E
  97.   Backspace: { Symbol: "⌫", Shift: "" },
    : V: K5 l: }0 N7 @
  98.   tab: { Symbol: "  ", Shift: "" },
    ! _: J& q% Q5 e. G. ?
  99.   CapsLock: { Symbol: "⇪", Shift: "" },
    ' i+ w( Y\" i\" r+ k2 c* y0 V
  100.   Shift: { Symbol: "⇧", Shift: "" },( r* `, e; u# K
  101.   Enter: { Symbol: "⏎", Shift: "" },
    $ ?\" O3 M* s6 l% O6 L
  102.   Control: { Symbol: "⌃", Shift: "" },% f: Q3 e8 `4 M! V2 ~
  103.   Alt: { Symbol: "Alt", Shift: "" },( w9 U/ m0 Z\" \( J4 k
  104.   Meta: { Symbol: "⌘", Shift: "" },+ N7 }, X' F: F6 e
  105.   ArrowLeft: { Symbol: "←", Shift: "" },/ P  w7 `# j; I! m$ n  y3 D
  106.   ArrowUp: { Symbol: "↑", Shift: "" },# @# X6 h9 p. S. W( s
  107.   ArrowDown: { Symbol: "↓", Shift: "" },
    3 `$ Q! k- z: _* c$ x6 y8 g
  108.   ArrowRight: { Symbol: "→", Shift: "" },. M, i8 ]: k8 Q3 R; p# L* ?  y
  109.   " ": { Symbol: " ", Shift: "" },
    4 j4 \2 T( A! ~
  110. };
    . x\" I$ I& R' p( g& v7 ?) t
  111. let buttonMap = new Map();
    2 ?' ^. N, m: K& N. F% `. J
  112. let height = 32;
    5 g4 b- h% w0 {, H) b) U\" y
  113. let margin = 8;
    - r6 j8 b/ ^/ @1 V\" `$ h/ e
  114. let capslock = interactive.button(0, 0, keycodes["CapsLock"].Symbol);: u\" _& Q+ y  J, [
  115. let shift = interactive.button(0, 0, keycodes["Shift"].Symbol);, k8 {0 x8 M' {' F
  116. for (let row = 0; row < keys.length; row++) {2 @( R+ V& F. o. F\" S7 p
  117.   let x = 32;% o: J, S1 K8 C0 b\" f6 S5 _
  118.   let prev;- `- A4 B+ G3 z8 r' }1 n
  119.   for (let i = 0; i < keys[row].length; i++) {( J$ N0 ~* e6 t
  120.     let key = keys[row][i];
    ; ~1 z+ A6 \- S3 G) R
  121.     let width = 32;
    ) s1 i$ H8 U/ {. [3 C
  122.     let button;
    1 u% T) v1 B, y! {# \\" ?
  123.     switch (key) {
    1 w4 T$ g. C8 ], B1 D
  124.       case "CapsLock":8 I' Z4 i4 ~3 k! {0 a! ]: ^) u
  125.         button = capslock;
    - a% B, i9 {* p% r
  126.         width = 64;
      [\" B  f3 u. z) m* I& z/ j0 Q
  127.         break;* y$ d) `4 V7 t- l
  128.       case "Shift":
    8 j# a$ {4 H& ~5 c- ~* ~3 c
  129.         if (shift.x === 0) {
    4 A/ a& f' C' H$ O! D; r
  130.           button = shift;, u. E; K' [6 B\" i' E- z6 ^
  131.         } else {& q2 k' Q  P' h( s* Q
  132.           button = interactive.button(8 }7 b  o4 c; R\" g+ ]( ]7 }
  133.             0,
    ' _; T. h# I  _, }2 l. m& r( ]# n, `
  134.             0,
    ) }. C. J* C/ {8 A  i  T' W\" |
  135.             keycodes[key] != undefined ? keycodes[key].Symbol : key8 Z4 S* M. c9 A1 u
  136.           );1 d/ ^0 V( Q5 R' _0 ?6 f
  137.         }
    : {\" A; G$ E0 F# q9 i) z
  138.         width = 90;
    5 k+ D- ~$ V) l0 T* k9 c
  139.         break;
    0 S! M4 }3 ?) M9 R8 w, z2 y
  140.       case "tab":5 l\" l: f1 Z8 C( }& ^) V7 R, G\" g
  141.         width = 50;
    4 u* P\" F. _+ P! K2 ~( `  C$ j
  142.         button = interactive.button(
    9 f& ?( p. [! e2 v$ @
  143.           0,
    % g% @5 l- {% Z: ]1 z( K& _
  144.           0,0 }: R; ?$ m  Q! ^/ I) i
  145.           keycodes[key] != undefined ? keycodes[key].Symbol : key
    8 F3 n2 N) @% n( g4 E\" `$ c: ~
  146.         );! L& E; m) q5 b1 F
  147.         break;
    7 o+ r- ^$ T+ d4 t
  148.       case " ":- Q: C0 ^) X$ p- x) w. D
  149.         width = 176;- C7 u9 k9 L7 q# \
  150.         button = interactive.button(9 w7 L5 f& n/ u+ Q
  151.           0,& ~2 B% i( ]. h' |# U4 @* h  U: N
  152.           0,
    * p5 N* R% N; c; s
  153.           keycodes[key] != undefined ? keycodes[key].Symbol : key
    3 `7 N: v& j! L3 R1 Z
  154.         );
    0 Q+ O/ U+ W  F! V0 i& Q$ D
  155.         break;
    5 F! Q# h; Y+ F) I6 ?
  156.       case "Meta":
    ) U% F( X( |7 b# Y0 q: m5 @6 }
  157.         width = 50;
    4 D& H9 G$ X\" E8 o- o$ `
  158.         button = interactive.button(8 `+ O$ T* \4 S4 _0 O% c8 f+ h9 F- c
  159.           0,- C/ A. w5 k. ~# p
  160.           0,0 M0 [3 P+ V\" T( n% ?
  161.           keycodes[key] != undefined ? keycodes[key].Symbol : key
    - v9 C) B* m2 K. g6 M' ?5 O9 g
  162.         );& A9 k- m' s; k0 N' W' S2 P6 l
  163.         break;5 [5 l0 b1 l, J& `- k7 d2 W
  164.       default:
    + E4 K- j9 d0 `3 a
  165.         button = interactive.button(
    - m  U+ b1 ?1 T3 P\" T* z; c& ?
  166.           0,7 N7 p! m4 E' |& ^+ a0 h; `
  167.           0,
    & @7 E! A' L/ J9 z
  168.           keycodes[key] != undefined ? keycodes[key].Symbol : key
    ( c: D$ x3 P% T9 ~, [0 _; H- m6 Y
  169.         );3 K2 v  {+ R! S' |! \( n! S4 `
  170.         if (keycodes[key] != undefined) {
    3 g- R5 p  g) [8 U
  171.           if (keycodes[key].Shift != "") {
    \" {2 c2 V2 @4 B6 |: Y& {- V
  172.             button.addDependency(shift, capslock);2 K( h\" }6 D& J  |7 Q# t, U5 I
  173.             button.update = () => {
    ; k7 |0 q! l, C& I- ?  J  w
  174.               if (shift.active || capslock.active) {6 q& m6 ]+ m! o7 h
  175.                 button.label.contents = keycodes[key].Shift;, W! }9 S\" [% _. ?7 U) w
  176.               } else {1 ?% }+ X& q\" ]: s8 i) I
  177.                 button.label.contents = keycodes[key].Symbol;) J9 u( L% z: l2 H
  178.               }
    , P$ K8 r+ J3 V
  179.             };& U' t7 Q5 P8 M% w
  180.           }
    : r) n2 u9 k' ~
  181.         }
    + Z- N; {8 R1 ]& _! [% v
  182.     }, e3 L& A* [' X* z$ C4 S- {6 ^
  183.     button.x = x;
    9 Y$ W- e9 l- n! T: y
  184.     button.y = 64 + row * (height + margin);) j1 |. G- L& i+ p1 d+ C2 U! i
  185.     if (button.box.width < width) {
    \" a/ N: M# s' _5 w, k
  186.       button.box.width = width;
    * I8 A) n6 n. G( U/ ]
  187.     }
    % `+ g, W6 n! l: u\" n
  188.     let bbox = button.root.getBBox();
    ' J5 }5 ~  L( T6 m' S, {
  189.     x += bbox.width + margin;
    5 k$ G( \& e1 }$ [% c% y
  190.     buttons.push(button);
    \" f0 [/ C0 r5 }7 l4 a8 ]
  191.     prev = button;
    ' I8 v/ j; n. E. D4 q$ h, P' j: ~
  192.     buttonMap.set(key, button);
    0 j\" J3 g6 g( L. a+ L6 U
  193.     if (key === "ArrowUp") {
    $ \# M9 G, A3 j% V* @- v1 _
  194.       button.box.height = 16;8 Y7 m3 I% t; t$ A
  195.       button.label.root.style.display = "none";* [% h6 r: a7 S% C! k
  196.     } else if (key === "ArrowDown") {- a9 x4 g; c3 [& r: Q
  197.       button.box.height = 16;
    9 n  }* u6 ^3 P
  198.       button.x -= 32 + margin;2 }+ T: h8 O% N7 G: \% w8 {* K$ S
  199.       button.y += 16;' Q! h# q6 M- t7 \
  200.       button.label.root.style.display = "none";3 `\" u# Y  n8 \; l1 g& P
  201.       x -= bbox.width + margin;/ u. r, p! t' y# k: t
  202.     }
    ( ~+ B2 j1 a# G' W7 P$ t
  203.   }
    8 Y2 o& O0 B0 p  B' e3 U
  204.   let right = prev.x;+ t) S: F/ _. ~( j9 ?+ o
  205.   if (right < 630) {- k; S+ ?# \, k
  206.     prev.box.width = 630 - right;
    0 k. A1 p0 _  `, S
  207.   }
    & H. m4 ?* E- ^  w, T
  208. }
    + r  T9 y9 `1 {
  209. // console.log(keycodes["0"], shift, capslock);
    $ P( Q9 M: Y: G) z1 k) Y1 V
  210. let active = [];
    ) W- C0 Y+ z  c7 ^
  211. window.onkeydown = function (event) {
    1 X  d7 C1 w# G\" Z; B
  212.   for (let i = 0; i < buttons.length; i++) {: [; a: a# I- s9 ~; Q  T$ ~
  213.     let button = buttons[i];. P& L/ v/ K8 X  F/ o$ d2 X* m
  214.     if (
    8 g3 h; ?& l/ q1 g# N
  215.       button.label.contents === event.key ||2 v  c4 A0 E% v# o\" q3 T; j\" B% s
  216.       (keycodes[event.key] != undefined &&
    & ]/ R3 s4 y8 Y# b9 J: g3 E
  217.         button.label.contents === keycodes[event.key].Symbol)
    & F8 w0 g6 ~( v0 m
  218.     ) {
    3 Z+ ~6 }  M  ?5 o! b5 _
  219.       button.box.style.fill = "#f8f8f8";6 P7 G\" R* b  N5 d+ X\" R+ Z- t
  220.       button.label.style.fill = "#404040";
    ) a2 T5 `8 M9 @1 ]& R' i0 P: q
  221.       button.active = true;
    7 u3 c& C2 z) K- w& f$ k9 k
  222.       active.push(button);0 U: T; {$ Z1 q/ k1 w
  223.     }
    ' t* d9 k- @/ C: [; H# L3 E9 ]
  224.   }
    3 c2 J0 X! n, c8 z
  225.   buffer += `'${event.key}',`;8 x8 w9 L# i- c7 p7 J
  226. };4 _$ i1 |0 Q% ^- |5 U
  227. window.onkeyup = function (event) {( j5 _% Z7 w( K! |( w; j
  228.   let newActive = [];
    9 n5 J  g3 R- M5 B: w- A# F1 J
  229.   for (let button of active) {
    7 `& d- i) G& {
  230.     if (
    # z) _$ w3 B5 @. H
  231.       button.label.contents === event.key ||
    0 H. z1 h) ^- K7 D/ A1 H
  232.       (keycodes[event.key] != undefined &&
    ! f8 [( K0 x9 L% {4 d* o
  233.         button.label.contents === keycodes[event.key].Symbol)
    ) f/ t% F6 R' L3 u# o% S
  234.     ) {$ T: Y- ~1 ~8 J; D9 y7 h  h( @
  235.       button.box.style.fill = "";
    7 ~0 C+ }$ _; v3 ?- V
  236.       button.label.style.fill = "";1 h\" i3 e. \) T9 F6 F! U
  237.       button.active = false;
    1 i3 h5 b, r$ A' V9 o0 s5 e/ b5 X
  238.     } else {! ?9 W' _: a  y2 C: s  T: P
  239.       newActive.push(button);
    7 q- K0 W# q2 J6 Z
  240.     }
    1 \% g+ P1 j6 o1 w! @+ i3 Z
  241.   }9 X0 s* q2 s: }3 r; B3 i, N6 Q
  242.   active = newActive;( \2 o' @/ y) }5 d( K
  243. };
    ) G; H7 |4 _& P4 M0 [; t
  244. let bbox = interactive.input.root.getBBox();
    # w4 \7 T) O7 ]6 h
  245. interactive.setViewBox(
    & J0 p2 b8 a2 h  g4 T
  246.   bbox.x - margin,
    \" b9 P6 |: |# ~
  247.   bbox.y,& x; Q6 H\" c1 s( k& ]1 s\" E% Y( }
  248.   bbox.width + 2 * margin,4 \' V, A4 L0 n/ F1 a' _% o
  249.   bbox.height7 o2 r\" o$ {/ {1 W& M' h
  250. );1 V0 }# |) E% ]
  251. //# sourceMappingURL=keyboard.js.map2 y6 d: \# }1 S6 _, k\" M5 G3 i4 Q9 Q

  252. 2 T( U% D9 D) A  \
复制代码

- [% t. M" D$ b) S- v7 y3 p, ]
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-4-16 11:16 , Processed in 0.387181 second(s), 56 queries .

回顶部