QQ登录

只需要一步,快速开始

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

使用html画一个键盘

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

1189

主题

4

听众

2934

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-4-27 10:42 |只看该作者 |正序浏览
|招呼Ta 关注Ta
  1. <!DOCTYPE html>0 g' @# ?2 q# Z
  2. <html lang="en">8 Z1 d* D( \. g8 }3 h
  3. <head>
    4 q! ^5 S3 e9 R  y
  4.   <meta charset="UTF-8">* E4 A: ~' D( E& z
  5.   <meta http-equiv="X-UA-Compatible" content="IE=edge">
    6 p- v, Q* n+ @
  6.   <meta name="viewport" content="width=device-width, initial-scale=1.0"># l, C  Z6 {4 W6 V: D
  7.   <link rel="stylesheet" >
    % B; j. l8 I& O5 d  f\" X7 x9 P
  8.   <title>vector examples Keyboard</title>
    ( m! r3 B: y5 f5 h; K8 k# u
  9. </head>
    8 ?. a* N$ p, C7 R
  10. <body>
    9 ]9 ^. P7 Y4 ?  F' f7 |
  11.   <div id="keyboard"></div># ^, M# i: \- I6 n6 @' O; @
  12.   <!-- <script type="module" src="./Keyboard.js"></script> -->
    5 e) G! g# a6 A) n2 A. k8 o. I/ E
  13.   <script type="module" src="./temp.js"></script>3 D6 ]6 ^5 O+ f) b\" }# j
  14. </body>
    , U5 b$ J4 _9 {5 ~6 |( ~* v) I
  15. </html>0 E( H5 V9 N3 D, i, r0 h: t
复制代码
  1. import Interactive from "https://vectorjs.org/interactive.js";
    % m; \  {9 l3 Q' {
  2. console.log("Interactive", Interactive);1 i4 t1 z4 Z; x: ^) J+ p' E
复制代码
  1. /**
    ; P' J, N\" o# h\" x3 b
  2. * [url=home.php?mod=space&uid=634908]@title[/url] Keyboard  Q' j3 E; r8 [\" K  k
  3. * @description This interactive demonstrates how key board input can be used to add interactivity.
    : c% E( O+ G6 r- L
  4. * @tags [input]
    ! \, P\" B& z& Z9 g+ `4 Y- S. T
  5. */
    8 i$ H: j) C) y! ~' s% Y1 V9 n; U2 e' T
  6. // import { Interactive, getScriptName } from "../../index.js";\" P& T! O: v; P1 \
  7. // let interactive = new Interactive(getScriptName());
    % f7 b\" E$ K! u# U' o+ O
  8. import Interactive from "https://vectorjs.org/interactive.js";
    ! }. ~2 }+ \& S' M( \. m
  9. let interactive = new Interactive("keyboard");
    4 N) |/ Y& a# H
  10. interactive.width = 768;
    + D3 k3 H+ C9 Y' Z$ h\" i6 {* F
  11. interactive.height = 300;
    9 Z& e6 D0 ^! _5 ^; \1 R3 _
  12. interactive.border = true;
    & w: h- z; e3 V: D# A: k. B
  13. let buffer = "";- H6 H/ h! _1 ^* c7 b\" v+ B
  14. let keys = [. o0 q# W) \# n8 S% f
  15.   [1 t/ W4 e4 O! }1 s- [5 N' ~+ m! S
  16.     "`",
    & _) N; C$ g# g
  17.     "1",
    6 b) p\" D/ v1 g: q% E. J8 Z\" l
  18.     "2",5 u  l\" Y6 T0 `; w
  19.     "3",  V9 w  T\" W* R* w
  20.     "4",$ V\" q' o6 ]& b  `
  21.     "5",4 M3 n) V4 V$ u4 H) W* n' E
  22.     "6",9 q6 h) w3 X- ^% r9 ]: Y
  23.     "7",6 \0 u: n4 i6 f2 z\" }
  24.     "8",
    0 H0 W7 i& Y8 u4 ]- ~- C0 W7 F' I
  25.     "9",
    8 J( p/ J! T* u! k: B( |! }+ e9 v* Y
  26.     "0",
    9 K. X# b% \5 @. `: D: [# [
  27.     "-",: P+ |. G! t& T6 |0 A
  28.     "=",
    * i& J\" w1 d7 g/ V$ V; o
  29.     "Backspace",: V+ }) k2 b0 l/ v
  30.   ],
      {- `* @. g4 M7 d\" M1 }
  31.   ["tab", "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "[", "]", "\\"],* e/ N! ]1 a- o, G
  32.   ["CapsLock", "a", "s", "d", "f", "g", "h", "j", "k", "l", ";", "'", "Enter"],
    0 _& x' y/ {. ]+ K: n0 q/ ^
  33.   ["Shift", "z", "x", "c", "v", "b", "n", "m", ",", ".", "/", "Shift"],' p& d; m$ z\" G- g% x  A
  34.   [
    ' `, K+ B# I: {4 |. x
  35.     "fn",! Y7 S, s& M4 }! ^4 G
  36.     "Control",
    + {6 ?# k9 n0 }# q. m8 Y
  37.     "Alt",
    ( H( N, ]6 d4 F- p$ w, p; k
  38.     "Meta",# g: x: y+ v) ]% R3 {' l+ J8 ~
  39.     " ",  j/ Y; ~0 f/ j: }( n: l. P9 m% Q
  40.     "Meta",
    / X( y* M; @$ J- u$ w2 G; w3 w
  41.     "Alt",! }& x+ w5 r% `8 i3 j
  42.     "ArrowLeft",
    6 k) }; M) y) n! M
  43.     "ArrowUp",
    , I. U, R0 h# z& D
  44.     "ArrowDown",: N$ S. [0 u$ b1 B
  45.     "ArrowRight",
    ! t* h5 {# H* n  a, E\" F
  46.   ],
    0 }9 V- z, n) H/ m
  47. ];
    - B/ F\" |. A6 E0 e2 ^
  48. let buttons = [];+ I4 t- ?, _$ s1 M  R$ n* @
  49. let keycodes = {
    - `' i0 a\" |  Z2 Z
  50.   0: { Symbol: 0, Shift: ")" },1 e+ Y2 f) p7 h2 J! d6 N
  51.   1: { Symbol: 1, Shift: "!" },
    7 m( D5 n$ v- l2 T9 S* q
  52.   2: { Symbol: 2, Shift: "@" },8 z  D% k' y8 e0 c) Q) J
  53.   3: { Symbol: 3, Shift: "#" },8 Z8 B3 `/ }! Q! x: l. X
  54.   4: { Symbol: 4, Shift: "$" },9 c: q; C3 g% t( r\" ^( d* m
  55.   5: { Symbol: 5, Shift: "%" },
    1 k6 m& f5 I* ~! Y0 @
  56.   6: { Symbol: 6, Shift: "^" },
    * n4 f2 i9 d7 Y* q\" b% e# ~\" E
  57.   7: { Symbol: 7, Shift: "&" },: x* H* n! B) _8 P/ w, D
  58.   8: { Symbol: 8, Shift: "*" },3 M1 l( ?\" G- m7 ]
  59.   9: { Symbol: 9, Shift: "(" },+ j, v$ D& x. A: [9 }
  60.   a: { Symbol: "a", Shift: "A" },. s7 [. R8 O! z) U0 V) j
  61.   b: { Symbol: "b", Shift: "B" },
      r' ]: I% f( p& V! @$ D
  62.   c: { Symbol: "c", Shift: "C" },3 \: H, J/ l- E) n5 ^
  63.   d: { Symbol: "d", Shift: "D" },
    9 X$ i6 I, E# T9 ?: {8 C% ?
  64.   e: { Symbol: "e", Shift: "E" },' L' P2 y9 ^4 f' W; q( N) `
  65.   f: { Symbol: "f", Shift: "F" },
    ! L/ \- r\" c. W& d* `# S
  66.   g: { Symbol: "g", Shift: "G" },
    - U2 j- {7 C: ~9 V6 J- p) I5 |
  67.   h: { Symbol: "h", Shift: "H" },
    \" H( S0 {  W$ k. |: g$ |4 m; z
  68.   i: { Symbol: "i", Shift: "I" },& t4 T. c6 N; F4 l
  69.   j: { Symbol: "j", Shift: "J" },) I& Q  `  E; A1 w% N& W
  70.   k: { Symbol: "k", Shift: "K" },0 o5 t7 M  r, T6 O3 ~+ \% n
  71.   l: { Symbol: "l", Shift: "L" },
    * p2 O( t& ]9 |( q6 E* X8 \( k
  72.   m: { Symbol: "m", Shift: "M" },
    8 [9 o. @- u/ J: i( z: B7 V\" W
  73.   n: { Symbol: "n", Shift: "N" },
    * i\" W3 h& E% H! R\" @- T% G9 P: D! c
  74.   o: { Symbol: "o", Shift: "O" },9 H  ?7 [' h$ ]% |7 H  `
  75.   p: { Symbol: "p", Shift: "P" },\" U5 R3 n\" I( @% s5 T
  76.   q: { Symbol: "q", Shift: "Q" },& ?# ?( X& m: M
  77.   r: { Symbol: "r", Shift: "R" },+ I$ \: r  C5 ~8 B
  78.   s: { Symbol: "s", Shift: "S" },
    \" g! I; {. E. A4 G$ I
  79.   t: { Symbol: "t", Shift: "T" },
    * d( H0 ]- o5 J% u5 e
  80.   u: { Symbol: "u", Shift: "U" },: [3 S/ q4 y! g/ d7 X
  81.   v: { Symbol: "v", Shift: "V" },: s1 K& {- i* D. K2 \- e
  82.   w: { Symbol: "w", Shift: "W" },' c  X, S8 {' x( ^# l
  83.   x: { Symbol: "x", Shift: "X" },  t2 U# C% o# x6 B$ V0 n
  84.   y: { Symbol: "y", Shift: "Y" },# @1 ~! a0 ]5 k) f& {
  85.   z: { Symbol: "z", Shift: "Z" },
    % M* d( X1 {0 ], A$ b$ G( v$ E9 S
  86.   "`": { Symbol: "`", Shift: "~" },
    / D7 {# P\" u3 j9 q
  87.   "-": { Symbol: "-", Shift: "_" },
    $ i& o5 @0 x) i. C
  88.   "=": { Symbol: "=", Shift: "+" },- O: [0 D1 [- i7 O1 o% Z0 P
  89.   ";": { Symbol: ";", Shift: ":" },. M' p, |6 e2 {/ Y/ T
  90.   "'": { Symbol: "'", Shift: '"' },2 Z; K+ c; r7 k, l7 |* i! ]% K
  91.   "[": { Symbol: "[", Shift: "{" },
    # i\" e* O, _$ s5 q: T) k) L
  92.   "]": { Symbol: "]", Shift: "}" },/ i' h& D: V9 M. u* C\" w
  93.   "\\": { Symbol: "\\", Shift: "|" },
    # ]/ ~9 x\" v' x
  94.   ",": { Symbol: ",", Shift: "<" },) b+ B2 K) S4 W  f# \& U- v; O
  95.   ".": { Symbol: ".", Shift: ">" },
    0 X( m+ M! f+ l
  96.   "/": { Symbol: "/", Shift: "?" },  v+ u5 J5 `5 k/ c% T8 Z+ @. U
  97.   Backspace: { Symbol: "⌫", Shift: "" },
      U( g3 v$ \- J9 h
  98.   tab: { Symbol: "  ", Shift: "" },
    : H: x3 l\" D) E% M5 K6 e\" }  Z6 \
  99.   CapsLock: { Symbol: "⇪", Shift: "" },
    & {. h/ f& X5 T0 h- ?& L! Q
  100.   Shift: { Symbol: "⇧", Shift: "" },
      q$ z2 E% ]. o9 c- m% W* J9 o
  101.   Enter: { Symbol: "⏎", Shift: "" },
    . R' g9 ^4 v4 R* U* ^9 }) q2 a
  102.   Control: { Symbol: "⌃", Shift: "" },
    / r0 \$ u' b) v& B* g# ?7 d
  103.   Alt: { Symbol: "Alt", Shift: "" },
    1 ]) U- v1 v8 Y- X, Z/ t3 Y
  104.   Meta: { Symbol: "⌘", Shift: "" },
    $ _; B5 H; W- |& C  A9 M' ?
  105.   ArrowLeft: { Symbol: "←", Shift: "" },
    3 C: v# B9 J+ h: y
  106.   ArrowUp: { Symbol: "↑", Shift: "" },
    & N6 c2 W9 ~0 O5 D+ P7 x& M
  107.   ArrowDown: { Symbol: "↓", Shift: "" },
    % B3 n' c: J' @; I, P7 a4 B
  108.   ArrowRight: { Symbol: "→", Shift: "" },
    / Q$ E  V0 k: `2 t7 c. ?
  109.   " ": { Symbol: " ", Shift: "" },, H( ]! O: u7 _4 Y  y- x
  110. };9 V' K1 A- I, Y9 H3 n5 r\" n$ j$ ^
  111. let buttonMap = new Map();
    7 t0 W; |' @, [' b1 b- \: X
  112. let height = 32;0 r- r& _. Q( u7 H! y! i
  113. let margin = 8;- I+ f- }5 |; g4 a0 S' {2 Q
  114. let capslock = interactive.button(0, 0, keycodes["CapsLock"].Symbol);
    , c4 U8 H/ f! {% r
  115. let shift = interactive.button(0, 0, keycodes["Shift"].Symbol);9 @' \! E\" T- M  Z
  116. for (let row = 0; row < keys.length; row++) {
    2 [/ F4 e0 z2 B# G% v# W
  117.   let x = 32;
    5 @0 t. z! Y\" V3 Q  z* |5 {7 V
  118.   let prev;
    1 R1 V; ~( a- ?! g: ^# K( q
  119.   for (let i = 0; i < keys[row].length; i++) {
    . \5 X5 L5 G# m$ k* S
  120.     let key = keys[row][i];) @9 c: z8 b( g0 F
  121.     let width = 32;
    - i. f$ r. ]& [3 e7 B2 ~5 ^- b% _
  122.     let button;/ D# ~3 {* A0 |  T; H( k
  123.     switch (key) {
    4 t1 U  ~1 \* u0 u. ~& f$ S& P( r2 i
  124.       case "CapsLock":
      P/ n! T' g+ e5 E. O4 n
  125.         button = capslock;( k& C- Y+ |$ E/ h0 i
  126.         width = 64;' ]' S- u& R\" N- m1 g
  127.         break;/ i7 w7 v3 G) F; e
  128.       case "Shift":
    ! q7 X) s5 i  G( |
  129.         if (shift.x === 0) {
    : {, x! J+ [7 J/ j( X2 H8 I& h
  130.           button = shift;
    7 L, [# g- R$ e
  131.         } else {
    % g6 d( ?7 N8 N+ c( s$ j* D3 N9 n' g
  132.           button = interactive.button(
    2 K) U7 M) Y* M- g, s  M
  133.             0,- T% ]3 n2 g, |
  134.             0,
    ! }0 K1 k4 B5 |8 p; _
  135.             keycodes[key] != undefined ? keycodes[key].Symbol : key
      B7 Z# q! `5 u
  136.           );
    8 W& Z/ R. [, d$ j- z8 F3 m: V# m
  137.         }
    * S1 [. x! K) b( [
  138.         width = 90;( h% F+ X% B9 F9 q$ q# E: c
  139.         break;
    ( z  E# w+ F. _- [/ u
  140.       case "tab":
    1 q2 A% V- ^* N* s; r0 A
  141.         width = 50;
    6 F# M0 X* @3 d: P+ U; p, S8 D2 f
  142.         button = interactive.button(- z; C+ u* n, e7 T
  143.           0,. J/ @0 B3 K$ I% c- V' d8 @
  144.           0,
    1 a* c* F\" B- a+ _; Q
  145.           keycodes[key] != undefined ? keycodes[key].Symbol : key4 f: X' @; _8 b3 @6 C
  146.         );
    ) M/ `( F, V# G+ o
  147.         break;. ^\" `1 \  O2 M3 C4 e9 [5 E, w
  148.       case " ":' A9 V5 {/ a9 w( t
  149.         width = 176;
    4 ~2 ~* k2 x* x0 X+ J7 e! v2 k0 x
  150.         button = interactive.button(
    # G0 k. q9 z, s6 b
  151.           0,
    / ~- i; m+ u; u+ \' y9 k
  152.           0,/ M/ r& [) O1 \& F5 N  Y
  153.           keycodes[key] != undefined ? keycodes[key].Symbol : key
    . e\" z- l\" ?8 s1 L0 A( s5 S9 o
  154.         );
    , v  i: |5 E8 y# g: B4 B% g' b7 d7 p
  155.         break;
    + {* Y2 j3 Y; X2 K  j0 h5 z( s
  156.       case "Meta":1 z) o1 U3 @6 f\" b! j  s
  157.         width = 50;
    2 M0 Z( u1 w8 O  i  ?' t5 v
  158.         button = interactive.button(
    ( \- Z, z9 _& Z4 Q3 W: e- \
  159.           0,
    , D( m\" A  s& g* H! w
  160.           0,
    1 x+ `+ i1 V: ]. o: n
  161.           keycodes[key] != undefined ? keycodes[key].Symbol : key- l) G0 L8 h2 b% [7 `: d
  162.         );
    ' G! e2 m' {, D\" N! y2 ~
  163.         break;2 J) i/ f+ D7 i9 H9 o4 }2 r
  164.       default:6 ?8 P7 {& I) u: E( z
  165.         button = interactive.button(
    & L- `' z. N  r, i
  166.           0,! {! h2 K6 }. ?6 V' T8 S6 O
  167.           0,
    * f4 _' m7 h6 F% w' x+ p0 y5 d: E) v
  168.           keycodes[key] != undefined ? keycodes[key].Symbol : key. L- H  W# Y! M4 Y- n
  169.         );0 O0 U) r( E* l/ h. T$ J+ `( K
  170.         if (keycodes[key] != undefined) {
    * d, l* t\" B: k+ {\" G' {6 D
  171.           if (keycodes[key].Shift != "") {& S5 m  P( k* s, a5 `
  172.             button.addDependency(shift, capslock);' l* ^7 z& W4 v9 M3 G) O# R
  173.             button.update = () => {, t. d( s0 P% H3 ~- v
  174.               if (shift.active || capslock.active) {
    . `5 h! a  [) d\" g+ A
  175.                 button.label.contents = keycodes[key].Shift;& T: s9 P; c  Z; e
  176.               } else {: f3 @4 H: J) C- m, [+ a# u' O' f
  177.                 button.label.contents = keycodes[key].Symbol;
    . W! E) n. A+ H0 D# {
  178.               }& Z$ i8 Q  ^\" v; W
  179.             };0 b& O- L\" e2 M6 G: d; `
  180.           }) v9 j/ C6 `: D3 h6 N
  181.         }
    ' f* y2 x, A. z, |8 s) g
  182.     }
      g; J7 r: K- z+ [: U9 W7 `1 y\" l) @\" M
  183.     button.x = x;
    1 f5 D: h3 x* L  E# R# V* D; `
  184.     button.y = 64 + row * (height + margin);
    ! D! [/ t6 T, `5 v' i- W
  185.     if (button.box.width < width) {
    9 B5 Q+ i- ^/ n! T3 O
  186.       button.box.width = width;
    : ?' }5 h/ n/ `- v
  187.     }
    9 K* |$ [1 J/ V# ]; Z\" }; ^( O; f' x/ S
  188.     let bbox = button.root.getBBox();% ~. j) r& y9 I$ Y9 C( q0 c6 B% p
  189.     x += bbox.width + margin;2 Y0 r/ H# K- R1 @\" m
  190.     buttons.push(button);( ^* }! m/ I  O8 m* P
  191.     prev = button;\" V- g: A$ p% e, n* y
  192.     buttonMap.set(key, button);: i2 M- I3 R1 i6 e8 c\" j; T, E: x
  193.     if (key === "ArrowUp") {
    / f3 [% L0 |: r. ^
  194.       button.box.height = 16;
    1 Y  L\" j8 `$ B( K
  195.       button.label.root.style.display = "none";
    & f) `1 Z1 n# G: t# Y+ w
  196.     } else if (key === "ArrowDown") {
    % x2 B9 U3 p+ W( i( u; o
  197.       button.box.height = 16;
    - m* M# V  e  Y\" N7 r: E
  198.       button.x -= 32 + margin;
    - J\" h' T1 \& u6 v4 X. t, j- [! E
  199.       button.y += 16;1 j) E6 [5 E; i. W, ^
  200.       button.label.root.style.display = "none";+ L: y# H9 H! `  g% j  c. z7 R, I
  201.       x -= bbox.width + margin;& ~+ g; [+ ^; j# |6 I0 y) Z
  202.     }/ y$ C/ Q0 a6 W9 [' a; j% n
  203.   }
    6 Q4 y% n# l4 L/ O, o; Y
  204.   let right = prev.x;2 z\" D0 ?) n7 o9 G+ `
  205.   if (right < 630) {$ z3 P6 l& x* F2 u\" }$ X
  206.     prev.box.width = 630 - right;5 t0 x1 V0 U6 i) i
  207.   }
    & u+ U- D0 d' T9 B
  208. }9 M+ }( H' d. [* w, w9 g
  209. // console.log(keycodes["0"], shift, capslock);
    6 V. ?4 F/ R2 ^
  210. let active = [];; n/ w# z\" i& v( f7 q- b\" M
  211. window.onkeydown = function (event) {
    % x7 w' B1 |5 C& O; t; D# v+ O
  212.   for (let i = 0; i < buttons.length; i++) {# ]+ Z+ |! b- h
  213.     let button = buttons[i];
    3 Y1 r! T\" @\" C, m9 T3 i. T
  214.     if (3 }$ W# p% B# I- j: v
  215.       button.label.contents === event.key ||
    & W% ^& e9 {5 n% h
  216.       (keycodes[event.key] != undefined &&
    5 a' X2 x: ]! Z, f8 H+ q! I
  217.         button.label.contents === keycodes[event.key].Symbol)% k1 h, T5 J( V4 _! d& @8 A1 g+ K
  218.     ) {: |5 e  ?* Y\" W& E7 L
  219.       button.box.style.fill = "#f8f8f8";
    & p* ^+ ?: h3 E' O8 b4 M
  220.       button.label.style.fill = "#404040";- t0 c\" D, `1 h% y( S: m! Q
  221.       button.active = true;7 X; x\" W9 Y2 A4 _7 V; ?; z\" o
  222.       active.push(button);: ]# j4 V! w! ^
  223.     }
    ) \2 o& X# t. e
  224.   }
    : r6 |' {; Y3 g, D9 e
  225.   buffer += `'${event.key}',`;& m2 q! f0 t! w6 O9 ~1 [3 l3 |
  226. };
    0 N; u% d. w) q
  227. window.onkeyup = function (event) {  k7 u2 ~$ w- L7 d
  228.   let newActive = [];
    * h- ]/ O9 c& ^. a- W
  229.   for (let button of active) {! O7 Y2 ^0 x/ E( z4 Z; _
  230.     if (
    ( ~- Y4 V# G( w% r, o+ S
  231.       button.label.contents === event.key ||
    $ s; a  q) P  k8 t4 D
  232.       (keycodes[event.key] != undefined &&& R\" S) |9 [7 B* y$ x
  233.         button.label.contents === keycodes[event.key].Symbol)
    1 W* G8 j8 ~) v) j: b1 {
  234.     ) {
    + j+ N0 \+ e- q+ I8 g. w
  235.       button.box.style.fill = "";8 x, e/ W* F\" F\" z+ V! t
  236.       button.label.style.fill = "";5 ?: T1 w8 w$ ^/ Q
  237.       button.active = false;
    ) ?; [\" M+ b4 q5 C, L
  238.     } else {
    \" `5 v; o\" c) k
  239.       newActive.push(button);) f% b/ v* l( G! U% x& `
  240.     }* p8 J) U% g\" T' ^: ^
  241.   }. K2 x# N6 q8 D$ ~+ W6 w4 ]
  242.   active = newActive;$ P1 z$ Y\" h+ b
  243. };
    * K- y% ?* z2 P! G
  244. let bbox = interactive.input.root.getBBox();9 y* ^) T  @% D) R; M5 v
  245. interactive.setViewBox(4 }7 n: {8 ^6 ]1 C* C3 s) m3 P
  246.   bbox.x - margin,
    / J! Z# J' y) }/ F
  247.   bbox.y,+ d, _5 p4 g0 l6 E8 l. c' `8 h
  248.   bbox.width + 2 * margin,) O, ?7 U5 M) C% K5 y( `4 ~
  249.   bbox.height% Q' g7 {9 D- C/ R
  250. );
    3 n7 r4 ~+ O, P' V\" k1 Z
  251. //# sourceMappingURL=keyboard.js.map# N# B$ A, ?1 g$ n9 W# a

  252. ) K5 ]3 X; j2 w8 h
复制代码

: A" E9 l) T3 @( H% t* a4 c
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-6-15 14:46 , Processed in 0.610477 second(s), 51 queries .

回顶部