QQ登录

只需要一步,快速开始

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

使用html画一个键盘

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

1192

主题

4

听众

2946

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-4-27 10:42 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
  1. <!DOCTYPE html>
    : A- Z! z, G: W3 I8 |$ A% O  g
  2. <html lang="en">
    & s7 B% {6 q% j& h5 z0 C3 a6 ?+ J
  3. <head>- o8 b8 p4 r& N6 S- P. |$ B
  4.   <meta charset="UTF-8">1 Q\" o7 N) Q! S( ^: x
  5.   <meta http-equiv="X-UA-Compatible" content="IE=edge">4 c6 `7 @: w7 q
  6.   <meta name="viewport" content="width=device-width, initial-scale=1.0">
    ' C2 w9 D' e. I6 F
  7.   <link rel="stylesheet" >& R# O) u\" z# [' t7 {( Z: k9 [( O* N
  8.   <title>vector examples Keyboard</title>
    , f4 e& Q, w1 D- {: B' d( q: V0 r; ?
  9. </head>7 y# A) N0 P$ k; {& O\" i/ j9 w
  10. <body>+ |/ Z4 ~' ]% D4 ~
  11.   <div id="keyboard"></div>9 G1 U8 |; `& L6 Z1 J* ~
  12.   <!-- <script type="module" src="./Keyboard.js"></script> -->1 Q& d1 b8 Z* ?5 @
  13.   <script type="module" src="./temp.js"></script>0 z8 O- q6 v/ a0 p7 x
  14. </body># z$ K/ }8 i' X8 t9 J
  15. </html>. H* ~+ |/ m; g) x6 v( _0 g
复制代码
  1. import Interactive from "https://vectorjs.org/interactive.js";
    5 C5 h$ o1 B- \2 l. [! a) Y. j
  2. console.log("Interactive", Interactive);+ H  ]1 }1 I& V, F6 J/ C! w
