• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. Custom IC SKILL
  3. How to create two or three key strokes bindkeys

Stats

  • Locked Locked
  • Replies 21
  • Subscribers 146
  • Views 28540
  • Members are here 0
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

How to create two or three key strokes bindkeys

SlimAnt
SlimAnt over 15 years ago

Hello,

How can I create two or three key strokes bindkeys without changing the existing bindkeys?

For example, addition of existing bindkeys such as: m -> to activate move

I would like to create new bindkeys such as: jmp -> SKILL code to jump to a certain coordinate


I tried using the following function getc to read the next character from keyboard and it doesn't work.

   procedure( call_2()

        TT = getc()

                if( TT = "p" then

                     ; function to jump

                )

     )


   procedure( call_1()

          TT = getc()

                 if( TT = "m" then

                        call_2()

                 )

      )


hiSetBindKey("Layout" "none<Key>j" "call_1()")


I am using version IC6.1.3

I Appreciate any help that I can get.

  • Cancel
  • Varungr087
    Varungr087 over 6 years ago in reply to Andrew Beckett

    Understood ! So now to get it back to whatever it was before initialising the code, I have to re invoke virtuoso. Right ?  or Is there any other alternative other than re-invoking ?

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 6 years ago in reply to Varungr087

    You can just re-load the standard bind keys file. Either:

    load(ddGetStartup("dfII/bindkeys/Layout.il"))

    or:

    load(prependInstallPath("samples/local/leBindKeys.il"))

    That's assuming you are using the "out of the box" bindkey definitions. The top function (with ddGetStartup) would work if you've put a dfII/bindkeys/Layout.il further up your "Cadence Search File" path, but if you've loaded some other custom bind keys from  your .cdsinit you'd need to locate that and re-load it.

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Varungr087
    Varungr087 over 6 years ago in reply to Andrew Beckett

    Ok Andrew. Thanks again

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • wklane
    wklane over 4 years ago in reply to Andrew Beckett

    is there any recent revisions?  I cant get it to work

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 4 years ago in reply to wklane

    Hmm, something got messed up in the formatting on the forum site, and so some of the code where the bind keys were being formed got screwed up - I suspect the <Key> parts were being confused as HTML. I copied the code from the forum, and when I tried to initialise:

    abSeqBindKey->initBindKeys("Layout")

    I got loads of messages like this:

    *WARNING* Invalid bindkey key string: Shiftt

    Anyway, I've re-uploaded the code (I replaced it in the post above) and now it should be OK. I'm assuming you kept the .ils suffix in the file, that you'd loaded it, and you called the abSeqBindKey->initBindKeys("Layout") function to initialise everything?

    Let me know if that doesn't fix your problem - and if it doesn't, please describe what you've done, and what happens... the code itself hasn't needed changing in 11 years; I just tested it using IC6.1.8 ISR15 (using the samples in the comments at the top of the code).

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • wklane
    wklane over 4 years ago in reply to Andrew Beckett

    I think I am missing something basic.  First the get, set and reset functions wouldnt load, it errored saying they were internal functions and couldnt be re-defined.  I appended an _f to the end of them and their respective calls to get it to load. It does load now but nothing seems to have changed in my environment.....ie, all my keys operate as initially defined at startup

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 4 years ago in reply to wklane

    It sounds as if you did not keep the file suffix as “.ils”. That is important - otherwise it won’t get loaded using SKILL++ semantics and the local functions will clash with existing global functions. You should not need to rename any function to make this work. What did you call the file name you stored the code in?

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • wklane
    wklane over 4 years ago in reply to Andrew Beckett

    mbind.ils

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • wklane
    wklane over 4 years ago in reply to wklane

    I put everything back as you had it and correct extension. it loads fine but still no change

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 4 years ago in reply to wklane

    Well, if I either give the file the .il suffix, or omit the let() around everything in the code, then I get an error like this when loading:

    *Error* define: can't redefine an internal function - reset
    *Error* load: error while loading file - "~/shared/xfer/mbind.ils" at line 161

    Are you just loading the file with load("mbind.ils") ? Or are you copying and pasting the code into the CIW (which won't work)?

    Please give an exact transcript of what you're doing - it doesn't make any sense to me, since this is very simple - you put the code in a file with a .ils suffix, then load("thatfile.ils") and then initialise using  abSeqBindKey->initBindKeys("Layout") and finally define some multi-key bind keys as described at the top of the file in the comments.

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
<>

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information