复制代码
  1. /**
    6 Z0 G( ^7 J) h
  2. * [url=home.php?mod=space&uid=634908]@title[/url] Keyboard
    - [$ M\" B# W/ r$ r2 o
  3. * @description This interactive demonstrates how key board input can be used to add interactivity.# y# B0 v2 w! j: k
  4. * @tags [input]* K2 ]) l$ c5 A0 p
  5. */& Z1 J8 y/ @1 m, k  @
  6. // import { Interactive, getScriptName } from "../../index.js";
    6 M% R+ j& z& r: Q& |% l
  7. // let interactive = new Interactive(getScriptName());9 G+ R8 W' {6 m* J; M
  8. import Interactive from "https://vectorjs.org/interactive.js";. v\" [5 m( q0 r: `
  9. let interactive = new Interactive("keyboard");
    ) z% ]. g/ J2 E. V
  10. interactive.width = 768;4 E( j1 h. D! |9 o% `) J\" j
  11. interactive.height = 300;
    $ C) H8 e3 F/ h: f: v
  12. interactive.border = true;
    $ X1 Z! |0 a\" L+ b- p8 e
  13. let buffer = "";& P7 q# q\" `, P
  14. let keys = [& t2 p# Z) x) b( ?
  15.   [
    ) R1 d\" {* A) f' }5 _
  16.     "`",
    \" o% r3 ~3 G! z- ]4 z% N
  17.     "1",
    1 N  T% X5 G# J3 \% _
  18.     "2",4 y% G3 }& x\" U) e$ r/ [
  19.     "3",
    1 ^* }: k9 I8 Y: X5 y) Y) c' x
  20.     "4",
    0 q/ O, X# B' d% l2 _& o) y1 Q' ^
  21.     "5",+ Z6 o) c\" ]- S! P
  22.     "6",' A, ~9 l* ]1 a
  23.     "7",
      I- \* `( }: d7 L$ I# ~  T4 a
  24.     "8",
    * K, M: Y  E2 J, ~7 e+ {# u0 H
  25.     "9",
    2 {) ^: M( t\" @: G
  26.     "0",
    9 o2 F* i  z5 l6 {9 [2 B; c7 s2 I
  27.     "-",# \  ?$ T\" L7 t/ ?
  28.     "=",3 Y9 Q# E* h) ]
  29.     "Backspace",
    : S- t' W; m9 Z0 f4 Q: \! @+ G
  30.   ],( W' M# i( H2 Q+ [+ E* k/ x
  31.   ["tab", "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "[", "]", "\\"],
    9 L\" i2 d7 ^: V  d. Y# G7 H4 `
  32.   ["CapsLock", "a", "s", "d", "f", "g", "h", "j", "k", "l", ";", "'", "Enter"],! T! R! e; ~, d* X
  33.   ["Shift", "z", "x", "c", "v", "b", "n", "m", ",", ".", "/", "Shift"],
    ( d, F* a! |6 @8 b: u0 `
  34.   [7 C$ Q6 F1 i1 G- g! w: ?# H
  35.     "fn",3 G7 t! @; K3 ~' g( v! \
  36.     "Control",5 i: E: q, Z9 E( v: [, E
  37.     "Alt",! v$ j$ F+ c3 @- _1 c
  38.     "Meta",
    ( {# b2 z* }' t& F% \) Z\" @
  39.     " ",. f1 c# ^9 j) d' l
  40.     "Meta",
    . Z) a$ v/ ?0 y+ @
  41.     "Alt",
    1 P6 g) _' r) X+ ?
  42.     "ArrowLeft",
    : N3 W# G) R6 j, t% a
  43.     "ArrowUp",% N% P: W' V) _& k- g0 y5 _( r( p
  44.     "ArrowDown",
    9 ?; X# g, U0 E; r7 ^: B
  45.     "ArrowRight",
    # X5 q' r: ]6 {) t
  46.   ],
    - ^$ A  f$ ^5 R  V
  47. ];
    $ M8 G) |0 z( O$ ?' F' u7 g1 ]! M
  48. let buttons = [];
    * O3 \$ V+ S. p# R% U* E. h
  49. let keycodes = {) I0 i; Z: ^3 Q6 y+ q) Q; Z
  50.   0: { Symbol: 0, Shift: ")" },! d8 x' M4 t4 V9 y: N4 U
  51.   1: { Symbol: 1, Shift: "!" },) T7 E( ]1 e. _, F
  52.   2: { Symbol: 2, Shift: "@" },% M: a/ J1 E; d& g8 e8 r( h. h
  53.   3: { Symbol: 3, Shift: "#" },; D4 o) ^9 p3 W$ ^
  54.   4: { Symbol: 4, Shift: "$" },/ m' L/ j* r: z4 W
  55.   5: { Symbol: 5, Shift: "%" },$ c2 U7 i3 N, h3 a  d
  56.   6: { Symbol: 6, Shift: "^" },# ~) _, n: X4 U  `2 J
  57.   7: { Symbol: 7, Shift: "&" },3 W; y2 j8 D4 T
  58.   8: { Symbol: 8, Shift: "*" },0 `% N- s7 C\" d  n$ p8 Y4 Y2 F) Q/ ~
  59.   9: { Symbol: 9, Shift: "(" },
    / N7 Z& P! ?$ E) Q% s; \# M! B* q
  60.   a: { Symbol: "a", Shift: "A" },
    ! e4 F+ E2 D# z
  61.   b: { Symbol: "b", Shift: "B" },) K! N8 I' Y/ y$ X9 o% |& W
  62.   c: { Symbol: "c", Shift: "C" },' Y% }9 S; g0 a
  63.   d: { Symbol: "d", Shift: "D" },
    7 d2 S) ^' M, Y( ?- Q% }
  64.   e: { Symbol: "e", Shift: "E" },
    1 d2 t( n& k; `. Y, |& j- N
  65.   f: { Symbol: "f", Shift: "F" },
    + Q& X) K; x1 m2 C$ B\" i% X  O# ^, p' {
  66.   g: { Symbol: "g", Shift: "G" },
    \" h/ ?& D) N- P9 i9 ]
  67.   h: { Symbol: "h", Shift: "H" },
    ; S% n3 ?, B- g$ U4 |+ Q
  68.   i: { Symbol: "i", Shift: "I" },
    * _9 h5 c3 G/ O$ a& m
  69.   j: { Symbol: "j", Shift: "J" },
    * y4 o% a+ S$ I  q) n
  70.   k: { Symbol: "k", Shift: "K" },
    : p; {+ H8 T3 x& k4 e) [' W
  71.   l: { Symbol: "l", Shift: "L" },
    9 W4 E7 {. a6 Y\" u1 w5 d5 I; Z
  72.   m: { Symbol: "m", Shift: "M" },
    ; s/ ~* U  L0 B' R9 [( S5 m
  73.   n: { Symbol: "n", Shift: "N" },  v) k( L8 m\" }
  74.   o: { Symbol: "o", Shift: "O" },
    6 b8 K# z! V% T7 X3 K! \1 q
  75.   p: { Symbol: "p", Shift: "P" },
    8 w( D! @\" y; l
  76.   q: { Symbol: "q", Shift: "Q" },) M% I7 u3 o( C: Y+ G& f
  77.   r: { Symbol: "r", Shift: "R" },$ u! ]& G8 M# U2 ]( q) r$ a
  78.   s: { Symbol: "s", Shift: "S" },! }5 ?* X8 F# ^# T0 L: K
  79.   t: { Symbol: "t", Shift: "T" },3 B( q6 m1 A( B  j
  80.   u: { Symbol: "u", Shift: "U" },& |8 Y& g1 z/ s1 X/ Z8 ~1 I
  81.   v: { Symbol: "v", Shift: "V" },
    4 x$ X, N/ v4 g( Z! |2 U- S
  82.   w: { Symbol: "w", Shift: "W" },& C; C7 w\" B! v! p
  83.   x: { Symbol: "x", Shift: "X" },
    $ e% ?8 R6 O6 s4 w# Y$ D
  84.   y: { Symbol: "y", Shift: "Y" },
    9 |7 m4 P$ P' C5 e; o
  85.   z: { Symbol: "z", Shift: "Z" },) R- w; V7 Z$ ?
  86.   "`": { Symbol: "`", Shift: "~" },$ ~1 S0 r$ o/ A* r
  87.   "-": { Symbol: "-", Shift: "_" },5 E\" {/ b( Z8 A\" ~2 r6 m
  88.   "=": { Symbol: "=", Shift: "+" },/ `' ?, \4 c  Q6 S
  89.   ";": { Symbol: ";", Shift: ":" },
    . M* j5 x) J* _9 O2 A; U8 U$ {* E! c2 q+ l
  90.   "'": { Symbol: "'", Shift: '"' },
    + Q0 \1 U$ C  J
  91.   "[": { Symbol: "[", Shift: "{" },
    / E) c1 F, M0 v' B8 q0 Z
  92.   "]": { Symbol: "]", Shift: "}" },
    3 r' q5 O$ i) B
  93.   "\\": { Symbol: "\\", Shift: "|" },
    \" u' J( q& I3 R0 O
  94.   ",": { Symbol: ",", Shift: "<" },
    1 ]6 u' g' `7 j9 B; D: O
  95.   ".": { Symbol: ".", Shift: ">" },
    4 m* u3 g4 _6 e' f8 w/ S* m+ v
  96.   "/": { Symbol: "/", Shift: "?" },
    1 M1 E5 P% X, M( r7 |7 m  q
  97.   Backspace: { Symbol: "⌫", Shift: "" },$ I1 R  k5 `* }
  98.   tab: { Symbol: "  ", Shift: "" },! v2 e\" u* @/ k# g9 V
  99.   CapsLock: { Symbol: "⇪", Shift: "" },
    9 o. u0 x9 P1 V& x, D  y
  100.   Shift: { Symbol: "⇧", Shift: "" },
    # P2 h( `0 @$ E
  101.   Enter: { Symbol: "⏎", Shift: "" },# L; Z& ?# f' ~2 ^: K\" x
  102.   Control: { Symbol: "⌃", Shift: "" },' }. p' x( r1 t+ L
  103.   Alt: { Symbol: "Alt", Shift: "" },
    ( {! Y7 a: |' Y& d4 U5 L9 b
  104.   Meta: { Symbol: "⌘", Shift: "" },
    * t! }6 R( a# Z5 r8 F0 _% t
  105.   ArrowLeft: { Symbol: "←", Shift: "" },. y3 _1 ~; C6 N0 O1 x# `( r
  106.   ArrowUp: { Symbol: "↑", Shift: "" },
    ) ]% t4 m$ `$ _! t8 A' W* I& H
  107.   ArrowDown: { Symbol: "↓", Shift: "" },* p  }5 X) ?! B+ M2 T2 U% |
  108.   ArrowRight: { Symbol: "→", Shift: "" },* i/ e- l) Q7 n/ P6 t) v\" i
  109.   " ": { Symbol: " ", Shift: "" },
    \" q' N/ i) J# t8 N$ m3 _4 e6 n
  110. };) c3 H, a) ^' s( M
  111. let buttonMap = new Map();0 M& F, e8 E# C\" T8 g
  112. let height = 32;
    1 a( K, V8 [3 D; c\" R
  113. let margin = 8;1 K0 ~* c3 q! x% K4 Z( i/ v1 f
  114. let capslock = interactive.button(0, 0, keycodes["CapsLock"].Symbol);
    ! C* Y5 \/ i6 ^6 {* f; a+ s- i: U( B
  115. let shift = interactive.button(0, 0, keycodes["Shift"].Symbol);
    9 e+ e; p' m- }$ W
  116. for (let row = 0; row < keys.length; row++) {
    ! m5 _& w' p/ p9 `0 X$ z
  117.   let x = 32;* S, y: r; x% F& t- i! `7 j& v, x# K/ }
  118.   let prev;/ x9 O, I! c  t* @
  119.   for (let i = 0; i < keys[row].length; i++) {' H5 K* b* i, Q+ T' H  X# T
  120.     let key = keys[row][i];' u7 @) {. `, R4 Y\" o
  121.     let width = 32;- U4 ^# f8 A; i, o, ]3 ^9 m0 i9 C4 N& @
  122.     let button;3 ?6 |) r1 O0 S\" v
  123.     switch (key) {
    2 C8 `: h7 F- i1 J
  124.       case "CapsLock":
    * G& A% m3 F6 w0 J
  125.         button = capslock;  _  G: \. h( }$ c9 s$ h6 m
  126.         width = 64;\" M! U9 ]/ Y\" x! }; P
  127.         break;
    & k& A9 K: d$ f# R\" ~
  128.       case "Shift":
    4 n9 {! m; p% e# T+ A6 ^# Q
  129.         if (shift.x === 0) {4 W5 Z- i' i4 w& n' A. k+ x
  130.           button = shift;$ j1 I, K3 g1 K, ?( x7 g
  131.         } else {
    7 e. }. M8 ~& z, |* m6 U; r. B& K
  132.           button = interactive.button(
    $ I% u/ V+ {\" T! q0 l6 v3 h
  133.             0,5 B) j: Y5 A# h7 l\" H
  134.             0,
    + D+ ?. p* H2 G# E- h
  135.             keycodes[key] != undefined ? keycodes[key].Symbol : key
    $ y- C- J5 Y7 m# Z4 d
  136.           );
    ! N  j, j5 g* o% C4 O5 U) [
  137.         }
    - C6 d; N( t# ?6 u\" S# {2 g
  138.         width = 90;# A/ m! b. n  L3 s  R8 N
  139.         break;
    ) t/ Y' d2 _1 W4 n8 @* c* Q
  140.       case "tab":
    8 m2 Y9 \2 q8 n4 K3 z/ y& M
  141.         width = 50;& t9 R2 H' J) I% V# j8 H1 _/ |; F! ]
  142.         button = interactive.button(- u6 {# A\" A: Y( F
  143.           0,' E9 @# a3 Q: w\" }7 P# i
  144.           0,
    $ g& V* H  y/ a/ A' y3 X
  145.           keycodes[key] != undefined ? keycodes[key].Symbol : key% H6 Q: |\" e( k4 f\" `- W
  146.         );. b# k' N0 O( G( j7 \
  147.         break;  f  O- r0 }/ U! T: {& X
  148.       case " ":
    # ~% T) i/ ?9 z5 w9 g
  149.         width = 176;
    4 o$ `+ [4 \8 D' r; r
  150.         button = interactive.button(
    $ y) ~8 x4 a( @/ K- M) x  ]  S8 |
  151.           0,+ C/ P# z: ?) {% ~; P; y5 G1 b
  152.           0,; B% j/ h5 z$ h# K; p4 E/ y% R
  153.           keycodes[key] != undefined ? keycodes[key].Symbol : key9 Q6 x- O$ r: s, ]) x/ z$ J
  154.         );
    9 D  E' v6 X; p& |* N
  155.         break;
    0 v7 B, |. L) N2 q- `, J
  156.       case "Meta":
      |3 [& q& j2 c/ {! p# J2 m
  157.         width = 50;0 T+ s) u8 M\" ^  x. v8 A; c0 o
  158.         button = interactive.button(; \! W3 J& v* ]. H; C
  159.           0,
    . }* v3 A) z+ N4 e+ R; ?, S
  160.           0,# f* f& {, @7 I7 J\" s* ]5 l0 _
  161.           keycodes[key] != undefined ? keycodes[key].Symbol : key0 {( ?! k4 G1 Z7 S
  162.         );7 k1 ^/ A; S' d! S- {6 z6 O/ K
  163.         break;
    ; s5 w, S4 J: Q1 ^2 }$ S
  164.       default:* r* d) h9 T2 d  w4 _3 y4 R
  165.         button = interactive.button(
    5 m7 {+ C5 v6 m
  166.           0,% Y$ D! O, G& m1 O' B
  167.           0,) e+ v& l) M& [6 e3 t; h# J2 c% ~
  168.           keycodes[key] != undefined ? keycodes[key].Symbol : key2 O/ z8 `$ L. R! p; v2 b# Q
  169.         );. V& |1 O% v9 X: O# o
  170.         if (keycodes[key] != undefined) {2 d  V5 l  D$ a/ o  ~8 m
  171.           if (keycodes[key].Shift != "") {* ?6 p0 a2 R; O, F\" v
  172.             button.addDependency(shift, capslock);  _\" e2 Q/ t( T( E* \
  173.             button.update = () => {
    % u( j( ?' ~5 X; ~
  174.               if (shift.active || capslock.active) {8 f  \) z; `2 o8 Q9 j% O  Y
  175.                 button.label.contents = keycodes[key].Shift;/ t' R; @) f% e! z$ U: x1 u$ Z! j
  176.               } else {
    $ p  V& ^: i, g. |$ D& l
  177.                 button.label.contents = keycodes[key].Symbol;
    $ k6 x9 x3 F  R2 R& _# A! {
  178.               }7 Z0 I  a. a; g
  179.             };* U- \/ |# f2 ~
  180.           }# G\" N6 ?, F$ L( P/ I
  181.         }: Y# q, E0 [\" K$ w
  182.     }# p* X: e/ ]: L, F% `  m* u0 a
  183.     button.x = x;* ~8 S8 r# D- s, K* V) K3 L+ y# P
  184.     button.y = 64 + row * (height + margin);$ M2 b. _4 I: [2 D9 l
  185.     if (button.box.width < width) {
    * w* P' U: M0 j  @
  186.       button.box.width = width;
    8 z- J; _\" F8 ]1 o, o
  187.     }/ ]2 H: k\" c8 a. c
  188.     let bbox = button.root.getBBox();( \, p9 ^% q6 _: @& U3 m
  189.     x += bbox.width + margin;. z. t/ G1 N4 M* w5 q# o
  190.     buttons.push(button);& G; J8 \0 \6 F) }! S
  191.     prev = button;$ `2 Q6 C  D  V/ O1 x! j\" n
  192.     buttonMap.set(key, button);\" c, ~1 f  G3 }' Y' i
  193.     if (key === "ArrowUp") {
    5 F- M2 i+ @$ O& O; e8 n
  194.       button.box.height = 16;
      s! z9 x7 z' N1 K8 ?+ w8 K9 B! ?
  195.       button.label.root.style.display = "none";% k1 R6 z3 @& x
  196.     } else if (key === "ArrowDown") {' }1 P. t' v$ O! W! j+ x
  197.       button.box.height = 16;6 s+ c6 d7 g. X7 x6 H7 v* D- |
  198.       button.x -= 32 + margin;$ |: B: p+ Z4 C: w
  199.       button.y += 16;8 `' p5 l' c7 P4 C! l1 k
  200.       button.label.root.style.display = "none";
    8 z* h1 S2 C+ V
  201.       x -= bbox.width + margin;
    8 [2 R& q6 f3 y3 f- G: \8 E' W
  202.     }
    ' ~! H5 T. L% y\" }. P
  203.   }
    1 J! U5 h7 p7 t# d: |
  204.   let right = prev.x;1 @! t\" b/ w3 l' H
  205.   if (right < 630) {' C: Q4 t& W7 i
  206.     prev.box.width = 630 - right;
    0 M/ d) Q1 Y2 R1 j  R
  207.   }
    3 u  ^( t# x3 N
  208. }
    4 ]4 M* }\" X0 _/ @4 d5 |# f
  209. // console.log(keycodes["0"], shift, capslock);* O\" z1 L6 m2 g; }
  210. let active = [];/ B& {( Z/ T) R: y. A5 {
  211. window.onkeydown = function (event) {
    : }& ^3 b- M; ?( [
  212.   for (let i = 0; i < buttons.length; i++) {! y( G5 B2 S- {+ E9 U1 i
  213.     let button = buttons[i];7 c: a0 V( z1 z# q3 ^9 Y/ m4 L\" _
  214.     if (
    3 T4 \3 R1 c; N4 _7 _- w& U
  215.       button.label.contents === event.key ||* \- I& @. V! l, v& _
  216.       (keycodes[event.key] != undefined &&
    : B, l. G* G9 G+ b% `. o) U4 R
  217.         button.label.contents === keycodes[event.key].Symbol)2 z0 s) b' F- T
  218.     ) {+ }* `& ]% b( y# g0 H0 W( `
  219.       button.box.style.fill = "#f8f8f8";
    \" H, o9 l) t( U  N
  220.       button.label.style.fill = "#404040";
    1 F; R# S  H/ T/ {( e! l. t
  221.       button.active = true;' U) O. O  L* [+ j% S! M
  222.       active.push(button);+ ?5 i# z3 u' ?5 T\" i9 M: `1 w
  223.     }& S& h. `3 W3 d4 b) H- f
  224.   }
    ! o4 a) o3 W3 n
  225.   buffer += `'${event.key}',`;
    8 j0 w( F: @\" l0 I# e4 V# B
  226. };$ }% {7 P. I1 u$ q7 M
  227. window.onkeyup = function (event) {- n$ b: k' w: C/ Z, W3 B) [5 l, E: Y
  228.   let newActive = [];! Z' f+ M' J* Y+ v6 r2 v; e
  229.   for (let button of active) {
      B# P2 F3 f' V/ f# s
  230.     if (6 A2 I$ U) K! x
  231.       button.label.contents === event.key ||
    $ H! M& V% s2 f+ e\" e3 B+ c
  232.       (keycodes[event.key] != undefined &&
    & K$ @. N. E/ f\" u- l* I
  233.         button.label.contents === keycodes[event.key].Symbol)6 z7 l1 I/ A- W- _$ J
  234.     ) {
    & L* L: J\" E& W
  235.       button.box.style.fill = "";( B\" N% o% ], C6 O5 |
  236.       button.label.style.fill = "";
    7 x9 ^* V7 V  N8 W, J
  237.       button.active = false;
    . D6 T# r3 Z: w  a3 S5 t( n
  238.     } else {
    0 ^( A7 C9 l; I( q3 d
  239.       newActive.push(button);
    1 k5 V+ _4 V\" t$ z* Q
  240.     }
    - O( _$ v8 z. a\" d, U4 y; g& c% G\" M
  241.   }9 X# o\" e3 |; u- ?
  242.   active = newActive;
    , Z, i2 d: V8 C+ h0 _! U+ h
  243. };
    9 Z; I5 u6 c6 V8 x
  244. let bbox = interactive.input.root.getBBox();7 B5 T+ w9 C7 q# B! o
  245. interactive.setViewBox($ w4 n8 n3 G/ j! \$ i
  246.   bbox.x - margin,  |' A2 v0 q6 N; c0 _/ H* |5 ]: D
  247.   bbox.y,
    8 F5 m\" d2 D, I
  248.   bbox.width + 2 * margin,
    $ K3 i. Z$ m/ v2 I7 B4 p) c  x
  249.   bbox.height7 b; O! E; T. L8 _0 H) q3 }/ G' x
  250. );9 ^% m$ c1 L2 b8 B1 Z& B
  251. //# sourceMappingURL=keyboard.js.map
    \" T1 q% W  S9 s

  252. ; `  V9 s1 S: j/ b7 h
复制代码
8 t/ i+ |3 ?) k4 i2 N. v0 z$ G
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 12:20 , Processed in 0.462926 second(s), 51 queries .

回顶部